From 856ce05470dc7d8a1784018e73ebea819718c691 Mon Sep 17 00:00:00 2001 From: heitorrosa <76885858+heitorrosa@users.noreply.github.com> Date: Tue, 29 Sep 2026 16:00:23 -0300 Subject: [PATCH 01/20] introspect --- main/app/authentication/introspect.py | 30 ++++++++++++++++++++ main/controller/authentication_controller.py | 17 +++++++++++ 2 files changed, 47 insertions(+) create mode 100644 main/app/authentication/introspect.py diff --git a/main/app/authentication/introspect.py b/main/app/authentication/introspect.py new file mode 100644 index 00000000..fb8fba4b --- /dev/null +++ b/main/app/authentication/introspect.py @@ -0,0 +1,30 @@ +from fastapi import HTTPException +from sqlalchemy.orm import Session + +from main.app.authentication.session import SessionManager +from main.app.authentication.util import verifyAccessToken +from main.app.user.user import UserManager +from main.models.user import User + + +def introspectToken(db: Session, token: str | None) -> dict: + raw = (token or "").strip().removeprefix("Bearer ").strip() + if not raw: + raise HTTPException(status_code=401, detail="Token not provided") + + payload = verifyAccessToken(raw) + + try: + userId = int(payload["userId"]) + except (KeyError, TypeError, ValueError): + raise HTTPException(status_code=401, detail="Invalid token") + + sessionId = payload.get("sessionId") + if not sessionId or not SessionManager.validateSession(db, str(sessionId), userId): + raise HTTPException(status_code=401, detail="Session revoked") + + user = db.query(User).filter(User.userId == userId).first() + if not user: + raise HTTPException(status_code=401, detail="User no longer exists") + + return {"userId": user.userId, "username": user.username, "roles": UserManager.getRolesList(user)} diff --git a/main/controller/authentication_controller.py b/main/controller/authentication_controller.py index 58620411..ee055ae5 100644 --- a/main/controller/authentication_controller.py +++ b/main/controller/authentication_controller.py @@ -10,6 +10,7 @@ from sqlalchemy.orm import Session from main.app.authentication.authentication import AuthenticationManager +from main.app.authentication.introspect import introspectToken from main.app.authentication.util import createAccessToken, verifyAccessToken from main.app.authentication.sso import getGoogleSSO from main.app.authentication.constants import ( @@ -150,6 +151,22 @@ def logout(request: Request, response: Response, db: Session = Depends(getSessio return {"message": "Successfully logged out"} +@router.post("/introspect") +def introspect( + request: Request, + db: Session = Depends(getSession), + token: str | None = Body(default=None, embed=True), +): + auth = request.headers.get("Authorization", "") + raw = ( + token + or request.headers.get("X-Access-Token") + or (auth.split(" ")[1] if auth.startswith("Bearer ") else None) + or request.cookies.get(COOKIE_NAME) + ) + return introspectToken(db, raw) + + @router.get("/google") @limiter.limit("5/minute") async def googleLogin(request: Request): From 0d11867135b7a6a29c78a519004db91c84a41416 Mon Sep 17 00:00:00 2001 From: heitorrosa <76885858+heitorrosa@users.noreply.github.com> Date: Tue, 29 Sep 2026 16:10:47 -0300 Subject: [PATCH 02/20] fix historicaldividends backfill for missing ov key --- main/app/scraper_b3/scraper.py | 8 +++- tests/test_scraper_dividends.py | 69 +++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+), 2 deletions(-) create mode 100644 tests/test_scraper_dividends.py diff --git a/main/app/scraper_b3/scraper.py b/main/app/scraper_b3/scraper.py index 7962d340..5d69f343 100644 --- a/main/app/scraper_b3/scraper.py +++ b/main/app/scraper_b3/scraper.py @@ -138,7 +138,7 @@ def historicalDividends(self, TICKER): dfYearly = pd.json_normalize(df, record_path="assetEarningsYearlyModels", sep="") dfHistory = pd.json_normalize(df, record_path="assetEarningsModels", sep="") - dfHistory = dfHistory.drop(columns={"sv", "etd", "sov", "y", "m", "d"}) + dfHistory = dfHistory.drop(columns={"sv", "etd", "sov", "y", "m", "d"}, errors="ignore") dfHistory = dfHistory.rename( columns={ "ed": "DATA COM", @@ -149,6 +149,10 @@ def historicalDividends(self, TICKER): "adj": "FATOR AJUSTE", } ) + if "VALOR ORIGINAL" not in dfHistory.columns: + # "ov" absent (adj=False batches): SI ships ov whenever a factor + # exists, so copy adjusted as-is — no factor math. + dfHistory["VALOR ORIGINAL"] = dfHistory["VALOR AJUSTADO"] for col in ["DATA COM", "DATA PAGAMENTO"]: if col in dfHistory.columns: @@ -157,7 +161,7 @@ def historicalDividends(self, TICKER): newDF = { "TICKER": TICKER, **{f"DIVIDENDOS {row.rank}": row.value for row in dfYearly.itertuples() if len(str(row.rank)) >= 4}, - "HISTORICO DIVIDENDOS": dfHistory.toDict(orient="records"), + "HISTORICO DIVIDENDOS": dfHistory.to_dict(orient="records"), } return pd.DataFrame([newDF]).set_index("TICKER") diff --git a/tests/test_scraper_dividends.py b/tests/test_scraper_dividends.py new file mode 100644 index 00000000..24c8c89a --- /dev/null +++ b/tests/test_scraper_dividends.py @@ -0,0 +1,69 @@ +"""Regression: historicalDividends() backfills VALOR ORIGINAL when "ov" is absent. + +SI ships "ov" whenever a factor exists (adj=True rows), so the backfill is a +straight copy of VALOR AJUSTADO — factor math was deliberately dropped. +""" + +import sys +from unittest.mock import MagicMock + +# Stub research-repo `xango` module (main/app/scraper_b3/scraper.py:20 +# `from xango import calculateInvestingScore` — absent here). +if "xango" not in sys.modules: + _xango_stub = MagicMock() + _xango_stub.calculateInvestingScore = MagicMock(return_value={}) + sys.modules["xango"] = _xango_stub + +from main.app.scraper_b3.scraper import B3Scraper + + +def _payload(records): + return {"assetEarningsYearlyModels": [], "assetEarningsModels": records} + + +class _FakeResp: + def __init__(self, payload): + self._payload = payload + + def raise_for_status(self): + pass + + def json(self): + return self._payload + + +def _scraper(payload): + # Bypass __init__ (hits network: cloudscraper + SELIC fetch). + s = B3Scraper.__new__(B3Scraper) + s.requests = MagicMock() + s.requests.get.return_value = _FakeResp(payload) + return s + + +def _rec(ed="21/08/2026", pd="21/12/2026", v=1.0, adj=0.5): + return { + "y": 0, + "m": 0, + "d": 0, + "ed": ed, + "pd": pd, + "et": "JCP", + "etd": "Juros Sobre Capital Proprio", + "v": v, + "sv": str(v), + "sov": "-", + "adj": adj, + } + + +class TestHistoricalDividendsOvDrift: + def test_numeric_factor_uses_adjusted(self): + # Even a numeric factor is copied as-is: no division. + df = _scraper(_payload([_rec(v=1.0, adj=0.5)])).historicalDividends("PETR4") + recs = df["HISTORICO DIVIDENDOS"].iloc[0] + assert recs[0]["VALOR ORIGINAL"] == recs[0]["VALOR AJUSTADO"] == 1.0 + + def test_non_numeric_factor_falls_back_to_adjusted(self): + df = _scraper(_payload([_rec(v=0.20250435, adj=False)])).historicalDividends("PETR4") + recs = df["HISTORICO DIVIDENDOS"].iloc[0] + assert recs[0]["VALOR ORIGINAL"] == recs[0]["VALOR AJUSTADO"] == 0.20250435 From 1c953f106bc1d5202c7143bbf98d7eb1b4cdb632 Mon Sep 17 00:00:00 2001 From: heitorrosa <76885858+heitorrosa@users.noreply.github.com> Date: Tue, 29 Sep 2026 16:41:26 -0300 Subject: [PATCH 03/20] harden controller auth paths --- main/controller/authentication_controller.py | 70 ++++-- tests/test_auth_audit_fixes.py | 234 +++++++++++++++++++ 2 files changed, 282 insertions(+), 22 deletions(-) create mode 100644 tests/test_auth_audit_fixes.py diff --git a/main/controller/authentication_controller.py b/main/controller/authentication_controller.py index ee055ae5..7f43c6ec 100644 --- a/main/controller/authentication_controller.py +++ b/main/controller/authentication_controller.py @@ -1,4 +1,6 @@ +import hmac import logging +import os from config import getSession, LOCALHOST_ADDRESSES from datetime import datetime, timedelta, timezone @@ -20,9 +22,13 @@ TOKEN_EXPIRY_HOURS, ) from main.app.authentication.session import SessionManager +from main.models.user import User logger = logging.getLogger(__name__) +INTROSPECT_SERVICE_TOKEN_ENV = "INTROSPECT_SERVICE_TOKEN" +INTROSPECT_UNAUTHORIZED_DETAIL = "Unauthorized" + router = APIRouter(prefix="/auth", tags=["Authentication"]) @@ -43,7 +49,7 @@ def resolveCookieDomain(request: Request) -> str: return "localhost" if hostname in ("localhost", "127.0.0.1") else hostname -def issueSessionCookie(response, request, db, user) -> str: +def issueSessionCookie(response, request, db, user) -> tuple[str, str]: userAgent = request.headers.get("User-Agent", "") expiresAt = datetime.now(timezone.utc) + timedelta(hours=TOKEN_EXPIRY_HOURS) session = SessionManager.createSession(db, user["userId"], userAgent, expiresAt) @@ -60,7 +66,7 @@ def issueSessionCookie(response, request, db, user) -> str: path=COOKIE_PATH, domain=cookieDomain, ) - return accessToken + return accessToken, str(session.sessionId) @router.get("/health") @@ -85,10 +91,12 @@ def register( if not user: raise HTTPException(status_code=401, detail="Auto-login failed after registration") - accessToken = issueSessionCookie(response, request, db, user) + accessToken, _ = issueSessionCookie(response, request, db, user) return {"message": "success", "accessToken": accessToken, "tokenType": "bearer", "user": user} - except HTTPException: + except HTTPException as e: + if e.status_code == 400: + raise HTTPException(status_code=400, detail="Registration failed.") raise except ValueError as e: logger.error(f"Registration validation error: {str(e)}", exc_info=True) @@ -111,7 +119,8 @@ def login( if not user: raise HTTPException(status_code=401, detail="Invalid credentials") - accessToken = issueSessionCookie(response, request, db, user) + accessToken, sessionId = issueSessionCookie(response, request, db, user) + SessionManager.revokeAllExcept(db, user["userId"], sessionId) return {"accessToken": accessToken, "tokenType": "bearer", "user": user} @@ -152,11 +161,15 @@ def logout(request: Request, response: Response, db: Session = Depends(getSessio @router.post("/introspect") +@limiter.limit("30/minute") def introspect( request: Request, db: Session = Depends(getSession), token: str | None = Body(default=None, embed=True), ): + expected = os.environ.get(INTROSPECT_SERVICE_TOKEN_ENV, "") + if not expected or not hmac.compare_digest(request.headers.get("X-Service-Token", ""), expected): + raise HTTPException(status_code=401, detail=INTROSPECT_UNAUTHORIZED_DETAIL) auth = request.headers.get("Authorization", "") raw = ( token @@ -164,20 +177,23 @@ def introspect( or (auth.split(" ")[1] if auth.startswith("Bearer ") else None) or request.cookies.get(COOKIE_NAME) ) - return introspectToken(db, raw) + if not raw: + raise HTTPException(status_code=401, detail=INTROSPECT_UNAUTHORIZED_DETAIL) + try: + return introspectToken(db, raw) + except HTTPException: + raise HTTPException(status_code=401, detail=INTROSPECT_UNAUTHORIZED_DETAIL) @router.get("/google") @limiter.limit("5/minute") async def googleLogin(request: Request): - logger.info("Google Login") + logger.info("Google login initiated") redirectUrl = request.query_params.get("redirect_url", "") if not redirectUrl: redirectUrl = request.headers.get("referer", "") - logger.info(f"Redirect URL: {redirectUrl}") - googleSSO = getGoogleSSO() async with googleSSO: googleRedirect = await googleSSO.get_login_redirect(state=redirectUrl or None) @@ -191,10 +207,6 @@ async def googleCallback(request: Request, response: Response, db: Session = Dep logger.info("--- Google Callback Start ---") state_param = request.query_params.get("state", "") - if state_param: - _ = request.cookies - request._cookies["sso_state"] = state_param - logger.debug(f"Patched sso_state cookie: {state_param[:8]}...") googleSSO = getGoogleSSO() @@ -211,13 +223,27 @@ async def googleCallback(request: Request, response: Response, db: Session = Dep if not googleId or not email: raise HTTPException(status_code=400, detail="Incomplete user info from Google") - logger.info(f"User identified: {email}") + logger.info("Google user identified") user = AuthenticationManager.authenticateGoogleUser(db, googleId) if not user: logger.info("New user detected, creating account...") - username = email.split("@")[0] - AuthenticationManager.createUserAccount(db, username=username, email=email, googleId=googleId) + baseUsername = email.split("@")[0] + username = baseUsername + suffix = 0 + for _ in range(100): + try: + AuthenticationManager.createUserAccount(db, username=username, email=email, googleId=googleId) + break + except HTTPException as e: + if e.status_code != 400: + raise + if db.query(User).filter(User.username == username).first() is None: + raise + suffix += 1 + username = f"{baseUsername}{suffix}" + else: + raise HTTPException(status_code=400, detail="Registration failed.") user = AuthenticationManager.authenticateGoogleUser(db, googleId) redirectUrl = "" @@ -234,15 +260,15 @@ async def googleCallback(request: Request, response: Response, db: Session = Dep issueSessionCookie(redirectResponse, request, db, user) return redirectResponse - accessToken = issueSessionCookie(response, request, db, user) + accessToken, _ = issueSessionCookie(response, request, db, user) logger.info("--- Google Callback End ---") return {"accessToken": accessToken, "tokenType": "bearer", "user": user} except HTTPException: raise - except SSOLoginError as e: - logger.warning(f"SSO state validation failed: {e}") - raise HTTPException(status_code=401, detail=f"SSO login failed: {e}") - except Exception as e: - logger.error(f"Critical error in Google callback: {str(e)}", exc_info=True) + except SSOLoginError: + logger.warning("SSO state validation failed", exc_info=True) + raise HTTPException(status_code=401, detail="SSO login failed.") + except Exception: + logger.error("Critical error in Google callback", exc_info=True) raise HTTPException(status_code=500, detail="Internal server error during Google login") diff --git a/tests/test_auth_audit_fixes.py b/tests/test_auth_audit_fixes.py new file mode 100644 index 00000000..14d33a57 --- /dev/null +++ b/tests/test_auth_audit_fixes.py @@ -0,0 +1,234 @@ +"""F-A audit tests: controller fixes — CSRF patch removal, SSO suffix-unique, generic 400s, login eviction, introspect gate, PII scrub.""" + +import os +import sys +from unittest.mock import AsyncMock, MagicMock, patch + +import pytest +from fastapi import FastAPI +from fastapi.testclient import TestClient + +sys.path.insert(0, os.path.dirname(os.path.dirname(__file__))) + +from config import getSession +from main.app.authentication.authentication import AuthenticationManager +from main.app.authentication.session import SessionManager +from main.controller.authentication_controller import router as authRouter +from main.models.user import User +from main.utils.errors import registerErrorHandlers + +SERVICE_HEADERS = {"X-Service-Token": "test-service-token"} + + +@pytest.fixture(autouse=True) +def serviceToken(monkeypatch): + monkeypatch.setenv("INTROSPECT_SERVICE_TOKEN", "test-service-token") + + +@pytest.fixture +def authDbClient(dbSession): + app = FastAPI() + app.include_router(authRouter) + registerErrorHandlers(app) + app.dependency_overrides[getSession] = lambda: dbSession + with TestClient(app, raise_server_exceptions=False) as c: + yield c + + +def makeAccount(dbSession, username, email=None, password="secret123", googleId=None): + AuthenticationManager.createUserAccount( + dbSession, username=username, email=email or f"{username}@example.com", password=password, googleId=googleId + ) + return AuthenticationManager.authenticateUser(dbSession, username, password) if password else None + + +def mockSSO(userId="google-new-1", email="newuser@gmail.com"): + sso = AsyncMock() + sso.__aenter__ = AsyncMock(return_value=sso) + sso.__aexit__ = AsyncMock(return_value=False) + info = MagicMock() + info.id = userId + info.email = email + sso.verify_and_process = AsyncMock(return_value=info) + return sso + + +class TestCallbackNoCookiePatch: + def test_callback_without_sso_state_cookie(self, dbSession, authDbClient): + seen = {} + + async def fake_verify(request): + seen.update(request.cookies) + return mockSSO().verify_and_process.return_value + + info = MagicMock() + info.id = "google-nocookie-1" + info.email = "nocookie@gmail.com" + + async def fake_verify2(request): + seen.update(request.cookies) + return info + + with patch("main.controller.authentication_controller.getGoogleSSO") as g: + sso = AsyncMock() + sso.__aenter__ = AsyncMock(return_value=sso) + sso.__aexit__ = AsyncMock(return_value=False) + sso.verify_and_process = fake_verify2 + g.return_value = sso + resp = authDbClient.get("/auth/callback?state=x&code=c", follow_redirects=False) + assert resp.status_code == 200 + assert "sso_state" not in seen + + +class TestSSOSuffixUnique: + def _sso(self, googleId, email): + sso = AsyncMock() + sso.__aenter__ = AsyncMock(return_value=sso) + sso.__aexit__ = AsyncMock(return_value=False) + info = MagicMock() + info.id = googleId + info.email = email + sso.verify_and_process = AsyncMock(return_value=info) + return sso + + def _callback(self, authDbClient, email, googleId): + with patch("main.controller.authentication_controller.getGoogleSSO", return_value=self._sso(googleId, email)): + return authDbClient.get("/auth/callback?state=not-a-url&code=c", follow_redirects=False) + + def test_first_collision_gets_suffix_1(self, dbSession, authDbClient): + dbSession.add(User(username="alice", email="alice@other.com", passwordHash="h", roles="USER")) + dbSession.commit() + resp = self._callback(authDbClient, "alice@gmail.com", "google-alice-1") + assert resp.status_code == 200 + assert resp.json()["user"]["username"] == "alice1" + + def test_second_collision_gets_suffix_2(self, dbSession, authDbClient): + dbSession.add(User(username="alice", email="alice@other.com", passwordHash="h", roles="USER")) + dbSession.add(User(username="alice1", email="alice1@other.com", passwordHash="h", roles="USER")) + dbSession.commit() + resp = self._callback(authDbClient, "alice@gmail.com", "google-alice-2") + assert resp.status_code == 200 + assert resp.json()["user"]["username"] == "alice2" + + +class TestRegisterGeneric400: + def test_colliding_username(self, dbSession, authDbClient): + makeAccount(dbSession, "bob", "bob@example.com") + resp = authDbClient.post( + "/auth/register", json={"username": "bob", "email": "other@example.com", "password": "secret123"} + ) + assert resp.status_code == 400 + text = resp.text.lower() + assert "registration failed." in text + assert "already" not in text + + def test_colliding_email(self, dbSession, authDbClient): + makeAccount(dbSession, "bob2", "bob2@example.com") + resp = authDbClient.post( + "/auth/register", json={"username": "someone", "email": "bob2@example.com", "password": "secret123"} + ) + assert resp.status_code == 400 + text = resp.text.lower() + assert "registration failed." in text + assert "already" not in text + + +class TestLoginRevokesOthers: + def test_old_session_deactivated(self, dbSession, authDbClient, monkeypatch): + makeAccount(dbSession, "carol", "carol@example.com") + user = AuthenticationManager.authenticateUser(dbSession, "carol", "secret123") + old = SessionManager.createSession(dbSession, user["userId"], "pytest") + + calls = {} + real = SessionManager.revokeAllExcept + + def recording(db, user_id, keep_session_id): + calls["args"] = (user_id, keep_session_id) + return real(db, user_id, keep_session_id) + + monkeypatch.setattr(SessionManager, "revokeAllExcept", recording) + resp = authDbClient.post("/auth/login", json={"username": "carol", "password": "secret123"}) + assert resp.status_code == 200 + assert calls["args"][0] == user["userId"] + assert calls["args"][1] != old.sessionId + dbSession.refresh(old) + assert old.isActive is False + kept = SessionManager.getSessionById(dbSession, calls["args"][1], user["userId"]) + assert kept is not None and kept.isActive is True + + +class TestIntrospectGate: + def _token(self, dbSession): + makeAccount(dbSession, "dave", "dave@example.com") + user = AuthenticationManager.authenticateUser(dbSession, "dave", "secret123") + session = SessionManager.createSession(dbSession, user["userId"], "pytest") + from main.app.authentication.util import createAccessToken + + return createAccessToken({"userId": str(user["userId"]), "sessionId": session.sessionId}) + + def test_no_header_401(self, authDbClient): + resp = authDbClient.post("/auth/introspect", json={"token": "x"}) + assert resp.status_code == 401 + + def test_wrong_header_401(self, authDbClient): + resp = authDbClient.post("/auth/introspect", json={"token": "x"}, headers={"X-Service-Token": "wrong"}) + assert resp.status_code == 401 + + def test_valid_token_with_header_200(self, dbSession, authDbClient): + token = self._token(dbSession) + resp = authDbClient.post("/auth/introspect", json={"token": token}, headers=SERVICE_HEADERS) + assert resp.status_code == 200 + + def test_invalid_token_generic_401(self, authDbClient): + resp = authDbClient.post("/auth/introspect", json={"token": "bad"}, headers=SERVICE_HEADERS) + body = resp.json() + assert resp.status_code == 401 + assert "Unauthorized" in body.get("error", "") + for leaked in ("expired", "Invalid token", "revoked"): + assert leaked not in resp.text + + +class TestPIIScrub: + @staticmethod + def appLogs(caplog): + # App must not log PII itself; httpx client-side request lines (test-only + # artifact; in prod this is access-log territory) are out of scope. + return "\n".join(r.getMessage() for r in caplog.records if r.name.startswith("main.")) + + def test_register_logs_no_email(self, dbSession, authDbClient, caplog): + with caplog.at_level("INFO"): + authDbClient.post( + "/auth/register", + json={"username": "erin", "email": "erin-private@example.com", "password": "secret123"}, + ) + assert "erin-private@example.com" not in self.appLogs(caplog) + + def test_google_logs_no_secret(self, authDbClient, caplog): + secret = "http://localhost:3000/secret-path-xyz" + sso = AsyncMock() + sso.__aenter__ = AsyncMock(return_value=sso) + sso.__aexit__ = AsyncMock(return_value=False) + from starlette.responses import RedirectResponse + + sso.get_login_redirect = AsyncMock( + return_value=RedirectResponse("https://accounts.google.com/x", status_code=303) + ) + with caplog.at_level("INFO"): + with patch("main.controller.authentication_controller.getGoogleSSO", return_value=sso): + authDbClient.get(f"/auth/google?redirect_url={secret}", follow_redirects=False) + assert "secret-path-xyz" not in self.appLogs(caplog) + + def test_callback_logs_no_email_or_state(self, dbSession, authDbClient, caplog): + secret_state = "http://localhost:3000/state-secret-abc" + sso = AsyncMock() + sso.__aenter__ = AsyncMock(return_value=sso) + sso.__aexit__ = AsyncMock(return_value=False) + info = MagicMock() + info.id = "google-log-1" + info.email = "logsecret@gmail.com" + sso.verify_and_process = AsyncMock(return_value=info) + with caplog.at_level("INFO"): + with patch("main.controller.authentication_controller.getGoogleSSO", return_value=sso): + authDbClient.get(f"/auth/callback?state={secret_state}&code=c", follow_redirects=False) + assert "logsecret@gmail.com" not in self.appLogs(caplog) + assert "state-secret-abc" not in self.appLogs(caplog) From d87785c480047fc196da33fd6d5deddc3b166763 Mon Sep 17 00:00:00 2001 From: heitorrosa <76885858+heitorrosa@users.noreply.github.com> Date: Tue, 29 Sep 2026 16:41:55 -0300 Subject: [PATCH 04/20] enforce session lifecycle and username uniqueness --- main/app/authentication/authentication.py | 16 ++- main/app/authentication/constants.py | 3 +- main/app/authentication/session.py | 45 ++++++-- main/app/user/user.py | 17 +-- tests/test_auth_audit_fb.py | 124 ++++++++++++++++++++++ tests/test_auth_util.py | 8 +- tests/test_controllers_coverage.py | 16 +-- tests/test_sessions.py | 10 +- 8 files changed, 199 insertions(+), 40 deletions(-) create mode 100644 tests/test_auth_audit_fb.py diff --git a/main/app/authentication/authentication.py b/main/app/authentication/authentication.py index 5930e015..593a448d 100644 --- a/main/app/authentication/authentication.py +++ b/main/app/authentication/authentication.py @@ -36,7 +36,7 @@ def createUserAccount(db: Session, username, email, password=None, googleId=None db.add(newUser) db.commit() - logger.info(f"User created: {username} ({email})") + logger.info(f"User created: {username}") return True except HTTPException: @@ -74,3 +74,17 @@ def authenticateUser(db: Session, username, password): except Exception as e: logger.debug(f"Error authenticating user: {str(e)}", exc_info=True) return None + + @staticmethod + def resolveUniqueUsername(db: Session, baseUsername: str, maxAttempts: int = 100) -> str: + base = (baseUsername or "").strip() or "user" + candidate = base[:255] + suffix = 0 + for _ in range(maxAttempts): + exists = db.query(User).filter(User.username == candidate).first() + if not exists: + return candidate + suffix += 1 + tail = f"-{suffix}" + candidate = f"{base[: 255 - len(tail)]}{tail}" + raise HTTPException(status_code=409, detail="Could not resolve unique username") diff --git a/main/app/authentication/constants.py b/main/app/authentication/constants.py index cbb91078..f04d16cb 100644 --- a/main/app/authentication/constants.py +++ b/main/app/authentication/constants.py @@ -1,7 +1,8 @@ from typing import Literal -SESSION_EXPIRY_DAYS = 30 +SESSION_EXPIRY_DAYS = 7 TOKEN_EXPIRY_HOURS = SESSION_EXPIRY_DAYS * 24 +SESSION_IDLE_TIMEOUT_HOURS = 24 COOKIE_NAME = "mansa_token" COOKIE_PATH = "/" diff --git a/main/app/authentication/session.py b/main/app/authentication/session.py index 76f61e0e..afe92ef7 100644 --- a/main/app/authentication/session.py +++ b/main/app/authentication/session.py @@ -5,7 +5,7 @@ from sqlalchemy.orm import Session from user_agents import parse as parseUserAgent from main.models.user_session import UserSession -from main.app.authentication.constants import SESSION_EXPIRY_DAYS +from main.app.authentication.constants import SESSION_EXPIRY_DAYS, SESSION_IDLE_TIMEOUT_HOURS logger = logging.getLogger(__name__) @@ -90,15 +90,20 @@ def getCurrentSession(db: Session, userId: int) -> UserSession | None: @staticmethod def revokeSession(db: Session, sessionId: str, userId: int) -> bool: - session = SessionManager.getSessionById(db, sessionId, userId) - if not session: - return False - - session.isActive = False # type: ignore[assignment] + count = ( + db.query(UserSession) + .filter( + UserSession.sessionId == str(sessionId), + UserSession.userId == userId, + UserSession.isActive.is_(True), + ) + .update({UserSession.isActive: False}, synchronize_session=False) + ) db.commit() - - logger.info(f"Revoked session {sessionId} for user {userId}") - return True + if count: + logger.info(f"Revoked session {sessionId} for user {userId}") + return True + return False @staticmethod def revokeAllSessions(db: Session, userId: int) -> int: @@ -113,6 +118,16 @@ def revokeAllSessions(db: Session, userId: int) -> int: logger.info(f"Revoked {count} sessions for user {userId}") return count + @staticmethod + def revokeAllExcept(db: Session, user_id: int, keep_session_id: str) -> None: + db.query(UserSession).filter( + UserSession.userId == user_id, + UserSession.sessionId != str(keep_session_id), + UserSession.isActive.is_(True), + ).update({UserSession.isActive: False}, synchronize_session=False) + db.commit() + logger.info(f"Revoked all sessions for user {user_id} except {keep_session_id}") + @staticmethod def updateLastActive(db: Session, sessionId: str) -> bool: session = db.query(UserSession).filter(UserSession.sessionId == sessionId).first() @@ -141,4 +156,16 @@ def validateSession(db: Session, sessionId: str, userId: int) -> bool: db.commit() return False + now = datetime.now(timezone.utc) + lastActive = session.lastActivityAt + if isinstance(lastActive, datetime): + if lastActive.tzinfo is None: + lastActive = lastActive.replace(tzinfo=timezone.utc) + if now - lastActive > timedelta(hours=SESSION_IDLE_TIMEOUT_HOURS): + session.isActive = False # type: ignore[assignment] + db.commit() + return False + + session.lastActivityAt = now # type: ignore[assignment] + db.commit() return True diff --git a/main/app/user/user.py b/main/app/user/user.py index aea4b560..6ff1c90e 100644 --- a/main/app/user/user.py +++ b/main/app/user/user.py @@ -28,11 +28,14 @@ def getCurrentUser( userId = payload.get("userId") sessionId = payload.get("sessionId") - if sessionId and userId is not None: - isValid = SessionManager.validateSession(db, sessionId, int(userId)) - if not isValid: - logger.info(f"Session {sessionId} revoked, logging out user {userId}") - raise HTTPException(status_code=401, detail="Session revoked") + if not sessionId or userId is None: + logger.info("Missing sessionId in token, rejecting") + raise HTTPException(status_code=401, detail="Session required") + + isValid = SessionManager.validateSession(db, sessionId, int(userId)) + if not isValid: + logger.info(f"Session {sessionId} revoked, logging out user {userId}") + raise HTTPException(status_code=401, detail="Session revoked") user = db.query(User).filter(User.userId == userId).first() @@ -44,11 +47,9 @@ def getCurrentUser( "username": user.username, "email": user.email, "roles": UserManager.getRolesList(user), + "sessionId": sessionId, } - if sessionId: - result["sessionId"] = sessionId - return result except HTTPException: diff --git a/tests/test_auth_audit_fb.py b/tests/test_auth_audit_fb.py new file mode 100644 index 00000000..2166fa77 --- /dev/null +++ b/tests/test_auth_audit_fb.py @@ -0,0 +1,124 @@ +"""F-B audit tests: fail-closed sessionId, atomic revoke, 7d expiry + idle, unique SSO usernames.""" + +import inspect +import os +import sys +from datetime import datetime, timedelta, timezone +from unittest.mock import MagicMock, patch + +import pytest +from fastapi import HTTPException + +sys.path.insert(0, os.path.dirname(os.path.dirname(__file__))) + +from main.app.authentication import constants as authConstants +from main.app.authentication.authentication import AuthenticationManager +from main.app.authentication.session import SessionManager +from main.app.user.user import UserManager +from main.models.user import User + + +def makeUser(dbSession, username="fb_user"): + user = User(username=username, email=f"{username}@example.com", passwordHash="hashed", roles="USER") + dbSession.add(user) + dbSession.commit() + dbSession.refresh(user) + return user + + +class TestFailClosed: + def test_missing_session_id_rejected(self): + db = MagicMock() + with patch.object(SessionManager, "validateSession") as mv: + with pytest.raises(HTTPException) as e: + UserManager.getCurrentUser(payload={"userId": 1}, db=db) + assert e.value.status_code == 401 + assert e.value.detail == "Session required" + mv.assert_not_called() + + def test_missing_user_id_rejected(self): + db = MagicMock() + with pytest.raises(HTTPException) as e: + UserManager.getCurrentUser(payload={"sessionId": "abc"}, db=db) + assert e.value.status_code == 401 + + +class TestRevokeAllExcept: + def test_signature_and_behavior(self): + assert list(inspect.signature(SessionManager.revokeAllExcept).parameters) == [ + "db", + "user_id", + "keep_session_id", + ] + db = MagicMock() + assert SessionManager.revokeAllExcept(db, 7, "keep-1") is None + db.commit.assert_called_once() + query = db.query.return_value + query.filter.assert_called_once() + query.filter.return_value.update.assert_called_once() + filterArgs = query.filter.call_args[0] + sessionArg = next(a for a in filterArgs if getattr(getattr(a, "left", None), "key", "") == "sessionId") + assert sessionArg.right.value == "keep-1" + + +class TestAtomicRevoke: + def _mockDb(self, count): + db = MagicMock() + db.query.return_value.filter.return_value.update.return_value = count + return db + + def test_revoke_found(self): + db = self._mockDb(1) + assert SessionManager.revokeSession(db, "s", 1) is True + db.commit.assert_called_once() + + def test_revoke_not_found(self): + db = self._mockDb(0) + assert SessionManager.revokeSession(db, "s", 1) is False + + def test_no_select_before_update(self): + db = self._mockDb(1) + SessionManager.revokeSession(db, "s", 1) + db.query.return_value.filter.return_value.first.assert_not_called() + + +class TestExpiryIdle: + def test_constants(self): + assert authConstants.SESSION_EXPIRY_DAYS == 7 + assert authConstants.TOKEN_EXPIRY_HOURS == 7 * 24 + assert authConstants.SESSION_IDLE_TIMEOUT_HOURS == 24 + + def test_fresh_session_valid_and_touched(self, dbSession): + user = makeUser(dbSession) + session = SessionManager.createSession(dbSession, user.userId, "pytest") + before = session.lastActivityAt + assert SessionManager.validateSession(dbSession, session.sessionId, user.userId) is True + dbSession.refresh(session) + assert session.lastActivityAt >= before + + def test_idle_session_revoked(self, dbSession): + user = makeUser(dbSession, username="fb_idle") + session = SessionManager.createSession(dbSession, user.userId, "pytest") + session.lastActivityAt = datetime.now(timezone.utc) - timedelta(days=2) + dbSession.commit() + assert SessionManager.validateSession(dbSession, session.sessionId, user.userId) is False + dbSession.refresh(session) + assert session.isActive is False + + +class TestUniqueUsername: + def _mockDb(self, side_effect): + db = MagicMock() + db.query.return_value.filter.return_value.first.side_effect = side_effect + return db + + def test_free_base_returned(self): + assert AuthenticationManager.resolveUniqueUsername(self._mockDb([None]), "base") == "base" + + def test_taken_base_gets_suffix(self): + assert AuthenticationManager.resolveUniqueUsername(self._mockDb([MagicMock(), None]), "base") == "base-1" + + def test_always_taken_raises_409(self): + with pytest.raises(HTTPException) as e: + AuthenticationManager.resolveUniqueUsername(self._mockDb(MagicMock()), "base") + assert e.value.status_code == 409 diff --git a/tests/test_auth_util.py b/tests/test_auth_util.py index 50f7ae25..c6200830 100644 --- a/tests/test_auth_util.py +++ b/tests/test_auth_util.py @@ -68,15 +68,15 @@ def test_create_access_token_contains_data(self): class TestSessionExpiryConfig: - def test_session_expiry_days_is_30(self): - assert SESSION_EXPIRY_DAYS == 30 + def test_session_expiry_days_is_7(self): + assert SESSION_EXPIRY_DAYS == 7 def test_session_expiry_hours_calculation(self): from main.app.authentication.constants import TOKEN_EXPIRY_HOURS assert TOKEN_EXPIRY_HOURS == SESSION_EXPIRY_DAYS * 24 - def test_default_token_expiry_equals_30_days(self): + def test_default_token_expiry_equals_7_days(self): token = createAccessToken({"userId": "123"}) decoded = jwt.decode(token, options={"verify_signature": False}) @@ -84,7 +84,7 @@ def test_default_token_expiry_equals_30_days(self): now = datetime.now() daysDiff = (expTime - now).days - assert 29 <= daysDiff <= 30 + assert 6 <= daysDiff <= 7 class TestAuthUtilEdgeCases: diff --git a/tests/test_controllers_coverage.py b/tests/test_controllers_coverage.py index 222a6672..2040b059 100644 --- a/tests/test_controllers_coverage.py +++ b/tests/test_controllers_coverage.py @@ -1146,24 +1146,18 @@ def test_get_current_user_generic_exception(self): assert "Could not validate credentials" in exc_info.value.detail def test_get_current_user_no_session_id(self): - """Covers lines 37-38, 46, 51, 58 (sessionId is None): skips session validation.""" + """Fail-closed: payload without sessionId raises 401 Session required.""" mock_db = MagicMock() - mock_user = MagicMock() - mock_user.userId = 1 - mock_user.username = "alice" - mock_user.email = "alice@test.com" - mock_user.getRolesList.return_value = ["USER"] - - mock_db.query.return_value.filter.return_value.first.return_value = mock_user mock_payload = {"userId": 1} from main.app.user.user import UserManager - result = UserManager.getCurrentUser(payload=mock_payload, db=mock_db) + with pytest.raises(Exception) as exc_info: + UserManager.getCurrentUser(payload=mock_payload, db=mock_db) - assert result["userId"] == 1 - assert "sessionId" not in result + assert exc_info.value.status_code == 401 + assert "Session required" in exc_info.value.detail # ========================================================================= diff --git a/tests/test_sessions.py b/tests/test_sessions.py index 861287d3..f591885c 100644 --- a/tests/test_sessions.py +++ b/tests/test_sessions.py @@ -25,8 +25,8 @@ def test_isActive_can_be_false(self): class TestSessionExpiration: - def test_session_expiry_days_is_30(self): - assert SESSION_EXPIRY_DAYS == 30 + def test_session_expiry_days_is_7(self): + assert SESSION_EXPIRY_DAYS == 7 def test_session_can_expire(self): now = datetime.now() @@ -182,19 +182,17 @@ def test_revoke_session_found(self): from main.app.authentication.session import SessionManager mock_db = MagicMock() - mock_session = MagicMock() - mock_db.query.return_value.filter.return_value.filter.return_value.first.return_value = mock_session + mock_db.query.return_value.filter.return_value.update.return_value = 1 result = SessionManager.revokeSession(mock_db, "sess-123", userId=1) assert result is True - assert mock_session.isActive is False mock_db.commit.assert_called_once() def test_revoke_session_not_found(self): from main.app.authentication.session import SessionManager mock_db = MagicMock() - mock_db.query.return_value.filter.return_value.filter.return_value.first.return_value = None + mock_db.query.return_value.filter.return_value.update.return_value = 0 result = SessionManager.revokeSession(mock_db, "nonexistent", userId=1) assert result is False From 5a064a7515ab647328c4ae9badbddd1987b4eef9 Mon Sep 17 00:00:00 2001 From: heitorrosa <76885858+heitorrosa@users.noreply.github.com> Date: Tue, 29 Sep 2026 16:42:05 -0300 Subject: [PATCH 05/20] salt api keys and gate token introspection --- main/app/authentication/introspect.py | 48 ++++++---- main/app/stocks_api/key.py | 71 +++++++++++---- tests/test_api_key_quota_atomic.py | 110 +++++++++++++++-------- tests/test_auth_introspect.py | 125 ++++++++++++++++++++++++++ tests/test_stocks_api_coverage.py | 120 +++++++++++-------------- 5 files changed, 336 insertions(+), 138 deletions(-) create mode 100644 tests/test_auth_introspect.py diff --git a/main/app/authentication/introspect.py b/main/app/authentication/introspect.py index fb8fba4b..d5991fbd 100644 --- a/main/app/authentication/introspect.py +++ b/main/app/authentication/introspect.py @@ -1,3 +1,5 @@ +import logging + from fastapi import HTTPException from sqlalchemy.orm import Session @@ -6,25 +8,35 @@ from main.app.user.user import UserManager from main.models.user import User +logger = logging.getLogger(__name__) -def introspectToken(db: Session, token: str | None) -> dict: - raw = (token or "").strip().removeprefix("Bearer ").strip() - if not raw: - raise HTTPException(status_code=401, detail="Token not provided") +GENERIC_DETAIL = "Unauthorized" - payload = verifyAccessToken(raw) +def introspectToken(db: Session, token: str | None) -> dict: try: - userId = int(payload["userId"]) - except (KeyError, TypeError, ValueError): - raise HTTPException(status_code=401, detail="Invalid token") - - sessionId = payload.get("sessionId") - if not sessionId or not SessionManager.validateSession(db, str(sessionId), userId): - raise HTTPException(status_code=401, detail="Session revoked") - - user = db.query(User).filter(User.userId == userId).first() - if not user: - raise HTTPException(status_code=401, detail="User no longer exists") - - return {"userId": user.userId, "username": user.username, "roles": UserManager.getRolesList(user)} + raw = (token or "").strip().removeprefix("Bearer ").strip() + if not raw: + raise HTTPException(status_code=401, detail=GENERIC_DETAIL) + + payload = verifyAccessToken(raw) + + try: + userId = int(payload["userId"]) + except (KeyError, TypeError, ValueError): + raise HTTPException(status_code=401, detail=GENERIC_DETAIL) + + sessionId = payload.get("sessionId") + if not sessionId or not SessionManager.validateSession(db, str(sessionId), userId): + raise HTTPException(status_code=401, detail=GENERIC_DETAIL) + + user = db.query(User).filter(User.userId == userId).first() + if not user: + raise HTTPException(status_code=401, detail=GENERIC_DETAIL) + + return {"userId": user.userId, "username": user.username, "roles": UserManager.getRolesList(user)} + except HTTPException: + raise HTTPException(status_code=401, detail=GENERIC_DETAIL) + except Exception as e: + logger.warning(f"Token introspection failed: {e}") + raise HTTPException(status_code=401, detail=GENERIC_DETAIL) diff --git a/main/app/stocks_api/key.py b/main/app/stocks_api/key.py index 01ff0ba9..6c4c5d56 100644 --- a/main/app/stocks_api/key.py +++ b/main/app/stocks_api/key.py @@ -1,9 +1,11 @@ -from config import Config, getSession - -from typing import cast import hashlib +import hmac +import secrets +from typing import cast + +from config import Config, getStocksSession -from fastapi import HTTPException, Depends +from fastapi import Depends, HTTPException from fastapi.security import APIKeyHeader from sqlalchemy import update from sqlalchemy.engine import CursorResult @@ -13,37 +15,76 @@ 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() + -async def verifyAPIKey(apiKey: str = Depends(apiKeyHeader), db: Session = Depends(getSession)): +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)}" + + +def isValidStoredKey(providedKey: str, storedKey: str | None) -> bool: + try: + if not providedKey or not storedKey or _STORED_SEP not in storedKey: + return False + saltHex, digest = storedKey.split(_STORED_SEP, 1) + if not saltHex or not digest: + return False + candidate = hashlib.sha256((saltHex + providedKey).encode()).hexdigest() + return hmac.compare_digest(candidate, digest) + except (TypeError, ValueError): + return False + + +async def verifyAPIKey(apiKey: str = Depends(apiKeyHeader), db: Session = Depends(getStocksSession)): if not Config.STOCKS_API.KEY_SYSTEM: return None if not apiKey: - raise HTTPException(status_code=401, detail="Missing API key") - - hashedKey = hashlib.sha256(apiKey.encode()).hexdigest() + raise HTTPException(status_code=401, detail=UNAUTHORIZED_DETAIL) try: + # ponytail: full-table scan, move to server-side salted lookup if keys table grows large + rows = db.query(StocksAPIKey).all() + matchedPk = None + exhaustedMatch = False + for row in rows: + if isValidStoredKey(apiKey, row.apiKey): + if row.currentUsage < row.requestLimit: + matchedPk = row.apiKey + break + exhaustedMatch = True + + if matchedPk is None: + if exhaustedMatch: + raise HTTPException(status_code=429, detail=QUOTA_DETAIL) + raise HTTPException(status_code=401, detail=UNAUTHORIZED_DETAIL) + result = db.execute( update(StocksAPIKey) - .where(StocksAPIKey.apiKey == hashedKey) + .where(StocksAPIKey.apiKey == matchedPk) .where(StocksAPIKey.currentUsage < StocksAPIKey.requestLimit) .values(currentUsage=StocksAPIKey.currentUsage + 1) ) db.commit() if cast(CursorResult, result).rowcount == 0: - stocksKey = db.query(StocksAPIKey).filter(StocksAPIKey.apiKey == hashedKey).first() - if not stocksKey: - raise HTTPException(status_code=401, detail="Invalid API key") - else: - raise HTTPException(status_code=429, detail="quota exceeded") + raise HTTPException(status_code=429, detail=QUOTA_DETAIL) return apiKey except HTTPException: db.rollback() raise - except Exception as e: + except Exception: db.rollback() raise HTTPException(status_code=500, detail="API key verification failed") diff --git a/tests/test_api_key_quota_atomic.py b/tests/test_api_key_quota_atomic.py index e11f354b..114b8c73 100644 --- a/tests/test_api_key_quota_atomic.py +++ b/tests/test_api_key_quota_atomic.py @@ -152,65 +152,101 @@ def test_increment_from_zero(self, dbSession, sampleKeyData): assert key.currentUsage == 1 -class TestVerifyAPIKeyIntegration: - """Integration tests for the verifyAPIKey function.""" +class TestSaltedKeyHash: + def test_same_raw_produces_unique_stored_values(self): + from main.app.stocks_api.key import createStoredApiKey, isValidStoredKey + _, stored1 = createStoredApiKey("same_raw") + _, stored2 = createStoredApiKey("same_raw") + assert stored1 != stored2 + assert isValidStoredKey("same_raw", stored1) + assert isValidStoredKey("same_raw", stored2) + + def test_wrong_and_tampered_keys_rejected(self): + from main.app.stocks_api.key import createStoredApiKey, isValidStoredKey + _, stored = createStoredApiKey("correct") + assert not isValidStoredKey("wrong", stored) + assert not isValidStoredKey("correct", stored[:-1] + ("0" if stored[-1] != "0" else "1")) + assert not isValidStoredKey("correct", "barehexwithnosalt") + assert not isValidStoredKey("", stored) + + def test_constant_time_compare_used(self): + from unittest.mock import patch as mock_patch + from main.app.stocks_api.key import createStoredApiKey, isValidStoredKey + raw, stored = createStoredApiKey("k") + with mock_patch("main.app.stocks_api.key.hmac.compare_digest", return_value=False) as m: + assert isValidStoredKey(raw, stored) is False + m.assert_called_once() - async def test_verify_api_key_success(self, dbSession, sampleKeyData): - """Test successful API key verification.""" - key = StocksAPIKey(**sampleKeyData) + +class TestVerifyAPIKeyIntegration: + def makeStoredKey(self, dbSession, raw="test_key_12345", **overrides): + from main.app.stocks_api.key import createStoredApiKey + _, stored = createStoredApiKey(raw) + params = {"apiKey": stored, "userId": 1, "requestLimit": 100, "currentUsage": 0} + params.update(overrides) + key = StocksAPIKey(**params) dbSession.add(key) dbSession.commit() + return key + async def test_verify_api_key_success(self, dbSession): + key = self.makeStoredKey(dbSession) with patch("main.app.stocks_api.key.Config") as mock_config: mock_config.STOCKS_API = MagicMock(KEY_SYSTEM=True) + assert await verifyAPIKey(apiKey="test_key_12345", db=dbSession) == "test_key_12345" + dbSession.refresh(key) + assert key.currentUsage == 1 - result = await verifyAPIKey(apiKey="test_key_12345", db=dbSession) - - assert result == "test_key_12345" - dbSession.refresh(key) - assert key.currentUsage == 1 - - async def test_verify_api_key_quota_exceeded(self, dbSession, sampleKeyData): - """Test API key verification when quota is exceeded.""" - key = StocksAPIKey(**{**sampleKeyData, "currentUsage": 100, "requestLimit": 100}) - dbSession.add(key) - dbSession.commit() - + async def test_verify_api_key_quota_exceeded(self, dbSession): + self.makeStoredKey(dbSession, currentUsage=100, requestLimit=100) with patch("main.app.stocks_api.key.Config") as mock_config: mock_config.STOCKS_API = MagicMock(KEY_SYSTEM=True) - - with pytest.raises(HTTPException) as exc_info: + with pytest.raises(HTTPException) as e: await verifyAPIKey(apiKey="test_key_12345", db=dbSession) - - assert exc_info.value.status_code == 429 - assert "quota exceeded" in exc_info.value.detail + assert (e.value.status_code, e.value.detail) == (429, "Too many requests") async def test_verify_api_key_invalid(self, dbSession): - """Test API key verification with invalid key.""" + self.makeStoredKey(dbSession) with patch("main.app.stocks_api.key.Config") as mock_config: mock_config.STOCKS_API = MagicMock(KEY_SYSTEM=True) - - with pytest.raises(HTTPException) as exc_info: + with pytest.raises(HTTPException) as e: await verifyAPIKey(apiKey="invalid_key", db=dbSession) - - assert exc_info.value.status_code == 401 - assert "Invalid API key" in exc_info.value.detail + assert (e.value.status_code, e.value.detail) == (401, "Unauthorized") async def test_verify_api_key_missing(self, dbSession): - """Test API key verification with missing key.""" with patch("main.app.stocks_api.key.Config") as mock_config: mock_config.STOCKS_API = MagicMock(KEY_SYSTEM=True) - - with pytest.raises(HTTPException) as exc_info: + with pytest.raises(HTTPException) as e: await verifyAPIKey(apiKey=None, db=dbSession) - - assert exc_info.value.status_code == 401 - assert "Missing API key" in exc_info.value.detail + assert (e.value.status_code, e.value.detail) == (401, "Unauthorized") async def test_verify_api_key_disabled(self, dbSession): - """Test that API key system can be disabled.""" with patch("main.app.stocks_api.key.Config") as mock_config: mock_config.STOCKS_API = MagicMock(KEY_SYSTEM=False) + assert await verifyAPIKey(apiKey="any_key", db=dbSession) is None - result = await verifyAPIKey(apiKey="any_key", db=dbSession) - assert result is None + async def test_legacy_unsalted_row_fails_closed(self, dbSession): + dbSession.add(StocksAPIKey(apiKey=TEST_KEY_HASH, userId=1, requestLimit=100, currentUsage=0)) + dbSession.commit() + with patch("main.app.stocks_api.key.Config") as mock_config: + mock_config.STOCKS_API = MagicMock(KEY_SYSTEM=True) + with pytest.raises(HTTPException) as e: + await verifyAPIKey(apiKey="test_key_12345", db=dbSession) + assert e.value.status_code == 401 + + async def test_db_error_fails_closed_500(self, dbSession): + self.makeStoredKey(dbSession) + broken = MagicMock() + broken.query.side_effect = RuntimeError("DB down") + with patch("main.app.stocks_api.key.Config") as mock_config: + mock_config.STOCKS_API = MagicMock(KEY_SYSTEM=True) + with pytest.raises(HTTPException) as e: + await verifyAPIKey(apiKey="test_key_12345", db=broken) + assert e.value.status_code == 500 + broken.rollback.assert_called() + + def test_verify_uses_stocks_session(self): + import inspect + from config import getStocksSession + from main.app.stocks_api.key import verifyAPIKey as v + assert inspect.signature(v).parameters["db"].default.dependency is getStocksSession diff --git a/tests/test_auth_introspect.py b/tests/test_auth_introspect.py new file mode 100644 index 00000000..53009215 --- /dev/null +++ b/tests/test_auth_introspect.py @@ -0,0 +1,125 @@ +import os +import sys +from datetime import datetime, timedelta, timezone + +import pytest + +from unittest.mock import patch + +sys.path.insert(0, os.path.dirname(os.path.dirname(__file__))) + +from fastapi import FastAPI +from fastapi.testclient import TestClient + +from config import getSession +from main.app.authentication.session import SessionManager +from main.app.authentication.util import createAccessToken +from main.controller.authentication_controller import router as authRouter +from main.models.user import User +from main.utils.errors import registerErrorHandlers + + +@pytest.fixture +def authClient(dbSession): + app = FastAPI() + app.include_router(authRouter) + registerErrorHandlers(app) + app.dependency_overrides[getSession] = lambda: dbSession + with TestClient(app, raise_server_exceptions=False) as c: + yield c + + +def makeUserToken(dbSession, username="intro_user"): + user = User(username=username, email=f"{username}@example.com", passwordHash="hashed", roles="USER") + dbSession.add(user) + dbSession.commit() + dbSession.refresh(user) + session = SessionManager.createSession(dbSession, user.userId, "pytest") + token = createAccessToken({"userId": str(user.userId), "sessionId": session.sessionId}) + return user, session, token + + +SERVICE_HEADERS = {"X-Service-Token": "test-service-token"} + + +@pytest.fixture(autouse=True) +def introspectServiceToken(monkeypatch): + monkeypatch.setenv("INTROSPECT_SERVICE_TOKEN", "test-service-token") + + +class TestAuthIntrospect: + def test_valid_token_returns_user_payload(self, dbSession, authClient): + user, _, token = makeUserToken(dbSession) + resp = authClient.post("/auth/introspect", json={"token": token}, headers=SERVICE_HEADERS) + assert resp.status_code == 200 + assert resp.json() == {"userId": user.userId, "username": user.username, "roles": ["USER"]} + + def test_bearer_prefixed_body_token(self, dbSession, authClient): + _, _, token = makeUserToken(dbSession) + resp = authClient.post("/auth/introspect", json={"token": f"Bearer {token}"}, headers=SERVICE_HEADERS) + assert resp.status_code == 200 + + def test_header_fallback(self, dbSession, authClient): + _, _, token = makeUserToken(dbSession) + resp = authClient.post("/auth/introspect", headers={"X-Access-Token": token, **SERVICE_HEADERS}) + assert resp.status_code == 200 + + def test_expired_token_401(self, dbSession, authClient): + user, session, _ = makeUserToken(dbSession) + token = createAccessToken( + {"userId": str(user.userId), "sessionId": session.sessionId}, + expiresDelta=timedelta(seconds=-1), + ) + assert authClient.post("/auth/introspect", json={"token": token}, headers=SERVICE_HEADERS).status_code == 401 + + def test_invalid_token_401(self, dbSession, authClient): + assert authClient.post("/auth/introspect", json={"token": "not.a.real.token"}, headers=SERVICE_HEADERS).status_code == 401 + + def test_revoked_session_401(self, dbSession, authClient): + user, session, token = makeUserToken(dbSession) + SessionManager.revokeSession(dbSession, session.sessionId, user.userId) + assert authClient.post("/auth/introspect", json={"token": token}, headers=SERVICE_HEADERS).status_code == 401 + + def test_expired_session_401(self, dbSession, authClient): + user = User(username="exp_user", email="exp_user@example.com", passwordHash="h", roles="USER") + dbSession.add(user) + dbSession.commit() + dbSession.refresh(user) + past = datetime.now(timezone.utc) - timedelta(days=1) + session = SessionManager.createSession(dbSession, user.userId, "pytest", expiresAt=past) + token = createAccessToken({"userId": str(user.userId), "sessionId": session.sessionId}) + assert authClient.post("/auth/introspect", json={"token": token}, headers=SERVICE_HEADERS).status_code == 401 + + def test_missing_token_401(self, authClient): + assert authClient.post("/auth/introspect", json={}, headers=SERVICE_HEADERS).status_code == 401 + + +class TestAuthIntrospectGenericDetail: + def test_all_failure_paths_share_single_401_detail(self, dbSession, authClient): + user, session, token = makeUserToken(dbSession, username="generic_user") + expired = createAccessToken( + {"userId": str(user.userId), "sessionId": session.sessionId}, + expiresDelta=timedelta(seconds=-1), + ) + SessionManager.revokeSession(dbSession, session.sessionId, user.userId) + bodies = [{}, {"token": "not.a.real.token"}, {"token": expired}, {"token": token}] + errors = set() + for body in bodies: + resp = authClient.post("/auth/introspect", json=body, headers=SERVICE_HEADERS) + assert resp.status_code == 401 + errors.add(resp.json()["error"]) + assert errors == {"Unauthorized"} + + def test_unknown_user_returns_generic_401(self, dbSession): + from unittest.mock import MagicMock + from fastapi import HTTPException + from main.app.authentication.introspect import introspectToken + + _, _, token = makeUserToken(dbSession, username="ghost_user") + mockDb = MagicMock() + mockDb.query.return_value.filter.return_value.first.return_value = None + with patch("main.app.authentication.introspect.SessionManager.validateSession", return_value=True): + with pytest.raises(HTTPException) as exc_info: + introspectToken(mockDb, token) + assert exc_info.value.status_code == 401 + assert exc_info.value.detail == "Unauthorized" diff --git a/tests/test_stocks_api_coverage.py b/tests/test_stocks_api_coverage.py index d0550694..46ffcc0f 100644 --- a/tests/test_stocks_api_coverage.py +++ b/tests/test_stocks_api_coverage.py @@ -173,115 +173,99 @@ def test_getCachedStocks_replaces_neg_inf(self): # Tests for key.py – verifyAPIKey # =========================================================================== class TestVerifyAPIKey: - """Tests covering key.py lines 15-40. - Native async tests via pytest-asyncio asyncio_mode=auto.""" + def makeDb(self, rows, rowcount=1, error=None): + mock_db = MagicMock() + mock_db.query.return_value.all.return_value = rows + if error is not None: + mock_db.execute.side_effect = error + else: + mock_db.execute.return_value.rowcount = rowcount + return mock_db + + def makeRow(self, raw, usage=0, limit=100): + from types import SimpleNamespace + from main.app.stocks_api.key import createStoredApiKey + _, stored = createStoredApiKey(raw) + return SimpleNamespace(apiKey=stored, currentUsage=usage, requestLimit=limit) @patch("main.app.stocks_api.key.Config") async def test_verify_api_key_disabled_returns_none(self, mock_config): - """When KEY.SYSTEM is falsy, return None (line 16).""" from main.app.stocks_api.key import verifyAPIKey - mock_config.STOCKS_API = MagicMock(KEY_SYSTEM=False) - mock_db = MagicMock() - - result = await verifyAPIKey(apiKey=None, db=mock_db) - assert result is None + assert await verifyAPIKey(apiKey=None, db=MagicMock()) is None @patch("main.app.stocks_api.key.Config") async def test_verify_api_key_missing_raises_401(self, mock_config): - """When key is required but not provided (line 19).""" from main.app.stocks_api.key import verifyAPIKey from fastapi import HTTPException - mock_config.STOCKS_API = MagicMock(KEY_SYSTEM=True) - mock_db = MagicMock() - - with pytest.raises(HTTPException) as exc_info: + mock_db = self.makeDb([]) + with pytest.raises(HTTPException) as e: await verifyAPIKey(apiKey=None, db=mock_db) - assert exc_info.value.status_code == 401 + assert (e.value.status_code, e.value.detail) == (401, "Unauthorized") + mock_db.query.assert_not_called() + + @patch("main.app.stocks_api.key.Config") + async def test_verify_api_key_success(self, mock_config): + from main.app.stocks_api.key import verifyAPIKey + mock_config.STOCKS_API = MagicMock(KEY_SYSTEM=True) + mock_db = self.makeDb([self.makeRow("valid_key")]) + assert await verifyAPIKey(apiKey="valid_key", db=mock_db) == "valid_key" + mock_db.commit.assert_called_once() @patch("main.app.stocks_api.key.Config") async def test_verify_api_key_invalid_key_raises_401(self, mock_config): - """When atomic UPDATE returns 0 rows and query finds no key -> 401.""" from main.app.stocks_api.key import verifyAPIKey from fastapi import HTTPException - mock_config.STOCKS_API = MagicMock(KEY_SYSTEM=True) - mock_db = MagicMock() - # Atomic UPDATE returns 0 rows (key not found or quota exceeded) - mock_db.execute.return_value.rowcount = 0 - # Follow-up query confirms key doesn't exist - mock_db.query.return_value.filter.return_value.first.return_value = None - - with pytest.raises(HTTPException) as exc_info: + mock_db = self.makeDb([self.makeRow("other_key")]) + with pytest.raises(HTTPException) as e: await verifyAPIKey(apiKey="bad_key", db=mock_db) - assert exc_info.value.status_code == 401 + assert (e.value.status_code, e.value.detail) == (401, "Unauthorized") @patch("main.app.stocks_api.key.Config") async def test_verify_api_key_quota_exceeded(self, mock_config): - """When atomic UPDATE returns 0 rows and query finds key at limit -> 429.""" from main.app.stocks_api.key import verifyAPIKey from fastapi import HTTPException - mock_config.STOCKS_API = MagicMock(KEY_SYSTEM=True) - mock_db = MagicMock() - # Atomic UPDATE returns 0 rows (quota exceeded) - mock_db.execute.return_value.rowcount = 0 - # Follow-up query confirms key exists (at quota limit) - mock_key_obj = MagicMock() - mock_db.query.return_value.filter.return_value.first.return_value = mock_key_obj - - with pytest.raises(HTTPException) as exc_info: + mock_db = self.makeDb([self.makeRow("valid_key", usage=100, limit=100)]) + with pytest.raises(HTTPException) as e: await verifyAPIKey(apiKey="valid_key", db=mock_db) - assert exc_info.value.status_code == 429 + assert (e.value.status_code, e.value.detail) == (429, "Too many requests") + mock_db.execute.assert_not_called() @patch("main.app.stocks_api.key.Config") - async def test_verify_api_key_success(self, mock_config): - """Happy path: atomic UPDATE succeeds, returns key (lines 22-33).""" + async def test_verify_api_key_lost_race_returns_429(self, mock_config): from main.app.stocks_api.key import verifyAPIKey - + from fastapi import HTTPException mock_config.STOCKS_API = MagicMock(KEY_SYSTEM=True) - mock_db = MagicMock() - # Atomic UPDATE returns 1 row (success) - mock_db.execute.return_value.rowcount = 1 - - result = await verifyAPIKey(apiKey="valid_key", db=mock_db) - assert result == "valid_key" - mock_db.commit.assert_called_once() + mock_db = self.makeDb([self.makeRow("k")], rowcount=0) + with pytest.raises(HTTPException) as e: + await verifyAPIKey(apiKey="k", db=mock_db) + assert e.value.status_code == 429 + mock_db.rollback.assert_called_once() @patch("main.app.stocks_api.key.Config") - async def test_verify_api_key_http_exception_rollback(self, mock_config): - """HTTPException should cause rollback then re-raise (lines 35-37).""" + async def test_verify_api_key_generic_exception_rollback(self, mock_config): from main.app.stocks_api.key import verifyAPIKey from fastapi import HTTPException - mock_config.STOCKS_API = MagicMock(KEY_SYSTEM=True) - mock_db = MagicMock() - # Atomic UPDATE returns 0 rows (quota exceeded) - mock_db.execute.return_value.rowcount = 0 - # Follow-up query confirms key exists (at quota limit) - mock_key_obj = MagicMock() - mock_db.query.return_value.filter.return_value.first.return_value = mock_key_obj - - with pytest.raises(HTTPException) as exc_info: - await verifyAPIKey(apiKey="key", db=mock_db) - assert exc_info.value.status_code == 429 + mock_db = self.makeDb([self.makeRow("k")], error=Exception("DB down")) + with pytest.raises(HTTPException) as e: + await verifyAPIKey(apiKey="k", db=mock_db) + assert e.value.status_code == 500 mock_db.rollback.assert_called_once() @patch("main.app.stocks_api.key.Config") - async def test_verify_api_key_generic_exception_rollback(self, mock_config): - """Generic DB exception should rollback and raise 500 (lines 38-40).""" + async def test_verify_api_key_legacy_row_rejected(self, mock_config): + from types import SimpleNamespace from main.app.stocks_api.key import verifyAPIKey from fastapi import HTTPException - mock_config.STOCKS_API = MagicMock(KEY_SYSTEM=True) - mock_db = MagicMock() - mock_db.execute.side_effect = Exception("DB connection lost") - - with pytest.raises(HTTPException) as exc_info: - await verifyAPIKey(apiKey="key", db=mock_db) - assert exc_info.value.status_code == 500 - mock_db.rollback.assert_called_once() + legacy = SimpleNamespace(apiKey="a" * 64, currentUsage=0, requestLimit=100) + with pytest.raises(HTTPException) as e: + await verifyAPIKey(apiKey="x", db=self.makeDb([legacy])) + assert e.value.status_code == 401 # =========================================================================== From 95f4d926e792d425724feefcccdd271e6cbca676 Mon Sep 17 00:00:00 2001 From: heitorrosa <76885858+heitorrosa@users.noreply.github.com> Date: Tue, 29 Sep 2026 16:56:34 -0300 Subject: [PATCH 06/20] scraper fix --- graphify-out/.graphify_labels.json | 8 +- graphify-out/GRAPH_REPORT.md | 438 +- graphify-out/graph.json | 94853 ++++++++++++++------------- graphify-out/manifest.json | 186 +- main/app/scraper_b3/scraper.py | 4 +- 5 files changed, 50351 insertions(+), 45138 deletions(-) diff --git a/graphify-out/.graphify_labels.json b/graphify-out/.graphify_labels.json index eb9f6ae9..2d2d65d6 100644 --- a/graphify-out/.graphify_labels.json +++ b/graphify-out/.graphify_labels.json @@ -575,14 +575,14 @@ "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" + "587": "Community 587", + "590": "Community 590", + "595": "Community 595", + "596": "Community 596" } diff --git a/graphify-out/GRAPH_REPORT.md b/graphify-out/GRAPH_REPORT.md index 26642c98..276c485b 100644 --- a/graphify-out/GRAPH_REPORT.md +++ b/graphify-out/GRAPH_REPORT.md @@ -1,16 +1,16 @@ -# Graph Report - server (2026-09-15) +# Graph Report - server (2026-09-29) ## Corpus Check -- 123 files · ~73,844 words +- 127 files · ~77,708 words - Verdict: corpus is large enough that graph structure adds value. ## Summary -- 6079 nodes · 8195 edges · 586 communities (345 shown, 241 thin omitted) -- Extraction: 84% EXTRACTED · 16% INFERRED · 0% AMBIGUOUS · INFERRED: 1273 edges (avg confidence: 0.69) +- 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) - Token cost: 0 input · 0 output ## Graph Freshness -- Built from commit: `1e23e042` +- Built from commit: `1c953f10` - Run `git rev-parse HEAD` and compare to check if the graph is stale. - Run `graphify update .` after code changes (no API cost). @@ -576,26 +576,26 @@ - [[_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 587|Community 587]] +- [[_COMMUNITY_Community 590|Community 590]] +- [[_COMMUNITY_Community 595|Community 595]] +- [[_COMMUNITY_Community 596|Community 596]] ## God Nodes (most connected - your core abstractions) 1. `vocab` - 456 edges 2. `StocksCacheManager` - 80 edges 3. `HarnessState` - 68 edges 4. `UserManager` - 56 edges -5. `Permission` - 51 edges +5. `Permission` - 54 edges 6. `StocksQueryManager` - 50 edges 7. `Pytest Testing` - 50 edges -8. `Roles` - 46 edges +8. `Roles` - 49 edges 9. `cn()` - 43 edges 10. `Prometheus` - 41 edges @@ -606,10 +606,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 -- `createKey()` --calls--> `test_create_key_new_user()` [INFERRED] - main/app/stocks_api/key.py → tests/test_stocks_api_coverage.py -- `createKey()` --calls--> `test_create_key_exception_rollback()` [INFERRED] - main/app/stocks_api/key.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 ## Hyperedges (group relationships) - **Authentication Module** — AuthenticationManager, SessionManager, auth_util, auth_constants, getGoogleSSO [INFERRED] @@ -619,7 +619,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, 241 thin omitted) +## Communities (586 total, 231 thin omitted) ### Community 0 - "Stocks API Endpoints" Cohesion: 0.0 @@ -634,8 +634,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.08 -Nodes (23): 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., Tests covering cache.py lines 28-76., Tests covering cache.py lines 28-76., Regression: is_string_dtype fails when column has strings + None (pandas 2.x). (+15 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 @@ -655,43 +655,43 @@ Nodes (29): Algorithmic Compression (`compact.py`) Implementation Plan, code:pyt ### Community 8 - "Device Detection" Cohesion: 0.06 -Nodes (27): HarnessState, Retrieve a value from state. Returns default if key not found., Return a copy of the current state., Format state as a string for injection into the LLM context., Check if state changed since last reset., Reset the changed flag. Returns the previous state., Clear all state data., In-memory state dict that persists across loop iterations within a single reques (+19 more) +Nodes (15): HarnessState, Retrieve a value from state. Returns default if key not found., Return a copy of the current state., Format state as a string for injection into the LLM context., Check if state changed since last reset., Reset the changed flag. Returns the previous state., Clear all state data., In-memory state dict that persists across loop iterations within a single reques (+7 more) ### Community 9 - "Server Configuration" 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.08 -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 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.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) +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) ### Community 13 - "Prometheus Tools" -Cohesion: 0.26 -Nodes (8): Empty matrix → empty array., Single row matches cosine_similarity., Multiple rows ranked correctly., Zero query → all zeros., TestBatchCosineSimilarity, batch_cosine_similarity(), batchCosineSimilarity(), Vectorized cosine similarity: one query against N embeddings. +Cohesion: 0.13 +Nodes (21): benchOnce(), main(), fullTextSearch(), minMax(), scoreCandidates(), scoreRecency(), scoreRow(), search() (+13 more) ### Community 14 - "User Roles & Permissions" Cohesion: 0.05 -Nodes (36): _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. (+28 more) +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) ### 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.06 -Nodes (31): _make_prometheus_client(), 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. (+23 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 17 - "Community 17" -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.07 +Nodes (26): Two dates in the range, both valid., 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. (+18 more) ### Community 18 - "Community 18" Cohesion: 0.07 @@ -710,8 +710,8 @@ Cohesion: 0.12 Nodes (4): B3Scraper, getCurrentSelic(), getInitialData(), calculateInvestingScore() ### Community 22 - "Community 22" -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 +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) ### Community 23 - "Community 23" Cohesion: 0.07 @@ -726,20 +726,20 @@ 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.11 -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 invalid API key returns zero rows affected. (+12 more) +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) ### 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.07 -Nodes (26): 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)., Pass field name WITHOUT year (how categorizeColumns returns them)., No historical data columns -> inner 400 caught by outer except -> 500., If an unexpected exception occurs in queryHistorical., No historical data columns -> inner 400 caught by outer except -> 500. (+18 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.09 -Nodes (15): PrometheusGenerator, _make_generator(), Tests to increase coverage for: - main/app/prometheus/generation.py - main/a, test_execute_workflow_basic_no_history(), test_execute_workflow_global_request_api_error(), test_execute_workflow_global_request_status_not_200(), test_execute_workflow_global_request_with_api_key(), test_execute_workflow_session_db_exception() (+7 more) +Cohesion: 0.08 +Nodes (17): PrometheusGenerator, Thread-safe proxy that delegates to per-thread sessions., SessionProxy, _make_generator(), Tests to increase coverage for: - main/app/prometheus/generation.py - main/a, test_execute_workflow_basic_no_history(), test_execute_workflow_global_request_api_error(), test_execute_workflow_global_request_status_not_200() (+9 more) ### Community 30 - "Community 30" Cohesion: 0.07 @@ -755,7 +755,7 @@ Nodes (12): ToolContext — bundles all dependencies for tool execution. Replac ### Community 33 - "Community 33" Cohesion: 0.12 -Nodes (14): BaseHTTPMiddleware, BaseModel, Tests for standardized error responses (errors.py)., SampleBody, TestErrorResponseModel, TestGenericExceptionHandler, TestHTTPExceptionHandler, TestRequestContextFilter (+6 more) +Nodes (13): BaseHTTPMiddleware, Tests for standardized error responses (errors.py)., SampleBody, TestErrorResponseModel, TestGenericExceptionHandler, TestHTTPExceptionHandler, TestRequestContextFilter, TestSuccessPassthrough (+5 more) ### Community 34 - "Community 34" Cohesion: 0.11 @@ -778,8 +778,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): 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. (+16 more) +Cohesion: 0.06 +Nodes (31): 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. (+23 more) ### Community 40 - "Community 40" Cohesion: 0.12 @@ -794,20 +794,20 @@ 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.18 -Nodes (4): hashPassword(), verifyPassword(), TestAuthUtil, TestAuthUtilEdgeCases +Cohesion: 0.11 +Nodes (10): Authentication System, createUserAccount(), createAccessToken(), hashPassword(), verifyPassword(), Google OAuth, JWT Authentication, TestAuthUtil (+2 more) ### Community 44 - "Community 44" Cohesion: 0.14 Nodes (3): UserSession, TestSessionExpiration, TestUserSessionModel ### Community 45 - "Community 45" -Cohesion: 0.09 -Nodes (5): Tests for main/utils/roles.py — covers requirePermission and edge cases., TestCheckAccess, TestPermissionAll, TestRequirePermission, TestRolesHierarchy +Cohesion: 0.06 +Nodes (27): BaseModel, IntFlag, OrunmilaChatManager, MemoryCandidate, OrunmilaMemory, MemoryCandidate, Config, Covers line 28: GET /auth/health. (+19 more) ### Community 46 - "Community 46" -Cohesion: 0.11 -Nodes (17): 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., Fields that don't exist in the dataframe are filtered out., search.strip() == '' should still dedup (line 181)., Fields that don't exist in the dataframe are filtered out. (+9 more) +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) ### Community 47 - "Community 47" Cohesion: 0.1 @@ -818,8 +818,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.07 -Nodes (30): dispatchToolCall(), TDD tests: verify memory tools are wired into the Prometheus agent. RED: Thes, 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. (+22 more) +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) ### Community 50 - "Community 50" Cohesion: 0.07 @@ -835,7 +835,7 @@ Nodes (7): Cover all methods in chat.py (lines 11-120)., Cover all methods in ch ### Community 53 - "Community 53" Cohesion: 0.11 -Nodes (30): applyUpdate(), archiveDead(), clearAll(), clearAllAsync(), count_memories(), countMemories(), countTokensCached(), decayScores() (+22 more) +Nodes (29): applyUpdate(), archiveDead(), clearAll(), clearAllAsync(), count_memories(), countMemories(), decayScores(), deleteMemory() (+21 more) ### Community 54 - "Community 54" Cohesion: 0.2 @@ -854,8 +854,8 @@ Cohesion: 0.09 Nodes (15): Performance benchmark tests for stocks API, Performance benchmark tests for stocks API, Ticker index lookup should be O(1) - very fast, Ticker index lookup should be O(1) - very fast, Prefix scan should be much slower than index lookup, Prefix scan should be much slower than index lookup, Index lookup should be significantly faster than scan, Index lookup should be significantly faster than scan (+7 more) ### Community 58 - "Community 58" -Cohesion: 0.17 -Nodes (15): getGoogleSSO(), createAccessToken(), googleCallback(), googleLogin(), isSecureScheme(), issueSessionCookie(), login(), logout() (+7 more) +Cohesion: 0.15 +Nodes (16): getGoogleSSO(), googleCallback(), googleLogin(), isSecureScheme(), issueSessionCookie(), login(), logout(), register() (+8 more) ### Community 59 - "Community 59" Cohesion: 0.17 @@ -865,13 +865,17 @@ Nodes (20): Tests for main/utils/connectivity.py — covers all branches., test_ Cohesion: 0.09 Nodes (7): Cover all methods in session.py (lines 14-154)., Cover all methods in session.py (lines 14-154)., Cover all methods in session.py (lines 14-154)., Cover all methods in session.py (lines 14-154)., Cover all methods in session.py (lines 14-154)., Cover all methods in session.py (lines 14-154)., TestSessionManager +### Community 61 - "Community 61" +Cohesion: 0.13 +Nodes (4): PrometheusSession, User, TestPrometheusSessionModel, TestUserModel + ### Community 62 - "Community 62" 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.26 -Nodes (3): Shared query pipeline for historical and fundamental endpoints., sanitizeNanValues(), ResponseCache +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 ### Community 64 - "Community 64" Cohesion: 0.06 @@ -886,12 +890,12 @@ Cohesion: 0.1 Nodes (19): 1. Explore Agent — Prometheus Architecture, 2. MySQL Vector Storage (Researcher), 3. Memory Patterns (Researcher), A. Vector Embedding Integration, B. Pandas-First Vector Cache, C. Search Upgrade, code:python (class MemoryCache:), code:python (def searchMemories(cls, db, userId, query, embedding=None, l) (+11 more) ### Community 67 - "Community 67" -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) +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.13 -Nodes (18): 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., Cover sendMessage and streamMessage in agent.py. (+10 more) +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) ### Community 69 - "Community 69" Cohesion: 0.22 @@ -906,12 +910,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.14 +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.16 -Nodes (7): _parse_date(), parseDate(), parseDateEnd(), parseDateRange(), parseDateStart(), TestParseDateRange, TestParseDateRange +Cohesion: 0.19 +Nodes (3): parseDateRange(), TestParseDateRange, TestParseDateRange ### Community 74 - "Community 74" Cohesion: 0.11 @@ -939,7 +943,7 @@ Nodes (44): cn(), AlertDialogAction(), AlertDialogCancel(), AlertDialogContent() ### Community 80 - "Community 80" Cohesion: 0.1 -Nodes (20): buildSummary(), charCount(), countTokens(), dedup(), extractDecisions(), extractMetrics(), extractSnapshots(), extractTickers() (+12 more) +Nodes (22): buildSummary(), charCount(), countTokens(), dedup(), extractDecisions(), extractMetrics(), extractSnapshots(), extractTickers() (+14 more) ### Community 81 - "Community 81" Cohesion: 0.17 @@ -947,23 +951,23 @@ Nodes (12): getLiveCotation(), Get real-time price quotation for a single Brazil ### Community 82 - "Community 82" Cohesion: 0.16 -Nodes (14): 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. (+6 more) +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) ### 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.1 -Nodes (18): chat(), chat_stream(), create_memory(), createMemory(), createSession(), downloadWorkspaceFile(), _forward(), getHistory() (+10 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 Nodes (16): AddDividendDialog(), fmtBRL(), AddLotDialog(), HoldingSearchBox(), matchHoldings(), assertDividendTotal(), assertNotFuture(), assertTicker() (+8 more) ### Community 86 - "Community 86" -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) +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 87 - "Community 87" Cohesion: 0.1 @@ -990,8 +994,8 @@ Cohesion: 0.09 Nodes (21): aliases, components, hooks, lib, ui, utils, iconLibrary, menuAccent (+13 more) ### Community 93 - "Community 93" -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) +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) ### Community 94 - "Community 94" Cohesion: 0.12 @@ -1014,28 +1018,32 @@ 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.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) +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) ### 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_get_state_no_state_returns_error(), test_tool_has_gemini_safe_signature(), TestStateToolFunctions +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) ### Community 101 - "Community 101" -Cohesion: 0.15 -Nodes (6): Fetch live prices for B3 tickers via yfinance. B3 tickers must match, StocksQueryManager, 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., Regression: queryFundamental must not mutate the shared cache TIME column. +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 102 - "Community 102" Cohesion: 0.12 -Nodes (10): BaseSettings, BaseMansaSettings, DiscordSettings, MysqlSettings, PrometheusSettings, ScraperSettings, StocksApiSettings, UserSettings (+2 more) +Nodes (11): BaseSettings, BaseMansaSettings, DiscordSettings, MysqlSettings, OrunmilaSettings, PrometheusSettings, ScraperSettings, StocksApiSettings (+3 more) ### Community 103 - "Community 103" 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.07 -Nodes (26): Covers lines 114-115: session ownership check fails., Covers lines 114-115: session ownership check fails., Covers lines 114-115: session ownership check fails., Covers lines 120-121: session ownership check fails., Covers lines 114-115: session ownership check fails., Covers lines 126-136: DELETE /user/sessions/{sessionId}., Covers lines 126-136: DELETE /user/sessions/{sessionId}., Covers lines 126, 131, 135-136. (+18 more) +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) + +### 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) ### Community 106 - "Community 106" Cohesion: 0.22 @@ -1062,16 +1070,16 @@ 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.06 -Nodes (23): _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 77-132., 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. (+15 more) +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" Cohesion: 0.15 Nodes (7): write_file returns False when host write fails (e.g. invalid path chars)., read_file reads from host filesystem., write_file writes to host filesystem., list_files lists host filesystem entries., list_files returns empty for missing directory., read_file raises FileNotFoundError for missing file., TestSandboxManager ### Community 114 - "Community 114" -Cohesion: 0.29 -Nodes (6): Covers line 67: HTTPException raised by verifyAccessToken is re-raised., Covers line 67: extractTokenPayload re-raises HTTPException from verifyAccessTok, Covers line 67: HTTPException raised by verifyAccessToken is re-raised., Covers line 67: HTTPException raised by verifyAccessToken is re-raised., Covers line 67: HTTPException raised by verifyAccessToken is re-raised., Covers line 67: HTTPException raised by verifyAccessToken is re-raised. +Cohesion: 0.17 +Nodes (12): Covers line 67: extractTokenPayload re-raises HTTPException from verifyAccessTok, Covers line 67: extractTokenPayload re-raises HTTPException from verifyAccessTok, Covers line 67: HTTPException raised by verifyAccessToken is re-raised., Covers line 67: extractTokenPayload re-raises HTTPException from verifyAccessTok, Covers line 67: extractTokenPayload re-raises HTTPException from verifyAccessTok, Covers line 67: HTTPException raised by verifyAccessToken is re-raised., Covers line 67: HTTPException raised by verifyAccessToken is re-raised., Covers line 67: extractTokenPayload re-raises HTTPException from verifyAccessTok (+4 more) ### Community 115 - "Community 115" Cohesion: 0.17 @@ -1094,16 +1102,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.14 -Nodes (23): _make_auth_client(), Tests to cover uncovered lines across controllers, UserManager, and auth util., Return (client, app) with auth + user routers and mocked getSession., test_callback_existing_user(), test_callback_generic_exception(), test_callback_new_user(), test_callback_no_user_info(), test_callback_with_state_redirect() (+15 more) +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) ### 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.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) +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) ### Community 123 - "Community 123" Cohesion: 0.17 @@ -1113,13 +1121,9 @@ Nodes (12): Appendix A: Codebase Findings, code:block6 (D:\Repositories\server\) 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 125 - "Community 125" -Cohesion: 0.13 -Nodes (3): PrometheusSession, createSession(), TestPrometheusSessionModel - ### Community 126 - "Community 126" -Cohesion: 0.2 -Nodes (14): benchOnce(), main(), _fulltext_search(), fullTextSearch(), minMax(), scoreCandidates(), scoreRecency(), scoreRow() (+6 more) +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 127 - "Community 127" Cohesion: 0.2 @@ -1134,8 +1138,8 @@ 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.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.24 +Nodes (8): create_memory(), createMemory(), _downloadModel(), embed(), getEmbeddingModel(), executeMemoryTool(), initialize(), OrunmilaService ### Community 131 - "Community 131" Cohesion: 0.11 @@ -1157,13 +1161,9 @@ Nodes (11): code:yaml (volumes:), code:bash (git add config.py docker-compose.ym Cohesion: 0.11 Nodes (4): cache(), Tests for ResultCache., TestColumnValidator, TestResultCache -### Community 136 - "Community 136" -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 137 - "Community 137" -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.17 +Nodes (21): countMemories(), deleteMemory(), extract(), findSimilarKey(), fullTextSearch(), getClient(), getMatrix(), getMemoryLimit() (+13 more) ### Community 138 - "Community 138" Cohesion: 0.18 @@ -1174,8 +1174,8 @@ 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.11 -Nodes (28): Base, PrometheusMemory, PrometheusMemory, MemoryManager, PrometheusMemory, All memory operations. Stateless class methods., PrometheusService, TestDifferentKeysNoMerge (+20 more) +Cohesion: 0.04 +Nodes (51): Base, OrunmilaMemory, PrometheusMemory, PrometheusMemory, MemoryManager, PrometheusMemory, All memory operations. Stateless class methods., PrometheusService (+43 more) ### Community 141 - "Community 141" Cohesion: 0.24 @@ -1206,7 +1206,7 @@ Cohesion: 0.23 Nodes (3): categorizeColumns(), TestCategorizeColumns, TestCategorizeColumns ### Community 149 - "Community 149" -Cohesion: 0.19 +Cohesion: 0.18 Nodes (5): createSession(), getSessionById(), parseDeviceFields(), revokeSession(), validateSession() ### Community 151 - "Community 151" @@ -1253,6 +1253,10 @@ Nodes (17): §2 Service/Business Separation — MVC 4/10 (Historical layering sc 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) + ### Community 163 - "Community 163" Cohesion: 0.22 Nodes (8): code:bash (# Build and start), code:env (#), code:bash (curl http://localhost:3200/health), Environment Setup, Health Check, License, Mansa Server, Run with Docker @@ -1278,8 +1282,8 @@ Cohesion: 0.4 Nodes (4): compilerOptions, baseUrl, paths, @/* ### Community 169 - "Community 169" -Cohesion: 0.18 -Nodes (11): 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 (+3 more) +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) ### Community 170 - "Community 170" Cohesion: 0.25 @@ -1326,8 +1330,8 @@ 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.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.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 184 - "Community 184" Cohesion: 0.11 @@ -1342,8 +1346,8 @@ Cohesion: 0.29 Nodes (6): DEVELOPER:, PREMIUM:, Prometheus, STOCKS_API, USER:, User structure defined by string roles: ### Community 188 - "Community 188" -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) +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) ### Community 189 - "Community 189" Cohesion: 0.36 @@ -1366,8 +1370,8 @@ Cohesion: 0.33 Nodes (6): normalizer, clean_text, handle_chinese_chars, lowercase, strip_accents, type ### Community 194 - "Community 194" -Cohesion: 0.29 -Nodes (5): buildClient(), connect(), ensureFastmcp(), MCPClientPool, _parseServers() +Cohesion: 0.38 +Nodes (9): compactCotations(), compactRow(), compactValue(), compressResponse(), fixHeaders(), getAbbr(), getNest(), toColumnar() (+1 more) ### Community 195 - "Community 195" Cohesion: 0.33 @@ -1378,8 +1382,8 @@ Cohesion: 0.33 Nodes (5): cls_token, mask_token, pad_token, sep_token, unk_token ### Community 197 - "Community 197" -Cohesion: 0.1 -Nodes (15): generateKey(), getHistorical(), JSONBytesResponse, 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, Sends pre-serialized JSON bytes without re-encoding (cache-friendly)., Get year-based historical financial data for Brazilian B3 stocks. Returns (+7 more) +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) ### Community 198 - "Community 198" Cohesion: 0.33 @@ -1422,8 +1426,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.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.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) ### Community 209 - "Community 209" Cohesion: 0.33 @@ -1446,8 +1450,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.2 -Nodes (14): Store a value in state. Marks state as changed for context injection., compactCotations(), compactRow(), compactValue(), compressResponse(), fixHeaders(), getAbbr(), getNest() (+6 more) +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) ### Community 216 - "Community 216" Cohesion: 0.29 @@ -1518,8 +1522,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.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.27 +Nodes (16): OrunmilaSandbox, create(), delete_file(), destroy(), execute(), getClient(), getOrCreate(), hostPath() (+8 more) ### Community 236 - "Community 236" Cohesion: 0.5 @@ -1566,8 +1570,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.17 -Nodes (6): 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.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() ### Community 252 - "Community 252" Cohesion: 0.5 @@ -1586,8 +1590,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.38 -Nodes (9): compactCotations(), compactRow(), compactValue(), compressResponse(), fixHeaders(), getAbbr(), getNest(), toColumnar() (+1 more) +Cohesion: 0.21 +Nodes (6): buildSystemPrompt(), getClient(), Orunmila, persistEvent(), OrunmilaCompactor, newTokenCache() ### Community 258 - "Community 258" Cohesion: 0.67 @@ -1610,8 +1614,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.18 -Nodes (6): System prompt should include state context when provided., System prompt should not include state section when empty., State section should appear after memories section., All state entries should appear in the prompt., System prompt should work without state parameter., TestBuildSystemPromptState +Cohesion: 0.26 +Nodes (13): buildSummary(), countTokens(), dedup(), extractDecisions(), extractMetrics(), extractSnapshots(), extractTickers(), extractToolCalls() (+5 more) ### Community 476 - "Community 476" Cohesion: 0.22 @@ -1637,6 +1641,10 @@ Nodes (4): code:python (def test_extract_temporal_info():), code:python (# main/ Cohesion: 0.5 Nodes (4): code:python (def test_session_scoped_memory(db_session, sample_user):), code:python (# Add to main/models/memory.py), code:bash (git add main/models/memory.py main/app/prometheus/memory.py ), Task 8: Session Scoping +### Community 482 - "Community 482" +Cohesion: 0.11 +Nodes (4): FastAPI, Tests for inline pagination params (used in user + prometheus controllers)., TestPaginationParams, PaginationParams + ### Community 483 - "Community 483" Cohesion: 0.5 Nodes (4): code:python (def test_consolidation_preserves_decisions():), code:python (# Add to main/app/prometheus/summarizer.py), code:bash (git add main/app/prometheus/summarizer.py tests/test_consoli), Task 9: Memory Consolidation @@ -1654,52 +1662,48 @@ Cohesion: 0.23 Nodes (6): CHART_COLORS, PortfolioBarsCard(), PortfolioPieCard(), tooltipStyle, groupHistoryByMonth(), monthKey() ### Community 487 - "Community 487" -Cohesion: 0.16 +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) -### Community 488 - "Community 488" -Cohesion: 0.32 -Nodes (4): memoryMaintenance(), _create(), After 10 cycles, preference (0.99^10) > context (0.90^10)., TestTypeAwareDecay - ### Community 489 - "Community 489" Cohesion: 0.6 Nodes (4): hammer_measured(), main(), Fire n requests with c concurrent workers, measuring ttfb + total per request., stats() ### Community 490 - "Community 490" Cohesion: 0.22 -Nodes (8): API Endpoints, code:env (PROMETHEUS_ENABLED=TRUE), code:bash (python run.py), code:mermaid (graph TD), License, Orunmila, Usage, Workflow +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.25 -Nodes (4): Authentication System, Google OAuth, JWT Authentication, TestSessionExpiryConfig +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 ### Community 493 - "Community 493" -Cohesion: 0.07 -Nodes (28): 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. (+20 more) +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.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() +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 497 - "Community 497" -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.23 +Nodes (6): chat_stream(), downloadWorkspaceFile(), getHistory(), resumeChatStream(), updateSessionTitle(), verifySessionOwnsership() ### Community 498 - "Community 498" -Cohesion: 0.05 -Nodes (53): AuthenticationManager, IntFlag, MemoryCandidate, 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. (+45 more) +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) ### 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.22 -Nodes (4): authenticateUser(), createUserAccount(), FastAPI, PaginationParams +Cohesion: 0.13 +Nodes (21): generateKey(), createKey(), createStoredApiKey(), hashApiKey(), initVerifyClient(), isValidStoredKey(), _serviceToken(), verifyAPIKey() (+13 more) ### Community 501 - "Community 501" Cohesion: 0.22 @@ -1733,41 +1737,41 @@ Nodes (5): Disputed (already litigated — needs your ruling to proceed), Held o Cohesion: 0.6 Nodes (3): bench(), main(), stats() +### Community 512 - "Community 512" +Cohesion: 0.47 +Nodes (3): TestCleanup, cleanup(), Close the main thread's session at interpreter shutdown. + ### 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.06 -Nodes (26): 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., Decay happens first, then archive check with new scores. (+18 more) +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) ### Community 519 - "Community 519" Cohesion: 0.57 Nodes (6): addRole(), addRoleToUser(), getCurrentUser(), getRolesList(), hasRole(), toDict() ### Community 520 - "Community 520" -Cohesion: 0.15 -Nodes (10): replaceNan handles direct float NaN values (line 34)., pd.NA is not a string, so lambda returns it unchanged., 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)., pd.NA is not a string, so lambda returns it unchanged., pd.NA is not a string, so lambda returns it unchanged. (+2 more) +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.22 -Nodes (8): 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. - -### Community 522 - "Community 522" -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.33 +Nodes (3): buildClient(), connect(), MCPClientPool ### Community 523 - "Community 523" -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) +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() ### Community 524 - "Community 524" -Cohesion: 0.12 -Nodes (16): Covers line 16: empty password raises ValueError., Covers line 16: empty password raises ValueError., Covers line 16: empty password raises ValueError., 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. (+8 more) +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) ### Community 525 - "Community 525" 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() +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) ### Community 526 - "Community 526" Cohesion: 0.33 @@ -1777,6 +1781,10 @@ Nodes (7): buildKey(), clearAll(), getMatrix(), invalidateUser(), runAwait(), ma 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 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() @@ -1794,21 +1802,17 @@ 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.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) +Cohesion: 0.22 +Nodes (6): Store a memory about the user's preferences, analysis results, or feedback., save_memory(), batchCosineSimilarity(), contentHash(), embed(), normalizeRows() ### Community 536 - "Community 536" Cohesion: 0.19 -Nodes (9): Config, AuthenticationService, initialize(), initialize(), MCPDetectMiddleware, StocksAPIService, getApp(), runAll() (+1 more) +Nodes (8): AuthenticationService, initialize(), initialize(), MCPDetectMiddleware, StocksAPIService, getApp(), runAll(), ServiceManager ### 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 -### Community 539 - "Community 539" -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) - ### 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 @@ -1825,17 +1829,13 @@ 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.22 -Nodes (7): verifyAccessToken(), Covers lines 50-51: jwt.InvalidTokenError., Covers lines 50-51: jwt.InvalidTokenError., Covers lines 50-51: jwt.InvalidTokenError., Covers lines 50-51: jwt.InvalidTokenError., Covers lines 50-51: jwt.InvalidTokenError., Covers lines 50-51: jwt.InvalidTokenError. - ### 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): 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() +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 547 - "Community 547" Cohesion: 0.33 @@ -1890,20 +1890,24 @@ Cohesion: 0.5 Nodes (4): code:python (import pytest), code:python (import logging), code:bash (git add main/app/wallet/prices.py tests/test_wallet_prices.p), Task 6: Price client — one batched STOCKS_API fetch per snapshot ### Community 560 - "Community 560" -Cohesion: 0.09 -Nodes (20): 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. (+12 more) +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 562 - "Community 562" -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 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 563 - "Community 563" +### 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 +### 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 + ### Community 564 - "Community 564" -Cohesion: 0.47 -Nodes (3): TestCleanup, cleanup(), Close the main thread's session at interpreter shutdown. +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 565 - "Community 565" Cohesion: 0.33 @@ -1915,51 +1919,87 @@ Nodes (5): Non-JSON-dict/list string is left as-is., Non-JSON-dict/list string i ### Community 567 - "Community 567" Cohesion: 0.14 -Nodes (18): verifyAPIKey(), Tests to increase coverage for query.py, key.py, and cache.py in stocks_api., 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, test_cache_scheduler_starts_apscheduler(), test_cache_scheduler_starts_daemon_thread() (+10 more) +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): 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. +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 569 - "Community 569" -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.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 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., Low score but accessed recently → not archived., Low score but accessed recently → not archived., _create(), After 10 cycles, preference (0.99^10) > context (0.90^10)., TestTypeAwareDecay + +### Community 571 - "Community 571" Cohesion: 0.4 -Nodes (4): COTACAO 10Y PADRAO and COTACAO 10Y AJUSTADA belong to /cotations, not /fundament, COTACAO 10Y PADRAO and COTACAO 10Y AJUSTADA belong to /cotations, not /fundament, COTACAO 10Y PADRAO and COTACAO 10Y AJUSTADA belong to /cotations, not /fundament, COTACAO 10Y PADRAO and COTACAO 10Y AJUSTADA belong to /cotations, not /fundament +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 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 ### Community 573 - "Community 573" +Cohesion: 0.33 +Nodes (10): compactCotations(), compactRow(), compactValue(), compressResponse(), fixHeaders(), getAbbr(), getNest(), rebuildAbbrevs() (+2 more) + +### 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 + +### 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 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) + +### 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 + +### 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. + +### 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 + +### Community 595 - "Community 595" Cohesion: 0.67 Nodes (3): checkServiceConnection — success, not found, errors., checkServiceConnection — success, not found, errors., TestCheckServiceConnection -### Community 574 - "Community 574" +### Community 596 - "Community 596" Cohesion: 0.67 Nodes (3): checkMySqlConnection — success, errors, engine=None paths., checkMySqlConnection — success, errors, engine=None paths., TestCheckMySqlConnection -### Community 577 - "Community 577" -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 - ## Knowledge Gaps -- **3054 isolated node(s):** `$schema`, `style`, `rsc`, `tsx`, `config` (+3049 more) +- **3075 isolated node(s):** `$schema`, `style`, `rsc`, `tsx`, `config` (+3070 more) These have ≤1 connection - possible missing edges or undocumented components. -- **241 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. +- **231 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 93` to `Authentication Core`, `Frontend Components`, `Community 129`, `Data Models & Types`, `Community 131`, `Community 518`, `Community 135`, `Device Detection`, `Community 130`, `Community 138`, `Community 140`, `Community 527`, `Community 18`, `Community 147`, `Community 24`, `Community 25`, `Community 27`, `Community 29`, `Community 32`, `Community 33`, `Community 546`, `Community 40`, `Community 44`, `Community 45`, `Community 172`, `Community 49`, `Community 51`, `Community 567`, `Community 184`, `Community 186`, `Community 59`, `Community 188`, `Community 86`, `Community 475`, `Community 120`, `Community 477`, `Community 100`, `Community 102`, `Community 488`, `Community 491`, `Community 500`, `Community 502`, `Community 504`, `Community 251`, `Community 125`?** - _High betweenness centrality (0.081) - this node is a cross-community bridge._ -- **Why does `FastAPI` connect `Community 500` to `Community 129`, `Community 517`, `Community 519`, `Community 530`, `Community 18`, `Community 147`, `Community 536`, `Community 26`, `Community 541`, `Community 544`, `Community 33`, `Community 546`, `Community 34`, `Community 40`, `Community 45`, `Community 567`, `Community 58`, `Community 197`, `Community 71`, `Community 73`, `Community 84`, `Community 475`, `Community 120`, `Community 477`, `Community 498`, `Community 501`, `Community 504`?** - _High betweenness centrality (0.051) - this node is a cross-community bridge._ -- **Why does `UserManager` connect `Community 498` to `Prometheus Agent`, `Community 519`, `Community 136`, `Prometheus Memory`, `Community 524`, `Community 141`, `User Roles & Permissions`, `Community 16`, `Community 22`, `Community 37`, `Community 47`, `Community 560`, `Community 178`, `Community 565`, `Community 567`, `Community 58`, `Community 61`, `Community 68`, `Community 86`, `Community 221`, `Community 99`, `Community 231`, `Community 104`, `Community 107`, `Community 493`, `Community 112`, `Community 125`?** - _High betweenness centrality (0.033) - this node is a cross-community bridge._ +- **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`?** + _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._ - **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?** _`HarnessState` has 52 INFERRED edges - model-reasoned connections that need verification._ - **Are the 54 inferred relationships involving `UserManager` (e.g. with `AuthenticationManager` and `User`) actually correct?** _`UserManager` has 54 INFERRED edges - model-reasoned connections that need verification._ -- **Are the 49 inferred relationships involving `Permission` (e.g. with `MemoryCandidate` and `PrometheusMemory`) actually correct?** - _`Permission` has 49 INFERRED edges - model-reasoned connections that need verification._ \ No newline at end of file +- **Are the 52 inferred relationships involving `Permission` (e.g. with `MemoryCandidate` and `OrunmilaMemory`) actually correct?** + _`Permission` has 52 INFERRED edges - model-reasoned connections that need verification._ \ No newline at end of file diff --git a/graphify-out/graph.json b/graphify-out/graph.json index 54a2146b..ec799636 100644 --- a/graphify-out/graph.json +++ b/graphify-out/graph.json @@ -205,13 +205,13 @@ "norm_label": "stocksapisettings" }, { - "label": "PrometheusSettings", + "label": "OrunmilaSettings", "file_type": "code", "source_file": "config.py", "source_location": "L59", - "id": "server_config_prometheussettings", + "id": "server_config_orunmilasettings", "community": 102, - "norm_label": "prometheussettings" + "norm_label": "orunmilasettings" }, { "label": "ScraperSettings", @@ -237,7 +237,7 @@ "source_file": "config.py", "source_location": "L91", "id": "server_config_config", - "community": 536, + "community": 45, "norm_label": "config" }, { @@ -2190,7 +2190,7 @@ "source_file": "main/app/authentication/authentication.py", "source_location": "L1", "id": "main_app_authentication_authentication_py", - "community": 500, + "community": 68, "norm_label": "authentication.py" }, { @@ -2199,7 +2199,7 @@ "source_file": "main/app/authentication/authentication.py", "source_location": "L14", "id": "authentication_authentication_authenticationmanager", - "community": 498, + "community": 68, "norm_label": "authenticationmanager" }, { @@ -2208,7 +2208,7 @@ "source_file": "main/app/authentication/authentication.py", "source_location": "L16", "id": "authentication_authentication_createuseraccount", - "community": 500, + "community": 43, "norm_label": "createuseraccount()" }, { @@ -2217,7 +2217,7 @@ "source_file": "main/app/authentication/authentication.py", "source_location": "L51", "id": "authentication_authentication_authenticategoogleuser", - "community": 500, + "community": 68, "norm_label": "authenticategoogleuser()" }, { @@ -2226,9 +2226,18 @@ "source_file": "main/app/authentication/authentication.py", "source_location": "L65", "id": "authentication_authentication_authenticateuser", - "community": 500, + "community": 68, "norm_label": "authenticateuser()" }, + { + "label": "resolveUniqueUsername()", + "file_type": "code", + "source_file": "main/app/authentication/authentication.py", + "source_location": "L79", + "id": "authentication_authentication_resolveuniqueusername", + "community": 68, + "norm_label": "resolveuniqueusername()" + }, { "label": "constants.py", "file_type": "code", @@ -2238,6 +2247,24 @@ "community": 269, "norm_label": "constants.py" }, + { + "label": "introspect.py", + "file_type": "code", + "source_file": "main/app/authentication/introspect.py", + "source_location": "L1", + "id": "main_app_authentication_introspect_py", + "community": 482, + "norm_label": "introspect.py" + }, + { + "label": "introspectToken()", + "file_type": "code", + "source_file": "main/app/authentication/introspect.py", + "source_location": "L16", + "id": "authentication_introspect_introspecttoken", + "community": 524, + "norm_label": "introspecttoken()" + }, { "label": "session.py", "file_type": "code", @@ -2314,16 +2341,25 @@ "label": "revokeAllSessions()", "file_type": "code", "source_file": "main/app/authentication/session.py", - "source_location": "L104", + "source_location": "L109", "id": "authentication_session_revokeallsessions", "community": 149, "norm_label": "revokeallsessions()" }, + { + "label": "revokeAllExcept()", + "file_type": "code", + "source_file": "main/app/authentication/session.py", + "source_location": "L122", + "id": "authentication_session_revokeallexcept", + "community": 149, + "norm_label": "revokeallexcept()" + }, { "label": "updateLastActive()", "file_type": "code", "source_file": "main/app/authentication/session.py", - "source_location": "L117", + "source_location": "L132", "id": "authentication_session_updatelastactive", "community": 149, "norm_label": "updatelastactive()" @@ -2332,7 +2368,7 @@ "label": "validateSession()", "file_type": "code", "source_file": "main/app/authentication/session.py", - "source_location": "L127", + "source_location": "L142", "id": "authentication_session_validatesession", "community": 149, "norm_label": "validatesession()" @@ -2361,7 +2397,7 @@ "source_file": "main/app/authentication/util.py", "source_location": "L1", "id": "main_app_authentication_util_py", - "community": 544, + "community": 43, "norm_label": "util.py" }, { @@ -2388,7 +2424,7 @@ "source_file": "main/app/authentication/util.py", "source_location": "L31", "id": "authentication_util_createaccesstoken", - "community": 58, + "community": 43, "norm_label": "createaccesstoken()" }, { @@ -2397,7 +2433,7 @@ "source_file": "main/app/authentication/util.py", "source_location": "L44", "id": "authentication_util_verifyaccesstoken", - "community": 544, + "community": 524, "norm_label": "verifyaccesstoken()" }, { @@ -2412,496 +2448,496 @@ { "label": "agent.py", "file_type": "code", - "source_file": "main/app/prometheus/agent.py", + "source_file": "main/app/orunmila/agent.py", "source_location": "L1", - "id": "main_app_prometheus_agent_py", - "community": 116, + "id": "main_app_orunmila_agent_py", + "community": 256, "norm_label": "agent.py" }, { "label": "safeFilter()", "file_type": "code", - "source_file": "main/app/prometheus/agent.py", + "source_file": "main/app/orunmila/agent.py", "source_location": "L25", - "id": "prometheus_agent_safefilter", - "community": 116, + "id": "orunmila_agent_safefilter", + "community": 256, "norm_label": "safefilter()" }, { "label": "persistEvent()", "file_type": "code", - "source_file": "main/app/prometheus/agent.py", + "source_file": "main/app/orunmila/agent.py", "source_location": "L31", - "id": "prometheus_agent_persistevent", - "community": 116, + "id": "orunmila_agent_persistevent", + "community": 256, "norm_label": "persistevent()" }, { "label": "getClient()", "file_type": "code", - "source_file": "main/app/prometheus/agent.py", + "source_file": "main/app/orunmila/agent.py", "source_location": "L45", - "id": "prometheus_agent_getclient", - "community": 116, + "id": "orunmila_agent_getclient", + "community": 256, "norm_label": "getclient()" }, { - "label": "Prometheus", + "label": "Orunmila", "file_type": "code", - "source_file": "main/app/prometheus/agent.py", + "source_file": "main/app/orunmila/agent.py", "source_location": "L208", - "id": "prometheus_agent_prometheus", - "community": 116, - "norm_label": "prometheus" + "id": "orunmila_agent_orunmila", + "community": 256, + "norm_label": "orunmila" }, { "label": ".__init__()", "file_type": "code", - "source_file": "main/app/prometheus/agent.py", + "source_file": "main/app/orunmila/agent.py", "source_location": "L209", - "id": "prometheus_agent_prometheus_init", - "community": 116, + "id": "orunmila_agent_orunmila_init", + "community": 256, "norm_label": ".__init__()" }, { "label": "buildSystemPrompt()", "file_type": "code", - "source_file": "main/app/prometheus/agent.py", + "source_file": "main/app/orunmila/agent.py", "source_location": "L213", - "id": "prometheus_agent_buildsystemprompt", - "community": 116, + "id": "orunmila_agent_buildsystemprompt", + "community": 256, "norm_label": "buildsystemprompt()" }, { "label": ".makeChat()", "file_type": "code", - "source_file": "main/app/prometheus/agent.py", + "source_file": "main/app/orunmila/agent.py", "source_location": "L242", - "id": "prometheus_agent_prometheus_makechat", - "community": 116, + "id": "orunmila_agent_orunmila_makechat", + "community": 256, "norm_label": ".makechat()" }, { "label": ".streamMessage()", "file_type": "code", - "source_file": "main/app/prometheus/agent.py", + "source_file": "main/app/orunmila/agent.py", "source_location": "L253", - "id": "prometheus_agent_prometheus_streammessage", - "community": 116, + "id": "orunmila_agent_orunmila_streammessage", + "community": 256, "norm_label": ".streammessage()" }, { "label": "chat.py", "file_type": "code", - "source_file": "main/app/prometheus/chat.py", + "source_file": "main/app/orunmila/chat.py", "source_location": "L1", - "id": "main_app_prometheus_chat_py", - "community": 125, + "id": "main_app_orunmila_chat_py", + "community": 136, "norm_label": "chat.py" }, { - "label": "PrometheusChatManager", + "label": "OrunmilaChatManager", "file_type": "code", - "source_file": "main/app/prometheus/chat.py", + "source_file": "main/app/orunmila/chat.py", "source_location": "L13", - "id": "prometheus_chat_prometheuschatmanager", - "community": 68, - "norm_label": "prometheuschatmanager" + "id": "orunmila_chat_orunmilachatmanager", + "community": 45, + "norm_label": "orunmilachatmanager" }, { "label": "getUserSessions()", "file_type": "code", - "source_file": "main/app/prometheus/chat.py", + "source_file": "main/app/orunmila/chat.py", "source_location": "L15", - "id": "prometheus_chat_getusersessions", - "community": 125, + "id": "orunmila_chat_getusersessions", + "community": 136, "norm_label": "getusersessions()" }, { "label": "createSession()", "file_type": "code", - "source_file": "main/app/prometheus/chat.py", + "source_file": "main/app/orunmila/chat.py", "source_location": "L33", - "id": "prometheus_chat_createsession", - "community": 125, + "id": "orunmila_chat_createsession", + "community": 136, "norm_label": "createsession()" }, { "label": "updateSessionTitle()", "file_type": "code", - "source_file": "main/app/prometheus/chat.py", + "source_file": "main/app/orunmila/chat.py", "source_location": "L41", - "id": "prometheus_chat_updatesessiontitle", - "community": 125, + "id": "orunmila_chat_updatesessiontitle", + "community": 136, "norm_label": "updatesessiontitle()" }, { "label": "appendHistory()", "file_type": "code", - "source_file": "main/app/prometheus/chat.py", + "source_file": "main/app/orunmila/chat.py", "source_location": "L52", - "id": "prometheus_chat_appendhistory", - "community": 125, + "id": "orunmila_chat_appendhistory", + "community": 136, "norm_label": "appendhistory()" }, { "label": "getHistory()", "file_type": "code", - "source_file": "main/app/prometheus/chat.py", + "source_file": "main/app/orunmila/chat.py", "source_location": "L71", - "id": "prometheus_chat_gethistory", - "community": 125, + "id": "orunmila_chat_gethistory", + "community": 136, "norm_label": "gethistory()" }, { "label": "deleteSession()", "file_type": "code", - "source_file": "main/app/prometheus/chat.py", + "source_file": "main/app/orunmila/chat.py", "source_location": "L92", - "id": "prometheus_chat_deletesession", - "community": 125, + "id": "orunmila_chat_deletesession", + "community": 136, "norm_label": "deletesession()" }, { "label": "verifySessionOwnership()", "file_type": "code", - "source_file": "main/app/prometheus/chat.py", + "source_file": "main/app/orunmila/chat.py", "source_location": "L106", - "id": "prometheus_chat_verifysessionownership", - "community": 125, + "id": "orunmila_chat_verifysessionownership", + "community": 136, "norm_label": "verifysessionownership()" }, { "label": "compact.py", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L1", - "id": "main_app_prometheus_compact_py", - "community": 80, + "id": "main_app_orunmila_compact_py", + "community": 474, "norm_label": "compact.py" }, { "label": "getTokenizer()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L35", - "id": "prometheus_compact_gettokenizer", - "community": 80, + "id": "orunmila_compact_gettokenizer", + "community": 474, "norm_label": "gettokenizer()" }, { "label": "countTokens()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L47", - "id": "prometheus_compact_counttokens", - "community": 80, + "id": "orunmila_compact_counttokens", + "community": 474, "norm_label": "counttokens()" }, { "label": "getStocksFieldsUrl()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L64", - "id": "prometheus_compact_getstocksfieldsurl", - "community": 80, + "id": "orunmila_compact_getstocksfieldsurl", + "community": 474, "norm_label": "getstocksfieldsurl()" }, { "label": "isTransientFieldsError()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L68", - "id": "prometheus_compact_istransientfieldserror", - "community": 80, + "id": "orunmila_compact_istransientfieldserror", + "community": 474, "norm_label": "istransientfieldserror()" }, { "label": "fetchFieldsPayload()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L83", - "id": "prometheus_compact_fetchfieldspayload", - "community": 80, + "id": "orunmila_compact_fetchfieldspayload", + "community": 474, "norm_label": "fetchfieldspayload()" }, { "label": "loadFieldData()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L89", - "id": "prometheus_compact_loadfielddata", - "community": 80, + "id": "orunmila_compact_loadfielddata", + "community": 474, "norm_label": "loadfielddata()" }, { "label": "getMetricRegex()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L105", - "id": "prometheus_compact_getmetricregex", - "community": 80, + "id": "orunmila_compact_getmetricregex", + "community": 474, "norm_label": "getmetricregex()" }, { "label": "dedup()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L119", - "id": "prometheus_compact_dedup", - "community": 80, + "id": "orunmila_compact_dedup", + "community": 474, "norm_label": "dedup()" }, { "label": "extractTickers()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L123", - "id": "prometheus_compact_extracttickers", - "community": 80, + "id": "orunmila_compact_extracttickers", + "community": 474, "norm_label": "extracttickers()" }, { "label": "extractMetrics()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L127", - "id": "prometheus_compact_extractmetrics", - "community": 80, + "id": "orunmila_compact_extractmetrics", + "community": 474, "norm_label": "extractmetrics()" }, { "label": "extractDecisions()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L131", - "id": "prometheus_compact_extractdecisions", - "community": 80, + "id": "orunmila_compact_extractdecisions", + "community": 474, "norm_label": "extractdecisions()" }, { "label": "extractSnapshots()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L145", - "id": "prometheus_compact_extractsnapshots", - "community": 80, + "id": "orunmila_compact_extractsnapshots", + "community": 474, "norm_label": "extractsnapshots()" }, { "label": "extractToolCalls()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L158", - "id": "prometheus_compact_extracttoolcalls", - "community": 80, + "id": "orunmila_compact_extracttoolcalls", + "community": 474, "norm_label": "extracttoolcalls()" }, { "label": "buildSummary()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L174", - "id": "prometheus_compact_buildsummary", - "community": 80, + "id": "orunmila_compact_buildsummary", + "community": 474, "norm_label": "buildsummary()" }, { - "label": "PrometheusCompactor", + "label": "OrunmilaCompactor", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L195", - "id": "prometheus_compact_prometheuscompactor", - "community": 80, - "norm_label": "prometheuscompactor" + "id": "orunmila_compact_orunmilacompactor", + "community": 256, + "norm_label": "orunmilacompactor" }, { "label": ".shouldCompact()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L196", - "id": "prometheus_compact_prometheuscompactor_shouldcompact", - "community": 80, + "id": "orunmila_compact_orunmilacompactor_shouldcompact", + "community": 256, "norm_label": ".shouldcompact()" }, { "label": ".getCompactableChunk()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L213", - "id": "prometheus_compact_prometheuscompactor_getcompactablechunk", - "community": 80, + "id": "orunmila_compact_orunmilacompactor_getcompactablechunk", + "community": 256, "norm_label": ".getcompactablechunk()" }, { "label": ".extractEpisode()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L222", - "id": "prometheus_compact_prometheuscompactor_extractepisode", - "community": 80, + "id": "orunmila_compact_orunmilacompactor_extractepisode", + "community": 474, "norm_label": ".extractepisode()" }, { "label": ".consolidate()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L244", - "id": "prometheus_compact_prometheuscompactor_consolidate", - "community": 80, + "id": "orunmila_compact_orunmilacompactor_consolidate", + "community": 256, "norm_label": ".consolidate()" }, { "label": ".compact()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L271", - "id": "prometheus_compact_prometheuscompactor_compact", - "community": 80, + "id": "orunmila_compact_orunmilacompactor_compact", + "community": 256, "norm_label": ".compact()" }, { "label": ".getEpisodes()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L310", - "id": "prometheus_compact_prometheuscompactor_getepisodes", - "community": 80, + "id": "orunmila_compact_orunmilacompactor_getepisodes", + "community": 256, "norm_label": ".getepisodes()" }, { "label": "mcp.py", "file_type": "code", - "source_file": "main/app/prometheus/mcp.py", + "source_file": "main/app/orunmila/mcp.py", "source_location": "L1", - "id": "main_app_prometheus_mcp_py", - "community": 194, + "id": "main_app_orunmila_mcp_py", + "community": 521, "norm_label": "mcp.py" }, { "label": "buildClient()", "file_type": "code", - "source_file": "main/app/prometheus/mcp.py", + "source_file": "main/app/orunmila/mcp.py", "source_location": "L21", - "id": "prometheus_mcp_buildclient", - "community": 194, + "id": "orunmila_mcp_buildclient", + "community": 521, "norm_label": "buildclient()" }, { "label": "connect()", "file_type": "code", - "source_file": "main/app/prometheus/mcp.py", + "source_file": "main/app/orunmila/mcp.py", "source_location": "L29", - "id": "prometheus_mcp_connect", - "community": 194, + "id": "orunmila_mcp_connect", + "community": 521, "norm_label": "connect()" }, { "label": "MCPClientPool", "file_type": "code", - "source_file": "main/app/prometheus/mcp.py", + "source_file": "main/app/orunmila/mcp.py", "source_location": "L36", - "id": "prometheus_mcp_mcpclientpool", - "community": 194, + "id": "orunmila_mcp_mcpclientpool", + "community": 521, "norm_label": "mcpclientpool" }, { "label": ".__init__()", "file_type": "code", - "source_file": "main/app/prometheus/mcp.py", + "source_file": "main/app/orunmila/mcp.py", "source_location": "L37", - "id": "prometheus_mcp_mcpclientpool_init", - "community": 194, + "id": "orunmila_mcp_mcpclientpool_init", + "community": 521, "norm_label": ".__init__()" }, { "label": ".initialize()", "file_type": "code", - "source_file": "main/app/prometheus/mcp.py", + "source_file": "main/app/orunmila/mcp.py", "source_location": "L42", - "id": "prometheus_mcp_mcpclientpool_initialize", - "community": 194, + "id": "orunmila_mcp_mcpclientpool_initialize", + "community": 521, "norm_label": ".initialize()" }, { "label": ".getClients()", "file_type": "code", - "source_file": "main/app/prometheus/mcp.py", + "source_file": "main/app/orunmila/mcp.py", "source_location": "L56", - "id": "prometheus_mcp_mcpclientpool_getclients", - "community": 194, + "id": "orunmila_mcp_mcpclientpool_getclients", + "community": 521, "norm_label": ".getclients()" }, { "label": ".healthCheck()", "file_type": "code", - "source_file": "main/app/prometheus/mcp.py", + "source_file": "main/app/orunmila/mcp.py", "source_location": "L63", - "id": "prometheus_mcp_mcpclientpool_healthcheck", - "community": 194, + "id": "orunmila_mcp_mcpclientpool_healthcheck", + "community": 521, "norm_label": ".healthcheck()" }, { "label": ".reconnect()", "file_type": "code", - "source_file": "main/app/prometheus/mcp.py", + "source_file": "main/app/orunmila/mcp.py", "source_location": "L75", - "id": "prometheus_mcp_mcpclientpool_reconnect", - "community": 194, + "id": "orunmila_mcp_mcpclientpool_reconnect", + "community": 521, "norm_label": ".reconnect()" }, { "label": ".close()", "file_type": "code", - "source_file": "main/app/prometheus/mcp.py", + "source_file": "main/app/orunmila/mcp.py", "source_location": "L90", - "id": "prometheus_mcp_mcpclientpool_close", - "community": 194, + "id": "orunmila_mcp_mcpclientpool_close", + "community": 521, "norm_label": ".close()" }, { "label": "memory.py", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L1", - "id": "main_app_prometheus_memory_py", - "community": 53, + "id": "main_app_orunmila_memory_py", + "community": 137, "norm_label": "memory.py" }, { "label": "getMatrix()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L35", - "id": "prometheus_memory_getmatrix", - "community": 53, + "id": "orunmila_memory_getmatrix", + "community": 137, "norm_label": "getmatrix()" }, { "label": "invalidateUser()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L53", - "id": "prometheus_memory_invalidateuser", - "community": 53, + "id": "orunmila_memory_invalidateuser", + "community": 137, "norm_label": "invalidateuser()" }, { "label": "clearAll()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L57", - "id": "prometheus_memory_clearall", - "community": 53, + "id": "orunmila_memory_clearall", + "community": 137, "norm_label": "clearall()" }, { "label": "MemoryCandidate", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L64", - "id": "prometheus_memory_memorycandidate", - "community": 498, + "id": "orunmila_memory_memorycandidate", + "community": 45, "norm_label": "memorycandidate" }, { @@ -2910,673 +2946,673 @@ "source_file": "", "source_location": "", "id": "basemodel", - "community": 33, + "community": 45, "norm_label": "basemodel" }, { "label": "newTokenCache()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L90", - "id": "prometheus_memory_newtokencache", - "community": 116, + "id": "orunmila_memory_newtokencache", + "community": 256, "norm_label": "newtokencache()" }, { "label": "getClient()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L97", - "id": "prometheus_memory_getclient", - "community": 53, + "id": "orunmila_memory_getclient", + "community": 137, "norm_label": "getclient()" }, { "label": "minMax()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L104", - "id": "prometheus_memory_minmax", - "community": 126, + "id": "orunmila_memory_minmax", + "community": 137, "norm_label": "minmax()" }, { "label": "normalizeKey()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L113", - "id": "prometheus_memory_normalizekey", - "community": 53, + "id": "orunmila_memory_normalizekey", + "community": 137, "norm_label": "normalizekey()" }, { "label": "findSimilarKey()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L120", - "id": "prometheus_memory_findsimilarkey", - "community": 53, + "id": "orunmila_memory_findsimilarkey", + "community": 137, "norm_label": "findsimilarkey()" }, { "label": "scoreRow()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L140", - "id": "prometheus_memory_scorerow", - "community": 126, + "id": "orunmila_memory_scorerow", + "community": 137, "norm_label": "scorerow()" }, { "label": "scoreRecency()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L152", - "id": "prometheus_memory_scorerecency", - "community": 126, + "id": "orunmila_memory_scorerecency", + "community": 137, "norm_label": "scorerecency()" }, { "label": "scoreCandidates()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L162", - "id": "prometheus_memory_scorecandidates", - "community": 126, + "id": "orunmila_memory_scorecandidates", + "community": 137, "norm_label": "scorecandidates()" }, { "label": "sumTokens()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L179", - "id": "prometheus_memory_sumtokens", - "community": 53, + "id": "orunmila_memory_sumtokens", + "community": 137, "norm_label": "sumtokens()" }, { - "label": "PrometheusMemory", + "label": "OrunmilaMemory", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L194", - "id": "prometheus_memory_prometheusmemory", - "community": 140, - "norm_label": "prometheusmemory" + "id": "orunmila_memory_orunmilamemory", + "community": 45, + "norm_label": "orunmilamemory" }, { "label": "getMemoryLimit()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L196", - "id": "prometheus_memory_getmemorylimit", - "community": 53, + "id": "orunmila_memory_getmemorylimit", + "community": 137, "norm_label": "getmemorylimit()" }, { "label": "countMemories()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L202", - "id": "prometheus_memory_countmemories", - "community": 53, + "id": "orunmila_memory_countmemories", + "community": 137, "norm_label": "countmemories()" }, { "label": "touch()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L211", - "id": "prometheus_memory_touch", - "community": 53, + "id": "orunmila_memory_touch", + "community": 137, "norm_label": "touch()" }, { "label": "upsertMemory()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L222", - "id": "prometheus_memory_upsertmemory", - "community": 53, + "id": "orunmila_memory_upsertmemory", + "community": 137, "norm_label": "upsertmemory()" }, { "label": "search()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L286", - "id": "prometheus_memory_search", - "community": 126, + "id": "orunmila_memory_search", + "community": 137, "norm_label": "search()" }, { "label": "fullTextSearch()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L349", - "id": "prometheus_memory_fulltextsearch", - "community": 126, + "id": "orunmila_memory_fulltextsearch", + "community": 137, "norm_label": "fulltextsearch()" }, { "label": "getUserMemories()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L407", - "id": "prometheus_memory_getusermemories", - "community": 27, + "id": "orunmila_memory_getusermemories", + "community": 137, "norm_label": "getusermemories()" }, { "label": "deleteMemory()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L432", - "id": "prometheus_memory_deletememory", - "community": 53, + "id": "orunmila_memory_deletememory", + "community": 137, "norm_label": "deletememory()" }, { "label": "extract()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L450", - "id": "prometheus_memory_extract", - "community": 53, + "id": "orunmila_memory_extract", + "community": 137, "norm_label": "extract()" }, { "label": "sandbox.py", "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", + "source_file": "main/app/orunmila/sandbox.py", "source_location": "L1", - "id": "main_app_prometheus_sandbox_py", - "community": 69, + "id": "main_app_orunmila_sandbox_py", + "community": 234, "norm_label": "sandbox.py" }, { "label": "lockFor()", "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", + "source_file": "main/app/orunmila/sandbox.py", "source_location": "L18", - "id": "prometheus_sandbox_lockfor", - "community": 69, + "id": "orunmila_sandbox_lockfor", + "community": 234, "norm_label": "lockfor()" }, { "label": "getClient()", "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", + "source_file": "main/app/orunmila/sandbox.py", "source_location": "L24", - "id": "prometheus_sandbox_getclient", - "community": 69, + "id": "orunmila_sandbox_getclient", + "community": 234, "norm_label": "getclient()" }, { "label": "hostPath()", "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", + "source_file": "main/app/orunmila/sandbox.py", "source_location": "L32", - "id": "prometheus_sandbox_hostpath", - "community": 69, + "id": "orunmila_sandbox_hostpath", + "community": 234, "norm_label": "hostpath()" }, { "label": "sandboxPath()", "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", + "source_file": "main/app/orunmila/sandbox.py", "source_location": "L46", - "id": "prometheus_sandbox_sandboxpath", - "community": 69, + "id": "orunmila_sandbox_sandboxpath", + "community": 234, "norm_label": "sandboxpath()" }, { "label": "SandboxManager", "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", + "source_file": "main/app/orunmila/sandbox.py", "source_location": "L51", - "id": "prometheus_sandbox_sandboxmanager", - "community": 2, + "id": "orunmila_sandbox_sandboxmanager", + "community": 234, "norm_label": "sandboxmanager" }, { "label": "create()", "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", + "source_file": "main/app/orunmila/sandbox.py", "source_location": "L53", - "id": "prometheus_sandbox_create", - "community": 69, + "id": "orunmila_sandbox_create", + "community": 234, "norm_label": "create()" }, { "label": "destroy()", "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", + "source_file": "main/app/orunmila/sandbox.py", "source_location": "L69", - "id": "prometheus_sandbox_destroy", - "community": 69, + "id": "orunmila_sandbox_destroy", + "community": 234, "norm_label": "destroy()" }, { "label": "getOrCreate()", "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", + "source_file": "main/app/orunmila/sandbox.py", "source_location": "L81", - "id": "prometheus_sandbox_getorcreate", - "community": 69, + "id": "orunmila_sandbox_getorcreate", + "community": 234, "norm_label": "getorcreate()" }, { "label": "execute()", "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", + "source_file": "main/app/orunmila/sandbox.py", "source_location": "L128", - "id": "prometheus_sandbox_execute", - "community": 69, + "id": "orunmila_sandbox_execute", + "community": 234, "norm_label": "execute()" }, { "label": "read_file()", "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", + "source_file": "main/app/orunmila/sandbox.py", "source_location": "L164", - "id": "prometheus_sandbox_read_file", - "community": 69, + "id": "orunmila_sandbox_read_file", + "community": 234, "norm_label": "read_file()" }, { "label": "write_file()", "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", + "source_file": "main/app/orunmila/sandbox.py", "source_location": "L171", - "id": "prometheus_sandbox_write_file", - "community": 69, + "id": "orunmila_sandbox_write_file", + "community": 234, "norm_label": "write_file()" }, { "label": "list_files()", "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", + "source_file": "main/app/orunmila/sandbox.py", "source_location": "L185", - "id": "prometheus_sandbox_list_files", - "community": 69, + "id": "orunmila_sandbox_list_files", + "community": 234, "norm_label": "list_files()" }, { "label": "delete_file()", "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", + "source_file": "main/app/orunmila/sandbox.py", "source_location": "L193", - "id": "prometheus_sandbox_delete_file", - "community": 69, + "id": "orunmila_sandbox_delete_file", + "community": 234, "norm_label": "delete_file()" }, { "label": "syncToSandbox()", "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", + "source_file": "main/app/orunmila/sandbox.py", "source_location": "L210", - "id": "prometheus_sandbox_synctosandbox", - "community": 69, + "id": "orunmila_sandbox_synctosandbox", + "community": 234, "norm_label": "synctosandbox()" }, { "label": "syncFromSandbox()", "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", + "source_file": "main/app/orunmila/sandbox.py", "source_location": "L229", - "id": "prometheus_sandbox_syncfromsandbox", - "community": 69, + "id": "orunmila_sandbox_syncfromsandbox", + "community": 234, "norm_label": "syncfromsandbox()" }, { "label": "stream_bus.py", "file_type": "code", - "source_file": "main/app/prometheus/stream_bus.py", + "source_file": "main/app/orunmila/stream_bus.py", "source_location": "L1", - "id": "main_app_prometheus_stream_bus_py", - "community": 210, + "id": "main_app_orunmila_stream_bus_py", + "community": 488, "norm_label": "stream_bus.py" }, { "label": "StreamChannel", "file_type": "code", - "source_file": "main/app/prometheus/stream_bus.py", + "source_file": "main/app/orunmila/stream_bus.py", "source_location": "L14", - "id": "prometheus_stream_bus_streamchannel", - "community": 210, + "id": "orunmila_stream_bus_streamchannel", + "community": 488, "norm_label": "streamchannel" }, { "label": ".__init__()", "file_type": "code", - "source_file": "main/app/prometheus/stream_bus.py", + "source_file": "main/app/orunmila/stream_bus.py", "source_location": "L15", - "id": "prometheus_stream_bus_streamchannel_init", - "community": 210, + "id": "orunmila_stream_bus_streamchannel_init", + "community": 488, "norm_label": ".__init__()" }, { "label": ".publish()", "file_type": "code", - "source_file": "main/app/prometheus/stream_bus.py", + "source_file": "main/app/orunmila/stream_bus.py", "source_location": "L21", - "id": "prometheus_stream_bus_streamchannel_publish", - "community": 210, + "id": "orunmila_stream_bus_streamchannel_publish", + "community": 488, "norm_label": ".publish()" }, { "label": "StreamBus", "file_type": "code", - "source_file": "main/app/prometheus/stream_bus.py", + "source_file": "main/app/orunmila/stream_bus.py", "source_location": "L32", - "id": "prometheus_stream_bus_streambus", - "community": 210, + "id": "orunmila_stream_bus_streambus", + "community": 488, "norm_label": "streambus" }, { "label": ".__init__()", "file_type": "code", - "source_file": "main/app/prometheus/stream_bus.py", + "source_file": "main/app/orunmila/stream_bus.py", "source_location": "L33", - "id": "prometheus_stream_bus_streambus_init", - "community": 210, + "id": "orunmila_stream_bus_streambus_init", + "community": 488, "norm_label": ".__init__()" }, { "label": ".getOrCreate()", "file_type": "code", - "source_file": "main/app/prometheus/stream_bus.py", + "source_file": "main/app/orunmila/stream_bus.py", "source_location": "L36", - "id": "prometheus_stream_bus_streambus_getorcreate", - "community": 210, + "id": "orunmila_stream_bus_streambus_getorcreate", + "community": 488, "norm_label": ".getorcreate()" }, { "label": ".publish()", "file_type": "code", - "source_file": "main/app/prometheus/stream_bus.py", + "source_file": "main/app/orunmila/stream_bus.py", "source_location": "L43", - "id": "prometheus_stream_bus_streambus_publish", - "community": 210, + "id": "orunmila_stream_bus_streambus_publish", + "community": 488, "norm_label": ".publish()" }, { "label": ".subscribe()", "file_type": "code", - "source_file": "main/app/prometheus/stream_bus.py", + "source_file": "main/app/orunmila/stream_bus.py", "source_location": "L46", - "id": "prometheus_stream_bus_streambus_subscribe", - "community": 210, + "id": "orunmila_stream_bus_streambus_subscribe", + "community": 488, "norm_label": ".subscribe()" }, { "label": ".unsubscribe()", "file_type": "code", - "source_file": "main/app/prometheus/stream_bus.py", + "source_file": "main/app/orunmila/stream_bus.py", "source_location": "L59", - "id": "prometheus_stream_bus_streambus_unsubscribe", - "community": 210, + "id": "orunmila_stream_bus_streambus_unsubscribe", + "community": 488, "norm_label": ".unsubscribe()" }, { "label": ".startRun()", "file_type": "code", - "source_file": "main/app/prometheus/stream_bus.py", + "source_file": "main/app/orunmila/stream_bus.py", "source_location": "L64", - "id": "prometheus_stream_bus_streambus_startrun", - "community": 210, + "id": "orunmila_stream_bus_streambus_startrun", + "community": 488, "norm_label": ".startrun()" }, { "label": ".eventGenerator()", "file_type": "code", - "source_file": "main/app/prometheus/stream_bus.py", + "source_file": "main/app/orunmila/stream_bus.py", "source_location": "L86", - "id": "prometheus_stream_bus_streambus_eventgenerator", - "community": 210, + "id": "orunmila_stream_bus_streambus_eventgenerator", + "community": 488, "norm_label": ".eventgenerator()" }, { "label": ".streamResponse()", "file_type": "code", - "source_file": "main/app/prometheus/stream_bus.py", + "source_file": "main/app/orunmila/stream_bus.py", "source_location": "L109", - "id": "prometheus_stream_bus_streambus_streamresponse", - "community": 210, + "id": "orunmila_stream_bus_streambus_streamresponse", + "community": 488, "norm_label": ".streamresponse()" }, { "label": ".forward()", "file_type": "code", - "source_file": "main/app/prometheus/stream_bus.py", + "source_file": "main/app/orunmila/stream_bus.py", "source_location": "L112", - "id": "prometheus_stream_bus_streambus_forward", - "community": 210, + "id": "orunmila_stream_bus_streambus_forward", + "community": 488, "norm_label": ".forward()" }, { "label": "tools.py", "file_type": "code", - "source_file": "main/app/prometheus/tools.py", + "source_file": "main/app/orunmila/tools.py", "source_location": "L1", - "id": "main_app_prometheus_tools_py", + "id": "main_app_orunmila_tools_py", "community": 495, "norm_label": "tools.py" }, { "label": "search_memory()", "file_type": "code", - "source_file": "main/app/prometheus/tools.py", + "source_file": "main/app/orunmila/tools.py", "source_location": "L20", - "id": "prometheus_tools_search_memory", - "community": 152, + "id": "orunmila_tools_search_memory", + "community": 495, "norm_label": "search_memory()" }, { "label": "save_memory()", "file_type": "code", - "source_file": "main/app/prometheus/tools.py", + "source_file": "main/app/orunmila/tools.py", "source_location": "L51", - "id": "prometheus_tools_save_memory", - "community": 208, + "id": "orunmila_tools_save_memory", + "community": 535, "norm_label": "save_memory()" }, { "label": "execute_code()", "file_type": "code", - "source_file": "main/app/prometheus/tools.py", + "source_file": "main/app/orunmila/tools.py", "source_location": "L93", - "id": "prometheus_tools_execute_code", - "community": 487, + "id": "orunmila_tools_execute_code", + "community": 495, "norm_label": "execute_code()" }, { "label": "read_file()", "file_type": "code", - "source_file": "main/app/prometheus/tools.py", + "source_file": "main/app/orunmila/tools.py", "source_location": "L114", - "id": "prometheus_tools_read_file", - "community": 525, + "id": "orunmila_tools_read_file", + "community": 495, "norm_label": "read_file()" }, { "label": "write_file()", "file_type": "code", - "source_file": "main/app/prometheus/tools.py", + "source_file": "main/app/orunmila/tools.py", "source_location": "L128", - "id": "prometheus_tools_write_file", - "community": 523, + "id": "orunmila_tools_write_file", + "community": 495, "norm_label": "write_file()" }, { "label": "list_files()", "file_type": "code", - "source_file": "main/app/prometheus/tools.py", + "source_file": "main/app/orunmila/tools.py", "source_location": "L144", - "id": "prometheus_tools_list_files", - "community": 523, + "id": "orunmila_tools_list_files", + "community": 495, "norm_label": "list_files()" }, { "label": "serve_file()", "file_type": "code", - "source_file": "main/app/prometheus/tools.py", + "source_file": "main/app/orunmila/tools.py", "source_location": "L157", - "id": "prometheus_tools_serve_file", - "community": 523, + "id": "orunmila_tools_serve_file", + "community": 495, "norm_label": "serve_file()" }, { "label": "dispatchToolCall()", "file_type": "code", - "source_file": "main/app/prometheus/tools.py", + "source_file": "main/app/orunmila/tools.py", "source_location": "L190", - "id": "prometheus_tools_dispatchtoolcall", - "community": 49, + "id": "orunmila_tools_dispatchtoolcall", + "community": 495, "norm_label": "dispatchtoolcall()" }, { "label": "Search user's saved memories, preferences, and past analysis context. Use", "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", + "source_file": "main/app/orunmila/tools.py", "source_location": "L21", - "id": "prometheus_tools_rationale_21", - "community": 152, + "id": "orunmila_tools_rationale_21", + "community": 495, "norm_label": "search user's saved memories, preferences, and past analysis context. use" }, { "label": "Store a memory about the user's preferences, analysis results, or feedback.", "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", + "source_file": "main/app/orunmila/tools.py", "source_location": "L52", - "id": "prometheus_tools_rationale_52", - "community": 208, + "id": "orunmila_tools_rationale_52", + "community": 535, "norm_label": "store a memory about the user's preferences, analysis results, or feedback." }, { "label": "Execute Python code in an isolated sandbox. Use for quantitative analysis,", "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", + "source_file": "main/app/orunmila/tools.py", "source_location": "L94", - "id": "prometheus_tools_rationale_94", - "community": 487, + "id": "orunmila_tools_rationale_94", + "community": 495, "norm_label": "execute python code in an isolated sandbox. use for quantitative analysis," }, { "label": "Read a file from the workspace. Args: path: Path to the file (e.", "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", + "source_file": "main/app/orunmila/tools.py", "source_location": "L115", - "id": "prometheus_tools_rationale_115", - "community": 525, + "id": "orunmila_tools_rationale_115", + "community": 495, "norm_label": "read a file from the workspace. args: path: path to the file (e." }, { "label": "Write a file to the workspace. Use this to save data files (CSV, JSON, scri", "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", + "source_file": "main/app/orunmila/tools.py", "source_location": "L129", - "id": "prometheus_tools_rationale_129", - "community": 523, + "id": "orunmila_tools_rationale_129", + "community": 495, "norm_label": "write a file to the workspace. use this to save data files (csv, json, scri" }, { "label": "List files in the workspace directory. Args: path: Directory pat", "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", + "source_file": "main/app/orunmila/tools.py", "source_location": "L145", - "id": "prometheus_tools_rationale_145", - "community": 523, + "id": "orunmila_tools_rationale_145", + "community": 495, "norm_label": "list files in the workspace directory. args: path: directory pat" }, { "label": "Get a download link for a workspace file to share with the user. Use this", "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", + "source_file": "main/app/orunmila/tools.py", "source_location": "L158", - "id": "prometheus_tools_rationale_158", - "community": 523, + "id": "orunmila_tools_rationale_158", + "community": 495, "norm_label": "get a download link for a workspace file to share with the user. use this" }, { "label": "vector.py", "file_type": "code", - "source_file": "main/app/prometheus/vector.py", + "source_file": "main/app/orunmila/vector.py", "source_location": "L1", - "id": "main_app_prometheus_vector_py", - "community": 126, + "id": "main_app_orunmila_vector_py", + "community": 535, "norm_label": "vector.py" }, { "label": "normalizeRows()", "file_type": "code", - "source_file": "main/app/prometheus/vector.py", + "source_file": "main/app/orunmila/vector.py", "source_location": "L10", - "id": "prometheus_vector_normalizerows", - "community": 126, + "id": "orunmila_vector_normalizerows", + "community": 535, "norm_label": "normalizerows()" }, { "label": "embed()", "file_type": "code", - "source_file": "main/app/prometheus/vector.py", + "source_file": "main/app/orunmila/vector.py", "source_location": "L15", - "id": "prometheus_vector_embed", - "community": 126, + "id": "orunmila_vector_embed", + "community": 535, "norm_label": "embed()" }, { "label": "decodeEmbeddings()", "file_type": "code", - "source_file": "main/app/prometheus/vector.py", + "source_file": "main/app/orunmila/vector.py", "source_location": "L19", - "id": "prometheus_vector_decodeembeddings", - "community": 126, + "id": "orunmila_vector_decodeembeddings", + "community": 535, "norm_label": "decodeembeddings()" }, { "label": "batchCosineSimilarity()", "file_type": "code", - "source_file": "main/app/prometheus/vector.py", + "source_file": "main/app/orunmila/vector.py", "source_location": "L41", - "id": "prometheus_vector_batchcosinesimilarity", - "community": 126, + "id": "orunmila_vector_batchcosinesimilarity", + "community": 535, "norm_label": "batchcosinesimilarity()" }, { "label": "contentHash()", "file_type": "code", - "source_file": "main/app/prometheus/vector.py", + "source_file": "main/app/orunmila/vector.py", "source_location": "L51", - "id": "prometheus_vector_contenthash", - "community": 53, + "id": "orunmila_vector_contenthash", + "community": 535, "norm_label": "contenthash()" }, { "label": "toVectorString()", "file_type": "code", - "source_file": "main/app/prometheus/vector.py", + "source_file": "main/app/orunmila/vector.py", "source_location": "L55", - "id": "prometheus_vector_tovectorstring", - "community": 126, + "id": "orunmila_vector_tovectorstring", + "community": 535, "norm_label": "tovectorstring()" }, { "label": "fromVectorString()", "file_type": "code", - "source_file": "main/app/prometheus/vector.py", + "source_file": "main/app/orunmila/vector.py", "source_location": "L59", - "id": "prometheus_vector_fromvectorstring", - "community": 126, + "id": "orunmila_vector_fromvectorstring", + "community": 535, "norm_label": "fromvectorstring()" }, { "label": "getRelevanceScore()", "file_type": "code", - "source_file": "main/app/prometheus/vector.py", + "source_file": "main/app/orunmila/vector.py", "source_location": "L71", - "id": "prometheus_vector_getrelevancescore", - "community": 27, + "id": "orunmila_vector_getrelevancescore", + "community": 137, "norm_label": "getrelevancescore()" }, { @@ -3646,7 +3682,7 @@ "label": "historicalDividendYields()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L166", + "source_location": "L175", "id": "scraper_b3_scraper_historicaldividendyields", "community": 21, "norm_label": "historicaldividendyields()" @@ -3655,7 +3691,7 @@ "label": "historicalRevenue()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L194", + "source_location": "L203", "id": "scraper_b3_scraper_historicalrevenue", "community": 21, "norm_label": "historicalrevenue()" @@ -3664,7 +3700,7 @@ "label": "historicalCotationProfits()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L215", + "source_location": "L224", "id": "scraper_b3_scraper_historicalcotationprofits", "community": 21, "norm_label": "historicalcotationprofits()" @@ -3673,7 +3709,7 @@ "label": ".historicalCotationProfits_Oceans14()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L228", + "source_location": "L237", "id": "scraper_b3_scraper_b3scraper_historicalcotationprofits_oceans14", "community": 21, "norm_label": ".historicalcotationprofits_oceans14()" @@ -3682,7 +3718,7 @@ "label": "historicalCotations()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L241", + "source_location": "L250", "id": "scraper_b3_scraper_historicalcotations", "community": 21, "norm_label": "historicalcotations()" @@ -3691,7 +3727,7 @@ "label": "tagAlong()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L258", + "source_location": "L267", "id": "scraper_b3_scraper_tagalong", "community": 21, "norm_label": "tagalong()" @@ -3700,7 +3736,7 @@ "label": "stockNews()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L283", + "source_location": "L292", "id": "scraper_b3_scraper_stocknews", "community": 21, "norm_label": "stocknews()" @@ -3709,7 +3745,7 @@ "label": ".fundamentalIndicators()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L296", + "source_location": "L305", "id": "scraper_b3_scraper_b3scraper_fundamentalindicators", "community": 21, "norm_label": ".fundamentalindicators()" @@ -3718,7 +3754,7 @@ "label": ".processTicker()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L419", + "source_location": "L428", "id": "scraper_b3_scraper_b3scraper_processticker", "community": 21, "norm_label": ".processticker()" @@ -3727,7 +3763,7 @@ "label": ".scrapeStocks()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L450", + "source_location": "L459", "id": "scraper_b3_scraper_b3scraper_scrapestocks", "community": 21, "norm_label": ".scrapestocks()" @@ -3736,7 +3772,7 @@ "label": ".reorderColumns()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L497", + "source_location": "L506", "id": "scraper_b3_scraper_b3scraper_reordercolumns", "community": 21, "norm_label": ".reordercolumns()" @@ -3745,7 +3781,7 @@ "label": ".serializeComplexTypes()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L506", + "source_location": "L515", "id": "scraper_b3_scraper_b3scraper_serializecomplextypes", "community": 21, "norm_label": ".serializecomplextypes()" @@ -3754,7 +3790,7 @@ "label": ".exportJson()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L525", + "source_location": "L534", "id": "scraper_b3_scraper_b3scraper_exportjson", "community": 21, "norm_label": ".exportjson()" @@ -3763,7 +3799,7 @@ "label": ".exportMysql()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L533", + "source_location": "L542", "id": "scraper_b3_scraper_b3scraper_exportmysql", "community": 21, "norm_label": ".exportmysql()" @@ -3882,7 +3918,7 @@ "source_file": "main/app/stocks_api/cache.py", "source_location": "L217", "id": "stocks_api_cache_stockscachemanager_cachescheduler", - "community": 72, + "community": 82, "norm_label": ".cachescheduler()" }, { @@ -3909,7 +3945,7 @@ "source_file": "main/app/stocks_api/compress.py", "source_location": "L1", "id": "main_app_stocks_api_compress_py", - "community": 215, + "community": 194, "norm_label": "compress.py" }, { @@ -3918,7 +3954,7 @@ "source_file": "main/app/stocks_api/compress.py", "source_location": "L23", "id": "stocks_api_compress_getabbr", - "community": 215, + "community": 194, "norm_label": "getabbr()" }, { @@ -3927,7 +3963,7 @@ "source_file": "main/app/stocks_api/compress.py", "source_location": "L31", "id": "stocks_api_compress_getnest", - "community": 215, + "community": 194, "norm_label": "getnest()" }, { @@ -3945,7 +3981,7 @@ "source_file": "main/app/stocks_api/compress.py", "source_location": "L46", "id": "stocks_api_compress_compactvalue", - "community": 215, + "community": 194, "norm_label": "compactvalue()" }, { @@ -3954,7 +3990,7 @@ "source_file": "main/app/stocks_api/compress.py", "source_location": "L67", "id": "stocks_api_compress_compactrow", - "community": 215, + "community": 194, "norm_label": "compactrow()" }, { @@ -3963,7 +3999,7 @@ "source_file": "main/app/stocks_api/compress.py", "source_location": "L95", "id": "stocks_api_compress_compactcotations", - "community": 215, + "community": 194, "norm_label": "compactcotations()" }, { @@ -3972,7 +4008,7 @@ "source_file": "main/app/stocks_api/compress.py", "source_location": "L130", "id": "stocks_api_compress_compressresponse", - "community": 215, + "community": 194, "norm_label": "compressresponse()" }, { @@ -3981,16 +4017,43 @@ "source_file": "main/app/stocks_api/key.py", "source_location": "L1", "id": "main_app_stocks_api_key_py", - "community": 26, + "community": 500, "norm_label": "key.py" }, + { + "label": "hashApiKey()", + "file_type": "code", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L25", + "id": "stocks_api_key_hashapikey", + "community": 500, + "norm_label": "hashapikey()" + }, + { + "label": "createStoredApiKey()", + "file_type": "code", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L29", + "id": "stocks_api_key_createstoredapikey", + "community": 500, + "norm_label": "createstoredapikey()" + }, + { + "label": "isValidStoredKey()", + "file_type": "code", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L35", + "id": "stocks_api_key_isvalidstoredkey", + "community": 500, + "norm_label": "isvalidstoredkey()" + }, { "label": "verifyAPIKey()", "file_type": "code", "source_file": "main/app/stocks_api/key.py", - "source_location": "L17", + "source_location": "L48", "id": "stocks_api_key_verifyapikey", - "community": 567, + "community": 500, "norm_label": "verifyapikey()" }, { @@ -4152,7 +4215,7 @@ "source_file": "main/app/stocks_api/util.py", "source_location": "L1", "id": "main_app_stocks_api_util_py", - "community": 73, + "community": 215, "norm_label": "util.py" }, { @@ -4197,7 +4260,7 @@ "source_file": "main/app/stocks_api/util.py", "source_location": "L73", "id": "stocks_api_util_parsedate", - "community": 73, + "community": 215, "norm_label": "parsedate()" }, { @@ -4267,7 +4330,7 @@ "label": "isSecureScheme()", "file_type": "code", "source_file": "main/controller/authentication_controller.py", - "source_location": "L28", + "source_location": "L35", "id": "controller_authentication_controller_issecurescheme", "community": 58, "norm_label": "issecurescheme()" @@ -4276,7 +4339,7 @@ "label": "resolveCookieDomain()", "file_type": "code", "source_file": "main/controller/authentication_controller.py", - "source_location": "L40", + "source_location": "L47", "id": "controller_authentication_controller_resolvecookiedomain", "community": 58, "norm_label": "resolvecookiedomain()" @@ -4285,7 +4348,7 @@ "label": "issueSessionCookie()", "file_type": "code", "source_file": "main/controller/authentication_controller.py", - "source_location": "L45", + "source_location": "L52", "id": "controller_authentication_controller_issuesessioncookie", "community": 58, "norm_label": "issuesessioncookie()" @@ -4294,7 +4357,7 @@ "label": "health()", "file_type": "code", "source_file": "main/controller/authentication_controller.py", - "source_location": "L66", + "source_location": "L73", "id": "controller_authentication_controller_health", "community": 58, "norm_label": "health()" @@ -4303,7 +4366,7 @@ "label": "register()", "file_type": "code", "source_file": "main/controller/authentication_controller.py", - "source_location": "L72", + "source_location": "L79", "id": "controller_authentication_controller_register", "community": 58, "norm_label": "register()" @@ -4312,7 +4375,7 @@ "label": "login()", "file_type": "code", "source_file": "main/controller/authentication_controller.py", - "source_location": "L102", + "source_location": "L111", "id": "controller_authentication_controller_login", "community": 58, "norm_label": "login()" @@ -4321,16 +4384,25 @@ "label": "logout()", "file_type": "code", "source_file": "main/controller/authentication_controller.py", - "source_location": "L119", + "source_location": "L129", "id": "controller_authentication_controller_logout", "community": 58, "norm_label": "logout()" }, + { + "label": "introspect()", + "file_type": "code", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L165", + "id": "controller_authentication_controller_introspect", + "community": 524, + "norm_label": "introspect()" + }, { "label": "googleLogin()", "file_type": "code", "source_file": "main/controller/authentication_controller.py", - "source_location": "L155", + "source_location": "L190", "id": "controller_authentication_controller_googlelogin", "community": 58, "norm_label": "googlelogin()" @@ -4339,117 +4411,117 @@ "label": "googleCallback()", "file_type": "code", "source_file": "main/controller/authentication_controller.py", - "source_location": "L173", + "source_location": "L206", "id": "controller_authentication_controller_googlecallback", "community": 58, "norm_label": "googlecallback()" }, { - "label": "prometheus_controller.py", + "label": "orunmila_controller.py", "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", + "source_file": "main/controller/orunmila_controller.py", "source_location": "L1", - "id": "main_controller_prometheus_controller_py", - "community": 84, - "norm_label": "prometheus_controller.py" + "id": "main_controller_orunmila_controller_py", + "community": 497, + "norm_label": "orunmila_controller.py" }, { "label": "verifySessionOwnsership()", "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", + "source_file": "main/controller/orunmila_controller.py", "source_location": "L26", - "id": "controller_prometheus_controller_verifysessionownsership", - "community": 84, + "id": "controller_orunmila_controller_verifysessionownsership", + "community": 497, "norm_label": "verifysessionownsership()" }, { "label": "health()", "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", + "source_file": "main/controller/orunmila_controller.py", "source_location": "L32", - "id": "controller_prometheus_controller_health", - "community": 84, + "id": "controller_orunmila_controller_health", + "community": 497, "norm_label": "health()" }, { "label": "getSessions()", "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", + "source_file": "main/controller/orunmila_controller.py", "source_location": "L37", - "id": "controller_prometheus_controller_getsessions", - "community": 84, + "id": "controller_orunmila_controller_getsessions", + "community": 497, "norm_label": "getsessions()" }, { "label": "updateSessionTitle()", "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", + "source_file": "main/controller/orunmila_controller.py", "source_location": "L56", - "id": "controller_prometheus_controller_updatesessiontitle", - "community": 84, + "id": "controller_orunmila_controller_updatesessiontitle", + "community": 497, "norm_label": "updatesessiontitle()" }, { "label": "getHistory()", "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", + "source_file": "main/controller/orunmila_controller.py", "source_location": "L71", - "id": "controller_prometheus_controller_gethistory", - "community": 84, + "id": "controller_orunmila_controller_gethistory", + "community": 497, "norm_label": "gethistory()" }, { "label": "deleteSession()", "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", + "source_file": "main/controller/orunmila_controller.py", "source_location": "L90", - "id": "controller_prometheus_controller_deletesession", - "community": 84, + "id": "controller_orunmila_controller_deletesession", + "community": 497, "norm_label": "deletesession()" }, { "label": "chat_stream()", "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", + "source_file": "main/controller/orunmila_controller.py", "source_location": "L103", - "id": "controller_prometheus_controller_chat_stream", - "community": 84, + "id": "controller_orunmila_controller_chat_stream", + "community": 497, "norm_label": "chat_stream()" }, { "label": "resumeChatStream()", "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", + "source_file": "main/controller/orunmila_controller.py", "source_location": "L154", - "id": "controller_prometheus_controller_resumechatstream", - "community": 84, + "id": "controller_orunmila_controller_resumechatstream", + "community": 497, "norm_label": "resumechatstream()" }, { "label": "deleteWorkspaceFile()", "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", + "source_file": "main/controller/orunmila_controller.py", "source_location": "L166", - "id": "controller_prometheus_controller_deleteworkspacefile", - "community": 84, + "id": "controller_orunmila_controller_deleteworkspacefile", + "community": 497, "norm_label": "deleteworkspacefile()" }, { "label": "downloadWorkspaceFile()", "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", + "source_file": "main/controller/orunmila_controller.py", "source_location": "L179", - "id": "controller_prometheus_controller_downloadworkspacefile", - "community": 84, + "id": "controller_orunmila_controller_downloadworkspacefile", + "community": 497, "norm_label": "downloadworkspacefile()" }, { "label": "listWorkspaceFiles()", "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", + "source_file": "main/controller/orunmila_controller.py", "source_location": "L195", - "id": "controller_prometheus_controller_listworkspacefiles", - "community": 84, + "id": "controller_orunmila_controller_listworkspacefiles", + "community": 497, "norm_label": "listworkspacefiles()" }, { @@ -4458,7 +4530,7 @@ "source_file": "main/controller/stocksapi_controller.py", "source_location": "L1", "id": "main_controller_stocksapi_controller_py", - "community": 197, + "community": 169, "norm_label": "stocksapi_controller.py" }, { @@ -4467,7 +4539,7 @@ "source_file": "main/controller/stocksapi_controller.py", "source_location": "L23", "id": "controller_stocksapi_controller_health", - "community": 197, + "community": 169, "norm_label": "health()" }, { @@ -4660,13 +4732,13 @@ "norm_label": "memory.py" }, { - "label": "PrometheusMemory", + "label": "OrunmilaMemory", "file_type": "code", "source_file": "main/models/memory.py", "source_location": "L8", - "id": "models_memory_prometheusmemory", + "id": "models_memory_orunmilamemory", "community": 140, - "norm_label": "prometheusmemory" + "norm_label": "orunmilamemory" }, { "label": "Base", @@ -4678,22 +4750,22 @@ "norm_label": "base" }, { - "label": "prometheus.py", + "label": "orunmila.py", "file_type": "code", - "source_file": "main/models/prometheus.py", + "source_file": "main/models/orunmila.py", "source_location": "L1", - "id": "main_models_prometheus_py", - "community": 125, - "norm_label": "prometheus.py" + "id": "main_models_orunmila_py", + "community": 136, + "norm_label": "orunmila.py" }, { - "label": "PrometheusSession", + "label": "OrunmilaSession", "file_type": "code", - "source_file": "main/models/prometheus.py", + "source_file": "main/models/orunmila.py", "source_location": "L7", - "id": "models_prometheus_prometheussession", - "community": 125, - "norm_label": "prometheussession" + "id": "models_orunmila_orunmilasession", + "community": 136, + "norm_label": "orunmilasession" }, { "label": "sandbox.py", @@ -4705,13 +4777,13 @@ "norm_label": "sandbox.py" }, { - "label": "PrometheusSandbox", + "label": "OrunmilaSandbox", "file_type": "code", "source_file": "main/models/sandbox.py", "source_location": "L5", - "id": "models_sandbox_prometheussandbox", - "community": 4, - "norm_label": "prometheussandbox" + "id": "models_sandbox_orunmilasandbox", + "community": 234, + "norm_label": "orunmilasandbox" }, { "label": "stocksapi_key.py", @@ -4849,39 +4921,39 @@ "norm_label": "initialize()" }, { - "label": "prometheus_service.py", + "label": "orunmila_service.py", "file_type": "code", - "source_file": "main/service/prometheus_service.py", + "source_file": "main/service/orunmila_service.py", "source_location": "L1", - "id": "main_service_prometheus_service_py", - "community": 72, - "norm_label": "prometheus_service.py" + "id": "main_service_orunmila_service_py", + "community": 130, + "norm_label": "orunmila_service.py" }, { "label": "memoryMaintenance()", "file_type": "code", - "source_file": "main/service/prometheus_service.py", + "source_file": "main/service/orunmila_service.py", "source_location": "L23", - "id": "service_prometheus_service_memorymaintenance", - "community": 488, + "id": "service_orunmila_service_memorymaintenance", + "community": 137, "norm_label": "memorymaintenance()" }, { - "label": "PrometheusService", + "label": "OrunmilaService", "file_type": "code", - "source_file": "main/service/prometheus_service.py", + "source_file": "main/service/orunmila_service.py", "source_location": "L65", - "id": "service_prometheus_service_prometheusservice", - "community": 140, - "norm_label": "prometheusservice" + "id": "service_orunmila_service_orunmilaservice", + "community": 130, + "norm_label": "orunmilaservice" }, { "label": "initialize()", "file_type": "code", - "source_file": "main/service/prometheus_service.py", + "source_file": "main/service/orunmila_service.py", "source_location": "L67", - "id": "service_prometheus_service_initialize", - "community": 72, + "id": "service_orunmila_service_initialize", + "community": 130, "norm_label": "initialize()" }, { @@ -4890,7 +4962,7 @@ "source_file": "main/service/scraper_service.py", "source_location": "L1", "id": "main_service_scraper_service_py", - "community": 563, + "community": 562, "norm_label": "scraper_service.py" }, { @@ -4899,7 +4971,7 @@ "source_file": "main/service/scraper_service.py", "source_location": "L13", "id": "service_scraper_service_runscraper", - "community": 563, + "community": 562, "norm_label": "runscraper()" }, { @@ -4908,7 +4980,7 @@ "source_file": "main/service/scraper_service.py", "source_location": "L23", "id": "service_scraper_service_registerscraperjobs", - "community": 563, + "community": 562, "norm_label": "registerscraperjobs()" }, { @@ -4917,7 +4989,7 @@ "source_file": "main/service/scraper_service.py", "source_location": "L49", "id": "service_scraper_service_scraperservice", - "community": 563, + "community": 562, "norm_label": "scraperservice" }, { @@ -4926,7 +4998,7 @@ "source_file": "main/service/scraper_service.py", "source_location": "L51", "id": "service_scraper_service_initialize", - "community": 563, + "community": 562, "norm_label": "initialize()" }, { @@ -5133,7 +5205,7 @@ "source_file": "main/utils/http_session.py", "source_location": "L1", "id": "main_utils_http_session_py", - "community": 137, + "community": 580, "norm_label": "http_session.py" }, { @@ -5142,7 +5214,7 @@ "source_file": "main/utils/http_session.py", "source_location": "L8", "id": "utils_http_session_getsession", - "community": 137, + "community": 580, "norm_label": "getsession()" }, { @@ -5259,7 +5331,7 @@ "source_file": "main/utils/roles.py", "source_location": "L1", "id": "main_utils_roles_py", - "community": 498, + "community": 491, "norm_label": "roles.py" }, { @@ -5268,7 +5340,7 @@ "source_file": "main/utils/roles.py", "source_location": "L5", "id": "utils_roles_permission", - "community": 498, + "community": 45, "norm_label": "permission" }, { @@ -5277,7 +5349,7 @@ "source_file": "", "source_location": "", "id": "intflag", - "community": 498, + "community": 45, "norm_label": "intflag" }, { @@ -5295,7 +5367,7 @@ "source_file": "main/utils/roles.py", "source_location": "L17", "id": "utils_roles_roles", - "community": 498, + "community": 45, "norm_label": "roles" }, { @@ -5304,7 +5376,7 @@ "source_file": "main/utils/roles.py", "source_location": "L29", "id": "utils_roles_checkaccess", - "community": 498, + "community": 491, "norm_label": "checkaccess()" }, { @@ -5313,7 +5385,7 @@ "source_file": "main/utils/roles.py", "source_location": "L42", "id": "utils_roles_requirepermission", - "community": 498, + "community": 491, "norm_label": "requirepermission()" }, { @@ -5376,7 +5448,7 @@ "source_file": "main/utils/models/loader.py", "source_location": "L1", "id": "main_utils_models_loader_py", - "community": 84, + "community": 130, "norm_label": "loader.py" }, { @@ -5385,7 +5457,7 @@ "source_file": "main/utils/models/loader.py", "source_location": "L12", "id": "models_loader_getembeddingmodel", - "community": 84, + "community": 130, "norm_label": "getembeddingmodel()" }, { @@ -5865,6 +5937,42 @@ "community": 531, "norm_label": "composite index for session gc sweep (m2) revision id: f1a2b3c4d5e6 revises:" }, + { + "label": "f7a8b9c0d1e2_rename_prometheus_to_orunmila.py", + "file_type": "code", + "source_file": "migrations/versions/f7a8b9c0d1e2_rename_prometheus_to_orunmila.py", + "source_location": "L1", + "id": "migrations_versions_f7a8b9c0d1e2_rename_prometheus_to_orunmila_py", + "community": 581, + "norm_label": "f7a8b9c0d1e2_rename_prometheus_to_orunmila.py" + }, + { + "label": "upgrade()", + "file_type": "code", + "source_file": "migrations/versions/f7a8b9c0d1e2_rename_prometheus_to_orunmila.py", + "source_location": "L25", + "id": "versions_f7a8b9c0d1e2_rename_prometheus_to_orunmila_upgrade", + "community": 581, + "norm_label": "upgrade()" + }, + { + "label": "downgrade()", + "file_type": "code", + "source_file": "migrations/versions/f7a8b9c0d1e2_rename_prometheus_to_orunmila.py", + "source_location": "L43", + "id": "versions_f7a8b9c0d1e2_rename_prometheus_to_orunmila_downgrade", + "community": 581, + "norm_label": "downgrade()" + }, + { + "label": "rename prometheus tables to orunmila Revision ID: f7a8b9c0d1e2 Revises: f1a2b3c", + "file_type": "rationale", + "source_file": "migrations/versions/f7a8b9c0d1e2_rename_prometheus_to_orunmila.py", + "source_location": "L1", + "id": "versions_f7a8b9c0d1e2_rename_prometheus_to_orunmila_rationale_1", + "community": 581, + "norm_label": "rename prometheus tables to orunmila revision id: f7a8b9c0d1e2 revises: f1a2b3c" + }, { "label": "AGENTS.md", "file_type": "document", @@ -6297,6 +6405,168 @@ "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", @@ -6319,25 +6589,25 @@ "label": "Usage", "file_type": "document", "source_file": "docs/orunmila.md", - "source_location": "L7", + "source_location": "L5", "id": "docs_orunmila_usage", "community": 490, "norm_label": "usage" }, { - "label": "code:env (PROMETHEUS_ENABLED=TRUE)", + "label": "code:env (ORUNMILA_ENABLED=TRUE)", "file_type": "document", "source_file": "docs/orunmila.md", - "source_location": "L11", + "source_location": "L9", "id": "docs_orunmila_codeblock_1", "community": 490, - "norm_label": "code:env (prometheus_enabled=true)" + "norm_label": "code:env (orunmila_enabled=true)" }, { "label": "code:bash (python run.py)", "file_type": "document", "source_file": "docs/orunmila.md", - "source_location": "L56", + "source_location": "L54", "id": "docs_orunmila_codeblock_2", "community": 490, "norm_label": "code:bash (python run.py)" @@ -6346,7 +6616,7 @@ "label": "Workflow", "file_type": "document", "source_file": "docs/orunmila.md", - "source_location": "L60", + "source_location": "L58", "id": "docs_orunmila_workflow", "community": 490, "norm_label": "workflow" @@ -6355,7 +6625,7 @@ "label": "API Endpoints", "file_type": "document", "source_file": "docs/orunmila.md", - "source_location": "L74", + "source_location": "L72", "id": "docs_orunmila_api_endpoints", "community": 490, "norm_label": "api endpoints" @@ -6364,7 +6634,7 @@ "label": "License", "file_type": "document", "source_file": "docs/orunmila.md", - "source_location": "L89", + "source_location": "L87", "id": "docs_orunmila_license", "community": 490, "norm_label": "license" @@ -8598,7 +8868,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": 569, + "community": 572, "norm_label": "task 2: alembic migration for wallet tables" }, { @@ -8607,7 +8877,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": 569, + "community": 572, "norm_label": "code:python (\"\"\"add wallet_holdings and wallet_lots tables)" }, { @@ -8616,7 +8886,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": 569, + "community": 572, "norm_label": "code:python (import main.models.wallet)" }, { @@ -8625,7 +8895,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": 569, + "community": 572, "norm_label": "code:bash (git add migrations/versions/wallet_tables_20260904_add_walle)" }, { @@ -9619,41893 +9889,43333 @@ "norm_label": "spec self-review" }, { - "label": "Upgrade to Developer Starter", - "file_type": "document", - "source_file": "docs/user.md", - "source_location": "L41", - "community": 23, - "norm_label": "upgrade to developer starter", - "id": "docs_user_upgrade_to_developer_starter" - }, - { - "label": "Upgrade to Developer Enterprise", - "file_type": "document", - "source_file": "docs/user.md", - "source_location": "L47", - "community": 23, - "norm_label": "upgrade to developer enterprise", - "id": "docs_user_upgrade_to_developer_enterprise" + "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": "code:bash (curl -X DELETE -H \"Authorization: Bearer \" http://loc)", - "file_type": "document", - "source_file": "docs/user.md", - "source_location": "L116", - "community": 23, - "norm_label": "code:bash (curl -x delete -h \"authorization: bearer \" http://loc)", - "id": "docs_user_codeblock_11" + "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": "code:json ({)", - "file_type": "document", - "source_file": "docs/user.md", - "source_location": "L120", - "community": 23, - "norm_label": "code:json ({)", - "id": "docs_user_codeblock_12" + "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": "code:bash (curl -X POST -H \"Authorization: Bearer \" http://local)", - "file_type": "document", - "source_file": "docs/user.md", - "source_location": "L129", - "community": 23, - "norm_label": "code:bash (curl -x post -h \"authorization: bearer \" http://local)", - "id": "docs_user_codeblock_13" + "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": "code:json ({)", - "file_type": "document", - "source_file": "docs/user.md", - "source_location": "L133", - "community": 23, - "norm_label": "code:json ({)", - "id": "docs_user_codeblock_14" + "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": "Permission System", - "file_type": "document", - "source_file": "docs/user.md", - "source_location": "L140", - "community": 23, - "norm_label": "permission system", - "id": "docs_user_permission_system" + "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": "code:python (Permission.VIEW_PROFILE # View own profile)", - "file_type": "document", - "source_file": "docs/user.md", - "source_location": "L144", - "community": 23, - "norm_label": "code:python (permission.view_profile # view own profile)", - "id": "docs_user_codeblock_15" + "label": "_serviceToken()", + "file_type": "code", + "source_file": "main/utils/roles.py", + "source_location": "L63", + "community": 491, + "norm_label": "_servicetoken()", + "id": "utils_roles_servicetoken" }, { - "label": "code:mermaid (graph TD)", - "file_type": "document", - "source_file": "docs/user.md", - "source_location": "L158", - "community": 23, - "norm_label": "code:mermaid (graph td)", - "id": "docs_user_codeblock_16" + "label": "_introspectUrl()", + "file_type": "code", + "source_file": "main/utils/roles.py", + "source_location": "L69", + "community": 491, + "norm_label": "_introspecturl()", + "id": "utils_roles_introspecturl" }, { - "label": "Usage", - "file_type": "document", - "source_file": "docs/authentication.md", - "source_location": "L9", - "community": 41, - "norm_label": "usage", - "id": "docs_authentication_usage" + "label": "_extractCredential()", + "file_type": "code", + "source_file": "main/utils/roles.py", + "source_location": "L75", + "community": 491, + "norm_label": "_extractcredential()", + "id": "utils_roles_extractcredential" }, { - "label": "Profile (Me)", - "file_type": "document", - "source_file": "docs/authentication.md", - "source_location": "L77", - "community": 41, - "norm_label": "profile (me)", - "id": "docs_authentication_profile_me" + "label": "introspectUser()", + "file_type": "code", + "source_file": "main/utils/roles.py", + "source_location": "L92", + "community": 491, + "norm_label": "introspectuser()", + "id": "utils_roles_introspectuser" }, { - "label": "code:bash (# Redirect your browser to:)", - "file_type": "document", - "source_file": "docs/authentication.md", - "source_location": "L98", - "community": 41, - "norm_label": "code:bash (# redirect your browser to:)", - "id": "docs_authentication_codeblock_7" + "label": "PrometheusSettings", + "file_type": "code", + "source_file": "config.py", + "source_location": "L59", + "community": 102, + "norm_label": "prometheussettings", + "id": "server_config_prometheussettings" }, { - "label": "code:bash (GET http://localhost:3200/auth/google)", - "file_type": "document", - "source_file": "docs/authentication.md", - "source_location": "L104", - "community": 41, - "norm_label": "code:bash (get http://localhost:3200/auth/google)", - "id": "docs_authentication_codeblock_8" + "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": "Google Callback", - "file_type": "document", - "source_file": "docs/authentication.md", - "source_location": "L108", - "community": 41, - "norm_label": "google callback", - "id": "docs_authentication_google_callback" + "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": "Device Detection", - "file_type": "document", - "source_file": "docs/authentication.md", - "source_location": "L130", - "community": 41, - "norm_label": "device detection", - "id": "docs_authentication_device_detection" + "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": "Session Management", - "file_type": "document", - "source_file": "docs/authentication.md", - "source_location": "L144", - "community": 41, - "norm_label": "session management", - "id": "docs_authentication_session_management" + "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": "code:mermaid (graph TD)", - "file_type": "document", - "source_file": "docs/authentication.md", - "source_location": "L156", - "community": 41, - "norm_label": "code:mermaid (graph td)", - "id": "docs_authentication_codeblock_9" + "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": "code:mermaid (graph TD)", - "file_type": "document", - "source_file": "docs/orunmila.md", - "source_location": "L55", - "community": 490, - "norm_label": "code:mermaid (graph td)", - "id": "docs_orunmila_codeblock_3" + "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": "API Key Verification", - "file_type": "document", - "source_file": "docs/stocks_api.md", - "source_location": "L40", - "community": 65, - "norm_label": "api key verification", - "id": "docs_stocks_api_api_key_verification" + "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": "Key Management", - "file_type": "document", - "source_file": "docs/stocks_api.md", - "source_location": "L45", - "community": 65, - "norm_label": "key management", - "id": "docs_stocks_api_key_management" + "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": "code:json ({)", - "file_type": "document", - "source_file": "docs/stocks_api.md", - "source_location": "L94", - "community": 65, - "norm_label": "code:json ({)", - "id": "docs_stocks_api_codeblock_9" + "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": "Brazilian Stocks Market Scraper", - "file_type": "document", - "source_file": "docs/scraper_b3.md", + "label": "chat.py", + "file_type": "code", + "source_file": "main/app/prometheus/chat.py", "source_location": "L1", - "community": 83, - "norm_label": "brazilian stocks market scraper", - "id": "docs_scraper_b3_brazilian_stocks_market_scraper" + "community": 125, + "norm_label": "chat.py", + "id": "main_app_prometheus_chat_py" }, { - "label": "Usage", - "file_type": "document", - "source_file": "docs/scraper_b3.md", - "source_location": "L5", - "community": 83, - "norm_label": "usage", - "id": "docs_scraper_b3_usage" + "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": "Output Format", - "file_type": "document", - "source_file": "docs/scraper_b3.md", - "source_location": "L27", - "community": 83, - "norm_label": "output format", - "id": "docs_scraper_b3_output_format" + "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": "MySQL Table (b3_stocks)", - "file_type": "document", - "source_file": "docs/scraper_b3.md", - "source_location": "L29", - "community": 83, - "norm_label": "mysql table (b3_stocks)", - "id": "docs_scraper_b3_mysql_table_b3_stocks" + "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": "Sample Record", - "file_type": "document", - "source_file": "docs/scraper_b3.md", - "source_location": "L38", - "community": 83, - "norm_label": "sample record", - "id": "docs_scraper_b3_sample_record" + "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": "code:json ({)", - "file_type": "document", - "source_file": "docs/scraper_b3.md", - "source_location": "L40", - "community": 83, - "norm_label": "code:json ({)", - "id": "docs_scraper_b3_codeblock_2" + "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": "Xang\u00f4", - "file_type": "document", - "source_file": "docs/scraper_b3.md", - "source_location": "L55", - "community": 83, - "norm_label": "xango", - "id": "docs_scraper_b3_xang\u00f4" + "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": "Global Score Function", - "file_type": "document", - "source_file": "docs/scraper_b3.md", - "source_location": "L60", - "community": 83, - "norm_label": "global score function", - "id": "docs_scraper_b3_global_score_function" + "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": "Engines", - "file_type": "document", - "source_file": "docs/scraper_b3.md", - "source_location": "L69", - "community": 83, - "norm_label": "engines", - "id": "docs_scraper_b3_engines" + "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": "Profit Quality Gate ($M_{profit}$)", - "file_type": "document", - "source_file": "docs/scraper_b3.md", - "source_location": "L71", - "community": 83, - "norm_label": "profit quality gate ($m_{profit}$)", - "id": "docs_scraper_b3_profit_quality_gate_m_profit" + "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": "Fundamental Engine ($\\Phi$)", - "file_type": "document", - "source_file": "docs/scraper_b3.md", - "source_location": "L76", - "community": 83, - "norm_label": "fundamental engine ($\\phi$)", - "id": "docs_scraper_b3_fundamental_engine_phi" + "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": "Risk-Quality Engine ($\\Omega$)", - "file_type": "document", - "source_file": "docs/scraper_b3.md", - "source_location": "L89", - "community": 83, - "norm_label": "risk-quality engine ($\\omega$)", - "id": "docs_scraper_b3_risk_quality_engine_omega" + "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": "Constraint Engine ($\\Lambda$)", - "file_type": "document", - "source_file": "docs/scraper_b3.md", - "source_location": "L101", - "community": 83, - "norm_label": "constraint engine ($\\lambda$)", - "id": "docs_scraper_b3_constraint_engine_lambda" + "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": "Configuration Parameters", - "file_type": "document", - "source_file": "docs/scraper_b3.md", - "source_location": "L113", - "community": 83, - "norm_label": "configuration parameters", - "id": "docs_scraper_b3_configuration_parameters" + "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": "License", - "file_type": "document", - "source_file": "docs/scraper_b3.md", - "source_location": "L131", - "community": 83, - "norm_label": "license", - "id": "docs_scraper_b3_license" + "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": "SWARMS.md", - "file_type": "document", - "source_file": "SWARMS.md", - "source_location": "L1", - "community": 263, - "norm_label": "swarms.md", - "id": "swarms_md" + "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": "SWARMS.md \u2014 subagent swarm playbook (OpenCode / Hermes)", - "file_type": "document", - "source_file": "SWARMS.md", - "source_location": "L1", - "community": 263, - "norm_label": "swarms.md \u2014 subagent swarm playbook (opencode / hermes)", - "id": "server_swarms_swarms_md_subagent_swarm_playbook_opencode_hermes" + "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. Prime owns the goal, lanes own the work", - "file_type": "document", - "source_file": "SWARMS.md", - "source_location": "L6", - "community": 263, - "norm_label": "1. prime owns the goal, lanes own the work", - "id": "server_swarms_1_prime_owns_the_goal_lanes_own_the_work" + "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": "2. Dispatch: `delegate()`, one per lane, one turn", - "file_type": "document", - "source_file": "SWARMS.md", - "source_location": "L12", - "community": 263, - "norm_label": "2. dispatch: `delegate()`, one per lane, one turn", - "id": "server_swarms_2_dispatch_delegate_one_per_lane_one_turn" + "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": "3. Delegate toolsets vary \u2014 verify each lane", - "file_type": "document", - "source_file": "SWARMS.md", - "source_location": "L20", - "community": 263, - "norm_label": "3. delegate toolsets vary \u2014 verify each lane", - "id": "server_swarms_3_delegate_toolsets_vary_verify_each_lane" + "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": "4. Trust nothing \u2014 verify everything", - "file_type": "document", - "source_file": "SWARMS.md", - "source_location": "L26", - "community": 263, - "norm_label": "4. trust nothing \u2014 verify everything", - "id": "server_swarms_4_trust_nothing_verify_everything" + "label": "extractDecisions()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L131", + "community": 80, + "norm_label": "extractdecisions()", + "id": "prometheus_compact_extractdecisions" }, { - "label": "5. Windows PowerShell survival", - "file_type": "document", - "source_file": "SWARMS.md", - "source_location": "L33", - "community": 263, - "norm_label": "5. windows powershell survival", - "id": "server_swarms_5_windows_powershell_survival" + "label": "extractSnapshots()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L145", + "community": 80, + "norm_label": "extractsnapshots()", + "id": "prometheus_compact_extractsnapshots" }, { - "label": "6. Finish per lane, not per swarm", - "file_type": "document", - "source_file": "SWARMS.md", - "source_location": "L39", - "community": 263, - "norm_label": "6. finish per lane, not per swarm", - "id": "server_swarms_6_finish_per_lane_not_per_swarm" + "label": "extractToolCalls()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L158", + "community": 80, + "norm_label": "extracttoolcalls()", + "id": "prometheus_compact_extracttoolcalls" }, { - "label": "7. Standing bans (this repo)", - "file_type": "document", - "source_file": "SWARMS.md", - "source_location": "L45", - "community": 263, - "norm_label": "7. standing bans (this repo)", - "id": "server_swarms_7_standing_bans_this_repo" + "label": "buildSummary()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L174", + "community": 80, + "norm_label": "buildsummary()", + "id": "prometheus_compact_buildsummary" }, { - "label": "prometheus.md", - "file_type": "document", - "source_file": "docs/prometheus.md", - "source_location": "L1", - "community": 156, - "norm_label": "prometheus.md", - "id": "docs_prometheus_md" + "label": "PrometheusCompactor", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L195", + "community": 80, + "norm_label": "prometheuscompactor", + "id": "prometheus_compact_prometheuscompactor" }, { - "label": "Prometheus", - "file_type": "document", - "source_file": "docs/prometheus.md", - "source_location": "L1", - "community": 156, - "norm_label": "prometheus", - "id": "docs_prometheus_prometheus" + "label": ".shouldCompact()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L196", + "community": 80, + "norm_label": ".shouldcompact()", + "id": "prometheus_compact_prometheuscompactor_shouldcompact" }, { - "label": "Usage", - "file_type": "document", - "source_file": "docs/prometheus.md", - "source_location": "L9", - "community": 156, - "norm_label": "usage", - "id": "docs_prometheus_usage" + "label": ".getCompactableChunk()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L213", + "community": 80, + "norm_label": ".getcompactablechunk()", + "id": "prometheus_compact_prometheuscompactor_getcompactablechunk" }, { - "label": "code:env (#)", - "file_type": "document", - "source_file": "docs/prometheus.md", - "source_location": "L11", - "community": 156, - "norm_label": "code:env (#)", - "id": "docs_prometheus_codeblock_1" + "label": ".extractEpisode()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L222", + "community": 80, + "norm_label": ".extractepisode()", + "id": "prometheus_compact_prometheuscompactor_extractepisode" }, { - "label": "code:bash (python __init__.py)", - "file_type": "document", - "source_file": "docs/prometheus.md", - "source_location": "L51", - "community": 156, - "norm_label": "code:bash (python __init__.py)", - "id": "docs_prometheus_codeblock_2" + "label": ".consolidate()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L244", + "community": 80, + "norm_label": ".consolidate()", + "id": "prometheus_compact_prometheuscompactor_consolidate" }, { - "label": "Workflow", - "file_type": "document", - "source_file": "docs/prometheus.md", - "source_location": "L55", - "community": 156, - "norm_label": "workflow", - "id": "docs_prometheus_workflow" + "label": ".compact()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L271", + "community": 80, + "norm_label": ".compact()", + "id": "prometheus_compact_prometheuscompactor_compact" }, { - "label": "code:mermaid (graph TD)", - "file_type": "document", - "source_file": "docs/prometheus.md", - "source_location": "L57", - "community": 156, - "norm_label": "code:mermaid (graph td)", - "id": "docs_prometheus_codeblock_3" + "label": ".getEpisodes()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L310", + "community": 80, + "norm_label": ".getepisodes()", + "id": "prometheus_compact_prometheuscompactor_getepisodes" }, { - "label": "API Endpoints", - "file_type": "document", - "source_file": "docs/prometheus.md", - "source_location": "L67", - "community": 156, - "norm_label": "api endpoints", - "id": "docs_prometheus_api_endpoints" + "label": "mcp.py", + "file_type": "code", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L1", + "community": 12, + "norm_label": "mcp.py", + "id": "main_app_prometheus_mcp_py" }, { - "label": "License", - "file_type": "document", - "source_file": "docs/prometheus.md", - "source_location": "L74", - "community": 156, - "norm_label": "license", - "id": "docs_prometheus_license" + "label": "buildClient()", + "file_type": "code", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L21", + "community": 12, + "norm_label": "buildclient()", + "id": "prometheus_mcp_buildclient" }, { - "label": "PONYTAIL.md", - "file_type": "document", - "source_file": "PONYTAIL.md", - "source_location": "L1", - "community": 509, - "norm_label": "ponytail.md", - "id": "ponytail_md" + "label": "connect()", + "file_type": "code", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L29", + "community": 12, + "norm_label": "connect()", + "id": "prometheus_mcp_connect" }, { - "label": "PONYTAIL.md \u2014 proposed cuts, NOT applied. Approve before any edit.", - "file_type": "document", - "source_file": "PONYTAIL.md", - "source_location": "L1", - "community": 509, - "norm_label": "ponytail.md \u2014 proposed cuts, not applied. approve before any edit.", - "id": "server_ponytail_ponytail_md_proposed_cuts_not_applied_approve_before_any_edit" + "label": "MCPClientPool", + "file_type": "code", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L36", + "community": 12, + "norm_label": "mcpclientpool", + "id": "prometheus_mcp_mcpclientpool" }, { - "label": "Proposed (awaiting approval)", - "file_type": "document", - "source_file": "PONYTAIL.md", - "source_location": "L6", - "community": 509, - "norm_label": "proposed (awaiting approval)", - "id": "server_ponytail_proposed_awaiting_approval" + "label": ".__init__()", + "file_type": "code", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L37", + "community": 12, + "norm_label": ".__init__()", + "id": "prometheus_mcp_mcpclientpool_init" }, { - "label": "Disputed (already litigated \u2014 needs your ruling to proceed)", - "file_type": "document", - "source_file": "PONYTAIL.md", - "source_location": "L64", - "community": 509, - "norm_label": "disputed (already litigated \u2014 needs your ruling to proceed)", - "id": "server_ponytail_disputed_already_litigated_needs_your_ruling_to_proceed" + "label": ".initialize()", + "file_type": "code", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L42", + "community": 12, + "norm_label": ".initialize()", + "id": "prometheus_mcp_mcpclientpool_initialize" }, { - "label": "Held out (your ignore rules \u2014 not proposed)", - "file_type": "document", - "source_file": "PONYTAIL.md", - "source_location": "L72", - "community": 509, - "norm_label": "held out (your ignore rules \u2014 not proposed)", - "id": "server_ponytail_held_out_your_ignore_rules_not_proposed" + "label": ".getClients()", + "file_type": "code", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L56", + "community": 12, + "norm_label": ".getclients()", + "id": "prometheus_mcp_mcpclientpool_getclients" }, { - "label": "Refused", - "file_type": "document", - "source_file": "PONYTAIL.md", - "source_location": "L78", - "community": 509, - "norm_label": "refused", - "id": "server_ponytail_refused" + "label": ".healthCheck()", + "file_type": "code", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L63", + "community": 12, + "norm_label": ".healthcheck()", + "id": "prometheus_mcp_mcpclientpool_healthcheck" }, { - "label": "getDeviceName()", + "label": ".reconnect()", "file_type": "code", - "source_file": "main/app/authentication/session.py", - "source_location": "L14", - "community": 149, - "norm_label": "getdevicename()", - "id": "authentication_session_getdevicename" + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L75", + "community": 12, + "norm_label": ".reconnect()", + "id": "prometheus_mcp_mcpclientpool_reconnect" }, { - "label": "walk()", + "label": ".close()", "file_type": "code", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L46", - "community": 215, - "norm_label": "walk()", - "id": "stocks_api_compress_walk" + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L90", + "community": 12, + "norm_label": ".close()", + "id": "prometheus_mcp_mcpclientpool_close" }, { - "label": "toColumnar()", + "label": "memory.py", "file_type": "code", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L75", - "community": 215, - "norm_label": "tocolumnar()", - "id": "stocks_api_compress_tocolumnar" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L1", + "community": 53, + "norm_label": "memory.py", + "id": "main_app_prometheus_memory_py" }, { - "label": "fixHeaders()", + "label": "getMatrix()", "file_type": "code", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L84", - "community": 215, - "norm_label": "fixheaders()", - "id": "stocks_api_compress_fixheaders" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L35", + "community": 53, + "norm_label": "getmatrix()", + "id": "prometheus_memory_getmatrix" }, { - "label": "StocksQueryManager", + "label": "invalidateUser()", "file_type": "code", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L54", - "community": 101, - "norm_label": "stocksquerymanager", - "id": "stocks_api_query_stocksquerymanager" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L53", + "community": 53, + "norm_label": "invalidateuser()", + "id": "prometheus_memory_invalidateuser" }, { - "label": ".__init__()", + "label": "clearAll()", "file_type": "code", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L55", - "community": 101, - "norm_label": ".__init__()", - "id": "stocks_api_query_stocksquerymanager_init" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L57", + "community": 53, + "norm_label": "clearall()", + "id": "prometheus_memory_clearall" }, { - "label": ".baseFrame()", + "label": "MemoryCandidate", "file_type": "code", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L58", - "community": 63, - "norm_label": ".baseframe()", - "id": "stocks_api_query_stocksquerymanager_baseframe" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L64", + "community": 45, + "norm_label": "memorycandidate", + "id": "prometheus_memory_memorycandidate" }, { - "label": ".finalize()", + "label": "newTokenCache()", "file_type": "code", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L69", - "community": 63, - "norm_label": ".finalize()", - "id": "stocks_api_query_stocksquerymanager_finalize" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L90", + "community": 116, + "norm_label": "newtokencache()", + "id": "prometheus_memory_newtokencache" }, { - "label": ".deserializeJsonColumns()", + "label": "getClient()", "file_type": "code", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L109", - "community": 63, - "norm_label": ".deserializejsoncolumns()", - "id": "stocks_api_query_stocksquerymanager_deserializejsoncolumns" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L97", + "community": 53, + "norm_label": "getclient()", + "id": "prometheus_memory_getclient" }, { - "label": ".filterBySearchTerms()", + "label": "minMax()", "file_type": "code", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L136", - "community": 63, - "norm_label": ".filterbysearchterms()", - "id": "stocks_api_query_stocksquerymanager_filterbysearchterms" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L104", + "community": 13, + "norm_label": "minmax()", + "id": "prometheus_memory_minmax" }, { - "label": ".queryHistorical()", + "label": "normalizeKey()", "file_type": "code", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L153", - "community": 63, - "norm_label": ".queryhistorical()", - "id": "stocks_api_query_stocksquerymanager_queryhistorical" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L113", + "community": 53, + "norm_label": "normalizekey()", + "id": "prometheus_memory_normalizekey" }, { - "label": ".queryFundamental()", + "label": "findSimilarKey()", "file_type": "code", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L220", - "community": 63, - "norm_label": ".queryfundamental()", - "id": "stocks_api_query_stocksquerymanager_queryfundamental" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L120", + "community": 53, + "norm_label": "findsimilarkey()", + "id": "prometheus_memory_findsimilarkey" }, { - "label": ".queryCotations()", + "label": "scoreRow()", "file_type": "code", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L284", - "community": 63, - "norm_label": ".querycotations()", - "id": "stocks_api_query_stocksquerymanager_querycotations" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L140", + "community": 13, + "norm_label": "scorerow()", + "id": "prometheus_memory_scorerow" }, { - "label": ".queryLiveCotation()", + "label": "scoreRecency()", "file_type": "code", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L331", - "community": 101, - "norm_label": ".querylivecotation()", - "id": "stocks_api_query_stocksquerymanager_querylivecotation" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L152", + "community": 13, + "norm_label": "scorerecency()", + "id": "prometheus_memory_scorerecency" }, { - "label": "getHistoricalFields()", + "label": "scoreCandidates()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L89", - "community": 80, - "norm_label": "gethistoricalfields()", - "id": "prometheus_compact_gethistoricalfields" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L162", + "community": 13, + "norm_label": "scorecandidates()", + "id": "prometheus_memory_scorecandidates" }, { - "label": "getFundamentalColumns()", + "label": "sumTokens()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L93", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L179", "community": 80, - "norm_label": "getfundamentalcolumns()", - "id": "prometheus_compact_getfundamentalcolumns" + "norm_label": "sumtokens()", + "id": "prometheus_memory_sumtokens" }, { - "label": "invalidateFieldData()", + "label": "PrometheusMemory", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L97", - "community": 80, - "norm_label": "invalidatefielddata()", - "id": "prometheus_compact_invalidatefielddata" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L194", + "community": 140, + "norm_label": "prometheusmemory", + "id": "prometheus_memory_prometheusmemory" }, { - "label": "matrixKey()", + "label": "getMemoryLimit()", "file_type": "code", "source_file": "main/app/prometheus/memory.py", - "source_location": "L31", + "source_location": "L196", "community": 53, - "norm_label": "matrixkey()", - "id": "prometheus_memory_matrixkey" + "norm_label": "getmemorylimit()", + "id": "prometheus_memory_getmemorylimit" }, { - "label": "matrixUserTag()", + "label": "countMemories()", "file_type": "code", "source_file": "main/app/prometheus/memory.py", - "source_location": "L38", + "source_location": "L202", "community": 53, - "norm_label": "matrixusertag()", - "id": "prometheus_memory_matrixusertag" + "norm_label": "countmemories()", + "id": "prometheus_memory_countmemories" }, { - "label": "countTokensCached()", + "label": "touch()", "file_type": "code", "source_file": "main/app/prometheus/memory.py", - "source_location": "L450", + "source_location": "L211", "community": 53, - "norm_label": "counttokenscached()", - "id": "prometheus_memory_counttokenscached" + "norm_label": "touch()", + "id": "prometheus_memory_touch" }, { - "label": "sync_cache()", + "label": "upsertMemory()", "file_type": "code", - "source_file": "main/app/stocks_api/sync_cache.py", - "source_location": "L13", - "community": 511, - "norm_label": "sync_cache()", - "id": "stocks_api_sync_cache_sync_cache" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L222", + "community": 53, + "norm_label": "upsertmemory()", + "id": "prometheus_memory_upsertmemory" }, { - "label": "write_bytes()", + "label": "search()", "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L194", - "community": 69, - "norm_label": "write_bytes()", - "id": "prometheus_sandbox_write_bytes" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L286", + "community": 13, + "norm_label": "search()", + "id": "prometheus_memory_search" }, { - "label": "ensureFastmcp()", + "label": "fullTextSearch()", "file_type": "code", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L10", - "community": 194, - "norm_label": "ensurefastmcp()", - "id": "prometheus_mcp_ensurefastmcp" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L349", + "community": 13, + "norm_label": "fulltextsearch()", + "id": "prometheus_memory_fulltextsearch" }, { - "label": "getMatrixAsync()", + "label": "getUserMemories()", "file_type": "code", "source_file": "main/app/prometheus/memory.py", - "source_location": "L43", - "community": 53, - "norm_label": "getmatrixasync()", - "id": "prometheus_memory_getmatrixasync" + "source_location": "L407", + "community": 27, + "norm_label": "getusermemories()", + "id": "prometheus_memory_getusermemories" }, { - "label": "invalidateUserAsync()", + "label": "deleteMemory()", "file_type": "code", "source_file": "main/app/prometheus/memory.py", - "source_location": "L55", + "source_location": "L432", "community": 53, - "norm_label": "invalidateuserasync()", - "id": "prometheus_memory_invalidateuserasync" + "norm_label": "deletememory()", + "id": "prometheus_memory_deletememory" }, { - "label": "clearAllAsync()", + "label": "extract()", "file_type": "code", "source_file": "main/app/prometheus/memory.py", - "source_location": "L59", + "source_location": "L450", "community": 53, - "norm_label": "clearallasync()", - "id": "prometheus_memory_clearallasync" + "norm_label": "extract()", + "id": "prometheus_memory_extract" }, { - "label": "upsertMemoryAsync()", + "label": "sandbox.py", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L244", - "community": 53, - "norm_label": "upsertmemoryasync()", - "id": "prometheus_memory_upsertmemoryasync" + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L1", + "community": 69, + "norm_label": "sandbox.py", + "id": "main_app_prometheus_sandbox_py" }, { - "label": "searchAsync()", + "label": "lockFor()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L333", - "community": 126, - "norm_label": "searchasync()", - "id": "prometheus_memory_searchasync" + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L18", + "community": 69, + "norm_label": "lockfor()", + "id": "prometheus_sandbox_lockfor" }, { - "label": "deleteMemoryAsync()", + "label": "getClient()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L483", - "community": 53, - "norm_label": "deletememoryasync()", - "id": "prometheus_memory_deletememoryasync" + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L24", + "community": 69, + "norm_label": "getclient()", + "id": "prometheus_sandbox_getclient" }, { - "label": "Search user's saved memories, preferences, and past analysis context. Use", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L20", - "community": 152, - "norm_label": "search user's saved memories, preferences, and past analysis context. use", - "id": "prometheus_tools_rationale_20" + "label": "hostPath()", + "file_type": "code", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L32", + "community": 69, + "norm_label": "hostpath()", + "id": "prometheus_sandbox_hostpath" }, { - "label": "Store a memory about the user's preferences, analysis results, or feedback.", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L50", - "community": 208, - "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", - "id": "prometheus_tools_rationale_50" + "label": "sandboxPath()", + "file_type": "code", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L46", + "community": 69, + "norm_label": "sandboxpath()", + "id": "prometheus_sandbox_sandboxpath" }, { - "label": "Execute Python code in an isolated sandbox. Use for quantitative analysis,", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L91", - "community": 487, - "norm_label": "execute python code in an isolated sandbox. use for quantitative analysis,", - "id": "prometheus_tools_rationale_91" + "label": "SandboxManager", + "file_type": "code", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L51", + "community": 2, + "norm_label": "sandboxmanager", + "id": "prometheus_sandbox_sandboxmanager" }, { - "label": "Read a file from the workspace. Args: path: Path to the file (e.", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", + "label": "create()", + "file_type": "code", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L53", + "community": 69, + "norm_label": "create()", + "id": "prometheus_sandbox_create" + }, + { + "label": "destroy()", + "file_type": "code", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L69", + "community": 69, + "norm_label": "destroy()", + "id": "prometheus_sandbox_destroy" + }, + { + "label": "getOrCreate()", + "file_type": "code", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L81", + "community": 69, + "norm_label": "getorcreate()", + "id": "prometheus_sandbox_getorcreate" + }, + { + "label": "execute()", + "file_type": "code", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L128", + "community": 69, + "norm_label": "execute()", + "id": "prometheus_sandbox_execute" + }, + { + "label": "read_file()", + "file_type": "code", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L164", + "community": 69, + "norm_label": "read_file()", + "id": "prometheus_sandbox_read_file" + }, + { + "label": "write_file()", + "file_type": "code", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L171", + "community": 69, + "norm_label": "write_file()", + "id": "prometheus_sandbox_write_file" + }, + { + "label": "list_files()", + "file_type": "code", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L185", + "community": 69, + "norm_label": "list_files()", + "id": "prometheus_sandbox_list_files" + }, + { + "label": "delete_file()", + "file_type": "code", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L193", + "community": 69, + "norm_label": "delete_file()", + "id": "prometheus_sandbox_delete_file" + }, + { + "label": "syncToSandbox()", + "file_type": "code", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L210", + "community": 69, + "norm_label": "synctosandbox()", + "id": "prometheus_sandbox_synctosandbox" + }, + { + "label": "syncFromSandbox()", + "file_type": "code", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L229", + "community": 69, + "norm_label": "syncfromsandbox()", + "id": "prometheus_sandbox_syncfromsandbox" + }, + { + "label": "stream_bus.py", + "file_type": "code", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L1", + "community": 210, + "norm_label": "stream_bus.py", + "id": "main_app_prometheus_stream_bus_py" + }, + { + "label": "StreamChannel", + "file_type": "code", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L14", + "community": 210, + "norm_label": "streamchannel", + "id": "prometheus_stream_bus_streamchannel" + }, + { + "label": ".__init__()", + "file_type": "code", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L15", + "community": 210, + "norm_label": ".__init__()", + "id": "prometheus_stream_bus_streamchannel_init" + }, + { + "label": ".publish()", + "file_type": "code", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L21", + "community": 210, + "norm_label": ".publish()", + "id": "prometheus_stream_bus_streamchannel_publish" + }, + { + "label": "StreamBus", + "file_type": "code", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L32", + "community": 210, + "norm_label": "streambus", + "id": "prometheus_stream_bus_streambus" + }, + { + "label": ".__init__()", + "file_type": "code", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L33", + "community": 210, + "norm_label": ".__init__()", + "id": "prometheus_stream_bus_streambus_init" + }, + { + "label": ".getOrCreate()", + "file_type": "code", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L36", + "community": 210, + "norm_label": ".getorcreate()", + "id": "prometheus_stream_bus_streambus_getorcreate" + }, + { + "label": ".publish()", + "file_type": "code", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L43", + "community": 210, + "norm_label": ".publish()", + "id": "prometheus_stream_bus_streambus_publish" + }, + { + "label": ".subscribe()", + "file_type": "code", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L46", + "community": 210, + "norm_label": ".subscribe()", + "id": "prometheus_stream_bus_streambus_subscribe" + }, + { + "label": ".unsubscribe()", + "file_type": "code", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L59", + "community": 210, + "norm_label": ".unsubscribe()", + "id": "prometheus_stream_bus_streambus_unsubscribe" + }, + { + "label": ".startRun()", + "file_type": "code", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L64", + "community": 210, + "norm_label": ".startrun()", + "id": "prometheus_stream_bus_streambus_startrun" + }, + { + "label": ".eventGenerator()", + "file_type": "code", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L86", + "community": 210, + "norm_label": ".eventgenerator()", + "id": "prometheus_stream_bus_streambus_eventgenerator" + }, + { + "label": ".streamResponse()", + "file_type": "code", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L109", + "community": 210, + "norm_label": ".streamresponse()", + "id": "prometheus_stream_bus_streambus_streamresponse" + }, + { + "label": ".forward()", + "file_type": "code", + "source_file": "main/app/prometheus/stream_bus.py", "source_location": "L112", - "community": 525, - "norm_label": "read a file from the workspace. args: path: path to the file (e.", - "id": "prometheus_tools_rationale_112" + "community": 210, + "norm_label": ".forward()", + "id": "prometheus_stream_bus_streambus_forward" }, { - "label": "Write a file to the workspace. Use this to save data files (CSV, JSON, scri", - "file_type": "rationale", + "label": "tools.py", + "file_type": "code", "source_file": "main/app/prometheus/tools.py", - "source_location": "L126", + "source_location": "L1", "community": 523, - "norm_label": "write a file to the workspace. use this to save data files (csv, json, scri", - "id": "prometheus_tools_rationale_126" + "norm_label": "tools.py", + "id": "main_app_prometheus_tools_py" }, { - "label": "List files in the workspace directory. Args: path: Directory pat", - "file_type": "rationale", + "label": "search_memory()", + "file_type": "code", "source_file": "main/app/prometheus/tools.py", - "source_location": "L142", - "community": 495, - "norm_label": "list files in the workspace directory. args: path: directory pat", - "id": "prometheus_tools_rationale_142" + "source_location": "L20", + "community": 152, + "norm_label": "search_memory()", + "id": "prometheus_tools_search_memory" }, { - "label": "Get a download link for a workspace file to share with the user. Use this", - "file_type": "rationale", + "label": "save_memory()", + "file_type": "code", "source_file": "main/app/prometheus/tools.py", - "source_location": "L155", - "community": 523, - "norm_label": "get a download link for a workspace file to share with the user. use this", - "id": "prometheus_tools_rationale_155" + "source_location": "L51", + "community": 126, + "norm_label": "save_memory()", + "id": "prometheus_tools_save_memory" }, { - "label": "Write-Fix()", + "label": "execute_code()", "file_type": "code", - "source_file": "ci.ps1", - "source_location": "L48", - "community": 203, - "norm_label": "write-fix()", - "id": "server_ci_write_fix" + "source_file": "main/app/prometheus/tools.py", + "source_location": "L93", + "community": 487, + "norm_label": "execute_code()", + "id": "prometheus_tools_execute_code" }, { - "label": "saveMessage()", + "label": "read_file()", "file_type": "code", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L52", - "community": 125, - "norm_label": "savemessage()", - "id": "prometheus_chat_savemessage" + "source_file": "main/app/prometheus/tools.py", + "source_location": "L114", + "community": 208, + "norm_label": "read_file()", + "id": "prometheus_tools_read_file" }, { - "label": "saveLoopEvent()", + "label": "write_file()", "file_type": "code", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L76", - "community": 125, - "norm_label": "saveloopevent()", - "id": "prometheus_chat_saveloopevent" + "source_file": "main/app/prometheus/tools.py", + "source_location": "L128", + "community": 529, + "norm_label": "write_file()", + "id": "prometheus_tools_write_file" + }, + { + "label": "list_files()", + "file_type": "code", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L144", + "community": 525, + "norm_label": "list_files()", + "id": "prometheus_tools_list_files" + }, + { + "label": "serve_file()", + "file_type": "code", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L157", + "community": 525, + "norm_label": "serve_file()", + "id": "prometheus_tools_serve_file" + }, + { + "label": "dispatchToolCall()", + "file_type": "code", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L190", + "community": 49, + "norm_label": "dispatchtoolcall()", + "id": "prometheus_tools_dispatchtoolcall" }, { "label": "Search user's saved memories, preferences, and past analysis context. Use", "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", - "source_location": "L19", + "source_location": "L21", "community": 152, "norm_label": "search user's saved memories, preferences, and past analysis context. use", - "id": "prometheus_tools_rationale_19" + "id": "prometheus_tools_rationale_21" }, { "label": "Store a memory about the user's preferences, analysis results, or feedback.", "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", - "source_location": "L49", - "community": 208, + "source_location": "L52", + "community": 126, "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", - "id": "prometheus_tools_rationale_49" + "id": "prometheus_tools_rationale_52" }, { "label": "Execute Python code in an isolated sandbox. Use for quantitative analysis,", "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", - "source_location": "L90", + "source_location": "L94", "community": 487, "norm_label": "execute python code in an isolated sandbox. use for quantitative analysis,", - "id": "prometheus_tools_rationale_90" + "id": "prometheus_tools_rationale_94" }, { "label": "Read a file from the workspace. Args: path: Path to the file (e.", "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", - "source_location": "L111", - "community": 525, + "source_location": "L115", + "community": 208, "norm_label": "read a file from the workspace. args: path: path to the file (e.", - "id": "prometheus_tools_rationale_111" + "id": "prometheus_tools_rationale_115" }, { "label": "Write a file to the workspace. Use this to save data files (CSV, JSON, scri", "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", - "source_location": "L125", - "community": 523, + "source_location": "L129", + "community": 529, "norm_label": "write a file to the workspace. use this to save data files (csv, json, scri", - "id": "prometheus_tools_rationale_125" + "id": "prometheus_tools_rationale_129" }, { "label": "List files in the workspace directory. Args: path: Directory pat", "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", - "source_location": "L141", - "community": 523, + "source_location": "L145", + "community": 525, "norm_label": "list files in the workspace directory. args: path: directory pat", - "id": "prometheus_tools_rationale_141" + "id": "prometheus_tools_rationale_145" }, { "label": "Get a download link for a workspace file to share with the user. Use this", "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", - "source_location": "L154", - "community": 523, + "source_location": "L158", + "community": 525, "norm_label": "get a download link for a workspace file to share with the user. use this", - "id": "prometheus_tools_rationale_154" + "id": "prometheus_tools_rationale_158" }, { - "label": "hashKey()", + "label": "vector.py", "file_type": "code", - "source_file": "main/app/stocks_api/key.py", - "source_location": "L17", - "community": 26, - "norm_label": "hashkey()", - "id": "stocks_api_key_hashkey" + "source_file": "main/app/prometheus/vector.py", + "source_location": "L1", + "community": 13, + "norm_label": "vector.py", + "id": "main_app_prometheus_vector_py" }, { - "label": "JSONBytesResponse", + "label": "normalizeRows()", "file_type": "code", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L23", - "community": 197, - "norm_label": "jsonbytesresponse", - "id": "controller_stocksapi_controller_jsonbytesresponse" + "source_file": "main/app/prometheus/vector.py", + "source_location": "L10", + "community": 13, + "norm_label": "normalizerows()", + "id": "prometheus_vector_normalizerows" }, { - "label": "FastAPIResponse", + "label": "embed()", "file_type": "code", - "source_file": "", - "source_location": "", - "community": 197, - "norm_label": "fastapiresponse", - "id": "fastapiresponse" + "source_file": "main/app/prometheus/vector.py", + "source_location": "L15", + "community": 13, + "norm_label": "embed()", + "id": "prometheus_vector_embed" }, { - "label": ".render()", + "label": "decodeEmbeddings()", "file_type": "code", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L26", - "community": 197, - "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" + "source_file": "main/app/prometheus/vector.py", + "source_location": "L19", + "community": 13, + "norm_label": "decodeembeddings()", + "id": "prometheus_vector_decodeembeddings" }, { - "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": "batchCosineSimilarity()", + "file_type": "code", + "source_file": "main/app/prometheus/vector.py", + "source_location": "L41", + "community": 13, + "norm_label": "batchcosinesimilarity()", + "id": "prometheus_vector_batchcosinesimilarity" }, { - "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": "contentHash()", + "file_type": "code", + "source_file": "main/app/prometheus/vector.py", + "source_location": "L51", + "community": 53, + "norm_label": "contenthash()", + "id": "prometheus_vector_contenthash" }, { - "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": "toVectorString()", + "file_type": "code", + "source_file": "main/app/prometheus/vector.py", + "source_location": "L55", + "community": 13, + "norm_label": "tovectorstring()", + "id": "prometheus_vector_tovectorstring" }, { - "label": "Load historical/fundamental field names via STOCKS_API /fields endpoint, caching", - "file_type": "rationale", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L97", - "community": 80, - "norm_label": "load historical/fundamental field names via stocks_api /fields endpoint, caching", - "id": "prometheus_compact_rationale_97" + "label": "fromVectorString()", + "file_type": "code", + "source_file": "main/app/prometheus/vector.py", + "source_location": "L59", + "community": 13, + "norm_label": "fromvectorstring()", + "id": "prometheus_vector_fromvectorstring" }, { - "label": "matrix_cache.py", + "label": "getRelevanceScore()", "file_type": "code", - "source_file": "main/app/prometheus/matrix_cache.py", - "source_location": "L1", - "community": 526, - "norm_label": "matrix_cache.py", - "id": "main_app_prometheus_matrix_cache_py" + "source_file": "main/app/prometheus/vector.py", + "source_location": "L71", + "community": 27, + "norm_label": "getrelevancescore()", + "id": "prometheus_vector_getrelevancescore" }, { - "label": "buildKey()", + "label": "prometheus_controller.py", "file_type": "code", - "source_file": "main/app/prometheus/matrix_cache.py", - "source_location": "L21", - "community": 526, - "norm_label": "buildkey()", - "id": "prometheus_matrix_cache_buildkey" + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L1", + "community": 84, + "norm_label": "prometheus_controller.py", + "id": "main_controller_prometheus_controller_py" }, { - "label": "runAwait()", + "label": "verifySessionOwnsership()", "file_type": "code", - "source_file": "main/app/prometheus/matrix_cache.py", - "source_location": "L28", - "community": 526, - "norm_label": "runawait()", - "id": "prometheus_matrix_cache_runawait" + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L26", + "community": 84, + "norm_label": "verifysessionownsership()", + "id": "controller_prometheus_controller_verifysessionownsership" }, { - "label": "getMatrix()", + "label": "health()", "file_type": "code", - "source_file": "main/app/prometheus/matrix_cache.py", + "source_file": "main/controller/prometheus_controller.py", "source_location": "L32", - "community": 526, - "norm_label": "getmatrix()", - "id": "prometheus_matrix_cache_getmatrix" + "community": 84, + "norm_label": "health()", + "id": "controller_prometheus_controller_health" }, { - "label": "invalidateUser()", + "label": "getSessions()", "file_type": "code", - "source_file": "main/app/prometheus/matrix_cache.py", - "source_location": "L44", - "community": 526, - "norm_label": "invalidateuser()", - "id": "prometheus_matrix_cache_invalidateuser" + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L37", + "community": 84, + "norm_label": "getsessions()", + "id": "controller_prometheus_controller_getsessions" }, { - "label": "clearAll()", + "label": "updateSessionTitle()", "file_type": "code", - "source_file": "main/app/prometheus/matrix_cache.py", - "source_location": "L54", - "community": 526, - "norm_label": "clearall()", - "id": "prometheus_matrix_cache_clearall" + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L56", + "community": 84, + "norm_label": "updatesessiontitle()", + "id": "controller_prometheus_controller_updatesessiontitle" }, { - "label": "bench_memory_vector.py", + "label": "getHistory()", "file_type": "code", - "source_file": "bench/bench_memory_vector.py", - "source_location": "L1", - "community": 126, - "norm_label": "bench_memory_vector.py", - "id": "bench_bench_memory_vector_py" + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L71", + "community": 84, + "norm_label": "gethistory()", + "id": "controller_prometheus_controller_gethistory" }, { - "label": "benchOnce()", + "label": "deleteSession()", "file_type": "code", - "source_file": "bench/bench_memory_vector.py", - "source_location": "L14", - "community": 126, - "norm_label": "benchonce()", - "id": "bench_bench_memory_vector_benchonce" + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L90", + "community": 84, + "norm_label": "deletesession()", + "id": "controller_prometheus_controller_deletesession" }, { - "label": "main()", + "label": "chat_stream()", "file_type": "code", - "source_file": "bench/bench_memory_vector.py", - "source_location": "L41", - "community": 126, - "norm_label": "main()", - "id": "bench_bench_memory_vector_main" + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L103", + "community": 84, + "norm_label": "chat_stream()", + "id": "controller_prometheus_controller_chat_stream" }, { - "label": "20260912T190329Z-baseline.json", + "label": "resumeChatStream()", "file_type": "code", - "source_file": "bench/results/20260912T190329Z-baseline.json", - "source_location": "L1", - "community": 557, - "norm_label": "20260912t190329z-baseline.json", - "id": "bench_results_20260912t190329z_baseline_json" + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L154", + "community": 84, + "norm_label": "resumechatstream()", + "id": "controller_prometheus_controller_resumechatstream" }, { - "label": "label", + "label": "deleteWorkspaceFile()", "file_type": "code", - "source_file": "bench/results/20260912T190329Z-baseline.json", - "source_location": "L2", - "community": 557, - "norm_label": "label", - "id": "results_20260912t190329z_baseline_label" + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L166", + "community": 84, + "norm_label": "deleteworkspacefile()", + "id": "controller_prometheus_controller_deleteworkspacefile" }, { - "label": "at", + "label": "downloadWorkspaceFile()", "file_type": "code", - "source_file": "bench/results/20260912T190329Z-baseline.json", - "source_location": "L3", - "community": 557, - "norm_label": "at", - "id": "results_20260912t190329z_baseline_at" + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L179", + "community": 84, + "norm_label": "downloadworkspacefile()", + "id": "controller_prometheus_controller_downloadworkspacefile" }, { - "label": "rows", + "label": "listWorkspaceFiles()", "file_type": "code", - "source_file": "bench/results/20260912T190329Z-baseline.json", - "source_location": "L4", - "community": 557, - "norm_label": "rows", - "id": "results_20260912t190329z_baseline_rows" + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L195", + "community": 84, + "norm_label": "listworkspacefiles()", + "id": "controller_prometheus_controller_listworkspacefiles" }, { - "label": "20260912T192904Z-baseline.json", + "label": "PrometheusMemory", "file_type": "code", - "source_file": "bench/results/20260912T192904Z-baseline.json", - "source_location": "L1", - "community": 542, - "norm_label": "20260912t192904z-baseline.json", - "id": "bench_results_20260912t192904z_baseline_json" + "source_file": "main/models/memory.py", + "source_location": "L8", + "community": 140, + "norm_label": "prometheusmemory", + "id": "models_memory_prometheusmemory" }, { - "label": "label", + "label": "prometheus.py", "file_type": "code", - "source_file": "bench/results/20260912T192904Z-baseline.json", - "source_location": "L2", - "community": 542, - "norm_label": "label", - "id": "results_20260912t192904z_baseline_label" + "source_file": "main/models/prometheus.py", + "source_location": "L1", + "community": 61, + "norm_label": "prometheus.py", + "id": "main_models_prometheus_py" }, { - "label": "at", + "label": "PrometheusSession", "file_type": "code", - "source_file": "bench/results/20260912T192904Z-baseline.json", - "source_location": "L3", - "community": 542, - "norm_label": "at", - "id": "results_20260912t192904z_baseline_at" + "source_file": "main/models/prometheus.py", + "source_location": "L7", + "community": 61, + "norm_label": "prometheussession", + "id": "models_prometheus_prometheussession" }, { - "label": "rows", + "label": "PrometheusSandbox", "file_type": "code", - "source_file": "bench/results/20260912T192904Z-baseline.json", - "source_location": "L4", - "community": 542, - "norm_label": "rows", - "id": "results_20260912t192904z_baseline_rows" + "source_file": "main/models/sandbox.py", + "source_location": "L5", + "community": 4, + "norm_label": "prometheussandbox", + "id": "models_sandbox_prometheussandbox" }, { - "label": "backfill_normalize_embeddings.py", + "label": "prometheus_service.py", "file_type": "code", - "source_file": "scripts/backfill_normalize_embeddings.py", + "source_file": "main/service/prometheus_service.py", "source_location": "L1", - "community": 526, - "norm_label": "backfill_normalize_embeddings.py", - "id": "scripts_backfill_normalize_embeddings_py" + "community": 72, + "norm_label": "prometheus_service.py", + "id": "main_service_prometheus_service_py" }, { - "label": "main()", + "label": "memoryMaintenance()", "file_type": "code", - "source_file": "scripts/backfill_normalize_embeddings.py", - "source_location": "L11", - "community": 526, - "norm_label": "main()", - "id": "scripts_backfill_normalize_embeddings_main" + "source_file": "main/service/prometheus_service.py", + "source_location": "L23", + "community": 570, + "norm_label": "memorymaintenance()", + "id": "service_prometheus_service_memorymaintenance" }, { - "label": "One-shot: renormalize stored embeddings to unit norm. Usage: python scripts/back", - "file_type": "rationale", - "source_file": "scripts/backfill_normalize_embeddings.py", - "source_location": "L1", - "community": 526, - "norm_label": "one-shot: renormalize stored embeddings to unit norm. usage: python scripts/back", - "id": "scripts_backfill_normalize_embeddings_rationale_1" + "label": "PrometheusService", + "file_type": "code", + "source_file": "main/service/prometheus_service.py", + "source_location": "L65", + "community": 140, + "norm_label": "prometheusservice", + "id": "service_prometheus_service_prometheusservice" }, { - "label": "vector-scaleup-runbook.md", - "file_type": "document", - "source_file": "docs/vector-scaleup-runbook.md", - "source_location": "L1", - "community": 492, - "norm_label": "vector-scaleup-runbook.md", - "id": "docs_vector_scaleup_runbook_md" + "label": "initialize()", + "file_type": "code", + "source_file": "main/service/prometheus_service.py", + "source_location": "L67", + "community": 72, + "norm_label": "initialize()", + "id": "service_prometheus_service_initialize" }, { - "label": "Vector Scale-Up Runbook", + "label": "Upgrade to Developer Starter", "file_type": "document", - "source_file": "docs/vector-scaleup-runbook.md", - "source_location": "L1", - "community": 492, - "norm_label": "vector scale-up runbook", - "id": "docs_vector_scaleup_runbook_vector_scale_up_runbook" + "source_file": "docs/user.md", + "source_location": "L41", + "community": 23, + "norm_label": "upgrade to developer starter", + "id": "docs_user_upgrade_to_developer_starter" }, { - "label": "Baseline (lane 4)", + "label": "Upgrade to Developer Enterprise", "file_type": "document", - "source_file": "docs/vector-scaleup-runbook.md", - "source_location": "L6", - "community": 492, - "norm_label": "baseline (lane 4)", - "id": "docs_vector_scaleup_runbook_baseline_lane_4" + "source_file": "docs/user.md", + "source_location": "L47", + "community": 23, + "norm_label": "upgrade to developer enterprise", + "id": "docs_user_upgrade_to_developer_enterprise" }, { - "label": "Move triggers (any one fires the migration)", + "label": "code:bash (curl -X DELETE -H \"Authorization: Bearer \" http://loc)", "file_type": "document", - "source_file": "docs/vector-scaleup-runbook.md", - "source_location": "L12", - "community": 492, - "norm_label": "move triggers (any one fires the migration)", - "id": "docs_vector_scaleup_runbook_move_triggers_any_one_fires_the_migration" + "source_file": "docs/user.md", + "source_location": "L116", + "community": 23, + "norm_label": "code:bash (curl -x delete -h \"authorization: bearer \" http://loc)", + "id": "docs_user_codeblock_11" }, { - "label": "Options", + "label": "code:json ({)", "file_type": "document", - "source_file": "docs/vector-scaleup-runbook.md", - "source_location": "L18", - "community": 492, - "norm_label": "options", - "id": "docs_vector_scaleup_runbook_options" + "source_file": "docs/user.md", + "source_location": "L120", + "community": 23, + "norm_label": "code:json ({)", + "id": "docs_user_codeblock_12" }, { - "label": "Export recipe", + "label": "code:bash (curl -X POST -H \"Authorization: Bearer \" http://local)", "file_type": "document", - "source_file": "docs/vector-scaleup-runbook.md", - "source_location": "L26", - "community": 492, - "norm_label": "export recipe", - "id": "docs_vector_scaleup_runbook_export_recipe" + "source_file": "docs/user.md", + "source_location": "L129", + "community": 23, + "norm_label": "code:bash (curl -x post -h \"authorization: bearer \" http://local)", + "id": "docs_user_codeblock_13" }, { - "label": "2026-09-12-lane1-vector-normalize.md", + "label": "code:json ({)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane1-vector-normalize.md", - "source_location": "L1", - "community": 499, - "norm_label": "2026-09-12-lane1-vector-normalize.md", - "id": "docs_superpowers_plans_2026_09_12_lane1_vector_normalize_md" + "source_file": "docs/user.md", + "source_location": "L133", + "community": 23, + "norm_label": "code:json ({)", + "id": "docs_user_codeblock_14" }, { - "label": "Lane 1: Normalized Embeddings + Dot-Product Search Implementation Plan", + "label": "Permission System", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane1-vector-normalize.md", - "source_location": "L1", - "community": 499, - "norm_label": "lane 1: normalized embeddings + dot-product search implementation plan", - "id": "plans_2026_09_12_lane1_vector_normalize_lane_1_normalized_embeddings_dot_product_search_implementation_plan" + "source_file": "docs/user.md", + "source_location": "L140", + "community": 23, + "norm_label": "permission system", + "id": "docs_user_permission_system" }, { - "label": "Global Constraints", + "label": "code:python (Permission.VIEW_PROFILE # View own profile)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane1-vector-normalize.md", - "source_location": "L15", - "community": 499, - "norm_label": "global constraints", - "id": "plans_2026_09_12_lane1_vector_normalize_global_constraints" + "source_file": "docs/user.md", + "source_location": "L144", + "community": 23, + "norm_label": "code:python (permission.view_profile # view own profile)", + "id": "docs_user_codeblock_15" }, { - "label": "Task 1: Normalize on encode + row-normalize helper", + "label": "code:mermaid (graph TD)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane1-vector-normalize.md", - "source_location": "L25", - "community": 499, - "norm_label": "task 1: normalize on encode + row-normalize helper", - "id": "plans_2026_09_12_lane1_vector_normalize_task_1_normalize_on_encode_row_normalize_helper" + "source_file": "docs/user.md", + "source_location": "L158", + "community": 23, + "norm_label": "code:mermaid (graph td)", + "id": "docs_user_codeblock_16" }, { - "label": "code:python (import numpy as np)", + "label": "Usage", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane1-vector-normalize.md", - "source_location": "L37", - "community": 499, - "norm_label": "code:python (import numpy as np)", - "id": "plans_2026_09_12_lane1_vector_normalize_codeblock_1" + "source_file": "docs/authentication.md", + "source_location": "L9", + "community": 41, + "norm_label": "usage", + "id": "docs_authentication_usage" }, { - "label": "code:python (def normalizeRows(matrix: np.ndarray) -> np.ndarray:)", + "label": "Profile (Me)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane1-vector-normalize.md", - "source_location": "L66", - "community": 499, - "norm_label": "code:python (def normalizerows(matrix: np.ndarray) -> np.ndarray:)", - "id": "plans_2026_09_12_lane1_vector_normalize_codeblock_2" + "source_file": "docs/authentication.md", + "source_location": "L77", + "community": 41, + "norm_label": "profile (me)", + "id": "docs_authentication_profile_me" }, { - "label": "code:bash (git add main/app/prometheus/vector.py tests/test_vector_norm)", + "label": "code:bash (# Redirect your browser to:)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane1-vector-normalize.md", - "source_location": "L93", - "community": 499, - "norm_label": "code:bash (git add main/app/prometheus/vector.py tests/test_vector_norm)", - "id": "plans_2026_09_12_lane1_vector_normalize_codeblock_3" + "source_file": "docs/authentication.md", + "source_location": "L98", + "community": 41, + "norm_label": "code:bash (# redirect your browser to:)", + "id": "docs_authentication_codeblock_7" }, { - "label": "Task 2: Backfill existing rows to unit norm", + "label": "code:bash (GET http://localhost:3200/auth/google)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane1-vector-normalize.md", - "source_location": "L98", - "community": 499, - "norm_label": "task 2: backfill existing rows to unit norm", - "id": "plans_2026_09_12_lane1_vector_normalize_task_2_backfill_existing_rows_to_unit_norm" + "source_file": "docs/authentication.md", + "source_location": "L104", + "community": 41, + "norm_label": "code:bash (get http://localhost:3200/auth/google)", + "id": "docs_authentication_codeblock_8" }, { - "label": "code:python (\"\"\"One-shot: renormalize stored embeddings to unit norm. Usa)", + "label": "Google Callback", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane1-vector-normalize.md", - "source_location": "L110", - "community": 499, - "norm_label": "code:python (\"\"\"one-shot: renormalize stored embeddings to unit norm. usa)", - "id": "plans_2026_09_12_lane1_vector_normalize_codeblock_4" + "source_file": "docs/authentication.md", + "source_location": "L108", + "community": 41, + "norm_label": "google callback", + "id": "docs_authentication_google_callback" }, { - "label": "code:bash (git add scripts/backfill_normalize_embeddings.py)", + "label": "Device Detection", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane1-vector-normalize.md", - "source_location": "L159", - "community": 499, - "norm_label": "code:bash (git add scripts/backfill_normalize_embeddings.py)", - "id": "plans_2026_09_12_lane1_vector_normalize_codeblock_5" + "source_file": "docs/authentication.md", + "source_location": "L130", + "community": 41, + "norm_label": "device detection", + "id": "docs_authentication_device_detection" }, { - "label": "2026-09-12-lane2-memory-query-path.md", + "label": "Session Management", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", - "source_location": "L1", - "community": 214, - "norm_label": "2026-09-12-lane2-memory-query-path.md", - "id": "docs_superpowers_plans_2026_09_12_lane2_memory_query_path_md" + "source_file": "docs/authentication.md", + "source_location": "L144", + "community": 41, + "norm_label": "session management", + "id": "docs_authentication_session_management" }, { - "label": "Lane 2: Memory Query-Path Fix Implementation Plan", + "label": "code:mermaid (graph TD)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", - "source_location": "L1", - "community": 214, - "norm_label": "lane 2: memory query-path fix implementation plan", - "id": "plans_2026_09_12_lane2_memory_query_path_lane_2_memory_query_path_fix_implementation_plan" + "source_file": "docs/authentication.md", + "source_location": "L156", + "community": 41, + "norm_label": "code:mermaid (graph td)", + "id": "docs_authentication_codeblock_9" }, { - "label": "Global Constraints", + "label": "code:mermaid (graph TD)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", - "source_location": "L16", - "community": 214, - "norm_label": "global constraints", - "id": "plans_2026_09_12_lane2_memory_query_path_global_constraints" + "source_file": "docs/orunmila.md", + "source_location": "L55", + "community": 490, + "norm_label": "code:mermaid (graph td)", + "id": "docs_orunmila_codeblock_3" }, { - "label": "Task 1: Two-phase candidate load with deferred BLOBs", + "label": "API Key Verification", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", - "source_location": "L27", - "community": 214, - "norm_label": "task 1: two-phase candidate load with deferred blobs", - "id": "plans_2026_09_12_lane2_memory_query_path_task_1_two_phase_candidate_load_with_deferred_blobs" + "source_file": "docs/stocks_api.md", + "source_location": "L40", + "community": 65, + "norm_label": "api key verification", + "id": "docs_stocks_api_api_key_verification" }, { - "label": "code:python (def test_search_defersEmbeddingBlob(db):)", + "label": "Key Management", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", - "source_location": "L40", - "community": 214, - "norm_label": "code:python (def test_search_defersembeddingblob(db):)", - "id": "plans_2026_09_12_lane2_memory_query_path_codeblock_1" + "source_file": "docs/stocks_api.md", + "source_location": "L45", + "community": 65, + "norm_label": "key management", + "id": "docs_stocks_api_key_management" }, { - "label": "code:python (from contextlib import contextmanager)", + "label": "code:json ({)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", - "source_location": "L52", - "community": 214, - "norm_label": "code:python (from contextlib import contextmanager)", - "id": "plans_2026_09_12_lane2_memory_query_path_codeblock_2" + "source_file": "docs/stocks_api.md", + "source_location": "L94", + "community": 65, + "norm_label": "code:json ({)", + "id": "docs_stocks_api_codeblock_9" }, { - "label": "code:python (from sqlalchemy.orm import defer)", + "label": "Brazilian Stocks Market Scraper", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", - "source_location": "L82", - "community": 214, - "norm_label": "code:python (from sqlalchemy.orm import defer)", - "id": "plans_2026_09_12_lane2_memory_query_path_codeblock_3" + "source_file": "docs/scraper_b3.md", + "source_location": "L1", + "community": 83, + "norm_label": "brazilian stocks market scraper", + "id": "docs_scraper_b3_brazilian_stocks_market_scraper" }, { - "label": "code:bash (git add main/app/prometheus/memory.py tests/test_memory_sear)", + "label": "Usage", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", - "source_location": "L111", - "community": 214, - "norm_label": "code:bash (git add main/app/prometheus/memory.py tests/test_memory_sear)", - "id": "plans_2026_09_12_lane2_memory_query_path_codeblock_4" + "source_file": "docs/scraper_b3.md", + "source_location": "L5", + "community": 83, + "norm_label": "usage", + "id": "docs_scraper_b3_usage" }, { - "label": "Task 2: Fuse vector, FULLTEXT and recency scores", + "label": "Output Format", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", - "source_location": "L116", - "community": 214, - "norm_label": "task 2: fuse vector, fulltext and recency scores", - "id": "plans_2026_09_12_lane2_memory_query_path_task_2_fuse_vector_fulltext_and_recency_scores" + "source_file": "docs/scraper_b3.md", + "source_location": "L27", + "community": 83, + "norm_label": "output format", + "id": "docs_scraper_b3_output_format" }, { - "label": "code:python (def test_search_fusesFulltextOverVectorOnly(db):)", + "label": "MySQL Table (b3_stocks)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", - "source_location": "L128", - "community": 214, - "norm_label": "code:python (def test_search_fusesfulltextovervectoronly(db):)", - "id": "plans_2026_09_12_lane2_memory_query_path_codeblock_5" + "source_file": "docs/scraper_b3.md", + "source_location": "L29", + "community": 83, + "norm_label": "mysql table (b3_stocks)", + "id": "docs_scraper_b3_mysql_table_b3_stocks" }, { - "label": "code:python (def minMax(values: list[float]) -> list[float]:)", + "label": "Sample Record", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", - "source_location": "L143", - "community": 214, - "norm_label": "code:python (def minmax(values: list[float]) -> list[float]:)", - "id": "plans_2026_09_12_lane2_memory_query_path_codeblock_6" + "source_file": "docs/scraper_b3.md", + "source_location": "L38", + "community": 83, + "norm_label": "sample record", + "id": "docs_scraper_b3_sample_record" }, { - "label": "code:bash (git add main/app/prometheus/memory.py tests/test_memory_sear)", + "label": "code:json ({)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", - "source_location": "L173", - "community": 214, - "norm_label": "code:bash (git add main/app/prometheus/memory.py tests/test_memory_sear)", - "id": "plans_2026_09_12_lane2_memory_query_path_codeblock_7" + "source_file": "docs/scraper_b3.md", + "source_location": "L40", + "community": 83, + "norm_label": "code:json ({)", + "id": "docs_scraper_b3_codeblock_2" }, { - "label": "2026-09-12-lane4-vector-bench.md", + "label": "Xang\u00f4", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane4-vector-bench.md", - "source_location": "L1", - "community": 540, - "norm_label": "2026-09-12-lane4-vector-bench.md", - "id": "docs_superpowers_plans_2026_09_12_lane4_vector_bench_md" + "source_file": "docs/scraper_b3.md", + "source_location": "L55", + "community": 83, + "norm_label": "xango", + "id": "docs_scraper_b3_xang\u00f4" }, { - "label": "Lane 4: Before/After Bench Implementation Plan", + "label": "Global Score Function", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane4-vector-bench.md", - "source_location": "L1", - "community": 540, - "norm_label": "lane 4: before/after bench implementation plan", - "id": "plans_2026_09_12_lane4_vector_bench_lane_4_before_after_bench_implementation_plan" + "source_file": "docs/scraper_b3.md", + "source_location": "L60", + "community": 83, + "norm_label": "global score function", + "id": "docs_scraper_b3_global_score_function" }, { - "label": "Global Constraints", + "label": "Engines", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane4-vector-bench.md", - "source_location": "L16", - "community": 540, - "norm_label": "global constraints", - "id": "plans_2026_09_12_lane4_vector_bench_global_constraints" + "source_file": "docs/scraper_b3.md", + "source_location": "L69", + "community": 83, + "norm_label": "engines", + "id": "docs_scraper_b3_engines" }, { - "label": "Task 1: Bench script with synthetic scale sweep", + "label": "Profit Quality Gate ($M_{profit}$)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane4-vector-bench.md", - "source_location": "L25", - "community": 540, - "norm_label": "task 1: bench script with synthetic scale sweep", - "id": "plans_2026_09_12_lane4_vector_bench_task_1_bench_script_with_synthetic_scale_sweep" + "source_file": "docs/scraper_b3.md", + "source_location": "L71", + "community": 83, + "norm_label": "profit quality gate ($m_{profit}$)", + "id": "docs_scraper_b3_profit_quality_gate_m_profit" }, { - "label": "code:python (import argparse)", + "label": "Fundamental Engine ($\\Phi$)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane4-vector-bench.md", - "source_location": "L38", - "community": 540, - "norm_label": "code:python (import argparse)", - "id": "plans_2026_09_12_lane4_vector_bench_codeblock_1" + "source_file": "docs/scraper_b3.md", + "source_location": "L76", + "community": 83, + "norm_label": "fundamental engine ($\\phi$)", + "id": "docs_scraper_b3_fundamental_engine_phi" }, { - "label": "code:bash (git add bench/bench_memory_vector.py)", + "label": "Risk-Quality Engine ($\\Omega$)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane4-vector-bench.md", - "source_location": "L100", - "community": 540, - "norm_label": "code:bash (git add bench/bench_memory_vector.py)", - "id": "plans_2026_09_12_lane4_vector_bench_codeblock_2" + "source_file": "docs/scraper_b3.md", + "source_location": "L89", + "community": 83, + "norm_label": "risk-quality engine ($\\omega$)", + "id": "docs_scraper_b3_risk_quality_engine_omega" }, { - "label": "Task 2: Record baseline and post-lane numbers", + "label": "Constraint Engine ($\\Lambda$)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane4-vector-bench.md", - "source_location": "L105", - "community": 540, - "norm_label": "task 2: record baseline and post-lane numbers", - "id": "plans_2026_09_12_lane4_vector_bench_task_2_record_baseline_and_post_lane_numbers" + "source_file": "docs/scraper_b3.md", + "source_location": "L101", + "community": 83, + "norm_label": "constraint engine ($\\lambda$)", + "id": "docs_scraper_b3_constraint_engine_lambda" }, { - "label": "2026-09-12-lane5-vector-scaleup.md", + "label": "Configuration Parameters", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane5-vector-scaleup.md", + "source_file": "docs/scraper_b3.md", + "source_location": "L113", + "community": 83, + "norm_label": "configuration parameters", + "id": "docs_scraper_b3_configuration_parameters" + }, + { + "label": "License", + "file_type": "document", + "source_file": "docs/scraper_b3.md", + "source_location": "L131", + "community": 83, + "norm_label": "license", + "id": "docs_scraper_b3_license" + }, + { + "label": "SWARMS.md", + "file_type": "document", + "source_file": "SWARMS.md", "source_location": "L1", - "community": 213, - "norm_label": "2026-09-12-lane5-vector-scaleup.md", - "id": "docs_superpowers_plans_2026_09_12_lane5_vector_scaleup_md" + "community": 263, + "norm_label": "swarms.md", + "id": "swarms_md" }, { - "label": "Lane 5: Scale-Up Readiness Implementation Plan", + "label": "SWARMS.md \u2014 subagent swarm playbook (OpenCode / Hermes)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane5-vector-scaleup.md", + "source_file": "SWARMS.md", "source_location": "L1", - "community": 213, - "norm_label": "lane 5: scale-up readiness implementation plan", - "id": "plans_2026_09_12_lane5_vector_scaleup_lane_5_scale_up_readiness_implementation_plan" + "community": 263, + "norm_label": "swarms.md \u2014 subagent swarm playbook (opencode / hermes)", + "id": "server_swarms_swarms_md_subagent_swarm_playbook_opencode_hermes" }, { - "label": "Global Constraints", + "label": "1. Prime owns the goal, lanes own the work", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane5-vector-scaleup.md", - "source_location": "L15", - "community": 213, - "norm_label": "global constraints", - "id": "plans_2026_09_12_lane5_vector_scaleup_global_constraints" + "source_file": "SWARMS.md", + "source_location": "L6", + "community": 263, + "norm_label": "1. prime owns the goal, lanes own the work", + "id": "server_swarms_1_prime_owns_the_goal_lanes_own_the_work" }, { - "label": "Task 1: Vector string codec (independent \u2014 run anytime)", + "label": "2. Dispatch: `delegate()`, one per lane, one turn", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane5-vector-scaleup.md", - "source_location": "L25", - "community": 213, - "norm_label": "task 1: vector string codec (independent \u2014 run anytime)", - "id": "plans_2026_09_12_lane5_vector_scaleup_task_1_vector_string_codec_independent_run_anytime" + "source_file": "SWARMS.md", + "source_location": "L12", + "community": 263, + "norm_label": "2. dispatch: `delegate()`, one per lane, one turn", + "id": "server_swarms_2_dispatch_delegate_one_per_lane_one_turn" }, { - "label": "code:python (from main.app.prometheus.vector import toVectorString, fromV)", + "label": "3. Delegate toolsets vary \u2014 verify each lane", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane5-vector-scaleup.md", - "source_location": "L38", - "community": 213, - "norm_label": "code:python (from main.app.prometheus.vector import tovectorstring, fromv)", - "id": "plans_2026_09_12_lane5_vector_scaleup_codeblock_1" + "source_file": "SWARMS.md", + "source_location": "L20", + "community": 263, + "norm_label": "3. delegate toolsets vary \u2014 verify each lane", + "id": "server_swarms_3_delegate_toolsets_vary_verify_each_lane" }, { - "label": "code:python (def toVectorString(vec: list[float]) -> str:)", + "label": "4. Trust nothing \u2014 verify everything", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane5-vector-scaleup.md", - "source_location": "L62", - "community": 213, - "norm_label": "code:python (def tovectorstring(vec: list[float]) -> str:)", - "id": "plans_2026_09_12_lane5_vector_scaleup_codeblock_2" + "source_file": "SWARMS.md", + "source_location": "L26", + "community": 263, + "norm_label": "4. trust nothing \u2014 verify everything", + "id": "server_swarms_4_trust_nothing_verify_everything" }, { - "label": "code:bash (git add main/app/prometheus/vector.py tests/test_vector_norm)", + "label": "5. Windows PowerShell survival", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane5-vector-scaleup.md", - "source_location": "L82", - "community": 213, - "norm_label": "code:bash (git add main/app/prometheus/vector.py tests/test_vector_norm)", - "id": "plans_2026_09_12_lane5_vector_scaleup_codeblock_3" + "source_file": "SWARMS.md", + "source_location": "L33", + "community": 263, + "norm_label": "5. windows powershell survival", + "id": "server_swarms_5_windows_powershell_survival" }, { - "label": "Task 2: Per-process matrix cache (gated on lanes 1+2 merge)", + "label": "6. Finish per lane, not per swarm", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane5-vector-scaleup.md", - "source_location": "L87", - "community": 213, - "norm_label": "task 2: per-process matrix cache (gated on lanes 1+2 merge)", - "id": "plans_2026_09_12_lane5_vector_scaleup_task_2_per_process_matrix_cache_gated_on_lanes_1_2_merge" + "source_file": "SWARMS.md", + "source_location": "L39", + "community": 263, + "norm_label": "6. finish per lane, not per swarm", + "id": "server_swarms_6_finish_per_lane_not_per_swarm" }, { - "label": "code:python (import numpy as np)", + "label": "7. Standing bans (this repo)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane5-vector-scaleup.md", - "source_location": "L101", - "community": 213, - "norm_label": "code:python (import numpy as np)", - "id": "plans_2026_09_12_lane5_vector_scaleup_codeblock_4" + "source_file": "SWARMS.md", + "source_location": "L45", + "community": 263, + "norm_label": "7. standing bans (this repo)", + "id": "server_swarms_7_standing_bans_this_repo" }, { - "label": "code:python (import numpy as np)", + "label": "prometheus.md", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane5-vector-scaleup.md", - "source_location": "L129", - "community": 213, - "norm_label": "code:python (import numpy as np)", - "id": "plans_2026_09_12_lane5_vector_scaleup_codeblock_5" + "source_file": "docs/prometheus.md", + "source_location": "L1", + "community": 156, + "norm_label": "prometheus.md", + "id": "docs_prometheus_md" }, { - "label": "code:bash (git add main/app/prometheus/matrix_cache.py main/app/prometh)", + "label": "Prometheus", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane5-vector-scaleup.md", - "source_location": "L158", - "community": 213, - "norm_label": "code:bash (git add main/app/prometheus/matrix_cache.py main/app/prometh)", - "id": "plans_2026_09_12_lane5_vector_scaleup_codeblock_6" + "source_file": "docs/prometheus.md", + "source_location": "L1", + "community": 156, + "norm_label": "prometheus", + "id": "docs_prometheus_prometheus" }, { - "label": "Task 3: Scale-up runbook (gated on Task 2)", + "label": "Usage", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane5-vector-scaleup.md", - "source_location": "L163", - "community": 213, - "norm_label": "task 3: scale-up runbook (gated on task 2)", - "id": "plans_2026_09_12_lane5_vector_scaleup_task_3_scale_up_runbook_gated_on_task_2" + "source_file": "docs/prometheus.md", + "source_location": "L9", + "community": 156, + "norm_label": "usage", + "id": "docs_prometheus_usage" }, { - "label": "code:bash (git add docs/vector-scaleup-runbook.md)", + "label": "code:env (#)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane5-vector-scaleup.md", - "source_location": "L183", - "community": 213, - "norm_label": "code:bash (git add docs/vector-scaleup-runbook.md)", - "id": "plans_2026_09_12_lane5_vector_scaleup_codeblock_7" + "source_file": "docs/prometheus.md", + "source_location": "L11", + "community": 156, + "norm_label": "code:env (#)", + "id": "docs_prometheus_codeblock_1" }, { - "label": "2026-09-12-vector-lanes-spec.md", + "label": "code:bash (python __init__.py)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-vector-lanes-spec.md", - "source_location": "L1", - "community": 558, - "norm_label": "2026-09-12-vector-lanes-spec.md", - "id": "docs_superpowers_plans_2026_09_12_vector_lanes_spec_md" + "source_file": "docs/prometheus.md", + "source_location": "L51", + "community": 156, + "norm_label": "code:bash (python __init__.py)", + "id": "docs_prometheus_codeblock_2" }, { - "label": "Vector Lanes Spec (1, 2, 4, 5)", + "label": "Workflow", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-vector-lanes-spec.md", - "source_location": "L1", - "community": 558, - "norm_label": "vector lanes spec (1, 2, 4, 5)", - "id": "plans_2026_09_12_vector_lanes_spec_vector_lanes_spec_1_2_4_5" + "source_file": "docs/prometheus.md", + "source_location": "L55", + "community": 156, + "norm_label": "workflow", + "id": "docs_prometheus_workflow" }, { - "label": "Current code (exact)", + "label": "code:mermaid (graph TD)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-vector-lanes-spec.md", - "source_location": "L8", - "community": 558, - "norm_label": "current code (exact)", - "id": "plans_2026_09_12_vector_lanes_spec_current_code_exact" + "source_file": "docs/prometheus.md", + "source_location": "L57", + "community": 156, + "norm_label": "code:mermaid (graph td)", + "id": "docs_prometheus_codeblock_3" }, { - "label": "Lane contracts (interfaces between lanes)", + "label": "API Endpoints", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-vector-lanes-spec.md", - "source_location": "L32", - "community": 558, - "norm_label": "lane contracts (interfaces between lanes)", - "id": "plans_2026_09_12_vector_lanes_spec_lane_contracts_interfaces_between_lanes" + "source_file": "docs/prometheus.md", + "source_location": "L67", + "community": 156, + "norm_label": "api endpoints", + "id": "docs_prometheus_api_endpoints" }, { - "label": "MdocMessage.jsx", - "file_type": "code", - "source_file": "frontend/src/components/MdocMessage.jsx", + "label": "License", + "file_type": "document", + "source_file": "docs/prometheus.md", + "source_location": "L74", + "community": 156, + "norm_label": "license", + "id": "docs_prometheus_license" + }, + { + "label": "PONYTAIL.md", + "file_type": "document", + "source_file": "PONYTAIL.md", "source_location": "L1", - "community": 211, - "norm_label": "mdocmessage.jsx", - "id": "frontend_src_components_mdocmessage_jsx" + "community": 509, + "norm_label": "ponytail.md", + "id": "ponytail_md" }, { - "label": "COMPONENTS", - "file_type": "code", - "source_file": "frontend/src/components/MdocMessage.jsx", - "source_location": "L5", - "community": 211, - "norm_label": "components", - "id": "components_mdocmessage_components" + "label": "PONYTAIL.md \u2014 proposed cuts, NOT applied. Approve before any edit.", + "file_type": "document", + "source_file": "PONYTAIL.md", + "source_location": "L1", + "community": 509, + "norm_label": "ponytail.md \u2014 proposed cuts, not applied. approve before any edit.", + "id": "server_ponytail_ponytail_md_proposed_cuts_not_applied_approve_before_any_edit" }, { - "label": "ALLOWED", - "file_type": "code", - "source_file": "frontend/src/components/MdocMessage.jsx", - "source_location": "L88", - "community": 211, - "norm_label": "allowed", - "id": "components_mdocmessage_allowed" + "label": "Proposed (awaiting approval)", + "file_type": "document", + "source_file": "PONYTAIL.md", + "source_location": "L6", + "community": 509, + "norm_label": "proposed (awaiting approval)", + "id": "server_ponytail_proposed_awaiting_approval" }, { - "label": "MdocMessage()", - "file_type": "code", - "source_file": "frontend/src/components/MdocMessage.jsx", - "source_location": "L94", - "community": 211, - "norm_label": "mdocmessage()", - "id": "components_mdocmessage_mdocmessage" + "label": "Disputed (already litigated \u2014 needs your ruling to proceed)", + "file_type": "document", + "source_file": "PONYTAIL.md", + "source_location": "L64", + "community": 509, + "norm_label": "disputed (already litigated \u2014 needs your ruling to proceed)", + "id": "server_ponytail_disputed_already_litigated_needs_your_ruling_to_proceed" }, { - "label": "prometheus-components.jsx", - "file_type": "code", - "source_file": "frontend/src/lib/prometheus-components.jsx", - "source_location": "L1", - "community": 164, - "norm_label": "prometheus-components.jsx", - "id": "frontend_src_lib_prometheus_components_jsx" + "label": "Held out (your ignore rules \u2014 not proposed)", + "file_type": "document", + "source_file": "PONYTAIL.md", + "source_location": "L72", + "community": 509, + "norm_label": "held out (your ignore rules \u2014 not proposed)", + "id": "server_ponytail_held_out_your_ignore_rules_not_proposed" }, { - "label": "StatCard", + "label": "Refused", + "file_type": "document", + "source_file": "PONYTAIL.md", + "source_location": "L78", + "community": 509, + "norm_label": "refused", + "id": "server_ponytail_refused" + }, + { + "label": "getDeviceName()", "file_type": "code", - "source_file": "frontend/src/lib/prometheus-components.jsx", - "source_location": "L9", - "community": 164, - "norm_label": "statcard", - "id": "lib_prometheus_components_statcard" + "source_file": "main/app/authentication/session.py", + "source_location": "L14", + "community": 149, + "norm_label": "getdevicename()", + "id": "authentication_session_getdevicename" }, { - "label": "DataTable", + "label": "walk()", "file_type": "code", - "source_file": "frontend/src/lib/prometheus-components.jsx", - "source_location": "L39", - "community": 164, - "norm_label": "datatable", - "id": "lib_prometheus_components_datatable" + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L46", + "community": 194, + "norm_label": "walk()", + "id": "stocks_api_compress_walk" }, { - "label": "BarChart", + "label": "toColumnar()", "file_type": "code", - "source_file": "frontend/src/lib/prometheus-components.jsx", - "source_location": "L82", - "community": 164, - "norm_label": "barchart", - "id": "lib_prometheus_components_barchart" + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L75", + "community": 194, + "norm_label": "tocolumnar()", + "id": "stocks_api_compress_tocolumnar" }, { - "label": "ContentCard", + "label": "fixHeaders()", "file_type": "code", - "source_file": "frontend/src/lib/prometheus-components.jsx", - "source_location": "L123", - "community": 164, - "norm_label": "contentcard", - "id": "lib_prometheus_components_contentcard" + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L84", + "community": 194, + "norm_label": "fixheaders()", + "id": "stocks_api_compress_fixheaders" }, { - "label": "TabGroup", + "label": "StocksQueryManager", "file_type": "code", - "source_file": "frontend/src/lib/prometheus-components.jsx", - "source_location": "L148", - "community": 164, - "norm_label": "tabgroup", - "id": "lib_prometheus_components_tabgroup" + "source_file": "main/app/stocks_api/query.py", + "source_location": "L54", + "community": 63, + "norm_label": "stocksquerymanager", + "id": "stocks_api_query_stocksquerymanager" }, { - "label": "TabPanel", + "label": ".__init__()", "file_type": "code", - "source_file": "frontend/src/lib/prometheus-components.jsx", - "source_location": "L158", - "community": 164, - "norm_label": "tabpanel", - "id": "lib_prometheus_components_tabpanel" + "source_file": "main/app/stocks_api/query.py", + "source_location": "L55", + "community": 63, + "norm_label": ".__init__()", + "id": "stocks_api_query_stocksquerymanager_init" }, { - "label": "AccordionItem", + "label": ".baseFrame()", "file_type": "code", - "source_file": "frontend/src/lib/prometheus-components.jsx", - "source_location": "L179", - "community": 164, - "norm_label": "accordionitem", - "id": "lib_prometheus_components_accordionitem" + "source_file": "main/app/stocks_api/query.py", + "source_location": "L58", + "community": 63, + "norm_label": ".baseframe()", + "id": "stocks_api_query_stocksquerymanager_baseframe" }, { - "label": "ProgressFill", + "label": ".finalize()", "file_type": "code", - "source_file": "frontend/src/lib/prometheus-components.jsx", - "source_location": "L202", - "community": 164, - "norm_label": "progressfill", - "id": "lib_prometheus_components_progressfill" + "source_file": "main/app/stocks_api/query.py", + "source_location": "L69", + "community": 63, + "norm_label": ".finalize()", + "id": "stocks_api_query_stocksquerymanager_finalize" }, { - "label": "Divider", + "label": ".deserializeJsonColumns()", "file_type": "code", - "source_file": "frontend/src/lib/prometheus-components.jsx", - "source_location": "L226", - "community": 164, - "norm_label": "divider", - "id": "lib_prometheus_components_divider" + "source_file": "main/app/stocks_api/query.py", + "source_location": "L109", + "community": 63, + "norm_label": ".deserializejsoncolumns()", + "id": "stocks_api_query_stocksquerymanager_deserializejsoncolumns" }, { - "label": "P5: register the scraper cron jobs on the shared scheduler. Kept in this", - "file_type": "rationale", - "source_file": "main/service/scraper_service.py", - "source_location": "L23", - "community": 563, - "norm_label": "p5: register the scraper cron jobs on the shared scheduler. kept in this", - "id": "service_scraper_service_rationale_23" + "label": ".filterBySearchTerms()", + "file_type": "code", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L136", + "community": 63, + "norm_label": ".filterbysearchterms()", + "id": "stocks_api_query_stocksquerymanager_filterbysearchterms" }, { - "label": "registerSessionCleanupJobs()", + "label": ".queryHistorical()", "file_type": "code", - "source_file": "main/service/user_service.py", - "source_location": "L46", - "community": 72, - "norm_label": "registersessioncleanupjobs()", - "id": "service_user_service_registersessioncleanupjobs" + "source_file": "main/app/stocks_api/query.py", + "source_location": "L153", + "community": 63, + "norm_label": ".queryhistorical()", + "id": "stocks_api_query_stocksquerymanager_queryhistorical" }, { - "label": "P5: register the session-cleanup job on the shared scheduler. Kept in thi", - "file_type": "rationale", - "source_file": "main/service/user_service.py", - "source_location": "L47", - "community": 72, - "norm_label": "p5: register the session-cleanup job on the shared scheduler. kept in thi", - "id": "service_user_service_rationale_47" + "label": ".queryFundamental()", + "file_type": "code", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L220", + "community": 63, + "norm_label": ".queryfundamental()", + "id": "stocks_api_query_stocksquerymanager_queryfundamental" }, { - "label": "CODE_REVIEW_REPORT_FINAL.md", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_FINAL.md", - "source_location": "L1", - "community": 212, - "norm_label": "code_review_report_final.md", - "id": "code_review_report_final_md" + "label": ".queryCotations()", + "file_type": "code", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L284", + "community": 63, + "norm_label": ".querycotations()", + "id": "stocks_api_query_stocksquerymanager_querycotations" }, { - "label": "Final Code Review & Regrade", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_FINAL.md", - "source_location": "L1", - "community": 212, - "norm_label": "final code review & regrade", - "id": "server_code_review_report_final_final_code_review_regrade" + "label": ".queryLiveCotation()", + "file_type": "code", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L331", + "community": 63, + "norm_label": ".querylivecotation()", + "id": "stocks_api_query_stocksquerymanager_querylivecotation" }, { - "label": "Grade card", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_FINAL.md", - "source_location": "L8", - "community": 212, - "norm_label": "grade card", - "id": "server_code_review_report_final_grade_card" + "label": "getHistoricalFields()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L89", + "community": 80, + "norm_label": "gethistoricalfields()", + "id": "prometheus_compact_gethistoricalfields" }, { - "label": "Finding verdicts", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_FINAL.md", - "source_location": "L18", - "community": 212, - "norm_label": "finding verdicts", - "id": "server_code_review_report_final_finding_verdicts" + "label": "getFundamentalColumns()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L93", + "community": 80, + "norm_label": "getfundamentalcolumns()", + "id": "prometheus_compact_getfundamentalcolumns" }, { - "label": "Architecture (from phase-0 envelope, spot-confirmed)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_FINAL.md", - "source_location": "L20", - "community": 212, - "norm_label": "architecture (from phase-0 envelope, spot-confirmed)", - "id": "server_code_review_report_final_architecture_from_phase_0_envelope_spot_confirmed" + "label": "invalidateFieldData()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L97", + "community": 80, + "norm_label": "invalidatefielddata()", + "id": "prometheus_compact_invalidatefielddata" }, { - "label": "Security (from phase-0 envelope, spot-confirmed)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_FINAL.md", - "source_location": "L32", - "community": 212, - "norm_label": "security (from phase-0 envelope, spot-confirmed)", - "id": "server_code_review_report_final_security_from_phase_0_envelope_spot_confirmed" + "label": "matrixKey()", + "file_type": "code", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L31", + "community": 53, + "norm_label": "matrixkey()", + "id": "prometheus_memory_matrixkey" }, { - "label": "Code quality (own regrade)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_FINAL.md", - "source_location": "L37", - "community": 212, - "norm_label": "code quality (own regrade)", - "id": "server_code_review_report_final_code_quality_own_regrade" + "label": "matrixUserTag()", + "file_type": "code", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L38", + "community": 53, + "norm_label": "matrixusertag()", + "id": "prometheus_memory_matrixusertag" }, { - "label": "Performance (own regrade)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_FINAL.md", - "source_location": "L45", - "community": 212, - "norm_label": "performance (own regrade)", - "id": "server_code_review_report_final_performance_own_regrade" + "label": "countTokensCached()", + "file_type": "code", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L450", + "community": 80, + "norm_label": "counttokenscached()", + "id": "prometheus_memory_counttokenscached" }, { - "label": "Requirements/coverage (own regrade)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_FINAL.md", - "source_location": "L52", - "community": 212, - "norm_label": "requirements/coverage (own regrade)", - "id": "server_code_review_report_final_requirements_coverage_own_regrade" + "label": "sync_cache()", + "file_type": "code", + "source_file": "main/app/stocks_api/sync_cache.py", + "source_location": "L13", + "community": 511, + "norm_label": "sync_cache()", + "id": "stocks_api_sync_cache_sync_cache" }, { - "label": "New issues (severity-ordered; envelope items restated with evidence, mine marked \u2605)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_FINAL.md", - "source_location": "L58", - "community": 212, - "norm_label": "new issues (severity-ordered; envelope items restated with evidence, mine marked \u2605)", - "id": "server_code_review_report_final_new_issues_severity_ordered_envelope_items_restated_with_evidence_mine_marked" + "label": "write_bytes()", + "file_type": "code", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L194", + "community": 69, + "norm_label": "write_bytes()", + "id": "prometheus_sandbox_write_bytes" }, { - "label": "Merge-blockers", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_FINAL.md", - "source_location": "L68", - "community": 212, - "norm_label": "merge-blockers", - "id": "server_code_review_report_final_merge_blockers" + "label": "ensureFastmcp()", + "file_type": "code", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L10", + "community": 12, + "norm_label": "ensurefastmcp()", + "id": "prometheus_mcp_ensurefastmcp" }, { - "label": "Deliberate non-changes (do not \"fix\")", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_FINAL.md", - "source_location": "L74", - "community": 212, - "norm_label": "deliberate non-changes (do not \"fix\")", - "id": "server_code_review_report_final_deliberate_non_changes_do_not_fix" + "label": "getMatrixAsync()", + "file_type": "code", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L43", + "community": 53, + "norm_label": "getmatrixasync()", + "id": "prometheus_memory_getmatrixasync" }, { - "label": "Follow-ups", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_FINAL.md", - "source_location": "L85", - "community": 212, - "norm_label": "follow-ups", - "id": "server_code_review_report_final_follow_ups" + "label": "invalidateUserAsync()", + "file_type": "code", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L55", + "community": 53, + "norm_label": "invalidateuserasync()", + "id": "prometheus_memory_invalidateuserasync" }, { - "label": "__init__.py", + "label": "clearAllAsync()", "file_type": "code", - "source_file": "main/models/__init__.py", - "source_location": "L1", - "community": 271, - "norm_label": "__init__.py", - "id": "main_models_init_py" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L59", + "community": 53, + "norm_label": "clearallasync()", + "id": "prometheus_memory_clearallasync" }, { - "label": "CODE_REVIEW_REPORT.md", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L1", - "community": 161, - "norm_label": "code_review_report.md", - "id": "code_review_report_md" + "label": "upsertMemoryAsync()", + "file_type": "code", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L244", + "community": 53, + "norm_label": "upsertmemoryasync()", + "id": "prometheus_memory_upsertmemoryasync" }, { - "label": "Code Review Report \u2014 Mansa Server", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L1", - "community": 160, - "norm_label": "code review report \u2014 mansa server", - "id": "server_code_review_report_code_review_report_mansa_server" + "label": "searchAsync()", + "file_type": "code", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L333", + "community": 13, + "norm_label": "searchasync()", + "id": "prometheus_memory_searchasync" }, { - "label": "Table of Contents", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L11", - "community": 160, - "norm_label": "table of contents", - "id": "server_code_review_report_table_of_contents" + "label": "deleteMemoryAsync()", + "file_type": "code", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L483", + "community": 53, + "norm_label": "deletememoryasync()", + "id": "prometheus_memory_deletememoryasync" }, { - "label": "Executive Summary", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L31", - "community": 161, - "norm_label": "executive summary", - "id": "server_code_review_report_executive_summary" + "label": "Search user's saved memories, preferences, and past analysis context. Use", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L20", + "community": 152, + "norm_label": "search user's saved memories, preferences, and past analysis context. use", + "id": "prometheus_tools_rationale_20" }, { - "label": "\u00a71 Project Structure & Layout \u2014 7/10 (Pass)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L54", - "community": 204, - "norm_label": "\u00a71 project structure & layout \u2014 7/10 (pass)", - "id": "server_code_review_report_1_project_structure_layout_7_10_pass" + "label": "Store a memory about the user's preferences, analysis results, or feedback.", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L50", + "community": 126, + "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", + "id": "prometheus_tools_rationale_50" }, { - "label": "code:block1 (run.py / config.py / alembic.ini)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L58", - "community": 204, - "norm_label": "code:block1 (run.py / config.py / alembic.ini)", - "id": "server_code_review_report_codeblock_1" + "label": "Execute Python code in an isolated sandbox. Use for quantitative analysis,", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L91", + "community": 487, + "norm_label": "execute python code in an isolated sandbox. use for quantitative analysis,", + "id": "prometheus_tools_rationale_91" }, { - "label": "\u00a72 Service/Business Separation \u2014 MVC 4/10 (Historical layering score)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L83", - "community": 160, - "norm_label": "\u00a72 service/business separation \u2014 mvc 4/10 (historical layering score)", - "id": "server_code_review_report_2_service_business_separation_mvc_4_10_historical_layering_score" + "label": "Read a file from the workspace. Args: path: Path to the file (e.", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L112", + "community": 208, + "norm_label": "read a file from the workspace. args: path: path to the file (e.", + "id": "prometheus_tools_rationale_112" }, { - "label": "\u00a72.1 BOX-ISOLATION AUDIT \u2014 6.5/10 (Authoritative per user m00022)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L101", - "community": 205, - "norm_label": "\u00a72.1 box-isolation audit \u2014 6.5/10 (authoritative per user m00022)", - "id": "server_code_review_report_2_1_box_isolation_audit_6_5_10_authoritative_per_user_m00022" + "label": "Write a file to the workspace. Use this to save data files (CSV, JSON, scri", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L126", + "community": 529, + "norm_label": "write a file to the workspace. use this to save data files (csv, json, scri", + "id": "prometheus_tools_rationale_126" }, { - "label": "2.1.1 Enumerated services and `app/` paths", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L107", - "community": 205, - "norm_label": "2.1.1 enumerated services and `app/` paths", - "id": "server_code_review_report_2_1_1_enumerated_services_and_app_paths" + "label": "List files in the workspace directory. Args: path: Directory pat", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L142", + "community": 523, + "norm_label": "list files in the workspace directory. args: path: directory pat", + "id": "prometheus_tools_rationale_142" }, { - "label": "2.1.2 Violation table V1\u2013V7 (verbatim import lines with file:line)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L118", - "community": 205, - "norm_label": "2.1.2 violation table v1\u2013v7 (verbatim import lines with file:line)", - "id": "server_code_review_report_2_1_2_violation_table_v1_v7_verbatim_import_lines_with_file_line" + "label": "Get a download link for a workspace file to share with the user. Use this", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L155", + "community": 529, + "norm_label": "get a download link for a workspace file to share with the user. use this", + "id": "prometheus_tools_rationale_155" }, { - "label": "2.1.3 Deletion matrix \u2014 \u201cdeleting `app/` or service of Y must not break X\u201d (strict)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L140", - "community": 205, - "norm_label": "2.1.3 deletion matrix \u2014 \u201cdeleting `app/` or service of y must not break x\u201d (strict)", - "id": "server_code_review_report_2_1_3_deletion_matrix_deleting_app_or_service_of_y_must_not_break_x_strict" + "label": "Write-Fix()", + "file_type": "code", + "source_file": "ci.ps1", + "source_location": "L48", + "community": 203, + "norm_label": "write-fix()", + "id": "server_ci_write_fix" }, { - "label": "2.1.4 Scores with rubric", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L154", - "community": 205, - "norm_label": "2.1.4 scores with rubric", - "id": "server_code_review_report_2_1_4_scores_with_rubric" + "label": "saveMessage()", + "file_type": "code", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L52", + "community": 125, + "norm_label": "savemessage()", + "id": "prometheus_chat_savemessage" }, { - "label": "2.1.5 Shared-kernel analysis", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L169", - "community": 205, - "norm_label": "2.1.5 shared-kernel analysis", - "id": "server_code_review_report_2_1_5_shared_kernel_analysis" + "label": "saveLoopEvent()", + "file_type": "code", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L76", + "community": 125, + "norm_label": "saveloopevent()", + "id": "prometheus_chat_saveloopevent" }, { - "label": "2.1.6 Phased fix", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L183", - "community": 205, - "norm_label": "2.1.6 phased fix", - "id": "server_code_review_report_2_1_6_phased_fix" + "label": "Search user's saved memories, preferences, and past analysis context. Use", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L19", + "community": 152, + "norm_label": "search user's saved memories, preferences, and past analysis context. use", + "id": "prometheus_tools_rationale_19" }, { - "label": "Phase 0 \u2014 Stop the bleed (no package moves, <1 day, removes hard break)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L185", - "community": 205, - "norm_label": "phase 0 \u2014 stop the bleed (no package moves, <1 day, removes hard break)", - "id": "server_code_review_report_phase_0_stop_the_bleed_no_package_moves_1_day_removes_hard_break" + "label": "Store a memory about the user's preferences, analysis results, or feedback.", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L49", + "community": 126, + "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", + "id": "prometheus_tools_rationale_49" }, { - "label": "Phase 1 \u2014 Extract `shared/` package (3\u20135 days, proper kernel)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L196", - "community": 204, - "norm_label": "phase 1 \u2014 extract `shared/` package (3\u20135 days, proper kernel)", - "id": "server_code_review_report_phase_1_extract_shared_package_3_5_days_proper_kernel" + "label": "Execute Python code in an isolated sandbox. Use for quantitative analysis,", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L90", + "community": 487, + "norm_label": "execute python code in an isolated sandbox. use for quantitative analysis,", + "id": "prometheus_tools_rationale_90" }, { - "label": "code:block2 (shared/)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L198", - "community": 204, - "norm_label": "code:block2 (shared/)", - "id": "server_code_review_report_codeblock_2" + "label": "Read a file from the workspace. Args: path: Path to the file (e.", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L111", + "community": 208, + "norm_label": "read a file from the workspace. args: path: path to the file (e.", + "id": "prometheus_tools_rationale_111" }, { - "label": "Phase 2 \u2014 Enforce via CI gate + verification (1 day)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L229", - "community": 205, - "norm_label": "phase 2 \u2014 enforce via ci gate + verification (1 day)", - "id": "server_code_review_report_phase_2_enforce_via_ci_gate_verification_1_day" + "label": "Write a file to the workspace. Use this to save data files (CSV, JSON, scri", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L125", + "community": 529, + "norm_label": "write a file to the workspace. use this to save data files (csv, json, scri", + "id": "prometheus_tools_rationale_125" }, { - "label": "code:powershell (ruff check . && ruff format --check .)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L240", - "community": 205, - "norm_label": "code:powershell (ruff check . && ruff format --check .)", - "id": "server_code_review_report_codeblock_3" + "label": "List files in the workspace directory. Args: path: Directory pat", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L141", + "community": 525, + "norm_label": "list files in the workspace directory. args: path: directory pat", + "id": "prometheus_tools_rationale_141" }, { - "label": "\u00a72.2 CODE EFFICIENCY \u2014 O(n\u00b2), Complexity & Blob Anti-Patterns", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L252", - "community": 230, - "norm_label": "\u00a72.2 code efficiency \u2014 o(n2), complexity & blob anti-patterns", - "id": "server_code_review_report_2_2_code_efficiency_o_n2_complexity_blob_anti_patterns" + "label": "Get a download link for a workspace file to share with the user. Use this", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L154", + "community": 523, + "norm_label": "get a download link for a workspace file to share with the user. use this", + "id": "prometheus_tools_rationale_154" }, { - "label": "2.2.1 Complexity hotspots table (H1\u2013H17 condensed to P0/P1/P2)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L258", - "community": 230, - "norm_label": "2.2.1 complexity hotspots table (h1\u2013h17 condensed to p0/p1/p2)", - "id": "server_code_review_report_2_2_1_complexity_hotspots_table_h1_h17_condensed_to_p0_p1_p2" + "label": "hashKey()", + "file_type": "code", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L17", + "community": 26, + "norm_label": "hashkey()", + "id": "stocks_api_key_hashkey" }, { - "label": "2.2.2 Blob inventory (LOC table + SRP evidence)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L282", - "community": 230, - "norm_label": "2.2.2 blob inventory (loc table + srp evidence)", - "id": "server_code_review_report_2_2_2_blob_inventory_loc_table_srp_evidence" + "label": "JSONBytesResponse", + "file_type": "code", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L23", + "community": 169, + "norm_label": "jsonbytesresponse", + "id": "controller_stocksapi_controller_jsonbytesresponse" }, { - "label": "2.2.3 Mass data loads", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L299", - "community": 230, - "norm_label": "2.2.3 mass data loads", - "id": "server_code_review_report_2_2_3_mass_data_loads" + "label": "FastAPIResponse", + "file_type": "code", + "source_file": "", + "source_location": "", + "community": 169, + "norm_label": "fastapiresponse", + "id": "fastapiresponse" }, { - "label": "code:block4 (scraper.py:44 671 LOC \u2014 mass loads: SELECT * fetchma)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L314", - "community": 230, - "norm_label": "code:block4 (scraper.py:44 671 loc \u2014 mass loads: select * fetchma)", - "id": "server_code_review_report_codeblock_4" + "label": ".render()", + "file_type": "code", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L26", + "community": 169, + "norm_label": ".render()", + "id": "controller_stocksapi_controller_jsonbytesresponse_render" }, { - "label": "2.2.4 Phased fix roadmap (P0/P1/P2)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L325", - "community": 230, - "norm_label": "2.2.4 phased fix roadmap (p0/p1/p2)", - "id": "server_code_review_report_2_2_4_phased_fix_roadmap_p0_p1_p2" + "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": "P0 \u2014 Stop the bleed (no package moves, <1 day) \u2014 hoist H10 + gate H1/H2 + split scraper/query seams", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L329", - "community": 230, - "norm_label": "p0 \u2014 stop the bleed (no package moves, <1 day) \u2014 hoist h10 + gate h1/h2 + split scraper/query seams", - "id": "server_code_review_report_p0_stop_the_bleed_no_package_moves_1_day_hoist_h10_gate_h1_h2_split_scraper_query_seams" + "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": "P1 \u2014 Decouple blobs (3\u20135 days) \u2014 memory/agent splits + pgvector + query/compact splits", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L341", - "community": 230, - "norm_label": "p1 \u2014 decouple blobs (3\u20135 days) \u2014 memory/agent splits + pgvector + query/compact splits", - "id": "server_code_review_report_p1_decouple_blobs_3_5_days_memory_agent_splits_pgvector_query_compact_splits" - }, - { - "label": "code:powershell (ruff check . && ruff format --check .)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L354", - "community": 230, - "norm_label": "code:powershell (ruff check . && ruff format --check .)", - "id": "server_code_review_report_codeblock_5" + "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": "P2 \u2014 Harden cache & tokenizer (1\u20132 days) \u2014 double-buffer + tokenizer memoization", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L363", - "community": 230, - "norm_label": "p2 \u2014 harden cache & tokenizer (1\u20132 days) \u2014 double-buffer + tokenizer memoization", - "id": "server_code_review_report_p2_harden_cache_tokenizer_1_2_days_double_buffer_tokenizer_memoization" + "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": "code:powershell (pytest tests/test_stocks_cache_concurrency.py -v # ThreadPo)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L375", - "community": 230, - "norm_label": "code:powershell (pytest tests/test_stocks_cache_concurrency.py -v # threadpo)", - "id": "server_code_review_report_codeblock_6" + "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": "\u00a73 Data Access & ORM \u2014 6/10 (Conditional)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L385", - "community": 160, - "norm_label": "\u00a73 data access & orm \u2014 6/10 (conditional)", - "id": "server_code_review_report_3_data_access_orm_6_10_conditional" + "label": "Load historical/fundamental field names via STOCKS_API /fields endpoint, caching", + "file_type": "rationale", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L97", + "community": 80, + "norm_label": "load historical/fundamental field names via stocks_api /fields endpoint, caching", + "id": "prometheus_compact_rationale_97" }, { - "label": "\u00a74 API Design & Validation \u2014 6.5/10 (Conditional)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L399", - "community": 160, - "norm_label": "\u00a74 api design & validation \u2014 6.5/10 (conditional)", - "id": "server_code_review_report_4_api_design_validation_6_5_10_conditional" + "label": "matrix_cache.py", + "file_type": "code", + "source_file": "main/app/prometheus/matrix_cache.py", + "source_location": "L1", + "community": 526, + "norm_label": "matrix_cache.py", + "id": "main_app_prometheus_matrix_cache_py" }, { - "label": "\u00a75 Security & Auth \u2014 5.5/10 (Conditional)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L414", - "community": 160, - "norm_label": "\u00a75 security & auth \u2014 5.5/10 (conditional)", - "id": "server_code_review_report_5_security_auth_5_5_10_conditional" + "label": "buildKey()", + "file_type": "code", + "source_file": "main/app/prometheus/matrix_cache.py", + "source_location": "L21", + "community": 526, + "norm_label": "buildkey()", + "id": "prometheus_matrix_cache_buildkey" }, { - "label": "\u00a76 Performance & Caching \u2014 6/10 (Conditional)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L429", - "community": 160, - "norm_label": "\u00a76 performance & caching \u2014 6/10 (conditional)", - "id": "server_code_review_report_6_performance_caching_6_10_conditional" + "label": "runAwait()", + "file_type": "code", + "source_file": "main/app/prometheus/matrix_cache.py", + "source_location": "L28", + "community": 526, + "norm_label": "runawait()", + "id": "prometheus_matrix_cache_runawait" }, { - "label": "\u00a77 Testing & Coverage \u2014 7/10 (Pass)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L443", - "community": 160, - "norm_label": "\u00a77 testing & coverage \u2014 7/10 (pass)", - "id": "server_code_review_report_7_testing_coverage_7_10_pass" + "label": "getMatrix()", + "file_type": "code", + "source_file": "main/app/prometheus/matrix_cache.py", + "source_location": "L32", + "community": 526, + "norm_label": "getmatrix()", + "id": "prometheus_matrix_cache_getmatrix" }, { - "label": "\u00a78 DevOps & Config \u2014 6/10 (Conditional)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L456", - "community": 160, - "norm_label": "\u00a78 devops & config \u2014 6/10 (conditional)", - "id": "server_code_review_report_8_devops_config_6_10_conditional" + "label": "invalidateUser()", + "file_type": "code", + "source_file": "main/app/prometheus/matrix_cache.py", + "source_location": "L44", + "community": 526, + "norm_label": "invalidateuser()", + "id": "prometheus_matrix_cache_invalidateuser" }, { - "label": "Conclusions & Roadmap", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L471", - "community": 160, - "norm_label": "conclusions & roadmap", - "id": "server_code_review_report_conclusions_roadmap" + "label": "clearAll()", + "file_type": "code", + "source_file": "main/app/prometheus/matrix_cache.py", + "source_location": "L54", + "community": 526, + "norm_label": "clearall()", + "id": "prometheus_matrix_cache_clearall" }, { - "label": "Appendix A: Graphify Verification", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L487", - "community": 160, - "norm_label": "appendix a: graphify verification", - "id": "server_code_review_report_appendix_a_graphify_verification" + "label": "bench_memory_vector.py", + "file_type": "code", + "source_file": "bench/bench_memory_vector.py", + "source_location": "L1", + "community": 13, + "norm_label": "bench_memory_vector.py", + "id": "bench_bench_memory_vector_py" }, { - "label": "code:powershell (graphify update .)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L491", - "community": 160, - "norm_label": "code:powershell (graphify update .)", - "id": "server_code_review_report_codeblock_7" + "label": "benchOnce()", + "file_type": "code", + "source_file": "bench/bench_memory_vector.py", + "source_location": "L14", + "community": 13, + "norm_label": "benchonce()", + "id": "bench_bench_memory_vector_benchonce" }, { - "label": "Appendix B: File:Line Index (verbatim audit)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L502", - "community": 160, - "norm_label": "appendix b: file:line index (verbatim audit)", - "id": "server_code_review_report_appendix_b_file_line_index_verbatim_audit" + "label": "main()", + "file_type": "code", + "source_file": "bench/bench_memory_vector.py", + "source_location": "L41", + "community": 13, + "norm_label": "main()", + "id": "bench_bench_memory_vector_main" }, { - "label": "Appendix C: Detailed Evidence \u2014 Deletion & Import Probes (ses_fa5ecaa29ffeVc5LqIUhAPnlZo)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L523", - "community": 259, - "norm_label": "appendix c: detailed evidence \u2014 deletion & import probes (ses_fa5ecaa29ffevc5lqiuhapnlzo)", - "id": "server_code_review_report_appendix_c_detailed_evidence_deletion_import_probes_ses_fa5ecaa29ffevc5lqiuhapnlzo" + "label": "20260912T190329Z-baseline.json", + "file_type": "code", + "source_file": "bench/results/20260912T190329Z-baseline.json", + "source_location": "L1", + "community": 557, + "norm_label": "20260912t190329z-baseline.json", + "id": "bench_results_20260912t190329z_baseline_json" }, { - "label": "C.1 Probe method", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L527", - "community": 259, - "norm_label": "c.1 probe method", - "id": "server_code_review_report_c_1_probe_method" + "label": "label", + "file_type": "code", + "source_file": "bench/results/20260912T190329Z-baseline.json", + "source_location": "L2", + "community": 557, + "norm_label": "label", + "id": "results_20260912t190329z_baseline_label" }, { - "label": "C.2 Raw probe hits (verbatim)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L535", - "community": 259, - "norm_label": "c.2 raw probe hits (verbatim)", - "id": "server_code_review_report_c_2_raw_probe_hits_verbatim" + "label": "at", + "file_type": "code", + "source_file": "bench/results/20260912T190329Z-baseline.json", + "source_location": "L3", + "community": 557, + "norm_label": "at", + "id": "results_20260912t190329z_baseline_at" }, { - "label": "code:block8 (main/app/scraper_b3/scraper.py:21 -> from main.app.stocks_a)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L537", - "community": 259, - "norm_label": "code:block8 (main/app/scraper_b3/scraper.py:21 -> from main.app.stocks_a)", - "id": "server_code_review_report_codeblock_8" + "label": "rows", + "file_type": "code", + "source_file": "bench/results/20260912T190329Z-baseline.json", + "source_location": "L4", + "community": 557, + "norm_label": "rows", + "id": "results_20260912t190329z_baseline_rows" }, { - "label": "C.3 Cycle analysis V3+V5", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L550", - "community": 259, - "norm_label": "c.3 cycle analysis v3+v5", - "id": "server_code_review_report_c_3_cycle_analysis_v3_v5" + "label": "20260912T192904Z-baseline.json", + "file_type": "code", + "source_file": "bench/results/20260912T192904Z-baseline.json", + "source_location": "L1", + "community": 542, + "norm_label": "20260912t192904z-baseline.json", + "id": "bench_results_20260912t192904z_baseline_json" }, { - "label": "C.4 Barrel impact V6", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L557", - "community": 259, - "norm_label": "c.4 barrel impact v6", - "id": "server_code_review_report_c_4_barrel_impact_v6" + "label": "label", + "file_type": "code", + "source_file": "bench/results/20260912T192904Z-baseline.json", + "source_location": "L2", + "community": 542, + "norm_label": "label", + "id": "results_20260912t192904z_baseline_label" }, { - "label": "code:python (from main.models.user import User)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L561", - "community": 259, - "norm_label": "code:python (from main.models.user import user)", - "id": "server_code_review_report_codeblock_9" + "label": "at", + "file_type": "code", + "source_file": "bench/results/20260912T192904Z-baseline.json", + "source_location": "L3", + "community": 542, + "norm_label": "at", + "id": "results_20260912t192904z_baseline_at" }, { - "label": "C.5 Kernel leak V7 \u2014 `config.py:126` + `main/utils/roles.py:43`", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L576", - "community": 259, - "norm_label": "c.5 kernel leak v7 \u2014 `config.py:126` + `main/utils/roles.py:43`", - "id": "server_code_review_report_c_5_kernel_leak_v7_config_py_126_main_utils_roles_py_43" + "label": "rows", + "file_type": "code", + "source_file": "bench/results/20260912T192904Z-baseline.json", + "source_location": "L4", + "community": 542, + "norm_label": "rows", + "id": "results_20260912t192904z_baseline_rows" }, { - "label": "code:python (engine = create_engine()", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L580", - "community": 259, - "norm_label": "code:python (engine = create_engine()", - "id": "server_code_review_report_codeblock_10" + "label": "backfill_normalize_embeddings.py", + "file_type": "code", + "source_file": "scripts/backfill_normalize_embeddings.py", + "source_location": "L1", + "community": 526, + "norm_label": "backfill_normalize_embeddings.py", + "id": "scripts_backfill_normalize_embeddings_py" }, { - "label": "code:python (@staticmethod)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L599", - "community": 259, - "norm_label": "code:python (@staticmethod)", - "id": "server_code_review_report_codeblock_11" + "label": "main()", + "file_type": "code", + "source_file": "scripts/backfill_normalize_embeddings.py", + "source_location": "L11", + "community": 526, + "norm_label": "main()", + "id": "scripts_backfill_normalize_embeddings_main" }, { - "label": "Appendix D: Deletion Matrix Drill \u2014 Why STOCKS_API Deleted Breaks SCRAPER Hard", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L616", - "community": 532, - "norm_label": "appendix d: deletion matrix drill \u2014 why stocks_api deleted breaks scraper hard", - "id": "server_code_review_report_appendix_d_deletion_matrix_drill_why_stocks_api_deleted_breaks_scraper_hard" + "label": "One-shot: renormalize stored embeddings to unit norm. Usage: python scripts/back", + "file_type": "rationale", + "source_file": "scripts/backfill_normalize_embeddings.py", + "source_location": "L1", + "community": 526, + "norm_label": "one-shot: renormalize stored embeddings to unit norm. usage: python scripts/back", + "id": "scripts_backfill_normalize_embeddings_rationale_1" }, { - "label": "D.1 STOCKS_API deletion simulation", + "label": "vector-scaleup-runbook.md", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L618", - "community": 532, - "norm_label": "d.1 stocks_api deletion simulation", - "id": "server_code_review_report_d_1_stocks_api_deletion_simulation" + "source_file": "docs/vector-scaleup-runbook.md", + "source_location": "L1", + "community": 492, + "norm_label": "vector-scaleup-runbook.md", + "id": "docs_vector_scaleup_runbook_md" }, { - "label": "D.2 Full deletion matrix re-stated with evidence keys", + "label": "Vector Scale-Up Runbook", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L628", - "community": 532, - "norm_label": "d.2 full deletion matrix re-stated with evidence keys", - "id": "server_code_review_report_d_2_full_deletion_matrix_re_stated_with_evidence_keys" + "source_file": "docs/vector-scaleup-runbook.md", + "source_location": "L1", + "community": 492, + "norm_label": "vector scale-up runbook", + "id": "docs_vector_scaleup_runbook_vector_scale_up_runbook" }, { - "label": "D.3 God-provider explanation", + "label": "Baseline (lane 4)", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L640", - "community": 532, - "norm_label": "d.3 god-provider explanation", - "id": "server_code_review_report_d_3_god_provider_explanation" + "source_file": "docs/vector-scaleup-runbook.md", + "source_location": "L6", + "community": 492, + "norm_label": "baseline (lane 4)", + "id": "docs_vector_scaleup_runbook_baseline_lane_4" }, { - "label": "Appendix E: Shared-Kernel Deep Dive (should-be-kernel vs leak)", + "label": "Move triggers (any one fires the migration)", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L649", - "community": 533, - "norm_label": "appendix e: shared-kernel deep dive (should-be-kernel vs leak)", - "id": "server_code_review_report_appendix_e_shared_kernel_deep_dive_should_be_kernel_vs_leak" + "source_file": "docs/vector-scaleup-runbook.md", + "source_location": "L12", + "community": 492, + "norm_label": "move triggers (any one fires the migration)", + "id": "docs_vector_scaleup_runbook_move_triggers_any_one_fires_the_migration" }, { - "label": "E.1 Should-be-kernel (keep, but relocate)", + "label": "Options", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L653", - "community": 533, - "norm_label": "e.1 should-be-kernel (keep, but relocate)", - "id": "server_code_review_report_e_1_should_be_kernel_keep_but_relocate" + "source_file": "docs/vector-scaleup-runbook.md", + "source_location": "L18", + "community": 492, + "norm_label": "options", + "id": "docs_vector_scaleup_runbook_options" }, { - "label": "E.2 Leak (must fix \u2014 app\u2192kernel or kernel\u2192app violation)", + "label": "Export recipe", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L661", - "community": 533, - "norm_label": "e.2 leak (must fix \u2014 app\u2192kernel or kernel\u2192app violation)", - "id": "server_code_review_report_e_2_leak_must_fix_app_kernel_or_kernel_app_violation" + "source_file": "docs/vector-scaleup-runbook.md", + "source_location": "L26", + "community": 492, + "norm_label": "export recipe", + "id": "docs_vector_scaleup_runbook_export_recipe" }, { - "label": "E.3 Per-violation target after fix (re-stated from \u00a72.1.6 for audit traceability)", + "label": "2026-09-12-lane1-vector-normalize.md", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L671", - "community": 533, - "norm_label": "e.3 per-violation target after fix (re-stated from \u00a72.1.6 for audit traceability)", - "id": "server_code_review_report_e_3_per_violation_target_after_fix_re_stated_from_2_1_6_for_audit_traceability" + "source_file": "docs/superpowers/plans/2026-09-12-lane1-vector-normalize.md", + "source_location": "L1", + "community": 499, + "norm_label": "2026-09-12-lane1-vector-normalize.md", + "id": "docs_superpowers_plans_2026_09_12_lane1_vector_normalize_md" }, { - "label": "Appendix F: CI Gate & Graphify Verification Details", + "label": "Lane 1: Normalized Embeddings + Dot-Product Search Implementation Plan", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L686", - "community": 508, - "norm_label": "appendix f: ci gate & graphify verification details", - "id": "server_code_review_report_appendix_f_ci_gate_graphify_verification_details" + "source_file": "docs/superpowers/plans/2026-09-12-lane1-vector-normalize.md", + "source_location": "L1", + "community": 499, + "norm_label": "lane 1: normalized embeddings + dot-product search implementation plan", + "id": "plans_2026_09_12_lane1_vector_normalize_lane_1_normalized_embeddings_dot_product_search_implementation_plan" }, { - "label": "F.1 import-linter contract (Phase 2)", + "label": "Global Constraints", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L688", - "community": 508, - "norm_label": "f.1 import-linter contract (phase 2)", - "id": "server_code_review_report_f_1_import_linter_contract_phase_2" + "source_file": "docs/superpowers/plans/2026-09-12-lane1-vector-normalize.md", + "source_location": "L15", + "community": 499, + "norm_label": "global constraints", + "id": "plans_2026_09_12_lane1_vector_normalize_global_constraints" }, { - "label": "code:ini (# setup.cfg or .importlinter)", + "label": "Task 1: Normalize on encode + row-normalize helper", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L690", - "community": 508, - "norm_label": "code:ini (# setup.cfg or .importlinter)", - "id": "server_code_review_report_codeblock_12" + "source_file": "docs/superpowers/plans/2026-09-12-lane1-vector-normalize.md", + "source_location": "L25", + "community": 499, + "norm_label": "task 1: normalize on encode + row-normalize helper", + "id": "plans_2026_09_12_lane1_vector_normalize_task_1_normalize_on_encode_row_normalize_helper" }, { - "label": "code:toml (# pyproject.toml)", + "label": "code:python (import numpy as np)", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L715", - "community": 508, - "norm_label": "code:toml (# pyproject.toml)", - "id": "server_code_review_report_codeblock_13" + "source_file": "docs/superpowers/plans/2026-09-12-lane1-vector-normalize.md", + "source_location": "L37", + "community": 499, + "norm_label": "code:python (import numpy as np)", + "id": "plans_2026_09_12_lane1_vector_normalize_codeblock_1" }, { - "label": "F.2 ci.ps1 gate insertion", + "label": "code:python (def normalizeRows(matrix: np.ndarray) -> np.ndarray:)", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L723", - "community": 508, - "norm_label": "f.2 ci.ps1 gate insertion", - "id": "server_code_review_report_f_2_ci_ps1_gate_insertion" + "source_file": "docs/superpowers/plans/2026-09-12-lane1-vector-normalize.md", + "source_location": "L66", + "community": 499, + "norm_label": "code:python (def normalizerows(matrix: np.ndarray) -> np.ndarray:)", + "id": "plans_2026_09_12_lane1_vector_normalize_codeblock_2" }, { - "label": "code:powershell (# ci.ps1 \u2014 insertion)", + "label": "code:bash (git add main/app/prometheus/vector.py tests/test_vector_norm)", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L727", - "community": 508, - "norm_label": "code:powershell (# ci.ps1 \u2014 insertion)", - "id": "server_code_review_report_codeblock_14" + "source_file": "docs/superpowers/plans/2026-09-12-lane1-vector-normalize.md", + "source_location": "L93", + "community": 499, + "norm_label": "code:bash (git add main/app/prometheus/vector.py tests/test_vector_norm)", + "id": "plans_2026_09_12_lane1_vector_normalize_codeblock_3" }, { - "label": "code:powershell (ruff check --select TID251 . # TID251 = banned-api)", + "label": "Task 2: Backfill existing rows to unit norm", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L739", - "community": 508, - "norm_label": "code:powershell (ruff check --select tid251 . # tid251 = banned-api)", - "id": "server_code_review_report_codeblock_15" + "source_file": "docs/superpowers/plans/2026-09-12-lane1-vector-normalize.md", + "source_location": "L98", + "community": 499, + "norm_label": "task 2: backfill existing rows to unit norm", + "id": "plans_2026_09_12_lane1_vector_normalize_task_2_backfill_existing_rows_to_unit_norm" }, { - "label": "F.3 Graphify verification", + "label": "code:python (\"\"\"One-shot: renormalize stored embeddings to unit norm. Usa)", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L743", - "community": 508, - "norm_label": "f.3 graphify verification", - "id": "server_code_review_report_f_3_graphify_verification" + "source_file": "docs/superpowers/plans/2026-09-12-lane1-vector-normalize.md", + "source_location": "L110", + "community": 499, + "norm_label": "code:python (\"\"\"one-shot: renormalize stored embeddings to unit norm. usa)", + "id": "plans_2026_09_12_lane1_vector_normalize_codeblock_4" }, { - "label": "code:powershell (graphify update .)", + "label": "code:bash (git add scripts/backfill_normalize_embeddings.py)", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L745", - "community": 508, - "norm_label": "code:powershell (graphify update .)", - "id": "server_code_review_report_codeblock_16" + "source_file": "docs/superpowers/plans/2026-09-12-lane1-vector-normalize.md", + "source_location": "L159", + "community": 499, + "norm_label": "code:bash (git add scripts/backfill_normalize_embeddings.py)", + "id": "plans_2026_09_12_lane1_vector_normalize_codeblock_5" }, { - "label": "Appendix G: Cross-References & Session Traceability", + "label": "2026-09-12-lane2-memory-query-path.md", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L758", - "community": 160, - "norm_label": "appendix g: cross-references & session traceability", - "id": "server_code_review_report_appendix_g_cross_references_session_traceability" + "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", + "source_location": "L1", + "community": 214, + "norm_label": "2026-09-12-lane2-memory-query-path.md", + "id": "docs_superpowers_plans_2026_09_12_lane2_memory_query_path_md" }, { - "label": "CODE_REVIEW_REPORT_20260903.md", + "label": "Lane 2: Memory Query-Path Fix Implementation Plan", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_20260903.md", + "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", "source_location": "L1", - "community": 56, - "norm_label": "code_review_report_20260903.md", - "id": "code_review_report_20260903_md" + "community": 214, + "norm_label": "lane 2: memory query-path fix implementation plan", + "id": "plans_2026_09_12_lane2_memory_query_path_lane_2_memory_query_path_fix_implementation_plan" }, { - "label": "Code Review Report \u2014 Mansa Server (FastAPI, B3)", + "label": "Global Constraints", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_20260903.md", - "source_location": "L1", - "community": 56, - "norm_label": "code review report \u2014 mansa server (fastapi, b3)", - "id": "server_code_review_report_20260903_code_review_report_mansa_server_fastapi_b3" + "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", + "source_location": "L16", + "community": 214, + "norm_label": "global constraints", + "id": "plans_2026_09_12_lane2_memory_query_path_global_constraints" }, { - "label": "1. Summary table (category, count, priority P0-P3)", + "label": "Task 1: Two-phase candidate load with deferred BLOBs", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_20260903.md", - "source_location": "L12", - "community": 56, - "norm_label": "1. summary table (category, count, priority p0-p3)", - "id": "server_code_review_report_20260903_1_summary_table_category_count_priority_p0_p3" + "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", + "source_location": "L27", + "community": 214, + "norm_label": "task 1: two-phase candidate load with deferred blobs", + "id": "plans_2026_09_12_lane2_memory_query_path_task_1_two_phase_candidate_load_with_deferred_blobs" }, { - "label": "2. Architecture", + "label": "code:python (def test_search_defersEmbeddingBlob(db):)", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_20260903.md", - "source_location": "L26", - "community": 56, - "norm_label": "2. architecture", - "id": "server_code_review_report_20260903_2_architecture" + "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", + "source_location": "L40", + "community": 214, + "norm_label": "code:python (def test_search_defersembeddingblob(db):)", + "id": "plans_2026_09_12_lane2_memory_query_path_codeblock_1" }, { - "label": "V1 \u2014 SCRAPER \u2192 STOCKS_API (hard, P0)", + "label": "code:python (from contextlib import contextmanager)", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_20260903.md", - "source_location": "L32", - "community": 56, - "norm_label": "v1 \u2014 scraper \u2192 stocks_api (hard, p0)", - "id": "server_code_review_report_20260903_v1_scraper_stocks_api_hard_p0" + "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", + "source_location": "L52", + "community": 214, + "norm_label": "code:python (from contextlib import contextmanager)", + "id": "plans_2026_09_12_lane2_memory_query_path_codeblock_2" }, { - "label": "V2 \u2014 PROMETHEUS \u2192 STOCKS_API (soft/lazy, P1)", + "label": "code:python (from sqlalchemy.orm import defer)", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_20260903.md", - "source_location": "L38", - "community": 56, - "norm_label": "v2 \u2014 prometheus \u2192 stocks_api (soft/lazy, p1)", - "id": "server_code_review_report_20260903_v2_prometheus_stocks_api_soft_lazy_p1" + "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", + "source_location": "L82", + "community": 214, + "norm_label": "code:python (from sqlalchemy.orm import defer)", + "id": "plans_2026_09_12_lane2_memory_query_path_codeblock_3" }, { - "label": "code:python (from config import stocksEngine)", + "label": "code:bash (git add main/app/prometheus/memory.py tests/test_memory_sear)", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_20260903.md", - "source_location": "L41", - "community": 56, - "norm_label": "code:python (from config import stocksengine)", - "id": "server_code_review_report_20260903_codeblock_1" + "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", + "source_location": "L111", + "community": 214, + "norm_label": "code:bash (git add main/app/prometheus/memory.py tests/test_memory_sear)", + "id": "plans_2026_09_12_lane2_memory_query_path_codeblock_4" }, { - "label": "V3/V4/V5 \u2014 USER \u2194 AUTH cycle (P1, contained as combined)", + "label": "Task 2: Fuse vector, FULLTEXT and recency scores", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_20260903.md", - "source_location": "L49", - "community": 56, - "norm_label": "v3/v4/v5 \u2014 user \u2194 auth cycle (p1, contained as combined)", - "id": "server_code_review_report_20260903_v3_v4_v5_user_auth_cycle_p1_contained_as_combined" + "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", + "source_location": "L116", + "community": 214, + "norm_label": "task 2: fuse vector, fulltext and recency scores", + "id": "plans_2026_09_12_lane2_memory_query_path_task_2_fuse_vector_fulltext_and_recency_scores" }, { - "label": "V6 \u2014 Barrel `main/models/__init__.py:1-6` (P1)", + "label": "code:python (def test_search_fusesFulltextOverVectorOnly(db):)", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_20260903.md", - "source_location": "L55", - "community": 56, - "norm_label": "v6 \u2014 barrel `main/models/__init__.py:1-6` (p1)", - "id": "server_code_review_report_20260903_v6_barrel_main_models_init_py_1_6_p1" + "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", + "source_location": "L128", + "community": 214, + "norm_label": "code:python (def test_search_fusesfulltextovervectoronly(db):)", + "id": "plans_2026_09_12_lane2_memory_query_path_codeblock_5" }, { - "label": "V7 \u2014 Shared-kernel leak + inversion (P1)", + "label": "code:python (def minMax(values: list[float]) -> list[float]:)", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_20260903.md", - "source_location": "L61", - "community": 56, - "norm_label": "v7 \u2014 shared-kernel leak + inversion (p1)", - "id": "server_code_review_report_20260903_v7_shared_kernel_leak_inversion_p1" + "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", + "source_location": "L143", + "community": 214, + "norm_label": "code:python (def minmax(values: list[float]) -> list[float]:)", + "id": "plans_2026_09_12_lane2_memory_query_path_codeblock_6" }, { - "label": "A7 \u2014 Controller\u2192App bypass (P1)", + "label": "code:bash (git add main/app/prometheus/memory.py tests/test_memory_sear)", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_20260903.md", - "source_location": "L67", - "community": 56, - "norm_label": "a7 \u2014 controller\u2192app bypass (p1)", - "id": "server_code_review_report_20260903_a7_controller_app_bypass_p1" + "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", + "source_location": "L173", + "community": 214, + "norm_label": "code:bash (git add main/app/prometheus/memory.py tests/test_memory_sear)", + "id": "plans_2026_09_12_lane2_memory_query_path_codeblock_7" }, { - "label": "A8 \u2014 DB engine split ambiguity (P1)", + "label": "2026-09-12-lane4-vector-bench.md", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_20260903.md", - "source_location": "L73", - "community": 56, - "norm_label": "a8 \u2014 db engine split ambiguity (p1)", - "id": "server_code_review_report_20260903_a8_db_engine_split_ambiguity_p1" + "source_file": "docs/superpowers/plans/2026-09-12-lane4-vector-bench.md", + "source_location": "L1", + "community": 540, + "norm_label": "2026-09-12-lane4-vector-bench.md", + "id": "docs_superpowers_plans_2026_09_12_lane4_vector_bench_md" }, { - "label": "A9 \u2014 Config god + localhost allowlist (P2)", + "label": "Lane 4: Before/After Bench Implementation Plan", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_20260903.md", - "source_location": "L79", - "community": 56, - "norm_label": "a9 \u2014 config god + localhost allowlist (p2)", - "id": "server_code_review_report_20260903_a9_config_god_localhost_allowlist_p2" + "source_file": "docs/superpowers/plans/2026-09-12-lane4-vector-bench.md", + "source_location": "L1", + "community": 540, + "norm_label": "lane 4: before/after bench implementation plan", + "id": "plans_2026_09_12_lane4_vector_bench_lane_4_before_after_bench_implementation_plan" }, { - "label": "A10 \u2014 God nodes `StocksCacheManager` / `UserManager` (P2)", + "label": "Global Constraints", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_20260903.md", - "source_location": "L85", - "community": 56, - "norm_label": "a10 \u2014 god nodes `stockscachemanager` / `usermanager` (p2)", - "id": "server_code_review_report_20260903_a10_god_nodes_stockscachemanager_usermanager_p2" + "source_file": "docs/superpowers/plans/2026-09-12-lane4-vector-bench.md", + "source_location": "L16", + "community": 540, + "norm_label": "global constraints", + "id": "plans_2026_09_12_lane4_vector_bench_global_constraints" }, { - "label": "Deletion matrix (strict, re-verified)", + "label": "Task 1: Bench script with synthetic scale sweep", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_20260903.md", - "source_location": "L91", - "community": 56, - "norm_label": "deletion matrix (strict, re-verified)", - "id": "server_code_review_report_20260903_deletion_matrix_strict_re_verified" + "source_file": "docs/superpowers/plans/2026-09-12-lane4-vector-bench.md", + "source_location": "L25", + "community": 540, + "norm_label": "task 1: bench script with synthetic scale sweep", + "id": "plans_2026_09_12_lane4_vector_bench_task_1_bench_script_with_synthetic_scale_sweep" }, { - "label": "3. Security", + "label": "code:python (import argparse)", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_20260903.md", - "source_location": "L102", - "community": 56, - "norm_label": "3. security", - "id": "server_code_review_report_20260903_3_security" + "source_file": "docs/superpowers/plans/2026-09-12-lane4-vector-bench.md", + "source_location": "L38", + "community": 540, + "norm_label": "code:python (import argparse)", + "id": "plans_2026_09_12_lane4_vector_bench_codeblock_1" }, { - "label": "C1 \u2014 ForgeVM unauthenticated RCE surface (Critical, P0)", + "label": "code:bash (git add bench/bench_memory_vector.py)", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_20260903.md", - "source_location": "L104", - "community": 56, - "norm_label": "c1 \u2014 forgevm unauthenticated rce surface (critical, p0)", - "id": "server_code_review_report_20260903_c1_forgevm_unauthenticated_rce_surface_critical_p0" + "source_file": "docs/superpowers/plans/2026-09-12-lane4-vector-bench.md", + "source_location": "L100", + "community": 540, + "norm_label": "code:bash (git add bench/bench_memory_vector.py)", + "id": "plans_2026_09_12_lane4_vector_bench_codeblock_2" }, { - "label": "H1 \u2014 Logout cookie never cleared (P1)", + "label": "Task 2: Record baseline and post-lane numbers", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_20260903.md", - "source_location": "L110", - "community": 56, - "norm_label": "h1 \u2014 logout cookie never cleared (p1)", - "id": "server_code_review_report_20260903_h1_logout_cookie_never_cleared_p1" + "source_file": "docs/superpowers/plans/2026-09-12-lane4-vector-bench.md", + "source_location": "L105", + "community": 540, + "norm_label": "task 2: record baseline and post-lane numbers", + "id": "plans_2026_09_12_lane4_vector_bench_task_2_record_baseline_and_post_lane_numbers" }, { - "label": "H2 \u2014 Scraper trigger exposed by DEBUG default (P1)", + "label": "2026-09-12-lane5-vector-scaleup.md", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_20260903.md", - "source_location": "L116", - "community": 56, - "norm_label": "h2 \u2014 scraper trigger exposed by debug default (p1)", - "id": "server_code_review_report_20260903_h2_scraper_trigger_exposed_by_debug_default_p1" + "source_file": "docs/superpowers/plans/2026-09-12-lane5-vector-scaleup.md", + "source_location": "L1", + "community": 213, + "norm_label": "2026-09-12-lane5-vector-scaleup.md", + "id": "docs_superpowers_plans_2026_09_12_lane5_vector_scaleup_md" }, { - "label": "H3 \u2014 Stocks API has no HTTP rate limit (P1)", + "label": "Lane 5: Scale-Up Readiness Implementation Plan", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_20260903.md", - "source_location": "L122", - "community": 56, - "norm_label": "h3 \u2014 stocks api has no http rate limit (p1)", - "id": "server_code_review_report_20260903_h3_stocks_api_has_no_http_rate_limit_p1" + "source_file": "docs/superpowers/plans/2026-09-12-lane5-vector-scaleup.md", + "source_location": "L1", + "community": 213, + "norm_label": "lane 5: scale-up readiness implementation plan", + "id": "plans_2026_09_12_lane5_vector_scaleup_lane_5_scale_up_readiness_implementation_plan" }, { - "label": "M1 \u2014 SSE error leak (P1)", + "label": "Global Constraints", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_20260903.md", - "source_location": "L128", - "community": 56, - "norm_label": "m1 \u2014 sse error leak (p1)", - "id": "server_code_review_report_20260903_m1_sse_error_leak_p1" + "source_file": "docs/superpowers/plans/2026-09-12-lane5-vector-scaleup.md", + "source_location": "L15", + "community": 213, + "norm_label": "global constraints", + "id": "plans_2026_09_12_lane5_vector_scaleup_global_constraints" }, { - "label": "M2 \u2014 Session GC leaves expired-active rows (P2)", + "label": "Task 1: Vector string codec (independent \u2014 run anytime)", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_20260903.md", - "source_location": "L134", - "community": 56, - "norm_label": "m2 \u2014 session gc leaves expired-active rows (p2)", - "id": "server_code_review_report_20260903_m2_session_gc_leaves_expired_active_rows_p2" + "source_file": "docs/superpowers/plans/2026-09-12-lane5-vector-scaleup.md", + "source_location": "L25", + "community": 213, + "norm_label": "task 1: vector string codec (independent \u2014 run anytime)", + "id": "plans_2026_09_12_lane5_vector_scaleup_task_1_vector_string_codec_independent_run_anytime" }, { - "label": "M3 \u2014 JWT sessionId handling (P2)", + "label": "code:python (from main.app.prometheus.vector import toVectorString, fromV)", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_20260903.md", - "source_location": "L140", - "community": 56, - "norm_label": "m3 \u2014 jwt sessionid handling (p2)", - "id": "server_code_review_report_20260903_m3_jwt_sessionid_handling_p2" + "source_file": "docs/superpowers/plans/2026-09-12-lane5-vector-scaleup.md", + "source_location": "L38", + "community": 213, + "norm_label": "code:python (from main.app.prometheus.vector import tovectorstring, fromv)", + "id": "plans_2026_09_12_lane5_vector_scaleup_codeblock_1" }, { - "label": "M4 \u2014 Cookie `Secure` flag silently off behind proxy (P2)", + "label": "code:python (def toVectorString(vec: list[float]) -> str:)", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_20260903.md", - "source_location": "L146", - "community": 56, - "norm_label": "m4 \u2014 cookie `secure` flag silently off behind proxy (p2)", - "id": "server_code_review_report_20260903_m4_cookie_secure_flag_silently_off_behind_proxy_p2" + "source_file": "docs/superpowers/plans/2026-09-12-lane5-vector-scaleup.md", + "source_location": "L62", + "community": 213, + "norm_label": "code:python (def tovectorstring(vec: list[float]) -> str:)", + "id": "plans_2026_09_12_lane5_vector_scaleup_codeblock_2" }, { - "label": "Positives (verified, keep)", + "label": "code:bash (git add main/app/prometheus/vector.py tests/test_vector_norm)", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_20260903.md", - "source_location": "L152", - "community": 56, - "norm_label": "positives (verified, keep)", - "id": "server_code_review_report_20260903_positives_verified_keep" + "source_file": "docs/superpowers/plans/2026-09-12-lane5-vector-scaleup.md", + "source_location": "L82", + "community": 213, + "norm_label": "code:bash (git add main/app/prometheus/vector.py tests/test_vector_norm)", + "id": "plans_2026_09_12_lane5_vector_scaleup_codeblock_3" }, { - "label": "4. Inefficiencies", + "label": "Task 2: Per-process matrix cache (gated on lanes 1+2 merge)", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_20260903.md", - "source_location": "L160", - "community": 56, - "norm_label": "4. inefficiencies", - "id": "server_code_review_report_20260903_4_inefficiencies" + "source_file": "docs/superpowers/plans/2026-09-12-lane5-vector-scaleup.md", + "source_location": "L87", + "community": 213, + "norm_label": "task 2: per-process matrix cache (gated on lanes 1+2 merge)", + "id": "plans_2026_09_12_lane5_vector_scaleup_task_2_per_process_matrix_cache_gated_on_lanes_1_2_merge" }, { - "label": "P1 \u2014 Per-request full-DataFrame pandas sorts (P1)", + "label": "code:python (import numpy as np)", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_20260903.md", - "source_location": "L162", - "community": 56, - "norm_label": "p1 \u2014 per-request full-dataframe pandas sorts (p1)", - "id": "server_code_review_report_20260903_p1_per_request_full_dataframe_pandas_sorts_p1" + "source_file": "docs/superpowers/plans/2026-09-12-lane5-vector-scaleup.md", + "source_location": "L101", + "community": 213, + "norm_label": "code:python (import numpy as np)", + "id": "plans_2026_09_12_lane5_vector_scaleup_codeblock_4" }, { - "label": "P2 \u2014 zstd compress/decompress per cell (P1)", + "label": "code:python (import numpy as np)", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_20260903.md", - "source_location": "L168", - "community": 56, - "norm_label": "p2 \u2014 zstd compress/decompress per cell (p1)", - "id": "server_code_review_report_20260903_p2_zstd_compress_decompress_per_cell_p1" + "source_file": "docs/superpowers/plans/2026-09-12-lane5-vector-scaleup.md", + "source_location": "L129", + "community": 213, + "norm_label": "code:python (import numpy as np)", + "id": "plans_2026_09_12_lane5_vector_scaleup_codeblock_5" }, { - "label": "P3 \u2014 No request coalescing / thundering herd (P2)", + "label": "code:bash (git add main/app/prometheus/matrix_cache.py main/app/prometh)", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_20260903.md", - "source_location": "L174", - "community": 56, - "norm_label": "p3 \u2014 no request coalescing / thundering herd (p2)", - "id": "server_code_review_report_20260903_p3_no_request_coalescing_thundering_herd_p2" + "source_file": "docs/superpowers/plans/2026-09-12-lane5-vector-scaleup.md", + "source_location": "L158", + "community": 213, + "norm_label": "code:bash (git add main/app/prometheus/matrix_cache.py main/app/prometh)", + "id": "plans_2026_09_12_lane5_vector_scaleup_codeblock_6" }, { - "label": "P4 \u2014 Prometheus N+1 + embed-on-loop (P1)", + "label": "Task 3: Scale-up runbook (gated on Task 2)", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_20260903.md", - "source_location": "L180", - "community": 56, - "norm_label": "p4 \u2014 prometheus n+1 + embed-on-loop (p1)", - "id": "server_code_review_report_20260903_p4_prometheus_n_1_embed_on_loop_p1" + "source_file": "docs/superpowers/plans/2026-09-12-lane5-vector-scaleup.md", + "source_location": "L163", + "community": 213, + "norm_label": "task 3: scale-up runbook (gated on task 2)", + "id": "plans_2026_09_12_lane5_vector_scaleup_task_3_scale_up_runbook_gated_on_task_2" }, { - "label": "P5 \u2014 Four independent schedulers (P2)", + "label": "code:bash (git add docs/vector-scaleup-runbook.md)", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_20260903.md", - "source_location": "L186", - "community": 56, - "norm_label": "p5 \u2014 four independent schedulers (p2)", - "id": "server_code_review_report_20260903_p5_four_independent_schedulers_p2" + "source_file": "docs/superpowers/plans/2026-09-12-lane5-vector-scaleup.md", + "source_location": "L183", + "community": 213, + "norm_label": "code:bash (git add docs/vector-scaleup-runbook.md)", + "id": "plans_2026_09_12_lane5_vector_scaleup_codeblock_7" }, { - "label": "P6 \u2014 `mem://` only + sync/async bridge cost (P2)", + "label": "2026-09-12-vector-lanes-spec.md", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_20260903.md", - "source_location": "L192", - "community": 56, - "norm_label": "p6 \u2014 `mem://` only + sync/async bridge cost (p2)", - "id": "server_code_review_report_20260903_p6_mem_only_sync_async_bridge_cost_p2" + "source_file": "docs/superpowers/plans/2026-09-12-vector-lanes-spec.md", + "source_location": "L1", + "community": 558, + "norm_label": "2026-09-12-vector-lanes-spec.md", + "id": "docs_superpowers_plans_2026_09_12_vector_lanes_spec_md" }, { - "label": "P7 \u2014 Scraper throughput (P2)", + "label": "Vector Lanes Spec (1, 2, 4, 5)", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_20260903.md", - "source_location": "L198", - "community": 56, - "norm_label": "p7 \u2014 scraper throughput (p2)", - "id": "server_code_review_report_20260903_p7_scraper_throughput_p2" + "source_file": "docs/superpowers/plans/2026-09-12-vector-lanes-spec.md", + "source_location": "L1", + "community": 558, + "norm_label": "vector lanes spec (1, 2, 4, 5)", + "id": "plans_2026_09_12_vector_lanes_spec_vector_lanes_spec_1_2_4_5" }, { - "label": "5. Useless modules", + "label": "Current code (exact)", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_20260903.md", - "source_location": "L206", - "community": 56, - "norm_label": "5. useless modules", - "id": "server_code_review_report_20260903_5_useless_modules" + "source_file": "docs/superpowers/plans/2026-09-12-vector-lanes-spec.md", + "source_location": "L8", + "community": 558, + "norm_label": "current code (exact)", + "id": "plans_2026_09_12_vector_lanes_spec_current_code_exact" }, { - "label": "Safe-to-delete (P2, no importer found)", + "label": "Lane contracts (interfaces between lanes)", "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_20260903.md", - "source_location": "L210", - "community": 56, - "norm_label": "safe-to-delete (p2, no importer found)", - "id": "server_code_review_report_20260903_safe_to_delete_p2_no_importer_found" + "source_file": "docs/superpowers/plans/2026-09-12-vector-lanes-spec.md", + "source_location": "L32", + "community": 558, + "norm_label": "lane contracts (interfaces between lanes)", + "id": "plans_2026_09_12_vector_lanes_spec_lane_contracts_interfaces_between_lanes" }, { - "label": "Needs-confirmation (P3, do not delete blindly)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_20260903.md", - "source_location": "L221", - "community": 56, - "norm_label": "needs-confirmation (p3, do not delete blindly)", - "id": "server_code_review_report_20260903_needs_confirmation_p3_do_not_delete_blindly" + "label": "MdocMessage.jsx", + "file_type": "code", + "source_file": "frontend/src/components/MdocMessage.jsx", + "source_location": "L1", + "community": 211, + "norm_label": "mdocmessage.jsx", + "id": "frontend_src_components_mdocmessage_jsx" }, { - "label": "Do NOT delete (explicit)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_20260903.md", - "source_location": "L231", - "community": 56, - "norm_label": "do not delete (explicit)", - "id": "server_code_review_report_20260903_do_not_delete_explicit" + "label": "COMPONENTS", + "file_type": "code", + "source_file": "frontend/src/components/MdocMessage.jsx", + "source_location": "L5", + "community": 211, + "norm_label": "components", + "id": "components_mdocmessage_components" }, { - "label": "6. Delegation buckets (security, DB, perf, hygiene) with effort estimates", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_20260903.md", - "source_location": "L239", - "community": 56, - "norm_label": "6. delegation buckets (security, db, perf, hygiene) with effort estimates", - "id": "server_code_review_report_20260903_6_delegation_buckets_security_db_perf_hygiene_with_effort_estimates" + "label": "ALLOWED", + "file_type": "code", + "source_file": "frontend/src/components/MdocMessage.jsx", + "source_location": "L88", + "community": 211, + "norm_label": "allowed", + "id": "components_mdocmessage_allowed" }, { - "label": "Appendix \u2014 Verification index (all lines re-read for this report)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT_20260903.md", - "source_location": "L252", - "community": 56, - "norm_label": "appendix \u2014 verification index (all lines re-read for this report)", - "id": "server_code_review_report_20260903_appendix_verification_index_all_lines_re_read_for_this_report" + "label": "MdocMessage()", + "file_type": "code", + "source_file": "frontend/src/components/MdocMessage.jsx", + "source_location": "L94", + "community": 211, + "norm_label": "mdocmessage()", + "id": "components_mdocmessage_mdocmessage" }, { - "label": "Load historical/fundamental field names, caching the result in ``fieldData``.", - "file_type": "rationale", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L95", - "community": 80, - "norm_label": "load historical/fundamental field names, caching the result in ``fielddata``.", - "id": "prometheus_compact_rationale_95" + "label": "prometheus-components.jsx", + "file_type": "code", + "source_file": "frontend/src/lib/prometheus-components.jsx", + "source_location": "L1", + "community": 164, + "norm_label": "prometheus-components.jsx", + "id": "frontend_src_lib_prometheus_components_jsx" }, { - "label": "P4: per-request token-count cache. Returns exactly what countTokens(tex", - "file_type": "rationale", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L343", - "community": 537, - "norm_label": "p4: per-request token-count cache. returns exactly what counttokens(tex", - "id": "prometheus_memory_rationale_343" + "label": "StatCard", + "file_type": "code", + "source_file": "frontend/src/lib/prometheus-components.jsx", + "source_location": "L9", + "community": 164, + "norm_label": "statcard", + "id": "lib_prometheus_components_statcard" }, { - "label": "P1: establish the sorted-cache invariant once at load/refresh. Sorts by (", - "file_type": "rationale", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L171", - "community": 82, - "norm_label": "p1: establish the sorted-cache invariant once at load/refresh. sorts by (", - "id": "stocks_api_cache_rationale_171" + "label": "DataTable", + "file_type": "code", + "source_file": "frontend/src/lib/prometheus-components.jsx", + "source_location": "L39", + "community": 164, + "norm_label": "datatable", + "id": "lib_prometheus_components_datatable" }, { - "label": "P1: first-occurrence index over a sortCacheFrame-sorted frame. The cache", - "file_type": "rationale", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L191", - "community": 82, - "norm_label": "p1: first-occurrence index over a sortcacheframe-sorted frame. the cache", - "id": "stocks_api_cache_rationale_191" + "label": "BarChart", + "file_type": "code", + "source_file": "frontend/src/lib/prometheus-components.jsx", + "source_location": "L82", + "community": 164, + "norm_label": "barchart", + "id": "lib_prometheus_components_barchart" }, { - "label": "registerMemoryMaintenanceJob()", + "label": "ContentCard", "file_type": "code", - "source_file": "main/service/prometheus_service.py", - "source_location": "L60", - "community": 72, - "norm_label": "registermemorymaintenancejob()", - "id": "service_prometheus_service_registermemorymaintenancejob" + "source_file": "frontend/src/lib/prometheus-components.jsx", + "source_location": "L123", + "community": 164, + "norm_label": "contentcard", + "id": "lib_prometheus_components_contentcard" }, { - "label": "P5: register memory maintenance on the shared scheduler. Kept in this ser", - "file_type": "rationale", - "source_file": "main/service/prometheus_service.py", - "source_location": "L61", - "community": 72, - "norm_label": "p5: register memory maintenance on the shared scheduler. kept in this ser", - "id": "service_prometheus_service_rationale_61" + "label": "TabGroup", + "file_type": "code", + "source_file": "frontend/src/lib/prometheus-components.jsx", + "source_location": "L148", + "community": 164, + "norm_label": "tabgroup", + "id": "lib_prometheus_components_tabgroup" }, { - "label": "P5: single shared BackgroundScheduler for all services. Replaces the 4 per-serv", - "file_type": "rationale", - "source_file": "main/utils/scheduler.py", - "source_location": "L1", - "community": 72, - "norm_label": "p5: single shared backgroundscheduler for all services. replaces the 4 per-serv", - "id": "utils_scheduler_rationale_1" + "label": "TabPanel", + "file_type": "code", + "source_file": "frontend/src/lib/prometheus-components.jsx", + "source_location": "L158", + "community": 164, + "norm_label": "tabpanel", + "id": "lib_prometheus_components_tabpanel" }, { - "label": "Return the process-wide scheduler, starting it on first use.", - "file_type": "rationale", - "source_file": "main/utils/scheduler.py", - "source_location": "L33", - "community": 72, - "norm_label": "return the process-wide scheduler, starting it on first use.", - "id": "utils_scheduler_rationale_33" + "label": "AccordionItem", + "file_type": "code", + "source_file": "frontend/src/lib/prometheus-components.jsx", + "source_location": "L179", + "community": 164, + "norm_label": "accordionitem", + "id": "lib_prometheus_components_accordionitem" }, { - "label": "Register func on the shared scheduler (replaces any same-id job). trigger i", - "file_type": "rationale", - "source_file": "main/utils/scheduler.py", - "source_location": "L43", - "community": 72, - "norm_label": "register func on the shared scheduler (replaces any same-id job). trigger i", - "id": "utils_scheduler_rationale_43" + "label": "ProgressFill", + "file_type": "code", + "source_file": "frontend/src/lib/prometheus-components.jsx", + "source_location": "L202", + "community": 164, + "norm_label": "progressfill", + "id": "lib_prometheus_components_progressfill" }, { - "label": "Discover available field names before querying /historical or /fundamental.", - "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L36", - "community": 54, - "norm_label": "discover available field names before querying /historical or /fundamental.", - "id": "controller_stocksapi_controller_rationale_36" + "label": "Divider", + "file_type": "code", + "source_file": "frontend/src/lib/prometheus-components.jsx", + "source_location": "L226", + "community": 164, + "norm_label": "divider", + "id": "lib_prometheus_components_divider" }, { - "label": "Get year-based historical financial data for Brazilian B3 stocks. Returns", + "label": "P5: register the scraper cron jobs on the shared scheduler. Kept in this", "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L92", - "community": 197, - "norm_label": "get year-based historical financial data for brazilian b3 stocks. returns", - "id": "controller_stocksapi_controller_rationale_92" + "source_file": "main/service/scraper_service.py", + "source_location": "L23", + "community": 562, + "norm_label": "p5: register the scraper cron jobs on the shared scheduler. kept in this", + "id": "service_scraper_service_rationale_23" }, { - "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": "L157", - "community": 157, - "norm_label": "get point-in-time fundamental/valuation data for brazilian b3 stocks. ret", - "id": "controller_stocksapi_controller_rationale_157" + "label": "registerSessionCleanupJobs()", + "file_type": "code", + "source_file": "main/service/user_service.py", + "source_location": "L46", + "community": 72, + "norm_label": "registersessioncleanupjobs()", + "id": "service_user_service_registersessioncleanupjobs" }, { - "label": "Get 10-year daily price history (cotation) for Brazilian B3 stocks. Retur", + "label": "P5: register the session-cleanup job on the shared scheduler. Kept in thi", "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L225", - "community": 169, - "norm_label": "get 10-year daily price history (cotation) for brazilian b3 stocks. retur", - "id": "controller_stocksapi_controller_rationale_225" + "source_file": "main/service/user_service.py", + "source_location": "L47", + "community": 72, + "norm_label": "p5: register the session-cleanup job on the shared scheduler. kept in thi", + "id": "service_user_service_rationale_47" }, { - "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": "L279", - "community": 81, - "norm_label": "get real-time price quotation for a single brazilian b3 stock. returns th", - "id": "controller_stocksapi_controller_rationale_279" + "label": "CODE_REVIEW_REPORT_FINAL.md", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT_FINAL.md", + "source_location": "L1", + "community": 212, + "norm_label": "code_review_report_final.md", + "id": "code_review_report_final_md" }, { - "label": "Discover available field names before querying /historical or /fundamental.", - "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L40", - "community": 54, - "norm_label": "discover available field names before querying /historical or /fundamental.", - "id": "controller_stocksapi_controller_rationale_40" + "label": "Final Code Review & Regrade", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT_FINAL.md", + "source_location": "L1", + "community": 212, + "norm_label": "final code review & regrade", + "id": "server_code_review_report_final_final_code_review_regrade" }, { - "label": "Get year-based historical financial data for Brazilian B3 stocks. Returns", - "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L96", - "community": 197, - "norm_label": "get year-based historical financial data for brazilian b3 stocks. returns", - "id": "controller_stocksapi_controller_rationale_96" + "label": "Grade card", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT_FINAL.md", + "source_location": "L8", + "community": 212, + "norm_label": "grade card", + "id": "server_code_review_report_final_grade_card" }, { - "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": "L161", - "community": 157, - "norm_label": "get point-in-time fundamental/valuation data for brazilian b3 stocks. ret", - "id": "controller_stocksapi_controller_rationale_161" + "label": "Finding verdicts", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT_FINAL.md", + "source_location": "L18", + "community": 212, + "norm_label": "finding verdicts", + "id": "server_code_review_report_final_finding_verdicts" }, { - "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": "L229", - "community": 169, - "norm_label": "get 10-year daily price history (cotation) for brazilian b3 stocks. retur", - "id": "controller_stocksapi_controller_rationale_229" + "label": "Architecture (from phase-0 envelope, spot-confirmed)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT_FINAL.md", + "source_location": "L20", + "community": 212, + "norm_label": "architecture (from phase-0 envelope, spot-confirmed)", + "id": "server_code_review_report_final_architecture_from_phase_0_envelope_spot_confirmed" }, { - "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": "L283", - "community": 81, - "norm_label": "get real-time price quotation for a single brazilian b3 stock. returns th", - "id": "controller_stocksapi_controller_rationale_283" + "label": "Security (from phase-0 envelope, spot-confirmed)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT_FINAL.md", + "source_location": "L32", + "community": 212, + "norm_label": "security (from phase-0 envelope, spot-confirmed)", + "id": "server_code_review_report_final_security_from_phase_0_envelope_spot_confirmed" }, { - "label": "registry", - "file_type": "code", - "source_file": "frontend/src/components/MdocMessage.jsx", - "source_location": "L4", - "community": 211, - "norm_label": "registry", - "id": "components_mdocmessage_registry" + "label": "Code quality (own regrade)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT_FINAL.md", + "source_location": "L37", + "community": 212, + "norm_label": "code quality (own regrade)", + "id": "server_code_review_report_final_code_quality_own_regrade" }, { - "label": "preprocessGeminiTags()", - "file_type": "code", - "source_file": "frontend/src/components/MdocMessage.jsx", - "source_location": "L14", - "community": 211, - "norm_label": "preprocessgeminitags()", - "id": "components_mdocmessage_preprocessgeminitags" + "label": "Performance (own regrade)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT_FINAL.md", + "source_location": "L45", + "community": 212, + "norm_label": "performance (own regrade)", + "id": "server_code_review_report_final_performance_own_regrade" }, { - "label": "WorkspaceLink()", - "file_type": "code", - "source_file": "frontend/src/components/MdocMessage.jsx", - "source_location": "L61", - "community": 211, - "norm_label": "workspacelink()", - "id": "components_mdocmessage_workspacelink" + "label": "Requirements/coverage (own regrade)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT_FINAL.md", + "source_location": "L52", + "community": 212, + "norm_label": "requirements/coverage (own regrade)", + "id": "server_code_review_report_final_requirements_coverage_own_regrade" }, { - "label": "_safe_filter()", - "file_type": "code", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L26", - "community": 116, - "norm_label": "_safe_filter()", - "id": "prometheus_agent_safe_filter" + "label": "New issues (severity-ordered; envelope items restated with evidence, mine marked \u2605)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT_FINAL.md", + "source_location": "L58", + "community": 212, + "norm_label": "new issues (severity-ordered; envelope items restated with evidence, mine marked \u2605)", + "id": "server_code_review_report_final_new_issues_severity_ordered_envelope_items_restated_with_evidence_mine_marked" }, { - "label": "FieldRegistry", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L89", - "community": 80, - "norm_label": "fieldregistry", - "id": "prometheus_compact_fieldregistry" + "label": "Merge-blockers", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT_FINAL.md", + "source_location": "L68", + "community": 212, + "norm_label": "merge-blockers", + "id": "server_code_review_report_final_merge_blockers" }, { - "label": ".buildUrl()", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L94", - "community": 80, - "norm_label": ".buildurl()", - "id": "prometheus_compact_fieldregistry_buildurl" + "label": "Deliberate non-changes (do not \"fix\")", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT_FINAL.md", + "source_location": "L74", + "community": 212, + "norm_label": "deliberate non-changes (do not \"fix\")", + "id": "server_code_review_report_final_deliberate_non_changes_do_not_fix" }, { - "label": ".fetchFields()", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L99", - "community": 80, - "norm_label": ".fetchfields()", - "id": "prometheus_compact_fieldregistry_fetchfields" + "label": "Follow-ups", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT_FINAL.md", + "source_location": "L85", + "community": 212, + "norm_label": "follow-ups", + "id": "server_code_review_report_final_follow_ups" }, { - "label": ".getFields()", + "label": "__init__.py", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L120", - "community": 80, - "norm_label": ".getfields()", - "id": "prometheus_compact_fieldregistry_getfields" + "source_file": "main/models/__init__.py", + "source_location": "L1", + "community": 271, + "norm_label": "__init__.py", + "id": "main_models_init_py" }, { - "label": ".buildMetricRegex()", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L127", - "community": 80, - "norm_label": ".buildmetricregex()", - "id": "prometheus_compact_fieldregistry_buildmetricregex" + "label": "CODE_REVIEW_REPORT.md", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L1", + "community": 161, + "norm_label": "code_review_report.md", + "id": "code_review_report_md" }, { - "label": ".getMetricRegex()", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L134", - "community": 80, - "norm_label": ".getmetricregex()", - "id": "prometheus_compact_fieldregistry_getmetricregex" + "label": "Code Review Report \u2014 Mansa Server", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L1", + "community": 160, + "norm_label": "code review report \u2014 mansa server", + "id": "server_code_review_report_code_review_report_mansa_server" }, { - "label": ".__init__()", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L222", - "community": 80, - "norm_label": ".__init__()", - "id": "prometheus_compact_prometheuscompactor_init" + "label": "Table of Contents", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L11", + "community": 160, + "norm_label": "table of contents", + "id": "server_code_review_report_table_of_contents" }, { - "label": "_getDb()", - "file_type": "code", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L18", - "community": 152, - "norm_label": "_getdb()", - "id": "prometheus_tools_getdb" + "label": "Executive Summary", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L31", + "community": 161, + "norm_label": "executive summary", + "id": "server_code_review_report_executive_summary" }, { - "label": "Search user's saved memories, preferences, and past analysis context. Use", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L27", - "community": 152, - "norm_label": "search user's saved memories, preferences, and past analysis context. use", - "id": "prometheus_tools_rationale_27" + "label": "\u00a71 Project Structure & Layout \u2014 7/10 (Pass)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L54", + "community": 204, + "norm_label": "\u00a71 project structure & layout \u2014 7/10 (pass)", + "id": "server_code_review_report_1_project_structure_layout_7_10_pass" }, { - "label": "Store a memory about the user's preferences, analysis results, or feedback.", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L54", - "community": 208, - "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", - "id": "prometheus_tools_rationale_54" + "label": "code:block1 (run.py / config.py / alembic.ini)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L58", + "community": 204, + "norm_label": "code:block1 (run.py / config.py / alembic.ini)", + "id": "server_code_review_report_codeblock_1" }, { - "label": "Execute Python code in an isolated sandbox. Use for quantitative analysis,", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L92", - "community": 487, - "norm_label": "execute python code in an isolated sandbox. use for quantitative analysis,", - "id": "prometheus_tools_rationale_92" + "label": "\u00a72 Service/Business Separation \u2014 MVC 4/10 (Historical layering score)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L83", + "community": 160, + "norm_label": "\u00a72 service/business separation \u2014 mvc 4/10 (historical layering score)", + "id": "server_code_review_report_2_service_business_separation_mvc_4_10_historical_layering_score" }, { - "label": "Read a file from the workspace. Args: path: Path to the file (e.", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L113", - "community": 525, - "norm_label": "read a file from the workspace. args: path: path to the file (e.", - "id": "prometheus_tools_rationale_113" + "label": "\u00a72.1 BOX-ISOLATION AUDIT \u2014 6.5/10 (Authoritative per user m00022)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L101", + "community": 205, + "norm_label": "\u00a72.1 box-isolation audit \u2014 6.5/10 (authoritative per user m00022)", + "id": "server_code_review_report_2_1_box_isolation_audit_6_5_10_authoritative_per_user_m00022" }, { - "label": "Write a file to the workspace. Use this to save data files (CSV, JSON, scri", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L127", - "community": 523, - "norm_label": "write a file to the workspace. use this to save data files (csv, json, scri", - "id": "prometheus_tools_rationale_127" + "label": "2.1.1 Enumerated services and `app/` paths", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L107", + "community": 205, + "norm_label": "2.1.1 enumerated services and `app/` paths", + "id": "server_code_review_report_2_1_1_enumerated_services_and_app_paths" }, { - "label": "List files in the workspace directory. Args: path: Directory pat", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L143", - "community": 523, - "norm_label": "list files in the workspace directory. args: path: directory pat", - "id": "prometheus_tools_rationale_143" + "label": "2.1.2 Violation table V1\u2013V7 (verbatim import lines with file:line)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L118", + "community": 205, + "norm_label": "2.1.2 violation table v1\u2013v7 (verbatim import lines with file:line)", + "id": "server_code_review_report_2_1_2_violation_table_v1_v7_verbatim_import_lines_with_file_line" }, { - "label": "Get a download link for a workspace file to share with the user. Use this", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L156", - "community": 523, - "norm_label": "get a download link for a workspace file to share with the user. use this", - "id": "prometheus_tools_rationale_156" + "label": "2.1.3 Deletion matrix \u2014 \u201cdeleting `app/` or service of Y must not break X\u201d (strict)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L140", + "community": 205, + "norm_label": "2.1.3 deletion matrix \u2014 \u201cdeleting `app/` or service of y must not break x\u201d (strict)", + "id": "server_code_review_report_2_1_3_deletion_matrix_deleting_app_or_service_of_y_must_not_break_x_strict" }, { - "label": "._executeQuery()", - "file_type": "code", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L110", - "community": 63, - "norm_label": "._executequery()", - "id": "stocks_api_query_stocksquerymanager_executequery" + "label": "2.1.4 Scores with rubric", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L154", + "community": 205, + "norm_label": "2.1.4 scores with rubric", + "id": "server_code_review_report_2_1_4_scores_with_rubric" }, { - "label": "Shared query pipeline for historical and fundamental endpoints.", - "file_type": "rationale", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L123", - "community": 63, - "norm_label": "shared query pipeline for historical and fundamental endpoints.", - "id": "stocks_api_query_rationale_123" + "label": "2.1.5 Shared-kernel analysis", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L169", + "community": 205, + "norm_label": "2.1.5 shared-kernel analysis", + "id": "server_code_review_report_2_1_5_shared_kernel_analysis" }, { - "label": "Discover available field names before querying /historical or /fundamental.", - "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L48", - "community": 54, - "norm_label": "discover available field names before querying /historical or /fundamental.", - "id": "controller_stocksapi_controller_rationale_48" + "label": "2.1.6 Phased fix", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L183", + "community": 205, + "norm_label": "2.1.6 phased fix", + "id": "server_code_review_report_2_1_6_phased_fix" }, { - "label": "Get year-based historical financial data for Brazilian B3 stocks. Returns", - "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L104", - "community": 197, - "norm_label": "get year-based historical financial data for brazilian b3 stocks. returns", - "id": "controller_stocksapi_controller_rationale_104" + "label": "Phase 0 \u2014 Stop the bleed (no package moves, <1 day, removes hard break)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L185", + "community": 205, + "norm_label": "phase 0 \u2014 stop the bleed (no package moves, <1 day, removes hard break)", + "id": "server_code_review_report_phase_0_stop_the_bleed_no_package_moves_1_day_removes_hard_break" }, { - "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": "L169", - "community": 157, - "norm_label": "get point-in-time fundamental/valuation data for brazilian b3 stocks. ret", - "id": "controller_stocksapi_controller_rationale_169" + "label": "Phase 1 \u2014 Extract `shared/` package (3\u20135 days, proper kernel)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L196", + "community": 204, + "norm_label": "phase 1 \u2014 extract `shared/` package (3\u20135 days, proper kernel)", + "id": "server_code_review_report_phase_1_extract_shared_package_3_5_days_proper_kernel" }, { - "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": "L237", - "community": 169, - "norm_label": "get 10-year daily price history (cotation) for brazilian b3 stocks. retur", - "id": "controller_stocksapi_controller_rationale_237" + "label": "code:block2 (shared/)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L198", + "community": 204, + "norm_label": "code:block2 (shared/)", + "id": "server_code_review_report_codeblock_2" }, { - "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": "L291", - "community": 81, - "norm_label": "get real-time price quotation for a single brazilian b3 stock. returns th", - "id": "controller_stocksapi_controller_rationale_291" + "label": "Phase 2 \u2014 Enforce via CI gate + verification (1 day)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L229", + "community": 205, + "norm_label": "phase 2 \u2014 enforce via ci gate + verification (1 day)", + "id": "server_code_review_report_phase_2_enforce_via_ci_gate_verification_1_day" }, { - "label": "ServiceManager", - "file_type": "code", - "source_file": "main/utils/service_manager.py", - "source_location": "L15", - "community": 536, - "norm_label": "servicemanager", - "id": "utils_service_manager_servicemanager" + "label": "code:powershell (ruff check . && ruff format --check .)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L240", + "community": 205, + "norm_label": "code:powershell (ruff check . && ruff format --check .)", + "id": "server_code_review_report_codeblock_3" }, { - "label": "onExtractionDone()", - "file_type": "code", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L26", - "community": 116, - "norm_label": "onextractiondone()", - "id": "prometheus_agent_onextractiondone" + "label": "\u00a72.2 CODE EFFICIENCY \u2014 O(n\u00b2), Complexity & Blob Anti-Patterns", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L252", + "community": 230, + "norm_label": "\u00a72.2 code efficiency \u2014 o(n2), complexity & blob anti-patterns", + "id": "server_code_review_report_2_2_code_efficiency_o_n2_complexity_blob_anti_patterns" }, { - "label": "spawnExtraction()", - "file_type": "code", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L34", - "community": 116, - "norm_label": "spawnextraction()", - "id": "prometheus_agent_spawnextraction" + "label": "2.2.1 Complexity hotspots table (H1\u2013H17 condensed to P0/P1/P2)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L258", + "community": 230, + "norm_label": "2.2.1 complexity hotspots table (h1\u2013h17 condensed to p0/p1/p2)", + "id": "server_code_review_report_2_2_1_complexity_hotspots_table_h1_h17_condensed_to_p0_p1_p2" }, { - "label": "_forward()", - "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L205", - "community": 84, - "norm_label": "_forward()", - "id": "controller_prometheus_controller_forward" + "label": "2.2.2 Blob inventory (LOC table + SRP evidence)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L282", + "community": 230, + "norm_label": "2.2.2 blob inventory (loc table + srp evidence)", + "id": "server_code_review_report_2_2_2_blob_inventory_loc_table_srp_evidence" }, { - "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": "2.2.3 Mass data loads", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L299", + "community": 230, + "norm_label": "2.2.3 mass data loads", + "id": "server_code_review_report_2_2_3_mass_data_loads" }, { - "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": "L234", - "community": 169, - "norm_label": "get 10-year daily price history (cotation) for brazilian b3 stocks. retur", - "id": "controller_stocksapi_controller_rationale_234" + "label": "code:block4 (scraper.py:44 671 LOC \u2014 mass loads: SELECT * fetchma)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L314", + "community": 230, + "norm_label": "code:block4 (scraper.py:44 671 loc \u2014 mass loads: select * fetchma)", + "id": "server_code_review_report_codeblock_4" }, { - "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": "L288", - "community": 81, - "norm_label": "get real-time price quotation for a single brazilian b3 stock. returns th", - "id": "controller_stocksapi_controller_rationale_288" + "label": "2.2.4 Phased fix roadmap (P0/P1/P2)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L325", + "community": 230, + "norm_label": "2.2.4 phased fix roadmap (p0/p1/p2)", + "id": "server_code_review_report_2_2_4_phased_fix_roadmap_p0_p1_p2" }, { - "label": "uploadWorkspaceFile()", - "file_type": "code", - "source_file": "frontend/src/api.js", - "source_location": "L117", - "community": 5, - "norm_label": "uploadworkspacefile()", - "id": "src_api_uploadworkspacefile" + "label": "P0 \u2014 Stop the bleed (no package moves, <1 day) \u2014 hoist H10 + gate H1/H2 + split scraper/query seams", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L329", + "community": 230, + "norm_label": "p0 \u2014 stop the bleed (no package moves, <1 day) \u2014 hoist h10 + gate h1/h2 + split scraper/query seams", + "id": "server_code_review_report_p0_stop_the_bleed_no_package_moves_1_day_hoist_h10_gate_h1_h2_split_scraper_query_seams" }, { - "label": "api.test.js", - "file_type": "code", - "source_file": "frontend/src/api.test.js", - "source_location": "L1", - "community": 216, - "norm_label": "api.test.js", - "id": "frontend_src_api_test_js" + "label": "P1 \u2014 Decouple blobs (3\u20135 days) \u2014 memory/agent splits + pgvector + query/compact splits", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L341", + "community": 230, + "norm_label": "p1 \u2014 decouple blobs (3\u20135 days) \u2014 memory/agent splits + pgvector + query/compact splits", + "id": "server_code_review_report_p1_decouple_blobs_3_5_days_memory_agent_splits_pgvector_query_compact_splits" }, { - "label": "sseResponse()", - "file_type": "code", - "source_file": "frontend/src/api.test.js", - "source_location": "L4", - "community": 216, - "norm_label": "sseresponse()", - "id": "src_api_test_sseresponse" + "label": "code:powershell (ruff check . && ruff format --check .)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L354", + "community": 230, + "norm_label": "code:powershell (ruff check . && ruff format --check .)", + "id": "server_code_review_report_codeblock_5" }, { - "label": "fetchMock", - "file_type": "code", - "source_file": "frontend/src/api.test.js", - "source_location": "L23", - "community": 216, - "norm_label": "fetchmock", - "id": "src_api_test_fetchmock" + "label": "P2 \u2014 Harden cache & tokenizer (1\u20132 days) \u2014 double-buffer + tokenizer memoization", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L363", + "community": 230, + "norm_label": "p2 \u2014 harden cache & tokenizer (1\u20132 days) \u2014 double-buffer + tokenizer memoization", + "id": "server_code_review_report_p2_harden_cache_tokenizer_1_2_days_double_buffer_tokenizer_memoization" }, { - "label": "onChunk", - "file_type": "code", - "source_file": "frontend/src/api.test.js", - "source_location": "L28", - "community": 216, - "norm_label": "onchunk", - "id": "src_api_test_onchunk" + "label": "code:powershell (pytest tests/test_stocks_cache_concurrency.py -v # ThreadPo)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L375", + "community": 230, + "norm_label": "code:powershell (pytest tests/test_stocks_cache_concurrency.py -v # threadpo)", + "id": "server_code_review_report_codeblock_6" }, { - "label": "onDone", - "file_type": "code", - "source_file": "frontend/src/api.test.js", - "source_location": "L29", - "community": 216, - "norm_label": "ondone", - "id": "src_api_test_ondone" + "label": "\u00a73 Data Access & ORM \u2014 6/10 (Conditional)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L385", + "community": 160, + "norm_label": "\u00a73 data access & orm \u2014 6/10 (conditional)", + "id": "server_code_review_report_3_data_access_orm_6_10_conditional" }, { - "label": "onCursor", - "file_type": "code", - "source_file": "frontend/src/api.test.js", - "source_location": "L30", - "community": 216, - "norm_label": "oncursor", - "id": "src_api_test_oncursor" + "label": "\u00a74 API Design & Validation \u2014 6.5/10 (Conditional)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L399", + "community": 160, + "norm_label": "\u00a74 api design & validation \u2014 6.5/10 (conditional)", + "id": "server_code_review_report_4_api_design_validation_6_5_10_conditional" }, { - "label": "onSession", - "file_type": "code", - "source_file": "frontend/src/api.test.js", - "source_location": "L31", - "community": 216, - "norm_label": "onsession", - "id": "src_api_test_onsession" + "label": "\u00a75 Security & Auth \u2014 5.5/10 (Conditional)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L414", + "community": 160, + "norm_label": "\u00a75 security & auth \u2014 5.5/10 (conditional)", + "id": "server_code_review_report_5_security_auth_5_5_10_conditional" }, { - "label": "file", - "file_type": "code", - "source_file": "frontend/src/api.test.js", - "source_location": "L113", - "community": 216, - "norm_label": "file", - "id": "src_api_test_file" + "label": "\u00a76 Performance & Caching \u2014 6/10 (Conditional)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L429", + "community": 160, + "norm_label": "\u00a76 performance & caching \u2014 6/10 (conditional)", + "id": "server_code_review_report_6_performance_caching_6_10_conditional" }, { - "label": "uploadWorkspaceFile()", - "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L147", - "community": 84, - "norm_label": "uploadworkspacefile()", - "id": "controller_prometheus_controller_uploadworkspacefile" + "label": "\u00a77 Testing & Coverage \u2014 7/10 (Pass)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L443", + "community": 160, + "norm_label": "\u00a77 testing & coverage \u2014 7/10 (pass)", + "id": "server_code_review_report_7_testing_coverage_7_10_pass" }, { - "label": "Write a file to the workspace. Use this to save data files (CSV, JSON, scri", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L122", - "community": 523, - "norm_label": "write a file to the workspace. use this to save data files (csv, json, scri", - "id": "prometheus_tools_rationale_122" + "label": "\u00a78 DevOps & Config \u2014 6/10 (Conditional)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L456", + "community": 160, + "norm_label": "\u00a78 devops & config \u2014 6/10 (conditional)", + "id": "server_code_review_report_8_devops_config_6_10_conditional" }, { - "label": "List files in the workspace directory. Args: path: Directory pat", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L135", - "community": 523, - "norm_label": "list files in the workspace directory. args: path: directory pat", - "id": "prometheus_tools_rationale_135" + "label": "Conclusions & Roadmap", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L471", + "community": 160, + "norm_label": "conclusions & roadmap", + "id": "server_code_review_report_conclusions_roadmap" }, { - "label": "_get_client()", - "file_type": "code", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L58", - "community": 116, - "norm_label": "_get_client()", - "id": "prometheus_agent_get_client" + "label": "Appendix A: Graphify Verification", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L487", + "community": 160, + "norm_label": "appendix a: graphify verification", + "id": "server_code_review_report_appendix_a_graphify_verification" }, { - "label": "Lazy module-level singleton so the genai client is created once, not per request", - "file_type": "rationale", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L59", - "community": 116, - "norm_label": "lazy module-level singleton so the genai client is created once, not per request", - "id": "prometheus_agent_rationale_59" + "label": "code:powershell (graphify update .)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L491", + "community": 160, + "norm_label": "code:powershell (graphify update .)", + "id": "server_code_review_report_codeblock_7" }, { - "label": "Map a MySQL DATA_TYPE to a pyarrow type for columns that are all-None in th", - "file_type": "rationale", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L59", - "community": 82, - "norm_label": "map a mysql data_type to a pyarrow type for columns that are all-none in th", - "id": "stocks_api_cache_rationale_59" + "label": "Appendix B: File:Line Index (verbatim audit)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L502", + "community": 160, + "norm_label": "appendix b: file:line index (verbatim audit)", + "id": "server_code_review_report_appendix_b_file_line_index_verbatim_audit" }, { - "label": "scaling_benchmark.py", - "file_type": "code", - "source_file": "scaling_benchmark.py", - "source_location": "L1", - "community": 489, - "norm_label": "scaling_benchmark.py", - "id": "scaling_benchmark_py" + "label": "Appendix C: Detailed Evidence \u2014 Deletion & Import Probes (ses_fa5ecaa29ffeVc5LqIUhAPnlZo)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L523", + "community": 259, + "norm_label": "appendix c: detailed evidence \u2014 deletion & import probes (ses_fa5ecaa29ffevc5lqiuhapnlzo)", + "id": "server_code_review_report_appendix_c_detailed_evidence_deletion_import_probes_ses_fa5ecaa29ffevc5lqiuhapnlzo" }, { - "label": "stats()", - "file_type": "code", - "source_file": "scaling_benchmark.py", - "source_location": "L19", - "community": 489, - "norm_label": "stats()", - "id": "server_scaling_benchmark_stats" + "label": "C.1 Probe method", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L527", + "community": 259, + "norm_label": "c.1 probe method", + "id": "server_code_review_report_c_1_probe_method" }, { - "label": "hammer_measured()", - "file_type": "code", - "source_file": "scaling_benchmark.py", - "source_location": "L32", - "community": 489, - "norm_label": "hammer_measured()", - "id": "server_scaling_benchmark_hammer_measured" + "label": "C.2 Raw probe hits (verbatim)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L535", + "community": 259, + "norm_label": "c.2 raw probe hits (verbatim)", + "id": "server_code_review_report_c_2_raw_probe_hits_verbatim" }, { - "label": "main()", - "file_type": "code", - "source_file": "scaling_benchmark.py", - "source_location": "L50", - "community": 489, - "norm_label": "main()", - "id": "server_scaling_benchmark_main" + "label": "code:block8 (main/app/scraper_b3/scraper.py:21 -> from main.app.stocks_a)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L537", + "community": 259, + "norm_label": "code:block8 (main/app/scraper_b3/scraper.py:21 -> from main.app.stocks_a)", + "id": "server_code_review_report_codeblock_8" }, { - "label": "Fire n requests with c concurrent workers, measuring ttfb + total per request.", - "file_type": "rationale", - "source_file": "scaling_benchmark.py", - "source_location": "L33", - "community": 489, - "norm_label": "fire n requests with c concurrent workers, measuring ttfb + total per request.", - "id": "server_scaling_benchmark_rationale_33" + "label": "C.3 Cycle analysis V3+V5", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L550", + "community": 259, + "norm_label": "c.3 cycle analysis v3+v5", + "id": "server_code_review_report_c_3_cycle_analysis_v3_v5" }, { - "label": "_probe_host.py", - "file_type": "code", - "source_file": "_probe_host.py", - "source_location": "L1", - "community": 514, - "norm_label": "_probe_host.py", - "id": "probe_host_py" + "label": "C.4 Barrel impact V6", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L557", + "community": 259, + "norm_label": "c.4 barrel impact v6", + "id": "server_code_review_report_c_4_barrel_impact_v6" }, { - "label": "sec()", - "file_type": "code", - "source_file": "_probe_host.py", - "source_location": "L6", - "community": 514, - "norm_label": "sec()", - "id": "server_probe_host_sec" + "label": "code:python (from main.models.user import User)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L561", + "community": 259, + "norm_label": "code:python (from main.models.user import user)", + "id": "server_code_review_report_codeblock_9" }, { - "label": "_probe_stocks.py", - "file_type": "code", - "source_file": "_probe_stocks.py", - "source_location": "L1", - "community": 515, - "norm_label": "_probe_stocks.py", - "id": "probe_stocks_py" - }, - { - "label": "sec()", - "file_type": "code", - "source_file": "_probe_stocks.py", - "source_location": "L6", - "community": 515, - "norm_label": "sec()", - "id": "server_probe_stocks_sec" - }, - { - "label": "_probe_stream.py", - "file_type": "code", - "source_file": "_probe_stream.py", - "source_location": "L1", - "community": 516, - "norm_label": "_probe_stream.py", - "id": "probe_stream_py" - }, - { - "label": "sec()", - "file_type": "code", - "source_file": "_probe_stream.py", - "source_location": "L5", - "community": 516, - "norm_label": "sec()", - "id": "server_probe_stream_sec" - }, - { - "label": "BaseMansaSettings", - "file_type": "code", - "source_file": "config.py", - "source_location": "L23", - "community": 102, - "norm_label": "basemansasettings", - "id": "server_config_basemansasettings" - }, - { - "label": "device.py", - "file_type": "code", - "source_file": "main/app/authentication/device.py", - "source_location": "L1", - "community": 1, - "norm_label": "device.py", - "id": "main_app_authentication_device_py" - }, - { - "label": "DeviceInfo", - "file_type": "code", - "source_file": "main/app/authentication/device.py", - "source_location": "L6", - "community": 1, - "norm_label": "deviceinfo", - "id": "authentication_device_deviceinfo" + "label": "C.5 Kernel leak V7 \u2014 `config.py:126` + `main/utils/roles.py:43`", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L576", + "community": 259, + "norm_label": "c.5 kernel leak v7 \u2014 `config.py:126` + `main/utils/roles.py:43`", + "id": "server_code_review_report_c_5_kernel_leak_v7_config_py_126_main_utils_roles_py_43" }, { - "label": "parseUserAgent()", - "file_type": "code", - "source_file": "main/app/authentication/device.py", - "source_location": "L12", - "community": 1, - "norm_label": "parseuseragent()", - "id": "authentication_device_parseuseragent" + "label": "code:python (engine = create_engine()", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L580", + "community": 259, + "norm_label": "code:python (engine = create_engine()", + "id": "server_code_review_report_codeblock_10" }, { - "label": "detectBrowser()", - "file_type": "code", - "source_file": "main/app/authentication/device.py", - "source_location": "L33", - "community": 1, - "norm_label": "detectbrowser()", - "id": "authentication_device_detectbrowser" + "label": "code:python (@staticmethod)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L599", + "community": 259, + "norm_label": "code:python (@staticmethod)", + "id": "server_code_review_report_codeblock_11" }, { - "label": "detectOS()", - "file_type": "code", - "source_file": "main/app/authentication/device.py", - "source_location": "L55", - "community": 1, - "norm_label": "detectos()", - "id": "authentication_device_detectos" + "label": "Appendix D: Deletion Matrix Drill \u2014 Why STOCKS_API Deleted Breaks SCRAPER Hard", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L616", + "community": 532, + "norm_label": "appendix d: deletion matrix drill \u2014 why stocks_api deleted breaks scraper hard", + "id": "server_code_review_report_appendix_d_deletion_matrix_drill_why_stocks_api_deleted_breaks_scraper_hard" }, { - "label": "detectDeviceType()", - "file_type": "code", - "source_file": "main/app/authentication/device.py", - "source_location": "L79", - "community": 1, - "norm_label": "detectdevicetype()", - "id": "authentication_device_detectdevicetype" + "label": "D.1 STOCKS_API deletion simulation", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L618", + "community": 532, + "norm_label": "d.1 stocks_api deletion simulation", + "id": "server_code_review_report_d_1_stocks_api_deletion_simulation" }, { - "label": "cleanupExpiredSessions()", - "file_type": "code", - "source_file": "main/app/authentication/session.py", - "source_location": "L124", - "community": 149, - "norm_label": "cleanupexpiredsessions()", - "id": "authentication_session_cleanupexpiredsessions" + "label": "D.2 Full deletion matrix re-stated with evidence keys", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L628", + "community": 532, + "norm_label": "d.2 full deletion matrix re-stated with evidence keys", + "id": "server_code_review_report_d_2_full_deletion_matrix_re_stated_with_evidence_keys" }, { - "label": ".invalidate()", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L139", - "community": 80, - "norm_label": ".invalidate()", - "id": "prometheus_compact_fieldregistry_invalidate" + "label": "D.3 God-provider explanation", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L640", + "community": 532, + "norm_label": "d.3 god-provider explanation", + "id": "server_code_review_report_d_3_god_provider_explanation" }, { - "label": ".warmup()", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L145", - "community": 80, - "norm_label": ".warmup()", - "id": "prometheus_compact_fieldregistry_warmup" + "label": "Appendix E: Shared-Kernel Deep Dive (should-be-kernel vs leak)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L649", + "community": 533, + "norm_label": "appendix e: shared-kernel deep dive (should-be-kernel vs leak)", + "id": "server_code_review_report_appendix_e_shared_kernel_deep_dive_should_be_kernel_vs_leak" }, { - "label": "charCount()", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L153", - "community": 80, - "norm_label": "charcount()", - "id": "prometheus_compact_charcount" + "label": "E.1 Should-be-kernel (keep, but relocate)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L653", + "community": 533, + "norm_label": "e.1 should-be-kernel (keep, but relocate)", + "id": "server_code_review_report_e_1_should_be_kernel_keep_but_relocate" }, { - "label": "events.py", - "file_type": "code", - "source_file": "main/app/prometheus/events.py", - "source_location": "L1", - "community": 12, - "norm_label": "events.py", - "id": "main_app_prometheus_events_py" + "label": "E.2 Leak (must fix \u2014 app\u2192kernel or kernel\u2192app violation)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L661", + "community": 533, + "norm_label": "e.2 leak (must fix \u2014 app\u2192kernel or kernel\u2192app violation)", + "id": "server_code_review_report_e_2_leak_must_fix_app_kernel_or_kernel_app_violation" }, { - "label": "LoopLogger", - "file_type": "code", - "source_file": "main/app/prometheus/events.py", - "source_location": "L7", - "community": 12, - "norm_label": "looplogger", - "id": "prometheus_events_looplogger" + "label": "E.3 Per-violation target after fix (re-stated from \u00a72.1.6 for audit traceability)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L671", + "community": 533, + "norm_label": "e.3 per-violation target after fix (re-stated from \u00a72.1.6 for audit traceability)", + "id": "server_code_review_report_e_3_per_violation_target_after_fix_re_stated_from_2_1_6_for_audit_traceability" }, { - "label": ".__init__()", - "file_type": "code", - "source_file": "main/app/prometheus/events.py", - "source_location": "L8", - "community": 12, - "norm_label": ".__init__()", - "id": "prometheus_events_looplogger_init" + "label": "Appendix F: CI Gate & Graphify Verification Details", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L686", + "community": 508, + "norm_label": "appendix f: ci gate & graphify verification details", + "id": "server_code_review_report_appendix_f_ci_gate_graphify_verification_details" }, { - "label": ".emit()", - "file_type": "code", - "source_file": "main/app/prometheus/events.py", - "source_location": "L11", - "community": 12, - "norm_label": ".emit()", - "id": "prometheus_events_looplogger_emit" + "label": "F.1 import-linter contract (Phase 2)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L688", + "community": 508, + "norm_label": "f.1 import-linter contract (phase 2)", + "id": "server_code_review_report_f_1_import_linter_contract_phase_2" }, { - "label": "generateSecureKey()", - "file_type": "code", - "source_file": "main/app/stocks_api/key.py", - "source_location": "L57", - "community": 141, - "norm_label": "generatesecurekey()", - "id": "stocks_api_key_generatesecurekey" + "label": "code:ini (# setup.cfg or .importlinter)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L690", + "community": 508, + "norm_label": "code:ini (# setup.cfg or .importlinter)", + "id": "server_code_review_report_codeblock_12" }, { - "label": "createKey()", - "file_type": "code", - "source_file": "main/app/stocks_api/key.py", - "source_location": "L61", - "community": 26, - "norm_label": "createkey()", - "id": "stocks_api_key_createkey" + "label": "code:toml (# pyproject.toml)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L715", + "community": 508, + "norm_label": "code:toml (# pyproject.toml)", + "id": "server_code_review_report_codeblock_13" }, { - "label": "toDict()", - "file_type": "code", - "source_file": "main/app/user/user.py", - "source_location": "L22", - "community": 519, - "norm_label": "todict()", - "id": "user_user_todict" + "label": "F.2 ci.ps1 gate insertion", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L723", + "community": 508, + "norm_label": "f.2 ci.ps1 gate insertion", + "id": "server_code_review_report_f_2_ci_ps1_gate_insertion" }, { - "label": "Sends pre-serialized JSON bytes without re-encoding (cache-friendly).", - "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L24", - "community": 197, - "norm_label": "sends pre-serialized json bytes without re-encoding (cache-friendly).", - "id": "controller_stocksapi_controller_rationale_24" + "label": "code:powershell (# ci.ps1 \u2014 insertion)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L727", + "community": 508, + "norm_label": "code:powershell (# ci.ps1 \u2014 insertion)", + "id": "server_code_review_report_codeblock_14" }, { - "label": "Discover available field names before querying /historical or /fundamental.", - "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L49", - "community": 54, - "norm_label": "discover available field names before querying /historical or /fundamental.", - "id": "controller_stocksapi_controller_rationale_49" + "label": "code:powershell (ruff check --select TID251 . # TID251 = banned-api)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L739", + "community": 508, + "norm_label": "code:powershell (ruff check --select tid251 . # tid251 = banned-api)", + "id": "server_code_review_report_codeblock_15" }, { - "label": "Get year-based historical financial data for Brazilian B3 stocks. Returns", - "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L105", - "community": 197, - "norm_label": "get year-based historical financial data for brazilian b3 stocks. returns", - "id": "controller_stocksapi_controller_rationale_105" + "label": "F.3 Graphify verification", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L743", + "community": 508, + "norm_label": "f.3 graphify verification", + "id": "server_code_review_report_f_3_graphify_verification" }, { - "label": "createSession()", - "file_type": "code", - "source_file": "frontend/src/api.js", - "source_location": "L91", - "community": 5, - "norm_label": "createsession()", - "id": "src_api_createsession" + "label": "code:powershell (graphify update .)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L745", + "community": 508, + "norm_label": "code:powershell (graphify update .)", + "id": "server_code_review_report_codeblock_16" }, { - "label": "ToolChip()", - "file_type": "code", - "source_file": "frontend/src/components/AgentLoop.jsx", - "source_location": "L3", - "community": 150, - "norm_label": "toolchip()", - "id": "components_agentloop_toolchip" + "label": "Appendix G: Cross-References & Session Traceability", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L758", + "community": 160, + "norm_label": "appendix g: cross-references & session traceability", + "id": "server_code_review_report_appendix_g_cross_references_session_traceability" }, { - "label": "Non-blocking cross-process lock around the feather build. Returns the lock file", - "file_type": "rationale", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L91", - "community": 82, - "norm_label": "non-blocking cross-process lock around the feather build. returns the lock file", - "id": "stocks_api_cache_rationale_91" + "label": "CODE_REVIEW_REPORT_20260903.md", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT_20260903.md", + "source_location": "L1", + "community": 56, + "norm_label": "code_review_report_20260903.md", + "id": "code_review_report_20260903_md" }, { - "label": "response_cache.py", - "file_type": "code", - "source_file": "main/app/stocks_api/response_cache.py", + "label": "Code Review Report \u2014 Mansa Server (FastAPI, B3)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT_20260903.md", "source_location": "L1", - "community": 63, - "norm_label": "response_cache.py", - "id": "main_app_stocks_api_response_cache_py" + "community": 56, + "norm_label": "code review report \u2014 mansa server (fastapi, b3)", + "id": "server_code_review_report_20260903_code_review_report_mansa_server_fastapi_b3" }, { - "label": "ResponseCache", - "file_type": "code", - "source_file": "main/app/stocks_api/response_cache.py", - "source_location": "L19", - "community": 63, - "norm_label": "responsecache", - "id": "stocks_api_response_cache_responsecache" + "label": "1. Summary table (category, count, priority P0-P3)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT_20260903.md", + "source_location": "L12", + "community": 56, + "norm_label": "1. summary table (category, count, priority p0-p3)", + "id": "server_code_review_report_20260903_1_summary_table_category_count_priority_p0_p3" }, { - "label": ".__init__()", - "file_type": "code", - "source_file": "main/app/stocks_api/response_cache.py", - "source_location": "L20", - "community": 63, - "norm_label": ".__init__()", - "id": "stocks_api_response_cache_responsecache_init" + "label": "2. Architecture", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT_20260903.md", + "source_location": "L26", + "community": 56, + "norm_label": "2. architecture", + "id": "server_code_review_report_20260903_2_architecture" }, { - "label": ".makeKey()", - "file_type": "code", - "source_file": "main/app/stocks_api/response_cache.py", - "source_location": "L29", - "community": 63, - "norm_label": ".makekey()", - "id": "stocks_api_response_cache_responsecache_makekey" + "label": "V1 \u2014 SCRAPER \u2192 STOCKS_API (hard, P0)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT_20260903.md", + "source_location": "L32", + "community": 56, + "norm_label": "v1 \u2014 scraper \u2192 stocks_api (hard, p0)", + "id": "server_code_review_report_20260903_v1_scraper_stocks_api_hard_p0" }, { - "label": ".get()", - "file_type": "code", - "source_file": "main/app/stocks_api/response_cache.py", - "source_location": "L34", - "community": 63, - "norm_label": ".get()", - "id": "stocks_api_response_cache_responsecache_get" + "label": "V2 \u2014 PROMETHEUS \u2192 STOCKS_API (soft/lazy, P1)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT_20260903.md", + "source_location": "L38", + "community": 56, + "norm_label": "v2 \u2014 prometheus \u2192 stocks_api (soft/lazy, p1)", + "id": "server_code_review_report_20260903_v2_prometheus_stocks_api_soft_lazy_p1" }, { - "label": ".set()", - "file_type": "code", - "source_file": "main/app/stocks_api/response_cache.py", - "source_location": "L51", - "community": 63, - "norm_label": ".set()", - "id": "stocks_api_response_cache_responsecache_set" + "label": "code:python (from config import stocksEngine)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT_20260903.md", + "source_location": "L41", + "community": 56, + "norm_label": "code:python (from config import stocksengine)", + "id": "server_code_review_report_20260903_codeblock_1" }, { - "label": "createSession()", - "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L52", - "community": 84, - "norm_label": "createsession()", - "id": "controller_prometheus_controller_createsession" + "label": "V3/V4/V5 \u2014 USER \u2194 AUTH cycle (P1, contained as combined)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT_20260903.md", + "source_location": "L49", + "community": 56, + "norm_label": "v3/v4/v5 \u2014 user \u2194 auth cycle (p1, contained as combined)", + "id": "server_code_review_report_20260903_v3_v4_v5_user_auth_cycle_p1_contained_as_combined" }, { - "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": "L165", - "community": 157, - "norm_label": "get point-in-time fundamental/valuation data for brazilian b3 stocks. ret", - "id": "controller_stocksapi_controller_rationale_165" + "label": "V6 \u2014 Barrel `main/models/__init__.py:1-6` (P1)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT_20260903.md", + "source_location": "L55", + "community": 56, + "norm_label": "v6 \u2014 barrel `main/models/__init__.py:1-6` (p1)", + "id": "server_code_review_report_20260903_v6_barrel_main_models_init_py_1_6_p1" }, { - "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": "L238", - "community": 169, - "norm_label": "get 10-year daily price history (cotation) for brazilian b3 stocks. retur", - "id": "controller_stocksapi_controller_rationale_238" + "label": "V7 \u2014 Shared-kernel leak + inversion (P1)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT_20260903.md", + "source_location": "L61", + "community": 56, + "norm_label": "v7 \u2014 shared-kernel leak + inversion (p1)", + "id": "server_code_review_report_20260903_v7_shared_kernel_leak_inversion_p1" }, { - "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": "L296", - "community": 81, - "norm_label": "get real-time price quotation for a single brazilian b3 stock. returns th", - "id": "controller_stocksapi_controller_rationale_296" + "label": "A7 \u2014 Controller\u2192App bypass (P1)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT_20260903.md", + "source_location": "L67", + "community": 56, + "norm_label": "a7 \u2014 controller\u2192app bypass (p1)", + "id": "server_code_review_report_20260903_a7_controller_app_bypass_p1" }, { - "label": "generateKey()", - "file_type": "code", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L323", - "community": 197, - "norm_label": "generatekey()", - "id": "controller_stocksapi_controller_generatekey" + "label": "A8 \u2014 DB engine split ambiguity (P1)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT_20260903.md", + "source_location": "L73", + "community": 56, + "norm_label": "a8 \u2014 db engine split ambiguity (p1)", + "id": "server_code_review_report_20260903_a8_db_engine_split_ambiguity_p1" }, { - "label": "Discover available field names before querying /historical or /fundamental.", - "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L30", - "community": 54, - "norm_label": "discover available field names before querying /historical or /fundamental.", - "id": "controller_stocksapi_controller_rationale_30" + "label": "A9 \u2014 Config god + localhost allowlist (P2)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT_20260903.md", + "source_location": "L79", + "community": 56, + "norm_label": "a9 \u2014 config god + localhost allowlist (p2)", + "id": "server_code_review_report_20260903_a9_config_god_localhost_allowlist_p2" }, { - "label": "Get year-based historical financial data for Brazilian B3 stocks. Returns", - "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", + "label": "A10 \u2014 God nodes `StocksCacheManager` / `UserManager` (P2)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT_20260903.md", "source_location": "L85", - "community": 197, - "norm_label": "get year-based historical financial data for brazilian b3 stocks. returns", - "id": "controller_stocksapi_controller_rationale_85" - }, - { - "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": "L155", - "community": 157, - "norm_label": "get point-in-time fundamental/valuation data for brazilian b3 stocks. ret", - "id": "controller_stocksapi_controller_rationale_155" - }, - { - "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": "L286", - "community": 81, - "norm_label": "get real-time price quotation for a single brazilian b3 stock. returns th", - "id": "controller_stocksapi_controller_rationale_286" + "community": 56, + "norm_label": "a10 \u2014 god nodes `stockscachemanager` / `usermanager` (p2)", + "id": "server_code_review_report_20260903_a10_god_nodes_stockscachemanager_usermanager_p2" }, { - "label": "2026-08-01-stocks-cache-zlib-compression.md", + "label": "Deletion matrix (strict, re-verified)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", - "source_location": "L1", - "community": 75, - "norm_label": "2026-08-01-stocks-cache-zlib-compression.md", - "id": "docs_superpowers_plans_2026_08_01_stocks_cache_zlib_compression_md" + "source_file": "CODE_REVIEW_REPORT_20260903.md", + "source_location": "L91", + "community": 56, + "norm_label": "deletion matrix (strict, re-verified)", + "id": "server_code_review_report_20260903_deletion_matrix_strict_re_verified" }, { - "label": "Stocks Cache zlib Compression Implementation Plan", + "label": "3. Security", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", - "source_location": "L1", - "community": 75, - "norm_label": "stocks cache zlib compression implementation plan", - "id": "plans_2026_08_01_stocks_cache_zlib_compression_stocks_cache_zlib_compression_implementation_plan" + "source_file": "CODE_REVIEW_REPORT_20260903.md", + "source_location": "L102", + "community": 56, + "norm_label": "3. security", + "id": "server_code_review_report_20260903_3_security" }, { - "label": "Global Constraints", + "label": "C1 \u2014 ForgeVM unauthenticated RCE surface (Critical, P0)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", - "source_location": "L11", - "community": 75, - "norm_label": "global constraints", - "id": "plans_2026_08_01_stocks_cache_zlib_compression_global_constraints" + "source_file": "CODE_REVIEW_REPORT_20260903.md", + "source_location": "L104", + "community": 56, + "norm_label": "c1 \u2014 forgevm unauthenticated rce surface (critical, p0)", + "id": "server_code_review_report_20260903_c1_forgevm_unauthenticated_rce_surface_critical_p0" }, { - "label": "File Structure", + "label": "H1 \u2014 Logout cookie never cleared (P1)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", - "source_location": "L24", - "community": 75, - "norm_label": "file structure", - "id": "plans_2026_08_01_stocks_cache_zlib_compression_file_structure" + "source_file": "CODE_REVIEW_REPORT_20260903.md", + "source_location": "L110", + "community": 56, + "norm_label": "h1 \u2014 logout cookie never cleared (p1)", + "id": "server_code_review_report_20260903_h1_logout_cookie_never_cleared_p1" }, { - "label": "Task 1: Remove the cotation date index", + "label": "H2 \u2014 Scraper trigger exposed by DEBUG default (P1)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", - "source_location": "L34", - "community": 75, - "norm_label": "task 1: remove the cotation date index", - "id": "plans_2026_08_01_stocks_cache_zlib_compression_task_1_remove_the_cotation_date_index" + "source_file": "CODE_REVIEW_REPORT_20260903.md", + "source_location": "L116", + "community": 56, + "norm_label": "h2 \u2014 scraper trigger exposed by debug default (p1)", + "id": "server_code_review_report_20260903_h2_scraper_trigger_exposed_by_debug_default_p1" }, { - "label": "code:python (import threading)", + "label": "H3 \u2014 Stocks API has no HTTP rate limit (P1)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", - "source_location": "L47", - "community": 75, - "norm_label": "code:python (import threading)", - "id": "plans_2026_08_01_stocks_cache_zlib_compression_codeblock_1" + "source_file": "CODE_REVIEW_REPORT_20260903.md", + "source_location": "L122", + "community": 56, + "norm_label": "h3 \u2014 stocks api has no http rate limit (p1)", + "id": "server_code_review_report_20260903_h3_stocks_api_has_no_http_rate_limit_p1" }, { - "label": "code:python (# delete the whole buildCotationDateIndex function (lines 34)", + "label": "M1 \u2014 SSE error leak (P1)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", - "source_location": "L117", - "community": 75, - "norm_label": "code:python (# delete the whole buildcotationdateindex function (lines 34)", - "id": "plans_2026_08_01_stocks_cache_zlib_compression_codeblock_2" + "source_file": "CODE_REVIEW_REPORT_20260903.md", + "source_location": "L128", + "community": 56, + "norm_label": "m1 \u2014 sse error leak (p1)", + "id": "server_code_review_report_20260903_m1_sse_error_leak_p1" }, { - "label": "code:python (def filterCotationColumn(series: pd.Series, startDate, endDa)", + "label": "M2 \u2014 Session GC leaves expired-active rows (P2)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", - "source_location": "L129", - "community": 75, - "norm_label": "code:python (def filtercotationcolumn(series: pd.series, startdate, endda)", - "id": "plans_2026_08_01_stocks_cache_zlib_compression_codeblock_3" + "source_file": "CODE_REVIEW_REPORT_20260903.md", + "source_location": "L134", + "community": 56, + "norm_label": "m2 \u2014 session gc leaves expired-active rows (p2)", + "id": "server_code_review_report_20260903_m2_session_gc_leaves_expired_active_rows_p2" }, { - "label": "code:python (startDate, endDate = parseDateRange(dates))", + "label": "M3 \u2014 JWT sessionId handling (P2)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", - "source_location": "L153", - "community": 75, - "norm_label": "code:python (startdate, enddate = parsedaterange(dates))", - "id": "plans_2026_08_01_stocks_cache_zlib_compression_codeblock_4" + "source_file": "CODE_REVIEW_REPORT_20260903.md", + "source_location": "L140", + "community": 56, + "norm_label": "m3 \u2014 jwt sessionid handling (p2)", + "id": "server_code_review_report_20260903_m3_jwt_sessionid_handling_p2" }, { - "label": "code:python (startDate, endDate = parseDateRange(dates))", + "label": "M4 \u2014 Cookie `Secure` flag silently off behind proxy (P2)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", - "source_location": "L160", - "community": 75, - "norm_label": "code:python (startdate, enddate = parsedaterange(dates))", - "id": "plans_2026_08_01_stocks_cache_zlib_compression_codeblock_5" + "source_file": "CODE_REVIEW_REPORT_20260903.md", + "source_location": "L146", + "community": 56, + "norm_label": "m4 \u2014 cookie `secure` flag silently off behind proxy (p2)", + "id": "server_code_review_report_20260903_m4_cookie_secure_flag_silently_off_behind_proxy_p2" }, { - "label": "code:bash (git add main/app/stocks_api/cache.py main/app/stocks_api/que)", + "label": "Positives (verified, keep)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", - "source_location": "L178", - "community": 75, - "norm_label": "code:bash (git add main/app/stocks_api/cache.py main/app/stocks_api/que)", - "id": "plans_2026_08_01_stocks_cache_zlib_compression_codeblock_6" + "source_file": "CODE_REVIEW_REPORT_20260903.md", + "source_location": "L152", + "community": 56, + "norm_label": "positives (verified, keep)", + "id": "server_code_review_report_20260903_positives_verified_keep" }, { - "label": "Task 2: zlib-compress JSON cells at load, decompress at read", + "label": "4. Inefficiencies", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", - "source_location": "L185", - "community": 75, - "norm_label": "task 2: zlib-compress json cells at load, decompress at read", - "id": "plans_2026_08_01_stocks_cache_zlib_compression_task_2_zlib_compress_json_cells_at_load_decompress_at_read" + "source_file": "CODE_REVIEW_REPORT_20260903.md", + "source_location": "L160", + "community": 56, + "norm_label": "4. inefficiencies", + "id": "server_code_review_report_20260903_4_inefficiencies" }, { - "label": "code:python (import threading)", + "label": "P1 \u2014 Per-request full-DataFrame pandas sorts (P1)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", - "source_location": "L198", - "community": 75, - "norm_label": "code:python (import threading)", - "id": "plans_2026_08_01_stocks_cache_zlib_compression_codeblock_7" + "source_file": "CODE_REVIEW_REPORT_20260903.md", + "source_location": "L162", + "community": 56, + "norm_label": "p1 \u2014 per-request full-dataframe pandas sorts (p1)", + "id": "server_code_review_report_20260903_p1_per_request_full_dataframe_pandas_sorts_p1" }, { - "label": "code:python (import zlib # add to existing imports)", + "label": "P2 \u2014 zstd compress/decompress per cell (P1)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", - "source_location": "L263", - "community": 75, - "norm_label": "code:python (import zlib # add to existing imports)", - "id": "plans_2026_08_01_stocks_cache_zlib_compression_codeblock_8" + "source_file": "CODE_REVIEW_REPORT_20260903.md", + "source_location": "L168", + "community": 56, + "norm_label": "p2 \u2014 zstd compress/decompress per cell (p1)", + "id": "server_code_review_report_20260903_p2_zstd_compress_decompress_per_cell_p1" }, { - "label": "code:python (sampleCols = [c for c in COMPRESS_COLS if c in df.columns])", + "label": "P3 \u2014 No request coalescing / thundering herd (P2)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", - "source_location": "L273", - "community": 75, - "norm_label": "code:python (samplecols = [c for c in compress_cols if c in df.columns])", - "id": "plans_2026_08_01_stocks_cache_zlib_compression_codeblock_9" + "source_file": "CODE_REVIEW_REPORT_20260903.md", + "source_location": "L174", + "community": 56, + "norm_label": "p3 \u2014 no request coalescing / thundering herd (p2)", + "id": "server_code_review_report_20260903_p3_no_request_coalescing_thundering_herd_p2" }, { - "label": "code:python (import zlib # add to existing imports)", + "label": "P4 \u2014 Prometheus N+1 + embed-on-loop (P1)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", - "source_location": "L282", - "community": 75, - "norm_label": "code:python (import zlib # add to existing imports)", - "id": "plans_2026_08_01_stocks_cache_zlib_compression_codeblock_10" + "source_file": "CODE_REVIEW_REPORT_20260903.md", + "source_location": "L180", + "community": 56, + "norm_label": "p4 \u2014 prometheus n+1 + embed-on-loop (p1)", + "id": "server_code_review_report_20260903_p4_prometheus_n_1_embed_on_loop_p1" }, { - "label": "code:python (def parseJSON(x):)", + "label": "P5 \u2014 Four independent schedulers (P2)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", - "source_location": "L286", - "community": 75, - "norm_label": "code:python (def parsejson(x):)", - "id": "plans_2026_08_01_stocks_cache_zlib_compression_codeblock_11" + "source_file": "CODE_REVIEW_REPORT_20260903.md", + "source_location": "L186", + "community": 56, + "norm_label": "p5 \u2014 four independent schedulers (p2)", + "id": "server_code_review_report_20260903_p5_four_independent_schedulers_p2" }, { - "label": "code:python (lambda x: ()", + "label": "P6 \u2014 `mem://` only + sync/async bridge cost (P2)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", - "source_location": "L296", - "community": 75, - "norm_label": "code:python (lambda x: ()", - "id": "plans_2026_08_01_stocks_cache_zlib_compression_codeblock_12" + "source_file": "CODE_REVIEW_REPORT_20260903.md", + "source_location": "L192", + "community": 56, + "norm_label": "p6 \u2014 `mem://` only + sync/async bridge cost (p2)", + "id": "server_code_review_report_20260903_p6_mem_only_sync_async_bridge_cost_p2" }, { - "label": "code:python (lambda x: ()", + "label": "P7 \u2014 Scraper throughput (P2)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", - "source_location": "L304", - "community": 75, - "norm_label": "code:python (lambda x: ()", - "id": "plans_2026_08_01_stocks_cache_zlib_compression_codeblock_13" + "source_file": "CODE_REVIEW_REPORT_20260903.md", + "source_location": "L198", + "community": 56, + "norm_label": "p7 \u2014 scraper throughput (p2)", + "id": "server_code_review_report_20260903_p7_scraper_throughput_p2" }, { - "label": "code:bash (git add main/app/stocks_api/cache.py main/app/stocks_api/que)", + "label": "5. Useless modules", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", - "source_location": "L324", - "community": 75, - "norm_label": "code:bash (git add main/app/stocks_api/cache.py main/app/stocks_api/que)", - "id": "plans_2026_08_01_stocks_cache_zlib_compression_codeblock_14" + "source_file": "CODE_REVIEW_REPORT_20260903.md", + "source_location": "L206", + "community": 56, + "norm_label": "5. useless modules", + "id": "server_code_review_report_20260903_5_useless_modules" }, { - "label": "Task 3: Keep compressed column subfields in getNest()", + "label": "Safe-to-delete (P2, no importer found)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", - "source_location": "L331", - "community": 75, - "norm_label": "task 3: keep compressed column subfields in getnest()", - "id": "plans_2026_08_01_stocks_cache_zlib_compression_task_3_keep_compressed_column_subfields_in_getnest" + "source_file": "CODE_REVIEW_REPORT_20260903.md", + "source_location": "L210", + "community": 56, + "norm_label": "safe-to-delete (p2, no importer found)", + "id": "server_code_review_report_20260903_safe_to_delete_p2_no_importer_found" }, { - "label": "code:python (import threading)", + "label": "Needs-confirmation (P3, do not delete blindly)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", - "source_location": "L343", - "community": 75, - "norm_label": "code:python (import threading)", - "id": "plans_2026_08_01_stocks_cache_zlib_compression_codeblock_15" + "source_file": "CODE_REVIEW_REPORT_20260903.md", + "source_location": "L221", + "community": 56, + "norm_label": "needs-confirmation (p3, do not delete blindly)", + "id": "server_code_review_report_20260903_needs_confirmation_p3_do_not_delete_blindly" }, { - "label": "code:python (def getNest() -> dict:)", + "label": "Do NOT delete (explicit)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", - "source_location": "L376", - "community": 75, - "norm_label": "code:python (def getnest() -> dict:)", - "id": "plans_2026_08_01_stocks_cache_zlib_compression_codeblock_16" + "source_file": "CODE_REVIEW_REPORT_20260903.md", + "source_location": "L231", + "community": 56, + "norm_label": "do not delete (explicit)", + "id": "server_code_review_report_20260903_do_not_delete_explicit" }, { - "label": "code:bash (git add main/app/stocks_api/compress.py tests/test_stocks_ca)", + "label": "6. Delegation buckets (security, DB, perf, hygiene) with effort estimates", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", - "source_location": "L402", - "community": 75, - "norm_label": "code:bash (git add main/app/stocks_api/compress.py tests/test_stocks_ca)", - "id": "plans_2026_08_01_stocks_cache_zlib_compression_codeblock_17" + "source_file": "CODE_REVIEW_REPORT_20260903.md", + "source_location": "L239", + "community": 56, + "norm_label": "6. delegation buckets (security, db, perf, hygiene) with effort estimates", + "id": "server_code_review_report_20260903_6_delegation_buckets_security_db_perf_hygiene_with_effort_estimates" }, { - "label": "Task 4: Full verification", + "label": "Appendix \u2014 Verification index (all lines re-read for this report)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", - "source_location": "L409", - "community": 75, - "norm_label": "task 4: full verification", - "id": "plans_2026_08_01_stocks_cache_zlib_compression_task_4_full_verification" + "source_file": "CODE_REVIEW_REPORT_20260903.md", + "source_location": "L252", + "community": 56, + "norm_label": "appendix \u2014 verification index (all lines re-read for this report)", + "id": "server_code_review_report_20260903_appendix_verification_index_all_lines_re_read_for_this_report" }, { - "label": "code:bash (git status)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", - "source_location": "L434", - "community": 75, - "norm_label": "code:bash (git status)", - "id": "plans_2026_08_01_stocks_cache_zlib_compression_codeblock_18" + "label": "Load historical/fundamental field names, caching the result in ``fieldData``.", + "file_type": "rationale", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L95", + "community": 80, + "norm_label": "load historical/fundamental field names, caching the result in ``fielddata``.", + "id": "prometheus_compact_rationale_95" }, { - "label": "Self-Review", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", - "source_location": "L441", - "community": 75, - "norm_label": "self-review", - "id": "plans_2026_08_01_stocks_cache_zlib_compression_self_review" + "label": "P4: per-request token-count cache. Returns exactly what countTokens(tex", + "file_type": "rationale", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L343", + "community": 537, + "norm_label": "p4: per-request token-count cache. returns exactly what counttokens(tex", + "id": "prometheus_memory_rationale_343" }, { - "label": "Execution Handoff", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", - "source_location": "L461", - "community": 75, - "norm_label": "execution handoff", - "id": "plans_2026_08_01_stocks_cache_zlib_compression_execution_handoff" + "label": "P1: establish the sorted-cache invariant once at load/refresh. Sorts by (", + "file_type": "rationale", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L171", + "community": 82, + "norm_label": "p1: establish the sorted-cache invariant once at load/refresh. sorts by (", + "id": "stocks_api_cache_rationale_171" }, { - "label": "buildCotationDateIndex()", - "file_type": "code", + "label": "P1: first-occurrence index over a sortCacheFrame-sorted frame. The cache", + "file_type": "rationale", "source_file": "main/app/stocks_api/cache.py", - "source_location": "L34", + "source_location": "L191", "community": 82, - "norm_label": "buildcotationdateindex()", - "id": "stocks_api_cache_buildcotationdateindex" + "norm_label": "p1: first-occurrence index over a sortcacheframe-sorted frame. the cache", + "id": "stocks_api_cache_rationale_191" }, { - "label": "prometheus-memory-extraction-plan.md", - "file_type": "document", - "source_file": "docs/prometheus-memory-extraction-plan.md", - "source_location": "L1", - "community": 476, - "norm_label": "prometheus-memory-extraction-plan.md", - "id": "docs_prometheus_memory_extraction_plan_md" + "label": "registerMemoryMaintenanceJob()", + "file_type": "code", + "source_file": "main/service/prometheus_service.py", + "source_location": "L60", + "community": 72, + "norm_label": "registermemorymaintenancejob()", + "id": "service_prometheus_service_registermemorymaintenancejob" }, { - "label": "Prometheus Self-Extracting Memories \u2014 Design", - "file_type": "document", - "source_file": "docs/prometheus-memory-extraction-plan.md", - "source_location": "L1", - "community": 476, - "norm_label": "prometheus self-extracting memories \u2014 design", - "id": "docs_prometheus_memory_extraction_plan_prometheus_self_extracting_memories_design" + "label": "P5: register memory maintenance on the shared scheduler. Kept in this ser", + "file_type": "rationale", + "source_file": "main/service/prometheus_service.py", + "source_location": "L61", + "community": 72, + "norm_label": "p5: register memory maintenance on the shared scheduler. kept in this ser", + "id": "service_prometheus_service_rationale_61" }, { - "label": "1. Objective", - "file_type": "document", - "source_file": "docs/prometheus-memory-extraction-plan.md", - "source_location": "L14", - "community": 476, - "norm_label": "1. objective", - "id": "docs_prometheus_memory_extraction_plan_1_objective" + "label": "P5: single shared BackgroundScheduler for all services. Replaces the 4 per-serv", + "file_type": "rationale", + "source_file": "main/utils/scheduler.py", + "source_location": "L1", + "community": 72, + "norm_label": "p5: single shared backgroundscheduler for all services. replaces the 4 per-serv", + "id": "utils_scheduler_rationale_1" }, { - "label": "2. Survey (what exists)", - "file_type": "document", - "source_file": "docs/prometheus-memory-extraction-plan.md", - "source_location": "L20", - "community": 476, - "norm_label": "2. survey (what exists)", - "id": "docs_prometheus_memory_extraction_plan_2_survey_what_exists" + "label": "Return the process-wide scheduler, starting it on first use.", + "file_type": "rationale", + "source_file": "main/utils/scheduler.py", + "source_location": "L33", + "community": 72, + "norm_label": "return the process-wide scheduler, starting it on first use.", + "id": "utils_scheduler_rationale_33" }, { - "label": "3. Design \u2014 threshold-triggered extraction (Part A)", - "file_type": "document", - "source_file": "docs/prometheus-memory-extraction-plan.md", - "source_location": "L33", - "community": 476, - "norm_label": "3. design \u2014 threshold-triggered extraction (part a)", - "id": "docs_prometheus_memory_extraction_plan_3_design_threshold_triggered_extraction_part_a" + "label": "Register func on the shared scheduler (replaces any same-id job). trigger i", + "file_type": "rationale", + "source_file": "main/utils/scheduler.py", + "source_location": "L43", + "community": 72, + "norm_label": "register func on the shared scheduler (replaces any same-id job). trigger i", + "id": "utils_scheduler_rationale_43" }, { - "label": "4. Numerics", - "file_type": "document", - "source_file": "docs/prometheus-memory-extraction-plan.md", - "source_location": "L53", - "community": 476, - "norm_label": "4. numerics", - "id": "docs_prometheus_memory_extraction_plan_4_numerics" + "label": "Discover available field names before querying /historical or /fundamental.", + "file_type": "rationale", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L36", + "community": 54, + "norm_label": "discover available field names before querying /historical or /fundamental.", + "id": "controller_stocksapi_controller_rationale_36" }, { - "label": "5. Improving memory tool usage (Part B)", - "file_type": "document", - "source_file": "docs/prometheus-memory-extraction-plan.md", - "source_location": "L60", - "community": 476, - "norm_label": "5. improving memory tool usage (part b)", - "id": "docs_prometheus_memory_extraction_plan_5_improving_memory_tool_usage_part_b" + "label": "Get year-based historical financial data for Brazilian B3 stocks. Returns", + "file_type": "rationale", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L92", + "community": 197, + "norm_label": "get year-based historical financial data for brazilian b3 stocks. returns", + "id": "controller_stocksapi_controller_rationale_92" }, { - "label": "6. Implementation", - "file_type": "document", - "source_file": "docs/prometheus-memory-extraction-plan.md", - "source_location": "L70", - "community": 476, - "norm_label": "6. implementation", - "id": "docs_prometheus_memory_extraction_plan_6_implementation" + "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": "L157", + "community": 157, + "norm_label": "get point-in-time fundamental/valuation data for brazilian b3 stocks. ret", + "id": "controller_stocksapi_controller_rationale_157" }, { - "label": "7. Risks & mitigations", - "file_type": "document", - "source_file": "docs/prometheus-memory-extraction-plan.md", - "source_location": "L77", - "community": 476, - "norm_label": "7. risks & mitigations", - "id": "docs_prometheus_memory_extraction_plan_7_risks_mitigations" + "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": "L225", + "community": 169, + "norm_label": "get 10-year daily price history (cotation) for brazilian b3 stocks. retur", + "id": "controller_stocksapi_controller_rationale_225" }, { - "label": "2026-07-31-prometheus-self-extracting-memories.md", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", - "source_location": "L1", - "community": 50, - "norm_label": "2026-07-31-prometheus-self-extracting-memories.md", - "id": "docs_superpowers_plans_2026_07_31_prometheus_self_extracting_memories_md" + "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": "L279", + "community": 81, + "norm_label": "get real-time price quotation for a single brazilian b3 stock. returns th", + "id": "controller_stocksapi_controller_rationale_279" }, { - "label": "Prometheus Self-Extracting Memories Implementation Plan", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", - "source_location": "L1", - "community": 50, - "norm_label": "prometheus self-extracting memories implementation plan", - "id": "plans_2026_07_31_prometheus_self_extracting_memories_prometheus_self_extracting_memories_implementation_plan" + "label": "Discover available field names before querying /historical or /fundamental.", + "file_type": "rationale", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L40", + "community": 54, + "norm_label": "discover available field names before querying /historical or /fundamental.", + "id": "controller_stocksapi_controller_rationale_40" }, { - "label": "Global Constraints", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", - "source_location": "L11", - "community": 50, - "norm_label": "global constraints", - "id": "plans_2026_07_31_prometheus_self_extracting_memories_global_constraints" + "label": "Get year-based historical financial data for Brazilian B3 stocks. Returns", + "file_type": "rationale", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L96", + "community": 197, + "norm_label": "get year-based historical financial data for brazilian b3 stocks. returns", + "id": "controller_stocksapi_controller_rationale_96" }, { - "label": "File Structure", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", - "source_location": "L26", - "community": 50, - "norm_label": "file structure", - "id": "plans_2026_07_31_prometheus_self_extracting_memories_file_structure" + "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": "L161", + "community": 157, + "norm_label": "get point-in-time fundamental/valuation data for brazilian b3 stocks. ret", + "id": "controller_stocksapi_controller_rationale_161" }, { - "label": "Task 1: Rename memory model field `baseScore` \u2192 `score`", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", - "source_location": "L44", - "community": 50, - "norm_label": "task 1: rename memory model field `basescore` \u2192 `score`", - "id": "plans_2026_07_31_prometheus_self_extracting_memories_task_1_rename_memory_model_field_basescore_score" + "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": "L229", + "community": 169, + "norm_label": "get 10-year daily price history (cotation) for brazilian b3 stocks. retur", + "id": "controller_stocksapi_controller_rationale_229" }, { - "label": "code:python (baseScore = Column(Float, default=1.0))", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", - "source_location": "L60", - "community": 50, - "norm_label": "code:python (basescore = column(float, default=1.0))", - "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_1" + "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": "L283", + "community": 81, + "norm_label": "get real-time price quotation for a single brazilian b3 stock. returns th", + "id": "controller_stocksapi_controller_rationale_283" }, { - "label": "code:python (score = Column(Float, default=1.0))", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", - "source_location": "L64", - "community": 50, - "norm_label": "code:python (score = column(float, default=1.0))", - "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_2" + "label": "registry", + "file_type": "code", + "source_file": "frontend/src/components/MdocMessage.jsx", + "source_location": "L4", + "community": 211, + "norm_label": "registry", + "id": "components_mdocmessage_registry" }, { - "label": "code:python (__table_args__ = ()", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", - "source_location": "L68", - "community": 50, - "norm_label": "code:python (__table_args__ = ()", - "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_3" + "label": "preprocessGeminiTags()", + "file_type": "code", + "source_file": "frontend/src/components/MdocMessage.jsx", + "source_location": "L14", + "community": 211, + "norm_label": "preprocessgeminitags()", + "id": "components_mdocmessage_preprocessgeminitags" }, { - "label": "code:python (\"\"\"rename memory baseScore to score)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", - "source_location": "L110", - "community": 50, - "norm_label": "code:python (\"\"\"rename memory basescore to score)", - "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_4" + "label": "WorkspaceLink()", + "file_type": "code", + "source_file": "frontend/src/components/MdocMessage.jsx", + "source_location": "L61", + "community": 211, + "norm_label": "workspacelink()", + "id": "components_mdocmessage_workspacelink" }, { - "label": "code:bash (git add main/models/memory.py main/app/prometheus/memory.py )", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", - "source_location": "L138", - "community": 50, - "norm_label": "code:bash (git add main/models/memory.py main/app/prometheus/memory.py )", - "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_5" + "label": "_safe_filter()", + "file_type": "code", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L26", + "community": 116, + "norm_label": "_safe_filter()", + "id": "prometheus_agent_safe_filter" }, { - "label": "Task 2: Add `extract()` to `main/app/prometheus/memory.py`", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", - "source_location": "L145", - "community": 50, - "norm_label": "task 2: add `extract()` to `main/app/prometheus/memory.py`", - "id": "plans_2026_07_31_prometheus_self_extracting_memories_task_2_add_extract_to_main_app_prometheus_memory_py" + "label": "FieldRegistry", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L89", + "community": 80, + "norm_label": "fieldregistry", + "id": "prometheus_compact_fieldregistry" }, { - "label": "code:python (import json)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", - "source_location": "L159", - "community": 50, - "norm_label": "code:python (import json)", - "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_6" + "label": ".buildUrl()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L94", + "community": 80, + "norm_label": ".buildurl()", + "id": "prometheus_compact_fieldregistry_buildurl" }, { - "label": "code:python (MEMORY_EXTRACTION_TOKEN_BUDGET = 32000)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", - "source_location": "L272", - "community": 50, - "norm_label": "code:python (memory_extraction_token_budget = 32000)", - "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_7" + "label": ".fetchFields()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L99", + "community": 80, + "norm_label": ".fetchfields()", + "id": "prometheus_compact_fieldregistry_fetchfields" }, { - "label": "code:python (import json)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", - "source_location": "L290", - "community": 50, - "norm_label": "code:python (import json)", - "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_8" + "label": ".getFields()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L120", + "community": 80, + "norm_label": ".getfields()", + "id": "prometheus_compact_fieldregistry_getfields" }, { - "label": "code:python (EXTRACT_PROMPT = ()", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", - "source_location": "L301", - "community": 50, - "norm_label": "code:python (extract_prompt = ()", - "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_9" + "label": ".buildMetricRegex()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L127", + "community": 80, + "norm_label": ".buildmetricregex()", + "id": "prometheus_compact_fieldregistry_buildmetricregex" }, { - "label": "code:bash (git add main/app/prometheus/memory.py tests/test_memory_extr)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", - "source_location": "L388", - "community": 50, - "norm_label": "code:bash (git add main/app/prometheus/memory.py tests/test_memory_extr)", - "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_10" + "label": ".getMetricRegex()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L134", + "community": 80, + "norm_label": ".getmetricregex()", + "id": "prometheus_compact_fieldregistry_getmetricregex" }, { - "label": "Task 3: Wire `extract()` into the pre-turn hook", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", - "source_location": "L395", - "community": 50, - "norm_label": "task 3: wire `extract()` into the pre-turn hook", - "id": "plans_2026_07_31_prometheus_self_extracting_memories_task_3_wire_extract_into_the_pre_turn_hook" + "label": ".__init__()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L222", + "community": 80, + "norm_label": ".__init__()", + "id": "prometheus_compact_prometheuscompactor_init" }, { - "label": "code:python (from unittest.mock import patch)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", - "source_location": "L409", - "community": 50, - "norm_label": "code:python (from unittest.mock import patch)", - "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_11" + "label": "_getDb()", + "file_type": "code", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L18", + "community": 152, + "norm_label": "_getdb()", + "id": "prometheus_tools_getdb" }, { - "label": "code:python (if session and session.history:)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", - "source_location": "L437", - "community": 50, - "norm_label": "code:python (if session and session.history:)", - "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_12" + "label": "Search user's saved memories, preferences, and past analysis context. Use", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L27", + "community": 152, + "norm_label": "search user's saved memories, preferences, and past analysis context. use", + "id": "prometheus_tools_rationale_27" }, { - "label": "code:python (if session and session.history:)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", - "source_location": "L444", - "community": 50, - "norm_label": "code:python (if session and session.history:)", - "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_13" + "label": "Store a memory about the user's preferences, analysis results, or feedback.", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L54", + "community": 126, + "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", + "id": "prometheus_tools_rationale_54" }, { - "label": "code:bash (git add main/app/prometheus/agent.py tests/test_streammessag)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", - "source_location": "L469", - "community": 50, - "norm_label": "code:bash (git add main/app/prometheus/agent.py tests/test_streammessag)", - "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_14" + "label": "Execute Python code in an isolated sandbox. Use for quantitative analysis,", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L92", + "community": 487, + "norm_label": "execute python code in an isolated sandbox. use for quantitative analysis,", + "id": "prometheus_tools_rationale_92" }, { - "label": "Task 4: Harden the SYSTEM_PROMPT memory guidance", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", - "source_location": "L476", - "community": 50, - "norm_label": "task 4: harden the system_prompt memory guidance", - "id": "plans_2026_07_31_prometheus_self_extracting_memories_task_4_harden_the_system_prompt_memory_guidance" + "label": "Read a file from the workspace. Args: path: Path to the file (e.", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L113", + "community": 208, + "norm_label": "read a file from the workspace. args: path: path to the file (e.", + "id": "prometheus_tools_rationale_113" }, { - "label": "code:python (from main.app.prometheus.agent import SYSTEM_PROMPT)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", - "source_location": "L489", - "community": 50, - "norm_label": "code:python (from main.app.prometheus.agent import system_prompt)", - "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_15" + "label": "Write a file to the workspace. Use this to save data files (CSV, JSON, scri", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L127", + "community": 529, + "norm_label": "write a file to the workspace. use this to save data files (csv, json, scri", + "id": "prometheus_tools_rationale_127" }, { - "label": "code:python (### Memory System)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", - "source_location": "L513", - "community": 50, - "norm_label": "code:python (### memory system)", - "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_16" + "label": "List files in the workspace directory. Args: path: Directory pat", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L143", + "community": 529, + "norm_label": "list files in the workspace directory. args: path: directory pat", + "id": "prometheus_tools_rationale_143" }, { - "label": "code:python (### Memory System)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", - "source_location": "L525", - "community": 50, - "norm_label": "code:python (### memory system)", - "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_17" + "label": "Get a download link for a workspace file to share with the user. Use this", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L156", + "community": 525, + "norm_label": "get a download link for a workspace file to share with the user. use this", + "id": "prometheus_tools_rationale_156" }, { - "label": "code:bash (git add main/app/prometheus/agent.py tests/test_memory_promp)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", - "source_location": "L548", - "community": 50, - "norm_label": "code:bash (git add main/app/prometheus/agent.py tests/test_memory_promp)", - "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_18" + "label": "._executeQuery()", + "file_type": "code", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L110", + "community": 63, + "norm_label": "._executequery()", + "id": "stocks_api_query_stocksquerymanager_executequery" }, { - "label": "Task 5: Full verification", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", - "source_location": "L555", - "community": 50, - "norm_label": "task 5: full verification", - "id": "plans_2026_07_31_prometheus_self_extracting_memories_task_5_full_verification" + "label": "Shared query pipeline for historical and fundamental endpoints.", + "file_type": "rationale", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L123", + "community": 63, + "norm_label": "shared query pipeline for historical and fundamental endpoints.", + "id": "stocks_api_query_rationale_123" }, { - "label": "Self-Review", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", - "source_location": "L572", - "community": 50, - "norm_label": "self-review", - "id": "plans_2026_07_31_prometheus_self_extracting_memories_self_review" + "label": "Discover available field names before querying /historical or /fundamental.", + "file_type": "rationale", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L48", + "community": 54, + "norm_label": "discover available field names before querying /historical or /fundamental.", + "id": "controller_stocksapi_controller_rationale_48" }, { - "label": ".__getitem__()", - "file_type": "code", - "source_file": "config.py", - "source_location": "L26", - "community": 102, - "norm_label": ".__getitem__()", - "id": "server_config_basemansasettings_getitem" + "label": "Get year-based historical financial data for Brazilian B3 stocks. Returns", + "file_type": "rationale", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L104", + "community": 197, + "norm_label": "get year-based historical financial data for brazilian b3 stocks. returns", + "id": "controller_stocksapi_controller_rationale_104" }, { - "label": "test-streaming.js", - "file_type": "code", - "source_file": "frontend/test-streaming.js", - "source_location": "L1", - "community": 142, - "norm_label": "test-streaming.js", - "id": "frontend_test_streaming_js" + "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": "L169", + "community": 157, + "norm_label": "get point-in-time fundamental/valuation data for brazilian b3 stocks. ret", + "id": "controller_stocksapi_controller_rationale_169" }, { - "label": "simulateStream()", - "file_type": "code", - "source_file": "frontend/test-streaming.js", - "source_location": "L37", - "community": 142, - "norm_label": "simulatestream()", - "id": "frontend_test_streaming_simulatestream" + "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": "L237", + "community": 169, + "norm_label": "get 10-year daily price history (cotation) for brazilian b3 stocks. retur", + "id": "controller_stocksapi_controller_rationale_237" }, { - "label": "runParser()", - "file_type": "code", - "source_file": "frontend/test-streaming.js", - "source_location": "L45", - "community": 142, - "norm_label": "runparser()", - "id": "frontend_test_streaming_runparser" + "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": "L291", + "community": 81, + "norm_label": "get real-time price quotation for a single brazilian b3 stock. returns th", + "id": "controller_stocksapi_controller_rationale_291" }, { - "label": "chunkSizes", + "label": "ServiceManager", "file_type": "code", - "source_file": "frontend/test-streaming.js", - "source_location": "L117", - "community": 142, - "norm_label": "chunksizes", - "id": "frontend_test_streaming_chunksizes" + "source_file": "main/utils/service_manager.py", + "source_location": "L15", + "community": 536, + "norm_label": "servicemanager", + "id": "utils_service_manager_servicemanager" }, { - "label": "{ session, accumulated, lineCount, chunkIdx }", + "label": "onExtractionDone()", "file_type": "code", - "source_file": "frontend/test-streaming.js", - "source_location": "L121", - "community": 142, - "norm_label": "{ session, accumulated, linecount, chunkidx }", - "id": "frontend_test_streaming_session_accumulated_linecount_chunkidx" + "source_file": "main/app/prometheus/agent.py", + "source_location": "L26", + "community": 116, + "norm_label": "onextractiondone()", + "id": "prometheus_agent_onextractiondone" }, { - "label": "evilChunks", + "label": "spawnExtraction()", "file_type": "code", - "source_file": "frontend/test-streaming.js", - "source_location": "L143", - "community": 142, - "norm_label": "evilchunks", - "id": "frontend_test_streaming_evilchunks" + "source_file": "main/app/prometheus/agent.py", + "source_location": "L34", + "community": 116, + "norm_label": "spawnextraction()", + "id": "prometheus_agent_spawnextraction" }, { - "label": "lines", + "label": "_forward()", "file_type": "code", - "source_file": "frontend/test-streaming.js", - "source_location": "L152", - "community": 142, - "norm_label": "lines", - "id": "frontend_test_streaming_lines" + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L205", + "community": 84, + "norm_label": "_forward()", + "id": "controller_prometheus_controller_forward" }, { - "label": "trimmed", - "file_type": "code", - "source_file": "frontend/test-streaming.js", - "source_location": "L155", - "community": 142, - "norm_label": "trimmed", - "id": "frontend_test_streaming_trimmed" + "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": "data", - "file_type": "code", - "source_file": "frontend/test-streaming.js", - "source_location": "L157", - "community": 142, - "norm_label": "data", - "id": "frontend_test_streaming_data" + "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": "L234", + "community": 169, + "norm_label": "get 10-year daily price history (cotation) for brazilian b3 stocks. retur", + "id": "controller_stocksapi_controller_rationale_234" }, { - "label": "event", + "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": "L288", + "community": 81, + "norm_label": "get real-time price quotation for a single brazilian b3 stock. returns th", + "id": "controller_stocksapi_controller_rationale_288" + }, + { + "label": "uploadWorkspaceFile()", "file_type": "code", - "source_file": "frontend/test-streaming.js", - "source_location": "L160", - "community": 142, - "norm_label": "event", - "id": "frontend_test_streaming_event" + "source_file": "frontend/src/api.js", + "source_location": "L117", + "community": 5, + "norm_label": "uploadworkspacefile()", + "id": "src_api_uploadworkspacefile" }, { - "label": ".__new__()", + "label": "api.test.js", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L94", - "community": 80, - "norm_label": ".__new__()", - "id": "prometheus_compact_fieldregistry_new" + "source_file": "frontend/src/api.test.js", + "source_location": "L1", + "community": 216, + "norm_label": "api.test.js", + "id": "frontend_src_api_test_js" }, { - "label": ".__new__()", + "label": "sseResponse()", "file_type": "code", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L38", - "community": 194, - "norm_label": ".__new__()", - "id": "prometheus_mcp_mcpclientpool_new" + "source_file": "frontend/src/api.test.js", + "source_location": "L4", + "community": 216, + "norm_label": "sseresponse()", + "id": "src_api_test_sseresponse" }, { - "label": "addRole()", + "label": "fetchMock", "file_type": "code", - "source_file": "main/app/user/user.py", - "source_location": "L19", - "community": 519, - "norm_label": "addrole()", - "id": "user_user_addrole" + "source_file": "frontend/src/api.test.js", + "source_location": "L23", + "community": 216, + "norm_label": "fetchmock", + "id": "src_api_test_fetchmock" }, { - "label": "hasRole()", + "label": "onChunk", "file_type": "code", - "source_file": "main/app/user/user.py", + "source_file": "frontend/src/api.test.js", "source_location": "L28", - "community": 519, - "norm_label": "hasrole()", - "id": "user_user_hasrole" + "community": 216, + "norm_label": "onchunk", + "id": "src_api_test_onchunk" }, { - "label": "addRoleToUser()", + "label": "onDone", "file_type": "code", - "source_file": "main/app/user/user.py", - "source_location": "L44", - "community": 519, - "norm_label": "addroletouser()", - "id": "user_user_addroletouser" + "source_file": "frontend/src/api.test.js", + "source_location": "L29", + "community": 216, + "norm_label": "ondone", + "id": "src_api_test_ondone" }, { - "label": "upgradeToDeveloperStarter()", + "label": "onCursor", "file_type": "code", - "source_file": "main/controller/user_controller.py", - "source_location": "L26", - "community": 501, - "norm_label": "upgradetodeveloperstarter()", - "id": "controller_user_controller_upgradetodeveloperstarter" + "source_file": "frontend/src/api.test.js", + "source_location": "L30", + "community": 216, + "norm_label": "oncursor", + "id": "src_api_test_oncursor" }, { - "label": "upgradeToDeveloperEnterprise()", + "label": "onSession", "file_type": "code", - "source_file": "main/controller/user_controller.py", - "source_location": "L38", - "community": 501, - "norm_label": "upgradetodeveloperenterprise()", - "id": "controller_user_controller_upgradetodeveloperenterprise" + "source_file": "frontend/src/api.test.js", + "source_location": "L31", + "community": 216, + "norm_label": "onsession", + "id": "src_api_test_onsession" }, { - "label": "compressor.py", + "label": "file", "file_type": "code", - "source_file": "main/app/stocks_api/compressor.py", - "source_location": "L1", - "community": 256, - "norm_label": "compressor.py", - "id": "main_app_stocks_api_compressor_py" + "source_file": "frontend/src/api.test.js", + "source_location": "L113", + "community": 216, + "norm_label": "file", + "id": "src_api_test_file" }, { - "label": "getAbbr()", + "label": "uploadWorkspaceFile()", "file_type": "code", - "source_file": "main/app/stocks_api/compressor.py", - "source_location": "L25", - "community": 256, - "norm_label": "getabbr()", - "id": "stocks_api_compressor_getabbr" + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L147", + "community": 84, + "norm_label": "uploadworkspacefile()", + "id": "controller_prometheus_controller_uploadworkspacefile" }, { - "label": "getNest()", - "file_type": "code", - "source_file": "main/app/stocks_api/compressor.py", - "source_location": "L36", - "community": 256, - "norm_label": "getnest()", - "id": "stocks_api_compressor_getnest" + "label": "Write a file to the workspace. Use this to save data files (CSV, JSON, scri", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L122", + "community": 529, + "norm_label": "write a file to the workspace. use this to save data files (csv, json, scri", + "id": "prometheus_tools_rationale_122" }, { - "label": "rebuildAbbrevs()", - "file_type": "code", - "source_file": "main/app/stocks_api/compressor.py", - "source_location": "L46", - "community": 82, - "norm_label": "rebuildabbrevs()", - "id": "stocks_api_compressor_rebuildabbrevs" + "label": "List files in the workspace directory. Args: path: Directory pat", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L135", + "community": 208, + "norm_label": "list files in the workspace directory. args: path: directory pat", + "id": "prometheus_tools_rationale_135" }, { - "label": "walk()", + "label": "_get_client()", "file_type": "code", - "source_file": "main/app/stocks_api/compressor.py", - "source_location": "L51", - "community": 256, - "norm_label": "walk()", - "id": "stocks_api_compressor_walk" + "source_file": "main/app/prometheus/agent.py", + "source_location": "L58", + "community": 116, + "norm_label": "_get_client()", + "id": "prometheus_agent_get_client" }, { - "label": "compactValue()", - "file_type": "code", - "source_file": "main/app/stocks_api/compressor.py", + "label": "Lazy module-level singleton so the genai client is created once, not per request", + "file_type": "rationale", + "source_file": "main/app/prometheus/agent.py", "source_location": "L59", - "community": 256, - "norm_label": "compactvalue()", - "id": "stocks_api_compressor_compactvalue" + "community": 116, + "norm_label": "lazy module-level singleton so the genai client is created once, not per request", + "id": "prometheus_agent_rationale_59" }, { - "label": "toColumnar()", - "file_type": "code", - "source_file": "main/app/stocks_api/compressor.py", - "source_location": "L80", - "community": 256, - "norm_label": "tocolumnar()", - "id": "stocks_api_compressor_tocolumnar" + "label": "Map a MySQL DATA_TYPE to a pyarrow type for columns that are all-None in th", + "file_type": "rationale", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L59", + "community": 82, + "norm_label": "map a mysql data_type to a pyarrow type for columns that are all-none in th", + "id": "stocks_api_cache_rationale_59" }, { - "label": "fixHeaders()", + "label": "scaling_benchmark.py", "file_type": "code", - "source_file": "main/app/stocks_api/compressor.py", - "source_location": "L89", - "community": 256, - "norm_label": "fixheaders()", - "id": "stocks_api_compressor_fixheaders" + "source_file": "scaling_benchmark.py", + "source_location": "L1", + "community": 489, + "norm_label": "scaling_benchmark.py", + "id": "scaling_benchmark_py" }, { - "label": "compactRow()", + "label": "stats()", "file_type": "code", - "source_file": "main/app/stocks_api/compressor.py", - "source_location": "L98", - "community": 256, - "norm_label": "compactrow()", - "id": "stocks_api_compressor_compactrow" + "source_file": "scaling_benchmark.py", + "source_location": "L19", + "community": 489, + "norm_label": "stats()", + "id": "server_scaling_benchmark_stats" }, { - "label": "compactCotations()", + "label": "hammer_measured()", "file_type": "code", - "source_file": "main/app/stocks_api/compressor.py", - "source_location": "L126", - "community": 256, - "norm_label": "compactcotations()", - "id": "stocks_api_compressor_compactcotations" + "source_file": "scaling_benchmark.py", + "source_location": "L32", + "community": 489, + "norm_label": "hammer_measured()", + "id": "server_scaling_benchmark_hammer_measured" }, { - "label": "compressResponse()", + "label": "main()", "file_type": "code", - "source_file": "main/app/stocks_api/compressor.py", - "source_location": "L160", - "community": 256, - "norm_label": "compressresponse()", - "id": "stocks_api_compressor_compressresponse" + "source_file": "scaling_benchmark.py", + "source_location": "L50", + "community": 489, + "norm_label": "main()", + "id": "server_scaling_benchmark_main" }, { - "label": "2026-07-29-compact-algorithmic-compression.md", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", - "source_location": "L1", - "community": 7, - "norm_label": "2026-07-29-compact-algorithmic-compression.md", - "id": "docs_superpowers_plans_2026_07_29_compact_algorithmic_compression_md" + "label": "Fire n requests with c concurrent workers, measuring ttfb + total per request.", + "file_type": "rationale", + "source_file": "scaling_benchmark.py", + "source_location": "L33", + "community": 489, + "norm_label": "fire n requests with c concurrent workers, measuring ttfb + total per request.", + "id": "server_scaling_benchmark_rationale_33" }, { - "label": "Algorithmic Compression (`compact.py`) Implementation Plan", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", + "label": "_probe_host.py", + "file_type": "code", + "source_file": "_probe_host.py", "source_location": "L1", - "community": 7, - "norm_label": "algorithmic compression (`compact.py`) implementation plan", - "id": "plans_2026_07_29_compact_algorithmic_compression_algorithmic_compression_compact_py_implementation_plan" - }, - { - "label": "Global Constraints", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", - "source_location": "L11", - "community": 7, - "norm_label": "global constraints", - "id": "plans_2026_07_29_compact_algorithmic_compression_global_constraints" + "community": 514, + "norm_label": "_probe_host.py", + "id": "probe_host_py" }, { - "label": "File Structure", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", - "source_location": "L28", - "community": 7, - "norm_label": "file structure", - "id": "plans_2026_07_29_compact_algorithmic_compression_file_structure" + "label": "sec()", + "file_type": "code", + "source_file": "_probe_host.py", + "source_location": "L6", + "community": 514, + "norm_label": "sec()", + "id": "server_probe_host_sec" }, { - "label": "Task 1: Create `compact.py` \u2014 FieldRegistry + Extraction Engine", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", - "source_location": "L39", - "community": 7, - "norm_label": "task 1: create `compact.py` \u2014 fieldregistry + extraction engine", - "id": "plans_2026_07_29_compact_algorithmic_compression_task_1_create_compact_py_fieldregistry_extraction_engine" + "label": "_probe_stocks.py", + "file_type": "code", + "source_file": "_probe_stocks.py", + "source_location": "L1", + "community": 515, + "norm_label": "_probe_stocks.py", + "id": "probe_stocks_py" }, { - "label": "code:python (# main/app/prometheus/compact.py)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", - "source_location": "L51", - "community": 7, - "norm_label": "code:python (# main/app/prometheus/compact.py)", - "id": "plans_2026_07_29_compact_algorithmic_compression_codeblock_1" + "label": "sec()", + "file_type": "code", + "source_file": "_probe_stocks.py", + "source_location": "L6", + "community": 515, + "norm_label": "sec()", + "id": "server_probe_stocks_sec" }, { - "label": "code:bash (python -c \")", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", - "source_location": "L241", - "community": 7, - "norm_label": "code:bash (python -c \")", - "id": "plans_2026_07_29_compact_algorithmic_compression_codeblock_2" + "label": "_probe_stream.py", + "file_type": "code", + "source_file": "_probe_stream.py", + "source_location": "L1", + "community": 516, + "norm_label": "_probe_stream.py", + "id": "probe_stream_py" }, { - "label": "code:python (# tests/test_compact.py)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", - "source_location": "L278", - "community": 7, - "norm_label": "code:python (# tests/test_compact.py)", - "id": "plans_2026_07_29_compact_algorithmic_compression_codeblock_3" + "label": "sec()", + "file_type": "code", + "source_file": "_probe_stream.py", + "source_location": "L5", + "community": 516, + "norm_label": "sec()", + "id": "server_probe_stream_sec" }, { - "label": "code:bash (pytest tests/test_compact.py -v)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", - "source_location": "L419", - "community": 7, - "norm_label": "code:bash (pytest tests/test_compact.py -v)", - "id": "plans_2026_07_29_compact_algorithmic_compression_codeblock_4" + "label": "BaseMansaSettings", + "file_type": "code", + "source_file": "config.py", + "source_location": "L23", + "community": 102, + "norm_label": "basemansasettings", + "id": "server_config_basemansasettings" }, { - "label": "code:bash (git add main/app/prometheus/compact.py tests/test_compact.py)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", - "source_location": "L427", - "community": 7, - "norm_label": "code:bash (git add main/app/prometheus/compact.py tests/test_compact.py)", - "id": "plans_2026_07_29_compact_algorithmic_compression_codeblock_5" + "label": "device.py", + "file_type": "code", + "source_file": "main/app/authentication/device.py", + "source_location": "L1", + "community": 1, + "norm_label": "device.py", + "id": "main_app_authentication_device_py" }, { - "label": "Task 2: Create `compact.py` \u2014 `PrometheusCompactor` Class", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", - "source_location": "L434", - "community": 7, - "norm_label": "task 2: create `compact.py` \u2014 `prometheuscompactor` class", - "id": "plans_2026_07_29_compact_algorithmic_compression_task_2_create_compact_py_prometheuscompactor_class" + "label": "DeviceInfo", + "file_type": "code", + "source_file": "main/app/authentication/device.py", + "source_location": "L6", + "community": 1, + "norm_label": "deviceinfo", + "id": "authentication_device_deviceinfo" }, { - "label": "code:python (class PrometheusCompactor:)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", - "source_location": "L448", - "community": 7, - "norm_label": "code:python (class prometheuscompactor:)", - "id": "plans_2026_07_29_compact_algorithmic_compression_codeblock_6" + "label": "parseUserAgent()", + "file_type": "code", + "source_file": "main/app/authentication/device.py", + "source_location": "L12", + "community": 1, + "norm_label": "parseuseragent()", + "id": "authentication_device_parseuseragent" }, { - "label": "code:python (from unittest.mock import MagicMock, patch)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", - "source_location": "L575", - "community": 7, - "norm_label": "code:python (from unittest.mock import magicmock, patch)", - "id": "plans_2026_07_29_compact_algorithmic_compression_codeblock_7" + "label": "detectBrowser()", + "file_type": "code", + "source_file": "main/app/authentication/device.py", + "source_location": "L33", + "community": 1, + "norm_label": "detectbrowser()", + "id": "authentication_device_detectbrowser" }, { - "label": "code:bash (pytest tests/test_compact.py -v)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", - "source_location": "L641", - "community": 7, - "norm_label": "code:bash (pytest tests/test_compact.py -v)", - "id": "plans_2026_07_29_compact_algorithmic_compression_codeblock_8" + "label": "detectOS()", + "file_type": "code", + "source_file": "main/app/authentication/device.py", + "source_location": "L55", + "community": 1, + "norm_label": "detectos()", + "id": "authentication_device_detectos" }, { - "label": "code:bash (git add main/app/prometheus/compact.py tests/test_compact.py)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", - "source_location": "L649", - "community": 7, - "norm_label": "code:bash (git add main/app/prometheus/compact.py tests/test_compact.py)", - "id": "plans_2026_07_29_compact_algorithmic_compression_codeblock_9" + "label": "detectDeviceType()", + "file_type": "code", + "source_file": "main/app/authentication/device.py", + "source_location": "L79", + "community": 1, + "norm_label": "detectdevicetype()", + "id": "authentication_device_detectdevicetype" }, { - "label": "Task 3: Integrate `compact.py` into Agent", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", - "source_location": "L656", - "community": 7, - "norm_label": "task 3: integrate `compact.py` into agent", - "id": "plans_2026_07_29_compact_algorithmic_compression_task_3_integrate_compact_py_into_agent" + "label": "cleanupExpiredSessions()", + "file_type": "code", + "source_file": "main/app/authentication/session.py", + "source_location": "L124", + "community": 149, + "norm_label": "cleanupexpiredsessions()", + "id": "authentication_session_cleanupexpiredsessions" }, { - "label": "code:python (# Before:)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", - "source_location": "L668", - "community": 7, - "norm_label": "code:python (# before:)", - "id": "plans_2026_07_29_compact_algorithmic_compression_codeblock_10" + "label": ".invalidate()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L139", + "community": 80, + "norm_label": ".invalidate()", + "id": "prometheus_compact_fieldregistry_invalidate" }, { - "label": "code:python (# Before:)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", - "source_location": "L679", - "community": 7, - "norm_label": "code:python (# before:)", - "id": "plans_2026_07_29_compact_algorithmic_compression_codeblock_11" + "label": ".warmup()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L145", + "community": 80, + "norm_label": ".warmup()", + "id": "prometheus_compact_fieldregistry_warmup" }, { - "label": "code:python (# Before:)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", - "source_location": "L704", - "community": 7, - "norm_label": "code:python (# before:)", - "id": "plans_2026_07_29_compact_algorithmic_compression_codeblock_12" + "label": "charCount()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L153", + "community": 80, + "norm_label": "charcount()", + "id": "prometheus_compact_charcount" }, { - "label": "code:bash (pytest tests/ -k \"prometheus\" -v)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", - "source_location": "L714", - "community": 7, - "norm_label": "code:bash (pytest tests/ -k \"prometheus\" -v)", - "id": "plans_2026_07_29_compact_algorithmic_compression_codeblock_13" + "label": "events.py", + "file_type": "code", + "source_file": "main/app/prometheus/events.py", + "source_location": "L1", + "community": 12, + "norm_label": "events.py", + "id": "main_app_prometheus_events_py" }, { - "label": "code:bash (git add main/app/prometheus/agent.py)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", - "source_location": "L722", - "community": 7, - "norm_label": "code:bash (git add main/app/prometheus/agent.py)", - "id": "plans_2026_07_29_compact_algorithmic_compression_codeblock_14" + "label": "LoopLogger", + "file_type": "code", + "source_file": "main/app/prometheus/events.py", + "source_location": "L7", + "community": 12, + "norm_label": "looplogger", + "id": "prometheus_events_looplogger" }, { - "label": "Task 4: Rename Legacy Summarizer", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", - "source_location": "L729", - "community": 7, - "norm_label": "task 4: rename legacy summarizer", - "id": "plans_2026_07_29_compact_algorithmic_compression_task_4_rename_legacy_summarizer" + "label": ".__init__()", + "file_type": "code", + "source_file": "main/app/prometheus/events.py", + "source_location": "L8", + "community": 12, + "norm_label": ".__init__()", + "id": "prometheus_events_looplogger_init" }, { - "label": "code:bash (git mv main/app/prometheus/summarizer.py main/app/prometheus)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", - "source_location": "L736", - "community": 7, - "norm_label": "code:bash (git mv main/app/prometheus/summarizer.py main/app/prometheus)", - "id": "plans_2026_07_29_compact_algorithmic_compression_codeblock_15" + "label": ".emit()", + "file_type": "code", + "source_file": "main/app/prometheus/events.py", + "source_location": "L11", + "community": 12, + "norm_label": ".emit()", + "id": "prometheus_events_looplogger_emit" }, { - "label": "code:bash (grep -r \"from main.app.prometheus.summarizer\" main/ tests/)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", - "source_location": "L742", - "community": 7, - "norm_label": "code:bash (grep -r \"from main.app.prometheus.summarizer\" main/ tests/)", - "id": "plans_2026_07_29_compact_algorithmic_compression_codeblock_16" + "label": "generateSecureKey()", + "file_type": "code", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L57", + "community": 141, + "norm_label": "generatesecurekey()", + "id": "stocks_api_key_generatesecurekey" }, { - "label": "code:bash (pytest tests/ -v)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", - "source_location": "L750", - "community": 7, - "norm_label": "code:bash (pytest tests/ -v)", - "id": "plans_2026_07_29_compact_algorithmic_compression_codeblock_17" + "label": "createKey()", + "file_type": "code", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L61", + "community": 500, + "norm_label": "createkey()", + "id": "stocks_api_key_createkey" }, { - "label": "code:bash (git add main/app/prometheus/_summarizer_legacy.py)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", - "source_location": "L758", - "community": 7, - "norm_label": "code:bash (git add main/app/prometheus/_summarizer_legacy.py)", - "id": "plans_2026_07_29_compact_algorithmic_compression_codeblock_18" + "label": "toDict()", + "file_type": "code", + "source_file": "main/app/user/user.py", + "source_location": "L22", + "community": 519, + "norm_label": "todict()", + "id": "user_user_todict" }, { - "label": "Task 5: End-to-End Verification", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", - "source_location": "L765", - "community": 7, - "norm_label": "task 5: end-to-end verification", - "id": "plans_2026_07_29_compact_algorithmic_compression_task_5_end_to_end_verification" + "label": "Sends pre-serialized JSON bytes without re-encoding (cache-friendly).", + "file_type": "rationale", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L24", + "community": 169, + "norm_label": "sends pre-serialized json bytes without re-encoding (cache-friendly).", + "id": "controller_stocksapi_controller_rationale_24" }, { - "label": "code:bash (.\\ci.ps1)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", - "source_location": "L772", - "community": 7, - "norm_label": "code:bash (.\\ci.ps1)", - "id": "plans_2026_07_29_compact_algorithmic_compression_codeblock_19" + "label": "Discover available field names before querying /historical or /fundamental.", + "file_type": "rationale", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L49", + "community": 54, + "norm_label": "discover available field names before querying /historical or /fundamental.", + "id": "controller_stocksapi_controller_rationale_49" }, { - "label": "code:python (python -c \")", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", - "source_location": "L780", - "community": 7, - "norm_label": "code:python (python -c \")", - "id": "plans_2026_07_29_compact_algorithmic_compression_codeblock_20" + "label": "Get year-based historical financial data for Brazilian B3 stocks. Returns", + "file_type": "rationale", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L105", + "community": 197, + "norm_label": "get year-based historical financial data for brazilian b3 stocks. returns", + "id": "controller_stocksapi_controller_rationale_105" }, { - "label": "code:bash (git add -A)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", - "source_location": "L824", - "community": 7, - "norm_label": "code:bash (git add -a)", - "id": "plans_2026_07_29_compact_algorithmic_compression_codeblock_21" + "label": "createSession()", + "file_type": "code", + "source_file": "frontend/src/api.js", + "source_location": "L91", + "community": 5, + "norm_label": "createsession()", + "id": "src_api_createsession" }, { - "label": "2026-07-29-prometheus-performance.md", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", - "source_location": "L1", - "community": 118, - "norm_label": "2026-07-29-prometheus-performance.md", - "id": "docs_superpowers_plans_2026_07_29_prometheus_performance_md" + "label": "ToolChip()", + "file_type": "code", + "source_file": "frontend/src/components/AgentLoop.jsx", + "source_location": "L3", + "community": 150, + "norm_label": "toolchip()", + "id": "components_agentloop_toolchip" }, { - "label": "Prometheus Performance: Connection Pooling + Caching + Pre-fetch", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", + "label": "Non-blocking cross-process lock around the feather build. Returns the lock file", + "file_type": "rationale", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L91", + "community": 82, + "norm_label": "non-blocking cross-process lock around the feather build. returns the lock file", + "id": "stocks_api_cache_rationale_91" + }, + { + "label": "response_cache.py", + "file_type": "code", + "source_file": "main/app/stocks_api/response_cache.py", "source_location": "L1", - "community": 118, - "norm_label": "prometheus performance: connection pooling + caching + pre-fetch", - "id": "plans_2026_07_29_prometheus_performance_prometheus_performance_connection_pooling_caching_pre_fetch" + "community": 215, + "norm_label": "response_cache.py", + "id": "main_app_stocks_api_response_cache_py" }, { - "label": "Global Constraints", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", - "source_location": "L11", - "community": 118, - "norm_label": "global constraints", - "id": "plans_2026_07_29_prometheus_performance_global_constraints" + "label": "ResponseCache", + "file_type": "code", + "source_file": "main/app/stocks_api/response_cache.py", + "source_location": "L19", + "community": 215, + "norm_label": "responsecache", + "id": "stocks_api_response_cache_responsecache" }, { - "label": "Why Cache in stocks_api (Not Prometheus)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", - "source_location": "L22", - "community": 118, - "norm_label": "why cache in stocks_api (not prometheus)", - "id": "plans_2026_07_29_prometheus_performance_why_cache_in_stocks_api_not_prometheus" + "label": ".__init__()", + "file_type": "code", + "source_file": "main/app/stocks_api/response_cache.py", + "source_location": "L20", + "community": 215, + "norm_label": ".__init__()", + "id": "stocks_api_response_cache_responsecache_init" }, { - "label": "File Structure", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", - "source_location": "L30", - "community": 118, - "norm_label": "file structure", - "id": "plans_2026_07_29_prometheus_performance_file_structure" + "label": ".makeKey()", + "file_type": "code", + "source_file": "main/app/stocks_api/response_cache.py", + "source_location": "L29", + "community": 215, + "norm_label": ".makekey()", + "id": "stocks_api_response_cache_responsecache_makekey" }, { - "label": "Task 1: Create ResponseCache in stocks_api", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", - "source_location": "L42", - "community": 118, - "norm_label": "task 1: create responsecache in stocks_api", - "id": "plans_2026_07_29_prometheus_performance_task_1_create_responsecache_in_stocks_api" + "label": ".get()", + "file_type": "code", + "source_file": "main/app/stocks_api/response_cache.py", + "source_location": "L34", + "community": 215, + "norm_label": ".get()", + "id": "stocks_api_response_cache_responsecache_get" }, { - "label": "code:python (# tests/test_stocks_api_response_cache.py)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", - "source_location": "L54", - "community": 118, - "norm_label": "code:python (# tests/test_stocks_api_response_cache.py)", - "id": "plans_2026_07_29_prometheus_performance_codeblock_1" + "label": ".set()", + "file_type": "code", + "source_file": "main/app/stocks_api/response_cache.py", + "source_location": "L51", + "community": 215, + "norm_label": ".set()", + "id": "stocks_api_response_cache_responsecache_set" }, { - "label": "code:python (# main/app/stocks_api/response_cache.py)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", - "source_location": "L105", - "community": 118, - "norm_label": "code:python (# main/app/stocks_api/response_cache.py)", - "id": "plans_2026_07_29_prometheus_performance_codeblock_2" + "label": "createSession()", + "file_type": "code", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L52", + "community": 84, + "norm_label": "createsession()", + "id": "controller_prometheus_controller_createsession" }, { - "label": "code:bash (git add main/app/stocks_api/response_cache.py tests/test_sto)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", - "source_location": "L178", - "community": 118, - "norm_label": "code:bash (git add main/app/stocks_api/response_cache.py tests/test_sto)", - "id": "plans_2026_07_29_prometheus_performance_codeblock_3" + "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": "L165", + "community": 157, + "norm_label": "get point-in-time fundamental/valuation data for brazilian b3 stocks. ret", + "id": "controller_stocksapi_controller_rationale_165" }, { - "label": "Task 2: Integrate ResponseCache into stocksapi_controller", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", - "source_location": "L185", - "community": 118, - "norm_label": "task 2: integrate responsecache into stocksapi_controller", - "id": "plans_2026_07_29_prometheus_performance_task_2_integrate_responsecache_into_stocksapi_controller" + "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": "L238", + "community": 169, + "norm_label": "get 10-year daily price history (cotation) for brazilian b3 stocks. retur", + "id": "controller_stocksapi_controller_rationale_238" }, { - "label": "code:python (from main.app.stocks_api.response_cache import ResponseCache)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", - "source_location": "L203", - "community": 118, - "norm_label": "code:python (from main.app.stocks_api.response_cache import responsecache)", - "id": "plans_2026_07_29_prometheus_performance_codeblock_4" + "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": "L296", + "community": 81, + "norm_label": "get real-time price quotation for a single brazilian b3 stock. returns th", + "id": "controller_stocksapi_controller_rationale_296" }, { - "label": "code:python (# Before the query call, add cache check:)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", - "source_location": "L213", - "community": 118, - "norm_label": "code:python (# before the query call, add cache check:)", - "id": "plans_2026_07_29_prometheus_performance_codeblock_5" + "label": "generateKey()", + "file_type": "code", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L323", + "community": 500, + "norm_label": "generatekey()", + "id": "controller_stocksapi_controller_generatekey" }, { - "label": "code:bash (git add main/controller/stocksapi_controller.py)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", - "source_location": "L247", - "community": 118, - "norm_label": "code:bash (git add main/controller/stocksapi_controller.py)", - "id": "plans_2026_07_29_prometheus_performance_codeblock_6" + "label": "Discover available field names before querying /historical or /fundamental.", + "file_type": "rationale", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L30", + "community": 54, + "norm_label": "discover available field names before querying /historical or /fundamental.", + "id": "controller_stocksapi_controller_rationale_30" }, { - "label": "Task 3: Create MCPClientPool \u2014 `mcp.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": "L85", + "community": 197, + "norm_label": "get year-based historical financial data for brazilian b3 stocks. returns", + "id": "controller_stocksapi_controller_rationale_85" + }, + { + "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": "L155", + "community": 157, + "norm_label": "get point-in-time fundamental/valuation data for brazilian b3 stocks. ret", + "id": "controller_stocksapi_controller_rationale_155" + }, + { + "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": "L286", + "community": 81, + "norm_label": "get real-time price quotation for a single brazilian b3 stock. returns th", + "id": "controller_stocksapi_controller_rationale_286" + }, + { + "label": "2026-08-01-stocks-cache-zlib-compression.md", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", - "source_location": "L254", - "community": 118, - "norm_label": "task 3: create mcpclientpool \u2014 `mcp.py`", - "id": "plans_2026_07_29_prometheus_performance_task_3_create_mcpclientpool_mcp_py" + "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", + "source_location": "L1", + "community": 75, + "norm_label": "2026-08-01-stocks-cache-zlib-compression.md", + "id": "docs_superpowers_plans_2026_08_01_stocks_cache_zlib_compression_md" }, { - "label": "code:python (# tests/test_mcp_pool.py)", + "label": "Stocks Cache zlib Compression Implementation Plan", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", - "source_location": "L266", - "community": 118, - "norm_label": "code:python (# tests/test_mcp_pool.py)", - "id": "plans_2026_07_29_prometheus_performance_codeblock_7" + "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", + "source_location": "L1", + "community": 75, + "norm_label": "stocks cache zlib compression implementation plan", + "id": "plans_2026_08_01_stocks_cache_zlib_compression_stocks_cache_zlib_compression_implementation_plan" }, { - "label": "code:python (# main/app/prometheus/mcp.py)", + "label": "Global Constraints", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", - "source_location": "L292", - "community": 118, - "norm_label": "code:python (# main/app/prometheus/mcp.py)", - "id": "plans_2026_07_29_prometheus_performance_codeblock_8" + "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", + "source_location": "L11", + "community": 75, + "norm_label": "global constraints", + "id": "plans_2026_08_01_stocks_cache_zlib_compression_global_constraints" }, { - "label": "code:bash (git add main/app/prometheus/mcp.py tests/test_mcp_pool.py)", + "label": "File Structure", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", - "source_location": "L388", - "community": 118, - "norm_label": "code:bash (git add main/app/prometheus/mcp.py tests/test_mcp_pool.py)", - "id": "plans_2026_07_29_prometheus_performance_codeblock_9" + "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", + "source_location": "L24", + "community": 75, + "norm_label": "file structure", + "id": "plans_2026_08_01_stocks_cache_zlib_compression_file_structure" }, { - "label": "Task 4: Integrate Pool + Pre-fetch into agent.py", + "label": "Task 1: Remove the cotation date index", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", - "source_location": "L395", - "community": 118, - "norm_label": "task 4: integrate pool + pre-fetch into agent.py", - "id": "plans_2026_07_29_prometheus_performance_task_4_integrate_pool_pre_fetch_into_agent_py" + "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", + "source_location": "L34", + "community": 75, + "norm_label": "task 1: remove the cotation date index", + "id": "plans_2026_08_01_stocks_cache_zlib_compression_task_1_remove_the_cotation_date_index" }, { - "label": "code:python (def warmup(self):)", + "label": "code:python (import threading)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", - "source_location": "L410", - "community": 118, - "norm_label": "code:python (def warmup(self):)", - "id": "plans_2026_07_29_prometheus_performance_codeblock_10" + "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", + "source_location": "L47", + "community": 75, + "norm_label": "code:python (import threading)", + "id": "plans_2026_08_01_stocks_cache_zlib_compression_codeblock_1" }, { - "label": "code:python (from main.app.prometheus.mcp import MCPClientPool)", + "label": "code:python (# delete the whole buildCotationDateIndex function (lines 34)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", - "source_location": "L420", - "community": 118, - "norm_label": "code:python (from main.app.prometheus.mcp import mcpclientpool)", - "id": "plans_2026_07_29_prometheus_performance_codeblock_11" + "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", + "source_location": "L117", + "community": 75, + "norm_label": "code:python (# delete the whole buildcotationdateindex function (lines 34)", + "id": "plans_2026_08_01_stocks_cache_zlib_compression_codeblock_2" }, { - "label": "code:python (mcpClients, sessions = await MCPClientPool().getClients())", + "label": "code:python (def filterCotationColumn(series: pd.Series, startDate, endDa)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", - "source_location": "L430", - "community": 118, - "norm_label": "code:python (mcpclients, sessions = await mcpclientpool().getclients())", - "id": "plans_2026_07_29_prometheus_performance_codeblock_12" + "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", + "source_location": "L129", + "community": 75, + "norm_label": "code:python (def filtercotationcolumn(series: pd.series, startdate, endda)", + "id": "plans_2026_08_01_stocks_cache_zlib_compression_codeblock_3" }, { - "label": "code:python (if MCPClientPool().clients is None:)", + "label": "code:python (startDate, endDate = parseDateRange(dates))", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", - "source_location": "L440", - "community": 118, - "norm_label": "code:python (if mcpclientpool().clients is none:)", - "id": "plans_2026_07_29_prometheus_performance_codeblock_13" + "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", + "source_location": "L153", + "community": 75, + "norm_label": "code:python (startdate, enddate = parsedaterange(dates))", + "id": "plans_2026_08_01_stocks_cache_zlib_compression_codeblock_4" }, { - "label": "code:bash (git add main/app/prometheus/agent.py main/app/prometheus/com)", + "label": "code:python (startDate, endDate = parseDateRange(dates))", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", - "source_location": "L461", - "community": 118, - "norm_label": "code:bash (git add main/app/prometheus/agent.py main/app/prometheus/com)", - "id": "plans_2026_07_29_prometheus_performance_codeblock_14" + "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", + "source_location": "L160", + "community": 75, + "norm_label": "code:python (startdate, enddate = parsedaterange(dates))", + "id": "plans_2026_08_01_stocks_cache_zlib_compression_codeblock_5" }, { - "label": "2026-07-29-stocks-api-perf-optimizations.md", + "label": "code:bash (git add main/app/stocks_api/cache.py main/app/stocks_api/que)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-stocks-api-perf-optimizations.md", - "source_location": "L1", - "community": 9, - "norm_label": "2026-07-29-stocks-api-perf-optimizations.md", - "id": "docs_superpowers_plans_2026_07_29_stocks_api_perf_optimizations_md" + "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", + "source_location": "L178", + "community": 75, + "norm_label": "code:bash (git add main/app/stocks_api/cache.py main/app/stocks_api/que)", + "id": "plans_2026_08_01_stocks_cache_zlib_compression_codeblock_6" }, { - "label": "Stocks API Performance Optimizations Implementation Plan", + "label": "Task 2: zlib-compress JSON cells at load, decompress at read", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-stocks-api-perf-optimizations.md", - "source_location": "L1", - "community": 9, - "norm_label": "stocks api performance optimizations implementation plan", - "id": "plans_2026_07_29_stocks_api_perf_optimizations_stocks_api_performance_optimizations_implementation_plan" + "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", + "source_location": "L185", + "community": 75, + "norm_label": "task 2: zlib-compress json cells at load, decompress at read", + "id": "plans_2026_08_01_stocks_cache_zlib_compression_task_2_zlib_compress_json_cells_at_load_decompress_at_read" }, { - "label": "Global Constraints", + "label": "code:python (import threading)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-stocks-api-perf-optimizations.md", - "source_location": "L11", - "community": 9, - "norm_label": "global constraints", - "id": "plans_2026_07_29_stocks_api_perf_optimizations_global_constraints" + "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", + "source_location": "L198", + "community": 75, + "norm_label": "code:python (import threading)", + "id": "plans_2026_08_01_stocks_cache_zlib_compression_codeblock_7" }, { - "label": "Task 1: Vectorize filterCotationColumn with explode()", + "label": "code:python (import zlib # add to existing imports)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-stocks-api-perf-optimizations.md", - "source_location": "L22", - "community": 9, - "norm_label": "task 1: vectorize filtercotationcolumn with explode()", - "id": "plans_2026_07_29_stocks_api_perf_optimizations_task_1_vectorize_filtercotationcolumn_with_explode" + "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", + "source_location": "L263", + "community": 75, + "norm_label": "code:python (import zlib # add to existing imports)", + "id": "plans_2026_08_01_stocks_cache_zlib_compression_codeblock_8" }, { - "label": "code:python (def filterCotationColumn(series: pd.Series, startDate, endDa)", + "label": "code:python (sampleCols = [c for c in COMPRESS_COLS if c in df.columns])", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-stocks-api-perf-optimizations.md", - "source_location": "L35", - "community": 9, - "norm_label": "code:python (def filtercotationcolumn(series: pd.series, startdate, endda)", - "id": "plans_2026_07_29_stocks_api_perf_optimizations_codeblock_1" + "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", + "source_location": "L273", + "community": 75, + "norm_label": "code:python (samplecols = [c for c in compress_cols if c in df.columns])", + "id": "plans_2026_08_01_stocks_cache_zlib_compression_codeblock_9" }, { - "label": "code:bash (git add main/app/stocks_api/query.py)", + "label": "code:python (import zlib # add to existing imports)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-stocks-api-perf-optimizations.md", - "source_location": "L62", - "community": 9, - "norm_label": "code:bash (git add main/app/stocks_api/query.py)", - "id": "plans_2026_07_29_stocks_api_perf_optimizations_codeblock_2" + "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", + "source_location": "L282", + "community": 75, + "norm_label": "code:python (import zlib # add to existing imports)", + "id": "plans_2026_08_01_stocks_cache_zlib_compression_codeblock_10" }, { - "label": "Task 2: Pre-computed date index for O(1) range checks", + "label": "code:python (def parseJSON(x):)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-stocks-api-perf-optimizations.md", - "source_location": "L69", - "community": 9, - "norm_label": "task 2: pre-computed date index for o(1) range checks", - "id": "plans_2026_07_29_stocks_api_perf_optimizations_task_2_pre_computed_date_index_for_o_1_range_checks" + "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", + "source_location": "L286", + "community": 75, + "norm_label": "code:python (def parsejson(x):)", + "id": "plans_2026_08_01_stocks_cache_zlib_compression_codeblock_11" }, { - "label": "code:python (def buildCotationDateIndex(df: pd.DataFrame, col: str = \"COT)", + "label": "code:python (lambda x: ()", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-stocks-api-perf-optimizations.md", - "source_location": "L83", - "community": 9, - "norm_label": "code:python (def buildcotationdateindex(df: pd.dataframe, col: str = \"cot)", - "id": "plans_2026_07_29_stocks_api_perf_optimizations_codeblock_3" + "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", + "source_location": "L296", + "community": 75, + "norm_label": "code:python (lambda x: ()", + "id": "plans_2026_08_01_stocks_cache_zlib_compression_codeblock_12" }, { - "label": "code:python (def filterCotationColumn(series: pd.Series, startDate, endDa)", + "label": "code:python (lambda x: ()", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-stocks-api-perf-optimizations.md", - "source_location": "L102", - "community": 9, - "norm_label": "code:python (def filtercotationcolumn(series: pd.series, startdate, endda)", - "id": "plans_2026_07_29_stocks_api_perf_optimizations_codeblock_4" + "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", + "source_location": "L304", + "community": 75, + "norm_label": "code:python (lambda x: ()", + "id": "plans_2026_08_01_stocks_cache_zlib_compression_codeblock_13" }, { "label": "code:bash (git add main/app/stocks_api/cache.py main/app/stocks_api/que)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-stocks-api-perf-optimizations.md", - "source_location": "L145", - "community": 9, + "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", + "source_location": "L324", + "community": 75, "norm_label": "code:bash (git add main/app/stocks_api/cache.py main/app/stocks_api/que)", - "id": "plans_2026_07_29_stocks_api_perf_optimizations_codeblock_5" + "id": "plans_2026_08_01_stocks_cache_zlib_compression_codeblock_14" }, { - "label": "Task 3: Parquet disk cache for faster startup", + "label": "Task 3: Keep compressed column subfields in getNest()", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-stocks-api-perf-optimizations.md", - "source_location": "L152", - "community": 9, - "norm_label": "task 3: parquet disk cache for faster startup", - "id": "plans_2026_07_29_stocks_api_perf_optimizations_task_3_parquet_disk_cache_for_faster_startup" + "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", + "source_location": "L331", + "community": 75, + "norm_label": "task 3: keep compressed column subfields in getnest()", + "id": "plans_2026_08_01_stocks_cache_zlib_compression_task_3_keep_compressed_column_subfields_in_getnest" }, { - "label": "code:python (PARQUET_PATH = Path(__file__).parent / \"stocks_cache.parquet)", + "label": "code:python (import threading)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-stocks-api-perf-optimizations.md", - "source_location": "L165", - "community": 9, - "norm_label": "code:python (parquet_path = path(__file__).parent / \"stocks_cache.parquet)", - "id": "plans_2026_07_29_stocks_api_perf_optimizations_codeblock_6" + "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", + "source_location": "L343", + "community": 75, + "norm_label": "code:python (import threading)", + "id": "plans_2026_08_01_stocks_cache_zlib_compression_codeblock_15" }, { - "label": "code:bash (git add main/app/stocks_api/cache.py)", + "label": "code:python (def getNest() -> dict:)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-stocks-api-perf-optimizations.md", - "source_location": "L203", - "community": 9, - "norm_label": "code:bash (git add main/app/stocks_api/cache.py)", - "id": "plans_2026_07_29_stocks_api_perf_optimizations_codeblock_7" + "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", + "source_location": "L376", + "community": 75, + "norm_label": "code:python (def getnest() -> dict:)", + "id": "plans_2026_08_01_stocks_cache_zlib_compression_codeblock_16" }, { - "label": "Task 4: Tests for new optimizations", + "label": "code:bash (git add main/app/stocks_api/compress.py tests/test_stocks_ca)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-stocks-api-perf-optimizations.md", - "source_location": "L210", - "community": 9, - "norm_label": "task 4: tests for new optimizations", - "id": "plans_2026_07_29_stocks_api_perf_optimizations_task_4_tests_for_new_optimizations" + "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", + "source_location": "L402", + "community": 75, + "norm_label": "code:bash (git add main/app/stocks_api/compress.py tests/test_stocks_ca)", + "id": "plans_2026_08_01_stocks_cache_zlib_compression_codeblock_17" }, { - "label": "code:python (import pandas as pd)", + "label": "Task 4: Full verification", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-stocks-api-perf-optimizations.md", - "source_location": "L221", - "community": 9, - "norm_label": "code:python (import pandas as pd)", - "id": "plans_2026_07_29_stocks_api_perf_optimizations_codeblock_8" + "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", + "source_location": "L409", + "community": 75, + "norm_label": "task 4: full verification", + "id": "plans_2026_08_01_stocks_cache_zlib_compression_task_4_full_verification" }, { - "label": "code:bash (git add tests/test_stocks_perf.py)", + "label": "code:bash (git status)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-stocks-api-perf-optimizations.md", - "source_location": "L278", - "community": 9, - "norm_label": "code:bash (git add tests/test_stocks_perf.py)", - "id": "plans_2026_07_29_stocks_api_perf_optimizations_codeblock_9" + "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", + "source_location": "L434", + "community": 75, + "norm_label": "code:bash (git status)", + "id": "plans_2026_08_01_stocks_cache_zlib_compression_codeblock_18" }, { - "label": "Task 5: Lint, format, and final verification", + "label": "Self-Review", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-stocks-api-perf-optimizations.md", - "source_location": "L285", - "community": 9, - "norm_label": "task 5: lint, format, and final verification", - "id": "plans_2026_07_29_stocks_api_perf_optimizations_task_5_lint_format_and_final_verification" + "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", + "source_location": "L441", + "community": 75, + "norm_label": "self-review", + "id": "plans_2026_08_01_stocks_cache_zlib_compression_self_review" }, { - "label": "code:bash (git add -A)", + "label": "Execution Handoff", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-stocks-api-perf-optimizations.md", - "source_location": "L302", - "community": 9, - "norm_label": "code:bash (git add -a)", - "id": "plans_2026_07_29_stocks_api_perf_optimizations_codeblock_10" + "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", + "source_location": "L461", + "community": 75, + "norm_label": "execution handoff", + "id": "plans_2026_08_01_stocks_cache_zlib_compression_execution_handoff" }, { - "label": "2026-07-29-prometheus-performance-design.md", + "label": "buildCotationDateIndex()", + "file_type": "code", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L34", + "community": 82, + "norm_label": "buildcotationdateindex()", + "id": "stocks_api_cache_buildcotationdateindex" + }, + { + "label": "prometheus-memory-extraction-plan.md", "file_type": "document", - "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", + "source_file": "docs/prometheus-memory-extraction-plan.md", "source_location": "L1", - "community": 143, - "norm_label": "2026-07-29-prometheus-performance-design.md", - "id": "docs_superpowers_specs_2026_07_29_prometheus_performance_design_md" + "community": 476, + "norm_label": "prometheus-memory-extraction-plan.md", + "id": "docs_prometheus_memory_extraction_plan_md" }, { - "label": "Prometheus Performance: Connection Pooling + Caching + FieldRegistry Pre-fetch", + "label": "Prometheus Self-Extracting Memories \u2014 Design", "file_type": "document", - "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", + "source_file": "docs/prometheus-memory-extraction-plan.md", "source_location": "L1", - "community": 143, - "norm_label": "prometheus performance: connection pooling + caching + fieldregistry pre-fetch", - "id": "specs_2026_07_29_prometheus_performance_design_prometheus_performance_connection_pooling_caching_fieldregistry_pre_fetch" + "community": 476, + "norm_label": "prometheus self-extracting memories \u2014 design", + "id": "docs_prometheus_memory_extraction_plan_prometheus_self_extracting_memories_design" }, { - "label": "Global Constraints", + "label": "1. Objective", "file_type": "document", - "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", - "source_location": "L12", - "community": 143, - "norm_label": "global constraints", - "id": "specs_2026_07_29_prometheus_performance_design_global_constraints" + "source_file": "docs/prometheus-memory-extraction-plan.md", + "source_location": "L14", + "community": 476, + "norm_label": "1. objective", + "id": "docs_prometheus_memory_extraction_plan_1_objective" }, { - "label": "1. Connection Pooling \u2014 `main/app/prometheus/mcp.py`", + "label": "2. Survey (what exists)", "file_type": "document", - "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", - "source_location": "L22", - "community": 143, - "norm_label": "1. connection pooling \u2014 `main/app/prometheus/mcp.py`", - "id": "specs_2026_07_29_prometheus_performance_design_1_connection_pooling_main_app_prometheus_mcp_py" + "source_file": "docs/prometheus-memory-extraction-plan.md", + "source_location": "L20", + "community": 476, + "norm_label": "2. survey (what exists)", + "id": "docs_prometheus_memory_extraction_plan_2_survey_what_exists" }, { - "label": "Problem", + "label": "3. Design \u2014 threshold-triggered extraction (Part A)", "file_type": "document", - "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", - "source_location": "L24", - "community": 143, - "norm_label": "problem", - "id": "specs_2026_07_29_prometheus_performance_design_problem" + "source_file": "docs/prometheus-memory-extraction-plan.md", + "source_location": "L33", + "community": 476, + "norm_label": "3. design \u2014 threshold-triggered extraction (part a)", + "id": "docs_prometheus_memory_extraction_plan_3_design_threshold_triggered_extraction_part_a" }, { - "label": "Design", + "label": "4. Numerics", "file_type": "document", - "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", - "source_location": "L27", - "community": 143, - "norm_label": "design", - "id": "specs_2026_07_29_prometheus_performance_design_design" + "source_file": "docs/prometheus-memory-extraction-plan.md", + "source_location": "L53", + "community": 476, + "norm_label": "4. numerics", + "id": "docs_prometheus_memory_extraction_plan_4_numerics" }, { - "label": "code:python (class MCPClientPool:)", + "label": "5. Improving memory tool usage (Part B)", "file_type": "document", - "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", - "source_location": "L30", - "community": 143, - "norm_label": "code:python (class mcpclientpool:)", - "id": "specs_2026_07_29_prometheus_performance_design_codeblock_1" + "source_file": "docs/prometheus-memory-extraction-plan.md", + "source_location": "L60", + "community": 476, + "norm_label": "5. improving memory tool usage (part b)", + "id": "docs_prometheus_memory_extraction_plan_5_improving_memory_tool_usage_part_b" }, { - "label": "Integration", + "label": "6. Implementation", "file_type": "document", - "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", - "source_location": "L57", - "community": 143, - "norm_label": "integration", - "id": "specs_2026_07_29_prometheus_performance_design_integration" + "source_file": "docs/prometheus-memory-extraction-plan.md", + "source_location": "L70", + "community": 476, + "norm_label": "6. implementation", + "id": "docs_prometheus_memory_extraction_plan_6_implementation" }, { - "label": "Edge Cases", + "label": "7. Risks & mitigations", "file_type": "document", - "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", - "source_location": "L63", - "community": 143, - "norm_label": "edge cases", - "id": "specs_2026_07_29_prometheus_performance_design_edge_cases" + "source_file": "docs/prometheus-memory-extraction-plan.md", + "source_location": "L77", + "community": 476, + "norm_label": "7. risks & mitigations", + "id": "docs_prometheus_memory_extraction_plan_7_risks_mitigations" }, { - "label": "2. Caching \u2014 `main/app/prometheus/cache.py`", + "label": "2026-07-31-prometheus-self-extracting-memories.md", "file_type": "document", - "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", - "source_location": "L68", - "community": 143, - "norm_label": "2. caching \u2014 `main/app/prometheus/cache.py`", - "id": "specs_2026_07_29_prometheus_performance_design_2_caching_main_app_prometheus_cache_py" + "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", + "source_location": "L1", + "community": 50, + "norm_label": "2026-07-31-prometheus-self-extracting-memories.md", + "id": "docs_superpowers_plans_2026_07_31_prometheus_self_extracting_memories_md" }, { - "label": "Problem", + "label": "Prometheus Self-Extracting Memories Implementation Plan", "file_type": "document", - "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", - "source_location": "L70", - "community": 143, - "norm_label": "problem", - "id": "specs_2026_07_29_prometheus_performance_design_problem_70" + "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", + "source_location": "L1", + "community": 50, + "norm_label": "prometheus self-extracting memories implementation plan", + "id": "plans_2026_07_31_prometheus_self_extracting_memories_prometheus_self_extracting_memories_implementation_plan" }, { - "label": "Design", + "label": "Global Constraints", "file_type": "document", - "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", - "source_location": "L73", - "community": 143, - "norm_label": "design", - "id": "specs_2026_07_29_prometheus_performance_design_design_73" + "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", + "source_location": "L11", + "community": 50, + "norm_label": "global constraints", + "id": "plans_2026_07_31_prometheus_self_extracting_memories_global_constraints" }, { - "label": "code:python (TTL_MAP = {)", + "label": "File Structure", "file_type": "document", - "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", - "source_location": "L76", - "community": 143, - "norm_label": "code:python (ttl_map = {)", - "id": "specs_2026_07_29_prometheus_performance_design_codeblock_2" + "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", + "source_location": "L26", + "community": 50, + "norm_label": "file structure", + "id": "plans_2026_07_31_prometheus_self_extracting_memories_file_structure" }, { - "label": "Cache Key", + "label": "Task 1: Rename memory model field `baseScore` \u2192 `score`", "file_type": "document", - "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", - "source_location": "L93", - "community": 143, - "norm_label": "cache key", - "id": "specs_2026_07_29_prometheus_performance_design_cache_key" + "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", + "source_location": "L44", + "community": 50, + "norm_label": "task 1: rename memory model field `basescore` \u2192 `score`", + "id": "plans_2026_07_31_prometheus_self_extracting_memories_task_1_rename_memory_model_field_basescore_score" }, { - "label": "Integration", + "label": "code:python (baseScore = Column(Float, default=1.0))", "file_type": "document", - "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", - "source_location": "L96", - "community": 143, - "norm_label": "integration", - "id": "specs_2026_07_29_prometheus_performance_design_integration_96" + "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", + "source_location": "L60", + "community": 50, + "norm_label": "code:python (basescore = column(float, default=1.0))", + "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_1" }, { - "label": "Edge Cases", + "label": "code:python (score = Column(Float, default=1.0))", "file_type": "document", - "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", - "source_location": "L101", - "community": 143, - "norm_label": "edge cases", - "id": "specs_2026_07_29_prometheus_performance_design_edge_cases_101" + "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", + "source_location": "L64", + "community": 50, + "norm_label": "code:python (score = column(float, default=1.0))", + "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_2" }, { - "label": "3. FieldRegistry Pre-fetch \u2014 `main/app/prometheus/compact.py`", + "label": "code:python (__table_args__ = ()", "file_type": "document", - "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", - "source_location": "L106", - "community": 143, - "norm_label": "3. fieldregistry pre-fetch \u2014 `main/app/prometheus/compact.py`", - "id": "specs_2026_07_29_prometheus_performance_design_3_fieldregistry_pre_fetch_main_app_prometheus_compact_py" + "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", + "source_location": "L68", + "community": 50, + "norm_label": "code:python (__table_args__ = ()", + "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_3" }, { - "label": "Problem", + "label": "code:python (\"\"\"rename memory baseScore to score)", "file_type": "document", - "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", - "source_location": "L108", - "community": 143, - "norm_label": "problem", - "id": "specs_2026_07_29_prometheus_performance_design_problem_108" + "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", + "source_location": "L110", + "community": 50, + "norm_label": "code:python (\"\"\"rename memory basescore to score)", + "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_4" }, { - "label": "Design", + "label": "code:bash (git add main/models/memory.py main/app/prometheus/memory.py )", "file_type": "document", - "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", - "source_location": "L111", - "community": 143, - "norm_label": "design", - "id": "specs_2026_07_29_prometheus_performance_design_design_111" + "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", + "source_location": "L138", + "community": 50, + "norm_label": "code:bash (git add main/models/memory.py main/app/prometheus/memory.py )", + "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_5" }, { - "label": "code:python (def warmup(self):)", + "label": "Task 2: Add `extract()` to `main/app/prometheus/memory.py`", "file_type": "document", - "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", - "source_location": "L114", - "community": 143, - "norm_label": "code:python (def warmup(self):)", - "id": "specs_2026_07_29_prometheus_performance_design_codeblock_3" + "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", + "source_location": "L145", + "community": 50, + "norm_label": "task 2: add `extract()` to `main/app/prometheus/memory.py`", + "id": "plans_2026_07_31_prometheus_self_extracting_memories_task_2_add_extract_to_main_app_prometheus_memory_py" }, { - "label": "Integration", + "label": "code:python (import json)", "file_type": "document", - "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", - "source_location": "L120", - "community": 143, - "norm_label": "integration", - "id": "specs_2026_07_29_prometheus_performance_design_integration_120" + "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", + "source_location": "L159", + "community": 50, + "norm_label": "code:python (import json)", + "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_6" }, { - "label": "Files", + "label": "code:python (MEMORY_EXTRACTION_TOKEN_BUDGET = 32000)", "file_type": "document", - "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", - "source_location": "L124", - "community": 143, - "norm_label": "files", - "id": "specs_2026_07_29_prometheus_performance_design_files" + "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", + "source_location": "L272", + "community": 50, + "norm_label": "code:python (memory_extraction_token_budget = 32000)", + "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_7" }, { - "label": "state.py", - "file_type": "code", - "source_file": "main/app/prometheus/state.py", - "source_location": "L1", - "community": 8, - "norm_label": "state.py", - "id": "main_app_prometheus_state_py" + "label": "code:python (import json)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", + "source_location": "L290", + "community": 50, + "norm_label": "code:python (import json)", + "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_8" }, { - "label": "HarnessState", - "file_type": "code", - "source_file": "main/app/prometheus/state.py", - "source_location": "L6", - "community": 8, - "norm_label": "harnessstate", - "id": "prometheus_state_harnessstate" + "label": "code:python (EXTRACT_PROMPT = ()", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", + "source_location": "L301", + "community": 50, + "norm_label": "code:python (extract_prompt = ()", + "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_9" }, { - "label": ".__init__()", - "file_type": "code", - "source_file": "main/app/prometheus/state.py", - "source_location": "L7", - "community": 8, - "norm_label": ".__init__()", - "id": "prometheus_state_harnessstate_init" + "label": "code:bash (git add main/app/prometheus/memory.py tests/test_memory_extr)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", + "source_location": "L388", + "community": 50, + "norm_label": "code:bash (git add main/app/prometheus/memory.py tests/test_memory_extr)", + "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_10" }, { - "label": ".get()", - "file_type": "code", - "source_file": "main/app/prometheus/state.py", - "source_location": "L11", - "community": 8, - "norm_label": ".get()", - "id": "prometheus_state_harnessstate_get" - }, - { - "label": ".set()", - "file_type": "code", - "source_file": "main/app/prometheus/state.py", - "source_location": "L14", - "community": 215, - "norm_label": ".set()", - "id": "prometheus_state_harnessstate_set" - }, - { - "label": ".toDict()", - "file_type": "code", - "source_file": "main/app/prometheus/state.py", - "source_location": "L18", - "community": 8, - "norm_label": ".todict()", - "id": "prometheus_state_harnessstate_todict" - }, - { - "label": ".toContext()", - "file_type": "code", - "source_file": "main/app/prometheus/state.py", - "source_location": "L21", - "community": 8, - "norm_label": ".tocontext()", - "id": "prometheus_state_harnessstate_tocontext" - }, - { - "label": ".hasChanged()", - "file_type": "code", - "source_file": "main/app/prometheus/state.py", - "source_location": "L26", - "community": 8, - "norm_label": ".haschanged()", - "id": "prometheus_state_harnessstate_haschanged" - }, - { - "label": ".resetChanged()", - "file_type": "code", - "source_file": "main/app/prometheus/state.py", - "source_location": "L29", - "community": 8, - "norm_label": ".resetchanged()", - "id": "prometheus_state_harnessstate_resetchanged" - }, - { - "label": ".clear()", - "file_type": "code", - "source_file": "main/app/prometheus/state.py", - "source_location": "L34", - "community": 8, - "norm_label": ".clear()", - "id": "prometheus_state_harnessstate_clear" - }, - { - "label": "get_state()", - "file_type": "code", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L89", - "community": 8, - "norm_label": "get_state()", - "id": "prometheus_tools_get_state" - }, - { - "label": "set_state()", - "file_type": "code", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L104", - "community": 487, - "norm_label": "set_state()", - "id": "prometheus_tools_set_state" - }, - { - "label": "Store a value in the harness state for this session. Use this to save inter", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L105", - "community": 487, - "norm_label": "store a value in the harness state for this session. use this to save inter", - "id": "prometheus_tools_rationale_105" - }, - { - "label": "Execute Python code in an isolated sandbox. Use for quantitative analysis,", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L123", - "community": 487, - "norm_label": "execute python code in an isolated sandbox. use for quantitative analysis,", - "id": "prometheus_tools_rationale_123" - }, - { - "label": "Read a file from the workspace. Args: path: Path to the file (e.", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L144", - "community": 523, - "norm_label": "read a file from the workspace. args: path: path to the file (e.", - "id": "prometheus_tools_rationale_144" - }, - { - "label": "List files in the workspace directory. Args: path: Directory pat", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L168", - "community": 523, - "norm_label": "list files in the workspace directory. args: path: directory pat", - "id": "prometheus_tools_rationale_168" - }, - { - "label": "_parseServers()", - "file_type": "code", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L16", - "community": 194, - "norm_label": "_parseservers()", - "id": "prometheus_mcp_parseservers" - }, - { - "label": "email-carefs.md", - "file_type": "document", - "source_file": "email-carefs.md", - "source_location": "L1", - "community": 496, - "norm_label": "email-carefs.md", - "id": "email_carefs_md" - }, - { - "label": "checkMySqlConnection()", - "file_type": "code", - "source_file": "main/utils/connectivity.py", - "source_location": "L13", - "community": 59, - "norm_label": "checkmysqlconnection()", - "id": "utils_connectivity_checkmysqlconnection" - }, - { - "label": "1-RS_Mansa.docx.md", - "file_type": "document", - "source_file": "1-RS_Mansa.docx.md", - "source_location": "L1", - "community": 91, - "norm_label": "1-rs_mansa.docx.md", - "id": "1_rs_mansa_docx_md" - }, - { - "label": "**1 Introdu\u00e7\u00e3o**", - "file_type": "document", - "source_file": "1-RS_Mansa.docx.md", - "source_location": "L35", - "community": 91, - "norm_label": "**1 introducao**", - "id": "server_1_rs_mansa_docx_1_introdu\u00e7\u00e3o" - }, - { - "label": "**2 Escopo**", - "file_type": "document", - "source_file": "1-RS_Mansa.docx.md", - "source_location": "L41", - "community": 91, - "norm_label": "**2 escopo**", - "id": "server_1_rs_mansa_docx_2_escopo" - }, - { - "label": "**3 Descri\u00e7\u00e3o do Projeto**", - "file_type": "document", - "source_file": "1-RS_Mansa.docx.md", - "source_location": "L47", - "community": 91, - "norm_label": "**3 descricao do projeto**", - "id": "server_1_rs_mansa_docx_3_descri\u00e7\u00e3o_do_projeto" - }, - { - "label": "**5.1 \u2014 Autentica\u00e7\u00e3o e Gerenciamento de Usu\u00e1rios**", + "label": "Task 3: Wire `extract()` into the pre-turn hook", "file_type": "document", - "source_file": "1-RS_Mansa.docx.md", - "source_location": "L70", - "community": 91, - "norm_label": "**5.1 \u2014 autenticacao e gerenciamento de usuarios**", - "id": "server_1_rs_mansa_docx_5_1_autentica\u00e7\u00e3o_e_gerenciamento_de_usu\u00e1rios" + "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", + "source_location": "L395", + "community": 50, + "norm_label": "task 3: wire `extract()` into the pre-turn hook", + "id": "plans_2026_07_31_prometheus_self_extracting_memories_task_3_wire_extract_into_the_pre_turn_hook" }, { - "label": "**5.2 \u2014 Stocks API \u2014 Dados Financeiros**", + "label": "code:python (from unittest.mock import patch)", "file_type": "document", - "source_file": "1-RS_Mansa.docx.md", - "source_location": "L86", - "community": 91, - "norm_label": "**5.2 \u2014 stocks api \u2014 dados financeiros**", - "id": "server_1_rs_mansa_docx_5_2_stocks_api_dados_financeiros" + "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", + "source_location": "L409", + "community": 50, + "norm_label": "code:python (from unittest.mock import patch)", + "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_11" }, { - "label": "**5.3 \u2014 Prometheus \u2014 Chatbot Financeiro com IA**", + "label": "code:python (if session and session.history:)", "file_type": "document", - "source_file": "1-RS_Mansa.docx.md", - "source_location": "L100", - "community": 91, - "norm_label": "**5.3 \u2014 prometheus \u2014 chatbot financeiro com ia**", - "id": "server_1_rs_mansa_docx_5_3_prometheus_chatbot_financeiro_com_ia" + "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", + "source_location": "L437", + "community": 50, + "norm_label": "code:python (if session and session.history:)", + "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_12" }, { - "label": "**5.4 \u2014 Scraper B3 \u2014 Coleta de Dados**", + "label": "code:python (if session and session.history:)", "file_type": "document", - "source_file": "1-RS_Mansa.docx.md", - "source_location": "L118", - "community": 91, - "norm_label": "**5.4 \u2014 scraper b3 \u2014 coleta de dados**", - "id": "server_1_rs_mansa_docx_5_4_scraper_b3_coleta_de_dados" + "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", + "source_location": "L444", + "community": 50, + "norm_label": "code:python (if session and session.history:)", + "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_13" }, { - "label": "**5.5 \u2014 Thoth \u2014 Gest\u00e3o de Carteiras e Metas**", + "label": "code:bash (git add main/app/prometheus/agent.py tests/test_streammessag)", "file_type": "document", - "source_file": "1-RS_Mansa.docx.md", - "source_location": "L136", - "community": 91, - "norm_label": "**5.5 \u2014 thoth \u2014 gestao de carteiras e metas**", - "id": "server_1_rs_mansa_docx_5_5_thoth_gest\u00e3o_de_carteiras_e_metas" + "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", + "source_location": "L469", + "community": 50, + "norm_label": "code:bash (git add main/app/prometheus/agent.py tests/test_streammessag)", + "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_14" }, { - "label": "**5.6 \u2014 Ma'at \u2014 Algoritmo de Stock Picking**", + "label": "Task 4: Harden the SYSTEM_PROMPT memory guidance", "file_type": "document", - "source_file": "1-RS_Mansa.docx.md", - "source_location": "L150", - "community": 91, - "norm_label": "**5.6 \u2014 ma'at \u2014 algoritmo de stock picking**", - "id": "server_1_rs_mansa_docx_5_6_ma_at_algoritmo_de_stock_picking" + "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", + "source_location": "L476", + "community": 50, + "norm_label": "task 4: harden the system_prompt memory guidance", + "id": "plans_2026_07_31_prometheus_self_extracting_memories_task_4_harden_the_system_prompt_memory_guidance" }, { - "label": "**5.7 \u2014 Ogum \u2014 Algo Trading e Automa\u00e7\u00e3o**", + "label": "code:python (from main.app.prometheus.agent import SYSTEM_PROMPT)", "file_type": "document", - "source_file": "1-RS_Mansa.docx.md", - "source_location": "L164", - "community": 91, - "norm_label": "**5.7 \u2014 ogum \u2014 algo trading e automacao**", - "id": "server_1_rs_mansa_docx_5_7_ogum_algo_trading_e_automa\u00e7\u00e3o" + "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", + "source_location": "L489", + "community": 50, + "norm_label": "code:python (from main.app.prometheus.agent import system_prompt)", + "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_15" }, { - "label": "**6.1 \u2014 Usabilidade**", + "label": "code:python (### Memory System)", "file_type": "document", - "source_file": "1-RS_Mansa.docx.md", - "source_location": "L180", - "community": 91, - "norm_label": "**6.1 \u2014 usabilidade**", - "id": "server_1_rs_mansa_docx_6_1_usabilidade" + "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", + "source_location": "L513", + "community": 50, + "norm_label": "code:python (### memory system)", + "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_16" }, { - "label": "**6.1.1 \u2014 Interface do Usu\u00e1rio**", + "label": "code:python (### Memory System)", "file_type": "document", - "source_file": "1-RS_Mansa.docx.md", - "source_location": "L182", - "community": 91, - "norm_label": "**6.1.1 \u2014 interface do usuario**", - "id": "server_1_rs_mansa_docx_6_1_1_interface_do_usu\u00e1rio" + "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", + "source_location": "L525", + "community": 50, + "norm_label": "code:python (### memory system)", + "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_17" }, { - "label": "**6.2 \u2014 Seguran\u00e7a**", + "label": "code:bash (git add main/app/prometheus/agent.py tests/test_memory_promp)", "file_type": "document", - "source_file": "1-RS_Mansa.docx.md", - "source_location": "L193", - "community": 91, - "norm_label": "**6.2 \u2014 seguranca**", - "id": "server_1_rs_mansa_docx_6_2_seguran\u00e7a" + "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", + "source_location": "L548", + "community": 50, + "norm_label": "code:bash (git add main/app/prometheus/agent.py tests/test_memory_promp)", + "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_18" }, { - "label": "**6.3 \u2014 Performance**", + "label": "Task 5: Full verification", "file_type": "document", - "source_file": "1-RS_Mansa.docx.md", - "source_location": "L203", - "community": 91, - "norm_label": "**6.3 \u2014 performance**", - "id": "server_1_rs_mansa_docx_6_3_performance" + "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", + "source_location": "L555", + "community": 50, + "norm_label": "task 5: full verification", + "id": "plans_2026_07_31_prometheus_self_extracting_memories_task_5_full_verification" }, { - "label": "**6.4 \u2014 Arquitetura**", + "label": "Self-Review", "file_type": "document", - "source_file": "1-RS_Mansa.docx.md", - "source_location": "L211", - "community": 91, - "norm_label": "**6.4 \u2014 arquitetura**", - "id": "server_1_rs_mansa_docx_6_4_arquitetura" + "source_file": "docs/superpowers/plans/2026-07-31-prometheus-self-extracting-memories.md", + "source_location": "L572", + "community": 50, + "norm_label": "self-review", + "id": "plans_2026_07_31_prometheus_self_extracting_memories_self_review" }, { - "label": "checkSingleDb()", + "label": ".__getitem__()", "file_type": "code", - "source_file": "main/utils/connectivity.py", - "source_location": "L13", - "community": 541, - "norm_label": "checksingledb()", - "id": "utils_connectivity_checksingledb" + "source_file": "config.py", + "source_location": "L26", + "community": 102, + "norm_label": ".__getitem__()", + "id": "server_config_basemansasettings_getitem" }, { - "label": "_summarizer_legacy.py", + "label": "test-streaming.js", "file_type": "code", - "source_file": "main/app/prometheus/_summarizer_legacy.py", + "source_file": "frontend/test-streaming.js", "source_location": "L1", - "community": 189, - "norm_label": "_summarizer_legacy.py", - "id": "main_app_prometheus_summarizer_legacy_py" + "community": 142, + "norm_label": "test-streaming.js", + "id": "frontend_test_streaming_js" }, { - "label": "getTokenizer()", + "label": "simulateStream()", "file_type": "code", - "source_file": "main/app/prometheus/_summarizer_legacy.py", - "source_location": "L19", - "community": 189, - "norm_label": "gettokenizer()", - "id": "prometheus_summarizer_legacy_gettokenizer" + "source_file": "frontend/test-streaming.js", + "source_location": "L37", + "community": 142, + "norm_label": "simulatestream()", + "id": "frontend_test_streaming_simulatestream" }, { - "label": "countTokens()", + "label": "runParser()", "file_type": "code", - "source_file": "main/app/prometheus/_summarizer_legacy.py", - "source_location": "L31", - "community": 189, - "norm_label": "counttokens()", - "id": "prometheus_summarizer_legacy_counttokens" + "source_file": "frontend/test-streaming.js", + "source_location": "L45", + "community": 142, + "norm_label": "runparser()", + "id": "frontend_test_streaming_runparser" }, { - "label": "smartTruncate()", + "label": "chunkSizes", "file_type": "code", - "source_file": "main/app/prometheus/_summarizer_legacy.py", - "source_location": "L44", - "community": 189, - "norm_label": "smarttruncate()", - "id": "prometheus_summarizer_legacy_smarttruncate" + "source_file": "frontend/test-streaming.js", + "source_location": "L117", + "community": 142, + "norm_label": "chunksizes", + "id": "frontend_test_streaming_chunksizes" }, { - "label": "PrometheusSummarizer", + "label": "{ session, accumulated, lineCount, chunkIdx }", "file_type": "code", - "source_file": "main/app/prometheus/_summarizer_legacy.py", - "source_location": "L110", - "community": 189, - "norm_label": "prometheussummarizer", - "id": "prometheus_summarizer_legacy_prometheussummarizer" + "source_file": "frontend/test-streaming.js", + "source_location": "L121", + "community": 142, + "norm_label": "{ session, accumulated, linecount, chunkidx }", + "id": "frontend_test_streaming_session_accumulated_linecount_chunkidx" }, { - "label": ".shouldSummarize()", + "label": "evilChunks", "file_type": "code", - "source_file": "main/app/prometheus/_summarizer_legacy.py", - "source_location": "L111", - "community": 189, - "norm_label": ".shouldsummarize()", - "id": "prometheus_summarizer_legacy_prometheussummarizer_shouldsummarize" + "source_file": "frontend/test-streaming.js", + "source_location": "L143", + "community": 142, + "norm_label": "evilchunks", + "id": "frontend_test_streaming_evilchunks" }, { - "label": ".getSummarizableChunk()", + "label": "lines", "file_type": "code", - "source_file": "main/app/prometheus/_summarizer_legacy.py", - "source_location": "L117", - "community": 189, - "norm_label": ".getsummarizablechunk()", - "id": "prometheus_summarizer_legacy_prometheussummarizer_getsummarizablechunk" + "source_file": "frontend/test-streaming.js", + "source_location": "L152", + "community": 142, + "norm_label": "lines", + "id": "frontend_test_streaming_lines" }, { - "label": ".consolidate()", + "label": "trimmed", "file_type": "code", - "source_file": "main/app/prometheus/_summarizer_legacy.py", - "source_location": "L128", - "community": 189, - "norm_label": ".consolidate()", - "id": "prometheus_summarizer_legacy_prometheussummarizer_consolidate" + "source_file": "frontend/test-streaming.js", + "source_location": "L155", + "community": 142, + "norm_label": "trimmed", + "id": "frontend_test_streaming_trimmed" }, { - "label": ".summarize()", + "label": "data", "file_type": "code", - "source_file": "main/app/prometheus/_summarizer_legacy.py", - "source_location": "L186", - "community": 189, - "norm_label": ".summarize()", - "id": "prometheus_summarizer_legacy_prometheussummarizer_summarize" + "source_file": "frontend/test-streaming.js", + "source_location": "L157", + "community": 142, + "norm_label": "data", + "id": "frontend_test_streaming_data" }, { - "label": ".getEpisodes()", + "label": "event", "file_type": "code", - "source_file": "main/app/prometheus/_summarizer_legacy.py", - "source_location": "L237", - "community": 189, - "norm_label": ".getepisodes()", - "id": "prometheus_summarizer_legacy_prometheussummarizer_getepisodes" + "source_file": "frontend/test-streaming.js", + "source_location": "L160", + "community": 142, + "norm_label": "event", + "id": "frontend_test_streaming_event" }, { - "label": "openMCPClients()", + "label": ".__new__()", "file_type": "code", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L232", - "community": 116, - "norm_label": "openmcpclients()", - "id": "prometheus_agent_openmcpclients" - }, - { - "label": "Discover available field names before querying /historical or /fundamental.", - "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L27", - "community": 54, - "norm_label": "discover available field names before querying /historical or /fundamental.", - "id": "controller_stocksapi_controller_rationale_27" - }, - { - "label": "Get year-based historical financial data for Brazilian B3 stocks. Returns", - "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L82", - "community": 197, - "norm_label": "get year-based historical financial data for brazilian b3 stocks. returns", - "id": "controller_stocksapi_controller_rationale_82" + "source_file": "main/app/prometheus/compact.py", + "source_location": "L94", + "community": 80, + "norm_label": ".__new__()", + "id": "prometheus_compact_fieldregistry_new" }, { - "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": "L144", - "community": 157, - "norm_label": "get point-in-time fundamental/valuation data for brazilian b3 stocks. ret", - "id": "controller_stocksapi_controller_rationale_144" + "label": ".__new__()", + "file_type": "code", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L38", + "community": 12, + "norm_label": ".__new__()", + "id": "prometheus_mcp_mcpclientpool_new" }, { - "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": "L209", - "community": 169, - "norm_label": "get 10-year daily price history (cotation) for brazilian b3 stocks. retur", - "id": "controller_stocksapi_controller_rationale_209" + "label": "addRole()", + "file_type": "code", + "source_file": "main/app/user/user.py", + "source_location": "L19", + "community": 519, + "norm_label": "addrole()", + "id": "user_user_addrole" }, { - "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": "L261", - "community": 81, - "norm_label": "get real-time price quotation for a single brazilian b3 stock. returns th", - "id": "controller_stocksapi_controller_rationale_261" + "label": "hasRole()", + "file_type": "code", + "source_file": "main/app/user/user.py", + "source_location": "L28", + "community": 519, + "norm_label": "hasrole()", + "id": "user_user_hasrole" }, { - "label": "Task 1: Create ResponseCache \u2014 `cache.py`", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", - "source_location": "L36", - "community": 118, - "norm_label": "task 1: create responsecache \u2014 `cache.py`", - "id": "plans_2026_07_29_prometheus_performance_task_1_create_responsecache_cache_py" + "label": "addRoleToUser()", + "file_type": "code", + "source_file": "main/app/user/user.py", + "source_location": "L44", + "community": 519, + "norm_label": "addroletouser()", + "id": "user_user_addroletouser" }, { - "label": "Task 2: Create MCPClientPool \u2014 `mcp.py`", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", - "source_location": "L185", - "community": 118, - "norm_label": "task 2: create mcpclientpool \u2014 `mcp.py`", - "id": "plans_2026_07_29_prometheus_performance_task_2_create_mcpclientpool_mcp_py" + "label": "upgradeToDeveloperStarter()", + "file_type": "code", + "source_file": "main/controller/user_controller.py", + "source_location": "L26", + "community": 501, + "norm_label": "upgradetodeveloperstarter()", + "id": "controller_user_controller_upgradetodeveloperstarter" }, { - "label": "Task 3: Integrate Pool + Cache + Pre-fetch into agent.py + tools.py", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", - "source_location": "L343", - "community": 118, - "norm_label": "task 3: integrate pool + cache + pre-fetch into agent.py + tools.py", - "id": "plans_2026_07_29_prometheus_performance_task_3_integrate_pool_cache_pre_fetch_into_agent_py_tools_py" + "label": "upgradeToDeveloperEnterprise()", + "file_type": "code", + "source_file": "main/controller/user_controller.py", + "source_location": "L38", + "community": 501, + "norm_label": "upgradetodeveloperenterprise()", + "id": "controller_user_controller_upgradetodeveloperenterprise" }, { - "label": "summarizer.py", + "label": "compressor.py", "file_type": "code", - "source_file": "main/app/prometheus/summarizer.py", + "source_file": "main/app/stocks_api/compressor.py", "source_location": "L1", - "community": 87, - "norm_label": "summarizer.py", - "id": "main_app_prometheus_summarizer_py" + "community": 573, + "norm_label": "compressor.py", + "id": "main_app_stocks_api_compressor_py" }, { - "label": "getTokenizer()", + "label": "getAbbr()", "file_type": "code", - "source_file": "main/app/prometheus/summarizer.py", - "source_location": "L19", - "community": 87, - "norm_label": "gettokenizer()", - "id": "prometheus_summarizer_gettokenizer" + "source_file": "main/app/stocks_api/compressor.py", + "source_location": "L25", + "community": 573, + "norm_label": "getabbr()", + "id": "stocks_api_compressor_getabbr" }, { - "label": "countTokens()", + "label": "getNest()", "file_type": "code", - "source_file": "main/app/prometheus/summarizer.py", - "source_location": "L31", - "community": 87, - "norm_label": "counttokens()", - "id": "prometheus_summarizer_counttokens" + "source_file": "main/app/stocks_api/compressor.py", + "source_location": "L36", + "community": 573, + "norm_label": "getnest()", + "id": "stocks_api_compressor_getnest" }, { - "label": "smartTruncate()", + "label": "rebuildAbbrevs()", "file_type": "code", - "source_file": "main/app/prometheus/summarizer.py", - "source_location": "L44", - "community": 87, - "norm_label": "smarttruncate()", - "id": "prometheus_summarizer_smarttruncate" + "source_file": "main/app/stocks_api/compressor.py", + "source_location": "L46", + "community": 573, + "norm_label": "rebuildabbrevs()", + "id": "stocks_api_compressor_rebuildabbrevs" }, { - "label": "PrometheusSummarizer", + "label": "walk()", "file_type": "code", - "source_file": "main/app/prometheus/summarizer.py", - "source_location": "L110", - "community": 87, - "norm_label": "prometheussummarizer", - "id": "prometheus_summarizer_prometheussummarizer" + "source_file": "main/app/stocks_api/compressor.py", + "source_location": "L51", + "community": 573, + "norm_label": "walk()", + "id": "stocks_api_compressor_walk" }, { - "label": ".shouldSummarize()", + "label": "compactValue()", "file_type": "code", - "source_file": "main/app/prometheus/summarizer.py", - "source_location": "L111", - "community": 87, - "norm_label": ".shouldsummarize()", - "id": "prometheus_summarizer_prometheussummarizer_shouldsummarize" + "source_file": "main/app/stocks_api/compressor.py", + "source_location": "L59", + "community": 573, + "norm_label": "compactvalue()", + "id": "stocks_api_compressor_compactvalue" }, { - "label": ".getSummarizableChunk()", + "label": "toColumnar()", "file_type": "code", - "source_file": "main/app/prometheus/summarizer.py", - "source_location": "L117", - "community": 87, - "norm_label": ".getsummarizablechunk()", - "id": "prometheus_summarizer_prometheussummarizer_getsummarizablechunk" + "source_file": "main/app/stocks_api/compressor.py", + "source_location": "L80", + "community": 573, + "norm_label": "tocolumnar()", + "id": "stocks_api_compressor_tocolumnar" }, { - "label": ".consolidate()", + "label": "fixHeaders()", "file_type": "code", - "source_file": "main/app/prometheus/summarizer.py", - "source_location": "L128", - "community": 87, - "norm_label": ".consolidate()", - "id": "prometheus_summarizer_prometheussummarizer_consolidate" + "source_file": "main/app/stocks_api/compressor.py", + "source_location": "L89", + "community": 573, + "norm_label": "fixheaders()", + "id": "stocks_api_compressor_fixheaders" }, { - "label": ".summarize()", + "label": "compactRow()", "file_type": "code", - "source_file": "main/app/prometheus/summarizer.py", - "source_location": "L186", - "community": 87, - "norm_label": ".summarize()", - "id": "prometheus_summarizer_prometheussummarizer_summarize" + "source_file": "main/app/stocks_api/compressor.py", + "source_location": "L98", + "community": 573, + "norm_label": "compactrow()", + "id": "stocks_api_compressor_compactrow" }, { - "label": ".getEpisodes()", + "label": "compactCotations()", "file_type": "code", - "source_file": "main/app/prometheus/summarizer.py", - "source_location": "L237", - "community": 87, - "norm_label": ".getepisodes()", - "id": "prometheus_summarizer_prometheussummarizer_getepisodes" + "source_file": "main/app/stocks_api/compressor.py", + "source_location": "L126", + "community": 573, + "norm_label": "compactcotations()", + "id": "stocks_api_compressor_compactcotations" }, { - "label": "applyUpdate()", + "label": "compressResponse()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L48", - "community": 53, - "norm_label": "applyupdate()", - "id": "prometheus_memory_applyupdate" + "source_file": "main/app/stocks_api/compressor.py", + "source_location": "L160", + "community": 573, + "norm_label": "compressresponse()", + "id": "stocks_api_compressor_compressresponse" }, { - "label": ".mergeEpisodes()", - "file_type": "code", - "source_file": "main/app/prometheus/summarizer.py", - "source_location": "L141", - "community": 87, - "norm_label": ".mergeepisodes()", - "id": "prometheus_summarizer_prometheussummarizer_mergeepisodes" + "label": "2026-07-29-compact-algorithmic-compression.md", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", + "source_location": "L1", + "community": 7, + "norm_label": "2026-07-29-compact-algorithmic-compression.md", + "id": "docs_superpowers_plans_2026_07_29_compact_algorithmic_compression_md" }, { - "label": "Stocks API \u2014 Pandas-First Pattern", + "label": "Algorithmic Compression (`compact.py`) Implementation Plan", "file_type": "document", - "source_file": "AGENTS.md", - "source_location": "L47", - "community": 153, - "norm_label": "stocks api \u2014 pandas-first pattern", - "id": "server_agents_stocks_api_pandas_first_pattern" + "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", + "source_location": "L1", + "community": 7, + "norm_label": "algorithmic compression (`compact.py`) implementation plan", + "id": "plans_2026_07_29_compact_algorithmic_compression_algorithmic_compression_compact_py_implementation_plan" }, { - "label": "Scraper B3 (Xango) \u2014 Batch Data Pipeline", + "label": "Global Constraints", "file_type": "document", - "source_file": "AGENTS.md", - "source_location": "L54", - "community": 153, - "norm_label": "scraper b3 (xango) \u2014 batch data pipeline", - "id": "server_agents_scraper_b3_xango_batch_data_pipeline" + "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", + "source_location": "L11", + "community": 7, + "norm_label": "global constraints", + "id": "plans_2026_07_29_compact_algorithmic_compression_global_constraints" }, { - "label": "Auth/Users \u2014 Dual-Layer Session Security", + "label": "File Structure", "file_type": "document", - "source_file": "AGENTS.md", - "source_location": "L60", - "community": 153, - "norm_label": "auth/users \u2014 dual-layer session security", - "id": "server_agents_auth_users_dual_layer_session_security" + "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", + "source_location": "L28", + "community": 7, + "norm_label": "file structure", + "id": "plans_2026_07_29_compact_algorithmic_compression_file_structure" }, { - "label": "Key Quirks", + "label": "Task 1: Create `compact.py` \u2014 FieldRegistry + Extraction Engine", "file_type": "document", - "source_file": "AGENTS.md", - "source_location": "L66", - "community": 153, - "norm_label": "key quirks", - "id": "server_agents_key_quirks" + "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", + "source_location": "L39", + "community": 7, + "norm_label": "task 1: create `compact.py` \u2014 fieldregistry + extraction engine", + "id": "plans_2026_07_29_compact_algorithmic_compression_task_1_create_compact_py_fieldregistry_extraction_engine" }, { - "label": "Prometheus (AI Chat) \u2014 Strengths & Gaps", + "label": "code:python (# main/app/prometheus/compact.py)", "file_type": "document", - "source_file": "AGENTS.md", - "source_location": "L76", - "community": 153, - "norm_label": "prometheus (ai chat) \u2014 strengths & gaps", - "id": "server_agents_prometheus_ai_chat_strengths_gaps" + "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", + "source_location": "L51", + "community": 7, + "norm_label": "code:python (# main/app/prometheus/compact.py)", + "id": "plans_2026_07_29_compact_algorithmic_compression_codeblock_1" }, { - "label": "What It Does Well", + "label": "code:bash (python -c \")", "file_type": "document", - "source_file": "AGENTS.md", - "source_location": "L78", - "community": 153, - "norm_label": "what it does well", - "id": "server_agents_what_it_does_well" + "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", + "source_location": "L241", + "community": 7, + "norm_label": "code:bash (python -c \")", + "id": "plans_2026_07_29_compact_algorithmic_compression_codeblock_2" }, { - "label": "What It Should Be Doing (Gaps)", + "label": "code:python (# tests/test_compact.py)", "file_type": "document", - "source_file": "AGENTS.md", - "source_location": "L85", - "community": 153, - "norm_label": "what it should be doing (gaps)", - "id": "server_agents_what_it_should_be_doing_gaps" + "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", + "source_location": "L278", + "community": 7, + "norm_label": "code:python (# tests/test_compact.py)", + "id": "plans_2026_07_29_compact_algorithmic_compression_codeblock_3" }, { - "label": "Pandas-First Approach (80%+ Rule)", + "label": "code:bash (pytest tests/test_compact.py -v)", "file_type": "document", - "source_file": "AGENTS.md", - "source_location": "L91", - "community": 153, - "norm_label": "pandas-first approach (80%+ rule)", - "id": "server_agents_pandas_first_approach_80_rule" + "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", + "source_location": "L419", + "community": 7, + "norm_label": "code:bash (pytest tests/test_compact.py -v)", + "id": "plans_2026_07_29_compact_algorithmic_compression_codeblock_4" }, { - "label": "Memory Keys", + "label": "code:bash (git add main/app/prometheus/compact.py tests/test_compact.py)", "file_type": "document", - "source_file": "AGENTS.md", - "source_location": "L97", - "community": 153, - "norm_label": "memory keys", - "id": "server_agents_memory_keys" + "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", + "source_location": "L427", + "community": 7, + "norm_label": "code:bash (git add main/app/prometheus/compact.py tests/test_compact.py)", + "id": "plans_2026_07_29_compact_algorithmic_compression_codeblock_5" }, { - "label": "tokenizer.py", - "file_type": "code", - "source_file": "main/app/prometheus/tokenizer.py", - "source_location": "L1", - "community": 87, - "norm_label": "tokenizer.py", - "id": "main_app_prometheus_tokenizer_py" + "label": "Task 2: Create `compact.py` \u2014 `PrometheusCompactor` Class", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", + "source_location": "L434", + "community": 7, + "norm_label": "task 2: create `compact.py` \u2014 `prometheuscompactor` class", + "id": "plans_2026_07_29_compact_algorithmic_compression_task_2_create_compact_py_prometheuscompactor_class" }, { - "label": "_get_tokenizer()", - "file_type": "code", - "source_file": "main/app/prometheus/tokenizer.py", - "source_location": "L10", - "community": 87, - "norm_label": "_get_tokenizer()", - "id": "prometheus_tokenizer_get_tokenizer" + "label": "code:python (class PrometheusCompactor:)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", + "source_location": "L448", + "community": 7, + "norm_label": "code:python (class prometheuscompactor:)", + "id": "plans_2026_07_29_compact_algorithmic_compression_codeblock_6" }, { - "label": "countTokens()", - "file_type": "code", - "source_file": "main/app/prometheus/tokenizer.py", - "source_location": "L17", - "community": 87, - "norm_label": "counttokens()", - "id": "prometheus_tokenizer_counttokens" + "label": "code:python (from unittest.mock import MagicMock, patch)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", + "source_location": "L575", + "community": 7, + "norm_label": "code:python (from unittest.mock import magicmock, patch)", + "id": "plans_2026_07_29_compact_algorithmic_compression_codeblock_7" }, { - "label": "Count tokens using Gemini's local tokenizer. Accurate for Portuguese.", - "file_type": "rationale", - "source_file": "main/app/prometheus/tokenizer.py", - "source_location": "L18", - "community": 87, - "norm_label": "count tokens using gemini's local tokenizer. accurate for portuguese.", - "id": "prometheus_tokenizer_rationale_18" + "label": "code:bash (pytest tests/test_compact.py -v)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", + "source_location": "L641", + "community": 7, + "norm_label": "code:bash (pytest tests/test_compact.py -v)", + "id": "plans_2026_07_29_compact_algorithmic_compression_codeblock_8" }, { - "label": "2026-07-19-stocks-api-perf.md", + "label": "code:bash (git add main/app/prometheus/compact.py tests/test_compact.py)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", - "source_location": "L1", - "community": 64, - "norm_label": "2026-07-19-stocks-api-perf.md", - "id": "docs_superpowers_plans_2026_07_19_stocks_api_perf_md" + "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", + "source_location": "L649", + "community": 7, + "norm_label": "code:bash (git add main/app/prometheus/compact.py tests/test_compact.py)", + "id": "plans_2026_07_29_compact_algorithmic_compression_codeblock_9" }, { - "label": "Stocks API Performance Optimization Plan", + "label": "Task 3: Integrate `compact.py` into Agent", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", - "source_location": "L1", - "community": 64, - "norm_label": "stocks api performance optimization plan", - "id": "plans_2026_07_19_stocks_api_perf_stocks_api_performance_optimization_plan" + "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", + "source_location": "L656", + "community": 7, + "norm_label": "task 3: integrate `compact.py` into agent", + "id": "plans_2026_07_29_compact_algorithmic_compression_task_3_integrate_compact_py_into_agent" }, { - "label": "Global Constraints", + "label": "code:python (# Before:)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", - "source_location": "L11", - "community": 64, - "norm_label": "global constraints", - "id": "plans_2026_07_19_stocks_api_perf_global_constraints" + "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", + "source_location": "L668", + "community": 7, + "norm_label": "code:python (# before:)", + "id": "plans_2026_07_29_compact_algorithmic_compression_codeblock_10" }, { - "label": "Task 1: Cache `categorizeColumns()` at build time", + "label": "code:python (# Before:)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", - "source_location": "L22", - "community": 64, - "norm_label": "task 1: cache `categorizecolumns()` at build time", - "id": "plans_2026_07_19_stocks_api_perf_task_1_cache_categorizecolumns_at_build_time" + "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", + "source_location": "L679", + "community": 7, + "norm_label": "code:python (# before:)", + "id": "plans_2026_07_29_compact_algorithmic_compression_codeblock_11" }, { - "label": "code:python (class StocksCacheManager:)", + "label": "code:python (# Before:)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", - "source_location": "L34", - "community": 64, - "norm_label": "code:python (class stockscachemanager:)", - "id": "plans_2026_07_19_stocks_api_perf_codeblock_1" + "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", + "source_location": "L704", + "community": 7, + "norm_label": "code:python (# before:)", + "id": "plans_2026_07_29_compact_algorithmic_compression_codeblock_12" }, { - "label": "code:python (from main.app.stocks_api.util import categorizeColumns)", + "label": "code:bash (pytest tests/ -k \"prometheus\" -v)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", - "source_location": "L47", - "community": 64, - "norm_label": "code:python (from main.app.stocks_api.util import categorizecolumns)", - "id": "plans_2026_07_19_stocks_api_perf_codeblock_2" + "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", + "source_location": "L714", + "community": 7, + "norm_label": "code:bash (pytest tests/ -k \"prometheus\" -v)", + "id": "plans_2026_07_29_compact_algorithmic_compression_codeblock_13" }, { - "label": "code:python (# BEFORE (line 133):)", + "label": "code:bash (git add main/app/prometheus/agent.py)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", - "source_location": "L64", - "community": 64, - "norm_label": "code:python (# before (line 133):)", - "id": "plans_2026_07_19_stocks_api_perf_codeblock_3" + "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", + "source_location": "L722", + "community": 7, + "norm_label": "code:bash (git add main/app/prometheus/agent.py)", + "id": "plans_2026_07_29_compact_algorithmic_compression_codeblock_14" }, { - "label": "code:python (# BEFORE (line 213):)", + "label": "Task 4: Rename Legacy Summarizer", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", - "source_location": "L74", - "community": 64, - "norm_label": "code:python (# before (line 213):)", - "id": "plans_2026_07_19_stocks_api_perf_codeblock_4" + "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", + "source_location": "L729", + "community": 7, + "norm_label": "task 4: rename legacy summarizer", + "id": "plans_2026_07_29_compact_algorithmic_compression_task_4_rename_legacy_summarizer" }, { - "label": "code:python (def getAbbr() -> dict:)", + "label": "code:bash (git mv main/app/prometheus/summarizer.py main/app/prometheus)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", - "source_location": "L86", - "community": 64, - "norm_label": "code:python (def getabbr() -> dict:)", - "id": "plans_2026_07_19_stocks_api_perf_codeblock_5" + "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", + "source_location": "L736", + "community": 7, + "norm_label": "code:bash (git mv main/app/prometheus/summarizer.py main/app/prometheus)", + "id": "plans_2026_07_29_compact_algorithmic_compression_codeblock_15" }, { - "label": "code:python (# BEFORE:)", + "label": "code:bash (grep -r \"from main.app.prometheus.summarizer\" main/ tests/)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", - "source_location": "L102", - "community": 64, - "norm_label": "code:python (# before:)", - "id": "plans_2026_07_19_stocks_api_perf_codeblock_6" + "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", + "source_location": "L742", + "community": 7, + "norm_label": "code:bash (grep -r \"from main.app.prometheus.summarizer\" main/ tests/)", + "id": "plans_2026_07_29_compact_algorithmic_compression_codeblock_16" }, { - "label": "code:bash (python -m pytest tests/ -q)", + "label": "code:bash (pytest tests/ -v)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", - "source_location": "L112", - "community": 64, - "norm_label": "code:bash (python -m pytest tests/ -q)", - "id": "plans_2026_07_19_stocks_api_perf_codeblock_7" + "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", + "source_location": "L750", + "community": 7, + "norm_label": "code:bash (pytest tests/ -v)", + "id": "plans_2026_07_29_compact_algorithmic_compression_codeblock_17" }, { - "label": "code:bash (git add main/app/stocks_api/cache.py main/app/stocks_api/que)", + "label": "code:bash (git add main/app/prometheus/_summarizer_legacy.py)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", - "source_location": "L118", - "community": 64, - "norm_label": "code:bash (git add main/app/stocks_api/cache.py main/app/stocks_api/que)", - "id": "plans_2026_07_19_stocks_api_perf_codeblock_8" + "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", + "source_location": "L758", + "community": 7, + "norm_label": "code:bash (git add main/app/prometheus/_summarizer_legacy.py)", + "id": "plans_2026_07_29_compact_algorithmic_compression_codeblock_18" }, { - "label": "Task 2: Vectorize `filterCotationColumn()`", + "label": "Task 5: End-to-End Verification", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", - "source_location": "L125", - "community": 64, - "norm_label": "task 2: vectorize `filtercotationcolumn()`", - "id": "plans_2026_07_19_stocks_api_perf_task_2_vectorize_filtercotationcolumn" + "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", + "source_location": "L765", + "community": 7, + "norm_label": "task 5: end-to-end verification", + "id": "plans_2026_07_29_compact_algorithmic_compression_task_5_end_to_end_verification" }, { - "label": "code:python (def filterCotationColumn(series: pd.Series, startDate, endDa)", + "label": "code:bash (.\\ci.ps1)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", - "source_location": "L136", - "community": 64, - "norm_label": "code:python (def filtercotationcolumn(series: pd.series, startdate, endda)", - "id": "plans_2026_07_19_stocks_api_perf_codeblock_9" + "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", + "source_location": "L772", + "community": 7, + "norm_label": "code:bash (.\\ci.ps1)", + "id": "plans_2026_07_29_compact_algorithmic_compression_codeblock_19" }, { - "label": "code:bash (python -m pytest tests/test_stocks*.py -q)", + "label": "code:python (python -c \")", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", - "source_location": "L172", - "community": 64, - "norm_label": "code:bash (python -m pytest tests/test_stocks*.py -q)", - "id": "plans_2026_07_19_stocks_api_perf_codeblock_10" + "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", + "source_location": "L780", + "community": 7, + "norm_label": "code:python (python -c \")", + "id": "plans_2026_07_29_compact_algorithmic_compression_codeblock_20" }, { - "label": "code:bash (git add main/app/stocks_api/query.py)", + "label": "code:bash (git add -A)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", - "source_location": "L178", - "community": 64, - "norm_label": "code:bash (git add main/app/stocks_api/query.py)", - "id": "plans_2026_07_19_stocks_api_perf_codeblock_11" + "source_file": "docs/superpowers/plans/2026-07-29-compact-algorithmic-compression.md", + "source_location": "L824", + "community": 7, + "norm_label": "code:bash (git add -a)", + "id": "plans_2026_07_29_compact_algorithmic_compression_codeblock_21" }, { - "label": "Task 3: Vectorize `filterBySearchTerms()` fallback", + "label": "2026-07-29-prometheus-performance.md", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", - "source_location": "L185", - "community": 64, - "norm_label": "task 3: vectorize `filterbysearchterms()` fallback", - "id": "plans_2026_07_19_stocks_api_perf_task_3_vectorize_filterbysearchterms_fallback" + "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", + "source_location": "L1", + "community": 118, + "norm_label": "2026-07-29-prometheus-performance.md", + "id": "docs_superpowers_plans_2026_07_29_prometheus_performance_md" }, { - "label": "code:python (def filterBySearchTerms(self, df: pd.DataFrame, search: str))", + "label": "Prometheus Performance: Connection Pooling + Caching + Pre-fetch", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", - "source_location": "L194", - "community": 64, - "norm_label": "code:python (def filterbysearchterms(self, df: pd.dataframe, search: str))", - "id": "plans_2026_07_19_stocks_api_perf_codeblock_12" + "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", + "source_location": "L1", + "community": 118, + "norm_label": "prometheus performance: connection pooling + caching + pre-fetch", + "id": "plans_2026_07_29_prometheus_performance_prometheus_performance_connection_pooling_caching_pre_fetch" }, { - "label": "code:bash (python -m pytest tests/test_stocks*.py -q)", + "label": "Global Constraints", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", - "source_location": "L219", - "community": 64, - "norm_label": "code:bash (python -m pytest tests/test_stocks*.py -q)", - "id": "plans_2026_07_19_stocks_api_perf_codeblock_13" + "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", + "source_location": "L11", + "community": 118, + "norm_label": "global constraints", + "id": "plans_2026_07_29_prometheus_performance_global_constraints" }, { - "label": "code:bash (git add main/app/stocks_api/query.py)", + "label": "Why Cache in stocks_api (Not Prometheus)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", - "source_location": "L225", - "community": 64, - "norm_label": "code:bash (git add main/app/stocks_api/query.py)", - "id": "plans_2026_07_19_stocks_api_perf_codeblock_14" + "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", + "source_location": "L22", + "community": 118, + "norm_label": "why cache in stocks_api (not prometheus)", + "id": "plans_2026_07_29_prometheus_performance_why_cache_in_stocks_api_not_prometheus" }, { - "label": "Task 4: Batch JSON deserialization in `deserializeJsonColumns()`", + "label": "File Structure", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", - "source_location": "L232", - "community": 64, - "norm_label": "task 4: batch json deserialization in `deserializejsoncolumns()`", - "id": "plans_2026_07_19_stocks_api_perf_task_4_batch_json_deserialization_in_deserializejsoncolumns" + "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", + "source_location": "L30", + "community": 118, + "norm_label": "file structure", + "id": "plans_2026_07_29_prometheus_performance_file_structure" }, { - "label": "code:python (def deserializeJsonColumns(self, df: pd.DataFrame) -> pd.Dat)", + "label": "Task 1: Create ResponseCache in stocks_api", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", - "source_location": "L241", - "community": 64, - "norm_label": "code:python (def deserializejsoncolumns(self, df: pd.dataframe) -> pd.dat)", - "id": "plans_2026_07_19_stocks_api_perf_codeblock_15" + "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", + "source_location": "L42", + "community": 118, + "norm_label": "task 1: create responsecache in stocks_api", + "id": "plans_2026_07_29_prometheus_performance_task_1_create_responsecache_in_stocks_api" }, { - "label": "code:bash (python -m pytest tests/test_stocks*.py -q)", + "label": "code:python (# tests/test_stocks_api_response_cache.py)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", - "source_location": "L283", - "community": 64, - "norm_label": "code:bash (python -m pytest tests/test_stocks*.py -q)", - "id": "plans_2026_07_19_stocks_api_perf_codeblock_16" + "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", + "source_location": "L54", + "community": 118, + "norm_label": "code:python (# tests/test_stocks_api_response_cache.py)", + "id": "plans_2026_07_29_prometheus_performance_codeblock_1" }, { - "label": "code:bash (git add main/app/stocks_api/query.py)", + "label": "code:python (# main/app/stocks_api/response_cache.py)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", - "source_location": "L289", - "community": 64, - "norm_label": "code:bash (git add main/app/stocks_api/query.py)", - "id": "plans_2026_07_19_stocks_api_perf_codeblock_17" + "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", + "source_location": "L105", + "community": 118, + "norm_label": "code:python (# main/app/stocks_api/response_cache.py)", + "id": "plans_2026_07_29_prometheus_performance_codeblock_2" }, { - "label": "Task 5: Pre-materialize per-ticker orjson bytes", + "label": "code:bash (git add main/app/stocks_api/response_cache.py tests/test_sto)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", - "source_location": "L296", - "community": 64, - "norm_label": "task 5: pre-materialize per-ticker orjson bytes", - "id": "plans_2026_07_19_stocks_api_perf_task_5_pre_materialize_per_ticker_orjson_bytes" + "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", + "source_location": "L178", + "community": 118, + "norm_label": "code:bash (git add main/app/stocks_api/response_cache.py tests/test_sto)", + "id": "plans_2026_07_29_prometheus_performance_codeblock_3" }, { - "label": "code:python (class StocksCacheManager:)", + "label": "Task 2: Integrate ResponseCache into stocksapi_controller", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", - "source_location": "L305", - "community": 64, - "norm_label": "code:python (class stockscachemanager:)", - "id": "plans_2026_07_19_stocks_api_perf_codeblock_18" + "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", + "source_location": "L185", + "community": 118, + "norm_label": "task 2: integrate responsecache into stocksapi_controller", + "id": "plans_2026_07_29_prometheus_performance_task_2_integrate_responsecache_into_stocksapi_controller" }, { - "label": "code:python (def getCachedStocks(self, columns: list[str] | None = None, )", + "label": "code:python (from main.app.stocks_api.response_cache import ResponseCache)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", - "source_location": "L324", - "community": 64, - "norm_label": "code:python (def getcachedstocks(self, columns: list[str] | none = none, )", - "id": "plans_2026_07_19_stocks_api_perf_codeblock_19" + "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", + "source_location": "L203", + "community": 118, + "norm_label": "code:python (from main.app.stocks_api.response_cache import responsecache)", + "id": "plans_2026_07_29_prometheus_performance_codeblock_4" }, { - "label": "code:python (def getTickerHistorical(self, ticker: str) -> bytes | None:)", + "label": "code:python (# Before the query call, add cache check:)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", - "source_location": "L378", - "community": 64, - "norm_label": "code:python (def gettickerhistorical(self, ticker: str) -> bytes | none:)", - "id": "plans_2026_07_19_stocks_api_perf_codeblock_20" + "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", + "source_location": "L213", + "community": 118, + "norm_label": "code:python (# before the query call, add cache check:)", + "id": "plans_2026_07_29_prometheus_performance_codeblock_5" }, { - "label": "code:bash (python -m pytest tests/test_stocks*.py -q)", + "label": "code:bash (git add main/controller/stocksapi_controller.py)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", - "source_location": "L392", - "community": 64, - "norm_label": "code:bash (python -m pytest tests/test_stocks*.py -q)", - "id": "plans_2026_07_19_stocks_api_perf_codeblock_21" + "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", + "source_location": "L247", + "community": 118, + "norm_label": "code:bash (git add main/controller/stocksapi_controller.py)", + "id": "plans_2026_07_29_prometheus_performance_codeblock_6" }, { - "label": "code:bash (git add main/app/stocks_api/cache.py)", + "label": "Task 3: Create MCPClientPool \u2014 `mcp.py`", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", - "source_location": "L398", - "community": 64, - "norm_label": "code:bash (git add main/app/stocks_api/cache.py)", - "id": "plans_2026_07_19_stocks_api_perf_codeblock_22" + "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", + "source_location": "L254", + "community": 118, + "norm_label": "task 3: create mcpclientpool \u2014 `mcp.py`", + "id": "plans_2026_07_29_prometheus_performance_task_3_create_mcpclientpool_mcp_py" }, { - "label": "Task 6: Full CI verification", + "label": "code:python (# tests/test_mcp_pool.py)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", - "source_location": "L405", - "community": 64, - "norm_label": "task 6: full ci verification", - "id": "plans_2026_07_19_stocks_api_perf_task_6_full_ci_verification" + "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", + "source_location": "L266", + "community": 118, + "norm_label": "code:python (# tests/test_mcp_pool.py)", + "id": "plans_2026_07_29_prometheus_performance_codeblock_7" }, { - "label": "code:bash (.\\ci.ps1 -Fast)", + "label": "code:python (# main/app/prometheus/mcp.py)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", - "source_location": "L409", - "community": 64, - "norm_label": "code:bash (.\\ci.ps1 -fast)", - "id": "plans_2026_07_19_stocks_api_perf_codeblock_23" + "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", + "source_location": "L292", + "community": 118, + "norm_label": "code:python (# main/app/prometheus/mcp.py)", + "id": "plans_2026_07_29_prometheus_performance_codeblock_8" }, { - "label": "2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "label": "code:bash (git add main/app/prometheus/mcp.py tests/test_mcp_pool.py)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L1", - "community": 182, - "norm_label": "2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "id": "docs_superpowers_plans_2026_07_22_mem0_vs_prometheus_memory_comparison_md" + "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", + "source_location": "L388", + "community": 118, + "norm_label": "code:bash (git add main/app/prometheus/mcp.py tests/test_mcp_pool.py)", + "id": "plans_2026_07_29_prometheus_performance_codeblock_9" }, { - "label": "Mem0 vs Prometheus Memory System \u2014 Comparison & Upgrade Plan", + "label": "Task 4: Integrate Pool + Pre-fetch into agent.py", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L1", - "community": 182, - "norm_label": "mem0 vs prometheus memory system \u2014 comparison & upgrade plan", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_mem0_vs_prometheus_memory_system_comparison_upgrade_plan" + "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", + "source_location": "L395", + "community": 118, + "norm_label": "task 4: integrate pool + pre-fetch into agent.py", + "id": "plans_2026_07_29_prometheus_performance_task_4_integrate_pool_pre_fetch_into_agent_py" }, { - "label": "Executive Summary: What Mem0 Does That We Don't", + "label": "code:python (def warmup(self):)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L13", - "community": 182, - "norm_label": "executive summary: what mem0 does that we don't", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_executive_summary_what_mem0_does_that_we_don_t" + "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", + "source_location": "L410", + "community": 118, + "norm_label": "code:python (def warmup(self):)", + "id": "plans_2026_07_29_prometheus_performance_codeblock_10" }, { - "label": "What We Already Do Well (Don't Replace)", + "label": "code:python (from main.app.prometheus.mcp import MCPClientPool)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L30", - "community": 182, - "norm_label": "what we already do well (don't replace)", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_what_we_already_do_well_don_t_replace" + "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", + "source_location": "L420", + "community": 118, + "norm_label": "code:python (from main.app.prometheus.mcp import mcpclientpool)", + "id": "plans_2026_07_29_prometheus_performance_codeblock_11" }, { - "label": "What We Should Adopt from Mem0", + "label": "code:python (mcpClients, sessions = await MCPClientPool().getClients())", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L42", - "community": 485, - "norm_label": "what we should adopt from mem0", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_what_we_should_adopt_from_mem0" + "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", + "source_location": "L430", + "community": 118, + "norm_label": "code:python (mcpclients, sessions = await mcpclientpool().getclients())", + "id": "plans_2026_07_29_prometheus_performance_codeblock_12" }, { - "label": "Priority 1: Fix Critical Gaps", + "label": "code:python (if MCPClientPool().clients is None:)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L44", - "community": 485, - "norm_label": "priority 1: fix critical gaps", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_priority_1_fix_critical_gaps" + "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", + "source_location": "L440", + "community": 118, + "norm_label": "code:python (if mcpclientpool().clients is none:)", + "id": "plans_2026_07_29_prometheus_performance_codeblock_13" }, { - "label": "Priority 2: Improve Retrieval", + "label": "code:bash (git add main/app/prometheus/agent.py main/app/prometheus/com)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L63", - "community": 485, - "norm_label": "priority 2: improve retrieval", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_priority_2_improve_retrieval" + "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", + "source_location": "L461", + "community": 118, + "norm_label": "code:bash (git add main/app/prometheus/agent.py main/app/prometheus/com)", + "id": "plans_2026_07_29_prometheus_performance_codeblock_14" }, { - "label": "Priority 3: Lifecycle Improvements", + "label": "2026-07-29-stocks-api-perf-optimizations.md", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L83", - "community": 485, - "norm_label": "priority 3: lifecycle improvements", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_priority_3_lifecycle_improvements" + "source_file": "docs/superpowers/plans/2026-07-29-stocks-api-perf-optimizations.md", + "source_location": "L1", + "community": 9, + "norm_label": "2026-07-29-stocks-api-perf-optimizations.md", + "id": "docs_superpowers_plans_2026_07_29_stocks_api_perf_optimizations_md" }, { - "label": "Architectural Decisions", + "label": "Stocks API Performance Optimizations Implementation Plan", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L98", - "community": 192, - "norm_label": "architectural decisions", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_architectural_decisions" + "source_file": "docs/superpowers/plans/2026-07-29-stocks-api-perf-optimizations.md", + "source_location": "L1", + "community": 9, + "norm_label": "stocks api performance optimizations implementation plan", + "id": "plans_2026_07_29_stocks_api_perf_optimizations_stocks_api_performance_optimizations_implementation_plan" }, { - "label": "Decision 1: Keep MySQL, Don't Add a Vector DB", + "label": "Global Constraints", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L100", - "community": 192, - "norm_label": "decision 1: keep mysql, don't add a vector db", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_decision_1_keep_mysql_don_t_add_a_vector_db" + "source_file": "docs/superpowers/plans/2026-07-29-stocks-api-perf-optimizations.md", + "source_location": "L11", + "community": 9, + "norm_label": "global constraints", + "id": "plans_2026_07_29_stocks_api_perf_optimizations_global_constraints" }, { - "label": "Decision 2: Keep Our Extraction, Don't Use LLM Distillation", + "label": "Task 1: Vectorize filterCotationColumn with explode()", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L103", - "community": 192, - "norm_label": "decision 2: keep our extraction, don't use llm distillation", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_decision_2_keep_our_extraction_don_t_use_llm_distillation" + "source_file": "docs/superpowers/plans/2026-07-29-stocks-api-perf-optimizations.md", + "source_location": "L22", + "community": 9, + "norm_label": "task 1: vectorize filtercotationcolumn with explode()", + "id": "plans_2026_07_29_stocks_api_perf_optimizations_task_1_vectorize_filtercotationcolumn_with_explode" }, { - "label": "Decision 3: Add Graph Memory as MySQL Tables", + "label": "code:python (def filterCotationColumn(series: pd.Series, startDate, endDa)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L106", - "community": 192, - "norm_label": "decision 3: add graph memory as mysql tables", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_decision_3_add_graph_memory_as_mysql_tables" + "source_file": "docs/superpowers/plans/2026-07-29-stocks-api-perf-optimizations.md", + "source_location": "L35", + "community": 9, + "norm_label": "code:python (def filtercotationcolumn(series: pd.series, startdate, endda)", + "id": "plans_2026_07_29_stocks_api_perf_optimizations_codeblock_1" }, { - "label": "Decision 4: Use google-genai LocalTokenizer, Not tiktoken", + "label": "code:bash (git add main/app/stocks_api/query.py)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L109", - "community": 192, - "norm_label": "decision 4: use google-genai localtokenizer, not tiktoken", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_decision_4_use_google_genai_localtokenizer_not_tiktoken" + "source_file": "docs/superpowers/plans/2026-07-29-stocks-api-perf-optimizations.md", + "source_location": "L62", + "community": 9, + "norm_label": "code:bash (git add main/app/stocks_api/query.py)", + "id": "plans_2026_07_29_stocks_api_perf_optimizations_codeblock_2" }, { - "label": "Decision 5: INT8 ONNX, Don't Quantize Ourselves", + "label": "Task 2: Pre-computed date index for O(1) range checks", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L112", - "community": 192, - "norm_label": "decision 5: int8 onnx, don't quantize ourselves", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_decision_5_int8_onnx_don_t_quantize_ourselves" + "source_file": "docs/superpowers/plans/2026-07-29-stocks-api-perf-optimizations.md", + "source_location": "L69", + "community": 9, + "norm_label": "task 2: pre-computed date index for o(1) range checks", + "id": "plans_2026_07_29_stocks_api_perf_optimizations_task_2_pre_computed_date_index_for_o_1_range_checks" }, { - "label": "File Structure", + "label": "code:python (def buildCotationDateIndex(df: pd.DataFrame, col: str = \"COT)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L117", - "community": 182, - "norm_label": "file structure", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_file_structure" + "source_file": "docs/superpowers/plans/2026-07-29-stocks-api-perf-optimizations.md", + "source_location": "L83", + "community": 9, + "norm_label": "code:python (def buildcotationdateindex(df: pd.dataframe, col: str = \"cot)", + "id": "plans_2026_07_29_stocks_api_perf_optimizations_codeblock_3" }, { - "label": "code:block1 (main/)", + "label": "code:python (def filterCotationColumn(series: pd.Series, startDate, endDa)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L119", - "community": 182, - "norm_label": "code:block1 (main/)", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_1" + "source_file": "docs/superpowers/plans/2026-07-29-stocks-api-perf-optimizations.md", + "source_location": "L102", + "community": 9, + "norm_label": "code:python (def filtercotationcolumn(series: pd.series, startdate, endda)", + "id": "plans_2026_07_29_stocks_api_perf_optimizations_codeblock_4" }, { - "label": "Task 1: INT8 Embedding Model", + "label": "code:bash (git add main/app/stocks_api/cache.py main/app/stocks_api/que)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L136", - "community": 479, - "norm_label": "task 1: int8 embedding model", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_task_1_int8_embedding_model" + "source_file": "docs/superpowers/plans/2026-07-29-stocks-api-perf-optimizations.md", + "source_location": "L145", + "community": 9, + "norm_label": "code:bash (git add main/app/stocks_api/cache.py main/app/stocks_api/que)", + "id": "plans_2026_07_29_stocks_api_perf_optimizations_codeblock_5" }, { - "label": "code:python (def test_embedding_model_uses_int8():)", + "label": "Task 3: Parquet disk cache for faster startup", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L148", - "community": 479, - "norm_label": "code:python (def test_embedding_model_uses_int8():)", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_2" + "source_file": "docs/superpowers/plans/2026-07-29-stocks-api-perf-optimizations.md", + "source_location": "L152", + "community": 9, + "norm_label": "task 3: parquet disk cache for faster startup", + "id": "plans_2026_07_29_stocks_api_perf_optimizations_task_3_parquet_disk_cache_for_faster_startup" }, { - "label": "code:python (# main/utils/models/loader.py)", + "label": "code:python (PARQUET_PATH = Path(__file__).parent / \"stocks_cache.parquet)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_file": "docs/superpowers/plans/2026-07-29-stocks-api-perf-optimizations.md", "source_location": "L165", - "community": 479, - "norm_label": "code:python (# main/utils/models/loader.py)", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_3" + "community": 9, + "norm_label": "code:python (parquet_path = path(__file__).parent / \"stocks_cache.parquet)", + "id": "plans_2026_07_29_stocks_api_perf_optimizations_codeblock_6" }, { - "label": "code:bash (git add main/utils/models/loader.py tests/test_embedding_mod)", + "label": "code:bash (git add main/app/stocks_api/cache.py)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L187", - "community": 479, - "norm_label": "code:bash (git add main/utils/models/loader.py tests/test_embedding_mod)", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_4" + "source_file": "docs/superpowers/plans/2026-07-29-stocks-api-perf-optimizations.md", + "source_location": "L203", + "community": 9, + "norm_label": "code:bash (git add main/app/stocks_api/cache.py)", + "id": "plans_2026_07_29_stocks_api_perf_optimizations_codeblock_7" }, { - "label": "Task 2: Local Token Counting", + "label": "Task 4: Tests for new optimizations", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L194", - "community": 484, - "norm_label": "task 2: local token counting", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_task_2_local_token_counting" + "source_file": "docs/superpowers/plans/2026-07-29-stocks-api-perf-optimizations.md", + "source_location": "L210", + "community": 9, + "norm_label": "task 4: tests for new optimizations", + "id": "plans_2026_07_29_stocks_api_perf_optimizations_task_4_tests_for_new_optimizations" }, { - "label": "code:python (def test_count_tokens_portuguese():)", + "label": "code:python (import pandas as pd)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L208", - "community": 484, - "norm_label": "code:python (def test_count_tokens_portuguese():)", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_5" + "source_file": "docs/superpowers/plans/2026-07-29-stocks-api-perf-optimizations.md", + "source_location": "L221", + "community": 9, + "norm_label": "code:python (import pandas as pd)", + "id": "plans_2026_07_29_stocks_api_perf_optimizations_codeblock_8" }, { - "label": "code:python (# main/app/prometheus/tokenizer.py)", + "label": "code:bash (git add tests/test_stocks_perf.py)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L224", - "community": 484, - "norm_label": "code:python (# main/app/prometheus/tokenizer.py)", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_6" + "source_file": "docs/superpowers/plans/2026-07-29-stocks-api-perf-optimizations.md", + "source_location": "L278", + "community": 9, + "norm_label": "code:bash (git add tests/test_stocks_perf.py)", + "id": "plans_2026_07_29_stocks_api_perf_optimizations_codeblock_9" }, { - "label": "code:bash (git add requirements.txt main/app/prometheus/tokenizer.py te)", + "label": "Task 5: Lint, format, and final verification", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L247", - "community": 484, - "norm_label": "code:bash (git add requirements.txt main/app/prometheus/tokenizer.py te)", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_7" + "source_file": "docs/superpowers/plans/2026-07-29-stocks-api-perf-optimizations.md", + "source_location": "L285", + "community": 9, + "norm_label": "task 5: lint, format, and final verification", + "id": "plans_2026_07_29_stocks_api_perf_optimizations_task_5_lint_format_and_final_verification" }, { - "label": "Task 3: Graph Memory Schema", + "label": "code:bash (git add -A)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L254", - "community": 238, - "norm_label": "task 3: graph memory schema", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_task_3_graph_memory_schema" + "source_file": "docs/superpowers/plans/2026-07-29-stocks-api-perf-optimizations.md", + "source_location": "L302", + "community": 9, + "norm_label": "code:bash (git add -a)", + "id": "plans_2026_07_29_stocks_api_perf_optimizations_codeblock_10" }, { - "label": "code:python (def test_memory_entity_tables_exist():)", + "label": "2026-07-29-prometheus-performance-design.md", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L268", - "community": 238, - "norm_label": "code:python (def test_memory_entity_tables_exist():)", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_8" + "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", + "source_location": "L1", + "community": 143, + "norm_label": "2026-07-29-prometheus-performance-design.md", + "id": "docs_superpowers_specs_2026_07_29_prometheus_performance_design_md" }, { - "label": "code:python (# main/models/memory_entity.py)", + "label": "Prometheus Performance: Connection Pooling + Caching + FieldRegistry Pre-fetch", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L283", - "community": 238, - "norm_label": "code:python (# main/models/memory_entity.py)", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_9" + "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", + "source_location": "L1", + "community": 143, + "norm_label": "prometheus performance: connection pooling + caching + fieldregistry pre-fetch", + "id": "specs_2026_07_29_prometheus_performance_design_prometheus_performance_connection_pooling_caching_fieldregistry_pre_fetch" }, { - "label": "code:bash (git add main/models/memory_entity.py tests/test_memory_entit)", + "label": "Global Constraints", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L324", - "community": 238, - "norm_label": "code:bash (git add main/models/memory_entity.py tests/test_memory_entit)", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_10" + "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", + "source_location": "L12", + "community": 143, + "norm_label": "global constraints", + "id": "specs_2026_07_29_prometheus_performance_design_global_constraints" }, { - "label": "Task 4: Entity Extraction", + "label": "1. Connection Pooling \u2014 `main/app/prometheus/mcp.py`", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L331", - "community": 239, - "norm_label": "task 4: entity extraction", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_task_4_entity_extraction" + "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", + "source_location": "L22", + "community": 143, + "norm_label": "1. connection pooling \u2014 `main/app/prometheus/mcp.py`", + "id": "specs_2026_07_29_prometheus_performance_design_1_connection_pooling_main_app_prometheus_mcp_py" }, { - "label": "code:python (def test_extract_entities():)", + "label": "Problem", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L343", - "community": 239, - "norm_label": "code:python (def test_extract_entities():)", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_11" + "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", + "source_location": "L24", + "community": 143, + "norm_label": "problem", + "id": "specs_2026_07_29_prometheus_performance_design_problem" }, { - "label": "code:python (# main/app/prometheus/entity_extractor.py)", + "label": "Design", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L360", - "community": 239, - "norm_label": "code:python (# main/app/prometheus/entity_extractor.py)", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_12" + "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", + "source_location": "L27", + "community": 143, + "norm_label": "design", + "id": "specs_2026_07_29_prometheus_performance_design_design" }, { - "label": "code:bash (git add main/app/prometheus/entity_extractor.py tests/test_e)", + "label": "code:python (class MCPClientPool:)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L406", - "community": 239, - "norm_label": "code:bash (git add main/app/prometheus/entity_extractor.py tests/test_e)", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_13" + "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", + "source_location": "L30", + "community": 143, + "norm_label": "code:python (class mcpclientpool:)", + "id": "specs_2026_07_29_prometheus_performance_design_codeblock_1" }, { - "label": "Task 5: Graph Memory Operations", + "label": "Integration", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L413", - "community": 262, - "norm_label": "task 5: graph memory operations", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_task_5_graph_memory_operations" + "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", + "source_location": "L57", + "community": 143, + "norm_label": "integration", + "id": "specs_2026_07_29_prometheus_performance_design_integration" }, { - "label": "code:python (def test_link_memory_to_entities(db_session, sample_user):)", + "label": "Edge Cases", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L425", - "community": 262, - "norm_label": "code:python (def test_link_memory_to_entities(db_session, sample_user):)", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_14" + "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", + "source_location": "L63", + "community": 143, + "norm_label": "edge cases", + "id": "specs_2026_07_29_prometheus_performance_design_edge_cases" }, { - "label": "code:python (# Add to main/app/prometheus/memory.py)", + "label": "2. Caching \u2014 `main/app/prometheus/cache.py`", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L449", - "community": 262, - "norm_label": "code:python (# add to main/app/prometheus/memory.py)", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_15" + "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", + "source_location": "L68", + "community": 143, + "norm_label": "2. caching \u2014 `main/app/prometheus/cache.py`", + "id": "specs_2026_07_29_prometheus_performance_design_2_caching_main_app_prometheus_cache_py" }, { - "label": "code:bash (git add main/app/prometheus/memory.py tests/test_memory_grap)", + "label": "Problem", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L499", - "community": 262, - "norm_label": "code:bash (git add main/app/prometheus/memory.py tests/test_memory_grap)", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_16" + "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", + "source_location": "L70", + "community": 143, + "norm_label": "problem", + "id": "specs_2026_07_29_prometheus_performance_design_problem_70" }, { - "label": "Task 6: Hybrid Retrieval", + "label": "Design", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L506", - "community": 478, - "norm_label": "task 6: hybrid retrieval", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_task_6_hybrid_retrieval" + "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", + "source_location": "L73", + "community": 143, + "norm_label": "design", + "id": "specs_2026_07_29_prometheus_performance_design_design_73" }, { - "label": "code:python (def test_hybrid_search_fusion():)", + "label": "code:python (TTL_MAP = {)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L519", - "community": 478, - "norm_label": "code:python (def test_hybrid_search_fusion():)", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_17" + "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", + "source_location": "L76", + "community": 143, + "norm_label": "code:python (ttl_map = {)", + "id": "specs_2026_07_29_prometheus_performance_design_codeblock_2" }, { - "label": "code:python (# main/app/prometheus/hybrid_search.py)", + "label": "Cache Key", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L540", - "community": 478, - "norm_label": "code:python (# main/app/prometheus/hybrid_search.py)", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_18" + "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", + "source_location": "L93", + "community": 143, + "norm_label": "cache key", + "id": "specs_2026_07_29_prometheus_performance_design_cache_key" }, { - "label": "code:bash (git add main/app/prometheus/hybrid_search.py tests/test_hybr)", + "label": "Integration", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L579", - "community": 478, - "norm_label": "code:bash (git add main/app/prometheus/hybrid_search.py tests/test_hybr)", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_19" + "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", + "source_location": "L96", + "community": 143, + "norm_label": "integration", + "id": "specs_2026_07_29_prometheus_performance_design_integration_96" }, { - "label": "Task 7: Temporal Reasoning", + "label": "Edge Cases", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L586", - "community": 480, - "norm_label": "task 7: temporal reasoning", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_task_7_temporal_reasoning" + "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", + "source_location": "L101", + "community": 143, + "norm_label": "edge cases", + "id": "specs_2026_07_29_prometheus_performance_design_edge_cases_101" }, { - "label": "code:python (def test_extract_temporal_info():)", + "label": "3. FieldRegistry Pre-fetch \u2014 `main/app/prometheus/compact.py`", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L600", - "community": 480, - "norm_label": "code:python (def test_extract_temporal_info():)", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_20" + "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", + "source_location": "L106", + "community": 143, + "norm_label": "3. fieldregistry pre-fetch \u2014 `main/app/prometheus/compact.py`", + "id": "specs_2026_07_29_prometheus_performance_design_3_fieldregistry_pre_fetch_main_app_prometheus_compact_py" }, { - "label": "code:python (# main/app/prometheus/temporal.py)", + "label": "Problem", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L615", - "community": 480, - "norm_label": "code:python (# main/app/prometheus/temporal.py)", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_21" + "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", + "source_location": "L108", + "community": 143, + "norm_label": "problem", + "id": "specs_2026_07_29_prometheus_performance_design_problem_108" }, { - "label": "code:bash (git add main/app/prometheus/temporal.py main/models/memory.p)", + "label": "Design", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L649", - "community": 480, - "norm_label": "code:bash (git add main/app/prometheus/temporal.py main/models/memory.p)", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_22" + "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", + "source_location": "L111", + "community": 143, + "norm_label": "design", + "id": "specs_2026_07_29_prometheus_performance_design_design_111" }, { - "label": "Task 8: Session Scoping", + "label": "code:python (def warmup(self):)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L656", - "community": 481, - "norm_label": "task 8: session scoping", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_task_8_session_scoping" + "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", + "source_location": "L114", + "community": 143, + "norm_label": "code:python (def warmup(self):)", + "id": "specs_2026_07_29_prometheus_performance_design_codeblock_3" }, { - "label": "code:python (def test_session_scoped_memory(db_session, sample_user):)", + "label": "Integration", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L670", - "community": 481, - "norm_label": "code:python (def test_session_scoped_memory(db_session, sample_user):)", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_23" + "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", + "source_location": "L120", + "community": 143, + "norm_label": "integration", + "id": "specs_2026_07_29_prometheus_performance_design_integration_120" }, { - "label": "code:python (# Add to main/models/memory.py)", + "label": "Files", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L694", - "community": 481, - "norm_label": "code:python (# add to main/models/memory.py)", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_24" + "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.md", + "source_location": "L124", + "community": 143, + "norm_label": "files", + "id": "specs_2026_07_29_prometheus_performance_design_files" }, { - "label": "code:bash (git add main/models/memory.py main/app/prometheus/memory.py )", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L713", - "community": 481, - "norm_label": "code:bash (git add main/models/memory.py main/app/prometheus/memory.py )", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_25" + "label": "state.py", + "file_type": "code", + "source_file": "main/app/prometheus/state.py", + "source_location": "L1", + "community": 8, + "norm_label": "state.py", + "id": "main_app_prometheus_state_py" }, { - "label": "Task 9: Memory Consolidation", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L720", - "community": 483, - "norm_label": "task 9: memory consolidation", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_task_9_memory_consolidation" + "label": "HarnessState", + "file_type": "code", + "source_file": "main/app/prometheus/state.py", + "source_location": "L6", + "community": 8, + "norm_label": "harnessstate", + "id": "prometheus_state_harnessstate" }, { - "label": "code:python (def test_consolidation_preserves_decisions():)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L733", - "community": 483, - "norm_label": "code:python (def test_consolidation_preserves_decisions():)", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_26" + "label": ".__init__()", + "file_type": "code", + "source_file": "main/app/prometheus/state.py", + "source_location": "L7", + "community": 8, + "norm_label": ".__init__()", + "id": "prometheus_state_harnessstate_init" }, { - "label": "code:python (# Add to main/app/prometheus/summarizer.py)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L754", - "community": 483, - "norm_label": "code:python (# add to main/app/prometheus/summarizer.py)", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_27" + "label": ".get()", + "file_type": "code", + "source_file": "main/app/prometheus/state.py", + "source_location": "L11", + "community": 8, + "norm_label": ".get()", + "id": "prometheus_state_harnessstate_get" }, { - "label": "code:bash (git add main/app/prometheus/summarizer.py tests/test_consoli)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L783", - "community": 483, - "norm_label": "code:bash (git add main/app/prometheus/summarizer.py tests/test_consoli)", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_28" + "label": ".set()", + "file_type": "code", + "source_file": "main/app/prometheus/state.py", + "source_location": "L14", + "community": 215, + "norm_label": ".set()", + "id": "prometheus_state_harnessstate_set" }, { - "label": "Self-Review Checklist", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L790", - "community": 182, - "norm_label": "self-review checklist", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_self_review_checklist" + "label": ".toDict()", + "file_type": "code", + "source_file": "main/app/prometheus/state.py", + "source_location": "L18", + "community": 8, + "norm_label": ".todict()", + "id": "prometheus_state_harnessstate_todict" }, { - "label": "Execution Handoff", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", - "source_location": "L800", - "community": 182, - "norm_label": "execution handoff", - "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_execution_handoff" + "label": ".toContext()", + "file_type": "code", + "source_file": "main/app/prometheus/state.py", + "source_location": "L21", + "community": 8, + "norm_label": ".tocontext()", + "id": "prometheus_state_harnessstate_tocontext" }, { - "label": "Search user's saved memories, preferences, and past analysis context. Use", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L18", - "community": 152, - "norm_label": "search user's saved memories, preferences, and past analysis context. use", - "id": "prometheus_tools_rationale_18" + "label": ".hasChanged()", + "file_type": "code", + "source_file": "main/app/prometheus/state.py", + "source_location": "L26", + "community": 8, + "norm_label": ".haschanged()", + "id": "prometheus_state_harnessstate_haschanged" }, { - "label": "Store a memory about the user's preferences, analysis results, or feedback.", - "file_type": "rationale", + "label": ".resetChanged()", + "file_type": "code", + "source_file": "main/app/prometheus/state.py", + "source_location": "L29", + "community": 8, + "norm_label": ".resetchanged()", + "id": "prometheus_state_harnessstate_resetchanged" + }, + { + "label": ".clear()", + "file_type": "code", + "source_file": "main/app/prometheus/state.py", + "source_location": "L34", + "community": 8, + "norm_label": ".clear()", + "id": "prometheus_state_harnessstate_clear" + }, + { + "label": "get_state()", + "file_type": "code", "source_file": "main/app/prometheus/tools.py", - "source_location": "L44", - "community": 208, - "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", - "id": "prometheus_tools_rationale_44" + "source_location": "L89", + "community": 162, + "norm_label": "get_state()", + "id": "prometheus_tools_get_state" }, { - "label": "Retrieve values from the harness state. Use this to recall intermediate results,", - "file_type": "rationale", + "label": "set_state()", + "file_type": "code", "source_file": "main/app/prometheus/tools.py", - "source_location": "L81", - "community": 8, - "norm_label": "retrieve values from the harness state. use this to recall intermediate results,", - "id": "prometheus_tools_rationale_81" + "source_location": "L104", + "community": 487, + "norm_label": "set_state()", + "id": "prometheus_tools_set_state" }, { "label": "Store a value in the harness state for this session. Use this to save inter", "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", - "source_location": "L96", + "source_location": "L105", "community": 487, "norm_label": "store a value in the harness state for this session. use this to save inter", - "id": "prometheus_tools_rationale_96" + "id": "prometheus_tools_rationale_105" }, { "label": "Execute Python code in an isolated sandbox. Use for quantitative analysis,", "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", - "source_location": "L114", + "source_location": "L123", "community": 487, "norm_label": "execute python code in an isolated sandbox. use for quantitative analysis,", - "id": "prometheus_tools_rationale_114" + "id": "prometheus_tools_rationale_123" }, { - "label": "Write a file to the workspace. Use this to save data files (CSV, JSON, scri", + "label": "Read a file from the workspace. Args: path: Path to the file (e.", "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", - "source_location": "L146", - "community": 523, - "norm_label": "write a file to the workspace. use this to save data files (csv, json, scri", - "id": "prometheus_tools_rationale_146" + "source_location": "L144", + "community": 208, + "norm_label": "read a file from the workspace. args: path: path to the file (e.", + "id": "prometheus_tools_rationale_144" }, { "label": "List files in the workspace directory. Args: path: Directory pat", "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", - "source_location": "L159", - "community": 523, + "source_location": "L168", + "community": 525, "norm_label": "list files in the workspace directory. args: path: directory pat", - "id": "prometheus_tools_rationale_159" + "id": "prometheus_tools_rationale_168" }, { - "label": "PROMETHEUS_REGRADE.md", - "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L1", - "community": 20, - "norm_label": "prometheus_regrade.md", - "id": "prometheus_regrade_md" + "label": "_parseServers()", + "file_type": "code", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L16", + "community": 12, + "norm_label": "_parseservers()", + "id": "prometheus_mcp_parseservers" }, { - "label": "Prometheus Regrade \u2014 Full Code Review", + "label": "email-carefs.md", "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", + "source_file": "email-carefs.md", "source_location": "L1", - "community": 20, - "norm_label": "prometheus regrade \u2014 full code review", - "id": "server_prometheus_regrade_prometheus_regrade_full_code_review" + "community": 496, + "norm_label": "email-carefs.md", + "id": "email_carefs_md" }, { - "label": "Grade Summary", + "label": "checkMySqlConnection()", + "file_type": "code", + "source_file": "main/utils/connectivity.py", + "source_location": "L13", + "community": 59, + "norm_label": "checkmysqlconnection()", + "id": "utils_connectivity_checkmysqlconnection" + }, + { + "label": "1-RS_Mansa.docx.md", "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L10", - "community": 20, - "norm_label": "grade summary", - "id": "server_prometheus_regrade_grade_summary" + "source_file": "1-RS_Mansa.docx.md", + "source_location": "L1", + "community": 91, + "norm_label": "1-rs_mansa.docx.md", + "id": "1_rs_mansa_docx_md" }, { - "label": "1. Memory System (B+)", + "label": "**1 Introdu\u00e7\u00e3o**", "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L25", - "community": 20, - "norm_label": "1. memory system (b+)", - "id": "server_prometheus_regrade_1_memory_system_b" + "source_file": "1-RS_Mansa.docx.md", + "source_location": "L35", + "community": 91, + "norm_label": "**1 introducao**", + "id": "server_1_rs_mansa_docx_1_introdu\u00e7\u00e3o" }, { - "label": "What's Good", + "label": "**2 Escopo**", "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L27", - "community": 20, - "norm_label": "what's good", - "id": "server_prometheus_regrade_what_s_good" + "source_file": "1-RS_Mansa.docx.md", + "source_location": "L41", + "community": 91, + "norm_label": "**2 escopo**", + "id": "server_1_rs_mansa_docx_2_escopo" }, { - "label": "Bugs Found", + "label": "**3 Descri\u00e7\u00e3o do Projeto**", "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L37", - "community": 20, - "norm_label": "bugs found", - "id": "server_prometheus_regrade_bugs_found" + "source_file": "1-RS_Mansa.docx.md", + "source_location": "L47", + "community": 91, + "norm_label": "**3 descricao do projeto**", + "id": "server_1_rs_mansa_docx_3_descri\u00e7\u00e3o_do_projeto" }, { - "label": "Recommendations", + "label": "**5.1 \u2014 Autentica\u00e7\u00e3o e Gerenciamento de Usu\u00e1rios**", "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L42", - "community": 20, - "norm_label": "recommendations", - "id": "server_prometheus_regrade_recommendations" + "source_file": "1-RS_Mansa.docx.md", + "source_location": "L70", + "community": 91, + "norm_label": "**5.1 \u2014 autenticacao e gerenciamento de usuarios**", + "id": "server_1_rs_mansa_docx_5_1_autentica\u00e7\u00e3o_e_gerenciamento_de_usu\u00e1rios" }, { - "label": "2. Summarizer/Episodes (B)", + "label": "**5.2 \u2014 Stocks API \u2014 Dados Financeiros**", "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L49", - "community": 20, - "norm_label": "2. summarizer/episodes (b)", - "id": "server_prometheus_regrade_2_summarizer_episodes_b" + "source_file": "1-RS_Mansa.docx.md", + "source_location": "L86", + "community": 91, + "norm_label": "**5.2 \u2014 stocks api \u2014 dados financeiros**", + "id": "server_1_rs_mansa_docx_5_2_stocks_api_dados_financeiros" }, { - "label": "What's Good", + "label": "**5.3 \u2014 Prometheus \u2014 Chatbot Financeiro com IA**", "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L51", - "community": 20, - "norm_label": "what's good", - "id": "server_prometheus_regrade_what_s_good_51" + "source_file": "1-RS_Mansa.docx.md", + "source_location": "L100", + "community": 91, + "norm_label": "**5.3 \u2014 prometheus \u2014 chatbot financeiro com ia**", + "id": "server_1_rs_mansa_docx_5_3_prometheus_chatbot_financeiro_com_ia" }, { - "label": "Issues Found", + "label": "**5.4 \u2014 Scraper B3 \u2014 Coleta de Dados**", "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L59", - "community": 20, - "norm_label": "issues found", - "id": "server_prometheus_regrade_issues_found" + "source_file": "1-RS_Mansa.docx.md", + "source_location": "L118", + "community": 91, + "norm_label": "**5.4 \u2014 scraper b3 \u2014 coleta de dados**", + "id": "server_1_rs_mansa_docx_5_4_scraper_b3_coleta_de_dados" }, { - "label": "Recommendations", + "label": "**5.5 \u2014 Thoth \u2014 Gest\u00e3o de Carteiras e Metas**", "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L66", - "community": 20, - "norm_label": "recommendations", - "id": "server_prometheus_regrade_recommendations_66" + "source_file": "1-RS_Mansa.docx.md", + "source_location": "L136", + "community": 91, + "norm_label": "**5.5 \u2014 thoth \u2014 gestao de carteiras e metas**", + "id": "server_1_rs_mansa_docx_5_5_thoth_gest\u00e3o_de_carteiras_e_metas" }, { - "label": "3. Loop Events (A-)", + "label": "**5.6 \u2014 Ma'at \u2014 Algoritmo de Stock Picking**", "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L74", - "community": 20, - "norm_label": "3. loop events (a-)", - "id": "server_prometheus_regrade_3_loop_events_a" + "source_file": "1-RS_Mansa.docx.md", + "source_location": "L150", + "community": 91, + "norm_label": "**5.6 \u2014 ma'at \u2014 algoritmo de stock picking**", + "id": "server_1_rs_mansa_docx_5_6_ma_at_algoritmo_de_stock_picking" }, { - "label": "What's Good", + "label": "**5.7 \u2014 Ogum \u2014 Algo Trading e Automa\u00e7\u00e3o**", "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L76", - "community": 20, - "norm_label": "what's good", - "id": "server_prometheus_regrade_what_s_good_76" + "source_file": "1-RS_Mansa.docx.md", + "source_location": "L164", + "community": 91, + "norm_label": "**5.7 \u2014 ogum \u2014 algo trading e automacao**", + "id": "server_1_rs_mansa_docx_5_7_ogum_algo_trading_e_automa\u00e7\u00e3o" }, { - "label": "Issues Found", + "label": "**6.1 \u2014 Usabilidade**", "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L85", - "community": 20, - "norm_label": "issues found", - "id": "server_prometheus_regrade_issues_found_85" + "source_file": "1-RS_Mansa.docx.md", + "source_location": "L180", + "community": 91, + "norm_label": "**6.1 \u2014 usabilidade**", + "id": "server_1_rs_mansa_docx_6_1_usabilidade" }, { - "label": "Recommendations", + "label": "**6.1.1 \u2014 Interface do Usu\u00e1rio**", "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L90", - "community": 20, - "norm_label": "recommendations", - "id": "server_prometheus_regrade_recommendations_90" + "source_file": "1-RS_Mansa.docx.md", + "source_location": "L182", + "community": 91, + "norm_label": "**6.1.1 \u2014 interface do usuario**", + "id": "server_1_rs_mansa_docx_6_1_1_interface_do_usu\u00e1rio" }, { - "label": "4. Core Architecture (B+)", + "label": "**6.2 \u2014 Seguran\u00e7a**", "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L97", - "community": 20, - "norm_label": "4. core architecture (b+)", - "id": "server_prometheus_regrade_4_core_architecture_b" + "source_file": "1-RS_Mansa.docx.md", + "source_location": "L193", + "community": 91, + "norm_label": "**6.2 \u2014 seguranca**", + "id": "server_1_rs_mansa_docx_6_2_seguran\u00e7a" }, { - "label": "What's Good", + "label": "**6.3 \u2014 Performance**", "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L99", - "community": 20, - "norm_label": "what's good", - "id": "server_prometheus_regrade_what_s_good_99" + "source_file": "1-RS_Mansa.docx.md", + "source_location": "L203", + "community": 91, + "norm_label": "**6.3 \u2014 performance**", + "id": "server_1_rs_mansa_docx_6_3_performance" }, { - "label": "Issues Found", + "label": "**6.4 \u2014 Arquitetura**", "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L107", - "community": 20, - "norm_label": "issues found", - "id": "server_prometheus_regrade_issues_found_107" + "source_file": "1-RS_Mansa.docx.md", + "source_location": "L211", + "community": 91, + "norm_label": "**6.4 \u2014 arquitetura**", + "id": "server_1_rs_mansa_docx_6_4_arquitetura" }, { - "label": "Recommendations", - "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L113", - "community": 20, - "norm_label": "recommendations", - "id": "server_prometheus_regrade_recommendations_113" + "label": "checkSingleDb()", + "file_type": "code", + "source_file": "main/utils/connectivity.py", + "source_location": "L13", + "community": 541, + "norm_label": "checksingledb()", + "id": "utils_connectivity_checksingledb" }, { - "label": "5. Security (B+)", - "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L121", - "community": 20, - "norm_label": "5. security (b+)", - "id": "server_prometheus_regrade_5_security_b" + "label": "_summarizer_legacy.py", + "file_type": "code", + "source_file": "main/app/prometheus/_summarizer_legacy.py", + "source_location": "L1", + "community": 189, + "norm_label": "_summarizer_legacy.py", + "id": "main_app_prometheus_summarizer_legacy_py" }, { - "label": "What's Good", - "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L123", - "community": 20, - "norm_label": "what's good", - "id": "server_prometheus_regrade_what_s_good_123" + "label": "getTokenizer()", + "file_type": "code", + "source_file": "main/app/prometheus/_summarizer_legacy.py", + "source_location": "L19", + "community": 189, + "norm_label": "gettokenizer()", + "id": "prometheus_summarizer_legacy_gettokenizer" }, { - "label": "Issues Found", - "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L133", - "community": 20, - "norm_label": "issues found", - "id": "server_prometheus_regrade_issues_found_133" + "label": "countTokens()", + "file_type": "code", + "source_file": "main/app/prometheus/_summarizer_legacy.py", + "source_location": "L31", + "community": 189, + "norm_label": "counttokens()", + "id": "prometheus_summarizer_legacy_counttokens" }, { - "label": "Recommendations", - "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L138", - "community": 20, - "norm_label": "recommendations", - "id": "server_prometheus_regrade_recommendations_138" + "label": "smartTruncate()", + "file_type": "code", + "source_file": "main/app/prometheus/_summarizer_legacy.py", + "source_location": "L44", + "community": 189, + "norm_label": "smarttruncate()", + "id": "prometheus_summarizer_legacy_smarttruncate" }, { - "label": "6. Performance (B)", - "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L145", - "community": 20, - "norm_label": "6. performance (b)", - "id": "server_prometheus_regrade_6_performance_b" + "label": "PrometheusSummarizer", + "file_type": "code", + "source_file": "main/app/prometheus/_summarizer_legacy.py", + "source_location": "L110", + "community": 189, + "norm_label": "prometheussummarizer", + "id": "prometheus_summarizer_legacy_prometheussummarizer" }, { - "label": "What's Good", - "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L147", - "community": 20, - "norm_label": "what's good", - "id": "server_prometheus_regrade_what_s_good_147" + "label": ".shouldSummarize()", + "file_type": "code", + "source_file": "main/app/prometheus/_summarizer_legacy.py", + "source_location": "L111", + "community": 189, + "norm_label": ".shouldsummarize()", + "id": "prometheus_summarizer_legacy_prometheussummarizer_shouldsummarize" }, { - "label": "Issues Found", - "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L154", - "community": 20, - "norm_label": "issues found", - "id": "server_prometheus_regrade_issues_found_154" + "label": ".getSummarizableChunk()", + "file_type": "code", + "source_file": "main/app/prometheus/_summarizer_legacy.py", + "source_location": "L117", + "community": 189, + "norm_label": ".getsummarizablechunk()", + "id": "prometheus_summarizer_legacy_prometheussummarizer_getsummarizablechunk" }, { - "label": "Recommendations", - "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L161", - "community": 20, - "norm_label": "recommendations", - "id": "server_prometheus_regrade_recommendations_161" + "label": ".consolidate()", + "file_type": "code", + "source_file": "main/app/prometheus/_summarizer_legacy.py", + "source_location": "L128", + "community": 189, + "norm_label": ".consolidate()", + "id": "prometheus_summarizer_legacy_prometheussummarizer_consolidate" }, { - "label": "7. Code Quality (B)", - "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L169", - "community": 20, - "norm_label": "7. code quality (b)", - "id": "server_prometheus_regrade_7_code_quality_b" + "label": ".summarize()", + "file_type": "code", + "source_file": "main/app/prometheus/_summarizer_legacy.py", + "source_location": "L186", + "community": 189, + "norm_label": ".summarize()", + "id": "prometheus_summarizer_legacy_prometheussummarizer_summarize" }, { - "label": "What's Good", - "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L171", - "community": 20, - "norm_label": "what's good", - "id": "server_prometheus_regrade_what_s_good_171" + "label": ".getEpisodes()", + "file_type": "code", + "source_file": "main/app/prometheus/_summarizer_legacy.py", + "source_location": "L237", + "community": 189, + "norm_label": ".getepisodes()", + "id": "prometheus_summarizer_legacy_prometheussummarizer_getepisodes" }, { - "label": "Issues Found", - "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L179", - "community": 20, - "norm_label": "issues found", - "id": "server_prometheus_regrade_issues_found_179" + "label": "openMCPClients()", + "file_type": "code", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L232", + "community": 116, + "norm_label": "openmcpclients()", + "id": "prometheus_agent_openmcpclients" }, { - "label": "Recommendations", - "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L188", - "community": 20, - "norm_label": "recommendations", - "id": "server_prometheus_regrade_recommendations_188" + "label": "Discover available field names before querying /historical or /fundamental.", + "file_type": "rationale", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L27", + "community": 54, + "norm_label": "discover available field names before querying /historical or /fundamental.", + "id": "controller_stocksapi_controller_rationale_27" }, { - "label": "Top 5 Priority Fixes", - "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L196", - "community": 20, - "norm_label": "top 5 priority fixes", - "id": "server_prometheus_regrade_top_5_priority_fixes" + "label": "Get year-based historical financial data for Brazilian B3 stocks. Returns", + "file_type": "rationale", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L82", + "community": 197, + "norm_label": "get year-based historical financial data for brazilian b3 stocks. returns", + "id": "controller_stocksapi_controller_rationale_82" }, { - "label": "What Changed Since Last Grade", - "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L208", - "community": 20, - "norm_label": "what changed since last grade", - "id": "server_prometheus_regrade_what_changed_since_last_grade" + "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": "L144", + "community": 157, + "norm_label": "get point-in-time fundamental/valuation data for brazilian b3 stocks. ret", + "id": "controller_stocksapi_controller_rationale_144" }, { - "label": "Before (C+)", - "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L210", - "community": 20, - "norm_label": "before (c+)", - "id": "server_prometheus_regrade_before_c" + "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": "L209", + "community": 169, + "norm_label": "get 10-year daily price history (cotation) for brazilian b3 stocks. retur", + "id": "controller_stocksapi_controller_rationale_209" }, { - "label": "After (B+)", - "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L218", - "community": 20, - "norm_label": "after (b+)", - "id": "server_prometheus_regrade_after_b" + "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": "L261", + "community": 81, + "norm_label": "get real-time price quotation for a single brazilian b3 stock. returns th", + "id": "controller_stocksapi_controller_rationale_261" }, { - "label": "Remaining for A+", + "label": "Task 1: Create ResponseCache \u2014 `cache.py`", "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L230", - "community": 20, - "norm_label": "remaining for a+", - "id": "server_prometheus_regrade_remaining_for_a" + "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", + "source_location": "L36", + "community": 118, + "norm_label": "task 1: create responsecache \u2014 `cache.py`", + "id": "plans_2026_07_29_prometheus_performance_task_1_create_responsecache_cache_py" }, { - "label": "2026-07-20-persist-loop-events.md", + "label": "Task 2: Create MCPClientPool \u2014 `mcp.py`", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", - "source_location": "L1", - "community": 38, - "norm_label": "2026-07-20-persist-loop-events.md", - "id": "docs_superpowers_plans_2026_07_20_persist_loop_events_md" + "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", + "source_location": "L185", + "community": 118, + "norm_label": "task 2: create mcpclientpool \u2014 `mcp.py`", + "id": "plans_2026_07_29_prometheus_performance_task_2_create_mcpclientpool_mcp_py" }, { - "label": "Persist Agent Loop Events to DB", + "label": "Task 3: Integrate Pool + Cache + Pre-fetch into agent.py + tools.py", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", + "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", + "source_location": "L343", + "community": 118, + "norm_label": "task 3: integrate pool + cache + pre-fetch into agent.py + tools.py", + "id": "plans_2026_07_29_prometheus_performance_task_3_integrate_pool_cache_pre_fetch_into_agent_py_tools_py" + }, + { + "label": "summarizer.py", + "file_type": "code", + "source_file": "main/app/prometheus/summarizer.py", "source_location": "L1", - "community": 38, - "norm_label": "persist agent loop events to db", - "id": "plans_2026_07_20_persist_loop_events_persist_agent_loop_events_to_db" + "community": 87, + "norm_label": "summarizer.py", + "id": "main_app_prometheus_summarizer_py" }, { - "label": "Context", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", - "source_location": "L13", - "community": 38, - "norm_label": "context", - "id": "plans_2026_07_20_persist_loop_events_context" + "label": "getTokenizer()", + "file_type": "code", + "source_file": "main/app/prometheus/summarizer.py", + "source_location": "L19", + "community": 87, + "norm_label": "gettokenizer()", + "id": "prometheus_summarizer_gettokenizer" }, { - "label": "Design", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", - "source_location": "L21", - "community": 38, - "norm_label": "design", - "id": "plans_2026_07_20_persist_loop_events_design" + "label": "countTokens()", + "file_type": "code", + "source_file": "main/app/prometheus/summarizer.py", + "source_location": "L31", + "community": 87, + "norm_label": "counttokens()", + "id": "prometheus_summarizer_counttokens" }, { - "label": "code:json ([)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", - "source_location": "L30", - "community": 38, - "norm_label": "code:json ([)", - "id": "plans_2026_07_20_persist_loop_events_codeblock_1" + "label": "smartTruncate()", + "file_type": "code", + "source_file": "main/app/prometheus/summarizer.py", + "source_location": "L44", + "community": 87, + "norm_label": "smarttruncate()", + "id": "prometheus_summarizer_smarttruncate" }, { - "label": "Task 1: Save loop events to DB in streamMessage()", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", - "source_location": "L41", - "community": 38, - "norm_label": "task 1: save loop events to db in streammessage()", - "id": "plans_2026_07_20_persist_loop_events_task_1_save_loop_events_to_db_in_streammessage" + "label": "PrometheusSummarizer", + "file_type": "code", + "source_file": "main/app/prometheus/summarizer.py", + "source_location": "L110", + "community": 87, + "norm_label": "prometheussummarizer", + "id": "prometheus_summarizer_prometheussummarizer" }, { - "label": "code:python (@classmethod)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", - "source_location": "L54", - "community": 38, - "norm_label": "code:python (@classmethod)", - "id": "plans_2026_07_20_persist_loop_events_codeblock_2" + "label": ".shouldSummarize()", + "file_type": "code", + "source_file": "main/app/prometheus/summarizer.py", + "source_location": "L111", + "community": 87, + "norm_label": ".shouldsummarize()", + "id": "prometheus_summarizer_prometheussummarizer_shouldsummarize" }, { - "label": "code:python (case \"tool_call\":)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", - "source_location": "L80", - "community": 38, - "norm_label": "code:python (case \"tool_call\":)", - "id": "plans_2026_07_20_persist_loop_events_codeblock_3" + "label": ".getSummarizableChunk()", + "file_type": "code", + "source_file": "main/app/prometheus/summarizer.py", + "source_location": "L117", + "community": 87, + "norm_label": ".getsummarizablechunk()", + "id": "prometheus_summarizer_prometheussummarizer_getsummarizablechunk" }, { - "label": "code:python (case \"turn_end\":)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", - "source_location": "L106", - "community": 38, - "norm_label": "code:python (case \"turn_end\":)", - "id": "plans_2026_07_20_persist_loop_events_codeblock_4" + "label": ".consolidate()", + "file_type": "code", + "source_file": "main/app/prometheus/summarizer.py", + "source_location": "L128", + "community": 87, + "norm_label": ".consolidate()", + "id": "prometheus_summarizer_prometheussummarizer_consolidate" }, { - "label": "code:bash (git add main/app/prometheus/agent.py main/app/prometheus/cha)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", - "source_location": "L130", - "community": 38, - "norm_label": "code:bash (git add main/app/prometheus/agent.py main/app/prometheus/cha)", - "id": "plans_2026_07_20_persist_loop_events_codeblock_5" + "label": ".summarize()", + "file_type": "code", + "source_file": "main/app/prometheus/summarizer.py", + "source_location": "L186", + "community": 87, + "norm_label": ".summarize()", + "id": "prometheus_summarizer_prometheussummarizer_summarize" }, { - "label": "Task 2: Filter loop events from LLM history", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", - "source_location": "L137", - "community": 38, - "norm_label": "task 2: filter loop events from llm history", - "id": "plans_2026_07_20_persist_loop_events_task_2_filter_loop_events_from_llm_history" + "label": ".getEpisodes()", + "file_type": "code", + "source_file": "main/app/prometheus/summarizer.py", + "source_location": "L237", + "community": 87, + "norm_label": ".getepisodes()", + "id": "prometheus_summarizer_prometheussummarizer_getepisodes" }, { - "label": "code:python (@classmethod)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", - "source_location": "L150", - "community": 38, - "norm_label": "code:python (@classmethod)", - "id": "plans_2026_07_20_persist_loop_events_codeblock_6" + "label": "applyUpdate()", + "file_type": "code", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L48", + "community": 53, + "norm_label": "applyupdate()", + "id": "prometheus_memory_applyupdate" }, { - "label": "code:bash (git add main/app/prometheus/chat.py)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", - "source_location": "L173", - "community": 38, - "norm_label": "code:bash (git add main/app/prometheus/chat.py)", - "id": "plans_2026_07_20_persist_loop_events_codeblock_7" + "label": ".mergeEpisodes()", + "file_type": "code", + "source_file": "main/app/prometheus/summarizer.py", + "source_location": "L141", + "community": 87, + "norm_label": ".mergeepisodes()", + "id": "prometheus_summarizer_prometheussummarizer_mergeepisodes" }, { - "label": "Task 3: Return full history (including loop events) to frontend", + "label": "Stocks API \u2014 Pandas-First Pattern", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", - "source_location": "L180", - "community": 38, - "norm_label": "task 3: return full history (including loop events) to frontend", - "id": "plans_2026_07_20_persist_loop_events_task_3_return_full_history_including_loop_events_to_frontend" + "source_file": "AGENTS.md", + "source_location": "L47", + "community": 153, + "norm_label": "stocks api \u2014 pandas-first pattern", + "id": "server_agents_stocks_api_pandas_first_pattern" }, { - "label": "code:python (@router.get(\"/history/{sessionId}/llm\"))", + "label": "Scraper B3 (Xango) \u2014 Batch Data Pipeline", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", - "source_location": "L197", - "community": 38, - "norm_label": "code:python (@router.get(\"/history/{sessionid}/llm\"))", - "id": "plans_2026_07_20_persist_loop_events_codeblock_8" + "source_file": "AGENTS.md", + "source_location": "L54", + "community": 153, + "norm_label": "scraper b3 (xango) \u2014 batch data pipeline", + "id": "server_agents_scraper_b3_xango_batch_data_pipeline" }, { - "label": "code:bash (git add main/controller/prometheus_controller.py)", + "label": "Auth/Users \u2014 Dual-Layer Session Security", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", - "source_location": "L213", - "community": 38, - "norm_label": "code:bash (git add main/controller/prometheus_controller.py)", - "id": "plans_2026_07_20_persist_loop_events_codeblock_9" + "source_file": "AGENTS.md", + "source_location": "L60", + "community": 153, + "norm_label": "auth/users \u2014 dual-layer session security", + "id": "server_agents_auth_users_dual_layer_session_security" }, { - "label": "Task 4: Frontend \u2014 Load and display loop events from history", + "label": "Key Quirks", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", - "source_location": "L220", - "community": 38, - "norm_label": "task 4: frontend \u2014 load and display loop events from history", - "id": "plans_2026_07_20_persist_loop_events_task_4_frontend_load_and_display_loop_events_from_history" + "source_file": "AGENTS.md", + "source_location": "L66", + "community": 153, + "norm_label": "key quirks", + "id": "server_agents_key_quirks" }, { - "label": "code:javascript (const loadHistory = async (sid) => {)", + "label": "Prometheus (AI Chat) \u2014 Strengths & Gaps", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", - "source_location": "L234", - "community": 38, - "norm_label": "code:javascript (const loadhistory = async (sid) => {)", - "id": "plans_2026_07_20_persist_loop_events_codeblock_10" + "source_file": "AGENTS.md", + "source_location": "L76", + "community": 153, + "norm_label": "prometheus (ai chat) \u2014 strengths & gaps", + "id": "server_agents_prometheus_ai_chat_strengths_gaps" }, { - "label": "code:jsx (export default function MessageList({ messages, toolEvents, )", + "label": "What It Does Well", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", - "source_location": "L293", - "community": 38, - "norm_label": "code:jsx (export default function messagelist({ messages, toolevents, )", - "id": "plans_2026_07_20_persist_loop_events_codeblock_11" + "source_file": "AGENTS.md", + "source_location": "L78", + "community": 153, + "norm_label": "what it does well", + "id": "server_agents_what_it_does_well" }, { - "label": "code:javascript (const loadHistory = async (sid) => {)", + "label": "What It Should Be Doing (Gaps)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", - "source_location": "L343", - "community": 38, - "norm_label": "code:javascript (const loadhistory = async (sid) => {)", - "id": "plans_2026_07_20_persist_loop_events_codeblock_12" + "source_file": "AGENTS.md", + "source_location": "L85", + "community": 153, + "norm_label": "what it should be doing (gaps)", + "id": "server_agents_what_it_should_be_doing_gaps" }, { - "label": "code:jsx (export default function AgentLoop({ toolEvents, turnMetrics )", + "label": "Pandas-First Approach (80%+ Rule)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", - "source_location": "L403", - "community": 38, - "norm_label": "code:jsx (export default function agentloop({ toolevents, turnmetrics )", - "id": "plans_2026_07_20_persist_loop_events_codeblock_13" + "source_file": "AGENTS.md", + "source_location": "L91", + "community": 153, + "norm_label": "pandas-first approach (80%+ rule)", + "id": "server_agents_pandas_first_approach_80_rule" }, { - "label": "code:bash (git add frontend/src/App.jsx frontend/src/components/Message)", + "label": "Memory Keys", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", - "source_location": "L457", - "community": 38, - "norm_label": "code:bash (git add frontend/src/app.jsx frontend/src/components/message)", - "id": "plans_2026_07_20_persist_loop_events_codeblock_14" + "source_file": "AGENTS.md", + "source_location": "L97", + "community": 153, + "norm_label": "memory keys", + "id": "server_agents_memory_keys" }, { - "label": "Task 5: Test the full flow", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", - "source_location": "L464", - "community": 38, - "norm_label": "task 5: test the full flow", - "id": "plans_2026_07_20_persist_loop_events_task_5_test_the_full_flow" + "label": "tokenizer.py", + "file_type": "code", + "source_file": "main/app/prometheus/tokenizer.py", + "source_location": "L1", + "community": 87, + "norm_label": "tokenizer.py", + "id": "main_app_prometheus_tokenizer_py" }, { - "label": "code:bash (docker-compose up -d --build)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", - "source_location": "L471", - "community": 38, - "norm_label": "code:bash (docker-compose up -d --build)", - "id": "plans_2026_07_20_persist_loop_events_codeblock_15" + "label": "_get_tokenizer()", + "file_type": "code", + "source_file": "main/app/prometheus/tokenizer.py", + "source_location": "L10", + "community": 87, + "norm_label": "_get_tokenizer()", + "id": "prometheus_tokenizer_get_tokenizer" }, { - "label": "code:sql (SELECT COUNT(*) FROM prometheus WHERE JSON_CONTAINS_PATH(his)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", - "source_location": "L505", - "community": 38, - "norm_label": "code:sql (select count(*) from prometheus where json_contains_path(his)", - "id": "plans_2026_07_20_persist_loop_events_codeblock_16" + "label": "countTokens()", + "file_type": "code", + "source_file": "main/app/prometheus/tokenizer.py", + "source_location": "L17", + "community": 87, + "norm_label": "counttokens()", + "id": "prometheus_tokenizer_counttokens" }, { - "label": "code:bash (git add -A)", + "label": "Count tokens using Gemini's local tokenizer. Accurate for Portuguese.", + "file_type": "rationale", + "source_file": "main/app/prometheus/tokenizer.py", + "source_location": "L18", + "community": 87, + "norm_label": "count tokens using gemini's local tokenizer. accurate for portuguese.", + "id": "prometheus_tokenizer_rationale_18" + }, + { + "label": "2026-07-19-stocks-api-perf.md", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", - "source_location": "L513", - "community": 38, - "norm_label": "code:bash (git add -a)", - "id": "plans_2026_07_20_persist_loop_events_codeblock_17" + "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", + "source_location": "L1", + "community": 64, + "norm_label": "2026-07-19-stocks-api-perf.md", + "id": "docs_superpowers_plans_2026_07_19_stocks_api_perf_md" }, { - "label": "Summary of Changes", + "label": "Stocks API Performance Optimization Plan", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", - "source_location": "L520", - "community": 38, - "norm_label": "summary of changes", - "id": "plans_2026_07_20_persist_loop_events_summary_of_changes" + "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", + "source_location": "L1", + "community": 64, + "norm_label": "stocks api performance optimization plan", + "id": "plans_2026_07_19_stocks_api_perf_stocks_api_performance_optimization_plan" }, { "label": "Global Constraints", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", - "source_location": "L534", - "community": 38, + "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", + "source_location": "L11", + "community": 64, "norm_label": "global constraints", - "id": "plans_2026_07_20_persist_loop_events_global_constraints" - }, - { - "label": "Summarize conversation history into episode summaries.", - "file_type": "rationale", - "source_file": "main/app/prometheus/summarizer.py", - "source_location": "L1", - "community": 87, - "norm_label": "summarize conversation history into episode summaries.", - "id": "prometheus_summarizer_rationale_1" + "id": "plans_2026_07_19_stocks_api_perf_global_constraints" }, { - "label": "Count tokens using Gemini's local tokenizer. Falls back to len(text)//3 if", - "file_type": "rationale", - "source_file": "main/app/prometheus/summarizer.py", - "source_location": "L37", - "community": 87, - "norm_label": "count tokens using gemini's local tokenizer. falls back to len(text)//3 if", - "id": "prometheus_summarizer_rationale_37" + "label": "Task 1: Cache `categorizeColumns()` at build time", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", + "source_location": "L22", + "community": 64, + "norm_label": "task 1: cache `categorizecolumns()` at build time", + "id": "plans_2026_07_19_stocks_api_perf_task_1_cache_categorizecolumns_at_build_time" }, { - "label": "Check if accumulated tokens exceed episode threshold.", - "file_type": "rationale", - "source_file": "main/app/prometheus/summarizer.py", - "source_location": "L124", - "community": 87, - "norm_label": "check if accumulated tokens exceed episode threshold.", - "id": "prometheus_summarizer_rationale_124" + "label": "code:python (class StocksCacheManager:)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", + "source_location": "L34", + "community": 64, + "norm_label": "code:python (class stockscachemanager:)", + "id": "plans_2026_07_19_stocks_api_perf_codeblock_1" }, { - "label": "Get messages since the last episode for summarization.", - "file_type": "rationale", - "source_file": "main/app/prometheus/summarizer.py", - "source_location": "L131", - "community": 87, - "norm_label": "get messages since the last episode for summarization.", - "id": "prometheus_summarizer_rationale_131" + "label": "code:python (from main.app.stocks_api.util import categorizeColumns)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", + "source_location": "L47", + "community": 64, + "norm_label": "code:python (from main.app.stocks_api.util import categorizecolumns)", + "id": "plans_2026_07_19_stocks_api_perf_codeblock_2" }, { - "label": "Merge oldest episodes when count exceeds soft cap. Keeps the most recen", - "file_type": "rationale", - "source_file": "main/app/prometheus/summarizer.py", - "source_location": "L143", - "community": 87, - "norm_label": "merge oldest episodes when count exceeds soft cap. keeps the most recen", - "id": "prometheus_summarizer_rationale_143" + "label": "code:python (# BEFORE (line 133):)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", + "source_location": "L64", + "community": 64, + "norm_label": "code:python (# before (line 133):)", + "id": "plans_2026_07_19_stocks_api_perf_codeblock_3" }, { - "label": "Merge multiple episodes into one via Gemini.", - "file_type": "rationale", - "source_file": "main/app/prometheus/summarizer.py", - "source_location": "L161", - "community": 87, - "norm_label": "merge multiple episodes into one via gemini.", - "id": "prometheus_summarizer_rationale_161" + "label": "code:python (# BEFORE (line 213):)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", + "source_location": "L74", + "community": 64, + "norm_label": "code:python (# before (line 213):)", + "id": "plans_2026_07_19_stocks_api_perf_codeblock_4" }, { - "label": "Check if accumulated tokens exceed episode threshold.", - "file_type": "rationale", - "source_file": "main/app/prometheus/summarizer.py", - "source_location": "L125", - "community": 87, - "norm_label": "check if accumulated tokens exceed episode threshold.", - "id": "prometheus_summarizer_rationale_125" + "label": "code:python (def getAbbr() -> dict:)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", + "source_location": "L86", + "community": 64, + "norm_label": "code:python (def getabbr() -> dict:)", + "id": "plans_2026_07_19_stocks_api_perf_codeblock_5" }, { - "label": "Get messages since the last episode for summarization.", - "file_type": "rationale", - "source_file": "main/app/prometheus/summarizer.py", - "source_location": "L132", - "community": 87, - "norm_label": "get messages since the last episode for summarization.", - "id": "prometheus_summarizer_rationale_132" + "label": "code:python (# BEFORE:)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", + "source_location": "L102", + "community": 64, + "norm_label": "code:python (# before:)", + "id": "plans_2026_07_19_stocks_api_perf_codeblock_6" }, { - "label": "Merge oldest episodes when count exceeds soft cap. Keeps the most recen", - "file_type": "rationale", - "source_file": "main/app/prometheus/summarizer.py", - "source_location": "L144", - "community": 87, - "norm_label": "merge oldest episodes when count exceeds soft cap. keeps the most recen", - "id": "prometheus_summarizer_rationale_144" + "label": "code:bash (python -m pytest tests/ -q)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", + "source_location": "L112", + "community": 64, + "norm_label": "code:bash (python -m pytest tests/ -q)", + "id": "plans_2026_07_19_stocks_api_perf_codeblock_7" }, { - "label": "Merge multiple episodes into one via Gemini.", - "file_type": "rationale", - "source_file": "main/app/prometheus/summarizer.py", - "source_location": "L162", - "community": 87, - "norm_label": "merge multiple episodes into one via gemini.", - "id": "prometheus_summarizer_rationale_162" + "label": "code:bash (git add main/app/stocks_api/cache.py main/app/stocks_api/que)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", + "source_location": "L118", + "community": 64, + "norm_label": "code:bash (git add main/app/stocks_api/cache.py main/app/stocks_api/que)", + "id": "plans_2026_07_19_stocks_api_perf_codeblock_8" }, { - "label": "Check if accumulated tokens exceed episode threshold.", - "file_type": "rationale", - "source_file": "main/app/prometheus/summarizer.py", - "source_location": "L101", - "community": 87, - "norm_label": "check if accumulated tokens exceed episode threshold.", - "id": "prometheus_summarizer_rationale_101" + "label": "Task 2: Vectorize `filterCotationColumn()`", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", + "source_location": "L125", + "community": 64, + "norm_label": "task 2: vectorize `filtercotationcolumn()`", + "id": "plans_2026_07_19_stocks_api_perf_task_2_vectorize_filtercotationcolumn" }, { - "label": "Get messages since the last episode for summarization.", - "file_type": "rationale", - "source_file": "main/app/prometheus/summarizer.py", - "source_location": "L108", - "community": 87, - "norm_label": "get messages since the last episode for summarization.", - "id": "prometheus_summarizer_rationale_108" + "label": "code:python (def filterCotationColumn(series: pd.Series, startDate, endDa)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", + "source_location": "L136", + "community": 64, + "norm_label": "code:python (def filtercotationcolumn(series: pd.series, startdate, endda)", + "id": "plans_2026_07_19_stocks_api_perf_codeblock_9" }, { - "label": "_parse_date()", - "file_type": "code", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L27", - "community": 73, - "norm_label": "_parse_date()", - "id": "stocks_api_util_parse_date" + "label": "code:bash (python -m pytest tests/test_stocks*.py -q)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", + "source_location": "L172", + "community": 64, + "norm_label": "code:bash (python -m pytest tests/test_stocks*.py -q)", + "id": "plans_2026_07_19_stocks_api_perf_codeblock_10" }, { - "label": "Discover available field names before querying /historical or /fundamental.", - "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L26", - "community": 54, - "norm_label": "discover available field names before querying /historical or /fundamental.", - "id": "controller_stocksapi_controller_rationale_26" + "label": "code:bash (git add main/app/stocks_api/query.py)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", + "source_location": "L178", + "community": 64, + "norm_label": "code:bash (git add main/app/stocks_api/query.py)", + "id": "plans_2026_07_19_stocks_api_perf_codeblock_11" }, { - "label": "Get year-based historical financial data for Brazilian B3 stocks. Returns", - "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L66", - "community": 197, - "norm_label": "get year-based historical financial data for brazilian b3 stocks. returns", - "id": "controller_stocksapi_controller_rationale_66" + "label": "Task 3: Vectorize `filterBySearchTerms()` fallback", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", + "source_location": "L185", + "community": 64, + "norm_label": "task 3: vectorize `filterbysearchterms()` fallback", + "id": "plans_2026_07_19_stocks_api_perf_task_3_vectorize_filterbysearchterms_fallback" }, { - "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": "L124", - "community": 157, - "norm_label": "get point-in-time fundamental/valuation data for brazilian b3 stocks. ret", - "id": "controller_stocksapi_controller_rationale_124" + "label": "code:python (def filterBySearchTerms(self, df: pd.DataFrame, search: str))", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", + "source_location": "L194", + "community": 64, + "norm_label": "code:python (def filterbysearchterms(self, df: pd.dataframe, search: str))", + "id": "plans_2026_07_19_stocks_api_perf_codeblock_12" }, { - "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": "L185", - "community": 169, - "norm_label": "get 10-year daily price history (cotation) for brazilian b3 stocks. retur", - "id": "controller_stocksapi_controller_rationale_185" + "label": "code:bash (python -m pytest tests/test_stocks*.py -q)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", + "source_location": "L219", + "community": 64, + "norm_label": "code:bash (python -m pytest tests/test_stocks*.py -q)", + "id": "plans_2026_07_19_stocks_api_perf_codeblock_13" }, { - "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": "L233", - "community": 81, - "norm_label": "get real-time price quotation for a single brazilian b3 stock. returns th", - "id": "controller_stocksapi_controller_rationale_233" + "label": "code:bash (git add main/app/stocks_api/query.py)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", + "source_location": "L225", + "community": 64, + "norm_label": "code:bash (git add main/app/stocks_api/query.py)", + "id": "plans_2026_07_19_stocks_api_perf_codeblock_14" }, { - "label": ".get()", - "file_type": "code", - "source_file": "config.py", - "source_location": "L24", - "community": 102, - "norm_label": ".get()", - "id": "server_config_basemansasettings_get" + "label": "Task 4: Batch JSON deserialization in `deserializeJsonColumns()`", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", + "source_location": "L232", + "community": 64, + "norm_label": "task 4: batch json deserialization in `deserializejsoncolumns()`", + "id": "plans_2026_07_19_stocks_api_perf_task_4_batch_json_deserialization_in_deserializejsoncolumns" }, { - "label": ".__getitem__()", - "file_type": "code", - "source_file": "config.py", - "source_location": "L54", - "community": 102, - "norm_label": ".__getitem__()", - "id": "server_config_usersettings_getitem" + "label": "code:python (def deserializeJsonColumns(self, df: pd.DataFrame) -> pd.Dat)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", + "source_location": "L241", + "community": 64, + "norm_label": "code:python (def deserializejsoncolumns(self, df: pd.dataframe) -> pd.dat)", + "id": "plans_2026_07_19_stocks_api_perf_codeblock_15" }, { - "label": ".__getitem__()", - "file_type": "code", - "source_file": "config.py", - "source_location": "L73", - "community": 102, - "norm_label": ".__getitem__()", - "id": "server_config_stocksapisettings_getitem" + "label": "code:bash (python -m pytest tests/test_stocks*.py -q)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", + "source_location": "L283", + "community": 64, + "norm_label": "code:bash (python -m pytest tests/test_stocks*.py -q)", + "id": "plans_2026_07_19_stocks_api_perf_codeblock_16" }, { - "label": ".__getitem__()", - "file_type": "code", - "source_file": "config.py", - "source_location": "L92", - "community": 102, - "norm_label": ".__getitem__()", - "id": "server_config_prometheussettings_getitem" + "label": "code:bash (git add main/app/stocks_api/query.py)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", + "source_location": "L289", + "community": 64, + "norm_label": "code:bash (git add main/app/stocks_api/query.py)", + "id": "plans_2026_07_19_stocks_api_perf_codeblock_17" }, { - "label": ".__getitem__()", - "file_type": "code", - "source_file": "config.py", - "source_location": "L105", - "community": 102, - "norm_label": ".__getitem__()", - "id": "server_config_scrapersettings_getitem" + "label": "Task 5: Pre-materialize per-ticker orjson bytes", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", + "source_location": "L296", + "community": 64, + "norm_label": "task 5: pre-materialize per-ticker orjson bytes", + "id": "plans_2026_07_19_stocks_api_perf_task_5_pre_materialize_per_ticker_orjson_bytes" }, { - "label": ".__getitem__()", - "file_type": "code", - "source_file": "config.py", - "source_location": "L114", - "community": 102, - "norm_label": ".__getitem__()", - "id": "server_config_discordsettings_getitem" + "label": "code:python (class StocksCacheManager:)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", + "source_location": "L305", + "community": 64, + "norm_label": "code:python (class stockscachemanager:)", + "id": "plans_2026_07_19_stocks_api_perf_codeblock_18" }, { - "label": "generateFingerprint()", - "file_type": "code", - "source_file": "main/app/authentication/device.py", - "source_location": "L128", - "community": 1, - "norm_label": "generatefingerprint()", - "id": "authentication_device_generatefingerprint" + "label": "code:python (def getCachedStocks(self, columns: list[str] | None = None, )", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", + "source_location": "L324", + "community": 64, + "norm_label": "code:python (def getcachedstocks(self, columns: list[str] | none = none, )", + "id": "plans_2026_07_19_stocks_api_perf_codeblock_19" }, { - "label": ".emit_tool_call()", - "file_type": "code", - "source_file": "main/app/prometheus/events.py", - "source_location": "L11", - "community": 12, - "norm_label": ".emit_tool_call()", - "id": "prometheus_events_looplogger_emit_tool_call" + "label": "code:python (def getTickerHistorical(self, ticker: str) -> bytes | None:)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", + "source_location": "L378", + "community": 64, + "norm_label": "code:python (def gettickerhistorical(self, ticker: str) -> bytes | none:)", + "id": "plans_2026_07_19_stocks_api_perf_codeblock_20" }, { - "label": ".emit_tool_result()", - "file_type": "code", - "source_file": "main/app/prometheus/events.py", - "source_location": "L22", - "community": 12, - "norm_label": ".emit_tool_result()", - "id": "prometheus_events_looplogger_emit_tool_result" + "label": "code:bash (python -m pytest tests/test_stocks*.py -q)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", + "source_location": "L392", + "community": 64, + "norm_label": "code:bash (python -m pytest tests/test_stocks*.py -q)", + "id": "plans_2026_07_19_stocks_api_perf_codeblock_21" }, { - "label": ".emit_turn_end()", - "file_type": "code", - "source_file": "main/app/prometheus/events.py", - "source_location": "L33", - "community": 12, - "norm_label": ".emit_turn_end()", - "id": "prometheus_events_looplogger_emit_turn_end" + "label": "code:bash (git add main/app/stocks_api/cache.py)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", + "source_location": "L398", + "community": 64, + "norm_label": "code:bash (git add main/app/stocks_api/cache.py)", + "id": "plans_2026_07_19_stocks_api_perf_codeblock_22" }, { - "label": ".flush()", - "file_type": "code", - "source_file": "main/app/prometheus/events.py", - "source_location": "L43", - "community": 12, - "norm_label": ".flush()", - "id": "prometheus_events_looplogger_flush" + "label": "Task 6: Full CI verification", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", + "source_location": "L405", + "community": 64, + "norm_label": "task 6: full ci verification", + "id": "plans_2026_07_19_stocks_api_perf_task_6_full_ci_verification" }, { - "label": "executeWithWorkspace()", - "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L161", - "community": 69, - "norm_label": "executewithworkspace()", - "id": "prometheus_sandbox_executewithworkspace" + "label": "code:bash (.\\ci.ps1 -Fast)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", + "source_location": "L409", + "community": 64, + "norm_label": "code:bash (.\\ci.ps1 -fast)", + "id": "plans_2026_07_19_stocks_api_perf_codeblock_23" }, { - "label": "isQuotaExceeded()", - "file_type": "code", - "source_file": "main/app/stocks_api/key.py", - "source_location": "L22", - "community": 37, - "norm_label": "isquotaexceeded()", - "id": "stocks_api_key_isquotaexceeded" + "label": "2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L1", + "community": 182, + "norm_label": "2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "id": "docs_superpowers_plans_2026_07_22_mem0_vs_prometheus_memory_comparison_md" }, { - "label": "needsReset()", - "file_type": "code", - "source_file": "main/app/stocks_api/key.py", - "source_location": "L26", - "community": 37, - "norm_label": "needsreset()", - "id": "stocks_api_key_needsreset" + "label": "Mem0 vs Prometheus Memory System \u2014 Comparison & Upgrade Plan", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L1", + "community": 182, + "norm_label": "mem0 vs prometheus memory system \u2014 comparison & upgrade plan", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_mem0_vs_prometheus_memory_system_comparison_upgrade_plan" }, { - "label": "resetQuota()", - "file_type": "code", - "source_file": "main/app/stocks_api/key.py", - "source_location": "L37", - "community": 37, - "norm_label": "resetquota()", - "id": "stocks_api_key_resetquota" + "label": "Executive Summary: What Mem0 Does That We Don't", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L13", + "community": 182, + "norm_label": "executive summary: what mem0 does that we don't", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_executive_summary_what_mem0_does_that_we_don_t" }, { - "label": "incrementUsage()", - "file_type": "code", - "source_file": "main/app/stocks_api/key.py", - "source_location": "L42", - "community": 37, - "norm_label": "incrementusage()", - "id": "stocks_api_key_incrementusage" + "label": "What We Already Do Well (Don't Replace)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L30", + "community": 182, + "norm_label": "what we already do well (don't replace)", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_what_we_already_do_well_don_t_replace" }, { - "label": "getRemainingQuota()", - "file_type": "code", - "source_file": "main/app/stocks_api/key.py", - "source_location": "L46", - "community": 37, - "norm_label": "getremainingquota()", - "id": "stocks_api_key_getremainingquota" + "label": "What We Should Adopt from Mem0", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L42", + "community": 485, + "norm_label": "what we should adopt from mem0", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_what_we_should_adopt_from_mem0" }, { - "label": "keyToDict()", - "file_type": "code", - "source_file": "main/app/stocks_api/key.py", - "source_location": "L50", - "community": 37, - "norm_label": "keytodict()", - "id": "stocks_api_key_keytodict" + "label": "Priority 1: Fix Critical Gaps", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L44", + "community": 485, + "norm_label": "priority 1: fix critical gaps", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_priority_1_fix_critical_gaps" }, { - "label": "parseDateStart()", - "file_type": "code", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L39", - "community": 73, - "norm_label": "parsedatestart()", - "id": "stocks_api_util_parsedatestart" + "label": "Priority 2: Improve Retrieval", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L63", + "community": 485, + "norm_label": "priority 2: improve retrieval", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_priority_2_improve_retrieval" }, { - "label": "parseDateEnd()", - "file_type": "code", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L43", - "community": 73, - "norm_label": "parsedateend()", - "id": "stocks_api_util_parsedateend" + "label": "Priority 3: Lifecycle Improvements", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L83", + "community": 485, + "norm_label": "priority 3: lifecycle improvements", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_priority_3_lifecycle_improvements" }, { - "label": ".toDict()", - "file_type": "code", - "source_file": "main/app/prometheus/state.py", - "source_location": "L18", - "community": 8, - "norm_label": ".todict()", - "id": "prometheus_state_harnessstate_toDict" + "label": "Architectural Decisions", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L98", + "community": 192, + "norm_label": "architectural decisions", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_architectural_decisions" }, { - "label": ".toContext()", - "file_type": "code", - "source_file": "main/app/prometheus/state.py", - "source_location": "L21", - "community": 8, - "norm_label": ".tocontext()", - "id": "prometheus_state_harnessstate_toContext" + "label": "Decision 1: Keep MySQL, Don't Add a Vector DB", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L100", + "community": 192, + "norm_label": "decision 1: keep mysql, don't add a vector db", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_decision_1_keep_mysql_don_t_add_a_vector_db" }, { - "label": ".hasChanged()", - "file_type": "code", - "source_file": "main/app/prometheus/state.py", - "source_location": "L26", - "community": 8, - "norm_label": ".haschanged()", - "id": "prometheus_state_harnessstate_hasChanged" + "label": "Decision 2: Keep Our Extraction, Don't Use LLM Distillation", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L103", + "community": 192, + "norm_label": "decision 2: keep our extraction, don't use llm distillation", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_decision_2_keep_our_extraction_don_t_use_llm_distillation" }, { - "label": ".resetChanged()", - "file_type": "code", - "source_file": "main/app/prometheus/state.py", - "source_location": "L29", - "community": 8, - "norm_label": ".resetchanged()", - "id": "prometheus_state_harnessstate_resetChanged" + "label": "Decision 3: Add Graph Memory as MySQL Tables", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L106", + "community": 192, + "norm_label": "decision 3: add graph memory as mysql tables", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_decision_3_add_graph_memory_as_mysql_tables" }, { - "label": "api.test.js", - "file_type": "code", - "source_file": "frontend/tests/api.test.js", - "source_location": "L1", - "community": 505, - "norm_label": "api.test.js", - "id": "frontend_tests_api_test_js" + "label": "Decision 4: Use google-genai LocalTokenizer, Not tiktoken", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L109", + "community": 192, + "norm_label": "decision 4: use google-genai localtokenizer, not tiktoken", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_decision_4_use_google_genai_localtokenizer_not_tiktoken" }, { - "label": "createMockReadableStream()", - "file_type": "code", - "source_file": "frontend/tests/api.test.js", - "source_location": "L4", - "community": 505, - "norm_label": "createmockreadablestream()", - "id": "tests_api_test_createmockreadablestream" + "label": "Decision 5: INT8 ONNX, Don't Quantize Ourselves", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L112", + "community": 192, + "norm_label": "decision 5: int8 onnx, don't quantize ourselves", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_decision_5_int8_onnx_don_t_quantize_ourselves" }, { - "label": "onChunk", - "file_type": "code", - "source_file": "frontend/tests/api.test.js", - "source_location": "L22", - "community": 505, - "norm_label": "onchunk", - "id": "tests_api_test_onchunk" + "label": "File Structure", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L117", + "community": 182, + "norm_label": "file structure", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_file_structure" }, { - "label": "onDone", - "file_type": "code", - "source_file": "frontend/tests/api.test.js", - "source_location": "L23", - "community": 505, - "norm_label": "ondone", - "id": "tests_api_test_ondone" + "label": "code:block1 (main/)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L119", + "community": 182, + "norm_label": "code:block1 (main/)", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_1" }, { - "label": "onError", - "file_type": "code", - "source_file": "frontend/tests/api.test.js", - "source_location": "L24", - "community": 505, - "norm_label": "onerror", - "id": "tests_api_test_onerror" + "label": "Task 1: INT8 Embedding Model", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L136", + "community": 479, + "norm_label": "task 1: int8 embedding model", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_task_1_int8_embedding_model" }, { - "label": "events", - "file_type": "code", - "source_file": "frontend/tests/api.test.js", - "source_location": "L117", - "community": 505, - "norm_label": "events", - "id": "tests_api_test_events" + "label": "code:python (def test_embedding_model_uses_int8():)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L148", + "community": 479, + "norm_label": "code:python (def test_embedding_model_uses_int8():)", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_2" }, { - "label": "App.test.jsx", - "file_type": "code", - "source_file": "frontend/tests/App.test.jsx", - "source_location": "L1", - "community": 506, - "norm_label": "app.test.jsx", - "id": "frontend_tests_app_test_jsx" + "label": "code:python (# main/utils/models/loader.py)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L165", + "community": 479, + "norm_label": "code:python (# main/utils/models/loader.py)", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_3" }, { - "label": "chunks", - "file_type": "code", - "source_file": "frontend/tests/App.test.jsx", - "source_location": "L40", - "community": 506, - "norm_label": "chunks", - "id": "tests_app_test_chunks" + "label": "code:bash (git add main/utils/models/loader.py tests/test_embedding_mod)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L187", + "community": 479, + "norm_label": "code:bash (git add main/utils/models/loader.py tests/test_embedding_mod)", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_4" }, { - "label": "receivedChunks", - "file_type": "code", - "source_file": "frontend/tests/App.test.jsx", - "source_location": "L66", - "community": 506, - "norm_label": "receivedchunks", - "id": "tests_app_test_receivedchunks" + "label": "Task 2: Local Token Counting", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L194", + "community": 484, + "norm_label": "task 2: local token counting", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_task_2_local_token_counting" }, { - "label": "events", - "file_type": "code", - "source_file": "frontend/tests/App.test.jsx", - "source_location": "L68", - "community": 506, - "norm_label": "events", - "id": "tests_app_test_events" + "label": "code:python (def test_count_tokens_portuguese():)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L208", + "community": 484, + "norm_label": "code:python (def test_count_tokens_portuguese():)", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_5" }, { - "label": "onChunk", - "file_type": "code", - "source_file": "frontend/tests/App.test.jsx", - "source_location": "L84", - "community": 506, - "norm_label": "onchunk", - "id": "tests_app_test_onchunk" + "label": "code:python (# main/app/prometheus/tokenizer.py)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L224", + "community": 484, + "norm_label": "code:python (# main/app/prometheus/tokenizer.py)", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_6" }, { - "label": "onDone", - "file_type": "code", - "source_file": "frontend/tests/App.test.jsx", - "source_location": "L85", - "community": 506, - "norm_label": "ondone", - "id": "tests_app_test_ondone" + "label": "code:bash (git add requirements.txt main/app/prometheus/tokenizer.py te)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L247", + "community": 484, + "norm_label": "code:bash (git add requirements.txt main/app/prometheus/tokenizer.py te)", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_7" }, { - "label": "fullText", - "file_type": "code", - "source_file": "frontend/tests/App.test.jsx", - "source_location": "L92", - "community": 506, - "norm_label": "fulltext", - "id": "tests_app_test_fulltext" + "label": "Task 3: Graph Memory Schema", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L254", + "community": 238, + "norm_label": "task 3: graph memory schema", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_task_3_graph_memory_schema" }, { - "label": "MdocMessage.test.jsx", - "file_type": "code", - "source_file": "frontend/tests/MdocMessage.test.jsx", - "source_location": "L1", - "community": 211, - "norm_label": "mdocmessage.test.jsx", - "id": "frontend_tests_mdocmessage_test_jsx" + "label": "code:python (def test_memory_entity_tables_exist():)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L268", + "community": 238, + "norm_label": "code:python (def test_memory_entity_tables_exist():)", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_8" }, { - "label": "nodes", - "file_type": "code", - "source_file": "frontend/tests/MdocMessage.test.jsx", - "source_location": "L7", - "community": 211, - "norm_label": "nodes", - "id": "tests_mdocmessage_test_nodes" + "label": "code:python (# main/models/memory_entity.py)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L283", + "community": 238, + "norm_label": "code:python (# main/models/memory_entity.py)", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_9" }, { - "label": "{ container }", - "file_type": "code", - "source_file": "frontend/tests/MdocMessage.test.jsx", - "source_location": "L22", - "community": 211, - "norm_label": "{ container }", - "id": "tests_mdocmessage_test_container" + "label": "code:bash (git add main/models/memory_entity.py tests/test_memory_entit)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L324", + "community": 238, + "norm_label": "code:bash (git add main/models/memory_entity.py tests/test_memory_entit)", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_10" }, { - "label": "{ rerender }", - "file_type": "code", - "source_file": "frontend/tests/MdocMessage.test.jsx", - "source_location": "L40", - "community": 211, - "norm_label": "{ rerender }", - "id": "tests_mdocmessage_test_rerender" + "label": "Task 4: Entity Extraction", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L331", + "community": 239, + "norm_label": "task 4: entity extraction", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_task_4_entity_extraction" }, { - "label": "updateSummary()", - "file_type": "code", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L98", - "community": 125, - "norm_label": "updatesummary()", - "id": "prometheus_chat_updatesummary" + "label": "code:python (def test_extract_entities():)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L343", + "community": 239, + "norm_label": "code:python (def test_extract_entities():)", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_11" }, { - "label": ".has_changed()", - "file_type": "code", - "source_file": "main/app/prometheus/state.py", - "source_location": "L26", - "community": 8, - "norm_label": ".has_changed()", - "id": "prometheus_state_harnessstate_has_changed" + "label": "code:python (# main/app/prometheus/entity_extractor.py)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L360", + "community": 239, + "norm_label": "code:python (# main/app/prometheus/entity_extractor.py)", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_12" }, { - "label": ".reset_changed()", - "file_type": "code", - "source_file": "main/app/prometheus/state.py", - "source_location": "L29", - "community": 8, - "norm_label": ".reset_changed()", - "id": "prometheus_state_harnessstate_reset_changed" + "label": "code:bash (git add main/app/prometheus/entity_extractor.py tests/test_e)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L406", + "community": 239, + "norm_label": "code:bash (git add main/app/prometheus/entity_extractor.py tests/test_e)", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_13" }, { - "label": "config.json", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/config.json", - "source_location": "L1", - "community": 62, - "norm_label": "config.json", - "id": "main_utils_models_all_minilm_l6_v2_config_json" + "label": "Task 5: Graph Memory Operations", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L413", + "community": 262, + "norm_label": "task 5: graph memory operations", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_task_5_graph_memory_operations" }, { - "label": "_name_or_path", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/config.json", - "source_location": "L2", - "community": 62, - "norm_label": "_name_or_path", - "id": "all_minilm_l6_v2_config_name_or_path" + "label": "code:python (def test_link_memory_to_entities(db_session, sample_user):)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L425", + "community": 262, + "norm_label": "code:python (def test_link_memory_to_entities(db_session, sample_user):)", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_14" }, { - "label": "architectures", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/config.json", - "source_location": "L3", - "community": 62, - "norm_label": "architectures", - "id": "all_minilm_l6_v2_config_architectures" + "label": "code:python (# Add to main/app/prometheus/memory.py)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L449", + "community": 262, + "norm_label": "code:python (# add to main/app/prometheus/memory.py)", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_15" }, { - "label": "attention_probs_dropout_prob", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/config.json", - "source_location": "L6", - "community": 62, - "norm_label": "attention_probs_dropout_prob", - "id": "all_minilm_l6_v2_config_attention_probs_dropout_prob" + "label": "code:bash (git add main/app/prometheus/memory.py tests/test_memory_grap)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L499", + "community": 262, + "norm_label": "code:bash (git add main/app/prometheus/memory.py tests/test_memory_grap)", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_16" }, { - "label": "gradient_checkpointing", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/config.json", - "source_location": "L7", - "community": 62, - "norm_label": "gradient_checkpointing", - "id": "all_minilm_l6_v2_config_gradient_checkpointing" + "label": "Task 6: Hybrid Retrieval", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L506", + "community": 478, + "norm_label": "task 6: hybrid retrieval", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_task_6_hybrid_retrieval" }, { - "label": "hidden_act", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/config.json", - "source_location": "L8", - "community": 62, - "norm_label": "hidden_act", - "id": "all_minilm_l6_v2_config_hidden_act" + "label": "code:python (def test_hybrid_search_fusion():)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L519", + "community": 478, + "norm_label": "code:python (def test_hybrid_search_fusion():)", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_17" }, { - "label": "hidden_dropout_prob", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/config.json", - "source_location": "L9", - "community": 62, - "norm_label": "hidden_dropout_prob", - "id": "all_minilm_l6_v2_config_hidden_dropout_prob" + "label": "code:python (# main/app/prometheus/hybrid_search.py)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L540", + "community": 478, + "norm_label": "code:python (# main/app/prometheus/hybrid_search.py)", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_18" }, { - "label": "hidden_size", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/config.json", - "source_location": "L10", - "community": 62, - "norm_label": "hidden_size", - "id": "all_minilm_l6_v2_config_hidden_size" + "label": "code:bash (git add main/app/prometheus/hybrid_search.py tests/test_hybr)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L579", + "community": 478, + "norm_label": "code:bash (git add main/app/prometheus/hybrid_search.py tests/test_hybr)", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_19" }, { - "label": "initializer_range", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/config.json", - "source_location": "L11", - "community": 62, - "norm_label": "initializer_range", - "id": "all_minilm_l6_v2_config_initializer_range" + "label": "Task 7: Temporal Reasoning", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L586", + "community": 480, + "norm_label": "task 7: temporal reasoning", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_task_7_temporal_reasoning" }, { - "label": "intermediate_size", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/config.json", - "source_location": "L12", - "community": 62, - "norm_label": "intermediate_size", - "id": "all_minilm_l6_v2_config_intermediate_size" + "label": "code:python (def test_extract_temporal_info():)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L600", + "community": 480, + "norm_label": "code:python (def test_extract_temporal_info():)", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_20" }, { - "label": "layer_norm_eps", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/config.json", - "source_location": "L13", - "community": 62, - "norm_label": "layer_norm_eps", - "id": "all_minilm_l6_v2_config_layer_norm_eps" + "label": "code:python (# main/app/prometheus/temporal.py)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L615", + "community": 480, + "norm_label": "code:python (# main/app/prometheus/temporal.py)", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_21" }, { - "label": "max_position_embeddings", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/config.json", - "source_location": "L14", - "community": 62, - "norm_label": "max_position_embeddings", - "id": "all_minilm_l6_v2_config_max_position_embeddings" + "label": "code:bash (git add main/app/prometheus/temporal.py main/models/memory.p)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L649", + "community": 480, + "norm_label": "code:bash (git add main/app/prometheus/temporal.py main/models/memory.p)", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_22" }, { - "label": "model_type", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/config.json", - "source_location": "L15", - "community": 62, - "norm_label": "model_type", - "id": "all_minilm_l6_v2_config_model_type" + "label": "Task 8: Session Scoping", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L656", + "community": 481, + "norm_label": "task 8: session scoping", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_task_8_session_scoping" }, { - "label": "num_attention_heads", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/config.json", - "source_location": "L16", - "community": 62, - "norm_label": "num_attention_heads", - "id": "all_minilm_l6_v2_config_num_attention_heads" + "label": "code:python (def test_session_scoped_memory(db_session, sample_user):)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L670", + "community": 481, + "norm_label": "code:python (def test_session_scoped_memory(db_session, sample_user):)", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_23" }, { - "label": "num_hidden_layers", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/config.json", - "source_location": "L17", - "community": 62, - "norm_label": "num_hidden_layers", - "id": "all_minilm_l6_v2_config_num_hidden_layers" + "label": "code:python (# Add to main/models/memory.py)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L694", + "community": 481, + "norm_label": "code:python (# add to main/models/memory.py)", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_24" }, { - "label": "pad_token_id", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/config.json", - "source_location": "L18", - "community": 62, - "norm_label": "pad_token_id", - "id": "all_minilm_l6_v2_config_pad_token_id" + "label": "code:bash (git add main/models/memory.py main/app/prometheus/memory.py )", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L713", + "community": 481, + "norm_label": "code:bash (git add main/models/memory.py main/app/prometheus/memory.py )", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_25" }, { - "label": "position_embedding_type", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/config.json", - "source_location": "L19", - "community": 62, - "norm_label": "position_embedding_type", - "id": "all_minilm_l6_v2_config_position_embedding_type" + "label": "Task 9: Memory Consolidation", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L720", + "community": 483, + "norm_label": "task 9: memory consolidation", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_task_9_memory_consolidation" }, { - "label": "transformers_version", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/config.json", - "source_location": "L20", - "community": 62, - "norm_label": "transformers_version", - "id": "all_minilm_l6_v2_config_transformers_version" + "label": "code:python (def test_consolidation_preserves_decisions():)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L733", + "community": 483, + "norm_label": "code:python (def test_consolidation_preserves_decisions():)", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_26" }, { - "label": "type_vocab_size", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/config.json", - "source_location": "L21", - "community": 62, - "norm_label": "type_vocab_size", - "id": "all_minilm_l6_v2_config_type_vocab_size" + "label": "code:python (# Add to main/app/prometheus/summarizer.py)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L754", + "community": 483, + "norm_label": "code:python (# add to main/app/prometheus/summarizer.py)", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_27" }, { - "label": "use_cache", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/config.json", - "source_location": "L22", - "community": 62, - "norm_label": "use_cache", - "id": "all_minilm_l6_v2_config_use_cache" + "label": "code:bash (git add main/app/prometheus/summarizer.py tests/test_consoli)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L783", + "community": 483, + "norm_label": "code:bash (git add main/app/prometheus/summarizer.py tests/test_consoli)", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_codeblock_28" }, { - "label": "vocab_size", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/config.json", - "source_location": "L23", - "community": 62, - "norm_label": "vocab_size", - "id": "all_minilm_l6_v2_config_vocab_size" + "label": "Self-Review Checklist", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L790", + "community": 182, + "norm_label": "self-review checklist", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_self_review_checklist" }, { - "label": "config_sentence_transformers.json", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/config_sentence_transformers.json", - "source_location": "L1", - "community": 219, - "norm_label": "config_sentence_transformers.json", - "id": "main_utils_models_all_minilm_l6_v2_config_sentence_transformers_json" + "label": "Execution Handoff", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_location": "L800", + "community": 182, + "norm_label": "execution handoff", + "id": "plans_2026_07_22_mem0_vs_prometheus_memory_comparison_execution_handoff" }, { - "label": "__version__", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/config_sentence_transformers.json", - "source_location": "L2", - "community": 219, - "norm_label": "__version__", - "id": "all_minilm_l6_v2_config_sentence_transformers_version" + "label": "Search user's saved memories, preferences, and past analysis context. Use", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L18", + "community": 152, + "norm_label": "search user's saved memories, preferences, and past analysis context. use", + "id": "prometheus_tools_rationale_18" }, { - "label": "sentence_transformers", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/config_sentence_transformers.json", - "source_location": "L3", - "community": 219, - "norm_label": "sentence_transformers", - "id": "all_minilm_l6_v2_config_sentence_transformers_version_sentence_transformers" + "label": "Store a memory about the user's preferences, analysis results, or feedback.", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L44", + "community": 126, + "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", + "id": "prometheus_tools_rationale_44" }, { - "label": "transformers", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/config_sentence_transformers.json", - "source_location": "L4", - "community": 219, - "norm_label": "transformers", - "id": "all_minilm_l6_v2_config_sentence_transformers_version_transformers" + "label": "Retrieve values from the harness state. Use this to recall intermediate results,", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L81", + "community": 162, + "norm_label": "retrieve values from the harness state. use this to recall intermediate results,", + "id": "prometheus_tools_rationale_81" }, { - "label": "pytorch", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/config_sentence_transformers.json", - "source_location": "L5", - "community": 219, - "norm_label": "pytorch", - "id": "all_minilm_l6_v2_config_sentence_transformers_version_pytorch" + "label": "Store a value in the harness state for this session. Use this to save inter", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L96", + "community": 487, + "norm_label": "store a value in the harness state for this session. use this to save inter", + "id": "prometheus_tools_rationale_96" }, { - "label": "data_config.json", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/data_config.json", - "source_location": "L1", - "community": 273, - "norm_label": "data_config.json", - "id": "main_utils_models_all_minilm_l6_v2_data_config_json" + "label": "Execute Python code in an isolated sandbox. Use for quantitative analysis,", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L114", + "community": 487, + "norm_label": "execute python code in an isolated sandbox. use for quantitative analysis,", + "id": "prometheus_tools_rationale_114" }, { - "label": "modules.json", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/modules.json", - "source_location": "L1", - "community": 274, - "norm_label": "modules.json", - "id": "main_utils_models_all_minilm_l6_v2_modules_json" - }, - { - "label": "sentence_bert_config.json", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/sentence_bert_config.json", - "source_location": "L1", - "community": 260, - "norm_label": "sentence_bert_config.json", - "id": "main_utils_models_all_minilm_l6_v2_sentence_bert_config_json" + "label": "Write a file to the workspace. Use this to save data files (CSV, JSON, scri", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L146", + "community": 529, + "norm_label": "write a file to the workspace. use this to save data files (csv, json, scri", + "id": "prometheus_tools_rationale_146" }, { - "label": "max_seq_length", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/sentence_bert_config.json", - "source_location": "L2", - "community": 260, - "norm_label": "max_seq_length", - "id": "all_minilm_l6_v2_sentence_bert_config_max_seq_length" + "label": "List files in the workspace directory. Args: path: Directory pat", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L159", + "community": 525, + "norm_label": "list files in the workspace directory. args: path: directory pat", + "id": "prometheus_tools_rationale_159" }, { - "label": "do_lower_case", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/sentence_bert_config.json", - "source_location": "L3", - "community": 260, - "norm_label": "do_lower_case", - "id": "all_minilm_l6_v2_sentence_bert_config_do_lower_case" + "label": "PROMETHEUS_REGRADE.md", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", + "source_location": "L1", + "community": 20, + "norm_label": "prometheus_regrade.md", + "id": "prometheus_regrade_md" }, { - "label": "special_tokens_map.json", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/special_tokens_map.json", + "label": "Prometheus Regrade \u2014 Full Code Review", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", "source_location": "L1", - "community": 196, - "norm_label": "special_tokens_map.json", - "id": "main_utils_models_all_minilm_l6_v2_special_tokens_map_json" + "community": 20, + "norm_label": "prometheus regrade \u2014 full code review", + "id": "server_prometheus_regrade_prometheus_regrade_full_code_review" }, { - "label": "unk_token", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/special_tokens_map.json", - "source_location": "L1", - "community": 196, - "norm_label": "unk_token", - "id": "all_minilm_l6_v2_special_tokens_map_unk_token" + "label": "Grade Summary", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", + "source_location": "L10", + "community": 20, + "norm_label": "grade summary", + "id": "server_prometheus_regrade_grade_summary" }, { - "label": "sep_token", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/special_tokens_map.json", - "source_location": "L1", - "community": 196, - "norm_label": "sep_token", - "id": "all_minilm_l6_v2_special_tokens_map_sep_token" + "label": "1. Memory System (B+)", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", + "source_location": "L25", + "community": 20, + "norm_label": "1. memory system (b+)", + "id": "server_prometheus_regrade_1_memory_system_b" }, { - "label": "pad_token", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/special_tokens_map.json", - "source_location": "L1", - "community": 196, - "norm_label": "pad_token", - "id": "all_minilm_l6_v2_special_tokens_map_pad_token" + "label": "What's Good", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", + "source_location": "L27", + "community": 20, + "norm_label": "what's good", + "id": "server_prometheus_regrade_what_s_good" }, { - "label": "cls_token", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/special_tokens_map.json", - "source_location": "L1", - "community": 196, - "norm_label": "cls_token", - "id": "all_minilm_l6_v2_special_tokens_map_cls_token" + "label": "Bugs Found", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", + "source_location": "L37", + "community": 20, + "norm_label": "bugs found", + "id": "server_prometheus_regrade_bugs_found" }, { - "label": "mask_token", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/special_tokens_map.json", - "source_location": "L1", - "community": 196, - "norm_label": "mask_token", - "id": "all_minilm_l6_v2_special_tokens_map_mask_token" + "label": "Recommendations", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", + "source_location": "L42", + "community": 20, + "norm_label": "recommendations", + "id": "server_prometheus_regrade_recommendations" }, { - "label": "tokenizer.json", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 154, - "norm_label": "tokenizer.json", - "id": "main_utils_models_all_minilm_l6_v2_tokenizer_json" + "label": "2. Summarizer/Episodes (B)", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", + "source_location": "L49", + "community": 20, + "norm_label": "2. summarizer/episodes (b)", + "id": "server_prometheus_regrade_2_summarizer_episodes_b" }, { - "label": "version", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 154, - "norm_label": "version", - "id": "all_minilm_l6_v2_tokenizer_version" + "label": "What's Good", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", + "source_location": "L51", + "community": 20, + "norm_label": "what's good", + "id": "server_prometheus_regrade_what_s_good_51" }, { - "label": "truncation", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 237, - "norm_label": "truncation", - "id": "all_minilm_l6_v2_tokenizer_truncation" + "label": "Issues Found", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", + "source_location": "L59", + "community": 20, + "norm_label": "issues found", + "id": "server_prometheus_regrade_issues_found" }, { - "label": "max_length", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 237, - "norm_label": "max_length", - "id": "all_minilm_l6_v2_tokenizer_truncation_max_length" + "label": "Recommendations", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", + "source_location": "L66", + "community": 20, + "norm_label": "recommendations", + "id": "server_prometheus_regrade_recommendations_66" }, { - "label": "strategy", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 237, - "norm_label": "strategy", - "id": "all_minilm_l6_v2_tokenizer_truncation_strategy" + "label": "3. Loop Events (A-)", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", + "source_location": "L74", + "community": 20, + "norm_label": "3. loop events (a-)", + "id": "server_prometheus_regrade_3_loop_events_a" }, { - "label": "stride", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 237, - "norm_label": "stride", - "id": "all_minilm_l6_v2_tokenizer_truncation_stride" + "label": "What's Good", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", + "source_location": "L76", + "community": 20, + "norm_label": "what's good", + "id": "server_prometheus_regrade_what_s_good_76" }, { - "label": "padding", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 170, - "norm_label": "padding", - "id": "all_minilm_l6_v2_tokenizer_padding" + "label": "Issues Found", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", + "source_location": "L85", + "community": 20, + "norm_label": "issues found", + "id": "server_prometheus_regrade_issues_found_85" }, { - "label": "strategy", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 170, - "norm_label": "strategy", - "id": "all_minilm_l6_v2_tokenizer_padding_strategy" + "label": "Recommendations", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", + "source_location": "L90", + "community": 20, + "norm_label": "recommendations", + "id": "server_prometheus_regrade_recommendations_90" }, { - "label": "Fixed", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 170, - "norm_label": "fixed", - "id": "all_minilm_l6_v2_tokenizer_strategy_fixed" + "label": "4. Core Architecture (B+)", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", + "source_location": "L97", + "community": 20, + "norm_label": "4. core architecture (b+)", + "id": "server_prometheus_regrade_4_core_architecture_b" }, { - "label": "direction", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 170, - "norm_label": "direction", - "id": "all_minilm_l6_v2_tokenizer_padding_direction" + "label": "What's Good", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", + "source_location": "L99", + "community": 20, + "norm_label": "what's good", + "id": "server_prometheus_regrade_what_s_good_99" }, { - "label": "pad_to_multiple_of", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 170, - "norm_label": "pad_to_multiple_of", - "id": "all_minilm_l6_v2_tokenizer_padding_pad_to_multiple_of" + "label": "Issues Found", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", + "source_location": "L107", + "community": 20, + "norm_label": "issues found", + "id": "server_prometheus_regrade_issues_found_107" }, { - "label": "pad_id", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 170, - "norm_label": "pad_id", - "id": "all_minilm_l6_v2_tokenizer_padding_pad_id" + "label": "Recommendations", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", + "source_location": "L113", + "community": 20, + "norm_label": "recommendations", + "id": "server_prometheus_regrade_recommendations_113" }, { - "label": "pad_type_id", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 170, - "norm_label": "pad_type_id", - "id": "all_minilm_l6_v2_tokenizer_padding_pad_type_id" + "label": "5. Security (B+)", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", + "source_location": "L121", + "community": 20, + "norm_label": "5. security (b+)", + "id": "server_prometheus_regrade_5_security_b" }, { - "label": "pad_token", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 170, - "norm_label": "pad_token", - "id": "all_minilm_l6_v2_tokenizer_padding_pad_token" + "label": "What's Good", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", + "source_location": "L123", + "community": 20, + "norm_label": "what's good", + "id": "server_prometheus_regrade_what_s_good_123" }, { - "label": "added_tokens", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 154, - "norm_label": "added_tokens", - "id": "all_minilm_l6_v2_tokenizer_added_tokens" + "label": "Issues Found", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", + "source_location": "L133", + "community": 20, + "norm_label": "issues found", + "id": "server_prometheus_regrade_issues_found_133" }, { - "label": "normalizer", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 193, - "norm_label": "normalizer", - "id": "all_minilm_l6_v2_tokenizer_normalizer" + "label": "Recommendations", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", + "source_location": "L138", + "community": 20, + "norm_label": "recommendations", + "id": "server_prometheus_regrade_recommendations_138" }, { - "label": "type", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 193, - "norm_label": "type", - "id": "all_minilm_l6_v2_tokenizer_normalizer_type" + "label": "6. Performance (B)", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", + "source_location": "L145", + "community": 20, + "norm_label": "6. performance (b)", + "id": "server_prometheus_regrade_6_performance_b" }, { - "label": "clean_text", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 193, - "norm_label": "clean_text", - "id": "all_minilm_l6_v2_tokenizer_normalizer_clean_text" + "label": "What's Good", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", + "source_location": "L147", + "community": 20, + "norm_label": "what's good", + "id": "server_prometheus_regrade_what_s_good_147" }, { - "label": "handle_chinese_chars", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 193, - "norm_label": "handle_chinese_chars", - "id": "all_minilm_l6_v2_tokenizer_normalizer_handle_chinese_chars" + "label": "Issues Found", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", + "source_location": "L154", + "community": 20, + "norm_label": "issues found", + "id": "server_prometheus_regrade_issues_found_154" }, { - "label": "strip_accents", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 193, - "norm_label": "strip_accents", - "id": "all_minilm_l6_v2_tokenizer_normalizer_strip_accents" + "label": "Recommendations", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", + "source_location": "L161", + "community": 20, + "norm_label": "recommendations", + "id": "server_prometheus_regrade_recommendations_161" }, { - "label": "lowercase", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 193, - "norm_label": "lowercase", - "id": "all_minilm_l6_v2_tokenizer_normalizer_lowercase" + "label": "7. Code Quality (B)", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", + "source_location": "L169", + "community": 20, + "norm_label": "7. code quality (b)", + "id": "server_prometheus_regrade_7_code_quality_b" }, { - "label": "pre_tokenizer", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 154, - "norm_label": "pre_tokenizer", - "id": "all_minilm_l6_v2_tokenizer_pre_tokenizer" + "label": "What's Good", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", + "source_location": "L171", + "community": 20, + "norm_label": "what's good", + "id": "server_prometheus_regrade_what_s_good_171" }, { - "label": "type", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 154, - "norm_label": "type", - "id": "all_minilm_l6_v2_tokenizer_pre_tokenizer_type" + "label": "Issues Found", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", + "source_location": "L179", + "community": 20, + "norm_label": "issues found", + "id": "server_prometheus_regrade_issues_found_179" }, { - "label": "post_processor", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 236, - "norm_label": "post_processor", - "id": "all_minilm_l6_v2_tokenizer_post_processor" + "label": "Recommendations", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", + "source_location": "L188", + "community": 20, + "norm_label": "recommendations", + "id": "server_prometheus_regrade_recommendations_188" }, { - "label": "type", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 236, - "norm_label": "type", - "id": "all_minilm_l6_v2_tokenizer_post_processor_type" + "label": "Top 5 Priority Fixes", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", + "source_location": "L196", + "community": 20, + "norm_label": "top 5 priority fixes", + "id": "server_prometheus_regrade_top_5_priority_fixes" }, { - "label": "single", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 236, - "norm_label": "single", - "id": "all_minilm_l6_v2_tokenizer_post_processor_single" + "label": "What Changed Since Last Grade", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", + "source_location": "L208", + "community": 20, + "norm_label": "what changed since last grade", + "id": "server_prometheus_regrade_what_changed_since_last_grade" }, { - "label": "pair", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 236, - "norm_label": "pair", - "id": "all_minilm_l6_v2_tokenizer_post_processor_pair" + "label": "Before (C+)", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", + "source_location": "L210", + "community": 20, + "norm_label": "before (c+)", + "id": "server_prometheus_regrade_before_c" }, { - "label": "special_tokens", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 155, - "norm_label": "special_tokens", - "id": "all_minilm_l6_v2_tokenizer_post_processor_special_tokens" + "label": "After (B+)", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", + "source_location": "L218", + "community": 20, + "norm_label": "after (b+)", + "id": "server_prometheus_regrade_after_b" }, { - "label": "[CLS]", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 155, - "norm_label": "[cls]", - "id": "all_minilm_l6_v2_tokenizer_special_tokens_cls" + "label": "Remaining for A+", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", + "source_location": "L230", + "community": 20, + "norm_label": "remaining for a+", + "id": "server_prometheus_regrade_remaining_for_a" }, { - "label": "id", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "label": "2026-07-20-persist-loop-events.md", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", "source_location": "L1", - "community": 155, - "norm_label": "id", - "id": "all_minilm_l6_v2_tokenizer_cls_id" + "community": 38, + "norm_label": "2026-07-20-persist-loop-events.md", + "id": "docs_superpowers_plans_2026_07_20_persist_loop_events_md" }, { - "label": "ids", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "label": "Persist Agent Loop Events to DB", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", "source_location": "L1", - "community": 155, - "norm_label": "ids", - "id": "all_minilm_l6_v2_tokenizer_cls_ids" + "community": 38, + "norm_label": "persist agent loop events to db", + "id": "plans_2026_07_20_persist_loop_events_persist_agent_loop_events_to_db" }, { - "label": "tokens", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 155, - "norm_label": "tokens", - "id": "all_minilm_l6_v2_tokenizer_cls_tokens" + "label": "Context", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", + "source_location": "L13", + "community": 38, + "norm_label": "context", + "id": "plans_2026_07_20_persist_loop_events_context" }, { - "label": "[SEP]", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 155, - "norm_label": "[sep]", - "id": "all_minilm_l6_v2_tokenizer_special_tokens_sep" + "label": "Design", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", + "source_location": "L21", + "community": 38, + "norm_label": "design", + "id": "plans_2026_07_20_persist_loop_events_design" }, { - "label": "id", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 155, - "norm_label": "id", - "id": "all_minilm_l6_v2_tokenizer_sep_id" + "label": "code:json ([)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", + "source_location": "L30", + "community": 38, + "norm_label": "code:json ([)", + "id": "plans_2026_07_20_persist_loop_events_codeblock_1" }, { - "label": "ids", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 155, - "norm_label": "ids", - "id": "all_minilm_l6_v2_tokenizer_sep_ids" + "label": "Task 1: Save loop events to DB in streamMessage()", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", + "source_location": "L41", + "community": 38, + "norm_label": "task 1: save loop events to db in streammessage()", + "id": "plans_2026_07_20_persist_loop_events_task_1_save_loop_events_to_db_in_streammessage" }, { - "label": "tokens", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 155, - "norm_label": "tokens", - "id": "all_minilm_l6_v2_tokenizer_sep_tokens" + "label": "code:python (@classmethod)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", + "source_location": "L54", + "community": 38, + "norm_label": "code:python (@classmethod)", + "id": "plans_2026_07_20_persist_loop_events_codeblock_2" }, { - "label": "decoder", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 154, - "norm_label": "decoder", - "id": "all_minilm_l6_v2_tokenizer_decoder" + "label": "code:python (case \"tool_call\":)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", + "source_location": "L80", + "community": 38, + "norm_label": "code:python (case \"tool_call\":)", + "id": "plans_2026_07_20_persist_loop_events_codeblock_3" }, { - "label": "type", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 154, - "norm_label": "type", - "id": "all_minilm_l6_v2_tokenizer_decoder_type" + "label": "code:python (case \"turn_end\":)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", + "source_location": "L106", + "community": 38, + "norm_label": "code:python (case \"turn_end\":)", + "id": "plans_2026_07_20_persist_loop_events_codeblock_4" }, { - "label": "prefix", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 154, - "norm_label": "prefix", - "id": "all_minilm_l6_v2_tokenizer_decoder_prefix" + "label": "code:bash (git add main/app/prometheus/agent.py main/app/prometheus/cha)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", + "source_location": "L130", + "community": 38, + "norm_label": "code:bash (git add main/app/prometheus/agent.py main/app/prometheus/cha)", + "id": "plans_2026_07_20_persist_loop_events_codeblock_5" }, { - "label": "cleanup", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 154, - "norm_label": "cleanup", - "id": "all_minilm_l6_v2_tokenizer_decoder_cleanup" + "label": "Task 2: Filter loop events from LLM history", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", + "source_location": "L137", + "community": 38, + "norm_label": "task 2: filter loop events from llm history", + "id": "plans_2026_07_20_persist_loop_events_task_2_filter_loop_events_from_llm_history" }, { - "label": "model", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 220, - "norm_label": "model", - "id": "all_minilm_l6_v2_tokenizer_model" + "label": "code:python (@classmethod)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", + "source_location": "L150", + "community": 38, + "norm_label": "code:python (@classmethod)", + "id": "plans_2026_07_20_persist_loop_events_codeblock_6" }, { - "label": "type", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 220, - "norm_label": "type", - "id": "all_minilm_l6_v2_tokenizer_model_type" + "label": "code:bash (git add main/app/prometheus/chat.py)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", + "source_location": "L173", + "community": 38, + "norm_label": "code:bash (git add main/app/prometheus/chat.py)", + "id": "plans_2026_07_20_persist_loop_events_codeblock_7" }, { - "label": "unk_token", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 220, - "norm_label": "unk_token", - "id": "all_minilm_l6_v2_tokenizer_model_unk_token" + "label": "Task 3: Return full history (including loop events) to frontend", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", + "source_location": "L180", + "community": 38, + "norm_label": "task 3: return full history (including loop events) to frontend", + "id": "plans_2026_07_20_persist_loop_events_task_3_return_full_history_including_loop_events_to_frontend" }, { - "label": "continuing_subword_prefix", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 220, - "norm_label": "continuing_subword_prefix", - "id": "all_minilm_l6_v2_tokenizer_model_continuing_subword_prefix" + "label": "code:python (@router.get(\"/history/{sessionId}/llm\"))", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", + "source_location": "L197", + "community": 38, + "norm_label": "code:python (@router.get(\"/history/{sessionid}/llm\"))", + "id": "plans_2026_07_20_persist_loop_events_codeblock_8" }, { - "label": "max_input_chars_per_word", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 220, - "norm_label": "max_input_chars_per_word", - "id": "all_minilm_l6_v2_tokenizer_model_max_input_chars_per_word" + "label": "code:bash (git add main/controller/prometheus_controller.py)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", + "source_location": "L213", + "community": 38, + "norm_label": "code:bash (git add main/controller/prometheus_controller.py)", + "id": "plans_2026_07_20_persist_loop_events_codeblock_9" }, { - "label": "vocab", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "vocab", - "id": "all_minilm_l6_v2_tokenizer_model_vocab" + "label": "Task 4: Frontend \u2014 Load and display loop events from history", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", + "source_location": "L220", + "community": 38, + "norm_label": "task 4: frontend \u2014 load and display loop events from history", + "id": "plans_2026_07_20_persist_loop_events_task_4_frontend_load_and_display_loop_events_from_history" }, { - "label": "[PAD]", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[pad]", - "id": "all_minilm_l6_v2_tokenizer_vocab_pad" + "label": "code:javascript (const loadHistory = async (sid) => {)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", + "source_location": "L234", + "community": 38, + "norm_label": "code:javascript (const loadhistory = async (sid) => {)", + "id": "plans_2026_07_20_persist_loop_events_codeblock_10" }, { - "label": "[unused0]", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused0]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused0" + "label": "code:jsx (export default function MessageList({ messages, toolEvents, )", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", + "source_location": "L293", + "community": 38, + "norm_label": "code:jsx (export default function messagelist({ messages, toolevents, )", + "id": "plans_2026_07_20_persist_loop_events_codeblock_11" }, { - "label": "[unused1]", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused1]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused1" + "label": "code:javascript (const loadHistory = async (sid) => {)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", + "source_location": "L343", + "community": 38, + "norm_label": "code:javascript (const loadhistory = async (sid) => {)", + "id": "plans_2026_07_20_persist_loop_events_codeblock_12" }, { - "label": "[unused2]", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused2]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused2" + "label": "code:jsx (export default function AgentLoop({ toolEvents, turnMetrics )", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", + "source_location": "L403", + "community": 38, + "norm_label": "code:jsx (export default function agentloop({ toolevents, turnmetrics )", + "id": "plans_2026_07_20_persist_loop_events_codeblock_13" }, { - "label": "[unused3]", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused3]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused3" + "label": "code:bash (git add frontend/src/App.jsx frontend/src/components/Message)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", + "source_location": "L457", + "community": 38, + "norm_label": "code:bash (git add frontend/src/app.jsx frontend/src/components/message)", + "id": "plans_2026_07_20_persist_loop_events_codeblock_14" }, { - "label": "[unused4]", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused4]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused4" + "label": "Task 5: Test the full flow", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", + "source_location": "L464", + "community": 38, + "norm_label": "task 5: test the full flow", + "id": "plans_2026_07_20_persist_loop_events_task_5_test_the_full_flow" }, { - "label": "[unused5]", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused5]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused5" + "label": "code:bash (docker-compose up -d --build)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", + "source_location": "L471", + "community": 38, + "norm_label": "code:bash (docker-compose up -d --build)", + "id": "plans_2026_07_20_persist_loop_events_codeblock_15" }, { - "label": "[unused6]", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused6]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused6" + "label": "code:sql (SELECT COUNT(*) FROM prometheus WHERE JSON_CONTAINS_PATH(his)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", + "source_location": "L505", + "community": 38, + "norm_label": "code:sql (select count(*) from prometheus where json_contains_path(his)", + "id": "plans_2026_07_20_persist_loop_events_codeblock_16" }, { - "label": "[unused7]", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused7]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused7" + "label": "code:bash (git add -A)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", + "source_location": "L513", + "community": 38, + "norm_label": "code:bash (git add -a)", + "id": "plans_2026_07_20_persist_loop_events_codeblock_17" }, { - "label": "[unused8]", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused8]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused8" + "label": "Summary of Changes", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", + "source_location": "L520", + "community": 38, + "norm_label": "summary of changes", + "id": "plans_2026_07_20_persist_loop_events_summary_of_changes" }, { - "label": "[unused9]", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused9]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused9" + "label": "Global Constraints", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", + "source_location": "L534", + "community": 38, + "norm_label": "global constraints", + "id": "plans_2026_07_20_persist_loop_events_global_constraints" }, { - "label": "[unused10]", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "label": "Summarize conversation history into episode summaries.", + "file_type": "rationale", + "source_file": "main/app/prometheus/summarizer.py", "source_location": "L1", - "community": 0, - "norm_label": "[unused10]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused10" + "community": 87, + "norm_label": "summarize conversation history into episode summaries.", + "id": "prometheus_summarizer_rationale_1" }, { - "label": "[unused11]", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused11]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused11" + "label": "Count tokens using Gemini's local tokenizer. Falls back to len(text)//3 if", + "file_type": "rationale", + "source_file": "main/app/prometheus/summarizer.py", + "source_location": "L37", + "community": 87, + "norm_label": "count tokens using gemini's local tokenizer. falls back to len(text)//3 if", + "id": "prometheus_summarizer_rationale_37" }, { - "label": "[unused12]", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused12]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused12" + "label": "Check if accumulated tokens exceed episode threshold.", + "file_type": "rationale", + "source_file": "main/app/prometheus/summarizer.py", + "source_location": "L124", + "community": 87, + "norm_label": "check if accumulated tokens exceed episode threshold.", + "id": "prometheus_summarizer_rationale_124" }, { - "label": "[unused13]", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused13]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused13" + "label": "Get messages since the last episode for summarization.", + "file_type": "rationale", + "source_file": "main/app/prometheus/summarizer.py", + "source_location": "L131", + "community": 87, + "norm_label": "get messages since the last episode for summarization.", + "id": "prometheus_summarizer_rationale_131" }, { - "label": "[unused14]", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused14]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused14" + "label": "Merge oldest episodes when count exceeds soft cap. Keeps the most recen", + "file_type": "rationale", + "source_file": "main/app/prometheus/summarizer.py", + "source_location": "L143", + "community": 87, + "norm_label": "merge oldest episodes when count exceeds soft cap. keeps the most recen", + "id": "prometheus_summarizer_rationale_143" }, { - "label": "[unused15]", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused15]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused15" + "label": "Merge multiple episodes into one via Gemini.", + "file_type": "rationale", + "source_file": "main/app/prometheus/summarizer.py", + "source_location": "L161", + "community": 87, + "norm_label": "merge multiple episodes into one via gemini.", + "id": "prometheus_summarizer_rationale_161" }, { - "label": "[unused16]", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused16]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused16" + "label": "Check if accumulated tokens exceed episode threshold.", + "file_type": "rationale", + "source_file": "main/app/prometheus/summarizer.py", + "source_location": "L125", + "community": 87, + "norm_label": "check if accumulated tokens exceed episode threshold.", + "id": "prometheus_summarizer_rationale_125" }, { - "label": "[unused17]", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused17]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused17" + "label": "Get messages since the last episode for summarization.", + "file_type": "rationale", + "source_file": "main/app/prometheus/summarizer.py", + "source_location": "L132", + "community": 87, + "norm_label": "get messages since the last episode for summarization.", + "id": "prometheus_summarizer_rationale_132" }, { - "label": "[unused18]", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused18]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused18" + "label": "Merge oldest episodes when count exceeds soft cap. Keeps the most recen", + "file_type": "rationale", + "source_file": "main/app/prometheus/summarizer.py", + "source_location": "L144", + "community": 87, + "norm_label": "merge oldest episodes when count exceeds soft cap. keeps the most recen", + "id": "prometheus_summarizer_rationale_144" }, { - "label": "[unused19]", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused19]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused19" + "label": "Merge multiple episodes into one via Gemini.", + "file_type": "rationale", + "source_file": "main/app/prometheus/summarizer.py", + "source_location": "L162", + "community": 87, + "norm_label": "merge multiple episodes into one via gemini.", + "id": "prometheus_summarizer_rationale_162" }, { - "label": "[unused20]", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused20]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused20" + "label": "Check if accumulated tokens exceed episode threshold.", + "file_type": "rationale", + "source_file": "main/app/prometheus/summarizer.py", + "source_location": "L101", + "community": 87, + "norm_label": "check if accumulated tokens exceed episode threshold.", + "id": "prometheus_summarizer_rationale_101" }, { - "label": "[unused21]", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused21]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused21" + "label": "Get messages since the last episode for summarization.", + "file_type": "rationale", + "source_file": "main/app/prometheus/summarizer.py", + "source_location": "L108", + "community": 87, + "norm_label": "get messages since the last episode for summarization.", + "id": "prometheus_summarizer_rationale_108" }, { - "label": "[unused22]", + "label": "_parse_date()", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused22]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused22" + "source_file": "main/app/stocks_api/util.py", + "source_location": "L27", + "community": 215, + "norm_label": "_parse_date()", + "id": "stocks_api_util_parse_date" }, { - "label": "[unused23]", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused23]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused23" + "label": "Discover available field names before querying /historical or /fundamental.", + "file_type": "rationale", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L26", + "community": 54, + "norm_label": "discover available field names before querying /historical or /fundamental.", + "id": "controller_stocksapi_controller_rationale_26" }, { - "label": "[unused24]", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused24]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused24" + "label": "Get year-based historical financial data for Brazilian B3 stocks. Returns", + "file_type": "rationale", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L66", + "community": 197, + "norm_label": "get year-based historical financial data for brazilian b3 stocks. returns", + "id": "controller_stocksapi_controller_rationale_66" }, { - "label": "[unused25]", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused25]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused25" + "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": "L124", + "community": 157, + "norm_label": "get point-in-time fundamental/valuation data for brazilian b3 stocks. ret", + "id": "controller_stocksapi_controller_rationale_124" }, { - "label": "[unused26]", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused26]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused26" + "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": "L185", + "community": 169, + "norm_label": "get 10-year daily price history (cotation) for brazilian b3 stocks. retur", + "id": "controller_stocksapi_controller_rationale_185" }, { - "label": "[unused27]", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused27]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused27" + "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": "L233", + "community": 81, + "norm_label": "get real-time price quotation for a single brazilian b3 stock. returns th", + "id": "controller_stocksapi_controller_rationale_233" }, { - "label": "[unused28]", + "label": ".get()", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused28]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused28" + "source_file": "config.py", + "source_location": "L24", + "community": 102, + "norm_label": ".get()", + "id": "server_config_basemansasettings_get" }, { - "label": "[unused29]", + "label": ".__getitem__()", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused29]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused29" + "source_file": "config.py", + "source_location": "L54", + "community": 102, + "norm_label": ".__getitem__()", + "id": "server_config_usersettings_getitem" }, { - "label": "[unused30]", + "label": ".__getitem__()", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused30]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused30" + "source_file": "config.py", + "source_location": "L73", + "community": 102, + "norm_label": ".__getitem__()", + "id": "server_config_stocksapisettings_getitem" }, { - "label": "[unused31]", + "label": ".__getitem__()", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused31]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused31" + "source_file": "config.py", + "source_location": "L92", + "community": 102, + "norm_label": ".__getitem__()", + "id": "server_config_prometheussettings_getitem" }, { - "label": "[unused32]", + "label": ".__getitem__()", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused32]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused32" + "source_file": "config.py", + "source_location": "L105", + "community": 102, + "norm_label": ".__getitem__()", + "id": "server_config_scrapersettings_getitem" }, { - "label": "[unused33]", + "label": ".__getitem__()", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused33]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused33" + "source_file": "config.py", + "source_location": "L114", + "community": 102, + "norm_label": ".__getitem__()", + "id": "server_config_discordsettings_getitem" }, { - "label": "[unused34]", + "label": "generateFingerprint()", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused34]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused34" + "source_file": "main/app/authentication/device.py", + "source_location": "L128", + "community": 1, + "norm_label": "generatefingerprint()", + "id": "authentication_device_generatefingerprint" }, { - "label": "[unused35]", + "label": ".emit_tool_call()", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused35]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused35" + "source_file": "main/app/prometheus/events.py", + "source_location": "L11", + "community": 12, + "norm_label": ".emit_tool_call()", + "id": "prometheus_events_looplogger_emit_tool_call" }, { - "label": "[unused36]", + "label": ".emit_tool_result()", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused36]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused36" + "source_file": "main/app/prometheus/events.py", + "source_location": "L22", + "community": 12, + "norm_label": ".emit_tool_result()", + "id": "prometheus_events_looplogger_emit_tool_result" }, { - "label": "[unused37]", + "label": ".emit_turn_end()", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused37]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused37" + "source_file": "main/app/prometheus/events.py", + "source_location": "L33", + "community": 12, + "norm_label": ".emit_turn_end()", + "id": "prometheus_events_looplogger_emit_turn_end" }, { - "label": "[unused38]", + "label": ".flush()", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused38]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused38" + "source_file": "main/app/prometheus/events.py", + "source_location": "L43", + "community": 12, + "norm_label": ".flush()", + "id": "prometheus_events_looplogger_flush" }, { - "label": "[unused39]", + "label": "executeWithWorkspace()", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused39]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused39" + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L161", + "community": 69, + "norm_label": "executewithworkspace()", + "id": "prometheus_sandbox_executewithworkspace" }, { - "label": "[unused40]", + "label": "isQuotaExceeded()", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused40]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused40" + "source_file": "main/app/stocks_api/key.py", + "source_location": "L22", + "community": 37, + "norm_label": "isquotaexceeded()", + "id": "stocks_api_key_isquotaexceeded" }, { - "label": "[unused41]", + "label": "needsReset()", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused41]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused41" + "source_file": "main/app/stocks_api/key.py", + "source_location": "L26", + "community": 37, + "norm_label": "needsreset()", + "id": "stocks_api_key_needsreset" }, { - "label": "[unused42]", + "label": "resetQuota()", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused42]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused42" + "source_file": "main/app/stocks_api/key.py", + "source_location": "L37", + "community": 37, + "norm_label": "resetquota()", + "id": "stocks_api_key_resetquota" }, { - "label": "[unused43]", + "label": "incrementUsage()", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused43]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused43" + "source_file": "main/app/stocks_api/key.py", + "source_location": "L42", + "community": 37, + "norm_label": "incrementusage()", + "id": "stocks_api_key_incrementusage" }, { - "label": "[unused44]", + "label": "getRemainingQuota()", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused44]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused44" + "source_file": "main/app/stocks_api/key.py", + "source_location": "L46", + "community": 37, + "norm_label": "getremainingquota()", + "id": "stocks_api_key_getremainingquota" }, { - "label": "[unused45]", + "label": "keyToDict()", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused45]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused45" + "source_file": "main/app/stocks_api/key.py", + "source_location": "L50", + "community": 37, + "norm_label": "keytodict()", + "id": "stocks_api_key_keytodict" }, { - "label": "[unused46]", + "label": "parseDateStart()", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused46]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused46" + "source_file": "main/app/stocks_api/util.py", + "source_location": "L39", + "community": 215, + "norm_label": "parsedatestart()", + "id": "stocks_api_util_parsedatestart" }, { - "label": "[unused47]", + "label": "parseDateEnd()", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused47]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused47" + "source_file": "main/app/stocks_api/util.py", + "source_location": "L43", + "community": 215, + "norm_label": "parsedateend()", + "id": "stocks_api_util_parsedateend" }, { - "label": "[unused48]", + "label": ".toDict()", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused48]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused48" + "source_file": "main/app/prometheus/state.py", + "source_location": "L18", + "community": 8, + "norm_label": ".todict()", + "id": "prometheus_state_harnessstate_toDict" }, { - "label": "[unused49]", + "label": ".toContext()", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused49]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused49" + "source_file": "main/app/prometheus/state.py", + "source_location": "L21", + "community": 8, + "norm_label": ".tocontext()", + "id": "prometheus_state_harnessstate_toContext" }, { - "label": "[unused50]", + "label": ".hasChanged()", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused50]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused50" + "source_file": "main/app/prometheus/state.py", + "source_location": "L26", + "community": 8, + "norm_label": ".haschanged()", + "id": "prometheus_state_harnessstate_hasChanged" }, { - "label": "[unused51]", + "label": ".resetChanged()", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused51]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused51" + "source_file": "main/app/prometheus/state.py", + "source_location": "L29", + "community": 8, + "norm_label": ".resetchanged()", + "id": "prometheus_state_harnessstate_resetChanged" }, { - "label": "[unused52]", + "label": "api.test.js", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_file": "frontend/tests/api.test.js", "source_location": "L1", - "community": 0, - "norm_label": "[unused52]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused52" + "community": 505, + "norm_label": "api.test.js", + "id": "frontend_tests_api_test_js" }, { - "label": "[unused53]", + "label": "createMockReadableStream()", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused53]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused53" + "source_file": "frontend/tests/api.test.js", + "source_location": "L4", + "community": 505, + "norm_label": "createmockreadablestream()", + "id": "tests_api_test_createmockreadablestream" }, { - "label": "[unused54]", + "label": "onChunk", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused54]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused54" + "source_file": "frontend/tests/api.test.js", + "source_location": "L22", + "community": 505, + "norm_label": "onchunk", + "id": "tests_api_test_onchunk" }, { - "label": "[unused55]", + "label": "onDone", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused55]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused55" + "source_file": "frontend/tests/api.test.js", + "source_location": "L23", + "community": 505, + "norm_label": "ondone", + "id": "tests_api_test_ondone" }, { - "label": "[unused56]", + "label": "onError", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused56]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused56" + "source_file": "frontend/tests/api.test.js", + "source_location": "L24", + "community": 505, + "norm_label": "onerror", + "id": "tests_api_test_onerror" }, { - "label": "[unused57]", + "label": "events", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused57]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused57" + "source_file": "frontend/tests/api.test.js", + "source_location": "L117", + "community": 505, + "norm_label": "events", + "id": "tests_api_test_events" }, { - "label": "[unused58]", + "label": "App.test.jsx", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_file": "frontend/tests/App.test.jsx", "source_location": "L1", - "community": 0, - "norm_label": "[unused58]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused58" + "community": 506, + "norm_label": "app.test.jsx", + "id": "frontend_tests_app_test_jsx" }, { - "label": "[unused59]", + "label": "chunks", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused59]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused59" + "source_file": "frontend/tests/App.test.jsx", + "source_location": "L40", + "community": 506, + "norm_label": "chunks", + "id": "tests_app_test_chunks" }, { - "label": "[unused60]", + "label": "receivedChunks", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused60]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused60" + "source_file": "frontend/tests/App.test.jsx", + "source_location": "L66", + "community": 506, + "norm_label": "receivedchunks", + "id": "tests_app_test_receivedchunks" }, { - "label": "[unused61]", + "label": "events", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused61]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused61" + "source_file": "frontend/tests/App.test.jsx", + "source_location": "L68", + "community": 506, + "norm_label": "events", + "id": "tests_app_test_events" }, { - "label": "[unused62]", + "label": "onChunk", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused62]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused62" + "source_file": "frontend/tests/App.test.jsx", + "source_location": "L84", + "community": 506, + "norm_label": "onchunk", + "id": "tests_app_test_onchunk" }, { - "label": "[unused63]", + "label": "onDone", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused63]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused63" + "source_file": "frontend/tests/App.test.jsx", + "source_location": "L85", + "community": 506, + "norm_label": "ondone", + "id": "tests_app_test_ondone" }, { - "label": "[unused64]", + "label": "fullText", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused64]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused64" + "source_file": "frontend/tests/App.test.jsx", + "source_location": "L92", + "community": 506, + "norm_label": "fulltext", + "id": "tests_app_test_fulltext" }, { - "label": "[unused65]", + "label": "MdocMessage.test.jsx", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_file": "frontend/tests/MdocMessage.test.jsx", "source_location": "L1", - "community": 0, - "norm_label": "[unused65]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused65" + "community": 211, + "norm_label": "mdocmessage.test.jsx", + "id": "frontend_tests_mdocmessage_test_jsx" }, { - "label": "[unused66]", + "label": "nodes", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused66]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused66" + "source_file": "frontend/tests/MdocMessage.test.jsx", + "source_location": "L7", + "community": 211, + "norm_label": "nodes", + "id": "tests_mdocmessage_test_nodes" }, { - "label": "[unused67]", + "label": "{ container }", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused67]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused67" + "source_file": "frontend/tests/MdocMessage.test.jsx", + "source_location": "L22", + "community": 211, + "norm_label": "{ container }", + "id": "tests_mdocmessage_test_container" }, { - "label": "[unused68]", + "label": "{ rerender }", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused68]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused68" + "source_file": "frontend/tests/MdocMessage.test.jsx", + "source_location": "L40", + "community": 211, + "norm_label": "{ rerender }", + "id": "tests_mdocmessage_test_rerender" }, { - "label": "[unused69]", + "label": "updateSummary()", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused69]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused69" + "source_file": "main/app/prometheus/chat.py", + "source_location": "L98", + "community": 125, + "norm_label": "updatesummary()", + "id": "prometheus_chat_updatesummary" }, { - "label": "[unused70]", + "label": ".has_changed()", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused70]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused70" + "source_file": "main/app/prometheus/state.py", + "source_location": "L26", + "community": 8, + "norm_label": ".has_changed()", + "id": "prometheus_state_harnessstate_has_changed" }, { - "label": "[unused71]", + "label": ".reset_changed()", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused71]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused71" + "source_file": "main/app/prometheus/state.py", + "source_location": "L29", + "community": 8, + "norm_label": ".reset_changed()", + "id": "prometheus_state_harnessstate_reset_changed" }, { - "label": "[unused72]", + "label": "config.json", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_file": "main/utils/models/all-MiniLM-L6-v2/config.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused72]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused72" + "community": 62, + "norm_label": "config.json", + "id": "main_utils_models_all_minilm_l6_v2_config_json" }, { - "label": "[unused73]", + "label": "_name_or_path", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused73]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused73" + "source_file": "main/utils/models/all-MiniLM-L6-v2/config.json", + "source_location": "L2", + "community": 62, + "norm_label": "_name_or_path", + "id": "all_minilm_l6_v2_config_name_or_path" }, { - "label": "[unused74]", + "label": "architectures", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused74]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused74" + "source_file": "main/utils/models/all-MiniLM-L6-v2/config.json", + "source_location": "L3", + "community": 62, + "norm_label": "architectures", + "id": "all_minilm_l6_v2_config_architectures" }, { - "label": "[unused75]", + "label": "attention_probs_dropout_prob", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused75]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused75" + "source_file": "main/utils/models/all-MiniLM-L6-v2/config.json", + "source_location": "L6", + "community": 62, + "norm_label": "attention_probs_dropout_prob", + "id": "all_minilm_l6_v2_config_attention_probs_dropout_prob" }, { - "label": "[unused76]", + "label": "gradient_checkpointing", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused76]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused76" + "source_file": "main/utils/models/all-MiniLM-L6-v2/config.json", + "source_location": "L7", + "community": 62, + "norm_label": "gradient_checkpointing", + "id": "all_minilm_l6_v2_config_gradient_checkpointing" }, { - "label": "[unused77]", + "label": "hidden_act", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused77]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused77" + "source_file": "main/utils/models/all-MiniLM-L6-v2/config.json", + "source_location": "L8", + "community": 62, + "norm_label": "hidden_act", + "id": "all_minilm_l6_v2_config_hidden_act" }, { - "label": "[unused78]", + "label": "hidden_dropout_prob", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused78]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused78" + "source_file": "main/utils/models/all-MiniLM-L6-v2/config.json", + "source_location": "L9", + "community": 62, + "norm_label": "hidden_dropout_prob", + "id": "all_minilm_l6_v2_config_hidden_dropout_prob" }, { - "label": "[unused79]", + "label": "hidden_size", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused79]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused79" + "source_file": "main/utils/models/all-MiniLM-L6-v2/config.json", + "source_location": "L10", + "community": 62, + "norm_label": "hidden_size", + "id": "all_minilm_l6_v2_config_hidden_size" }, { - "label": "[unused80]", + "label": "initializer_range", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused80]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused80" + "source_file": "main/utils/models/all-MiniLM-L6-v2/config.json", + "source_location": "L11", + "community": 62, + "norm_label": "initializer_range", + "id": "all_minilm_l6_v2_config_initializer_range" }, { - "label": "[unused81]", + "label": "intermediate_size", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused81]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused81" + "source_file": "main/utils/models/all-MiniLM-L6-v2/config.json", + "source_location": "L12", + "community": 62, + "norm_label": "intermediate_size", + "id": "all_minilm_l6_v2_config_intermediate_size" }, { - "label": "[unused82]", + "label": "layer_norm_eps", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused82]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused82" + "source_file": "main/utils/models/all-MiniLM-L6-v2/config.json", + "source_location": "L13", + "community": 62, + "norm_label": "layer_norm_eps", + "id": "all_minilm_l6_v2_config_layer_norm_eps" }, { - "label": "[unused83]", + "label": "max_position_embeddings", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused83]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused83" + "source_file": "main/utils/models/all-MiniLM-L6-v2/config.json", + "source_location": "L14", + "community": 62, + "norm_label": "max_position_embeddings", + "id": "all_minilm_l6_v2_config_max_position_embeddings" }, { - "label": "[unused84]", + "label": "model_type", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused84]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused84" + "source_file": "main/utils/models/all-MiniLM-L6-v2/config.json", + "source_location": "L15", + "community": 62, + "norm_label": "model_type", + "id": "all_minilm_l6_v2_config_model_type" }, { - "label": "[unused85]", + "label": "num_attention_heads", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused85]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused85" + "source_file": "main/utils/models/all-MiniLM-L6-v2/config.json", + "source_location": "L16", + "community": 62, + "norm_label": "num_attention_heads", + "id": "all_minilm_l6_v2_config_num_attention_heads" }, { - "label": "[unused86]", + "label": "num_hidden_layers", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused86]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused86" + "source_file": "main/utils/models/all-MiniLM-L6-v2/config.json", + "source_location": "L17", + "community": 62, + "norm_label": "num_hidden_layers", + "id": "all_minilm_l6_v2_config_num_hidden_layers" }, { - "label": "[unused87]", + "label": "pad_token_id", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused87]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused87" + "source_file": "main/utils/models/all-MiniLM-L6-v2/config.json", + "source_location": "L18", + "community": 62, + "norm_label": "pad_token_id", + "id": "all_minilm_l6_v2_config_pad_token_id" }, { - "label": "[unused88]", + "label": "position_embedding_type", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused88]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused88" + "source_file": "main/utils/models/all-MiniLM-L6-v2/config.json", + "source_location": "L19", + "community": 62, + "norm_label": "position_embedding_type", + "id": "all_minilm_l6_v2_config_position_embedding_type" }, { - "label": "[unused89]", + "label": "transformers_version", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused89]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused89" + "source_file": "main/utils/models/all-MiniLM-L6-v2/config.json", + "source_location": "L20", + "community": 62, + "norm_label": "transformers_version", + "id": "all_minilm_l6_v2_config_transformers_version" }, { - "label": "[unused90]", + "label": "type_vocab_size", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused90]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused90" + "source_file": "main/utils/models/all-MiniLM-L6-v2/config.json", + "source_location": "L21", + "community": 62, + "norm_label": "type_vocab_size", + "id": "all_minilm_l6_v2_config_type_vocab_size" }, { - "label": "[unused91]", + "label": "use_cache", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused91]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused91" + "source_file": "main/utils/models/all-MiniLM-L6-v2/config.json", + "source_location": "L22", + "community": 62, + "norm_label": "use_cache", + "id": "all_minilm_l6_v2_config_use_cache" }, { - "label": "[unused92]", + "label": "vocab_size", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused92]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused92" + "source_file": "main/utils/models/all-MiniLM-L6-v2/config.json", + "source_location": "L23", + "community": 62, + "norm_label": "vocab_size", + "id": "all_minilm_l6_v2_config_vocab_size" }, { - "label": "[unused93]", + "label": "config_sentence_transformers.json", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_file": "main/utils/models/all-MiniLM-L6-v2/config_sentence_transformers.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused93]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused93" + "community": 219, + "norm_label": "config_sentence_transformers.json", + "id": "main_utils_models_all_minilm_l6_v2_config_sentence_transformers_json" }, { - "label": "[unused94]", + "label": "__version__", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused94]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused94" + "source_file": "main/utils/models/all-MiniLM-L6-v2/config_sentence_transformers.json", + "source_location": "L2", + "community": 219, + "norm_label": "__version__", + "id": "all_minilm_l6_v2_config_sentence_transformers_version" }, { - "label": "[unused95]", + "label": "sentence_transformers", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused95]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused95" + "source_file": "main/utils/models/all-MiniLM-L6-v2/config_sentence_transformers.json", + "source_location": "L3", + "community": 219, + "norm_label": "sentence_transformers", + "id": "all_minilm_l6_v2_config_sentence_transformers_version_sentence_transformers" }, { - "label": "[unused96]", + "label": "transformers", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused96]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused96" + "source_file": "main/utils/models/all-MiniLM-L6-v2/config_sentence_transformers.json", + "source_location": "L4", + "community": 219, + "norm_label": "transformers", + "id": "all_minilm_l6_v2_config_sentence_transformers_version_transformers" }, { - "label": "[unused97]", + "label": "pytorch", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused97]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused97" + "source_file": "main/utils/models/all-MiniLM-L6-v2/config_sentence_transformers.json", + "source_location": "L5", + "community": 219, + "norm_label": "pytorch", + "id": "all_minilm_l6_v2_config_sentence_transformers_version_pytorch" }, { - "label": "[unused98]", + "label": "data_config.json", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_file": "main/utils/models/all-MiniLM-L6-v2/data_config.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused98]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused98" + "community": 273, + "norm_label": "data_config.json", + "id": "main_utils_models_all_minilm_l6_v2_data_config_json" }, { - "label": "[UNK]", + "label": "modules.json", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_file": "main/utils/models/all-MiniLM-L6-v2/modules.json", "source_location": "L1", - "community": 0, - "norm_label": "[unk]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unk" + "community": 274, + "norm_label": "modules.json", + "id": "main_utils_models_all_minilm_l6_v2_modules_json" }, { - "label": "[CLS]", + "label": "sentence_bert_config.json", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_file": "main/utils/models/all-MiniLM-L6-v2/sentence_bert_config.json", "source_location": "L1", - "community": 0, - "norm_label": "[cls]", - "id": "all_minilm_l6_v2_tokenizer_vocab_cls" + "community": 260, + "norm_label": "sentence_bert_config.json", + "id": "main_utils_models_all_minilm_l6_v2_sentence_bert_config_json" }, { - "label": "[SEP]", + "label": "max_seq_length", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[sep]", - "id": "all_minilm_l6_v2_tokenizer_vocab_sep" + "source_file": "main/utils/models/all-MiniLM-L6-v2/sentence_bert_config.json", + "source_location": "L2", + "community": 260, + "norm_label": "max_seq_length", + "id": "all_minilm_l6_v2_sentence_bert_config_max_seq_length" }, { - "label": "[MASK]", + "label": "do_lower_case", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[mask]", - "id": "all_minilm_l6_v2_tokenizer_vocab_mask" + "source_file": "main/utils/models/all-MiniLM-L6-v2/sentence_bert_config.json", + "source_location": "L3", + "community": 260, + "norm_label": "do_lower_case", + "id": "all_minilm_l6_v2_sentence_bert_config_do_lower_case" }, { - "label": "[unused99]", + "label": "special_tokens_map.json", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_file": "main/utils/models/all-MiniLM-L6-v2/special_tokens_map.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused99]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused99" + "community": 196, + "norm_label": "special_tokens_map.json", + "id": "main_utils_models_all_minilm_l6_v2_special_tokens_map_json" }, { - "label": "[unused100]", + "label": "unk_token", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_file": "main/utils/models/all-MiniLM-L6-v2/special_tokens_map.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused100]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused100" + "community": 196, + "norm_label": "unk_token", + "id": "all_minilm_l6_v2_special_tokens_map_unk_token" }, { - "label": "[unused101]", + "label": "sep_token", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_file": "main/utils/models/all-MiniLM-L6-v2/special_tokens_map.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused101]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused101" + "community": 196, + "norm_label": "sep_token", + "id": "all_minilm_l6_v2_special_tokens_map_sep_token" }, { - "label": "[unused102]", + "label": "pad_token", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_file": "main/utils/models/all-MiniLM-L6-v2/special_tokens_map.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused102]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused102" + "community": 196, + "norm_label": "pad_token", + "id": "all_minilm_l6_v2_special_tokens_map_pad_token" }, { - "label": "[unused103]", + "label": "cls_token", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_file": "main/utils/models/all-MiniLM-L6-v2/special_tokens_map.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused103]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused103" + "community": 196, + "norm_label": "cls_token", + "id": "all_minilm_l6_v2_special_tokens_map_cls_token" }, { - "label": "[unused104]", + "label": "mask_token", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_file": "main/utils/models/all-MiniLM-L6-v2/special_tokens_map.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused104]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused104" + "community": 196, + "norm_label": "mask_token", + "id": "all_minilm_l6_v2_special_tokens_map_mask_token" }, { - "label": "[unused105]", + "label": "tokenizer.json", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused105]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused105" + "community": 154, + "norm_label": "tokenizer.json", + "id": "main_utils_models_all_minilm_l6_v2_tokenizer_json" }, { - "label": "[unused106]", + "label": "version", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused106]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused106" + "community": 154, + "norm_label": "version", + "id": "all_minilm_l6_v2_tokenizer_version" }, { - "label": "[unused107]", + "label": "truncation", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused107]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused107" + "community": 237, + "norm_label": "truncation", + "id": "all_minilm_l6_v2_tokenizer_truncation" }, { - "label": "[unused108]", + "label": "max_length", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused108]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused108" + "community": 237, + "norm_label": "max_length", + "id": "all_minilm_l6_v2_tokenizer_truncation_max_length" }, { - "label": "[unused109]", + "label": "strategy", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused109]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused109" + "community": 237, + "norm_label": "strategy", + "id": "all_minilm_l6_v2_tokenizer_truncation_strategy" }, { - "label": "[unused110]", + "label": "stride", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused110]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused110" + "community": 237, + "norm_label": "stride", + "id": "all_minilm_l6_v2_tokenizer_truncation_stride" }, { - "label": "[unused111]", + "label": "padding", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused111]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused111" + "community": 170, + "norm_label": "padding", + "id": "all_minilm_l6_v2_tokenizer_padding" }, { - "label": "[unused112]", + "label": "strategy", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused112]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused112" + "community": 170, + "norm_label": "strategy", + "id": "all_minilm_l6_v2_tokenizer_padding_strategy" }, { - "label": "[unused113]", + "label": "Fixed", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused113]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused113" + "community": 170, + "norm_label": "fixed", + "id": "all_minilm_l6_v2_tokenizer_strategy_fixed" }, { - "label": "[unused114]", + "label": "direction", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused114]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused114" + "community": 170, + "norm_label": "direction", + "id": "all_minilm_l6_v2_tokenizer_padding_direction" }, { - "label": "[unused115]", + "label": "pad_to_multiple_of", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused115]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused115" + "community": 170, + "norm_label": "pad_to_multiple_of", + "id": "all_minilm_l6_v2_tokenizer_padding_pad_to_multiple_of" }, { - "label": "[unused116]", + "label": "pad_id", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused116]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused116" + "community": 170, + "norm_label": "pad_id", + "id": "all_minilm_l6_v2_tokenizer_padding_pad_id" }, { - "label": "[unused117]", + "label": "pad_type_id", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused117]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused117" + "community": 170, + "norm_label": "pad_type_id", + "id": "all_minilm_l6_v2_tokenizer_padding_pad_type_id" }, { - "label": "[unused118]", + "label": "pad_token", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused118]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused118" + "community": 170, + "norm_label": "pad_token", + "id": "all_minilm_l6_v2_tokenizer_padding_pad_token" }, { - "label": "[unused119]", + "label": "added_tokens", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused119]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused119" + "community": 154, + "norm_label": "added_tokens", + "id": "all_minilm_l6_v2_tokenizer_added_tokens" }, { - "label": "[unused120]", + "label": "normalizer", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused120]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused120" + "community": 193, + "norm_label": "normalizer", + "id": "all_minilm_l6_v2_tokenizer_normalizer" }, { - "label": "[unused121]", + "label": "type", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused121]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused121" + "community": 193, + "norm_label": "type", + "id": "all_minilm_l6_v2_tokenizer_normalizer_type" }, { - "label": "[unused122]", + "label": "clean_text", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused122]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused122" + "community": 193, + "norm_label": "clean_text", + "id": "all_minilm_l6_v2_tokenizer_normalizer_clean_text" }, { - "label": "[unused123]", + "label": "handle_chinese_chars", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused123]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused123" + "community": 193, + "norm_label": "handle_chinese_chars", + "id": "all_minilm_l6_v2_tokenizer_normalizer_handle_chinese_chars" }, { - "label": "[unused124]", + "label": "strip_accents", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused124]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused124" + "community": 193, + "norm_label": "strip_accents", + "id": "all_minilm_l6_v2_tokenizer_normalizer_strip_accents" }, { - "label": "[unused125]", + "label": "lowercase", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused125]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused125" + "community": 193, + "norm_label": "lowercase", + "id": "all_minilm_l6_v2_tokenizer_normalizer_lowercase" }, { - "label": "[unused126]", + "label": "pre_tokenizer", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused126]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused126" + "community": 154, + "norm_label": "pre_tokenizer", + "id": "all_minilm_l6_v2_tokenizer_pre_tokenizer" }, { - "label": "[unused127]", + "label": "type", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused127]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused127" + "community": 154, + "norm_label": "type", + "id": "all_minilm_l6_v2_tokenizer_pre_tokenizer_type" }, { - "label": "[unused128]", + "label": "post_processor", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused128]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused128" + "community": 236, + "norm_label": "post_processor", + "id": "all_minilm_l6_v2_tokenizer_post_processor" }, { - "label": "[unused129]", + "label": "type", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused129]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused129" + "community": 236, + "norm_label": "type", + "id": "all_minilm_l6_v2_tokenizer_post_processor_type" }, { - "label": "[unused130]", + "label": "single", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused130]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused130" + "community": 236, + "norm_label": "single", + "id": "all_minilm_l6_v2_tokenizer_post_processor_single" }, { - "label": "[unused131]", + "label": "pair", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused131]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused131" + "community": 236, + "norm_label": "pair", + "id": "all_minilm_l6_v2_tokenizer_post_processor_pair" }, { - "label": "[unused132]", + "label": "special_tokens", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused132]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused132" + "community": 155, + "norm_label": "special_tokens", + "id": "all_minilm_l6_v2_tokenizer_post_processor_special_tokens" }, { - "label": "[unused133]", + "label": "[CLS]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused133]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused133" + "community": 155, + "norm_label": "[cls]", + "id": "all_minilm_l6_v2_tokenizer_special_tokens_cls" }, { - "label": "[unused134]", + "label": "id", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused134]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused134" + "community": 155, + "norm_label": "id", + "id": "all_minilm_l6_v2_tokenizer_cls_id" }, { - "label": "[unused135]", + "label": "ids", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused135]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused135" + "community": 155, + "norm_label": "ids", + "id": "all_minilm_l6_v2_tokenizer_cls_ids" }, { - "label": "[unused136]", + "label": "tokens", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused136]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused136" + "community": 155, + "norm_label": "tokens", + "id": "all_minilm_l6_v2_tokenizer_cls_tokens" }, { - "label": "[unused137]", + "label": "[SEP]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused137]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused137" + "community": 155, + "norm_label": "[sep]", + "id": "all_minilm_l6_v2_tokenizer_special_tokens_sep" }, { - "label": "[unused138]", + "label": "id", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused138]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused138" + "community": 155, + "norm_label": "id", + "id": "all_minilm_l6_v2_tokenizer_sep_id" }, { - "label": "[unused139]", + "label": "ids", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused139]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused139" + "community": 155, + "norm_label": "ids", + "id": "all_minilm_l6_v2_tokenizer_sep_ids" }, { - "label": "[unused140]", + "label": "tokens", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused140]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused140" + "community": 155, + "norm_label": "tokens", + "id": "all_minilm_l6_v2_tokenizer_sep_tokens" }, { - "label": "[unused141]", + "label": "decoder", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused141]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused141" + "community": 154, + "norm_label": "decoder", + "id": "all_minilm_l6_v2_tokenizer_decoder" }, { - "label": "[unused142]", + "label": "type", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused142]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused142" + "community": 154, + "norm_label": "type", + "id": "all_minilm_l6_v2_tokenizer_decoder_type" }, { - "label": "[unused143]", + "label": "prefix", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused143]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused143" + "community": 154, + "norm_label": "prefix", + "id": "all_minilm_l6_v2_tokenizer_decoder_prefix" }, { - "label": "[unused144]", + "label": "cleanup", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused144]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused144" + "community": 154, + "norm_label": "cleanup", + "id": "all_minilm_l6_v2_tokenizer_decoder_cleanup" }, { - "label": "[unused145]", + "label": "model", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused145]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused145" + "community": 220, + "norm_label": "model", + "id": "all_minilm_l6_v2_tokenizer_model" }, { - "label": "[unused146]", + "label": "type", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused146]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused146" + "community": 220, + "norm_label": "type", + "id": "all_minilm_l6_v2_tokenizer_model_type" }, { - "label": "[unused147]", + "label": "unk_token", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused147]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused147" + "community": 220, + "norm_label": "unk_token", + "id": "all_minilm_l6_v2_tokenizer_model_unk_token" }, { - "label": "[unused148]", + "label": "continuing_subword_prefix", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused148]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused148" + "community": 220, + "norm_label": "continuing_subword_prefix", + "id": "all_minilm_l6_v2_tokenizer_model_continuing_subword_prefix" }, { - "label": "[unused149]", + "label": "max_input_chars_per_word", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused149]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused149" + "community": 220, + "norm_label": "max_input_chars_per_word", + "id": "all_minilm_l6_v2_tokenizer_model_max_input_chars_per_word" }, { - "label": "[unused150]", + "label": "vocab", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused150]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused150" + "norm_label": "vocab", + "id": "all_minilm_l6_v2_tokenizer_model_vocab" }, { - "label": "[unused151]", + "label": "[PAD]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused151]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused151" + "norm_label": "[pad]", + "id": "all_minilm_l6_v2_tokenizer_vocab_pad" }, { - "label": "[unused152]", + "label": "[unused0]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused152]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused152" + "norm_label": "[unused0]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused0" }, { - "label": "[unused153]", + "label": "[unused1]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused153]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused153" + "norm_label": "[unused1]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused1" }, { - "label": "[unused154]", + "label": "[unused2]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused154]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused154" + "norm_label": "[unused2]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused2" }, { - "label": "[unused155]", + "label": "[unused3]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused155]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused155" + "norm_label": "[unused3]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused3" }, { - "label": "[unused156]", + "label": "[unused4]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused156]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused156" + "norm_label": "[unused4]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused4" }, { - "label": "[unused157]", + "label": "[unused5]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused157]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused157" + "norm_label": "[unused5]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused5" }, { - "label": "[unused158]", + "label": "[unused6]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused158]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused158" + "norm_label": "[unused6]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused6" }, { - "label": "[unused159]", + "label": "[unused7]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused159]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused159" + "norm_label": "[unused7]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused7" }, { - "label": "[unused160]", + "label": "[unused8]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused160]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused160" + "norm_label": "[unused8]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused8" }, { - "label": "[unused161]", + "label": "[unused9]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused161]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused161" + "norm_label": "[unused9]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused9" }, { - "label": "[unused162]", + "label": "[unused10]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused162]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused162" + "norm_label": "[unused10]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused10" }, { - "label": "[unused163]", + "label": "[unused11]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused163]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused163" + "norm_label": "[unused11]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused11" }, { - "label": "[unused164]", + "label": "[unused12]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused164]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused164" + "norm_label": "[unused12]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused12" }, { - "label": "[unused165]", + "label": "[unused13]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused165]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused165" + "norm_label": "[unused13]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused13" }, { - "label": "[unused166]", + "label": "[unused14]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused166]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused166" + "norm_label": "[unused14]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused14" }, { - "label": "[unused167]", + "label": "[unused15]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused167]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused167" + "norm_label": "[unused15]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused15" }, { - "label": "[unused168]", + "label": "[unused16]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused168]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused168" + "norm_label": "[unused16]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused16" }, { - "label": "[unused169]", + "label": "[unused17]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused169]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused169" + "norm_label": "[unused17]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused17" }, { - "label": "[unused170]", + "label": "[unused18]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused170]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused170" + "norm_label": "[unused18]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused18" }, { - "label": "[unused171]", + "label": "[unused19]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused171]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused171" + "norm_label": "[unused19]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused19" }, { - "label": "[unused172]", + "label": "[unused20]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused172]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused172" + "norm_label": "[unused20]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused20" }, { - "label": "[unused173]", + "label": "[unused21]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused173]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused173" + "norm_label": "[unused21]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused21" }, { - "label": "[unused174]", + "label": "[unused22]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused174]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused174" + "norm_label": "[unused22]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused22" }, { - "label": "[unused175]", + "label": "[unused23]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused175]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused175" + "norm_label": "[unused23]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused23" }, { - "label": "[unused176]", + "label": "[unused24]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused176]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused176" + "norm_label": "[unused24]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused24" }, { - "label": "[unused177]", + "label": "[unused25]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused177]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused177" + "norm_label": "[unused25]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused25" }, { - "label": "[unused178]", + "label": "[unused26]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused178]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused178" + "norm_label": "[unused26]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused26" }, { - "label": "[unused179]", + "label": "[unused27]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused179]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused179" + "norm_label": "[unused27]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused27" }, { - "label": "[unused180]", + "label": "[unused28]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused180]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused180" + "norm_label": "[unused28]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused28" }, { - "label": "[unused181]", + "label": "[unused29]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused181]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused181" + "norm_label": "[unused29]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused29" }, { - "label": "[unused182]", + "label": "[unused30]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused182]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused182" + "norm_label": "[unused30]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused30" }, { - "label": "[unused183]", + "label": "[unused31]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused183]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused183" + "norm_label": "[unused31]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused31" }, { - "label": "[unused184]", + "label": "[unused32]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused184]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused184" + "norm_label": "[unused32]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused32" }, { - "label": "[unused185]", + "label": "[unused33]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused185]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused185" + "norm_label": "[unused33]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused33" }, { - "label": "[unused186]", + "label": "[unused34]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused186]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused186" + "norm_label": "[unused34]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused34" }, { - "label": "[unused187]", + "label": "[unused35]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused187]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused187" + "norm_label": "[unused35]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused35" }, { - "label": "[unused188]", + "label": "[unused36]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused188]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused188" + "norm_label": "[unused36]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused36" }, { - "label": "[unused189]", + "label": "[unused37]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused189]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused189" + "norm_label": "[unused37]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused37" }, { - "label": "[unused190]", + "label": "[unused38]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused190]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused190" + "norm_label": "[unused38]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused38" }, { - "label": "[unused191]", + "label": "[unused39]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused191]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused191" + "norm_label": "[unused39]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused39" }, { - "label": "[unused192]", + "label": "[unused40]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused192]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused192" + "norm_label": "[unused40]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused40" }, { - "label": "[unused193]", + "label": "[unused41]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused193]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused193" + "norm_label": "[unused41]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused41" }, { - "label": "[unused194]", + "label": "[unused42]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused194]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused194" + "norm_label": "[unused42]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused42" }, { - "label": "[unused195]", + "label": "[unused43]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused195]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused195" + "norm_label": "[unused43]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused43" }, { - "label": "[unused196]", + "label": "[unused44]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused196]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused196" + "norm_label": "[unused44]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused44" }, { - "label": "[unused197]", + "label": "[unused45]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused197]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused197" + "norm_label": "[unused45]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused45" }, { - "label": "[unused198]", + "label": "[unused46]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused198]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused198" + "norm_label": "[unused46]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused46" }, { - "label": "[unused199]", + "label": "[unused47]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused199]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused199" + "norm_label": "[unused47]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused47" }, { - "label": "[unused200]", + "label": "[unused48]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused200]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused200" + "norm_label": "[unused48]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused48" }, { - "label": "[unused201]", + "label": "[unused49]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused201]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused201" + "norm_label": "[unused49]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused49" }, { - "label": "[unused202]", + "label": "[unused50]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused202]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused202" + "norm_label": "[unused50]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused50" }, { - "label": "[unused203]", + "label": "[unused51]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused203]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused203" + "norm_label": "[unused51]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused51" }, { - "label": "[unused204]", + "label": "[unused52]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused204]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused204" + "norm_label": "[unused52]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused52" }, { - "label": "[unused205]", + "label": "[unused53]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused205]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused205" + "norm_label": "[unused53]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused53" }, { - "label": "[unused206]", + "label": "[unused54]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused206]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused206" + "norm_label": "[unused54]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused54" }, { - "label": "[unused207]", + "label": "[unused55]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused207]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused207" + "norm_label": "[unused55]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused55" }, { - "label": "[unused208]", + "label": "[unused56]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused208]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused208" + "norm_label": "[unused56]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused56" }, { - "label": "[unused209]", + "label": "[unused57]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused209]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused209" + "norm_label": "[unused57]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused57" }, { - "label": "[unused210]", + "label": "[unused58]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused210]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused210" + "norm_label": "[unused58]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused58" }, { - "label": "[unused211]", + "label": "[unused59]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused211]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused211" + "norm_label": "[unused59]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused59" }, { - "label": "[unused212]", + "label": "[unused60]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused212]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused212" + "norm_label": "[unused60]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused60" }, { - "label": "[unused213]", + "label": "[unused61]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused213]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused213" + "norm_label": "[unused61]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused61" }, { - "label": "[unused214]", + "label": "[unused62]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused214]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused214" + "norm_label": "[unused62]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused62" }, { - "label": "[unused215]", + "label": "[unused63]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused215]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused215" + "norm_label": "[unused63]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused63" }, { - "label": "[unused216]", + "label": "[unused64]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused216]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused216" + "norm_label": "[unused64]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused64" }, { - "label": "[unused217]", + "label": "[unused65]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused217]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused217" + "norm_label": "[unused65]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused65" }, { - "label": "[unused218]", + "label": "[unused66]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused218]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused218" + "norm_label": "[unused66]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused66" }, { - "label": "[unused219]", + "label": "[unused67]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused219]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused219" + "norm_label": "[unused67]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused67" }, { - "label": "[unused220]", + "label": "[unused68]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused220]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused220" + "norm_label": "[unused68]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused68" }, { - "label": "[unused221]", + "label": "[unused69]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused221]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused221" + "norm_label": "[unused69]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused69" }, { - "label": "[unused222]", + "label": "[unused70]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused222]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused222" + "norm_label": "[unused70]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused70" }, { - "label": "[unused223]", + "label": "[unused71]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused223]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused223" + "norm_label": "[unused71]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused71" }, { - "label": "[unused224]", + "label": "[unused72]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused224]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused224" + "norm_label": "[unused72]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused72" }, { - "label": "[unused225]", + "label": "[unused73]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused225]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused225" + "norm_label": "[unused73]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused73" }, { - "label": "[unused226]", + "label": "[unused74]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused226]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused226" + "norm_label": "[unused74]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused74" }, { - "label": "[unused227]", + "label": "[unused75]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused227]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused227" + "norm_label": "[unused75]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused75" }, { - "label": "[unused228]", + "label": "[unused76]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused228]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused228" + "norm_label": "[unused76]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused76" }, { - "label": "[unused229]", + "label": "[unused77]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused229]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused229" + "norm_label": "[unused77]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused77" }, { - "label": "[unused230]", + "label": "[unused78]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused230]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused230" + "norm_label": "[unused78]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused78" }, { - "label": "[unused231]", + "label": "[unused79]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused231]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused231" + "norm_label": "[unused79]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused79" }, { - "label": "[unused232]", + "label": "[unused80]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused232]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused232" + "norm_label": "[unused80]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused80" }, { - "label": "[unused233]", + "label": "[unused81]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused233]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused233" + "norm_label": "[unused81]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused81" }, { - "label": "[unused234]", + "label": "[unused82]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused234]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused234" + "norm_label": "[unused82]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused82" }, { - "label": "[unused235]", + "label": "[unused83]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused235]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused235" + "norm_label": "[unused83]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused83" }, { - "label": "[unused236]", + "label": "[unused84]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused236]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused236" + "norm_label": "[unused84]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused84" }, { - "label": "[unused237]", + "label": "[unused85]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused237]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused237" + "norm_label": "[unused85]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused85" }, { - "label": "[unused238]", + "label": "[unused86]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused238]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused238" + "norm_label": "[unused86]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused86" }, { - "label": "[unused239]", + "label": "[unused87]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused239]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused239" + "norm_label": "[unused87]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused87" }, { - "label": "[unused240]", + "label": "[unused88]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused240]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused240" + "norm_label": "[unused88]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused88" }, { - "label": "[unused241]", + "label": "[unused89]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused241]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused241" + "norm_label": "[unused89]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused89" }, { - "label": "[unused242]", + "label": "[unused90]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused242]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused242" + "norm_label": "[unused90]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused90" }, { - "label": "[unused243]", + "label": "[unused91]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused243]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused243" + "norm_label": "[unused91]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused91" }, { - "label": "[unused244]", + "label": "[unused92]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused244]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused244" + "norm_label": "[unused92]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused92" }, { - "label": "[unused245]", + "label": "[unused93]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused245]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused245" + "norm_label": "[unused93]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused93" }, { - "label": "[unused246]", + "label": "[unused94]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused246]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused246" + "norm_label": "[unused94]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused94" }, { - "label": "[unused247]", + "label": "[unused95]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused247]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused247" + "norm_label": "[unused95]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused95" }, { - "label": "[unused248]", + "label": "[unused96]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused248]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused248" + "norm_label": "[unused96]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused96" }, { - "label": "[unused249]", + "label": "[unused97]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused249]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused249" + "norm_label": "[unused97]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused97" }, { - "label": "[unused250]", + "label": "[unused98]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused250]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused250" + "norm_label": "[unused98]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused98" }, { - "label": "[unused251]", + "label": "[UNK]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused251]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused251" + "norm_label": "[unk]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unk" }, { - "label": "[unused252]", + "label": "[CLS]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused252]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused252" + "norm_label": "[cls]", + "id": "all_minilm_l6_v2_tokenizer_vocab_cls" }, { - "label": "[unused253]", + "label": "[SEP]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused253]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused253" + "norm_label": "[sep]", + "id": "all_minilm_l6_v2_tokenizer_vocab_sep" }, { - "label": "[unused254]", + "label": "[MASK]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused254]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused254" + "norm_label": "[mask]", + "id": "all_minilm_l6_v2_tokenizer_vocab_mask" }, { - "label": "[unused255]", + "label": "[unused99]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused255]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused255" + "norm_label": "[unused99]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused99" }, { - "label": "[unused256]", + "label": "[unused100]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused256]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused256" + "norm_label": "[unused100]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused100" }, { - "label": "[unused257]", + "label": "[unused101]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused257]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused257" + "norm_label": "[unused101]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused101" }, { - "label": "[unused258]", + "label": "[unused102]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused258]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused258" + "norm_label": "[unused102]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused102" }, { - "label": "[unused259]", + "label": "[unused103]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused259]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused259" + "norm_label": "[unused103]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused103" }, { - "label": "[unused260]", + "label": "[unused104]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused260]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused260" + "norm_label": "[unused104]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused104" }, { - "label": "[unused261]", + "label": "[unused105]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused261]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused261" + "norm_label": "[unused105]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused105" }, { - "label": "[unused262]", + "label": "[unused106]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused262]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused262" + "norm_label": "[unused106]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused106" }, { - "label": "[unused263]", + "label": "[unused107]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused263]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused263" + "norm_label": "[unused107]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused107" }, { - "label": "[unused264]", + "label": "[unused108]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused264]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused264" + "norm_label": "[unused108]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused108" }, { - "label": "[unused265]", + "label": "[unused109]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused265]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused265" + "norm_label": "[unused109]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused109" }, { - "label": "[unused266]", + "label": "[unused110]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused266]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused266" + "norm_label": "[unused110]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused110" }, { - "label": "[unused267]", + "label": "[unused111]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused267]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused267" + "norm_label": "[unused111]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused111" }, { - "label": "[unused268]", + "label": "[unused112]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused268]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused268" + "norm_label": "[unused112]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused112" }, { - "label": "[unused269]", + "label": "[unused113]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused269]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused269" + "norm_label": "[unused113]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused113" }, { - "label": "[unused270]", + "label": "[unused114]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused270]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused270" + "norm_label": "[unused114]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused114" }, { - "label": "[unused271]", + "label": "[unused115]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused271]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused271" + "norm_label": "[unused115]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused115" }, { - "label": "[unused272]", + "label": "[unused116]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused272]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused272" + "norm_label": "[unused116]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused116" }, { - "label": "[unused273]", + "label": "[unused117]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused273]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused273" + "norm_label": "[unused117]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused117" }, { - "label": "[unused274]", + "label": "[unused118]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused274]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused274" + "norm_label": "[unused118]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused118" }, { - "label": "[unused275]", + "label": "[unused119]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused275]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused275" + "norm_label": "[unused119]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused119" }, { - "label": "[unused276]", + "label": "[unused120]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused276]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused276" + "norm_label": "[unused120]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused120" }, { - "label": "[unused277]", + "label": "[unused121]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused277]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused277" + "norm_label": "[unused121]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused121" }, { - "label": "[unused278]", + "label": "[unused122]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused278]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused278" + "norm_label": "[unused122]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused122" }, { - "label": "[unused279]", + "label": "[unused123]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused279]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused279" + "norm_label": "[unused123]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused123" }, { - "label": "[unused280]", + "label": "[unused124]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused280]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused280" + "norm_label": "[unused124]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused124" }, { - "label": "[unused281]", + "label": "[unused125]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused281]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused281" + "norm_label": "[unused125]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused125" }, { - "label": "[unused282]", + "label": "[unused126]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused282]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused282" + "norm_label": "[unused126]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused126" }, { - "label": "[unused283]", + "label": "[unused127]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused283]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused283" + "norm_label": "[unused127]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused127" }, { - "label": "[unused284]", + "label": "[unused128]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused284]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused284" + "norm_label": "[unused128]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused128" }, { - "label": "[unused285]", + "label": "[unused129]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused285]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused285" + "norm_label": "[unused129]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused129" }, { - "label": "[unused286]", + "label": "[unused130]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused286]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused286" + "norm_label": "[unused130]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused130" }, { - "label": "[unused287]", + "label": "[unused131]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused287]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused287" + "norm_label": "[unused131]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused131" }, { - "label": "[unused288]", + "label": "[unused132]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused288]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused288" + "norm_label": "[unused132]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused132" }, { - "label": "[unused289]", + "label": "[unused133]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused289]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused289" + "norm_label": "[unused133]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused133" }, { - "label": "[unused290]", + "label": "[unused134]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused290]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused290" + "norm_label": "[unused134]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused134" }, { - "label": "[unused291]", + "label": "[unused135]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused291]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused291" + "norm_label": "[unused135]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused135" }, { - "label": "[unused292]", + "label": "[unused136]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused292]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused292" + "norm_label": "[unused136]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused136" }, { - "label": "[unused293]", + "label": "[unused137]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused293]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused293" + "norm_label": "[unused137]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused137" }, { - "label": "[unused294]", + "label": "[unused138]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused294]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused294" + "norm_label": "[unused138]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused138" }, { - "label": "[unused295]", + "label": "[unused139]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused295]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused295" + "norm_label": "[unused139]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused139" }, { - "label": "[unused296]", + "label": "[unused140]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused296]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused296" + "norm_label": "[unused140]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused140" }, { - "label": "[unused297]", + "label": "[unused141]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused297]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused297" + "norm_label": "[unused141]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused141" }, { - "label": "[unused298]", + "label": "[unused142]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused298]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused298" + "norm_label": "[unused142]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused142" }, { - "label": "[unused299]", + "label": "[unused143]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused299]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused299" + "norm_label": "[unused143]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused143" }, { - "label": "[unused300]", + "label": "[unused144]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused300]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused300" + "norm_label": "[unused144]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused144" }, { - "label": "[unused301]", + "label": "[unused145]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused301]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused301" + "norm_label": "[unused145]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused145" }, { - "label": "[unused302]", + "label": "[unused146]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused302]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused302" + "norm_label": "[unused146]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused146" }, { - "label": "[unused303]", + "label": "[unused147]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused303]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused303" + "norm_label": "[unused147]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused147" }, { - "label": "[unused304]", + "label": "[unused148]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused304]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused304" + "norm_label": "[unused148]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused148" }, { - "label": "[unused305]", + "label": "[unused149]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused305]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused305" + "norm_label": "[unused149]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused149" }, { - "label": "[unused306]", + "label": "[unused150]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused306]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused306" + "norm_label": "[unused150]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused150" }, { - "label": "[unused307]", + "label": "[unused151]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused307]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused307" + "norm_label": "[unused151]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused151" }, { - "label": "[unused308]", + "label": "[unused152]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused308]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused308" + "norm_label": "[unused152]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused152" }, { - "label": "[unused309]", + "label": "[unused153]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused309]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused309" + "norm_label": "[unused153]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused153" }, { - "label": "[unused310]", + "label": "[unused154]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused310]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused310" + "norm_label": "[unused154]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused154" }, { - "label": "[unused311]", + "label": "[unused155]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused311]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused311" + "norm_label": "[unused155]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused155" }, { - "label": "[unused312]", + "label": "[unused156]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused312]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused312" + "norm_label": "[unused156]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused156" }, { - "label": "[unused313]", + "label": "[unused157]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused313]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused313" + "norm_label": "[unused157]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused157" }, { - "label": "[unused314]", + "label": "[unused158]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused314]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused314" + "norm_label": "[unused158]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused158" }, { - "label": "[unused315]", + "label": "[unused159]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused315]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused315" + "norm_label": "[unused159]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused159" }, { - "label": "[unused316]", + "label": "[unused160]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused316]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused316" + "norm_label": "[unused160]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused160" }, { - "label": "[unused317]", + "label": "[unused161]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused317]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused317" + "norm_label": "[unused161]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused161" }, { - "label": "[unused318]", + "label": "[unused162]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused318]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused318" + "norm_label": "[unused162]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused162" }, { - "label": "[unused319]", + "label": "[unused163]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused319]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused319" + "norm_label": "[unused163]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused163" }, { - "label": "[unused320]", + "label": "[unused164]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused320]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused320" + "norm_label": "[unused164]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused164" }, { - "label": "[unused321]", + "label": "[unused165]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused321]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused321" + "norm_label": "[unused165]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused165" }, { - "label": "[unused322]", + "label": "[unused166]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused322]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused322" + "norm_label": "[unused166]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused166" }, { - "label": "[unused323]", + "label": "[unused167]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused323]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused323" + "norm_label": "[unused167]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused167" }, { - "label": "[unused324]", + "label": "[unused168]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused324]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused324" + "norm_label": "[unused168]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused168" }, { - "label": "[unused325]", + "label": "[unused169]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused325]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused325" + "norm_label": "[unused169]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused169" }, { - "label": "[unused326]", + "label": "[unused170]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused326]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused326" + "norm_label": "[unused170]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused170" }, { - "label": "[unused327]", + "label": "[unused171]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused327]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused327" + "norm_label": "[unused171]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused171" }, { - "label": "[unused328]", + "label": "[unused172]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused328]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused328" + "norm_label": "[unused172]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused172" }, { - "label": "[unused329]", + "label": "[unused173]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused329]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused329" + "norm_label": "[unused173]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused173" }, { - "label": "[unused330]", + "label": "[unused174]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused330]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused330" + "norm_label": "[unused174]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused174" }, { - "label": "[unused331]", + "label": "[unused175]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused331]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused331" + "norm_label": "[unused175]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused175" }, { - "label": "[unused332]", + "label": "[unused176]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused332]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused332" + "norm_label": "[unused176]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused176" }, { - "label": "[unused333]", + "label": "[unused177]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused333]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused333" + "norm_label": "[unused177]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused177" }, { - "label": "[unused334]", + "label": "[unused178]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused334]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused334" + "norm_label": "[unused178]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused178" }, { - "label": "[unused335]", + "label": "[unused179]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused335]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused335" + "norm_label": "[unused179]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused179" }, { - "label": "[unused336]", + "label": "[unused180]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused336]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused336" + "norm_label": "[unused180]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused180" }, { - "label": "[unused337]", + "label": "[unused181]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused337]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused337" + "norm_label": "[unused181]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused181" }, { - "label": "[unused338]", + "label": "[unused182]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused338]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused338" + "norm_label": "[unused182]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused182" }, { - "label": "[unused339]", + "label": "[unused183]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused339]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused339" + "norm_label": "[unused183]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused183" }, { - "label": "[unused340]", + "label": "[unused184]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused340]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused340" + "norm_label": "[unused184]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused184" }, { - "label": "[unused341]", + "label": "[unused185]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused341]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused341" + "norm_label": "[unused185]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused185" }, { - "label": "[unused342]", + "label": "[unused186]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused342]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused342" + "norm_label": "[unused186]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused186" }, { - "label": "[unused343]", + "label": "[unused187]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused343]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused343" + "norm_label": "[unused187]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused187" }, { - "label": "[unused344]", + "label": "[unused188]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused344]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused344" + "norm_label": "[unused188]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused188" }, { - "label": "[unused345]", + "label": "[unused189]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused345]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused345" + "norm_label": "[unused189]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused189" }, { - "label": "[unused346]", + "label": "[unused190]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused346]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused346" + "norm_label": "[unused190]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused190" }, { - "label": "[unused347]", + "label": "[unused191]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused347]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused347" + "norm_label": "[unused191]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused191" }, { - "label": "[unused348]", + "label": "[unused192]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused348]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused348" + "norm_label": "[unused192]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused192" }, { - "label": "[unused349]", + "label": "[unused193]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused349]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused349" + "norm_label": "[unused193]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused193" }, { - "label": "[unused350]", + "label": "[unused194]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused350]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused350" + "norm_label": "[unused194]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused194" }, { - "label": "[unused351]", + "label": "[unused195]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused351]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused351" + "norm_label": "[unused195]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused195" }, { - "label": "[unused352]", + "label": "[unused196]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused352]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused352" + "norm_label": "[unused196]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused196" }, { - "label": "[unused353]", + "label": "[unused197]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused353]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused353" + "norm_label": "[unused197]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused197" }, { - "label": "[unused354]", + "label": "[unused198]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused354]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused354" + "norm_label": "[unused198]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused198" }, { - "label": "[unused355]", + "label": "[unused199]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused355]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused355" + "norm_label": "[unused199]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused199" }, { - "label": "[unused356]", + "label": "[unused200]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused356]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused356" + "norm_label": "[unused200]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused200" }, { - "label": "[unused357]", + "label": "[unused201]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused357]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused357" + "norm_label": "[unused201]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused201" }, { - "label": "[unused358]", + "label": "[unused202]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused358]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused358" + "norm_label": "[unused202]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused202" }, { - "label": "[unused359]", + "label": "[unused203]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused359]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused359" + "norm_label": "[unused203]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused203" }, { - "label": "[unused360]", + "label": "[unused204]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused360]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused360" + "norm_label": "[unused204]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused204" }, { - "label": "[unused361]", + "label": "[unused205]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused361]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused361" + "norm_label": "[unused205]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused205" }, { - "label": "[unused362]", + "label": "[unused206]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused362]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused362" + "norm_label": "[unused206]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused206" }, { - "label": "[unused363]", + "label": "[unused207]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused363]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused363" + "norm_label": "[unused207]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused207" }, { - "label": "[unused364]", + "label": "[unused208]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused364]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused364" + "norm_label": "[unused208]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused208" }, { - "label": "[unused365]", + "label": "[unused209]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused365]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused365" + "norm_label": "[unused209]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused209" }, { - "label": "[unused366]", + "label": "[unused210]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused366]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused366" + "norm_label": "[unused210]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused210" }, { - "label": "[unused367]", + "label": "[unused211]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused367]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused367" + "norm_label": "[unused211]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused211" }, { - "label": "[unused368]", + "label": "[unused212]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused368]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused368" + "norm_label": "[unused212]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused212" }, { - "label": "[unused369]", + "label": "[unused213]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused369]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused369" + "norm_label": "[unused213]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused213" }, { - "label": "[unused370]", + "label": "[unused214]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused370]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused370" + "norm_label": "[unused214]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused214" }, { - "label": "[unused371]", + "label": "[unused215]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused371]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused371" + "norm_label": "[unused215]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused215" }, { - "label": "[unused372]", + "label": "[unused216]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused372]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused372" + "norm_label": "[unused216]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused216" }, { - "label": "[unused373]", + "label": "[unused217]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused373]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused373" + "norm_label": "[unused217]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused217" }, { - "label": "[unused374]", + "label": "[unused218]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused374]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused374" + "norm_label": "[unused218]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused218" }, { - "label": "[unused375]", + "label": "[unused219]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused375]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused375" + "norm_label": "[unused219]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused219" }, { - "label": "[unused376]", + "label": "[unused220]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused376]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused376" + "norm_label": "[unused220]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused220" }, { - "label": "[unused377]", + "label": "[unused221]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused377]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused377" + "norm_label": "[unused221]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused221" }, { - "label": "[unused378]", + "label": "[unused222]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused378]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused378" + "norm_label": "[unused222]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused222" }, { - "label": "[unused379]", + "label": "[unused223]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused379]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused379" + "norm_label": "[unused223]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused223" }, { - "label": "[unused380]", + "label": "[unused224]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused380]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused380" + "norm_label": "[unused224]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused224" }, { - "label": "[unused381]", + "label": "[unused225]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused381]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused381" + "norm_label": "[unused225]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused225" }, { - "label": "[unused382]", + "label": "[unused226]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused382]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused382" + "norm_label": "[unused226]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused226" }, { - "label": "[unused383]", + "label": "[unused227]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused383]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused383" + "norm_label": "[unused227]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused227" }, { - "label": "[unused384]", + "label": "[unused228]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused384]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused384" + "norm_label": "[unused228]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused228" }, { - "label": "[unused385]", + "label": "[unused229]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused385]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused385" + "norm_label": "[unused229]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused229" }, { - "label": "[unused386]", + "label": "[unused230]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused386]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused386" + "norm_label": "[unused230]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused230" }, { - "label": "[unused387]", + "label": "[unused231]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused387]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused387" + "norm_label": "[unused231]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused231" }, { - "label": "[unused388]", + "label": "[unused232]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused388]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused388" + "norm_label": "[unused232]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused232" }, { - "label": "[unused389]", + "label": "[unused233]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused389]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused389" + "norm_label": "[unused233]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused233" }, { - "label": "[unused390]", + "label": "[unused234]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused390]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused390" + "norm_label": "[unused234]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused234" }, { - "label": "[unused391]", + "label": "[unused235]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused391]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused391" + "norm_label": "[unused235]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused235" }, { - "label": "[unused392]", + "label": "[unused236]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused392]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused392" + "norm_label": "[unused236]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused236" }, { - "label": "[unused393]", + "label": "[unused237]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused393]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused393" + "norm_label": "[unused237]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused237" }, { - "label": "[unused394]", + "label": "[unused238]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused394]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused394" + "norm_label": "[unused238]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused238" }, { - "label": "[unused395]", + "label": "[unused239]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused395]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused395" + "norm_label": "[unused239]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused239" }, { - "label": "[unused396]", + "label": "[unused240]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused396]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused396" + "norm_label": "[unused240]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused240" }, { - "label": "[unused397]", + "label": "[unused241]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused397]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused397" + "norm_label": "[unused241]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused241" }, { - "label": "[unused398]", + "label": "[unused242]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused398]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused398" + "norm_label": "[unused242]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused242" }, { - "label": "[unused399]", + "label": "[unused243]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused399]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused399" + "norm_label": "[unused243]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused243" }, { - "label": "[unused400]", + "label": "[unused244]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused400]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused400" + "norm_label": "[unused244]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused244" }, { - "label": "[unused401]", + "label": "[unused245]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused401]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused401" + "norm_label": "[unused245]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused245" }, { - "label": "[unused402]", + "label": "[unused246]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused402]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused402" + "norm_label": "[unused246]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused246" }, { - "label": "[unused403]", + "label": "[unused247]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused403]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused403" + "norm_label": "[unused247]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused247" }, { - "label": "[unused404]", + "label": "[unused248]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused404]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused404" + "norm_label": "[unused248]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused248" }, { - "label": "[unused405]", + "label": "[unused249]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused405]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused405" + "norm_label": "[unused249]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused249" }, { - "label": "[unused406]", + "label": "[unused250]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused406]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused406" + "norm_label": "[unused250]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused250" }, { - "label": "[unused407]", + "label": "[unused251]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused407]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused407" + "norm_label": "[unused251]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused251" }, { - "label": "[unused408]", + "label": "[unused252]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused408]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused408" + "norm_label": "[unused252]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused252" }, { - "label": "[unused409]", + "label": "[unused253]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused409]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused409" + "norm_label": "[unused253]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused253" }, { - "label": "[unused410]", + "label": "[unused254]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused410]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused410" + "norm_label": "[unused254]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused254" }, { - "label": "[unused411]", + "label": "[unused255]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused411]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused411" + "norm_label": "[unused255]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused255" }, { - "label": "[unused412]", + "label": "[unused256]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused412]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused412" + "norm_label": "[unused256]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused256" }, { - "label": "[unused413]", + "label": "[unused257]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused413]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused413" + "norm_label": "[unused257]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused257" }, { - "label": "[unused414]", + "label": "[unused258]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused414]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused414" + "norm_label": "[unused258]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused258" }, { - "label": "[unused415]", + "label": "[unused259]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused415]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused415" + "norm_label": "[unused259]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused259" }, { - "label": "[unused416]", + "label": "[unused260]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused416]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused416" + "norm_label": "[unused260]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused260" }, { - "label": "[unused417]", + "label": "[unused261]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused417]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused417" + "norm_label": "[unused261]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused261" }, { - "label": "[unused418]", + "label": "[unused262]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused418]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused418" + "norm_label": "[unused262]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused262" }, { - "label": "[unused419]", + "label": "[unused263]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused419]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused419" + "norm_label": "[unused263]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused263" }, { - "label": "[unused420]", + "label": "[unused264]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused420]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused420" + "norm_label": "[unused264]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused264" }, { - "label": "[unused421]", + "label": "[unused265]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused421]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused421" + "norm_label": "[unused265]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused265" }, { - "label": "[unused422]", + "label": "[unused266]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused422]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused422" + "norm_label": "[unused266]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused266" }, { - "label": "[unused423]", + "label": "[unused267]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused423]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused423" + "norm_label": "[unused267]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused267" }, { - "label": "[unused424]", + "label": "[unused268]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused424]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused424" + "norm_label": "[unused268]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused268" }, { - "label": "[unused425]", + "label": "[unused269]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused425]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused425" + "norm_label": "[unused269]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused269" }, { - "label": "[unused426]", + "label": "[unused270]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused426]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused426" + "norm_label": "[unused270]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused270" }, { - "label": "[unused427]", + "label": "[unused271]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused427]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused427" + "norm_label": "[unused271]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused271" }, { - "label": "[unused428]", + "label": "[unused272]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused428]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused428" + "norm_label": "[unused272]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused272" }, { - "label": "[unused429]", + "label": "[unused273]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused429]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused429" + "norm_label": "[unused273]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused273" }, { - "label": "[unused430]", + "label": "[unused274]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused430]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused430" + "norm_label": "[unused274]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused274" }, { - "label": "[unused431]", + "label": "[unused275]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused431]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused431" + "norm_label": "[unused275]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused275" }, { - "label": "[unused432]", + "label": "[unused276]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused432]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused432" + "norm_label": "[unused276]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused276" }, { - "label": "[unused433]", + "label": "[unused277]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused433]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused433" + "norm_label": "[unused277]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused277" }, { - "label": "[unused434]", + "label": "[unused278]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused434]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused434" + "norm_label": "[unused278]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused278" }, { - "label": "[unused435]", + "label": "[unused279]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused435]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused435" + "norm_label": "[unused279]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused279" }, { - "label": "[unused436]", + "label": "[unused280]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused436]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused436" + "norm_label": "[unused280]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused280" }, { - "label": "[unused437]", + "label": "[unused281]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused437]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused437" + "norm_label": "[unused281]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused281" }, { - "label": "[unused438]", + "label": "[unused282]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused438]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused438" + "norm_label": "[unused282]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused282" }, { - "label": "[unused439]", + "label": "[unused283]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused439]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused439" + "norm_label": "[unused283]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused283" }, { - "label": "[unused440]", + "label": "[unused284]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused440]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused440" + "norm_label": "[unused284]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused284" }, { - "label": "[unused441]", + "label": "[unused285]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused441]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused441" + "norm_label": "[unused285]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused285" }, { - "label": "[unused442]", + "label": "[unused286]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused442]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused442" + "norm_label": "[unused286]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused286" }, { - "label": "[unused443]", + "label": "[unused287]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused443]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused443" + "norm_label": "[unused287]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused287" }, { - "label": "[unused444]", + "label": "[unused288]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused444]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused444" + "norm_label": "[unused288]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused288" }, { - "label": "[unused445]", + "label": "[unused289]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused445]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused445" + "norm_label": "[unused289]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused289" }, { - "label": "[unused446]", + "label": "[unused290]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused446]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused446" + "norm_label": "[unused290]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused290" }, { - "label": "[unused447]", + "label": "[unused291]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused447]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused447" + "norm_label": "[unused291]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused291" }, { - "label": "[unused448]", + "label": "[unused292]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused448]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused448" + "norm_label": "[unused292]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused292" }, { - "label": "[unused449]", + "label": "[unused293]", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", "community": 0, - "norm_label": "[unused449]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused449" + "norm_label": "[unused293]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused293" }, { - "label": "tokenizer_config.json", + "label": "[unused294]", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer_config.json", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 109, - "norm_label": "tokenizer_config.json", - "id": "main_utils_models_all_minilm_l6_v2_tokenizer_config_json" + "community": 0, + "norm_label": "[unused294]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused294" }, { - "label": "do_lower_case", + "label": "[unused295]", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer_config.json", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 109, - "norm_label": "do_lower_case", - "id": "all_minilm_l6_v2_tokenizer_config_do_lower_case" + "community": 0, + "norm_label": "[unused295]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused295" }, { - "label": "unk_token", + "label": "[unused296]", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer_config.json", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 109, - "norm_label": "unk_token", - "id": "all_minilm_l6_v2_tokenizer_config_unk_token" + "community": 0, + "norm_label": "[unused296]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused296" }, { - "label": "sep_token", + "label": "[unused297]", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer_config.json", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 109, - "norm_label": "sep_token", - "id": "all_minilm_l6_v2_tokenizer_config_sep_token" + "community": 0, + "norm_label": "[unused297]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused297" }, { - "label": "pad_token", + "label": "[unused298]", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer_config.json", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 109, - "norm_label": "pad_token", - "id": "all_minilm_l6_v2_tokenizer_config_pad_token" + "community": 0, + "norm_label": "[unused298]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused298" }, { - "label": "cls_token", + "label": "[unused299]", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer_config.json", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 109, - "norm_label": "cls_token", - "id": "all_minilm_l6_v2_tokenizer_config_cls_token" + "community": 0, + "norm_label": "[unused299]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused299" }, { - "label": "mask_token", + "label": "[unused300]", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer_config.json", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 109, - "norm_label": "mask_token", - "id": "all_minilm_l6_v2_tokenizer_config_mask_token" + "community": 0, + "norm_label": "[unused300]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused300" }, { - "label": "tokenize_chinese_chars", + "label": "[unused301]", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer_config.json", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 109, - "norm_label": "tokenize_chinese_chars", - "id": "all_minilm_l6_v2_tokenizer_config_tokenize_chinese_chars" + "community": 0, + "norm_label": "[unused301]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused301" }, { - "label": "strip_accents", + "label": "[unused302]", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer_config.json", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 109, - "norm_label": "strip_accents", - "id": "all_minilm_l6_v2_tokenizer_config_strip_accents" + "community": 0, + "norm_label": "[unused302]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused302" }, { - "label": "name_or_path", + "label": "[unused303]", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer_config.json", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 109, - "norm_label": "name_or_path", - "id": "all_minilm_l6_v2_tokenizer_config_name_or_path" + "community": 0, + "norm_label": "[unused303]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused303" }, { - "label": "do_basic_tokenize", + "label": "[unused304]", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer_config.json", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 109, - "norm_label": "do_basic_tokenize", - "id": "all_minilm_l6_v2_tokenizer_config_do_basic_tokenize" + "community": 0, + "norm_label": "[unused304]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused304" }, { - "label": "never_split", + "label": "[unused305]", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer_config.json", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 109, - "norm_label": "never_split", - "id": "all_minilm_l6_v2_tokenizer_config_never_split" + "community": 0, + "norm_label": "[unused305]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused305" }, { - "label": "tokenizer_class", + "label": "[unused306]", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer_config.json", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 109, - "norm_label": "tokenizer_class", - "id": "all_minilm_l6_v2_tokenizer_config_tokenizer_class" + "community": 0, + "norm_label": "[unused306]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused306" }, { - "label": "model_max_length", + "label": "[unused307]", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer_config.json", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 109, - "norm_label": "model_max_length", - "id": "all_minilm_l6_v2_tokenizer_config_model_max_length" + "community": 0, + "norm_label": "[unused307]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused307" }, { - "label": "config.json", + "label": "[unused308]", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/1_Pooling/config.json", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 195, - "norm_label": "config.json", - "id": "main_utils_models_all_minilm_l6_v2_1_pooling_config_json" + "community": 0, + "norm_label": "[unused308]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused308" }, { - "label": "word_embedding_dimension", + "label": "[unused309]", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/1_Pooling/config.json", - "source_location": "L2", - "community": 195, - "norm_label": "word_embedding_dimension", - "id": "1_pooling_config_word_embedding_dimension" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused309]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused309" }, { - "label": "pooling_mode_cls_token", + "label": "[unused310]", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/1_Pooling/config.json", - "source_location": "L3", - "community": 195, - "norm_label": "pooling_mode_cls_token", - "id": "1_pooling_config_pooling_mode_cls_token" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused310]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused310" }, { - "label": "pooling_mode_mean_tokens", + "label": "[unused311]", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/1_Pooling/config.json", - "source_location": "L4", - "community": 195, - "norm_label": "pooling_mode_mean_tokens", - "id": "1_pooling_config_pooling_mode_mean_tokens" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused311]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused311" }, { - "label": "pooling_mode_max_tokens", + "label": "[unused312]", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/1_Pooling/config.json", - "source_location": "L5", - "community": 195, - "norm_label": "pooling_mode_max_tokens", - "id": "1_pooling_config_pooling_mode_max_tokens" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused312]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused312" }, { - "label": "pooling_mode_mean_sqrt_len_tokens", + "label": "[unused313]", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/1_Pooling/config.json", - "source_location": "L6", - "community": 195, - "norm_label": "pooling_mode_mean_sqrt_len_tokens", - "id": "1_pooling_config_pooling_mode_mean_sqrt_len_tokens" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused313]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused313" }, { - "label": "conftest.py", + "label": "[unused314]", "file_type": "code", - "source_file": "tests/conftest.py", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 251, - "norm_label": "conftest.py", - "id": "tests_conftest_py" + "community": 0, + "norm_label": "[unused314]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused314" }, { - "label": "_reset_rate_limiter()", + "label": "[unused315]", "file_type": "code", - "source_file": "tests/conftest.py", - "source_location": "L13", - "community": 251, - "norm_label": "_reset_rate_limiter()", - "id": "tests_conftest_reset_rate_limiter" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused315]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused315" }, { - "label": "pytest_configure()", + "label": "[unused316]", "file_type": "code", - "source_file": "tests/conftest.py", - "source_location": "L20", - "community": 251, - "norm_label": "pytest_configure()", - "id": "tests_conftest_pytest_configure" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused316]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused316" }, { - "label": "_patch_secret_key()", + "label": "[unused317]", "file_type": "code", - "source_file": "tests/conftest.py", - "source_location": "L33", - "community": 251, - "norm_label": "_patch_secret_key()", - "id": "tests_conftest_patch_secret_key" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused317]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused317" }, { - "label": "dbSession()", + "label": "[unused318]", "file_type": "code", - "source_file": "tests/conftest.py", - "source_location": "L48", - "community": 251, - "norm_label": "dbsession()", - "id": "tests_conftest_dbsession" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused318]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused318" }, { - "label": "sampleUserData()", + "label": "[unused319]", "file_type": "code", - "source_file": "tests/conftest.py", - "source_location": "L60", - "community": 251, - "norm_label": "sampleuserdata()", - "id": "tests_conftest_sampleuserdata" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused319]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused319" }, { - "label": "sampleAPIKeyData()", + "label": "[unused320]", "file_type": "code", - "source_file": "tests/conftest.py", - "source_location": "L71", - "community": 251, - "norm_label": "sampleapikeydata()", - "id": "tests_conftest_sampleapikeydata" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused320]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused320" }, { - "label": "samplePrometheusSessionData()", + "label": "[unused321]", "file_type": "code", - "source_file": "tests/conftest.py", - "source_location": "L76", - "community": 251, - "norm_label": "sampleprometheussessiondata()", - "id": "tests_conftest_sampleprometheussessiondata" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused321]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused321" }, { - "label": "stocks_http_client()", + "label": "[unused322]", "file_type": "code", - "source_file": "tests/conftest.py", - "source_location": "L81", - "community": 539, - "norm_label": "stocks_http_client()", - "id": "tests_conftest_stocks_http_client" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused322]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused322" }, { - "label": "client()", + "label": "[unused323]", "file_type": "code", - "source_file": "tests/conftest.py", - "source_location": "L106", - "community": 539, - "norm_label": "client()", - "id": "tests_conftest_client" - }, - { - "label": "Reset slowapi in-memory rate limiter between every test.", - "file_type": "rationale", - "source_file": "tests/conftest.py", - "source_location": "L14", - "community": 251, - "norm_label": "reset slowapi in-memory rate limiter between every test.", - "id": "tests_conftest_rationale_14" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused323]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused323" }, { - "label": "Set required env vars before test collection. config.py eagerly instantia", - "file_type": "rationale", - "source_file": "tests/conftest.py", - "source_location": "L21", - "community": 251, - "norm_label": "set required env vars before test collection. config.py eagerly instantia", - "id": "tests_conftest_rationale_21" + "label": "[unused324]", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused324]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused324" }, { - "label": "TestClient with stocks router + verifyAPIKey + getCurrentUser overrides.", - "file_type": "rationale", - "source_file": "tests/conftest.py", - "source_location": "L82", - "community": 539, - "norm_label": "testclient with stocks router + verifyapikey + getcurrentuser overrides.", - "id": "tests_conftest_rationale_82" + "label": "[unused325]", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused325]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused325" }, { - "label": "TestClient with all routers mounted \u2014 no lifespan (no DB/service init). O", - "file_type": "rationale", - "source_file": "tests/conftest.py", - "source_location": "L107", - "community": 539, - "norm_label": "testclient with all routers mounted \u2014 no lifespan (no db/service init). o", - "id": "tests_conftest_rationale_107" + "label": "[unused326]", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused326]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused326" }, { - "label": "test_agent_sandbox_integration.py", + "label": "[unused327]", "file_type": "code", - "source_file": "tests/test_agent_sandbox_integration.py", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 24, - "norm_label": "test_agent_sandbox_integration.py", - "id": "tests_test_agent_sandbox_integration_py" + "community": 0, + "norm_label": "[unused327]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused327" }, { - "label": "TestPersistentSandboxLifecycle", + "label": "[unused328]", "file_type": "code", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L10", - "community": 24, - "norm_label": "testpersistentsandboxlifecycle", - "id": "tests_test_agent_sandbox_integration_testpersistentsandboxlifecycle" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused328]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused328" }, { - "label": "test_stream_persists_sandbox()", + "label": "[unused329]", "file_type": "code", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L17", - "community": 24, - "norm_label": "test_stream_persists_sandbox()", - "id": "tests_test_agent_sandbox_integration_test_stream_persists_sandbox" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused329]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused329" }, { - "label": "test_sync_empty_workspace_skips_push()", + "label": "[unused330]", "file_type": "code", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L42", - "community": 24, - "norm_label": "test_sync_empty_workspace_skips_push()", - "id": "tests_test_agent_sandbox_integration_test_sync_empty_workspace_skips_push" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused330]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused330" }, { - "label": "test_no_create_in_agent_source()", + "label": "[unused331]", "file_type": "code", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L53", - "community": 24, - "norm_label": "test_no_create_in_agent_source()", - "id": "tests_test_agent_sandbox_integration_test_no_create_in_agent_source" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused331]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused331" }, { - "label": "Tests for agent <-> persistent sandbox integration (Task 3).", - "file_type": "rationale", - "source_file": "tests/test_agent_sandbox_integration.py", + "label": "[unused332]", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 24, - "norm_label": "tests for agent <-> persistent sandbox integration (task 3).", - "id": "tests_test_agent_sandbox_integration_rationale_1" + "community": 0, + "norm_label": "[unused332]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused332" }, { - "label": "Verify the agent uses getOrCreate + syncToSandbox/syncFromSandbox.", - "file_type": "rationale", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L11", - "community": 24, - "norm_label": "verify the agent uses getorcreate + synctosandbox/syncfromsandbox.", - "id": "tests_test_agent_sandbox_integration_rationale_11" + "label": "[unused333]", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused333]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused333" }, { - "label": "streamMessage uses getOrCreate instead of create, syncs on finish.", - "file_type": "rationale", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L18", - "community": 275, - "norm_label": "streammessage uses getorcreate instead of create, syncs on finish.", - "id": "tests_test_agent_sandbox_integration_rationale_18" + "label": "[unused334]", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused334]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused334" }, { - "label": "When host workspace is empty, syncToSandbox returns 0.", - "file_type": "rationale", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L43", - "community": 276, - "norm_label": "when host workspace is empty, synctosandbox returns 0.", - "id": "tests_test_agent_sandbox_integration_rationale_43" + "label": "[unused335]", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused335]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused335" }, { - "label": "Verify agent.py no longer calls SandboxManager.create directly.", - "file_type": "rationale", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L54", - "community": 277, - "norm_label": "verify agent.py no longer calls sandboxmanager.create directly.", - "id": "tests_test_agent_sandbox_integration_rationale_54" + "label": "[unused336]", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused336]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused336" }, { - "label": "test_agent_state_integration.py", + "label": "[unused337]", "file_type": "code", - "source_file": "tests/test_agent_state_integration.py", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 93, - "norm_label": "test_agent_state_integration.py", - "id": "tests_test_agent_state_integration_py" + "community": 0, + "norm_label": "[unused337]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused337" }, { - "label": "TestBuildSystemPromptState", + "label": "[unused338]", "file_type": "code", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L7", - "community": 474, - "norm_label": "testbuildsystempromptstate", - "id": "tests_test_agent_state_integration_testbuildsystempromptstate" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused338]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused338" }, { - "label": ".test_build_system_prompt_no_state()", + "label": "[unused339]", "file_type": "code", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L8", - "community": 474, - "norm_label": ".test_build_system_prompt_no_state()", - "id": "tests_test_agent_state_integration_testbuildsystempromptstate_test_build_system_prompt_no_state" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused339]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused339" }, { - "label": ".test_build_system_prompt_with_state()", + "label": "[unused340]", "file_type": "code", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L13", - "community": 474, - "norm_label": ".test_build_system_prompt_with_state()", - "id": "tests_test_agent_state_integration_testbuildsystempromptstate_test_build_system_prompt_with_state" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused340]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused340" }, { - "label": ".test_build_system_prompt_empty_state()", + "label": "[unused341]", "file_type": "code", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L21", - "community": 474, - "norm_label": ".test_build_system_prompt_empty_state()", - "id": "tests_test_agent_state_integration_testbuildsystempromptstate_test_build_system_prompt_empty_state" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused341]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused341" }, { - "label": ".test_build_system_prompt_state_after_memories()", + "label": "[unused342]", "file_type": "code", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L27", - "community": 474, - "norm_label": ".test_build_system_prompt_state_after_memories()", - "id": "tests_test_agent_state_integration_testbuildsystempromptstate_test_build_system_prompt_state_after_memories" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused342]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused342" }, { - "label": ".test_build_system_prompt_multiple_state_entries()", + "label": "[unused343]", "file_type": "code", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L37", - "community": 474, - "norm_label": ".test_build_system_prompt_multiple_state_entries()", - "id": "tests_test_agent_state_integration_testbuildsystempromptstate_test_build_system_prompt_multiple_state_entries" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused343]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused343" }, { - "label": "TestSendMessageStateIntegration", + "label": "[unused344]", "file_type": "code", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L47", - "community": 93, - "norm_label": "testsendmessagestateintegration", - "id": "tests_test_agent_state_integration_testsendmessagestateintegration" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused344]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused344" }, { - "label": "test_send_message_creates_harness_state()", + "label": "[unused345]", "file_type": "code", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L50", - "community": 93, - "norm_label": "test_send_message_creates_harness_state()", - "id": "tests_test_agent_state_integration_test_send_message_creates_harness_state" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused345]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused345" }, { - "label": "TestStreamMessageStateIntegration", + "label": "[unused346]", "file_type": "code", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L84", - "community": 93, - "norm_label": "teststreammessagestateintegration", - "id": "tests_test_agent_state_integration_teststreammessagestateintegration" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused346]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused346" }, { - "label": "test_stream_message_creates_harness_state()", + "label": "[unused347]", "file_type": "code", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L87", - "community": 93, - "norm_label": "test_stream_message_creates_harness_state()", - "id": "tests_test_agent_state_integration_test_stream_message_creates_harness_state" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused347]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused347" }, { - "label": "test_stream_message_passes_state_to_dispatch()", + "label": "[unused348]", "file_type": "code", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L127", - "community": 93, - "norm_label": "test_stream_message_passes_state_to_dispatch()", - "id": "tests_test_agent_state_integration_test_stream_message_passes_state_to_dispatch" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused348]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused348" }, { - "label": "TestSystemPromptStateInstructions", + "label": "[unused349]", "file_type": "code", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L186", - "community": 93, - "norm_label": "testsystempromptstateinstructions", - "id": "tests_test_agent_state_integration_testsystempromptstateinstructions" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused349]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused349" }, { - "label": ".test_system_prompt_has_harness_state_section()", + "label": "[unused350]", "file_type": "code", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L187", - "community": 93, - "norm_label": ".test_system_prompt_has_harness_state_section()", - "id": "tests_test_agent_state_integration_testsystempromptstateinstructions_test_system_prompt_has_harness_state_section" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused350]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused350" }, { - "label": ".test_system_prompt_has_memory_sync_section()", + "label": "[unused351]", "file_type": "code", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L195", - "community": 93, - "norm_label": ".test_system_prompt_has_memory_sync_section()", - "id": "tests_test_agent_state_integration_testsystempromptstateinstructions_test_system_prompt_has_memory_sync_section" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused351]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused351" }, { - "label": "System prompt should work without state parameter.", - "file_type": "rationale", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L9", - "community": 474, - "norm_label": "system prompt should work without state parameter.", - "id": "tests_test_agent_state_integration_rationale_9" + "label": "[unused352]", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused352]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused352" }, { - "label": "System prompt should include state context when provided.", - "file_type": "rationale", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L14", - "community": 474, - "norm_label": "system prompt should include state context when provided.", - "id": "tests_test_agent_state_integration_rationale_14" + "label": "[unused353]", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused353]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused353" }, { - "label": "System prompt should not include state section when empty.", - "file_type": "rationale", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L22", - "community": 474, - "norm_label": "system prompt should not include state section when empty.", - "id": "tests_test_agent_state_integration_rationale_22" + "label": "[unused354]", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused354]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused354" }, { - "label": "State section should appear after memories section.", - "file_type": "rationale", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L28", - "community": 474, - "norm_label": "state section should appear after memories section.", - "id": "tests_test_agent_state_integration_rationale_28" + "label": "[unused355]", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused355]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused355" }, { - "label": "All state entries should appear in the prompt.", - "file_type": "rationale", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L38", - "community": 474, - "norm_label": "all state entries should appear in the prompt.", - "id": "tests_test_agent_state_integration_rationale_38" + "label": "[unused356]", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused356]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused356" }, { - "label": "streamMessage should create a buildSystemPrompt with a state param.", - "file_type": "rationale", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L51", - "community": 278, - "norm_label": "streammessage should create a buildsystemprompt with a state param.", - "id": "tests_test_agent_state_integration_rationale_51" + "label": "[unused357]", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused357]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused357" }, { - "label": "streamMessage should create a HarnessState and pass it to buildSystemPrompt.", - "file_type": "rationale", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L88", - "community": 279, - "norm_label": "streammessage should create a harnessstate and pass it to buildsystemprompt.", - "id": "tests_test_agent_state_integration_rationale_88" + "label": "[unused358]", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused358]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused358" }, { - "label": "streamMessage should pass state to dispatchToolCall.", - "file_type": "rationale", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L128", - "community": 280, - "norm_label": "streammessage should pass state to dispatchtoolcall.", - "id": "tests_test_agent_state_integration_rationale_128" + "label": "[unused359]", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused359]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused359" }, { - "label": "System prompt should instruct LLM about harness state usage.", - "file_type": "rationale", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L188", - "community": 93, - "norm_label": "system prompt should instruct llm about harness state usage.", - "id": "tests_test_agent_state_integration_rationale_188" + "label": "[unused360]", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused360]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused360" }, { - "label": "System prompt should instruct LLM about memory vs state.", - "file_type": "rationale", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L196", - "community": 93, - "norm_label": "system prompt should instruct llm about memory vs state.", - "id": "tests_test_agent_state_integration_rationale_196" + "label": "[unused361]", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused361]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused361" }, { - "label": "test_api_key_quota_atomic.py", + "label": "[unused362]", "file_type": "code", - "source_file": "tests/test_api_key_quota_atomic.py", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 546, - "norm_label": "test_api_key_quota_atomic.py", - "id": "tests_test_api_key_quota_atomic_py" + "community": 0, + "norm_label": "[unused362]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused362" }, { - "label": "sampleKeyData()", + "label": "[unused363]", "file_type": "code", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L18", - "community": 546, - "norm_label": "samplekeydata()", - "id": "tests_test_api_key_quota_atomic_samplekeydata" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused363]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused363" }, { - "label": "TestAtomicQuotaIncrement", + "label": "[unused364]", "file_type": "code", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L23", - "community": 26, - "norm_label": "testatomicquotaincrement", - "id": "tests_test_api_key_quota_atomic_testatomicquotaincrement" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused364]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused364" }, { - "label": ".test_normal_quota_check_works()", + "label": "[unused365]", "file_type": "code", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L26", - "community": 26, - "norm_label": ".test_normal_quota_check_works()", - "id": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_normal_quota_check_works" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused365]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused365" }, { - "label": ".test_atomic_increment_prevents_overuse()", + "label": "[unused366]", "file_type": "code", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L52", - "community": 26, - "norm_label": ".test_atomic_increment_prevents_overuse()", - "id": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_atomic_increment_prevents_overuse" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused366]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused366" }, { - "label": ".test_concurrent_requests_serialized_at_db_level()", + "label": "[unused367]", "file_type": "code", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L88", - "community": 26, - "norm_label": ".test_concurrent_requests_serialized_at_db_level()", - "id": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_concurrent_requests_serialized_at_db_level" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused367]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused367" }, { - "label": ".test_request_at_exact_quota_limit()", + "label": "[unused368]", "file_type": "code", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L127", - "community": 26, - "norm_label": ".test_request_at_exact_quota_limit()", - "id": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_request_at_exact_quota_limit" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused368]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused368" }, { - "label": ".test_invalid_api_key_returns_zero_rows()", + "label": "[unused369]", "file_type": "code", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L150", - "community": 26, - "norm_label": ".test_invalid_api_key_returns_zero_rows()", - "id": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_invalid_api_key_returns_zero_rows" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused369]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused369" }, { - "label": ".test_multiple_keys_independent_quotas()", + "label": "[unused370]", "file_type": "code", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L164", - "community": 561, - "norm_label": ".test_multiple_keys_independent_quotas()", - "id": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_multiple_keys_independent_quotas" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused370]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused370" }, { - "label": ".test_increment_from_zero()", + "label": "[unused371]", "file_type": "code", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L199", - "community": 26, - "norm_label": ".test_increment_from_zero()", - "id": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_increment_from_zero" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused371]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused371" }, { - "label": "TestVerifyAPIKeyIntegration", + "label": "[unused372]", "file_type": "code", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L220", - "community": 535, - "norm_label": "testverifyapikeyintegration", - "id": "tests_test_api_key_quota_atomic_testverifyapikeyintegration" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused372]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused372" }, { - "label": ".test_verify_api_key_success()", + "label": "[unused373]", "file_type": "code", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L223", - "community": 535, - "norm_label": ".test_verify_api_key_success()", - "id": "tests_test_api_key_quota_atomic_testverifyapikeyintegration_test_verify_api_key_success" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused373]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused373" }, { - "label": ".test_verify_api_key_quota_exceeded()", + "label": "[unused374]", "file_type": "code", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L238", - "community": 535, - "norm_label": ".test_verify_api_key_quota_exceeded()", - "id": "tests_test_api_key_quota_atomic_testverifyapikeyintegration_test_verify_api_key_quota_exceeded" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused374]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused374" }, { - "label": ".test_verify_api_key_invalid()", + "label": "[unused375]", "file_type": "code", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L253", - "community": 535, - "norm_label": ".test_verify_api_key_invalid()", - "id": "tests_test_api_key_quota_atomic_testverifyapikeyintegration_test_verify_api_key_invalid" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused375]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused375" }, { - "label": ".test_verify_api_key_missing()", + "label": "[unused376]", "file_type": "code", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L264", - "community": 535, - "norm_label": ".test_verify_api_key_missing()", - "id": "tests_test_api_key_quota_atomic_testverifyapikeyintegration_test_verify_api_key_missing" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused376]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused376" }, { - "label": ".test_verify_api_key_disabled()", + "label": "[unused377]", "file_type": "code", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L275", - "community": 535, - "norm_label": ".test_verify_api_key_disabled()", - "id": "tests_test_api_key_quota_atomic_testverifyapikeyintegration_test_verify_api_key_disabled" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused377]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused377" }, { - "label": "Tests for atomic API key quota enforcement (race condition fix). Verifies tha", - "file_type": "rationale", - "source_file": "tests/test_api_key_quota_atomic.py", + "label": "[unused378]", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 546, - "norm_label": "tests for atomic api key quota enforcement (race condition fix). verifies tha", - "id": "tests_test_api_key_quota_atomic_rationale_1" + "community": 0, + "norm_label": "[unused378]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused378" }, { - "label": "Sample API key data for tests.", - "file_type": "rationale", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L19", - "community": 546, - "norm_label": "sample api key data for tests.", - "id": "tests_test_api_key_quota_atomic_rationale_19" + "label": "[unused379]", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused379]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused379" }, { - "label": "Test that atomic increment prevents race conditions.", - "file_type": "rationale", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L24", - "community": 26, - "norm_label": "test that atomic increment prevents race conditions.", - "id": "tests_test_api_key_quota_atomic_rationale_24" + "label": "[unused380]", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused380]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused380" }, { - "label": "Test that normal quota check still works with atomic increment.", - "file_type": "rationale", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L27", - "community": 26, - "norm_label": "test that normal quota check still works with atomic increment.", - "id": "tests_test_api_key_quota_atomic_rationale_27" + "label": "[unused381]", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused381]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused381" }, { - "label": "Test that atomic increment prevents quota overuse.", - "file_type": "rationale", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L53", - "community": 26, - "norm_label": "test that atomic increment prevents quota overuse.", - "id": "tests_test_api_key_quota_atomic_rationale_53" + "label": "[unused382]", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused382]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused382" }, { - "label": "Test that concurrent requests are properly serialized at DB level. Th", - "file_type": "rationale", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L89", - "community": 26, - "norm_label": "test that concurrent requests are properly serialized at db level. th", - "id": "tests_test_api_key_quota_atomic_rationale_89" + "label": "[unused383]", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused383]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused383" }, { - "label": "Test edge case: request exactly at quota limit.", - "file_type": "rationale", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L128", - "community": 26, - "norm_label": "test edge case: request exactly at quota limit.", - "id": "tests_test_api_key_quota_atomic_rationale_128" + "label": "[unused384]", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused384]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused384" }, { - "label": "Test that invalid API key returns zero rows affected.", - "file_type": "rationale", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L151", - "community": 26, - "norm_label": "test that invalid api key returns zero rows affected.", - "id": "tests_test_api_key_quota_atomic_rationale_151" + "label": "[unused385]", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused385]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused385" }, { - "label": "Test that multiple API keys have independent quotas.", - "file_type": "rationale", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L165", - "community": 561, - "norm_label": "test that multiple api keys have independent quotas.", - "id": "tests_test_api_key_quota_atomic_rationale_165" + "label": "[unused386]", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused386]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused386" }, { - "label": "Test that increment works from zero usage.", - "file_type": "rationale", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L200", - "community": 26, - "norm_label": "test that increment works from zero usage.", - "id": "tests_test_api_key_quota_atomic_rationale_200" + "label": "[unused387]", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused387]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused387" }, { - "label": "Integration tests for the verifyAPIKey function.", - "file_type": "rationale", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L221", - "community": 535, - "norm_label": "integration tests for the verifyapikey function.", - "id": "tests_test_api_key_quota_atomic_rationale_221" + "label": "[unused388]", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused388]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused388" }, { - "label": "Test successful API key verification.", - "file_type": "rationale", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L224", - "community": 535, - "norm_label": "test successful api key verification.", - "id": "tests_test_api_key_quota_atomic_rationale_224" + "label": "[unused389]", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused389]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused389" }, { - "label": "Test API key verification when quota is exceeded.", - "file_type": "rationale", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L239", - "community": 535, - "norm_label": "test api key verification when quota is exceeded.", - "id": "tests_test_api_key_quota_atomic_rationale_239" + "label": "[unused390]", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused390]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused390" }, { - "label": "Test API key verification with invalid key.", - "file_type": "rationale", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L254", - "community": 535, - "norm_label": "test api key verification with invalid key.", - "id": "tests_test_api_key_quota_atomic_rationale_254" + "label": "[unused391]", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused391]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused391" }, { - "label": "Test API key verification with missing key.", - "file_type": "rationale", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L265", - "community": 535, - "norm_label": "test api key verification with missing key.", - "id": "tests_test_api_key_quota_atomic_rationale_265" + "label": "[unused392]", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused392]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused392" }, { - "label": "Test that API key system can be disabled.", - "file_type": "rationale", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L276", - "community": 535, - "norm_label": "test that api key system can be disabled.", - "id": "tests_test_api_key_quota_atomic_rationale_276" + "label": "[unused393]", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused393]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused393" }, { - "label": "test_auth_util.py", + "label": "[unused394]", "file_type": "code", - "source_file": "tests/test_auth_util.py", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 491, - "norm_label": "test_auth_util.py", - "id": "tests_test_auth_util_py" + "community": 0, + "norm_label": "[unused394]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused394" }, { - "label": "TestAuthUtil", + "label": "[unused395]", "file_type": "code", - "source_file": "tests/test_auth_util.py", - "source_location": "L14", - "community": 43, - "norm_label": "testauthutil", - "id": "tests_test_auth_util_testauthutil" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused395]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused395" }, { - "label": ".test_hash_password_returns_string()", + "label": "[unused396]", "file_type": "code", - "source_file": "tests/test_auth_util.py", - "source_location": "L15", - "community": 43, - "norm_label": ".test_hash_password_returns_string()", - "id": "tests_test_auth_util_testauthutil_test_hash_password_returns_string" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused396]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused396" }, { - "label": ".test_hash_password_unique_hashes()", + "label": "[unused397]", "file_type": "code", - "source_file": "tests/test_auth_util.py", - "source_location": "L20", - "community": 43, - "norm_label": ".test_hash_password_unique_hashes()", - "id": "tests_test_auth_util_testauthutil_test_hash_password_unique_hashes" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused397]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused397" }, { - "label": ".test_verify_password_correct()", + "label": "[unused398]", "file_type": "code", - "source_file": "tests/test_auth_util.py", - "source_location": "L26", - "community": 43, - "norm_label": ".test_verify_password_correct()", - "id": "tests_test_auth_util_testauthutil_test_verify_password_correct" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused398]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused398" }, { - "label": ".test_verify_password_incorrect()", + "label": "[unused399]", "file_type": "code", - "source_file": "tests/test_auth_util.py", - "source_location": "L31", - "community": 43, - "norm_label": ".test_verify_password_incorrect()", - "id": "tests_test_auth_util_testauthutil_test_verify_password_incorrect" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused399]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused399" }, { - "label": ".test_verify_password_invalid_hash()", + "label": "[unused400]", "file_type": "code", - "source_file": "tests/test_auth_util.py", - "source_location": "L36", - "community": 43, - "norm_label": ".test_verify_password_invalid_hash()", - "id": "tests_test_auth_util_testauthutil_test_verify_password_invalid_hash" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused400]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused400" }, { - "label": ".test_verify_password_empty_password()", + "label": "[unused401]", "file_type": "code", - "source_file": "tests/test_auth_util.py", - "source_location": "L39", - "community": 43, - "norm_label": ".test_verify_password_empty_password()", - "id": "tests_test_auth_util_testauthutil_test_verify_password_empty_password" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused401]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused401" }, { - "label": ".test_create_access_token_default_expiry()", + "label": "[unused402]", "file_type": "code", - "source_file": "tests/test_auth_util.py", - "source_location": "L43", - "community": 43, - "norm_label": ".test_create_access_token_default_expiry()", - "id": "tests_test_auth_util_testauthutil_test_create_access_token_default_expiry" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused402]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused402" }, { - "label": ".test_create_access_token_custom_expiry()", + "label": "[unused403]", "file_type": "code", - "source_file": "tests/test_auth_util.py", - "source_location": "L50", - "community": 43, - "norm_label": ".test_create_access_token_custom_expiry()", - "id": "tests_test_auth_util_testauthutil_test_create_access_token_custom_expiry" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused403]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused403" }, { - "label": ".test_create_access_token_contains_data()", + "label": "[unused404]", "file_type": "code", - "source_file": "tests/test_auth_util.py", - "source_location": "L61", - "community": 43, - "norm_label": ".test_create_access_token_contains_data()", - "id": "tests_test_auth_util_testauthutil_test_create_access_token_contains_data" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused404]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused404" }, { - "label": "TestSessionExpiryConfig", + "label": "[unused405]", "file_type": "code", - "source_file": "tests/test_auth_util.py", - "source_location": "L69", - "community": 491, - "norm_label": "testsessionexpiryconfig", - "id": "tests_test_auth_util_testsessionexpiryconfig" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused405]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused405" }, { - "label": ".test_session_expiry_days_is_30()", + "label": "[unused406]", "file_type": "code", - "source_file": "tests/test_auth_util.py", - "source_location": "L70", - "community": 491, - "norm_label": ".test_session_expiry_days_is_30()", - "id": "tests_test_auth_util_testsessionexpiryconfig_test_session_expiry_days_is_30" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused406]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused406" }, { - "label": ".test_session_expiry_hours_calculation()", + "label": "[unused407]", "file_type": "code", - "source_file": "tests/test_auth_util.py", - "source_location": "L73", - "community": 491, - "norm_label": ".test_session_expiry_hours_calculation()", - "id": "tests_test_auth_util_testsessionexpiryconfig_test_session_expiry_hours_calculation" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused407]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused407" }, { - "label": ".test_default_token_expiry_equals_30_days()", + "label": "[unused408]", "file_type": "code", - "source_file": "tests/test_auth_util.py", - "source_location": "L78", - "community": 491, - "norm_label": ".test_default_token_expiry_equals_30_days()", - "id": "tests_test_auth_util_testsessionexpiryconfig_test_default_token_expiry_equals_30_days" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused408]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused408" }, { - "label": "TestAuthUtilEdgeCases", + "label": "[unused409]", "file_type": "code", - "source_file": "tests/test_auth_util.py", - "source_location": "L89", - "community": 43, - "norm_label": "testauthutiledgecases", - "id": "tests_test_auth_util_testauthutiledgecases" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused409]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused409" }, { - "label": ".test_verify_password_none_hash()", + "label": "[unused410]", "file_type": "code", - "source_file": "tests/test_auth_util.py", - "source_location": "L90", - "community": 43, - "norm_label": ".test_verify_password_none_hash()", - "id": "tests_test_auth_util_testauthutiledgecases_test_verify_password_none_hash" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused410]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused410" }, { - "label": ".test_verify_password_none_password()", + "label": "[unused411]", "file_type": "code", - "source_file": "tests/test_auth_util.py", - "source_location": "L94", - "community": 43, - "norm_label": ".test_verify_password_none_password()", - "id": "tests_test_auth_util_testauthutiledgecases_test_verify_password_none_password" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused411]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused411" }, { - "label": ".test_verify_password_both_none()", + "label": "[unused412]", "file_type": "code", - "source_file": "tests/test_auth_util.py", - "source_location": "L99", - "community": 43, - "norm_label": ".test_verify_password_both_none()", - "id": "tests_test_auth_util_testauthutiledgecases_test_verify_password_both_none" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused412]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused412" }, { - "label": ".test_create_access_token_with_empty_data()", + "label": "[unused413]", "file_type": "code", - "source_file": "tests/test_auth_util.py", - "source_location": "L103", - "community": 43, - "norm_label": ".test_create_access_token_with_empty_data()", - "id": "tests_test_auth_util_testauthutiledgecases_test_create_access_token_with_empty_data" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused413]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused413" }, { - "label": ".test_create_access_token_with_none_data()", + "label": "[unused414]", "file_type": "code", - "source_file": "tests/test_auth_util.py", - "source_location": "L109", - "community": 43, - "norm_label": ".test_create_access_token_with_none_data()", - "id": "tests_test_auth_util_testauthutiledgecases_test_create_access_token_with_none_data" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused414]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused414" }, { - "label": "test_config.py", + "label": "[unused415]", "file_type": "code", - "source_file": "tests/test_config.py", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 93, - "norm_label": "test_config.py", - "id": "tests_test_config_py" + "community": 0, + "norm_label": "[unused415]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused415" }, { - "label": "TestConfig", + "label": "[unused416]", "file_type": "code", - "source_file": "tests/test_config.py", - "source_location": "L5", - "community": 102, - "norm_label": "testconfig", - "id": "tests_test_config_testconfig" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused416]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused416" }, { - "label": ".test_stocks_api_getitem()", + "label": "[unused417]", "file_type": "code", - "source_file": "tests/test_config.py", - "source_location": "L6", - "community": 102, - "norm_label": ".test_stocks_api_getitem()", - "id": "tests_test_config_testconfig_test_stocks_api_getitem" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused417]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused417" }, { - "label": ".test_prometheus_getitem()", + "label": "[unused418]", "file_type": "code", - "source_file": "tests/test_config.py", - "source_location": "L12", - "community": 102, - "norm_label": ".test_prometheus_getitem()", - "id": "tests_test_config_testconfig_test_prometheus_getitem" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused418]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused418" }, { - "label": ".test_scraper_getitem()", + "label": "[unused419]", "file_type": "code", - "source_file": "tests/test_config.py", - "source_location": "L17", - "community": 102, - "norm_label": ".test_scraper_getitem()", - "id": "tests_test_config_testconfig_test_scraper_getitem" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused419]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused419" }, { - "label": ".test_base_mansa_settings_get()", + "label": "[unused420]", "file_type": "code", - "source_file": "tests/test_config.py", - "source_location": "L22", - "community": 102, - "norm_label": ".test_base_mansa_settings_get()", - "id": "tests_test_config_testconfig_test_base_mansa_settings_get" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused420]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused420" }, { - "label": "test_connectivity_coverage.py", + "label": "[unused421]", "file_type": "code", - "source_file": "tests/test_connectivity_coverage.py", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 59, - "norm_label": "test_connectivity_coverage.py", - "id": "tests_test_connectivity_coverage_py" + "community": 0, + "norm_label": "[unused421]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused421" }, { - "label": "TestCheckMySqlConnection", + "label": "[unused422]", "file_type": "code", - "source_file": "tests/test_connectivity_coverage.py", - "source_location": "L8", - "community": 574, - "norm_label": "testcheckmysqlconnection", - "id": "tests_test_connectivity_coverage_testcheckmysqlconnection" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused422]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused422" }, { - "label": "test_both_engines_ok()", + "label": "[unused423]", "file_type": "code", - "source_file": "tests/test_connectivity_coverage.py", - "source_location": "L13", - "community": 59, - "norm_label": "test_both_engines_ok()", - "id": "tests_test_connectivity_coverage_test_both_engines_ok" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused423]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused423" }, { - "label": "test_user_db_connection_error()", + "label": "[unused424]", "file_type": "code", - "source_file": "tests/test_connectivity_coverage.py", - "source_location": "L26", - "community": 59, - "norm_label": "test_user_db_connection_error()", - "id": "tests_test_connectivity_coverage_test_user_db_connection_error" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused424]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused424" }, { - "label": "test_user_db_timeout()", + "label": "[unused425]", "file_type": "code", - "source_file": "tests/test_connectivity_coverage.py", - "source_location": "L36", - "community": 59, - "norm_label": "test_user_db_timeout()", - "id": "tests_test_connectivity_coverage_test_user_db_timeout" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused425]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused425" }, { - "label": "test_user_db_generic_exception()", + "label": "[unused426]", "file_type": "code", - "source_file": "tests/test_connectivity_coverage.py", - "source_location": "L46", - "community": 59, - "norm_label": "test_user_db_generic_exception()", - "id": "tests_test_connectivity_coverage_test_user_db_generic_exception" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused426]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused426" }, { - "label": "test_user_engine_none()", + "label": "[unused427]", "file_type": "code", - "source_file": "tests/test_connectivity_coverage.py", - "source_location": "L56", - "community": 59, - "norm_label": "test_user_engine_none()", - "id": "tests_test_connectivity_coverage_test_user_engine_none" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused427]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused427" }, { - "label": "test_stocks_db_connection_error()", + "label": "[unused428]", "file_type": "code", - "source_file": "tests/test_connectivity_coverage.py", - "source_location": "L64", - "community": 59, - "norm_label": "test_stocks_db_connection_error()", - "id": "tests_test_connectivity_coverage_test_stocks_db_connection_error" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused428]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused428" }, { - "label": "test_stocks_db_timeout()", + "label": "[unused429]", "file_type": "code", - "source_file": "tests/test_connectivity_coverage.py", - "source_location": "L77", - "community": 59, - "norm_label": "test_stocks_db_timeout()", - "id": "tests_test_connectivity_coverage_test_stocks_db_timeout" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused429]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused429" }, { - "label": "test_stocks_db_generic_exception()", + "label": "[unused430]", "file_type": "code", - "source_file": "tests/test_connectivity_coverage.py", - "source_location": "L90", - "community": 59, - "norm_label": "test_stocks_db_generic_exception()", - "id": "tests_test_connectivity_coverage_test_stocks_db_generic_exception" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused430]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused430" }, { - "label": "test_stocks_engine_none()", + "label": "[unused431]", "file_type": "code", - "source_file": "tests/test_connectivity_coverage.py", - "source_location": "L103", - "community": 59, - "norm_label": "test_stocks_engine_none()", - "id": "tests_test_connectivity_coverage_test_stocks_engine_none" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused431]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused431" }, { - "label": "TestCheckServiceConnection", + "label": "[unused432]", "file_type": "code", - "source_file": "tests/test_connectivity_coverage.py", - "source_location": "L114", - "community": 573, - "norm_label": "testcheckserviceconnection", - "id": "tests_test_connectivity_coverage_testcheckserviceconnection" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused432]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused432" }, { - "label": "test_service_not_found()", + "label": "[unused433]", "file_type": "code", - "source_file": "tests/test_connectivity_coverage.py", - "source_location": "L119", - "community": 59, - "norm_label": "test_service_not_found()", - "id": "tests_test_connectivity_coverage_test_service_not_found" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused433]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused433" }, { - "label": "test_stocks_api_health_ok()", + "label": "[unused434]", "file_type": "code", - "source_file": "tests/test_connectivity_coverage.py", - "source_location": "L128", - "community": 59, - "norm_label": "test_stocks_api_health_ok()", - "id": "tests_test_connectivity_coverage_test_stocks_api_health_ok" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused434]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused434" }, { - "label": "test_non_stocks_prefix()", + "label": "[unused435]", "file_type": "code", - "source_file": "tests/test_connectivity_coverage.py", - "source_location": "L142", - "community": 59, - "norm_label": "test_non_stocks_prefix()", - "id": "tests_test_connectivity_coverage_test_non_stocks_prefix" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused435]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused435" }, { - "label": "test_non_200_status()", + "label": "[unused436]", "file_type": "code", - "source_file": "tests/test_connectivity_coverage.py", - "source_location": "L156", - "community": 59, - "norm_label": "test_non_200_status()", - "id": "tests_test_connectivity_coverage_test_non_200_status" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused436]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused436" }, { - "label": "test_connection_error()", + "label": "[unused437]", "file_type": "code", - "source_file": "tests/test_connectivity_coverage.py", - "source_location": "L169", - "community": 59, - "norm_label": "test_connection_error()", - "id": "tests_test_connectivity_coverage_test_connection_error" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused437]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused437" }, { - "label": "test_timeout()", + "label": "[unused438]", "file_type": "code", - "source_file": "tests/test_connectivity_coverage.py", - "source_location": "L180", - "community": 59, - "norm_label": "test_timeout()", - "id": "tests_test_connectivity_coverage_test_timeout" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused438]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused438" }, { - "label": "test_request_exception()", + "label": "[unused439]", "file_type": "code", - "source_file": "tests/test_connectivity_coverage.py", - "source_location": "L191", - "community": 59, - "norm_label": "test_request_exception()", - "id": "tests_test_connectivity_coverage_test_request_exception" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused439]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused439" }, { - "label": "test_generic_exception()", + "label": "[unused440]", "file_type": "code", - "source_file": "tests/test_connectivity_coverage.py", - "source_location": "L202", - "community": 59, - "norm_label": "test_generic_exception()", - "id": "tests_test_connectivity_coverage_test_generic_exception" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused440]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused440" }, { - "label": "Tests for main/utils/connectivity.py \u2014 covers all branches.", - "file_type": "rationale", - "source_file": "tests/test_connectivity_coverage.py", + "label": "[unused441]", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 59, - "norm_label": "tests for main/utils/connectivity.py \u2014 covers all branches.", - "id": "tests_test_connectivity_coverage_rationale_1" + "community": 0, + "norm_label": "[unused441]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused441" }, { - "label": "checkMySqlConnection \u2014 success, errors, engine=None paths.", - "file_type": "rationale", - "source_file": "tests/test_connectivity_coverage.py", - "source_location": "L9", - "community": 574, - "norm_label": "checkmysqlconnection \u2014 success, errors, engine=none paths.", - "id": "tests_test_connectivity_coverage_rationale_9" + "label": "[unused442]", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused442]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused442" }, { - "label": "checkServiceConnection \u2014 success, not found, errors.", - "file_type": "rationale", - "source_file": "tests/test_connectivity_coverage.py", - "source_location": "L115", - "community": 573, - "norm_label": "checkserviceconnection \u2014 success, not found, errors.", - "id": "tests_test_connectivity_coverage_rationale_115" + "label": "[unused443]", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused443]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused443" }, { - "label": "test_controllers_coverage.py", + "label": "[unused444]", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 120, - "norm_label": "test_controllers_coverage.py", - "id": "tests_test_controllers_coverage_py" + "community": 0, + "norm_label": "[unused444]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused444" }, { - "label": "_make_auth_client()", + "label": "[unused445]", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L22", - "community": 120, - "norm_label": "_make_auth_client()", - "id": "tests_test_controllers_coverage_make_auth_client" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused445]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused445" }, { - "label": "_make_user_client()", + "label": "[unused446]", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L38", - "community": 47, - "norm_label": "_make_user_client()", - "id": "tests_test_controllers_coverage_make_user_client" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused446]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused446" }, { - "label": "_make_prometheus_client()", + "label": "[unused447]", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L57", - "community": 16, - "norm_label": "_make_prometheus_client()", - "id": "tests_test_controllers_coverage_make_prometheus_client" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused447]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused447" }, { - "label": "_make_stocksapi_client()", + "label": "[unused448]", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L78", - "community": 14, - "norm_label": "_make_stocksapi_client()", - "id": "tests_test_controllers_coverage_make_stocksapi_client" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused448]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused448" }, { - "label": "TestIsSecureScheme", + "label": "[unused449]", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L105", - "community": 58, - "norm_label": "testissecurescheme", - "id": "tests_test_controllers_coverage_testissecurescheme" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", + "source_location": "L1", + "community": 0, + "norm_label": "[unused449]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused449" }, { - "label": ".test_is_secure_https()", + "label": "tokenizer_config.json", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L108", - "community": 58, - "norm_label": ".test_is_secure_https()", - "id": "tests_test_controllers_coverage_testissecurescheme_test_is_secure_https" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer_config.json", + "source_location": "L1", + "community": 109, + "norm_label": "tokenizer_config.json", + "id": "main_utils_models_all_minilm_l6_v2_tokenizer_config_json" }, { - "label": ".test_is_secure_http()", + "label": "do_lower_case", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L115", - "community": 58, - "norm_label": ".test_is_secure_http()", - "id": "tests_test_controllers_coverage_testissecurescheme_test_is_secure_http" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer_config.json", + "source_location": "L1", + "community": 109, + "norm_label": "do_lower_case", + "id": "all_minilm_l6_v2_tokenizer_config_do_lower_case" }, { - "label": ".test_is_secure_no_scheme()", + "label": "unk_token", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L122", - "community": 58, - "norm_label": ".test_is_secure_no_scheme()", - "id": "tests_test_controllers_coverage_testissecurescheme_test_is_secure_no_scheme" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer_config.json", + "source_location": "L1", + "community": 109, + "norm_label": "unk_token", + "id": "all_minilm_l6_v2_tokenizer_config_unk_token" }, { - "label": "TestHealthEndpoint", + "label": "sep_token", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L130", - "community": 498, - "norm_label": "testhealthendpoint", - "id": "tests_test_controllers_coverage_testhealthendpoint" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer_config.json", + "source_location": "L1", + "community": 109, + "norm_label": "sep_token", + "id": "all_minilm_l6_v2_tokenizer_config_sep_token" }, { - "label": ".test_health_returns_ok()", + "label": "pad_token", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L133", - "community": 498, - "norm_label": ".test_health_returns_ok()", - "id": "tests_test_controllers_coverage_testhealthendpoint_test_health_returns_ok" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer_config.json", + "source_location": "L1", + "community": 109, + "norm_label": "pad_token", + "id": "all_minilm_l6_v2_tokenizer_config_pad_token" }, { - "label": "TestRegisterEndpoint", + "label": "cls_token", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L146", - "community": 498, - "norm_label": "testregisterendpoint", - "id": "tests_test_controllers_coverage_testregisterendpoint" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer_config.json", + "source_location": "L1", + "community": 109, + "norm_label": "cls_token", + "id": "all_minilm_l6_v2_tokenizer_config_cls_token" }, { - "label": "test_register_success()", + "label": "mask_token", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L152", - "community": 120, - "norm_label": "test_register_success()", - "id": "tests_test_controllers_coverage_test_register_success" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer_config.json", + "source_location": "L1", + "community": 109, + "norm_label": "mask_token", + "id": "all_minilm_l6_v2_tokenizer_config_mask_token" }, { - "label": "test_register_auto_login_fails()", + "label": "tokenize_chinese_chars", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L178", - "community": 120, - "norm_label": "test_register_auto_login_fails()", - "id": "tests_test_controllers_coverage_test_register_auto_login_fails" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer_config.json", + "source_location": "L1", + "community": 109, + "norm_label": "tokenize_chinese_chars", + "id": "all_minilm_l6_v2_tokenizer_config_tokenize_chinese_chars" }, { - "label": "test_register_value_error()", + "label": "strip_accents", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L191", - "community": 120, - "norm_label": "test_register_value_error()", - "id": "tests_test_controllers_coverage_test_register_value_error" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer_config.json", + "source_location": "L1", + "community": 109, + "norm_label": "strip_accents", + "id": "all_minilm_l6_v2_tokenizer_config_strip_accents" }, { - "label": "test_register_generic_exception()", + "label": "name_or_path", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L203", - "community": 120, - "norm_label": "test_register_generic_exception()", - "id": "tests_test_controllers_coverage_test_register_generic_exception" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer_config.json", + "source_location": "L1", + "community": 109, + "norm_label": "name_or_path", + "id": "all_minilm_l6_v2_tokenizer_config_name_or_path" }, { - "label": "TestLoginEndpoint", + "label": "do_basic_tokenize", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L215", - "community": 498, - "norm_label": "testloginendpoint", - "id": "tests_test_controllers_coverage_testloginendpoint" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer_config.json", + "source_location": "L1", + "community": 109, + "norm_label": "do_basic_tokenize", + "id": "all_minilm_l6_v2_tokenizer_config_do_basic_tokenize" }, { - "label": "test_login_success()", + "label": "never_split", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L221", - "community": 120, - "norm_label": "test_login_success()", - "id": "tests_test_controllers_coverage_test_login_success" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer_config.json", + "source_location": "L1", + "community": 109, + "norm_label": "never_split", + "id": "all_minilm_l6_v2_tokenizer_config_never_split" }, { - "label": "test_login_wrong_credentials()", + "label": "tokenizer_class", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L243", - "community": 120, - "norm_label": "test_login_wrong_credentials()", - "id": "tests_test_controllers_coverage_test_login_wrong_credentials" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer_config.json", + "source_location": "L1", + "community": 109, + "norm_label": "tokenizer_class", + "id": "all_minilm_l6_v2_tokenizer_config_tokenizer_class" }, { - "label": "TestLogoutEndpoint", + "label": "model_max_length", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L257", - "community": 498, - "norm_label": "testlogoutendpoint", - "id": "tests_test_controllers_coverage_testlogoutendpoint" + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer_config.json", + "source_location": "L1", + "community": 109, + "norm_label": "model_max_length", + "id": "all_minilm_l6_v2_tokenizer_config_model_max_length" }, { - "label": "test_logout_with_x_access_token()", + "label": "config.json", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L263", - "community": 120, - "norm_label": "test_logout_with_x_access_token()", - "id": "tests_test_controllers_coverage_test_logout_with_x_access_token" + "source_file": "main/utils/models/all-MiniLM-L6-v2/1_Pooling/config.json", + "source_location": "L1", + "community": 195, + "norm_label": "config.json", + "id": "main_utils_models_all_minilm_l6_v2_1_pooling_config_json" }, { - "label": "test_logout_with_bearer_header()", + "label": "word_embedding_dimension", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L280", - "community": 120, - "norm_label": "test_logout_with_bearer_header()", - "id": "tests_test_controllers_coverage_test_logout_with_bearer_header" + "source_file": "main/utils/models/all-MiniLM-L6-v2/1_Pooling/config.json", + "source_location": "L2", + "community": 195, + "norm_label": "word_embedding_dimension", + "id": "1_pooling_config_word_embedding_dimension" }, { - "label": "test_logout_with_invalid_session_id()", + "label": "pooling_mode_cls_token", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L295", - "community": 120, - "norm_label": "test_logout_with_invalid_session_id()", - "id": "tests_test_controllers_coverage_test_logout_with_invalid_session_id" + "source_file": "main/utils/models/all-MiniLM-L6-v2/1_Pooling/config.json", + "source_location": "L3", + "community": 195, + "norm_label": "pooling_mode_cls_token", + "id": "1_pooling_config_pooling_mode_cls_token" }, { - "label": "test_logout_with_verification_error()", + "label": "pooling_mode_mean_tokens", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L309", - "community": 120, - "norm_label": "test_logout_with_verification_error()", - "id": "tests_test_controllers_coverage_test_logout_with_verification_error" + "source_file": "main/utils/models/all-MiniLM-L6-v2/1_Pooling/config.json", + "source_location": "L4", + "community": 195, + "norm_label": "pooling_mode_mean_tokens", + "id": "1_pooling_config_pooling_mode_mean_tokens" }, { - "label": "test_logout_without_token()", + "label": "pooling_mode_max_tokens", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L321", - "community": 120, - "norm_label": "test_logout_without_token()", - "id": "tests_test_controllers_coverage_test_logout_without_token" + "source_file": "main/utils/models/all-MiniLM-L6-v2/1_Pooling/config.json", + "source_location": "L5", + "community": 195, + "norm_label": "pooling_mode_max_tokens", + "id": "1_pooling_config_pooling_mode_max_tokens" }, { - "label": "test_logout_with_missing_user_and_session()", + "label": "pooling_mode_mean_sqrt_len_tokens", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L332", - "community": 120, - "norm_label": "test_logout_with_missing_user_and_session()", - "id": "tests_test_controllers_coverage_test_logout_with_missing_user_and_session" + "source_file": "main/utils/models/all-MiniLM-L6-v2/1_Pooling/config.json", + "source_location": "L6", + "community": 195, + "norm_label": "pooling_mode_mean_sqrt_len_tokens", + "id": "1_pooling_config_pooling_mode_mean_sqrt_len_tokens" }, { - "label": "TestGoogleLogin", + "label": "conftest.py", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L344", - "community": 498, - "norm_label": "testgooglelogin", - "id": "tests_test_controllers_coverage_testgooglelogin" + "source_file": "tests/conftest.py", + "source_location": "L1", + "community": 251, + "norm_label": "conftest.py", + "id": "tests_conftest_py" }, { - "label": "test_google_login_with_redirect_url()", + "label": "_reset_rate_limiter()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L348", - "community": 120, - "norm_label": "test_google_login_with_redirect_url()", - "id": "tests_test_controllers_coverage_test_google_login_with_redirect_url" + "source_file": "tests/conftest.py", + "source_location": "L13", + "community": 251, + "norm_label": "_reset_rate_limiter()", + "id": "tests_conftest_reset_rate_limiter" }, { - "label": "test_google_login_with_referer()", + "label": "pytest_configure()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L368", - "community": 120, - "norm_label": "test_google_login_with_referer()", - "id": "tests_test_controllers_coverage_test_google_login_with_referer" + "source_file": "tests/conftest.py", + "source_location": "L20", + "community": 251, + "norm_label": "pytest_configure()", + "id": "tests_conftest_pytest_configure" }, { - "label": "TestGoogleCallback", + "label": "_patch_secret_key()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L390", - "community": 498, - "norm_label": "testgooglecallback", - "id": "tests_test_controllers_coverage_testgooglecallback" + "source_file": "tests/conftest.py", + "source_location": "L33", + "community": 251, + "norm_label": "_patch_secret_key()", + "id": "tests_conftest_patch_secret_key" }, { - "label": "test_callback_new_user()", + "label": "dbSession()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L397", - "community": 120, - "norm_label": "test_callback_new_user()", - "id": "tests_test_controllers_coverage_test_callback_new_user" + "source_file": "tests/conftest.py", + "source_location": "L48", + "community": 251, + "norm_label": "dbsession()", + "id": "tests_conftest_dbsession" }, { - "label": "test_callback_existing_user()", + "label": "sampleUserData()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L433", - "community": 120, - "norm_label": "test_callback_existing_user()", - "id": "tests_test_controllers_coverage_test_callback_existing_user" + "source_file": "tests/conftest.py", + "source_location": "L60", + "community": 251, + "norm_label": "sampleuserdata()", + "id": "tests_conftest_sampleuserdata" }, { - "label": "test_callback_no_user_info()", + "label": "sampleAPIKeyData()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L460", - "community": 120, - "norm_label": "test_callback_no_user_info()", - "id": "tests_test_controllers_coverage_test_callback_no_user_info" + "source_file": "tests/conftest.py", + "source_location": "L71", + "community": 251, + "norm_label": "sampleapikeydata()", + "id": "tests_conftest_sampleapikeydata" }, { - "label": "test_callback_with_state_redirect()", + "label": "samplePrometheusSessionData()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L477", - "community": 120, - "norm_label": "test_callback_with_state_redirect()", - "id": "tests_test_controllers_coverage_test_callback_with_state_redirect" + "source_file": "tests/conftest.py", + "source_location": "L76", + "community": 251, + "norm_label": "sampleprometheussessiondata()", + "id": "tests_conftest_sampleprometheussessiondata" }, { - "label": "test_callback_generic_exception()", + "label": "stocks_http_client()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L510", - "community": 120, - "norm_label": "test_callback_generic_exception()", - "id": "tests_test_controllers_coverage_test_callback_generic_exception" + "source_file": "tests/conftest.py", + "source_location": "L81", + "community": 105, + "norm_label": "stocks_http_client()", + "id": "tests_conftest_stocks_http_client" }, { - "label": "TestUserHealth", + "label": "client()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L527", - "community": 498, - "norm_label": "testuserhealth", - "id": "tests_test_controllers_coverage_testuserhealth" + "source_file": "tests/conftest.py", + "source_location": "L106", + "community": 105, + "norm_label": "client()", + "id": "tests_conftest_client" }, { - "label": ".test_health()", - "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L530", - "community": 498, - "norm_label": ".test_health()", - "id": "tests_test_controllers_coverage_testuserhealth_test_health" + "label": "Reset slowapi in-memory rate limiter between every test.", + "file_type": "rationale", + "source_file": "tests/conftest.py", + "source_location": "L14", + "community": 251, + "norm_label": "reset slowapi in-memory rate limiter between every test.", + "id": "tests_conftest_rationale_14" }, { - "label": "TestGetMe", - "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L541", - "community": 47, - "norm_label": "testgetme", - "id": "tests_test_controllers_coverage_testgetme" + "label": "Set required env vars before test collection. config.py eagerly instantia", + "file_type": "rationale", + "source_file": "tests/conftest.py", + "source_location": "L21", + "community": 251, + "norm_label": "set required env vars before test collection. config.py eagerly instantia", + "id": "tests_conftest_rationale_21" }, { - "label": ".test_get_me()", - "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L544", - "community": 47, - "norm_label": ".test_get_me()", - "id": "tests_test_controllers_coverage_testgetme_test_get_me" + "label": "TestClient with stocks router + verifyAPIKey + getCurrentUser overrides.", + "file_type": "rationale", + "source_file": "tests/conftest.py", + "source_location": "L82", + "community": 105, + "norm_label": "testclient with stocks router + verifyapikey + getcurrentuser overrides.", + "id": "tests_conftest_rationale_82" }, { - "label": "TestUpgradeEndpoints", - "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L555", - "community": 47, - "norm_label": "testupgradeendpoints", - "id": "tests_test_controllers_coverage_testupgradeendpoints" + "label": "TestClient with all routers mounted \u2014 no lifespan (no DB/service init). O", + "file_type": "rationale", + "source_file": "tests/conftest.py", + "source_location": "L107", + "community": 105, + "norm_label": "testclient with all routers mounted \u2014 no lifespan (no db/service init). o", + "id": "tests_conftest_rationale_107" }, { - "label": ".test_upgrade_developer_starter_success()", + "label": "test_agent_sandbox_integration.py", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L558", - "community": 47, - "norm_label": ".test_upgrade_developer_starter_success()", - "id": "tests_test_controllers_coverage_testupgradeendpoints_test_upgrade_developer_starter_success" + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L1", + "community": 24, + "norm_label": "test_agent_sandbox_integration.py", + "id": "tests_test_agent_sandbox_integration_py" }, { - "label": ".test_upgrade_developer_starter_already_developer()", + "label": "TestPersistentSandboxLifecycle", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L567", - "community": 47, - "norm_label": ".test_upgrade_developer_starter_already_developer()", - "id": "tests_test_controllers_coverage_testupgradeendpoints_test_upgrade_developer_starter_already_developer" + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L10", + "community": 24, + "norm_label": "testpersistentsandboxlifecycle", + "id": "tests_test_agent_sandbox_integration_testpersistentsandboxlifecycle" }, { - "label": ".test_upgrade_developer_enterprise_success()", + "label": "test_stream_persists_sandbox()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L576", - "community": 47, - "norm_label": ".test_upgrade_developer_enterprise_success()", - "id": "tests_test_controllers_coverage_testupgradeendpoints_test_upgrade_developer_enterprise_success" + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L17", + "community": 24, + "norm_label": "test_stream_persists_sandbox()", + "id": "tests_test_agent_sandbox_integration_test_stream_persists_sandbox" }, { - "label": ".test_upgrade_developer_enterprise_already_developer()", + "label": "test_sync_empty_workspace_skips_push()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L585", - "community": 47, - "norm_label": ".test_upgrade_developer_enterprise_already_developer()", - "id": "tests_test_controllers_coverage_testupgradeendpoints_test_upgrade_developer_enterprise_already_developer" + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L42", + "community": 24, + "norm_label": "test_sync_empty_workspace_skips_push()", + "id": "tests_test_agent_sandbox_integration_test_sync_empty_workspace_skips_push" }, { - "label": "TestAdminAccess", + "label": "test_no_create_in_agent_source()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L595", - "community": 47, - "norm_label": "testadminaccess", - "id": "tests_test_controllers_coverage_testadminaccess" + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L53", + "community": 24, + "norm_label": "test_no_create_in_agent_source()", + "id": "tests_test_agent_sandbox_integration_test_no_create_in_agent_source" }, { - "label": ".test_admin_access_granted()", - "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L598", - "community": 47, - "norm_label": ".test_admin_access_granted()", - "id": "tests_test_controllers_coverage_testadminaccess_test_admin_access_granted" + "label": "Tests for agent <-> persistent sandbox integration (Task 3).", + "file_type": "rationale", + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L1", + "community": 24, + "norm_label": "tests for agent <-> persistent sandbox integration (task 3).", + "id": "tests_test_agent_sandbox_integration_rationale_1" }, { - "label": ".test_admin_access_denied()", - "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L605", - "community": 47, - "norm_label": ".test_admin_access_denied()", - "id": "tests_test_controllers_coverage_testadminaccess_test_admin_access_denied" + "label": "Verify the agent uses getOrCreate + syncToSandbox/syncFromSandbox.", + "file_type": "rationale", + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L11", + "community": 24, + "norm_label": "verify the agent uses getorcreate + synctosandbox/syncfromsandbox.", + "id": "tests_test_agent_sandbox_integration_rationale_11" }, { - "label": "TestGetSessions", - "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L614", - "community": 178, - "norm_label": "testgetsessions", - "id": "tests_test_controllers_coverage_testgetsessions" + "label": "streamMessage uses getOrCreate instead of create, syncs on finish.", + "file_type": "rationale", + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L18", + "community": 275, + "norm_label": "streammessage uses getorcreate instead of create, syncs on finish.", + "id": "tests_test_agent_sandbox_integration_rationale_18" }, { - "label": ".test_get_sessions()", - "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L617", - "community": 178, - "norm_label": ".test_get_sessions()", - "id": "tests_test_controllers_coverage_testgetsessions_test_get_sessions" + "label": "When host workspace is empty, syncToSandbox returns 0.", + "file_type": "rationale", + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L43", + "community": 276, + "norm_label": "when host workspace is empty, synctosandbox returns 0.", + "id": "tests_test_agent_sandbox_integration_rationale_43" }, { - "label": "TestGetCurrentSession", - "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L668", - "community": 107, - "norm_label": "testgetcurrentsession", - "id": "tests_test_controllers_coverage_testgetcurrentsession" + "label": "Verify agent.py no longer calls SandboxManager.create directly.", + "file_type": "rationale", + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L54", + "community": 277, + "norm_label": "verify agent.py no longer calls sandboxmanager.create directly.", + "id": "tests_test_agent_sandbox_integration_rationale_54" }, { - "label": ".test_get_current_session_found()", + "label": "test_agent_state_integration.py", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L671", - "community": 107, - "norm_label": ".test_get_current_session_found()", - "id": "tests_test_controllers_coverage_testgetcurrentsession_test_get_current_session_found" + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L1", + "community": 93, + "norm_label": "test_agent_state_integration.py", + "id": "tests_test_agent_state_integration_py" }, { - "label": ".test_get_current_session_not_found()", + "label": "TestBuildSystemPromptState", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L704", - "community": 107, - "norm_label": ".test_get_current_session_not_found()", - "id": "tests_test_controllers_coverage_testgetcurrentsession_test_get_current_session_not_found" + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L7", + "community": 8, + "norm_label": "testbuildsystempromptstate", + "id": "tests_test_agent_state_integration_testbuildsystempromptstate" }, { - "label": "TestRevokeSession", + "label": ".test_build_system_prompt_no_state()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L727", - "community": 104, - "norm_label": "testrevokesession", - "id": "tests_test_controllers_coverage_testrevokesession" + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L8", + "community": 8, + "norm_label": ".test_build_system_prompt_no_state()", + "id": "tests_test_agent_state_integration_testbuildsystempromptstate_test_build_system_prompt_no_state" }, { - "label": ".test_revoke_session_success()", + "label": ".test_build_system_prompt_with_state()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L730", - "community": 104, - "norm_label": ".test_revoke_session_success()", - "id": "tests_test_controllers_coverage_testrevokesession_test_revoke_session_success" + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L13", + "community": 8, + "norm_label": ".test_build_system_prompt_with_state()", + "id": "tests_test_agent_state_integration_testbuildsystempromptstate_test_build_system_prompt_with_state" }, { - "label": ".test_revoke_session_not_found()", + "label": ".test_build_system_prompt_empty_state()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L757", - "community": 104, - "norm_label": ".test_revoke_session_not_found()", - "id": "tests_test_controllers_coverage_testrevokesession_test_revoke_session_not_found" + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L21", + "community": 8, + "norm_label": ".test_build_system_prompt_empty_state()", + "id": "tests_test_agent_state_integration_testbuildsystempromptstate_test_build_system_prompt_empty_state" }, { - "label": ".test_revoke_session_failure()", + "label": ".test_build_system_prompt_state_after_memories()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L779", - "community": 104, - "norm_label": ".test_revoke_session_failure()", - "id": "tests_test_controllers_coverage_testrevokesession_test_revoke_session_failure" + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L27", + "community": 8, + "norm_label": ".test_build_system_prompt_state_after_memories()", + "id": "tests_test_agent_state_integration_testbuildsystempromptstate_test_build_system_prompt_state_after_memories" }, { - "label": "TestRevokeAllSessions", + "label": ".test_build_system_prompt_multiple_state_entries()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L805", - "community": 221, - "norm_label": "testrevokeallsessions", - "id": "tests_test_controllers_coverage_testrevokeallsessions" + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L37", + "community": 8, + "norm_label": ".test_build_system_prompt_multiple_state_entries()", + "id": "tests_test_agent_state_integration_testbuildsystempromptstate_test_build_system_prompt_multiple_state_entries" }, { - "label": ".test_revoke_all_sessions()", + "label": "TestSendMessageStateIntegration", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L808", - "community": 221, - "norm_label": ".test_revoke_all_sessions()", - "id": "tests_test_controllers_coverage_testrevokeallsessions_test_revoke_all_sessions" + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L47", + "community": 93, + "norm_label": "testsendmessagestateintegration", + "id": "tests_test_agent_state_integration_testsendmessagestateintegration" }, { - "label": "TestPrometheusHealth", + "label": "test_send_message_creates_harness_state()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L835", - "community": 498, - "norm_label": "testprometheushealth", - "id": "tests_test_controllers_coverage_testprometheushealth" + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L50", + "community": 93, + "norm_label": "test_send_message_creates_harness_state()", + "id": "tests_test_agent_state_integration_test_send_message_creates_harness_state" }, { - "label": ".test_health()", + "label": "TestStreamMessageStateIntegration", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L838", - "community": 498, - "norm_label": ".test_health()", - "id": "tests_test_controllers_coverage_testprometheushealth_test_health" + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L84", + "community": 93, + "norm_label": "teststreammessagestateintegration", + "id": "tests_test_agent_state_integration_teststreammessagestateintegration" }, { - "label": "TestPrometheusGetSessions", + "label": "test_stream_message_creates_harness_state()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L849", - "community": 16, - "norm_label": "testprometheusgetsessions", - "id": "tests_test_controllers_coverage_testprometheusgetsessions" + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L87", + "community": 93, + "norm_label": "test_stream_message_creates_harness_state()", + "id": "tests_test_agent_state_integration_test_stream_message_creates_harness_state" }, { - "label": ".test_get_sessions()", + "label": "test_stream_message_passes_state_to_dispatch()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L852", - "community": 16, - "norm_label": ".test_get_sessions()", - "id": "tests_test_controllers_coverage_testprometheusgetsessions_test_get_sessions" + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L127", + "community": 93, + "norm_label": "test_stream_message_passes_state_to_dispatch()", + "id": "tests_test_agent_state_integration_test_stream_message_passes_state_to_dispatch" }, { - "label": "TestPrometheusCreateSession", + "label": "TestSystemPromptStateInstructions", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L867", - "community": 16, - "norm_label": "testprometheuscreatesession", - "id": "tests_test_controllers_coverage_testprometheuscreatesession" + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L186", + "community": 93, + "norm_label": "testsystempromptstateinstructions", + "id": "tests_test_agent_state_integration_testsystempromptstateinstructions" }, { - "label": ".test_create_session()", + "label": ".test_system_prompt_has_harness_state_section()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L870", - "community": 16, - "norm_label": ".test_create_session()", - "id": "tests_test_controllers_coverage_testprometheuscreatesession_test_create_session" + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L187", + "community": 93, + "norm_label": ".test_system_prompt_has_harness_state_section()", + "id": "tests_test_agent_state_integration_testsystempromptstateinstructions_test_system_prompt_has_harness_state_section" }, { - "label": "TestPrometheusUpdateSessionTitle", + "label": ".test_system_prompt_has_memory_sync_section()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L881", - "community": 99, - "norm_label": "testprometheusupdatesessiontitle", - "id": "tests_test_controllers_coverage_testprometheusupdatesessiontitle" + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L195", + "community": 93, + "norm_label": ".test_system_prompt_has_memory_sync_section()", + "id": "tests_test_agent_state_integration_testsystempromptstateinstructions_test_system_prompt_has_memory_sync_section" }, { - "label": ".test_update_title_success()", - "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L884", - "community": 99, - "norm_label": ".test_update_title_success()", - "id": "tests_test_controllers_coverage_testprometheusupdatesessiontitle_test_update_title_success" + "label": "System prompt should work without state parameter.", + "file_type": "rationale", + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L9", + "community": 8, + "norm_label": "system prompt should work without state parameter.", + "id": "tests_test_agent_state_integration_rationale_9" }, { - "label": ".test_update_title_not_owner()", - "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L895", - "community": 99, - "norm_label": ".test_update_title_not_owner()", - "id": "tests_test_controllers_coverage_testprometheusupdatesessiontitle_test_update_title_not_owner" + "label": "System prompt should include state context when provided.", + "file_type": "rationale", + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L14", + "community": 8, + "norm_label": "system prompt should include state context when provided.", + "id": "tests_test_agent_state_integration_rationale_14" }, { - "label": ".test_update_title_not_found()", - "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L904", - "community": 99, - "norm_label": ".test_update_title_not_found()", - "id": "tests_test_controllers_coverage_testprometheusupdatesessiontitle_test_update_title_not_found" + "label": "System prompt should not include state section when empty.", + "file_type": "rationale", + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L22", + "community": 8, + "norm_label": "system prompt should not include state section when empty.", + "id": "tests_test_agent_state_integration_rationale_22" }, { - "label": "TestPrometheusGetHistory", - "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L915", - "community": 136, - "norm_label": "testprometheusgethistory", - "id": "tests_test_controllers_coverage_testprometheusgethistory" + "label": "State section should appear after memories section.", + "file_type": "rationale", + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L28", + "community": 8, + "norm_label": "state section should appear after memories section.", + "id": "tests_test_agent_state_integration_rationale_28" }, { - "label": ".test_get_history_found()", - "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L918", - "community": 136, - "norm_label": ".test_get_history_found()", - "id": "tests_test_controllers_coverage_testprometheusgethistory_test_get_history_found" + "label": "All state entries should appear in the prompt.", + "file_type": "rationale", + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L38", + "community": 8, + "norm_label": "all state entries should appear in the prompt.", + "id": "tests_test_agent_state_integration_rationale_38" }, { - "label": ".test_get_history_not_found()", - "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L962", - "community": 136, - "norm_label": ".test_get_history_not_found()", - "id": "tests_test_controllers_coverage_testprometheusgethistory_test_get_history_not_found" + "label": "streamMessage should create a buildSystemPrompt with a state param.", + "file_type": "rationale", + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L51", + "community": 278, + "norm_label": "streammessage should create a buildsystemprompt with a state param.", + "id": "tests_test_agent_state_integration_rationale_51" }, { - "label": "TestPrometheusDeleteSession", - "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L997", - "community": 231, - "norm_label": "testprometheusdeletesession", - "id": "tests_test_controllers_coverage_testprometheusdeletesession" + "label": "streamMessage should create a HarnessState and pass it to buildSystemPrompt.", + "file_type": "rationale", + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L88", + "community": 279, + "norm_label": "streammessage should create a harnessstate and pass it to buildsystemprompt.", + "id": "tests_test_agent_state_integration_rationale_88" }, { - "label": ".test_delete_session_success()", - "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1000", - "community": 231, - "norm_label": ".test_delete_session_success()", - "id": "tests_test_controllers_coverage_testprometheusdeletesession_test_delete_session_success" + "label": "streamMessage should pass state to dispatchToolCall.", + "file_type": "rationale", + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L128", + "community": 280, + "norm_label": "streammessage should pass state to dispatchtoolcall.", + "id": "tests_test_agent_state_integration_rationale_128" }, { - "label": ".test_delete_session_not_found()", - "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1010", - "community": 231, - "norm_label": ".test_delete_session_not_found()", - "id": "tests_test_controllers_coverage_testprometheusdeletesession_test_delete_session_not_found" + "label": "System prompt should instruct LLM about harness state usage.", + "file_type": "rationale", + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L188", + "community": 93, + "norm_label": "system prompt should instruct llm about harness state usage.", + "id": "tests_test_agent_state_integration_rationale_188" }, { - "label": "TestPrometheusChat", - "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1020", - "community": 16, - "norm_label": "testprometheuschat", - "id": "tests_test_controllers_coverage_testprometheuschat" + "label": "System prompt should instruct LLM about memory vs state.", + "file_type": "rationale", + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L196", + "community": 93, + "norm_label": "system prompt should instruct llm about memory vs state.", + "id": "tests_test_agent_state_integration_rationale_196" }, { - "label": ".test_chat_new_session()", + "label": "test_api_key_quota_atomic.py", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1023", - "community": 16, - "norm_label": ".test_chat_new_session()", - "id": "tests_test_controllers_coverage_testprometheuschat_test_chat_new_session" + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L1", + "community": 26, + "norm_label": "test_api_key_quota_atomic.py", + "id": "tests_test_api_key_quota_atomic_py" }, { - "label": ".test_chat_existing_session_verified()", + "label": "sampleKeyData()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1042", - "community": 16, - "norm_label": ".test_chat_existing_session_verified()", - "id": "tests_test_controllers_coverage_testprometheuschat_test_chat_existing_session_verified" + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L18", + "community": 26, + "norm_label": "samplekeydata()", + "id": "tests_test_api_key_quota_atomic_samplekeydata" }, { - "label": ".test_chat_existing_session_not_owner()", + "label": "TestAtomicQuotaIncrement", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1085", - "community": 104, - "norm_label": ".test_chat_existing_session_not_owner()", - "id": "tests_test_controllers_coverage_testprometheuschat_test_chat_existing_session_not_owner" + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L23", + "community": 26, + "norm_label": "testatomicquotaincrement", + "id": "tests_test_api_key_quota_atomic_testatomicquotaincrement" }, { - "label": ".test_chat_generic_exception()", + "label": ".test_normal_quota_check_works()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1121", - "community": 16, - "norm_label": ".test_chat_generic_exception()", - "id": "tests_test_controllers_coverage_testprometheuschat_test_chat_generic_exception" + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L26", + "community": 26, + "norm_label": ".test_normal_quota_check_works()", + "id": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_normal_quota_check_works" }, { - "label": "TestStocksApiHealth", + "label": ".test_atomic_increment_prevents_overuse()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1144", - "community": 498, - "norm_label": "teststocksapihealth", - "id": "tests_test_controllers_coverage_teststocksapihealth" + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L52", + "community": 26, + "norm_label": ".test_atomic_increment_prevents_overuse()", + "id": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_atomic_increment_prevents_overuse" }, { - "label": ".test_health()", + "label": ".test_concurrent_requests_serialized_at_db_level()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1147", - "community": 498, - "norm_label": ".test_health()", - "id": "tests_test_controllers_coverage_teststocksapihealth_test_health" + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L88", + "community": 26, + "norm_label": ".test_concurrent_requests_serialized_at_db_level()", + "id": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_concurrent_requests_serialized_at_db_level" }, { - "label": "TestStocksApiHistorical", + "label": ".test_request_at_exact_quota_limit()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1158", - "community": 14, - "norm_label": "teststocksapihistorical", - "id": "tests_test_controllers_coverage_teststocksapihistorical" + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L127", + "community": 26, + "norm_label": ".test_request_at_exact_quota_limit()", + "id": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_request_at_exact_quota_limit" }, { - "label": ".test_get_historical()", + "label": ".test_invalid_api_key_returns_zero_rows()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1161", - "community": 14, - "norm_label": ".test_get_historical()", - "id": "tests_test_controllers_coverage_teststocksapihistorical_test_get_historical" + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L150", + "community": 26, + "norm_label": ".test_invalid_api_key_returns_zero_rows()", + "id": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_invalid_api_key_returns_zero_rows" }, { - "label": "TestStocksApiFundamental", + "label": ".test_multiple_keys_independent_quotas()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1172", - "community": 14, - "norm_label": "teststocksapifundamental", - "id": "tests_test_controllers_coverage_teststocksapifundamental" + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L164", + "community": 26, + "norm_label": ".test_multiple_keys_independent_quotas()", + "id": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_multiple_keys_independent_quotas" }, { - "label": ".test_get_fundamental()", + "label": ".test_increment_from_zero()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1175", - "community": 14, - "norm_label": ".test_get_fundamental()", - "id": "tests_test_controllers_coverage_teststocksapifundamental_test_get_fundamental" + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L199", + "community": 26, + "norm_label": ".test_increment_from_zero()", + "id": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_increment_from_zero" }, { - "label": "TestStocksApiGenerateKey", + "label": "TestVerifyAPIKeyIntegration", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1186", - "community": 14, - "norm_label": "teststocksapigeneratekey", - "id": "tests_test_controllers_coverage_teststocksapigeneratekey" + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L220", + "community": 567, + "norm_label": "testverifyapikeyintegration", + "id": "tests_test_api_key_quota_atomic_testverifyapikeyintegration" }, { - "label": ".test_generate_key_permission_error()", + "label": ".test_verify_api_key_success()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1194", - "community": 14, - "norm_label": ".test_generate_key_permission_error()", - "id": "tests_test_controllers_coverage_teststocksapigeneratekey_test_generate_key_permission_error" + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L223", + "community": 567, + "norm_label": ".test_verify_api_key_success()", + "id": "tests_test_api_key_quota_atomic_testverifyapikeyintegration_test_verify_api_key_success" }, { - "label": ".test_generate_key_admin_bypasses_permission_check()", + "label": ".test_verify_api_key_quota_exceeded()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1202", - "community": 14, - "norm_label": ".test_generate_key_admin_bypasses_permission_check()", - "id": "tests_test_controllers_coverage_teststocksapigeneratekey_test_generate_key_admin_bypasses_permission_check" + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L238", + "community": 567, + "norm_label": ".test_verify_api_key_quota_exceeded()", + "id": "tests_test_api_key_quota_atomic_testverifyapikeyintegration_test_verify_api_key_quota_exceeded" }, { - "label": ".test_generate_key_exception()", + "label": ".test_verify_api_key_invalid()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1214", - "community": 14, - "norm_label": ".test_generate_key_exception()", - "id": "tests_test_controllers_coverage_teststocksapigeneratekey_test_generate_key_exception" + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L253", + "community": 567, + "norm_label": ".test_verify_api_key_invalid()", + "id": "tests_test_api_key_quota_atomic_testverifyapikeyintegration_test_verify_api_key_invalid" }, { - "label": "TestAddRoleToUser", + "label": ".test_verify_api_key_missing()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1229", - "community": 560, - "norm_label": "testaddroletouser", - "id": "tests_test_controllers_coverage_testaddroletouser" + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L264", + "community": 567, + "norm_label": ".test_verify_api_key_missing()", + "id": "tests_test_api_key_quota_atomic_testverifyapikeyintegration_test_verify_api_key_missing" }, { - "label": ".test_add_role_success()", + "label": ".test_verify_api_key_disabled()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1232", - "community": 560, - "norm_label": ".test_add_role_success()", - "id": "tests_test_controllers_coverage_testaddroletouser_test_add_role_success" + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L275", + "community": 567, + "norm_label": ".test_verify_api_key_disabled()", + "id": "tests_test_api_key_quota_atomic_testverifyapikeyintegration_test_verify_api_key_disabled" }, { - "label": ".test_add_role_already_has_role()", + "label": "Tests for atomic API key quota enforcement (race condition fix). Verifies tha", + "file_type": "rationale", + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L1", + "community": 26, + "norm_label": "tests for atomic api key quota enforcement (race condition fix). verifies tha", + "id": "tests_test_api_key_quota_atomic_rationale_1" + }, + { + "label": "Sample API key data for tests.", + "file_type": "rationale", + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L19", + "community": 26, + "norm_label": "sample api key data for tests.", + "id": "tests_test_api_key_quota_atomic_rationale_19" + }, + { + "label": "Test that atomic increment prevents race conditions.", + "file_type": "rationale", + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L24", + "community": 26, + "norm_label": "test that atomic increment prevents race conditions.", + "id": "tests_test_api_key_quota_atomic_rationale_24" + }, + { + "label": "Test that normal quota check still works with atomic increment.", + "file_type": "rationale", + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L27", + "community": 26, + "norm_label": "test that normal quota check still works with atomic increment.", + "id": "tests_test_api_key_quota_atomic_rationale_27" + }, + { + "label": "Test that atomic increment prevents quota overuse.", + "file_type": "rationale", + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L53", + "community": 26, + "norm_label": "test that atomic increment prevents quota overuse.", + "id": "tests_test_api_key_quota_atomic_rationale_53" + }, + { + "label": "Test that concurrent requests are properly serialized at DB level. Th", + "file_type": "rationale", + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L89", + "community": 26, + "norm_label": "test that concurrent requests are properly serialized at db level. th", + "id": "tests_test_api_key_quota_atomic_rationale_89" + }, + { + "label": "Test edge case: request exactly at quota limit.", + "file_type": "rationale", + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L128", + "community": 26, + "norm_label": "test edge case: request exactly at quota limit.", + "id": "tests_test_api_key_quota_atomic_rationale_128" + }, + { + "label": "Test that invalid API key returns zero rows affected.", + "file_type": "rationale", + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L151", + "community": 26, + "norm_label": "test that invalid api key returns zero rows affected.", + "id": "tests_test_api_key_quota_atomic_rationale_151" + }, + { + "label": "Test that multiple API keys have independent quotas.", + "file_type": "rationale", + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L165", + "community": 26, + "norm_label": "test that multiple api keys have independent quotas.", + "id": "tests_test_api_key_quota_atomic_rationale_165" + }, + { + "label": "Test that increment works from zero usage.", + "file_type": "rationale", + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L200", + "community": 26, + "norm_label": "test that increment works from zero usage.", + "id": "tests_test_api_key_quota_atomic_rationale_200" + }, + { + "label": "Integration tests for the verifyAPIKey function.", + "file_type": "rationale", + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L221", + "community": 567, + "norm_label": "integration tests for the verifyapikey function.", + "id": "tests_test_api_key_quota_atomic_rationale_221" + }, + { + "label": "Test successful API key verification.", + "file_type": "rationale", + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L224", + "community": 567, + "norm_label": "test successful api key verification.", + "id": "tests_test_api_key_quota_atomic_rationale_224" + }, + { + "label": "Test API key verification when quota is exceeded.", + "file_type": "rationale", + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L239", + "community": 567, + "norm_label": "test api key verification when quota is exceeded.", + "id": "tests_test_api_key_quota_atomic_rationale_239" + }, + { + "label": "Test API key verification with invalid key.", + "file_type": "rationale", + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L254", + "community": 567, + "norm_label": "test api key verification with invalid key.", + "id": "tests_test_api_key_quota_atomic_rationale_254" + }, + { + "label": "Test API key verification with missing key.", + "file_type": "rationale", + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L265", + "community": 567, + "norm_label": "test api key verification with missing key.", + "id": "tests_test_api_key_quota_atomic_rationale_265" + }, + { + "label": "Test that API key system can be disabled.", + "file_type": "rationale", + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L276", + "community": 567, + "norm_label": "test that api key system can be disabled.", + "id": "tests_test_api_key_quota_atomic_rationale_276" + }, + { + "label": "test_auth_util.py", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1249", - "community": 560, - "norm_label": ".test_add_role_already_has_role()", - "id": "tests_test_controllers_coverage_testaddroletouser_test_add_role_already_has_role" + "source_file": "tests/test_auth_util.py", + "source_location": "L1", + "community": 43, + "norm_label": "test_auth_util.py", + "id": "tests_test_auth_util_py" }, { - "label": ".test_add_role_user_not_found()", + "label": "TestAuthUtil", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1263", - "community": 528, - "norm_label": ".test_add_role_user_not_found()", - "id": "tests_test_controllers_coverage_testaddroletouser_test_add_role_user_not_found" + "source_file": "tests/test_auth_util.py", + "source_location": "L14", + "community": 43, + "norm_label": "testauthutil", + "id": "tests_test_auth_util_testauthutil" }, { - "label": "TestGetCurrentUser", + "label": ".test_hash_password_returns_string()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1275", - "community": 493, - "norm_label": "testgetcurrentuser", - "id": "tests_test_controllers_coverage_testgetcurrentuser" + "source_file": "tests/test_auth_util.py", + "source_location": "L15", + "community": 43, + "norm_label": ".test_hash_password_returns_string()", + "id": "tests_test_auth_util_testauthutil_test_hash_password_returns_string" }, { - "label": "._make_mock_request()", + "label": ".test_hash_password_unique_hashes()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1278", - "community": 493, - "norm_label": "._make_mock_request()", - "id": "tests_test_controllers_coverage_testgetcurrentuser_make_mock_request" + "source_file": "tests/test_auth_util.py", + "source_location": "L20", + "community": 43, + "norm_label": ".test_hash_password_unique_hashes()", + "id": "tests_test_auth_util_testauthutil_test_hash_password_unique_hashes" }, { - "label": ".test_get_current_user_valid_session()", + "label": ".test_verify_password_correct()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1282", - "community": 493, - "norm_label": ".test_get_current_user_valid_session()", - "id": "tests_test_controllers_coverage_testgetcurrentuser_test_get_current_user_valid_session" + "source_file": "tests/test_auth_util.py", + "source_location": "L26", + "community": 43, + "norm_label": ".test_verify_password_correct()", + "id": "tests_test_auth_util_testauthutil_test_verify_password_correct" }, { - "label": ".test_get_current_user_session_revoked()", + "label": ".test_verify_password_incorrect()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1307", - "community": 560, - "norm_label": ".test_get_current_user_session_revoked()", - "id": "tests_test_controllers_coverage_testgetcurrentuser_test_get_current_user_session_revoked" + "source_file": "tests/test_auth_util.py", + "source_location": "L31", + "community": 43, + "norm_label": ".test_verify_password_incorrect()", + "id": "tests_test_auth_util_testauthutil_test_verify_password_incorrect" }, { - "label": ".test_get_current_user_not_found()", + "label": ".test_verify_password_invalid_hash()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1323", - "community": 493, - "norm_label": ".test_get_current_user_not_found()", - "id": "tests_test_controllers_coverage_testgetcurrentuser_test_get_current_user_not_found" + "source_file": "tests/test_auth_util.py", + "source_location": "L36", + "community": 43, + "norm_label": ".test_verify_password_invalid_hash()", + "id": "tests_test_auth_util_testauthutil_test_verify_password_invalid_hash" }, { - "label": ".test_get_current_user_generic_exception()", + "label": ".test_verify_password_empty_password()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1340", - "community": 493, - "norm_label": ".test_get_current_user_generic_exception()", - "id": "tests_test_controllers_coverage_testgetcurrentuser_test_get_current_user_generic_exception" + "source_file": "tests/test_auth_util.py", + "source_location": "L39", + "community": 43, + "norm_label": ".test_verify_password_empty_password()", + "id": "tests_test_auth_util_testauthutil_test_verify_password_empty_password" }, { - "label": ".test_get_current_user_no_session_id()", + "label": ".test_create_access_token_default_expiry()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1357", - "community": 493, - "norm_label": ".test_get_current_user_no_session_id()", - "id": "tests_test_controllers_coverage_testgetcurrentuser_test_get_current_user_no_session_id" + "source_file": "tests/test_auth_util.py", + "source_location": "L43", + "community": 43, + "norm_label": ".test_create_access_token_default_expiry()", + "id": "tests_test_auth_util_testauthutil_test_create_access_token_default_expiry" }, { - "label": "TestHashPasswordEmpty", + "label": ".test_create_access_token_custom_expiry()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1381", - "community": 524, - "norm_label": "testhashpasswordempty", - "id": "tests_test_controllers_coverage_testhashpasswordempty" + "source_file": "tests/test_auth_util.py", + "source_location": "L50", + "community": 43, + "norm_label": ".test_create_access_token_custom_expiry()", + "id": "tests_test_auth_util_testauthutil_test_create_access_token_custom_expiry" }, { - "label": ".test_empty_password_raises()", + "label": ".test_create_access_token_contains_data()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1384", - "community": 524, - "norm_label": ".test_empty_password_raises()", - "id": "tests_test_controllers_coverage_testhashpasswordempty_test_empty_password_raises" + "source_file": "tests/test_auth_util.py", + "source_location": "L61", + "community": 43, + "norm_label": ".test_create_access_token_contains_data()", + "id": "tests_test_auth_util_testauthutil_test_create_access_token_contains_data" }, { - "label": "TestVerifyAccessToken", + "label": "TestSessionExpiryConfig", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1391", - "community": 524, - "norm_label": "testverifyaccesstoken", - "id": "tests_test_controllers_coverage_testverifyaccesstoken" + "source_file": "tests/test_auth_util.py", + "source_location": "L69", + "community": 43, + "norm_label": "testsessionexpiryconfig", + "id": "tests_test_auth_util_testsessionexpiryconfig" }, { - "label": ".test_expired_token()", + "label": ".test_session_expiry_days_is_30()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1394", - "community": 524, - "norm_label": ".test_expired_token()", - "id": "tests_test_controllers_coverage_testverifyaccesstoken_test_expired_token" + "source_file": "tests/test_auth_util.py", + "source_location": "L70", + "community": 43, + "norm_label": ".test_session_expiry_days_is_30()", + "id": "tests_test_auth_util_testsessionexpiryconfig_test_session_expiry_days_is_30" }, { - "label": ".test_invalid_token()", + "label": ".test_session_expiry_hours_calculation()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1410", - "community": 544, - "norm_label": ".test_invalid_token()", - "id": "tests_test_controllers_coverage_testverifyaccesstoken_test_invalid_token" + "source_file": "tests/test_auth_util.py", + "source_location": "L73", + "community": 43, + "norm_label": ".test_session_expiry_hours_calculation()", + "id": "tests_test_auth_util_testsessionexpiryconfig_test_session_expiry_hours_calculation" }, { - "label": "TestExtractTokenPayloadReRaise", + "label": ".test_default_token_expiry_equals_30_days()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1422", - "community": 498, - "norm_label": "testextracttokenpayloadreraise", - "id": "tests_test_controllers_coverage_testextracttokenpayloadreraise" + "source_file": "tests/test_auth_util.py", + "source_location": "L78", + "community": 43, + "norm_label": ".test_default_token_expiry_equals_30_days()", + "id": "tests_test_auth_util_testsessionexpiryconfig_test_default_token_expiry_equals_30_days" }, { - "label": ".test_http_exception_from_verify_propagates()", + "label": "TestAuthUtilEdgeCases", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1425", - "community": 114, - "norm_label": ".test_http_exception_from_verify_propagates()", - "id": "tests_test_controllers_coverage_testextracttokenpayloadreraise_test_http_exception_from_verify_propagates" + "source_file": "tests/test_auth_util.py", + "source_location": "L89", + "community": 43, + "norm_label": "testauthutiledgecases", + "id": "tests_test_auth_util_testauthutiledgecases" }, { - "label": "TestManagerInit", + "label": ".test_verify_password_none_hash()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1441", - "community": 498, - "norm_label": "testmanagerinit", - "id": "tests_test_controllers_coverage_testmanagerinit" + "source_file": "tests/test_auth_util.py", + "source_location": "L90", + "community": 43, + "norm_label": ".test_verify_password_none_hash()", + "id": "tests_test_auth_util_testauthutiledgecases_test_verify_password_none_hash" }, { - "label": ".test_manager_init()", + "label": ".test_verify_password_none_password()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1444", - "community": 498, - "norm_label": ".test_manager_init()", - "id": "tests_test_controllers_coverage_testmanagerinit_test_manager_init" + "source_file": "tests/test_auth_util.py", + "source_location": "L94", + "community": 43, + "norm_label": ".test_verify_password_none_password()", + "id": "tests_test_auth_util_testauthutiledgecases_test_verify_password_none_password" }, { - "label": "Tests to cover uncovered lines across controllers, UserManager, and auth util.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1", - "community": 120, - "norm_label": "tests to cover uncovered lines across controllers, usermanager, and auth util.", - "id": "tests_test_controllers_coverage_rationale_1" + "label": ".test_verify_password_both_none()", + "file_type": "code", + "source_file": "tests/test_auth_util.py", + "source_location": "L99", + "community": 43, + "norm_label": ".test_verify_password_both_none()", + "id": "tests_test_auth_util_testauthutiledgecases_test_verify_password_both_none" }, { - "label": "Return (client, app) with auth + user routers and mocked getSession.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L23", - "community": 120, - "norm_label": "return (client, app) with auth + user routers and mocked getsession.", - "id": "tests_test_controllers_coverage_rationale_23" + "label": ".test_create_access_token_with_empty_data()", + "file_type": "code", + "source_file": "tests/test_auth_util.py", + "source_location": "L103", + "community": 43, + "norm_label": ".test_create_access_token_with_empty_data()", + "id": "tests_test_auth_util_testauthutiledgecases_test_create_access_token_with_empty_data" }, { - "label": "Return (client, app) with user router and mocked deps.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L39", - "community": 47, - "norm_label": "return (client, app) with user router and mocked deps.", - "id": "tests_test_controllers_coverage_rationale_39" + "label": ".test_create_access_token_with_none_data()", + "file_type": "code", + "source_file": "tests/test_auth_util.py", + "source_location": "L109", + "community": 43, + "norm_label": ".test_create_access_token_with_none_data()", + "id": "tests_test_auth_util_testauthutiledgecases_test_create_access_token_with_none_data" }, { - "label": "Return (client, app) with prometheus router and mocked deps.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L58", - "community": 16, - "norm_label": "return (client, app) with prometheus router and mocked deps.", - "id": "tests_test_controllers_coverage_rationale_58" + "label": "test_config.py", + "file_type": "code", + "source_file": "tests/test_config.py", + "source_location": "L1", + "community": 251, + "norm_label": "test_config.py", + "id": "tests_test_config_py" }, { - "label": "Return (client, app) with stocks router and mocked deps.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L79", - "community": 14, - "norm_label": "return (client, app) with stocks router and mocked deps.", - "id": "tests_test_controllers_coverage_rationale_79" + "label": "TestConfig", + "file_type": "code", + "source_file": "tests/test_config.py", + "source_location": "L5", + "community": 102, + "norm_label": "testconfig", + "id": "tests_test_config_testconfig" }, { - "label": "Covers line 23: isSecureScheme helper.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L106", - "community": 58, - "norm_label": "covers line 23: issecurescheme helper.", - "id": "tests_test_controllers_coverage_rationale_106" + "label": ".test_stocks_api_getitem()", + "file_type": "code", + "source_file": "tests/test_config.py", + "source_location": "L6", + "community": 102, + "norm_label": ".test_stocks_api_getitem()", + "id": "tests_test_config_testconfig_test_stocks_api_getitem" }, { - "label": "Covers line 28: GET /auth/health.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L131", - "community": 498, - "norm_label": "covers line 28: get /auth/health.", - "id": "tests_test_controllers_coverage_rationale_131" + "label": ".test_prometheus_getitem()", + "file_type": "code", + "source_file": "tests/test_config.py", + "source_location": "L12", + "community": 102, + "norm_label": ".test_prometheus_getitem()", + "id": "tests_test_config_testconfig_test_prometheus_getitem" }, { - "label": "Covers lines 44-54, 63, 66-71: register success, ValueError, generic Exception.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L147", - "community": 498, - "norm_label": "covers lines 44-54, 63, 66-71: register success, valueerror, generic exception.", - "id": "tests_test_controllers_coverage_rationale_147" + "label": ".test_scraper_getitem()", + "file_type": "code", + "source_file": "tests/test_config.py", + "source_location": "L17", + "community": 102, + "norm_label": ".test_scraper_getitem()", + "id": "tests_test_config_testconfig_test_scraper_getitem" }, { - "label": "Covers lines 44-54, 63: successful registration + auto-login.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L153", - "community": 281, - "norm_label": "covers lines 44-54, 63: successful registration + auto-login.", - "id": "tests_test_controllers_coverage_rationale_153" + "label": ".test_base_mansa_settings_get()", + "file_type": "code", + "source_file": "tests/test_config.py", + "source_location": "L22", + "community": 102, + "norm_label": ".test_base_mansa_settings_get()", + "id": "tests_test_config_testconfig_test_base_mansa_settings_get" }, { - "label": "Covers line 46: auto-login fails after registration.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L179", - "community": 282, - "norm_label": "covers line 46: auto-login fails after registration.", - "id": "tests_test_controllers_coverage_rationale_179" + "label": "test_connectivity_coverage.py", + "file_type": "code", + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L1", + "community": 59, + "norm_label": "test_connectivity_coverage.py", + "id": "tests_test_connectivity_coverage_py" }, { - "label": "Covers lines 66-68: ValueError during registration.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L192", - "community": 283, - "norm_label": "covers lines 66-68: valueerror during registration.", - "id": "tests_test_controllers_coverage_rationale_192" + "label": "TestCheckMySqlConnection", + "file_type": "code", + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L8", + "community": 596, + "norm_label": "testcheckmysqlconnection", + "id": "tests_test_connectivity_coverage_testcheckmysqlconnection" }, { - "label": "Covers lines 69-71: generic Exception during registration.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L204", - "community": 284, - "norm_label": "covers lines 69-71: generic exception during registration.", - "id": "tests_test_controllers_coverage_rationale_204" + "label": "test_both_engines_ok()", + "file_type": "code", + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L13", + "community": 59, + "norm_label": "test_both_engines_ok()", + "id": "tests_test_connectivity_coverage_test_both_engines_ok" }, { - "label": "Covers lines 87-93, 102: login success and failure paths.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L216", - "community": 498, - "norm_label": "covers lines 87-93, 102: login success and failure paths.", - "id": "tests_test_controllers_coverage_rationale_216" + "label": "test_user_db_connection_error()", + "file_type": "code", + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L26", + "community": 59, + "norm_label": "test_user_db_connection_error()", + "id": "tests_test_connectivity_coverage_test_user_db_connection_error" }, { - "label": "Covers lines 87-93, 102: successful login.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L222", - "community": 285, - "norm_label": "covers lines 87-93, 102: successful login.", - "id": "tests_test_controllers_coverage_rationale_222" + "label": "test_user_db_timeout()", + "file_type": "code", + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L36", + "community": 59, + "norm_label": "test_user_db_timeout()", + "id": "tests_test_connectivity_coverage_test_user_db_timeout" }, { - "label": "Covers line 85: authenticateUser returns None.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L244", - "community": 286, - "norm_label": "covers line 85: authenticateuser returns none.", - "id": "tests_test_controllers_coverage_rationale_244" + "label": "test_user_db_generic_exception()", + "file_type": "code", + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L46", + "community": 59, + "norm_label": "test_user_db_generic_exception()", + "id": "tests_test_connectivity_coverage_test_user_db_generic_exception" }, { - "label": "Covers lines 107, 109-130, 133: logout token extraction and revocation.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L258", - "community": 498, - "norm_label": "covers lines 107, 109-130, 133: logout token extraction and revocation.", - "id": "tests_test_controllers_coverage_rationale_258" + "label": "test_user_engine_none()", + "file_type": "code", + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L56", + "community": 59, + "norm_label": "test_user_engine_none()", + "id": "tests_test_connectivity_coverage_test_user_engine_none" }, { - "label": "Covers lines 109, 115-125: logout with X-Access-Token header.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L264", - "community": 287, - "norm_label": "covers lines 109, 115-125: logout with x-access-token header.", - "id": "tests_test_controllers_coverage_rationale_264" + "label": "test_stocks_db_connection_error()", + "file_type": "code", + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L64", + "community": 59, + "norm_label": "test_stocks_db_connection_error()", + "id": "tests_test_connectivity_coverage_test_stocks_db_connection_error" }, { - "label": "Covers lines 111-113: token extracted from Authorization Bearer header.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L281", - "community": 498, - "norm_label": "covers lines 111-113: token extracted from authorization bearer header.", - "id": "tests_test_controllers_coverage_rationale_281" + "label": "test_stocks_db_timeout()", + "file_type": "code", + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L77", + "community": 59, + "norm_label": "test_stocks_db_timeout()", + "id": "tests_test_connectivity_coverage_test_stocks_db_timeout" }, { - "label": "sessionId is a string \u2014 revokeSession receives it as-is (str type).", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L296", - "community": 288, - "norm_label": "sessionid is a string \u2014 revokesession receives it as-is (str type).", - "id": "tests_test_controllers_coverage_rationale_296" + "label": "test_stocks_db_generic_exception()", + "file_type": "code", + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L90", + "community": 59, + "norm_label": "test_stocks_db_generic_exception()", + "id": "tests_test_connectivity_coverage_test_stocks_db_generic_exception" }, { - "label": "Covers lines 126-128: verifyAccessToken raises Exception.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L310", - "community": 289, - "norm_label": "covers lines 126-128: verifyaccesstoken raises exception.", - "id": "tests_test_controllers_coverage_rationale_310" + "label": "test_stocks_engine_none()", + "file_type": "code", + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L103", + "community": 59, + "norm_label": "test_stocks_engine_none()", + "id": "tests_test_connectivity_coverage_test_stocks_engine_none" }, { - "label": "Covers lines 109-113: no token provided at all.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L322", - "community": 290, - "norm_label": "covers lines 109-113: no token provided at all.", - "id": "tests_test_controllers_coverage_rationale_322" + "label": "TestCheckServiceConnection", + "file_type": "code", + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L114", + "community": 595, + "norm_label": "testcheckserviceconnection", + "id": "tests_test_connectivity_coverage_testcheckserviceconnection" }, { - "label": "Covers line 120: userId or sessionId missing from payload.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L333", - "community": 291, - "norm_label": "covers line 120: userid or sessionid missing from payload.", - "id": "tests_test_controllers_coverage_rationale_333" + "label": "test_service_not_found()", + "file_type": "code", + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L119", + "community": 59, + "norm_label": "test_service_not_found()", + "id": "tests_test_connectivity_coverage_test_service_not_found" }, { - "label": "Covers lines 139, 141-149: googleLogin endpoint.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L345", - "community": 498, - "norm_label": "covers lines 139, 141-149: googlelogin endpoint.", - "id": "tests_test_controllers_coverage_rationale_345" + "label": "test_stocks_api_health_ok()", + "file_type": "code", + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L128", + "community": 59, + "norm_label": "test_stocks_api_health_ok()", + "id": "tests_test_connectivity_coverage_test_stocks_api_health_ok" }, { - "label": "Covers lines 139, 141-149: Google login with redirect_url query param.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L349", - "community": 292, - "norm_label": "covers lines 139, 141-149: google login with redirect_url query param.", - "id": "tests_test_controllers_coverage_rationale_349" + "label": "test_non_stocks_prefix()", + "file_type": "code", + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L142", + "community": 59, + "norm_label": "test_non_stocks_prefix()", + "id": "tests_test_connectivity_coverage_test_non_stocks_prefix" }, { - "label": "Covers line 143: redirect_url falls back to referer header.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L369", - "community": 293, - "norm_label": "covers line 143: redirect_url falls back to referer header.", - "id": "tests_test_controllers_coverage_rationale_369" + "label": "test_non_200_status()", + "file_type": "code", + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L156", + "community": 59, + "norm_label": "test_non_200_status()", + "id": "tests_test_connectivity_coverage_test_non_200_status" }, { - "label": "Covers lines 155-156, 158, 160-168, 170-177, 179-184, 186, 190-204: googleCallba", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L391", - "community": 498, - "norm_label": "covers lines 155-156, 158, 160-168, 170-177, 179-184, 186, 190-204: googlecallba", - "id": "tests_test_controllers_coverage_rationale_391" + "label": "test_connection_error()", + "file_type": "code", + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L169", + "community": 59, + "norm_label": "test_connection_error()", + "id": "tests_test_connectivity_coverage_test_connection_error" }, { - "label": "Covers lines 160-168, 170-177, 179-184, 186, 197-198: new Google user.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L398", - "community": 294, - "norm_label": "covers lines 160-168, 170-177, 179-184, 186, 197-198: new google user.", - "id": "tests_test_controllers_coverage_rationale_398" + "label": "test_timeout()", + "file_type": "code", + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L180", + "community": 59, + "norm_label": "test_timeout()", + "id": "tests_test_connectivity_coverage_test_timeout" }, { - "label": "Covers lines 164, 171-173: existing Google user, no new account created.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L434", - "community": 295, - "norm_label": "covers lines 164, 171-173: existing google user, no new account created.", - "id": "tests_test_controllers_coverage_rationale_434" + "label": "test_request_exception()", + "file_type": "code", + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L191", + "community": 59, + "norm_label": "test_request_exception()", + "id": "tests_test_connectivity_coverage_test_request_exception" }, { - "label": "Covers line 165: verify_and_process returns None.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L461", - "community": 296, - "norm_label": "covers line 165: verify_and_process returns none.", - "id": "tests_test_controllers_coverage_rationale_461" + "label": "test_generic_exception()", + "file_type": "code", + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L202", + "community": 59, + "norm_label": "test_generic_exception()", + "id": "tests_test_connectivity_coverage_test_generic_exception" }, { - "label": "Covers redirect path: sso_redirect cookie triggers RedirectResponse.", + "label": "Tests for main/utils/connectivity.py \u2014 covers all branches.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L478", - "community": 297, - "norm_label": "covers redirect path: sso_redirect cookie triggers redirectresponse.", - "id": "tests_test_controllers_coverage_rationale_478" + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L1", + "community": 59, + "norm_label": "tests for main/utils/connectivity.py \u2014 covers all branches.", + "id": "tests_test_connectivity_coverage_rationale_1" }, { - "label": "Covers lines 202-204: generic Exception in callback.", + "label": "checkMySqlConnection \u2014 success, errors, engine=None paths.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L511", - "community": 298, - "norm_label": "covers lines 202-204: generic exception in callback.", - "id": "tests_test_controllers_coverage_rationale_511" + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L9", + "community": 596, + "norm_label": "checkmysqlconnection \u2014 success, errors, engine=none paths.", + "id": "tests_test_connectivity_coverage_rationale_9" }, { - "label": "Covers line 19: GET /user/health.", + "label": "checkServiceConnection \u2014 success, not found, errors.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L528", - "community": 498, - "norm_label": "covers line 19: get /user/health.", - "id": "tests_test_controllers_coverage_rationale_528" + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L115", + "community": 595, + "norm_label": "checkserviceconnection \u2014 success, not found, errors.", + "id": "tests_test_connectivity_coverage_rationale_115" }, { - "label": "Covers line 24: GET /user/me returns currentUser.", - "file_type": "rationale", + "label": "test_controllers_coverage.py", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L542", - "community": 47, - "norm_label": "covers line 24: get /user/me returns currentuser.", - "id": "tests_test_controllers_coverage_rationale_542" + "source_location": "L1", + "community": 120, + "norm_label": "test_controllers_coverage.py", + "id": "tests_test_controllers_coverage_py" }, { - "label": "Covers lines 31-32, 36, 43-44, 48: upgrade developer starter/enterprise.", - "file_type": "rationale", + "label": "_make_auth_client()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L556", - "community": 47, - "norm_label": "covers lines 31-32, 36, 43-44, 48: upgrade developer starter/enterprise.", - "id": "tests_test_controllers_coverage_rationale_556" + "source_location": "L22", + "community": 120, + "norm_label": "_make_auth_client()", + "id": "tests_test_controllers_coverage_make_auth_client" }, { - "label": "Covers lines 53-54, 56: admin access granted / denied.", - "file_type": "rationale", + "label": "_make_user_client()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L596", + "source_location": "L38", "community": 47, - "norm_label": "covers lines 53-54, 56: admin access granted / denied.", - "id": "tests_test_controllers_coverage_rationale_596" + "norm_label": "_make_user_client()", + "id": "tests_test_controllers_coverage_make_user_client" }, { - "label": "Covers lines 66, 68-72, 74: GET /user/sessions.", - "file_type": "rationale", + "label": "_make_prometheus_client()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L615", - "community": 178, - "norm_label": "covers lines 66, 68-72, 74: get /user/sessions.", - "id": "tests_test_controllers_coverage_rationale_615" + "source_location": "L57", + "community": 99, + "norm_label": "_make_prometheus_client()", + "id": "tests_test_controllers_coverage_make_prometheus_client" }, { - "label": "Covers lines 66, 68-72, 74: full sessions listing.", - "file_type": "rationale", + "label": "_make_stocksapi_client()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L618", - "community": 178, - "norm_label": "covers lines 66, 68-72, 74: full sessions listing.", - "id": "tests_test_controllers_coverage_rationale_618" + "source_location": "L78", + "community": 14, + "norm_label": "_make_stocksapi_client()", + "id": "tests_test_controllers_coverage_make_stocksapi_client" }, { - "label": "Covers lines 100-104, 106: GET /user/sessions/current.", - "file_type": "rationale", + "label": "TestIsSecureScheme", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L669", - "community": 107, - "norm_label": "covers lines 100-104, 106: get /user/sessions/current.", - "id": "tests_test_controllers_coverage_rationale_669" + "source_location": "L105", + "community": 58, + "norm_label": "testissecurescheme", + "id": "tests_test_controllers_coverage_testissecurescheme" }, { - "label": "Covers lines 100-104, 106: session found.", - "file_type": "rationale", + "label": ".test_is_secure_https()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L672", - "community": 107, - "norm_label": "covers lines 100-104, 106: session found.", - "id": "tests_test_controllers_coverage_rationale_672" + "source_location": "L108", + "community": 58, + "norm_label": ".test_is_secure_https()", + "id": "tests_test_controllers_coverage_testissecurescheme_test_is_secure_https" }, { - "label": "Covers line 104: session not found.", - "file_type": "rationale", + "label": ".test_is_secure_http()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L705", - "community": 107, - "norm_label": "covers line 104: session not found.", - "id": "tests_test_controllers_coverage_rationale_705" + "source_location": "L115", + "community": 58, + "norm_label": ".test_is_secure_http()", + "id": "tests_test_controllers_coverage_testissecurescheme_test_is_secure_http" }, { - "label": "Covers lines 126-136: DELETE /user/sessions/{sessionId}.", - "file_type": "rationale", + "label": ".test_is_secure_no_scheme()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L728", - "community": 104, - "norm_label": "covers lines 126-136: delete /user/sessions/{sessionid}.", - "id": "tests_test_controllers_coverage_rationale_728" + "source_location": "L122", + "community": 58, + "norm_label": ".test_is_secure_no_scheme()", + "id": "tests_test_controllers_coverage_testissecurescheme_test_is_secure_no_scheme" }, { - "label": "Covers lines 126, 131, 135-136.", - "file_type": "rationale", + "label": "TestHealthEndpoint", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L731", - "community": 104, - "norm_label": "covers lines 126, 131, 135-136.", - "id": "tests_test_controllers_coverage_rationale_731" + "source_location": "L130", + "community": 45, + "norm_label": "testhealthendpoint", + "id": "tests_test_controllers_coverage_testhealthendpoint" }, { - "label": "Covers lines 127-129: session not found.", - "file_type": "rationale", + "label": ".test_health_returns_ok()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L758", - "community": 104, - "norm_label": "covers lines 127-129: session not found.", - "id": "tests_test_controllers_coverage_rationale_758" + "source_location": "L133", + "community": 45, + "norm_label": ".test_health_returns_ok()", + "id": "tests_test_controllers_coverage_testhealthendpoint_test_health_returns_ok" }, { - "label": "Covers lines 132-133: revokeSession returns False.", - "file_type": "rationale", + "label": "TestRegisterEndpoint", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L780", - "community": 104, - "norm_label": "covers lines 132-133: revokesession returns false.", - "id": "tests_test_controllers_coverage_rationale_780" + "source_location": "L146", + "community": 120, + "norm_label": "testregisterendpoint", + "id": "tests_test_controllers_coverage_testregisterendpoint" }, { - "label": "Covers lines 143, 145, 147-148: POST /user/sessions/revoke-all.", - "file_type": "rationale", + "label": "test_register_success()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L806", - "community": 221, - "norm_label": "covers lines 143, 145, 147-148: post /user/sessions/revoke-all.", - "id": "tests_test_controllers_coverage_rationale_806" + "source_location": "L152", + "community": 120, + "norm_label": "test_register_success()", + "id": "tests_test_controllers_coverage_test_register_success" }, { - "label": "Covers lines 143, 145, 147-148.", - "file_type": "rationale", + "label": "test_register_auto_login_fails()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L809", - "community": 221, - "norm_label": "covers lines 143, 145, 147-148.", - "id": "tests_test_controllers_coverage_rationale_809" + "source_location": "L178", + "community": 120, + "norm_label": "test_register_auto_login_fails()", + "id": "tests_test_controllers_coverage_test_register_auto_login_fails" }, { - "label": "Covers line 24: GET /prometheus/health.", - "file_type": "rationale", + "label": "test_register_value_error()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L836", - "community": 498, - "norm_label": "covers line 24: get /prometheus/health.", - "id": "tests_test_controllers_coverage_rationale_836" + "source_location": "L191", + "community": 120, + "norm_label": "test_register_value_error()", + "id": "tests_test_controllers_coverage_test_register_value_error" }, { - "label": "Covers lines 33-36: GET /prometheus/sessions.", - "file_type": "rationale", + "label": "test_register_generic_exception()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L850", - "community": 16, - "norm_label": "covers lines 33-36: get /prometheus/sessions.", - "id": "tests_test_controllers_coverage_rationale_850" + "source_location": "L203", + "community": 120, + "norm_label": "test_register_generic_exception()", + "id": "tests_test_controllers_coverage_test_register_generic_exception" }, { - "label": "Covers line 52: POST /prometheus/sessions.", - "file_type": "rationale", + "label": "TestLoginEndpoint", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L868", - "community": 16, - "norm_label": "covers line 52: post /prometheus/sessions.", - "id": "tests_test_controllers_coverage_rationale_868" + "source_location": "L215", + "community": 120, + "norm_label": "testloginendpoint", + "id": "tests_test_controllers_coverage_testloginendpoint" }, { - "label": "Covers lines 62-63, 65-68: PUT /prometheus/sessions/{sessionId}.", - "file_type": "rationale", + "label": "test_login_success()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L882", - "community": 99, - "norm_label": "covers lines 62-63, 65-68: put /prometheus/sessions/{sessionid}.", - "id": "tests_test_controllers_coverage_rationale_882" + "source_location": "L221", + "community": 120, + "norm_label": "test_login_success()", + "id": "tests_test_controllers_coverage_test_login_success" }, { - "label": "Covers lines 65-68: title updated successfully.", - "file_type": "rationale", + "label": "test_login_wrong_credentials()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L885", - "community": 99, - "norm_label": "covers lines 65-68: title updated successfully.", - "id": "tests_test_controllers_coverage_rationale_885" + "source_location": "L243", + "community": 120, + "norm_label": "test_login_wrong_credentials()", + "id": "tests_test_controllers_coverage_test_login_wrong_credentials" }, { - "label": "Covers lines 62-63: not the session owner.", - "file_type": "rationale", + "label": "TestLogoutEndpoint", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L896", - "community": 99, - "norm_label": "covers lines 62-63: not the session owner.", - "id": "tests_test_controllers_coverage_rationale_896" + "source_location": "L257", + "community": 120, + "norm_label": "testlogoutendpoint", + "id": "tests_test_controllers_coverage_testlogoutendpoint" }, { - "label": "Covers lines 66-67: session not found.", - "file_type": "rationale", + "label": "test_logout_with_x_access_token()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L905", - "community": 99, - "norm_label": "covers lines 66-67: session not found.", - "id": "tests_test_controllers_coverage_rationale_905" + "source_location": "L263", + "community": 120, + "norm_label": "test_logout_with_x_access_token()", + "id": "tests_test_controllers_coverage_test_logout_with_x_access_token" }, { - "label": "Covers lines 77, 83-84, 86: GET /prometheus/history/{sessionId}.", - "file_type": "rationale", + "label": "test_logout_with_bearer_header()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L916", - "community": 136, - "norm_label": "covers lines 77, 83-84, 86: get /prometheus/history/{sessionid}.", - "id": "tests_test_controllers_coverage_rationale_916" + "source_location": "L280", + "community": 120, + "norm_label": "test_logout_with_bearer_header()", + "id": "tests_test_controllers_coverage_test_logout_with_bearer_header" }, { - "label": "Covers lines 77, 86: session found with history.", - "file_type": "rationale", + "label": "test_logout_with_invalid_session_id()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L919", - "community": 136, - "norm_label": "covers lines 77, 86: session found with history.", - "id": "tests_test_controllers_coverage_rationale_919" + "source_location": "L295", + "community": 120, + "norm_label": "test_logout_with_invalid_session_id()", + "id": "tests_test_controllers_coverage_test_logout_with_invalid_session_id" }, { - "label": "Covers lines 83-84: session not found.", - "file_type": "rationale", + "label": "test_logout_with_verification_error()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L963", - "community": 136, - "norm_label": "covers lines 83-84: session not found.", - "id": "tests_test_controllers_coverage_rationale_963" + "source_location": "L309", + "community": 120, + "norm_label": "test_logout_with_verification_error()", + "id": "tests_test_controllers_coverage_test_logout_with_verification_error" }, { - "label": "Covers lines 95-98: DELETE /prometheus/sessions/{sessionId}.", - "file_type": "rationale", + "label": "test_logout_without_token()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L998", - "community": 231, - "norm_label": "covers lines 95-98: delete /prometheus/sessions/{sessionid}.", - "id": "tests_test_controllers_coverage_rationale_998" + "source_location": "L321", + "community": 120, + "norm_label": "test_logout_without_token()", + "id": "tests_test_controllers_coverage_test_logout_without_token" }, { - "label": "Covers lines 95-98: session deleted.", - "file_type": "rationale", + "label": "test_logout_with_missing_user_and_session()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1001", - "community": 231, - "norm_label": "covers lines 95-98: session deleted.", - "id": "tests_test_controllers_coverage_rationale_1001" + "source_location": "L332", + "community": 120, + "norm_label": "test_logout_with_missing_user_and_session()", + "id": "tests_test_controllers_coverage_test_logout_with_missing_user_and_session" }, { - "label": "Covers lines 96-97: session not found.", - "file_type": "rationale", + "label": "TestGoogleLogin", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1011", - "community": 231, - "norm_label": "covers lines 96-97: session not found.", - "id": "tests_test_controllers_coverage_rationale_1011" + "source_location": "L344", + "community": 45, + "norm_label": "testgooglelogin", + "id": "tests_test_controllers_coverage_testgooglelogin" }, { - "label": "Covers lines 109-136: POST /prometheus/chat/stream (SSE).", - "file_type": "rationale", + "label": "test_google_login_with_redirect_url()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1021", - "community": 16, - "norm_label": "covers lines 109-136: post /prometheus/chat/stream (sse).", - "id": "tests_test_controllers_coverage_rationale_1021" + "source_location": "L348", + "community": 120, + "norm_label": "test_google_login_with_redirect_url()", + "id": "tests_test_controllers_coverage_test_google_login_with_redirect_url" }, { - "label": "Covers lines 118-119: sessionId is None, new session created.", - "file_type": "rationale", + "label": "test_google_login_with_referer()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1024", - "community": 16, - "norm_label": "covers lines 118-119: sessionid is none, new session created.", - "id": "tests_test_controllers_coverage_rationale_1024" + "source_location": "L368", + "community": 120, + "norm_label": "test_google_login_with_referer()", + "id": "tests_test_controllers_coverage_test_google_login_with_referer" }, { - "label": "Covers lines 120-121: existing session with verified ownership.", - "file_type": "rationale", + "label": "TestGoogleCallback", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1043", - "community": 16, - "norm_label": "covers lines 120-121: existing session with verified ownership.", - "id": "tests_test_controllers_coverage_rationale_1043" + "source_location": "L390", + "community": 120, + "norm_label": "testgooglecallback", + "id": "tests_test_controllers_coverage_testgooglecallback" }, { - "label": "Covers lines 120-121: session ownership check fails.", - "file_type": "rationale", + "label": "test_callback_new_user()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1086", - "community": 104, - "norm_label": "covers lines 120-121: session ownership check fails.", - "id": "tests_test_controllers_coverage_rationale_1086" + "source_location": "L397", + "community": 120, + "norm_label": "test_callback_new_user()", + "id": "tests_test_controllers_coverage_test_callback_new_user" }, { - "label": "Generic Exception in chat propagates via SSE error event.", - "file_type": "rationale", + "label": "test_callback_existing_user()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1122", - "community": 16, - "norm_label": "generic exception in chat propagates via sse error event.", - "id": "tests_test_controllers_coverage_rationale_1122" + "source_location": "L433", + "community": 120, + "norm_label": "test_callback_existing_user()", + "id": "tests_test_controllers_coverage_test_callback_existing_user" }, { - "label": "Covers line 18: GET /stocks/health.", - "file_type": "rationale", + "label": "test_callback_no_user_info()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1145", - "community": 498, - "norm_label": "covers line 18: get /stocks/health.", - "id": "tests_test_controllers_coverage_rationale_1145" + "source_location": "L460", + "community": 120, + "norm_label": "test_callback_no_user_info()", + "id": "tests_test_controllers_coverage_test_callback_no_user_info" }, { - "label": "Covers line 35: GET /stocks/historical.", - "file_type": "rationale", + "label": "test_callback_with_state_redirect()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1159", - "community": 14, - "norm_label": "covers line 35: get /stocks/historical.", - "id": "tests_test_controllers_coverage_rationale_1159" + "source_location": "L477", + "community": 120, + "norm_label": "test_callback_with_state_redirect()", + "id": "tests_test_controllers_coverage_test_callback_with_state_redirect" }, { - "label": "Covers line 47: GET /stocks/fundamental.", - "file_type": "rationale", + "label": "test_callback_generic_exception()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1173", - "community": 14, - "norm_label": "covers line 47: get /stocks/fundamental.", - "id": "tests_test_controllers_coverage_rationale_1173" + "source_location": "L510", + "community": 120, + "norm_label": "test_callback_generic_exception()", + "id": "tests_test_controllers_coverage_test_callback_generic_exception" }, { - "label": "Covers lines 52-53, 57-63: GET /stocks/key/generate. NOTE: stocksapi_cont", - "file_type": "rationale", + "label": "TestUserHealth", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1187", - "community": 14, - "norm_label": "covers lines 52-53, 57-63: get /stocks/key/generate. note: stocksapi_cont", - "id": "tests_test_controllers_coverage_rationale_1187" + "source_location": "L527", + "community": 498, + "norm_label": "testuserhealth", + "id": "tests_test_controllers_coverage_testuserhealth" }, { - "label": "Covers lines 52-53: user without GENERATE_API_KEYS permission gets 403.", - "file_type": "rationale", + "label": ".test_health()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1195", - "community": 14, - "norm_label": "covers lines 52-53: user without generate_api_keys permission gets 403.", - "id": "tests_test_controllers_coverage_rationale_1195" + "source_location": "L530", + "community": 498, + "norm_label": ".test_health()", + "id": "tests_test_controllers_coverage_testuserhealth_test_health" }, { - "label": "Covers lines 57-60: admin bypasses permission check and generates key.", - "file_type": "rationale", + "label": "TestGetMe", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1203", - "community": 14, - "norm_label": "covers lines 57-60: admin bypasses permission check and generates key.", - "id": "tests_test_controllers_coverage_rationale_1203" + "source_location": "L541", + "community": 47, + "norm_label": "testgetme", + "id": "tests_test_controllers_coverage_testgetme" }, { - "label": "Covers lines 61-63: exception during key generation (admin path).", - "file_type": "rationale", + "label": ".test_get_me()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1215", - "community": 14, - "norm_label": "covers lines 61-63: exception during key generation (admin path).", - "id": "tests_test_controllers_coverage_rationale_1215" + "source_location": "L544", + "community": 47, + "norm_label": ".test_get_me()", + "id": "tests_test_controllers_coverage_testgetme_test_get_me" }, { - "label": "Covers lines 13, 17, 19-20, 22-27: UserManager.addRoleToUser.", - "file_type": "rationale", + "label": "TestUpgradeEndpoints", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1230", - "community": 560, - "norm_label": "covers lines 13, 17, 19-20, 22-27: usermanager.addroletouser.", - "id": "tests_test_controllers_coverage_rationale_1230" + "source_location": "L555", + "community": 47, + "norm_label": "testupgradeendpoints", + "id": "tests_test_controllers_coverage_testupgradeendpoints" }, { - "label": "Covers lines 17, 22-27: user found, role not present, role added.", - "file_type": "rationale", + "label": ".test_upgrade_developer_starter_success()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1233", - "community": 560, - "norm_label": "covers lines 17, 22-27: user found, role not present, role added.", - "id": "tests_test_controllers_coverage_rationale_1233" + "source_location": "L558", + "community": 47, + "norm_label": ".test_upgrade_developer_starter_success()", + "id": "tests_test_controllers_coverage_testupgradeendpoints_test_upgrade_developer_starter_success" }, { - "label": "Covers line 27: user already has the role.", - "file_type": "rationale", + "label": ".test_upgrade_developer_starter_already_developer()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1250", - "community": 560, - "norm_label": "covers line 27: user already has the role.", - "id": "tests_test_controllers_coverage_rationale_1250" + "source_location": "L567", + "community": 47, + "norm_label": ".test_upgrade_developer_starter_already_developer()", + "id": "tests_test_controllers_coverage_testupgradeendpoints_test_upgrade_developer_starter_already_developer" }, { - "label": "Covers lines 19-20: user not found raises 404.", - "file_type": "rationale", + "label": ".test_upgrade_developer_enterprise_success()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1264", - "community": 528, - "norm_label": "covers lines 19-20: user not found raises 404.", - "id": "tests_test_controllers_coverage_rationale_1264" + "source_location": "L576", + "community": 47, + "norm_label": ".test_upgrade_developer_enterprise_success()", + "id": "tests_test_controllers_coverage_testupgradeendpoints_test_upgrade_developer_enterprise_success" }, { - "label": "Covers lines 34, 36-38, 40-44, 46, 48-49, 51, 58-59, 61, 63-67: UserManager.getC", - "file_type": "rationale", + "label": ".test_upgrade_developer_enterprise_already_developer()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1276", - "community": 493, - "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" + "source_location": "L585", + "community": 47, + "norm_label": ".test_upgrade_developer_enterprise_already_developer()", + "id": "tests_test_controllers_coverage_testupgradeendpoints_test_upgrade_developer_enterprise_already_developer" }, { - "label": "Covers lines 36-38, 40-44, 46, 48-49, 51, 58-59, 61: successful user retrieval.", - "file_type": "rationale", + "label": "TestAdminAccess", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1283", - "community": 493, - "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" + "source_location": "L595", + "community": 47, + "norm_label": "testadminaccess", + "id": "tests_test_controllers_coverage_testadminaccess" }, { - "label": "Covers lines 42-44: session validation fails.", - "file_type": "rationale", + "label": ".test_admin_access_granted()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1308", - "community": 560, - "norm_label": "covers lines 42-44: session validation fails.", - "id": "tests_test_controllers_coverage_rationale_1308" + "source_location": "L598", + "community": 47, + "norm_label": ".test_admin_access_granted()", + "id": "tests_test_controllers_coverage_testadminaccess_test_admin_access_granted" }, { - "label": "Covers lines 48-49: user not in DB.", - "file_type": "rationale", + "label": ".test_admin_access_denied()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1324", - "community": 493, - "norm_label": "covers lines 48-49: user not in db.", - "id": "tests_test_controllers_coverage_rationale_1324" + "source_location": "L605", + "community": 47, + "norm_label": ".test_admin_access_denied()", + "id": "tests_test_controllers_coverage_testadminaccess_test_admin_access_denied" }, { - "label": "Covers lines 65-67: unexpected exception.", - "file_type": "rationale", + "label": "TestGetSessions", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1341", - "community": 493, - "norm_label": "covers lines 65-67: unexpected exception.", - "id": "tests_test_controllers_coverage_rationale_1341" + "source_location": "L614", + "community": 178, + "norm_label": "testgetsessions", + "id": "tests_test_controllers_coverage_testgetsessions" }, { - "label": "Covers lines 37-38, 46, 51, 58 (sessionId is None): skips session validation.", - "file_type": "rationale", + "label": ".test_get_sessions()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1358", - "community": 493, - "norm_label": "covers lines 37-38, 46, 51, 58 (sessionid is none): skips session validation.", - "id": "tests_test_controllers_coverage_rationale_1358" + "source_location": "L617", + "community": 178, + "norm_label": ".test_get_sessions()", + "id": "tests_test_controllers_coverage_testgetsessions_test_get_sessions" }, { - "label": "Covers line 16: empty password raises ValueError.", - "file_type": "rationale", + "label": "TestGetCurrentSession", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1382", - "community": 524, - "norm_label": "covers line 16: empty password raises valueerror.", - "id": "tests_test_controllers_coverage_rationale_1382" + "source_location": "L668", + "community": 107, + "norm_label": "testgetcurrentsession", + "id": "tests_test_controllers_coverage_testgetcurrentsession" }, { - "label": "Covers lines 45-51: verifyAccessToken with expired and invalid tokens.", - "file_type": "rationale", + "label": ".test_get_current_session_found()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1392", - "community": 524, - "norm_label": "covers lines 45-51: verifyaccesstoken with expired and invalid tokens.", - "id": "tests_test_controllers_coverage_rationale_1392" + "source_location": "L671", + "community": 107, + "norm_label": ".test_get_current_session_found()", + "id": "tests_test_controllers_coverage_testgetcurrentsession_test_get_current_session_found" }, { - "label": "Covers lines 48-49: jwt.ExpiredSignatureError.", - "file_type": "rationale", + "label": ".test_get_current_session_not_found()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1395", - "community": 524, - "norm_label": "covers lines 48-49: jwt.expiredsignatureerror.", - "id": "tests_test_controllers_coverage_rationale_1395" + "source_location": "L704", + "community": 107, + "norm_label": ".test_get_current_session_not_found()", + "id": "tests_test_controllers_coverage_testgetcurrentsession_test_get_current_session_not_found" }, { - "label": "Covers lines 50-51: jwt.InvalidTokenError.", - "file_type": "rationale", + "label": "TestRevokeSession", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1411", - "community": 544, - "norm_label": "covers lines 50-51: jwt.invalidtokenerror.", - "id": "tests_test_controllers_coverage_rationale_1411" + "source_location": "L727", + "community": 104, + "norm_label": "testrevokesession", + "id": "tests_test_controllers_coverage_testrevokesession" }, { - "label": "Covers line 67: extractTokenPayload re-raises HTTPException from verifyAccessTok", - "file_type": "rationale", + "label": ".test_revoke_session_success()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1423", - "community": 498, - "norm_label": "covers line 67: extracttokenpayload re-raises httpexception from verifyaccesstok", - "id": "tests_test_controllers_coverage_rationale_1423" + "source_location": "L730", + "community": 104, + "norm_label": ".test_revoke_session_success()", + "id": "tests_test_controllers_coverage_testrevokesession_test_revoke_session_success" }, { - "label": "Covers line 67: HTTPException raised by verifyAccessToken is re-raised.", - "file_type": "rationale", + "label": ".test_revoke_session_not_found()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1426", - "community": 114, - "norm_label": "covers line 67: httpexception raised by verifyaccesstoken is re-raised.", - "id": "tests_test_controllers_coverage_rationale_1426" + "source_location": "L757", + "community": 104, + "norm_label": ".test_revoke_session_not_found()", + "id": "tests_test_controllers_coverage_testrevokesession_test_revoke_session_not_found" }, { - "label": "Covers line 13: UserManager.__init__.", - "file_type": "rationale", + "label": ".test_revoke_session_failure()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1442", - "community": 498, - "norm_label": "covers line 13: usermanager.__init__.", - "id": "tests_test_controllers_coverage_rationale_1442" + "source_location": "L779", + "community": 104, + "norm_label": ".test_revoke_session_failure()", + "id": "tests_test_controllers_coverage_testrevokesession_test_revoke_session_failure" }, { - "label": "test_device.py", + "label": "TestRevokeAllSessions", "file_type": "code", - "source_file": "tests/test_device.py", - "source_location": "L1", - "community": 1, - "norm_label": "test_device.py", - "id": "tests_test_device_py" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L805", + "community": 221, + "norm_label": "testrevokeallsessions", + "id": "tests_test_controllers_coverage_testrevokeallsessions" }, { - "label": "TestDeviceDetection", + "label": ".test_revoke_all_sessions()", "file_type": "code", - "source_file": "tests/test_device.py", - "source_location": "L10", - "community": 1, - "norm_label": "testdevicedetection", - "id": "tests_test_device_testdevicedetection" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L808", + "community": 221, + "norm_label": ".test_revoke_all_sessions()", + "id": "tests_test_controllers_coverage_testrevokeallsessions_test_revoke_all_sessions" }, { - "label": ".test_parse_chrome_windows()", + "label": "TestPrometheusHealth", "file_type": "code", - "source_file": "tests/test_device.py", - "source_location": "L11", - "community": 1, - "norm_label": ".test_parse_chrome_windows()", - "id": "tests_test_device_testdevicedetection_test_parse_chrome_windows" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L835", + "community": 498, + "norm_label": "testprometheushealth", + "id": "tests_test_controllers_coverage_testprometheushealth" }, { - "label": ".test_parse_firefox_windows()", + "label": ".test_health()", "file_type": "code", - "source_file": "tests/test_device.py", - "source_location": "L20", - "community": 1, - "norm_label": ".test_parse_firefox_windows()", - "id": "tests_test_device_testdevicedetection_test_parse_firefox_windows" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L838", + "community": 498, + "norm_label": ".test_health()", + "id": "tests_test_controllers_coverage_testprometheushealth_test_health" }, { - "label": ".test_parse_safari_mac()", + "label": "TestPrometheusGetSessions", "file_type": "code", - "source_file": "tests/test_device.py", - "source_location": "L28", - "community": 1, - "norm_label": ".test_parse_safari_mac()", - "id": "tests_test_device_testdevicedetection_test_parse_safari_mac" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L849", + "community": 99, + "norm_label": "testprometheusgetsessions", + "id": "tests_test_controllers_coverage_testprometheusgetsessions" }, { - "label": ".test_parse_chrome_android()", + "label": ".test_get_sessions()", "file_type": "code", - "source_file": "tests/test_device.py", - "source_location": "L35", - "community": 1, - "norm_label": ".test_parse_chrome_android()", - "id": "tests_test_device_testdevicedetection_test_parse_chrome_android" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L852", + "community": 99, + "norm_label": ".test_get_sessions()", + "id": "tests_test_controllers_coverage_testprometheusgetsessions_test_get_sessions" }, { - "label": ".test_parse_safari_iphone()", + "label": "TestPrometheusCreateSession", "file_type": "code", - "source_file": "tests/test_device.py", - "source_location": "L43", - "community": 1, - "norm_label": ".test_parse_safari_iphone()", - "id": "tests_test_device_testdevicedetection_test_parse_safari_iphone" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L867", + "community": 99, + "norm_label": "testprometheuscreatesession", + "id": "tests_test_controllers_coverage_testprometheuscreatesession" }, { - "label": ".test_parse_edge()", + "label": ".test_create_session()", "file_type": "code", - "source_file": "tests/test_device.py", - "source_location": "L50", - "community": 1, - "norm_label": ".test_parse_edge()", - "id": "tests_test_device_testdevicedetection_test_parse_edge" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L870", + "community": 99, + "norm_label": ".test_create_session()", + "id": "tests_test_controllers_coverage_testprometheuscreatesession_test_create_session" }, { - "label": ".test_parse_empty_user_agent()", + "label": "TestPrometheusUpdateSessionTitle", "file_type": "code", - "source_file": "tests/test_device.py", - "source_location": "L56", - "community": 1, - "norm_label": ".test_parse_empty_user_agent()", - "id": "tests_test_device_testdevicedetection_test_parse_empty_user_agent" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L881", + "community": 99, + "norm_label": "testprometheusupdatesessiontitle", + "id": "tests_test_controllers_coverage_testprometheusupdatesessiontitle" }, { - "label": ".test_parse_none_user_agent()", + "label": ".test_update_title_success()", "file_type": "code", - "source_file": "tests/test_device.py", - "source_location": "L63", - "community": 1, - "norm_label": ".test_parse_none_user_agent()", - "id": "tests_test_device_testdevicedetection_test_parse_none_user_agent" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L884", + "community": 99, + "norm_label": ".test_update_title_success()", + "id": "tests_test_controllers_coverage_testprometheusupdatesessiontitle_test_update_title_success" }, { - "label": ".test_generate_fingerprint_consistent()", + "label": ".test_update_title_not_owner()", "file_type": "code", - "source_file": "tests/test_device.py", - "source_location": "L69", - "community": 1, - "norm_label": ".test_generate_fingerprint_consistent()", - "id": "tests_test_device_testdevicedetection_test_generate_fingerprint_consistent" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L895", + "community": 99, + "norm_label": ".test_update_title_not_owner()", + "id": "tests_test_controllers_coverage_testprometheusupdatesessiontitle_test_update_title_not_owner" }, { - "label": ".test_generate_fingerprint_different_inputs()", + "label": ".test_update_title_not_found()", "file_type": "code", - "source_file": "tests/test_device.py", - "source_location": "L79", - "community": 1, - "norm_label": ".test_generate_fingerprint_different_inputs()", - "id": "tests_test_device_testdevicedetection_test_generate_fingerprint_different_inputs" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L904", + "community": 99, + "norm_label": ".test_update_title_not_found()", + "id": "tests_test_controllers_coverage_testprometheusupdatesessiontitle_test_update_title_not_found" }, { - "label": ".test_generate_fingerprint_includes_language()", + "label": "TestPrometheusGetHistory", "file_type": "code", - "source_file": "tests/test_device.py", - "source_location": "L85", - "community": 1, - "norm_label": ".test_generate_fingerprint_includes_language()", - "id": "tests_test_device_testdevicedetection_test_generate_fingerprint_includes_language" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L915", + "community": 104, + "norm_label": "testprometheusgethistory", + "id": "tests_test_controllers_coverage_testprometheusgethistory" }, { - "label": "test_device_coverage.py", + "label": ".test_get_history_found()", "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L1", - "community": 1, - "norm_label": "test_device_coverage.py", - "id": "tests_test_device_coverage_py" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L918", + "community": 104, + "norm_label": ".test_get_history_found()", + "id": "tests_test_controllers_coverage_testprometheusgethistory_test_get_history_found" }, { - "label": "TestDetectBrowser", + "label": ".test_get_history_not_found()", "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L14", - "community": 1, - "norm_label": "testdetectbrowser", - "id": "tests_test_device_coverage_testdetectbrowser" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L962", + "community": 104, + "norm_label": ".test_get_history_not_found()", + "id": "tests_test_controllers_coverage_testprometheusgethistory_test_get_history_not_found" }, { - "label": ".test_edge_new()", + "label": "TestPrometheusDeleteSession", "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L15", - "community": 1, - "norm_label": ".test_edge_new()", - "id": "tests_test_device_coverage_testdetectbrowser_test_edge_new" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L997", + "community": 231, + "norm_label": "testprometheusdeletesession", + "id": "tests_test_controllers_coverage_testprometheusdeletesession" }, { - "label": ".test_edge_with_edge_suffix()", + "label": ".test_delete_session_success()", "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L23", - "community": 1, - "norm_label": ".test_edge_with_edge_suffix()", - "id": "tests_test_device_coverage_testdetectbrowser_test_edge_with_edge_suffix" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1000", + "community": 231, + "norm_label": ".test_delete_session_success()", + "id": "tests_test_controllers_coverage_testprometheusdeletesession_test_delete_session_success" }, { - "label": ".test_chrome()", + "label": ".test_delete_session_not_found()", "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L28", - "community": 1, - "norm_label": ".test_chrome()", - "id": "tests_test_device_coverage_testdetectbrowser_test_chrome" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1010", + "community": 231, + "norm_label": ".test_delete_session_not_found()", + "id": "tests_test_controllers_coverage_testprometheusdeletesession_test_delete_session_not_found" }, { - "label": ".test_firefox()", + "label": "TestPrometheusChat", "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L32", - "community": 1, - "norm_label": ".test_firefox()", - "id": "tests_test_device_coverage_testdetectbrowser_test_firefox" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1020", + "community": 16, + "norm_label": "testprometheuschat", + "id": "tests_test_controllers_coverage_testprometheuschat" }, { - "label": ".test_firefox_fx_prefix()", + "label": ".test_chat_new_session()", "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L36", - "community": 1, - "norm_label": ".test_firefox_fx_prefix()", - "id": "tests_test_device_coverage_testdetectbrowser_test_firefox_fx_prefix" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1023", + "community": 16, + "norm_label": ".test_chat_new_session()", + "id": "tests_test_controllers_coverage_testprometheuschat_test_chat_new_session" }, { - "label": ".test_safari()", + "label": ".test_chat_existing_session_verified()", "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L43", - "community": 1, - "norm_label": ".test_safari()", - "id": "tests_test_device_coverage_testdetectbrowser_test_safari" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1042", + "community": 16, + "norm_label": ".test_chat_existing_session_verified()", + "id": "tests_test_controllers_coverage_testprometheuschat_test_chat_existing_session_verified" }, { - "label": ".test_opera()", + "label": ".test_chat_existing_session_not_owner()", "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L47", - "community": 1, - "norm_label": ".test_opera()", - "id": "tests_test_device_coverage_testdetectbrowser_test_opera" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1085", + "community": 16, + "norm_label": ".test_chat_existing_session_not_owner()", + "id": "tests_test_controllers_coverage_testprometheuschat_test_chat_existing_session_not_owner" }, { - "label": ".test_opera_mini()", + "label": ".test_chat_generic_exception()", "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L54", - "community": 1, - "norm_label": ".test_opera_mini()", - "id": "tests_test_device_coverage_testdetectbrowser_test_opera_mini" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1121", + "community": 16, + "norm_label": ".test_chat_generic_exception()", + "id": "tests_test_controllers_coverage_testprometheuschat_test_chat_generic_exception" }, { - "label": ".test_brave()", + "label": "TestStocksApiHealth", "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L59", - "community": 1, - "norm_label": ".test_brave()", - "id": "tests_test_device_coverage_testdetectbrowser_test_brave" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1144", + "community": 498, + "norm_label": "teststocksapihealth", + "id": "tests_test_controllers_coverage_teststocksapihealth" }, { - "label": ".test_unknown_browser()", + "label": ".test_health()", "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L63", - "community": 1, - "norm_label": ".test_unknown_browser()", - "id": "tests_test_device_coverage_testdetectbrowser_test_unknown_browser" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1147", + "community": 498, + "norm_label": ".test_health()", + "id": "tests_test_controllers_coverage_teststocksapihealth_test_health" }, { - "label": "TestDetectOS", + "label": "TestStocksApiHistorical", "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L68", - "community": 1, - "norm_label": "testdetectos", - "id": "tests_test_device_coverage_testdetectos" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1158", + "community": 14, + "norm_label": "teststocksapihistorical", + "id": "tests_test_controllers_coverage_teststocksapihistorical" }, { - "label": ".test_windows_10()", + "label": ".test_get_historical()", "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L69", - "community": 1, - "norm_label": ".test_windows_10()", - "id": "tests_test_device_coverage_testdetectos_test_windows_10" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1161", + "community": 14, + "norm_label": ".test_get_historical()", + "id": "tests_test_controllers_coverage_teststocksapihistorical_test_get_historical" }, { - "label": ".test_windows_81()", + "label": "TestStocksApiFundamental", "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L76", - "community": 1, - "norm_label": ".test_windows_81()", - "id": "tests_test_device_coverage_testdetectos_test_windows_81" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1172", + "community": 14, + "norm_label": "teststocksapifundamental", + "id": "tests_test_controllers_coverage_teststocksapifundamental" }, { - "label": ".test_windows_8()", + "label": ".test_get_fundamental()", "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L80", - "community": 1, - "norm_label": ".test_windows_8()", - "id": "tests_test_device_coverage_testdetectos_test_windows_8" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1175", + "community": 14, + "norm_label": ".test_get_fundamental()", + "id": "tests_test_controllers_coverage_teststocksapifundamental_test_get_fundamental" }, { - "label": ".test_windows_7()", + "label": "TestStocksApiGenerateKey", "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L84", - "community": 1, - "norm_label": ".test_windows_7()", - "id": "tests_test_device_coverage_testdetectos_test_windows_7" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1186", + "community": 14, + "norm_label": "teststocksapigeneratekey", + "id": "tests_test_controllers_coverage_teststocksapigeneratekey" }, { - "label": ".test_windows_phone()", + "label": ".test_generate_key_permission_error()", "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L88", - "community": 1, - "norm_label": ".test_windows_phone()", - "id": "tests_test_device_coverage_testdetectos_test_windows_phone" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1194", + "community": 14, + "norm_label": ".test_generate_key_permission_error()", + "id": "tests_test_controllers_coverage_teststocksapigeneratekey_test_generate_key_permission_error" }, { - "label": ".test_macos()", + "label": ".test_generate_key_admin_bypasses_permission_check()", "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L94", - "community": 1, - "norm_label": ".test_macos()", - "id": "tests_test_device_coverage_testdetectos_test_macos" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1202", + "community": 14, + "norm_label": ".test_generate_key_admin_bypasses_permission_check()", + "id": "tests_test_controllers_coverage_teststocksapigeneratekey_test_generate_key_admin_bypasses_permission_check" }, { - "label": ".test_ios()", + "label": ".test_generate_key_exception()", "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L100", - "community": 1, - "norm_label": ".test_ios()", - "id": "tests_test_device_coverage_testdetectos_test_ios" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1214", + "community": 14, + "norm_label": ".test_generate_key_exception()", + "id": "tests_test_controllers_coverage_teststocksapigeneratekey_test_generate_key_exception" }, { - "label": ".test_ipados()", + "label": "TestAddRoleToUser", "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L106", - "community": 1, - "norm_label": ".test_ipados()", - "id": "tests_test_device_coverage_testdetectos_test_ipados" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1229", + "community": 563, + "norm_label": "testaddroletouser", + "id": "tests_test_controllers_coverage_testaddroletouser" }, { - "label": ".test_android()", + "label": ".test_add_role_success()", "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L112", - "community": 1, - "norm_label": ".test_android()", - "id": "tests_test_device_coverage_testdetectos_test_android" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1232", + "community": 564, + "norm_label": ".test_add_role_success()", + "id": "tests_test_controllers_coverage_testaddroletouser_test_add_role_success" }, { - "label": ".test_linux()", + "label": ".test_add_role_already_has_role()", "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L118", - "community": 1, - "norm_label": ".test_linux()", - "id": "tests_test_device_coverage_testdetectos_test_linux" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1249", + "community": 568, + "norm_label": ".test_add_role_already_has_role()", + "id": "tests_test_controllers_coverage_testaddroletouser_test_add_role_already_has_role" }, { - "label": ".test_chrome_os()", + "label": ".test_add_role_user_not_found()", "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L122", - "community": 1, - "norm_label": ".test_chrome_os()", - "id": "tests_test_device_coverage_testdetectos_test_chrome_os" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1263", + "community": 528, + "norm_label": ".test_add_role_user_not_found()", + "id": "tests_test_controllers_coverage_testaddroletouser_test_add_role_user_not_found" }, { - "label": ".test_freebsd()", + "label": "TestGetCurrentUser", "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L126", - "community": 1, - "norm_label": ".test_freebsd()", - "id": "tests_test_device_coverage_testdetectos_test_freebsd" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1275", + "community": 493, + "norm_label": "testgetcurrentuser", + "id": "tests_test_controllers_coverage_testgetcurrentuser" }, { - "label": ".test_netbsd()", + "label": "._make_mock_request()", "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L130", - "community": 1, - "norm_label": ".test_netbsd()", - "id": "tests_test_device_coverage_testdetectos_test_netbsd" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1278", + "community": 493, + "norm_label": "._make_mock_request()", + "id": "tests_test_controllers_coverage_testgetcurrentuser_make_mock_request" }, { - "label": ".test_unknown_os()", + "label": ".test_get_current_user_valid_session()", "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L134", - "community": 1, - "norm_label": ".test_unknown_os()", - "id": "tests_test_device_coverage_testdetectos_test_unknown_os" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1282", + "community": 493, + "norm_label": ".test_get_current_user_valid_session()", + "id": "tests_test_controllers_coverage_testgetcurrentuser_test_get_current_user_valid_session" }, { - "label": "TestDetectDeviceType", + "label": ".test_get_current_user_session_revoked()", "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L139", - "community": 1, - "norm_label": "testdetectdevicetype", - "id": "tests_test_device_coverage_testdetectdevicetype" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1307", + "community": 569, + "norm_label": ".test_get_current_user_session_revoked()", + "id": "tests_test_controllers_coverage_testgetcurrentuser_test_get_current_user_session_revoked" }, { - "label": ".test_desktop()", + "label": ".test_get_current_user_not_found()", "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L140", - "community": 1, - "norm_label": ".test_desktop()", - "id": "tests_test_device_coverage_testdetectdevicetype_test_desktop" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1323", + "community": 546, + "norm_label": ".test_get_current_user_not_found()", + "id": "tests_test_controllers_coverage_testgetcurrentuser_test_get_current_user_not_found" }, { - "label": ".test_mobile_android()", + "label": ".test_get_current_user_generic_exception()", "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L143", - "community": 1, - "norm_label": ".test_mobile_android()", - "id": "tests_test_device_coverage_testdetectdevicetype_test_mobile_android" - }, - { - "label": ".test_mobile_iphone()", - "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L146", - "community": 1, - "norm_label": ".test_mobile_iphone()", - "id": "tests_test_device_coverage_testdetectdevicetype_test_mobile_iphone" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1340", + "community": 560, + "norm_label": ".test_get_current_user_generic_exception()", + "id": "tests_test_controllers_coverage_testgetcurrentuser_test_get_current_user_generic_exception" }, { - "label": ".test_mobile_ipod()", + "label": ".test_get_current_user_no_session_id()", "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L149", - "community": 1, - "norm_label": ".test_mobile_ipod()", - "id": "tests_test_device_coverage_testdetectdevicetype_test_mobile_ipod" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1357", + "community": 561, + "norm_label": ".test_get_current_user_no_session_id()", + "id": "tests_test_controllers_coverage_testgetcurrentuser_test_get_current_user_no_session_id" }, { - "label": ".test_mobile_windows_phone()", + "label": "TestHashPasswordEmpty", "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L152", - "community": 1, - "norm_label": ".test_mobile_windows_phone()", - "id": "tests_test_device_coverage_testdetectdevicetype_test_mobile_windows_phone" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1381", + "community": 45, + "norm_label": "testhashpasswordempty", + "id": "tests_test_controllers_coverage_testhashpasswordempty" }, { - "label": ".test_mobile_blackberry()", + "label": ".test_empty_password_raises()", "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L155", - "community": 1, - "norm_label": ".test_mobile_blackberry()", - "id": "tests_test_device_coverage_testdetectdevicetype_test_mobile_blackberry" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1384", + "community": 43, + "norm_label": ".test_empty_password_raises()", + "id": "tests_test_controllers_coverage_testhashpasswordempty_test_empty_password_raises" }, { - "label": ".test_tablet_ipad()", + "label": "TestVerifyAccessToken", "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L158", - "community": 1, - "norm_label": ".test_tablet_ipad()", - "id": "tests_test_device_coverage_testdetectdevicetype_test_tablet_ipad" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1391", + "community": 524, + "norm_label": "testverifyaccesstoken", + "id": "tests_test_controllers_coverage_testverifyaccesstoken" }, { - "label": ".test_tablet_tab()", + "label": ".test_expired_token()", "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L161", - "community": 1, - "norm_label": ".test_tablet_tab()", - "id": "tests_test_device_coverage_testdetectdevicetype_test_tablet_tab" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1394", + "community": 524, + "norm_label": ".test_expired_token()", + "id": "tests_test_controllers_coverage_testverifyaccesstoken_test_expired_token" }, { - "label": ".test_tablet_sm_t()", + "label": ".test_invalid_token()", "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L164", - "community": 1, - "norm_label": ".test_tablet_sm_t()", - "id": "tests_test_device_coverage_testdetectdevicetype_test_tablet_sm_t" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1410", + "community": 524, + "norm_label": ".test_invalid_token()", + "id": "tests_test_controllers_coverage_testverifyaccesstoken_test_invalid_token" }, { - "label": ".test_kindle()", + "label": "TestExtractTokenPayloadReRaise", "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L167", - "community": 1, - "norm_label": ".test_kindle()", - "id": "tests_test_device_coverage_testdetectdevicetype_test_kindle" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1422", + "community": 114, + "norm_label": "testextracttokenpayloadreraise", + "id": "tests_test_controllers_coverage_testextracttokenpayloadreraise" }, { - "label": "TestGenerateFingerprint", + "label": ".test_http_exception_from_verify_propagates()", "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L171", - "community": 1, - "norm_label": "testgeneratefingerprint", - "id": "tests_test_device_coverage_testgeneratefingerprint" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1425", + "community": 114, + "norm_label": ".test_http_exception_from_verify_propagates()", + "id": "tests_test_controllers_coverage_testextracttokenpayloadreraise_test_http_exception_from_verify_propagates" }, { - "label": ".test_basic()", + "label": "TestManagerInit", "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L172", - "community": 1, - "norm_label": ".test_basic()", - "id": "tests_test_device_coverage_testgeneratefingerprint_test_basic" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1441", + "community": 498, + "norm_label": "testmanagerinit", + "id": "tests_test_controllers_coverage_testmanagerinit" }, { - "label": ".test_with_language()", + "label": ".test_manager_init()", "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L177", - "community": 1, - "norm_label": ".test_with_language()", - "id": "tests_test_device_coverage_testgeneratefingerprint_test_with_language" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1444", + "community": 498, + "norm_label": ".test_manager_init()", + "id": "tests_test_controllers_coverage_testmanagerinit_test_manager_init" }, { - "label": ".test_different_inputs_different_hash()", - "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L181", - "community": 1, - "norm_label": ".test_different_inputs_different_hash()", - "id": "tests_test_device_coverage_testgeneratefingerprint_test_different_inputs_different_hash" + "label": "Tests to cover uncovered lines across controllers, UserManager, and auth util.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1", + "community": 120, + "norm_label": "tests to cover uncovered lines across controllers, usermanager, and auth util.", + "id": "tests_test_controllers_coverage_rationale_1" }, { - "label": "TestParseUserAgent", - "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L187", - "community": 1, - "norm_label": "testparseuseragent", - "id": "tests_test_device_coverage_testparseuseragent" + "label": "Return (client, app) with auth + user routers and mocked getSession.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L23", + "community": 120, + "norm_label": "return (client, app) with auth + user routers and mocked getsession.", + "id": "tests_test_controllers_coverage_rationale_23" }, { - "label": ".test_empty_ua()", - "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L188", - "community": 1, - "norm_label": ".test_empty_ua()", - "id": "tests_test_device_coverage_testparseuseragent_test_empty_ua" + "label": "Return (client, app) with user router and mocked deps.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L39", + "community": 47, + "norm_label": "return (client, app) with user router and mocked deps.", + "id": "tests_test_controllers_coverage_rationale_39" }, { - "label": ".test_none_ua()", - "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L195", - "community": 1, - "norm_label": ".test_none_ua()", - "id": "tests_test_device_coverage_testparseuseragent_test_none_ua" + "label": "Return (client, app) with prometheus router and mocked deps.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L58", + "community": 99, + "norm_label": "return (client, app) with prometheus router and mocked deps.", + "id": "tests_test_controllers_coverage_rationale_58" }, { - "label": ".test_full_chrome_windows()", - "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L200", - "community": 1, - "norm_label": ".test_full_chrome_windows()", - "id": "tests_test_device_coverage_testparseuseragent_test_full_chrome_windows" + "label": "Return (client, app) with stocks router and mocked deps.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L79", + "community": 14, + "norm_label": "return (client, app) with stocks router and mocked deps.", + "id": "tests_test_controllers_coverage_rationale_79" }, { - "label": ".test_full_safari_macos()", - "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L207", - "community": 1, - "norm_label": ".test_full_safari_macos()", - "id": "tests_test_device_coverage_testparseuseragent_test_full_safari_macos" + "label": "Covers line 23: isSecureScheme helper.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L106", + "community": 58, + "norm_label": "covers line 23: issecurescheme helper.", + "id": "tests_test_controllers_coverage_rationale_106" }, { - "label": "Tests for main/app/authentication/device.py \u2014 covers all branches.", + "label": "Covers line 28: GET /auth/health.", "file_type": "rationale", - "source_file": "tests/test_device_coverage.py", - "source_location": "L1", - "community": 1, - "norm_label": "tests for main/app/authentication/device.py \u2014 covers all branches.", - "id": "tests_test_device_coverage_rationale_1" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L131", + "community": 45, + "norm_label": "covers line 28: get /auth/health.", + "id": "tests_test_controllers_coverage_rationale_131" }, { - "label": "test_error_handlers.py", - "file_type": "code", - "source_file": "tests/test_error_handlers.py", - "source_location": "L1", - "community": 33, - "norm_label": "test_error_handlers.py", - "id": "tests_test_error_handlers_py" + "label": "Covers lines 44-54, 63, 66-71: register success, ValueError, generic Exception.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L147", + "community": 120, + "norm_label": "covers lines 44-54, 63, 66-71: register success, valueerror, generic exception.", + "id": "tests_test_controllers_coverage_rationale_147" }, { - "label": "SampleBody", - "file_type": "code", - "source_file": "tests/test_error_handlers.py", - "source_location": "L20", - "community": 33, - "norm_label": "samplebody", - "id": "tests_test_error_handlers_samplebody" + "label": "Covers lines 44-54, 63: successful registration + auto-login.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L153", + "community": 281, + "norm_label": "covers lines 44-54, 63: successful registration + auto-login.", + "id": "tests_test_controllers_coverage_rationale_153" }, { - "label": "app()", - "file_type": "code", - "source_file": "tests/test_error_handlers.py", - "source_location": "L25", - "community": 104, - "norm_label": "app()", - "id": "tests_test_error_handlers_app" + "label": "Covers line 46: auto-login fails after registration.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L179", + "community": 282, + "norm_label": "covers line 46: auto-login fails after registration.", + "id": "tests_test_controllers_coverage_rationale_179" }, { - "label": "client()", - "file_type": "code", - "source_file": "tests/test_error_handlers.py", - "source_location": "L50", - "community": 33, - "norm_label": "client()", - "id": "tests_test_error_handlers_client" + "label": "Covers lines 66-68: ValueError during registration.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L192", + "community": 283, + "norm_label": "covers lines 66-68: valueerror during registration.", + "id": "tests_test_controllers_coverage_rationale_192" }, { - "label": "TestErrorResponseModel", - "file_type": "code", - "source_file": "tests/test_error_handlers.py", - "source_location": "L54", - "community": 33, - "norm_label": "testerrorresponsemodel", - "id": "tests_test_error_handlers_testerrorresponsemodel" + "label": "Covers lines 69-71: generic Exception during registration.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L204", + "community": 284, + "norm_label": "covers lines 69-71: generic exception during registration.", + "id": "tests_test_controllers_coverage_rationale_204" }, { - "label": ".test_error_response_structure()", - "file_type": "code", - "source_file": "tests/test_error_handlers.py", - "source_location": "L55", - "community": 33, - "norm_label": ".test_error_response_structure()", - "id": "tests_test_error_handlers_testerrorresponsemodel_test_error_response_structure" + "label": "Covers lines 87-93, 102: login success and failure paths.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L216", + "community": 120, + "norm_label": "covers lines 87-93, 102: login success and failure paths.", + "id": "tests_test_controllers_coverage_rationale_216" }, { - "label": ".test_error_response_with_detail_and_request_id()", - "file_type": "code", - "source_file": "tests/test_error_handlers.py", - "source_location": "L65", - "community": 33, - "norm_label": ".test_error_response_with_detail_and_request_id()", - "id": "tests_test_error_handlers_testerrorresponsemodel_test_error_response_with_detail_and_request_id" + "label": "Covers lines 87-93, 102: successful login.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L222", + "community": 285, + "norm_label": "covers lines 87-93, 102: successful login.", + "id": "tests_test_controllers_coverage_rationale_222" }, { - "label": "TestRequestContextFilter", - "file_type": "code", - "source_file": "tests/test_error_handlers.py", - "source_location": "L79", - "community": 33, - "norm_label": "testrequestcontextfilter", - "id": "tests_test_error_handlers_testrequestcontextfilter" + "label": "Covers line 85: authenticateUser returns None.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L244", + "community": 286, + "norm_label": "covers line 85: authenticateuser returns none.", + "id": "tests_test_controllers_coverage_rationale_244" }, { - "label": ".test_injects_request_id_from_contextvar()", - "file_type": "code", - "source_file": "tests/test_error_handlers.py", - "source_location": "L80", - "community": 33, - "norm_label": ".test_injects_request_id_from_contextvar()", - "id": "tests_test_error_handlers_testrequestcontextfilter_test_injects_request_id_from_contextvar" + "label": "Covers lines 107, 109-130, 133: logout token extraction and revocation.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L258", + "community": 120, + "norm_label": "covers lines 107, 109-130, 133: logout token extraction and revocation.", + "id": "tests_test_controllers_coverage_rationale_258" }, { - "label": ".test_empty_request_id_default()", - "file_type": "code", - "source_file": "tests/test_error_handlers.py", - "source_location": "L89", - "community": 33, - "norm_label": ".test_empty_request_id_default()", - "id": "tests_test_error_handlers_testrequestcontextfilter_test_empty_request_id_default" + "label": "Covers lines 109, 115-125: logout with X-Access-Token header.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L264", + "community": 287, + "norm_label": "covers lines 109, 115-125: logout with x-access-token header.", + "id": "tests_test_controllers_coverage_rationale_264" }, { - "label": "TestHTTPExceptionHandler", - "file_type": "code", - "source_file": "tests/test_error_handlers.py", - "source_location": "L99", - "community": 33, - "norm_label": "testhttpexceptionhandler", - "id": "tests_test_error_handlers_testhttpexceptionhandler" + "label": "Covers lines 111-113: token extracted from Authorization Bearer header.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L281", + "community": 120, + "norm_label": "covers lines 111-113: token extracted from authorization bearer header.", + "id": "tests_test_controllers_coverage_rationale_281" }, { - "label": ".test_returns_structured_error()", - "file_type": "code", - "source_file": "tests/test_error_handlers.py", - "source_location": "L100", - "community": 33, - "norm_label": ".test_returns_structured_error()", - "id": "tests_test_error_handlers_testhttpexceptionhandler_test_returns_structured_error" + "label": "sessionId is a string \u2014 revokeSession receives it as-is (str type).", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L296", + "community": 288, + "norm_label": "sessionid is a string \u2014 revokesession receives it as-is (str type).", + "id": "tests_test_controllers_coverage_rationale_296" }, { - "label": ".test_includes_request_id_header()", - "file_type": "code", - "source_file": "tests/test_error_handlers.py", - "source_location": "L109", - "community": 33, - "norm_label": ".test_includes_request_id_header()", - "id": "tests_test_error_handlers_testhttpexceptionhandler_test_includes_request_id_header" + "label": "Covers lines 126-128: verifyAccessToken raises Exception.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L310", + "community": 289, + "norm_label": "covers lines 126-128: verifyaccesstoken raises exception.", + "id": "tests_test_controllers_coverage_rationale_310" }, { - "label": "TestValidationExceptionHandler", - "file_type": "code", - "source_file": "tests/test_error_handlers.py", - "source_location": "L115", - "community": 33, - "norm_label": "testvalidationexceptionhandler", - "id": "tests_test_error_handlers_testvalidationexceptionhandler" + "label": "Covers lines 109-113: no token provided at all.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L322", + "community": 290, + "norm_label": "covers lines 109-113: no token provided at all.", + "id": "tests_test_controllers_coverage_rationale_322" }, { - "label": ".test_returns_422_for_invalid_input()", - "file_type": "code", - "source_file": "tests/test_error_handlers.py", - "source_location": "L116", - "community": 33, - "norm_label": ".test_returns_422_for_invalid_input()", - "id": "tests_test_error_handlers_testvalidationexceptionhandler_test_returns_422_for_invalid_input" + "label": "Covers line 120: userId or sessionId missing from payload.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L333", + "community": 291, + "norm_label": "covers line 120: userid or sessionid missing from payload.", + "id": "tests_test_controllers_coverage_rationale_333" }, { - "label": ".test_returns_422_for_missing_body()", - "file_type": "code", - "source_file": "tests/test_error_handlers.py", - "source_location": "L124", - "community": 33, - "norm_label": ".test_returns_422_for_missing_body()", - "id": "tests_test_error_handlers_testvalidationexceptionhandler_test_returns_422_for_missing_body" + "label": "Covers lines 139, 141-149: googleLogin endpoint.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L345", + "community": 45, + "norm_label": "covers lines 139, 141-149: googlelogin endpoint.", + "id": "tests_test_controllers_coverage_rationale_345" }, { - "label": ".test_valid_input_passes()", - "file_type": "code", - "source_file": "tests/test_error_handlers.py", - "source_location": "L131", - "community": 33, - "norm_label": ".test_valid_input_passes()", - "id": "tests_test_error_handlers_testvalidationexceptionhandler_test_valid_input_passes" + "label": "Covers lines 139, 141-149: Google login with redirect_url query param.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L349", + "community": 292, + "norm_label": "covers lines 139, 141-149: google login with redirect_url query param.", + "id": "tests_test_controllers_coverage_rationale_349" }, { - "label": "TestGenericExceptionHandler", - "file_type": "code", - "source_file": "tests/test_error_handlers.py", - "source_location": "L137", - "community": 33, - "norm_label": "testgenericexceptionhandler", - "id": "tests_test_error_handlers_testgenericexceptionhandler" + "label": "Covers line 143: redirect_url falls back to referer header.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L369", + "community": 293, + "norm_label": "covers line 143: redirect_url falls back to referer header.", + "id": "tests_test_controllers_coverage_rationale_369" }, { - "label": ".test_returns_500_for_unhandled()", - "file_type": "code", - "source_file": "tests/test_error_handlers.py", - "source_location": "L138", - "community": 33, - "norm_label": ".test_returns_500_for_unhandled()", - "id": "tests_test_error_handlers_testgenericexceptionhandler_test_returns_500_for_unhandled" + "label": "Covers lines 155-156, 158, 160-168, 170-177, 179-184, 186, 190-204: googleCallba", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L391", + "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" }, { - "label": "TestSuccessPassthrough", - "file_type": "code", - "source_file": "tests/test_error_handlers.py", - "source_location": "L147", - "community": 33, - "norm_label": "testsuccesspassthrough", - "id": "tests_test_error_handlers_testsuccesspassthrough" + "label": "Covers lines 160-168, 170-177, 179-184, 186, 197-198: new Google user.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L398", + "community": 294, + "norm_label": "covers lines 160-168, 170-177, 179-184, 186, 197-198: new google user.", + "id": "tests_test_controllers_coverage_rationale_398" }, { - "label": ".test_ok_route_unaffected()", - "file_type": "code", - "source_file": "tests/test_error_handlers.py", - "source_location": "L148", - "community": 33, - "norm_label": ".test_ok_route_unaffected()", - "id": "tests_test_error_handlers_testsuccesspassthrough_test_ok_route_unaffected" + "label": "Covers lines 164, 171-173: existing Google user, no new account created.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L434", + "community": 295, + "norm_label": "covers lines 164, 171-173: existing google user, no new account created.", + "id": "tests_test_controllers_coverage_rationale_434" }, { - "label": "Tests for standardized error responses (errors.py).", + "label": "Covers line 165: verify_and_process returns None.", "file_type": "rationale", - "source_file": "tests/test_error_handlers.py", - "source_location": "L1", - "community": 33, - "norm_label": "tests for standardized error responses (errors.py).", - "id": "tests_test_error_handlers_rationale_1" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L461", + "community": 296, + "norm_label": "covers line 165: verify_and_process returns none.", + "id": "tests_test_controllers_coverage_rationale_461" }, { - "label": "test_events.py", - "file_type": "code", - "source_file": "tests/test_events.py", - "source_location": "L1", - "community": 12, - "norm_label": "test_events.py", - "id": "tests_test_events_py" + "label": "Covers redirect path: sso_redirect cookie triggers RedirectResponse.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L478", + "community": 297, + "norm_label": "covers redirect path: sso_redirect cookie triggers redirectresponse.", + "id": "tests_test_controllers_coverage_rationale_478" }, { - "label": "TestLoopLogger", - "file_type": "code", - "source_file": "tests/test_events.py", - "source_location": "L6", - "community": 12, - "norm_label": "testlooplogger", - "id": "tests_test_events_testlooplogger" + "label": "Covers lines 202-204: generic Exception in callback.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L511", + "community": 298, + "norm_label": "covers lines 202-204: generic exception in callback.", + "id": "tests_test_controllers_coverage_rationale_511" }, { - "label": ".test_init_with_empty_history()", - "file_type": "code", - "source_file": "tests/test_events.py", - "source_location": "L7", - "community": 12, - "norm_label": ".test_init_with_empty_history()", - "id": "tests_test_events_testlooplogger_test_init_with_empty_history" + "label": "Covers line 19: GET /user/health.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L528", + "community": 498, + "norm_label": "covers line 19: get /user/health.", + "id": "tests_test_controllers_coverage_rationale_528" }, { - "label": ".test_emit_tool_call_appends_to_history()", - "file_type": "code", - "source_file": "tests/test_events.py", - "source_location": "L12", - "community": 12, - "norm_label": ".test_emit_tool_call_appends_to_history()", - "id": "tests_test_events_testlooplogger_test_emit_tool_call_appends_to_history" + "label": "Covers line 24: GET /user/me returns currentUser.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L542", + "community": 47, + "norm_label": "covers line 24: get /user/me returns currentuser.", + "id": "tests_test_controllers_coverage_rationale_542" }, { - "label": ".test_emit_tool_result_appends_to_history()", - "file_type": "code", - "source_file": "tests/test_events.py", - "source_location": "L24", - "community": 12, - "norm_label": ".test_emit_tool_result_appends_to_history()", - "id": "tests_test_events_testlooplogger_test_emit_tool_result_appends_to_history" + "label": "Covers lines 31-32, 36, 43-44, 48: upgrade developer starter/enterprise.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L556", + "community": 47, + "norm_label": "covers lines 31-32, 36, 43-44, 48: upgrade developer starter/enterprise.", + "id": "tests_test_controllers_coverage_rationale_556" }, { - "label": ".test_emit_turn_end_appends_to_history()", - "file_type": "code", - "source_file": "tests/test_events.py", - "source_location": "L33", - "community": 12, - "norm_label": ".test_emit_turn_end_appends_to_history()", - "id": "tests_test_events_testlooplogger_test_emit_turn_end_appends_to_history" + "label": "Covers lines 53-54, 56: admin access granted / denied.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L596", + "community": 47, + "norm_label": "covers lines 53-54, 56: admin access granted / denied.", + "id": "tests_test_controllers_coverage_rationale_596" }, { - "label": ".test_flush_is_noop()", - "file_type": "code", - "source_file": "tests/test_events.py", - "source_location": "L42", - "community": 12, - "norm_label": ".test_flush_is_noop()", - "id": "tests_test_events_testlooplogger_test_flush_is_noop" + "label": "Covers lines 66, 68-72, 74: GET /user/sessions.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L615", + "community": 178, + "norm_label": "covers lines 66, 68-72, 74: get /user/sessions.", + "id": "tests_test_controllers_coverage_rationale_615" }, { - "label": ".test_multiple_events_preserve_order()", - "file_type": "code", - "source_file": "tests/test_events.py", - "source_location": "L49", - "community": 12, - "norm_label": ".test_multiple_events_preserve_order()", - "id": "tests_test_events_testlooplogger_test_multiple_events_preserve_order" + "label": "Covers lines 66, 68-72, 74: full sessions listing.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L618", + "community": 178, + "norm_label": "covers lines 66, 68-72, 74: full sessions listing.", + "id": "tests_test_controllers_coverage_rationale_618" }, { - "label": ".test_events_share_history_with_chat_messages()", - "file_type": "code", - "source_file": "tests/test_events.py", - "source_location": "L58", - "community": 12, - "norm_label": ".test_events_share_history_with_chat_messages()", - "id": "tests_test_events_testlooplogger_test_events_share_history_with_chat_messages" + "label": "Covers lines 100-104, 106: GET /user/sessions/current.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L669", + "community": 107, + "norm_label": "covers lines 100-104, 106: get /user/sessions/current.", + "id": "tests_test_controllers_coverage_rationale_669" }, { - "label": ".test_emit_turn_end_with_default_tools_used()", - "file_type": "code", - "source_file": "tests/test_events.py", - "source_location": "L74", - "community": 12, - "norm_label": ".test_emit_turn_end_with_default_tools_used()", - "id": "tests_test_events_testlooplogger_test_emit_turn_end_with_default_tools_used" + "label": "Covers lines 100-104, 106: session found.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L672", + "community": 107, + "norm_label": "covers lines 100-104, 106: session found.", + "id": "tests_test_controllers_coverage_rationale_672" }, { - "label": "Tests for LoopLogger \u2014 appends events to history JSON list.", + "label": "Covers line 104: session not found.", "file_type": "rationale", - "source_file": "tests/test_events.py", - "source_location": "L1", - "community": 12, - "norm_label": "tests for looplogger \u2014 appends events to history json list.", - "id": "tests_test_events_rationale_1" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L705", + "community": 107, + "norm_label": "covers line 104: session not found.", + "id": "tests_test_controllers_coverage_rationale_705" }, { - "label": "Loop events coexist with user/assistant messages in the same history list.", + "label": "Covers lines 126-136: DELETE /user/sessions/{sessionId}.", "file_type": "rationale", - "source_file": "tests/test_events.py", - "source_location": "L59", - "community": 12, - "norm_label": "loop events coexist with user/assistant messages in the same history list.", - "id": "tests_test_events_rationale_59" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L728", + "community": 104, + "norm_label": "covers lines 126-136: delete /user/sessions/{sessionid}.", + "id": "tests_test_controllers_coverage_rationale_728" }, { - "label": "test_harness_state.py", - "file_type": "code", - "source_file": "tests/test_harness_state.py", - "source_location": "L1", - "community": 93, - "norm_label": "test_harness_state.py", - "id": "tests_test_harness_state_py" + "label": "Covers lines 126, 131, 135-136.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L731", + "community": 104, + "norm_label": "covers lines 126, 131, 135-136.", + "id": "tests_test_controllers_coverage_rationale_731" }, { - "label": "TestHarnessState", - "file_type": "code", - "source_file": "tests/test_harness_state.py", - "source_location": "L5", - "community": 8, - "norm_label": "testharnessstate", - "id": "tests_test_harness_state_testharnessstate" + "label": "Covers lines 127-129: session not found.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L758", + "community": 104, + "norm_label": "covers lines 127-129: session not found.", + "id": "tests_test_controllers_coverage_rationale_758" }, { - "label": ".test_get_returns_none_when_empty()", - "file_type": "code", - "source_file": "tests/test_harness_state.py", - "source_location": "L6", - "community": 8, - "norm_label": ".test_get_returns_none_when_empty()", - "id": "tests_test_harness_state_testharnessstate_test_get_returns_none_when_empty" + "label": "Covers lines 132-133: revokeSession returns False.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L780", + "community": 104, + "norm_label": "covers lines 132-133: revokesession returns false.", + "id": "tests_test_controllers_coverage_rationale_780" }, { - "label": ".test_get_returns_default_when_empty()", - "file_type": "code", - "source_file": "tests/test_harness_state.py", - "source_location": "L10", - "community": 8, - "norm_label": ".test_get_returns_default_when_empty()", - "id": "tests_test_harness_state_testharnessstate_test_get_returns_default_when_empty" + "label": "Covers lines 143, 145, 147-148: POST /user/sessions/revoke-all.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L806", + "community": 221, + "norm_label": "covers lines 143, 145, 147-148: post /user/sessions/revoke-all.", + "id": "tests_test_controllers_coverage_rationale_806" }, { - "label": ".test_set_and_get()", - "file_type": "code", - "source_file": "tests/test_harness_state.py", - "source_location": "L14", - "community": 8, - "norm_label": ".test_set_and_get()", - "id": "tests_test_harness_state_testharnessstate_test_set_and_get" + "label": "Covers lines 143, 145, 147-148.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L809", + "community": 221, + "norm_label": "covers lines 143, 145, 147-148.", + "id": "tests_test_controllers_coverage_rationale_809" }, { - "label": ".test_set_overwrites()", - "file_type": "code", - "source_file": "tests/test_harness_state.py", - "source_location": "L19", - "community": 8, - "norm_label": ".test_set_overwrites()", - "id": "tests_test_harness_state_testharnessstate_test_set_overwrites" + "label": "Covers line 24: GET /prometheus/health.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L836", + "community": 498, + "norm_label": "covers line 24: get /prometheus/health.", + "id": "tests_test_controllers_coverage_rationale_836" }, { - "label": ".test_has_changed_true_after_set()", - "file_type": "code", - "source_file": "tests/test_harness_state.py", - "source_location": "L25", - "community": 8, - "norm_label": ".test_has_changed_true_after_set()", - "id": "tests_test_harness_state_testharnessstate_test_has_changed_true_after_set" + "label": "Covers lines 33-36: GET /prometheus/sessions.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L850", + "community": 99, + "norm_label": "covers lines 33-36: get /prometheus/sessions.", + "id": "tests_test_controllers_coverage_rationale_850" }, { - "label": ".test_has_changed_false_after_reset()", - "file_type": "code", - "source_file": "tests/test_harness_state.py", - "source_location": "L31", - "community": 8, - "norm_label": ".test_has_changed_false_after_reset()", - "id": "tests_test_harness_state_testharnessstate_test_has_changed_false_after_reset" + "label": "Covers line 52: POST /prometheus/sessions.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L868", + "community": 99, + "norm_label": "covers line 52: post /prometheus/sessions.", + "id": "tests_test_controllers_coverage_rationale_868" }, { - "label": ".test_toDict_returns_copy()", - "file_type": "code", - "source_file": "tests/test_harness_state.py", - "source_location": "L37", - "community": 8, - "norm_label": ".test_todict_returns_copy()", - "id": "tests_test_harness_state_testharnessstate_test_toDict_returns_copy" + "label": "Covers lines 62-63, 65-68: PUT /prometheus/sessions/{sessionId}.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L882", + "community": 99, + "norm_label": "covers lines 62-63, 65-68: put /prometheus/sessions/{sessionid}.", + "id": "tests_test_controllers_coverage_rationale_882" }, { - "label": ".test_toContext_empty_when_no_data()", - "file_type": "code", - "source_file": "tests/test_harness_state.py", - "source_location": "L44", - "community": 8, - "norm_label": ".test_tocontext_empty_when_no_data()", - "id": "tests_test_harness_state_testharnessstate_test_toContext_empty_when_no_data" + "label": "Covers lines 65-68: title updated successfully.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L885", + "community": 99, + "norm_label": "covers lines 65-68: title updated successfully.", + "id": "tests_test_controllers_coverage_rationale_885" }, { - "label": ".test_toContext_formats_entries()", - "file_type": "code", - "source_file": "tests/test_harness_state.py", - "source_location": "L48", - "community": 8, - "norm_label": ".test_tocontext_formats_entries()", - "id": "tests_test_harness_state_testharnessstate_test_toContext_formats_entries" + "label": "Covers lines 62-63: not the session owner.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L896", + "community": 99, + "norm_label": "covers lines 62-63: not the session owner.", + "id": "tests_test_controllers_coverage_rationale_896" }, { - "label": ".test_clear_resets_all()", - "file_type": "code", - "source_file": "tests/test_harness_state.py", - "source_location": "L56", - "community": 8, - "norm_label": ".test_clear_resets_all()", - "id": "tests_test_harness_state_testharnessstate_test_clear_resets_all" + "label": "Covers lines 66-67: session not found.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L905", + "community": 99, + "norm_label": "covers lines 66-67: session not found.", + "id": "tests_test_controllers_coverage_rationale_905" }, { - "label": "test_http_session_coverage.py", - "file_type": "code", - "source_file": "tests/test_http_session_coverage.py", - "source_location": "L1", - "community": 186, - "norm_label": "test_http_session_coverage.py", - "id": "tests_test_http_session_coverage_py" + "label": "Covers lines 77, 83-84, 86: GET /prometheus/history/{sessionId}.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L916", + "community": 104, + "norm_label": "covers lines 77, 83-84, 86: get /prometheus/history/{sessionid}.", + "id": "tests_test_controllers_coverage_rationale_916" }, { - "label": "TestGetSession", - "file_type": "code", - "source_file": "tests/test_http_session_coverage.py", - "source_location": "L8", - "community": 186, - "norm_label": "testgetsession", - "id": "tests_test_http_session_coverage_testgetsession" + "label": "Covers lines 77, 86: session found with history.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L919", + "community": 104, + "norm_label": "covers lines 77, 86: session found with history.", + "id": "tests_test_controllers_coverage_rationale_919" }, { - "label": ".test_returns_same_session()", - "file_type": "code", - "source_file": "tests/test_http_session_coverage.py", - "source_location": "L9", - "community": 186, - "norm_label": ".test_returns_same_session()", - "id": "tests_test_http_session_coverage_testgetsession_test_returns_same_session" + "label": "Covers lines 83-84: session not found.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L963", + "community": 104, + "norm_label": "covers lines 83-84: session not found.", + "id": "tests_test_controllers_coverage_rationale_963" }, { - "label": ".test_returns_requests_session()", - "file_type": "code", - "source_file": "tests/test_http_session_coverage.py", - "source_location": "L16", - "community": 186, - "norm_label": ".test_returns_requests_session()", - "id": "tests_test_http_session_coverage_testgetsession_test_returns_requests_session" + "label": "Covers lines 95-98: DELETE /prometheus/sessions/{sessionId}.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L998", + "community": 231, + "norm_label": "covers lines 95-98: delete /prometheus/sessions/{sessionid}.", + "id": "tests_test_controllers_coverage_rationale_998" }, { - "label": "Tests for main/utils/http_session.py \u2014 covers all branches.", + "label": "Covers lines 95-98: session deleted.", "file_type": "rationale", - "source_file": "tests/test_http_session_coverage.py", - "source_location": "L1", - "community": 186, - "norm_label": "tests for main/utils/http_session.py \u2014 covers all branches.", - "id": "tests_test_http_session_coverage_rationale_1" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1001", + "community": 231, + "norm_label": "covers lines 95-98: session deleted.", + "id": "tests_test_controllers_coverage_rationale_1001" }, { - "label": "test_input_validation.py", - "file_type": "code", - "source_file": "tests/test_input_validation.py", - "source_location": "L1", - "community": 25, - "norm_label": "test_input_validation.py", - "id": "tests_test_input_validation_py" + "label": "Covers lines 96-97: session not found.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1011", + "community": 231, + "norm_label": "covers lines 96-97: session not found.", + "id": "tests_test_controllers_coverage_rationale_1011" }, { - "label": "TestRegisterValidation", - "file_type": "code", - "source_file": "tests/test_input_validation.py", - "source_location": "L14", - "community": 25, - "norm_label": "testregistervalidation", - "id": "tests_test_input_validation_testregistervalidation" + "label": "Covers lines 109-136: POST /prometheus/chat/stream (SSE).", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1021", + "community": 16, + "norm_label": "covers lines 109-136: post /prometheus/chat/stream (sse).", + "id": "tests_test_controllers_coverage_rationale_1021" }, { - "label": ".test_valid_registration()", - "file_type": "code", - "source_file": "tests/test_input_validation.py", - "source_location": "L17", - "community": 25, - "norm_label": ".test_valid_registration()", - "id": "tests_test_input_validation_testregistervalidation_test_valid_registration" + "label": "Covers lines 118-119: sessionId is None, new session created.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1024", + "community": 16, + "norm_label": "covers lines 118-119: sessionid is none, new session created.", + "id": "tests_test_controllers_coverage_rationale_1024" }, { - "label": ".test_username_too_short()", - "file_type": "code", - "source_file": "tests/test_input_validation.py", - "source_location": "L25", - "community": 25, - "norm_label": ".test_username_too_short()", - "id": "tests_test_input_validation_testregistervalidation_test_username_too_short" + "label": "Covers lines 120-121: existing session with verified ownership.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1043", + "community": 16, + "norm_label": "covers lines 120-121: existing session with verified ownership.", + "id": "tests_test_controllers_coverage_rationale_1043" }, { - "label": ".test_username_too_long()", - "file_type": "code", - "source_file": "tests/test_input_validation.py", - "source_location": "L32", - "community": 25, - "norm_label": ".test_username_too_long()", - "id": "tests_test_input_validation_testregistervalidation_test_username_too_long" + "label": "Covers lines 120-121: session ownership check fails.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1086", + "community": 16, + "norm_label": "covers lines 120-121: session ownership check fails.", + "id": "tests_test_controllers_coverage_rationale_1086" }, { - "label": ".test_email_too_short()", - "file_type": "code", - "source_file": "tests/test_input_validation.py", - "source_location": "L39", - "community": 25, - "norm_label": ".test_email_too_short()", - "id": "tests_test_input_validation_testregistervalidation_test_email_too_short" + "label": "Generic Exception in chat propagates via SSE error event.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1122", + "community": 16, + "norm_label": "generic exception in chat propagates via sse error event.", + "id": "tests_test_controllers_coverage_rationale_1122" }, { - "label": ".test_password_too_short()", - "file_type": "code", - "source_file": "tests/test_input_validation.py", - "source_location": "L46", - "community": 25, - "norm_label": ".test_password_too_short()", - "id": "tests_test_input_validation_testregistervalidation_test_password_too_short" - }, - { - "label": "TestLoginValidation", - "file_type": "code", - "source_file": "tests/test_input_validation.py", - "source_location": "L54", - "community": 25, - "norm_label": "testloginvalidation", - "id": "tests_test_input_validation_testloginvalidation" - }, - { - "label": ".test_valid_login_payload()", - "file_type": "code", - "source_file": "tests/test_input_validation.py", - "source_location": "L57", - "community": 25, - "norm_label": ".test_valid_login_payload()", - "id": "tests_test_input_validation_testloginvalidation_test_valid_login_payload" - }, - { - "label": ".test_username_too_short()", - "file_type": "code", - "source_file": "tests/test_input_validation.py", - "source_location": "L65", - "community": 25, - "norm_label": ".test_username_too_short()", - "id": "tests_test_input_validation_testloginvalidation_test_username_too_short" + "label": "Covers line 18: GET /stocks/health.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1145", + "community": 498, + "norm_label": "covers line 18: get /stocks/health.", + "id": "tests_test_controllers_coverage_rationale_1145" }, { - "label": ".test_password_too_short()", - "file_type": "code", - "source_file": "tests/test_input_validation.py", - "source_location": "L72", - "community": 25, - "norm_label": ".test_password_too_short()", - "id": "tests_test_input_validation_testloginvalidation_test_password_too_short" + "label": "Covers line 35: GET /stocks/historical.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1159", + "community": 14, + "norm_label": "covers line 35: get /stocks/historical.", + "id": "tests_test_controllers_coverage_rationale_1159" }, { - "label": "TestPrometheusSessionValidation", - "file_type": "code", - "source_file": "tests/test_input_validation.py", - "source_location": "L80", - "community": 25, - "norm_label": "testprometheussessionvalidation", - "id": "tests_test_input_validation_testprometheussessionvalidation" + "label": "Covers line 47: GET /stocks/fundamental.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1173", + "community": 14, + "norm_label": "covers line 47: get /stocks/fundamental.", + "id": "tests_test_controllers_coverage_rationale_1173" }, { - "label": ".test_valid_create_session()", - "file_type": "code", - "source_file": "tests/test_input_validation.py", - "source_location": "L83", - "community": 25, - "norm_label": ".test_valid_create_session()", - "id": "tests_test_input_validation_testprometheussessionvalidation_test_valid_create_session" + "label": "Covers lines 52-53, 57-63: GET /stocks/key/generate. NOTE: stocksapi_cont", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1187", + "community": 14, + "norm_label": "covers lines 52-53, 57-63: get /stocks/key/generate. note: stocksapi_cont", + "id": "tests_test_controllers_coverage_rationale_1187" }, { - "label": ".test_empty_title()", - "file_type": "code", - "source_file": "tests/test_input_validation.py", - "source_location": "L92", - "community": 25, - "norm_label": ".test_empty_title()", - "id": "tests_test_input_validation_testprometheussessionvalidation_test_empty_title" + "label": "Covers lines 52-53: user without GENERATE_API_KEYS permission gets 403.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1195", + "community": 14, + "norm_label": "covers lines 52-53: user without generate_api_keys permission gets 403.", + "id": "tests_test_controllers_coverage_rationale_1195" }, { - "label": ".test_title_too_long()", - "file_type": "code", - "source_file": "tests/test_input_validation.py", - "source_location": "L100", - "community": 25, - "norm_label": ".test_title_too_long()", - "id": "tests_test_input_validation_testprometheussessionvalidation_test_title_too_long" + "label": "Covers lines 57-60: admin bypasses permission check and generates key.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1203", + "community": 14, + "norm_label": "covers lines 57-60: admin bypasses permission check and generates key.", + "id": "tests_test_controllers_coverage_rationale_1203" }, { - "label": "TestUpdateTitleValidation", - "file_type": "code", - "source_file": "tests/test_input_validation.py", - "source_location": "L109", - "community": 25, - "norm_label": "testupdatetitlevalidation", - "id": "tests_test_input_validation_testupdatetitlevalidation" + "label": "Covers lines 61-63: exception during key generation (admin path).", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1215", + "community": 14, + "norm_label": "covers lines 61-63: exception during key generation (admin path).", + "id": "tests_test_controllers_coverage_rationale_1215" }, { - "label": ".test_empty_title()", - "file_type": "code", - "source_file": "tests/test_input_validation.py", - "source_location": "L112", - "community": 25, - "norm_label": ".test_empty_title()", - "id": "tests_test_input_validation_testupdatetitlevalidation_test_empty_title" + "label": "Covers lines 13, 17, 19-20, 22-27: UserManager.addRoleToUser.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1230", + "community": 563, + "norm_label": "covers lines 13, 17, 19-20, 22-27: usermanager.addroletouser.", + "id": "tests_test_controllers_coverage_rationale_1230" }, { - "label": ".test_title_too_long()", - "file_type": "code", - "source_file": "tests/test_input_validation.py", - "source_location": "L120", - "community": 25, - "norm_label": ".test_title_too_long()", - "id": "tests_test_input_validation_testupdatetitlevalidation_test_title_too_long" + "label": "Covers lines 17, 22-27: user found, role not present, role added.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1233", + "community": 564, + "norm_label": "covers lines 17, 22-27: user found, role not present, role added.", + "id": "tests_test_controllers_coverage_rationale_1233" }, { - "label": "TestChatValidation", - "file_type": "code", - "source_file": "tests/test_input_validation.py", - "source_location": "L129", - "community": 25, - "norm_label": "testchatvalidation", - "id": "tests_test_input_validation_testchatvalidation" + "label": "Covers line 27: user already has the role.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1250", + "community": 568, + "norm_label": "covers line 27: user already has the role.", + "id": "tests_test_controllers_coverage_rationale_1250" }, { - "label": ".test_empty_text()", - "file_type": "code", - "source_file": "tests/test_input_validation.py", - "source_location": "L132", - "community": 25, - "norm_label": ".test_empty_text()", - "id": "tests_test_input_validation_testchatvalidation_test_empty_text" + "label": "Covers lines 19-20: user not found raises 404.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1264", + "community": 528, + "norm_label": "covers lines 19-20: user not found raises 404.", + "id": "tests_test_controllers_coverage_rationale_1264" }, { - "label": ".test_text_too_long()", - "file_type": "code", - "source_file": "tests/test_input_validation.py", - "source_location": "L140", - "community": 25, - "norm_label": ".test_text_too_long()", - "id": "tests_test_input_validation_testchatvalidation_test_text_too_long" + "label": "Covers lines 34, 36-38, 40-44, 46, 48-49, 51, 58-59, 61, 63-67: UserManager.getC", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1276", + "community": 493, + "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" }, { - "label": ".test_max_length_boundary()", - "file_type": "code", - "source_file": "tests/test_input_validation.py", - "source_location": "L148", - "community": 25, - "norm_label": ".test_max_length_boundary()", - "id": "tests_test_input_validation_testchatvalidation_test_max_length_boundary" + "label": "Covers lines 36-38, 40-44, 46, 48-49, 51, 58-59, 61: successful user retrieval.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1283", + "community": 493, + "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" }, { - "label": "TestMissingBody", - "file_type": "code", - "source_file": "tests/test_input_validation.py", - "source_location": "L158", - "community": 25, - "norm_label": "testmissingbody", - "id": "tests_test_input_validation_testmissingbody" + "label": "Covers lines 42-44: session validation fails.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1308", + "community": 569, + "norm_label": "covers lines 42-44: session validation fails.", + "id": "tests_test_controllers_coverage_rationale_1308" }, { - "label": ".test_register_missing_username()", - "file_type": "code", - "source_file": "tests/test_input_validation.py", - "source_location": "L161", - "community": 25, - "norm_label": ".test_register_missing_username()", - "id": "tests_test_input_validation_testmissingbody_test_register_missing_username" + "label": "Covers lines 48-49: user not in DB.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1324", + "community": 546, + "norm_label": "covers lines 48-49: user not in db.", + "id": "tests_test_controllers_coverage_rationale_1324" }, { - "label": ".test_register_missing_all()", - "file_type": "code", - "source_file": "tests/test_input_validation.py", - "source_location": "L168", - "community": 25, - "norm_label": ".test_register_missing_all()", - "id": "tests_test_input_validation_testmissingbody_test_register_missing_all" + "label": "Covers lines 65-67: unexpected exception.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1341", + "community": 560, + "norm_label": "covers lines 65-67: unexpected exception.", + "id": "tests_test_controllers_coverage_rationale_1341" }, { - "label": ".test_login_missing_fields()", - "file_type": "code", - "source_file": "tests/test_input_validation.py", - "source_location": "L172", - "community": 25, - "norm_label": ".test_login_missing_fields()", - "id": "tests_test_input_validation_testmissingbody_test_login_missing_fields" + "label": "Covers lines 37-38, 46, 51, 58 (sessionId is None): skips session validation.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1358", + "community": 561, + "norm_label": "covers lines 37-38, 46, 51, 58 (sessionid is none): skips session validation.", + "id": "tests_test_controllers_coverage_rationale_1358" }, { - "label": "Tests for input validation via HTTP endpoints. Validation is now inline via Bod", + "label": "Covers line 16: empty password raises ValueError.", "file_type": "rationale", - "source_file": "tests/test_input_validation.py", - "source_location": "L1", - "community": 25, - "norm_label": "tests for input validation via http endpoints. validation is now inline via bod", - "id": "tests_test_input_validation_rationale_1" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1382", + "community": 45, + "norm_label": "covers line 16: empty password raises valueerror.", + "id": "tests_test_controllers_coverage_rationale_1382" }, { - "label": "POST /auth/register \u2014 validates username, email, password via Body(...)", + "label": "Covers lines 45-51: verifyAccessToken with expired and invalid tokens.", "file_type": "rationale", - "source_file": "tests/test_input_validation.py", - "source_location": "L15", - "community": 25, - "norm_label": "post /auth/register \u2014 validates username, email, password via body(...)", - "id": "tests_test_input_validation_rationale_15" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1392", + "community": 524, + "norm_label": "covers lines 45-51: verifyaccesstoken with expired and invalid tokens.", + "id": "tests_test_controllers_coverage_rationale_1392" }, { - "label": "POST /auth/login \u2014 validates username, password via Body(...)", + "label": "Covers lines 48-49: jwt.ExpiredSignatureError.", "file_type": "rationale", - "source_file": "tests/test_input_validation.py", - "source_location": "L55", - "community": 25, - "norm_label": "post /auth/login \u2014 validates username, password via body(...)", - "id": "tests_test_input_validation_rationale_55" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1395", + "community": 524, + "norm_label": "covers lines 48-49: jwt.expiredsignatureerror.", + "id": "tests_test_controllers_coverage_rationale_1395" }, { - "label": "POST /prometheus/sessions \u2014 validates title via Body(...)", + "label": "Covers lines 50-51: jwt.InvalidTokenError.", "file_type": "rationale", - "source_file": "tests/test_input_validation.py", - "source_location": "L81", - "community": 25, - "norm_label": "post /prometheus/sessions \u2014 validates title via body(...)", - "id": "tests_test_input_validation_rationale_81" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1411", + "community": 524, + "norm_label": "covers lines 50-51: jwt.invalidtokenerror.", + "id": "tests_test_controllers_coverage_rationale_1411" }, { - "label": "PUT /prometheus/sessions/{sessionId} \u2014 validates title via Body(...)", + "label": "Covers line 67: extractTokenPayload re-raises HTTPException from verifyAccessTok", "file_type": "rationale", - "source_file": "tests/test_input_validation.py", - "source_location": "L110", - "community": 25, - "norm_label": "put /prometheus/sessions/{sessionid} \u2014 validates title via body(...)", - "id": "tests_test_input_validation_rationale_110" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1423", + "community": 114, + "norm_label": "covers line 67: extracttokenpayload re-raises httpexception from verifyaccesstok", + "id": "tests_test_controllers_coverage_rationale_1423" }, { - "label": "POST /prometheus/chat/stream \u2014 validates query via Body(...)", + "label": "Covers line 67: HTTPException raised by verifyAccessToken is re-raised.", "file_type": "rationale", - "source_file": "tests/test_input_validation.py", - "source_location": "L130", - "community": 25, - "norm_label": "post /prometheus/chat/stream \u2014 validates query via body(...)", - "id": "tests_test_input_validation_rationale_130" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1426", + "community": 114, + "norm_label": "covers line 67: httpexception raised by verifyaccesstoken is re-raised.", + "id": "tests_test_controllers_coverage_rationale_1426" }, { - "label": "Test that endpoints reject requests with missing required fields.", + "label": "Covers line 13: UserManager.__init__.", "file_type": "rationale", - "source_file": "tests/test_input_validation.py", - "source_location": "L159", - "community": 25, - "norm_label": "test that endpoints reject requests with missing required fields.", - "id": "tests_test_input_validation_rationale_159" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1442", + "community": 498, + "norm_label": "covers line 13: usermanager.__init__.", + "id": "tests_test_controllers_coverage_rationale_1442" }, { - "label": "test_logging_config_coverage.py", + "label": "test_device.py", "file_type": "code", - "source_file": "tests/test_logging_config_coverage.py", + "source_file": "tests/test_device.py", "source_location": "L1", - "community": 188, - "norm_label": "test_logging_config_coverage.py", - "id": "tests_test_logging_config_coverage_py" + "community": 1, + "norm_label": "test_device.py", + "id": "tests_test_device_py" }, { - "label": "TestDiscordHandlerEmit", + "label": "TestDeviceDetection", "file_type": "code", - "source_file": "tests/test_logging_config_coverage.py", - "source_location": "L8", - "community": 188, - "norm_label": "testdiscordhandleremit", - "id": "tests_test_logging_config_coverage_testdiscordhandleremit" + "source_file": "tests/test_device.py", + "source_location": "L10", + "community": 1, + "norm_label": "testdevicedetection", + "id": "tests_test_device_testdevicedetection" }, { - "label": "._make_handler()", + "label": ".test_parse_chrome_windows()", "file_type": "code", - "source_file": "tests/test_logging_config_coverage.py", - "source_location": "L9", - "community": 188, - "norm_label": "._make_handler()", - "id": "tests_test_logging_config_coverage_testdiscordhandleremit_make_handler" + "source_file": "tests/test_device.py", + "source_location": "L11", + "community": 1, + "norm_label": ".test_parse_chrome_windows()", + "id": "tests_test_device_testdevicedetection_test_parse_chrome_windows" }, { - "label": "._make_record()", + "label": ".test_parse_firefox_windows()", "file_type": "code", - "source_file": "tests/test_logging_config_coverage.py", - "source_location": "L14", - "community": 188, - "norm_label": "._make_record()", - "id": "tests_test_logging_config_coverage_testdiscordhandleremit_make_record" + "source_file": "tests/test_device.py", + "source_location": "L20", + "community": 1, + "norm_label": ".test_parse_firefox_windows()", + "id": "tests_test_device_testdevicedetection_test_parse_firefox_windows" }, { - "label": "test_discord_disabled()", + "label": ".test_parse_safari_mac()", "file_type": "code", - "source_file": "tests/test_logging_config_coverage.py", - "source_location": "L27", - "community": 188, - "norm_label": "test_discord_disabled()", - "id": "tests_test_logging_config_coverage_test_discord_disabled" + "source_file": "tests/test_device.py", + "source_location": "L28", + "community": 1, + "norm_label": ".test_parse_safari_mac()", + "id": "tests_test_device_testdevicedetection_test_parse_safari_mac" }, { - "label": "test_discord_no_webhook()", + "label": ".test_parse_chrome_android()", "file_type": "code", - "source_file": "tests/test_logging_config_coverage.py", + "source_file": "tests/test_device.py", "source_location": "L35", - "community": 188, - "norm_label": "test_discord_no_webhook()", - "id": "tests_test_logging_config_coverage_test_discord_no_webhook" + "community": 1, + "norm_label": ".test_parse_chrome_android()", + "id": "tests_test_device_testdevicedetection_test_parse_chrome_android" }, { - "label": "test_level_below_error()", + "label": ".test_parse_safari_iphone()", "file_type": "code", - "source_file": "tests/test_logging_config_coverage.py", + "source_file": "tests/test_device.py", "source_location": "L43", - "community": 188, - "norm_label": "test_level_below_error()", - "id": "tests_test_logging_config_coverage_test_level_below_error" - }, - { - "label": "test_submit_called_on_error()", - "file_type": "code", - "source_file": "tests/test_logging_config_coverage.py", - "source_location": "L52", - "community": 188, - "norm_label": "test_submit_called_on_error()", - "id": "tests_test_logging_config_coverage_test_submit_called_on_error" + "community": 1, + "norm_label": ".test_parse_safari_iphone()", + "id": "tests_test_device_testdevicedetection_test_parse_safari_iphone" }, { - "label": "test_message_truncation()", + "label": ".test_parse_edge()", "file_type": "code", - "source_file": "tests/test_logging_config_coverage.py", - "source_location": "L62", - "community": 188, - "norm_label": "test_message_truncation()", - "id": "tests_test_logging_config_coverage_test_message_truncation" + "source_file": "tests/test_device.py", + "source_location": "L50", + "community": 1, + "norm_label": ".test_parse_edge()", + "id": "tests_test_device_testdevicedetection_test_parse_edge" }, { - "label": "test_exception_in_submit()", + "label": ".test_parse_empty_user_agent()", "file_type": "code", - "source_file": "tests/test_logging_config_coverage.py", - "source_location": "L77", - "community": 188, - "norm_label": "test_exception_in_submit()", - "id": "tests_test_logging_config_coverage_test_exception_in_submit" + "source_file": "tests/test_device.py", + "source_location": "L56", + "community": 1, + "norm_label": ".test_parse_empty_user_agent()", + "id": "tests_test_device_testdevicedetection_test_parse_empty_user_agent" }, { - "label": "test_with_exception_info()", + "label": ".test_parse_none_user_agent()", "file_type": "code", - "source_file": "tests/test_logging_config_coverage.py", - "source_location": "L88", - "community": 188, - "norm_label": "test_with_exception_info()", - "id": "tests_test_logging_config_coverage_test_with_exception_info" + "source_file": "tests/test_device.py", + "source_location": "L63", + "community": 1, + "norm_label": ".test_parse_none_user_agent()", + "id": "tests_test_device_testdevicedetection_test_parse_none_user_agent" }, { - "label": "TestSetupLogging", + "label": ".test_generate_fingerprint_consistent()", "file_type": "code", - "source_file": "tests/test_logging_config_coverage.py", - "source_location": "L103", - "community": 122, - "norm_label": "testsetuplogging", - "id": "tests_test_logging_config_coverage_testsetuplogging" + "source_file": "tests/test_device.py", + "source_location": "L69", + "community": 1, + "norm_label": ".test_generate_fingerprint_consistent()", + "id": "tests_test_device_testdevicedetection_test_generate_fingerprint_consistent" }, { - "label": "test_setup_discord_handler_enabled()", + "label": ".test_generate_fingerprint_different_inputs()", "file_type": "code", - "source_file": "tests/test_logging_config_coverage.py", - "source_location": "L105", - "community": 122, - "norm_label": "test_setup_discord_handler_enabled()", - "id": "tests_test_logging_config_coverage_test_setup_discord_handler_enabled" + "source_file": "tests/test_device.py", + "source_location": "L79", + "community": 1, + "norm_label": ".test_generate_fingerprint_different_inputs()", + "id": "tests_test_device_testdevicedetection_test_generate_fingerprint_different_inputs" }, { - "label": "test_setup_discord_handler_disabled()", + "label": ".test_generate_fingerprint_includes_language()", "file_type": "code", - "source_file": "tests/test_logging_config_coverage.py", - "source_location": "L114", - "community": 122, - "norm_label": "test_setup_discord_handler_disabled()", - "id": "tests_test_logging_config_coverage_test_setup_discord_handler_disabled" - }, - { - "label": "Tests for main/utils/logging_config.py \u2014 covers DiscordHandler branches.", - "file_type": "rationale", - "source_file": "tests/test_logging_config_coverage.py", - "source_location": "L1", - "community": 188, - "norm_label": "tests for main/utils/logging_config.py \u2014 covers discordhandler branches.", - "id": "tests_test_logging_config_coverage_rationale_1" + "source_file": "tests/test_device.py", + "source_location": "L85", + "community": 1, + "norm_label": ".test_generate_fingerprint_includes_language()", + "id": "tests_test_device_testdevicedetection_test_generate_fingerprint_includes_language" }, { - "label": "test_memory_dedup.py", + "label": "test_device_coverage.py", "file_type": "code", - "source_file": "tests/test_memory_dedup.py", + "source_file": "tests/test_device_coverage.py", "source_location": "L1", - "community": 140, - "norm_label": "test_memory_dedup.py", - "id": "tests_test_memory_dedup_py" + "community": 1, + "norm_label": "test_device_coverage.py", + "id": "tests_test_device_coverage_py" }, { - "label": "_create_memory()", + "label": "TestDetectBrowser", "file_type": "code", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L8", - "community": 67, - "norm_label": "_create_memory()", - "id": "tests_test_memory_dedup_create_memory" + "source_file": "tests/test_device_coverage.py", + "source_location": "L14", + "community": 1, + "norm_label": "testdetectbrowser", + "id": "tests_test_device_coverage_testdetectbrowser" }, { - "label": "_count_memories()", + "label": ".test_edge_new()", "file_type": "code", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L12", - "community": 67, - "norm_label": "_count_memories()", - "id": "tests_test_memory_dedup_count_memories" + "source_file": "tests/test_device_coverage.py", + "source_location": "L15", + "community": 1, + "norm_label": ".test_edge_new()", + "id": "tests_test_device_coverage_testdetectbrowser_test_edge_new" }, { - "label": "_get_memory()", + "label": ".test_edge_with_edge_suffix()", "file_type": "code", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L20", - "community": 67, - "norm_label": "_get_memory()", - "id": "tests_test_memory_dedup_get_memory" + "source_file": "tests/test_device_coverage.py", + "source_location": "L23", + "community": 1, + "norm_label": ".test_edge_with_edge_suffix()", + "id": "tests_test_device_coverage_testdetectbrowser_test_edge_with_edge_suffix" }, { - "label": "TestExactSameKeyUpdates", + "label": ".test_chrome()", "file_type": "code", - "source_file": "tests/test_memory_dedup.py", + "source_file": "tests/test_device_coverage.py", "source_location": "L28", - "community": 140, - "norm_label": "testexactsamekeyupdates", - "id": "tests_test_memory_dedup_testexactsamekeyupdates" + "community": 1, + "norm_label": ".test_chrome()", + "id": "tests_test_device_coverage_testdetectbrowser_test_chrome" }, { - "label": ".test_exact_same_key_updates()", + "label": ".test_firefox()", "file_type": "code", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L29", - "community": 67, - "norm_label": ".test_exact_same_key_updates()", - "id": "tests_test_memory_dedup_testexactsamekeyupdates_test_exact_same_key_updates" + "source_file": "tests/test_device_coverage.py", + "source_location": "L32", + "community": 1, + "norm_label": ".test_firefox()", + "id": "tests_test_device_coverage_testdetectbrowser_test_firefox" }, { - "label": "TestSimilarKeyMerges", + "label": ".test_firefox_fx_prefix()", "file_type": "code", - "source_file": "tests/test_memory_dedup.py", + "source_file": "tests/test_device_coverage.py", "source_location": "L36", - "community": 140, - "norm_label": "testsimilarkeymerges", - "id": "tests_test_memory_dedup_testsimilarkeymerges" - }, - { - "label": ".test_similar_key_merges()", - "file_type": "code", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L37", - "community": 67, - "norm_label": ".test_similar_key_merges()", - "id": "tests_test_memory_dedup_testsimilarkeymerges_test_similar_key_merges" + "community": 1, + "norm_label": ".test_firefox_fx_prefix()", + "id": "tests_test_device_coverage_testdetectbrowser_test_firefox_fx_prefix" }, { - "label": "TestDifferentKeysNoMerge", + "label": ".test_safari()", "file_type": "code", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L46", - "community": 140, - "norm_label": "testdifferentkeysnomerge", - "id": "tests_test_memory_dedup_testdifferentkeysnomerge" + "source_file": "tests/test_device_coverage.py", + "source_location": "L43", + "community": 1, + "norm_label": ".test_safari()", + "id": "tests_test_device_coverage_testdetectbrowser_test_safari" }, { - "label": ".test_different_keys_no_merge()", + "label": ".test_opera()", "file_type": "code", - "source_file": "tests/test_memory_dedup.py", + "source_file": "tests/test_device_coverage.py", "source_location": "L47", - "community": 67, - "norm_label": ".test_different_keys_no_merge()", - "id": "tests_test_memory_dedup_testdifferentkeysnomerge_test_different_keys_no_merge" + "community": 1, + "norm_label": ".test_opera()", + "id": "tests_test_device_coverage_testdetectbrowser_test_opera" }, { - "label": "TestMergeBoostsScore", + "label": ".test_opera_mini()", "file_type": "code", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L55", - "community": 140, - "norm_label": "testmergeboostsscore", - "id": "tests_test_memory_dedup_testmergeboostsscore" + "source_file": "tests/test_device_coverage.py", + "source_location": "L54", + "community": 1, + "norm_label": ".test_opera_mini()", + "id": "tests_test_device_coverage_testdetectbrowser_test_opera_mini" }, { - "label": ".test_merge_boosts_score()", + "label": ".test_brave()", "file_type": "code", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L56", - "community": 67, - "norm_label": ".test_merge_boosts_score()", - "id": "tests_test_memory_dedup_testmergeboostsscore_test_merge_boosts_score" + "source_file": "tests/test_device_coverage.py", + "source_location": "L59", + "community": 1, + "norm_label": ".test_brave()", + "id": "tests_test_device_coverage_testdetectbrowser_test_brave" }, { - "label": "TestMergeIncrementsAccess", + "label": ".test_unknown_browser()", "file_type": "code", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L64", - "community": 140, - "norm_label": "testmergeincrementsaccess", - "id": "tests_test_memory_dedup_testmergeincrementsaccess" + "source_file": "tests/test_device_coverage.py", + "source_location": "L63", + "community": 1, + "norm_label": ".test_unknown_browser()", + "id": "tests_test_device_coverage_testdetectbrowser_test_unknown_browser" }, { - "label": ".test_merge_increments_access()", + "label": "TestDetectOS", "file_type": "code", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L65", - "community": 67, - "norm_label": ".test_merge_increments_access()", - "id": "tests_test_memory_dedup_testmergeincrementsaccess_test_merge_increments_access" + "source_file": "tests/test_device_coverage.py", + "source_location": "L68", + "community": 1, + "norm_label": "testdetectos", + "id": "tests_test_device_coverage_testdetectos" }, { - "label": "TestThresholdBoundary", + "label": ".test_windows_10()", "file_type": "code", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L73", - "community": 140, - "norm_label": "testthresholdboundary", - "id": "tests_test_memory_dedup_testthresholdboundary" + "source_file": "tests/test_device_coverage.py", + "source_location": "L69", + "community": 1, + "norm_label": ".test_windows_10()", + "id": "tests_test_device_coverage_testdetectos_test_windows_10" }, { - "label": ".test_threshold_boundary()", + "label": ".test_windows_81()", "file_type": "code", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L74", - "community": 67, - "norm_label": ".test_threshold_boundary()", - "id": "tests_test_memory_dedup_testthresholdboundary_test_threshold_boundary" + "source_file": "tests/test_device_coverage.py", + "source_location": "L76", + "community": 1, + "norm_label": ".test_windows_81()", + "id": "tests_test_device_coverage_testdetectos_test_windows_81" }, { - "label": "Keys with Jaccard > 0.8 should merge.", - "file_type": "rationale", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L38", - "community": 67, - "norm_label": "keys with jaccard > 0.8 should merge.", - "id": "tests_test_memory_dedup_rationale_38" + "label": ".test_windows_8()", + "file_type": "code", + "source_file": "tests/test_device_coverage.py", + "source_location": "L80", + "community": 1, + "norm_label": ".test_windows_8()", + "id": "tests_test_device_coverage_testdetectos_test_windows_8" }, { - "label": "Keys with low similarity should not merge.", - "file_type": "rationale", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L48", - "community": 67, - "norm_label": "keys with low similarity should not merge.", - "id": "tests_test_memory_dedup_rationale_48" + "label": ".test_windows_7()", + "file_type": "code", + "source_file": "tests/test_device_coverage.py", + "source_location": "L84", + "community": 1, + "norm_label": ".test_windows_7()", + "id": "tests_test_device_coverage_testdetectos_test_windows_7" }, { - "label": "Keys with Jaccard <= 0.8 should not merge.", - "file_type": "rationale", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L75", - "community": 67, - "norm_label": "keys with jaccard <= 0.8 should not merge.", - "id": "tests_test_memory_dedup_rationale_75" + "label": ".test_windows_phone()", + "file_type": "code", + "source_file": "tests/test_device_coverage.py", + "source_location": "L88", + "community": 1, + "norm_label": ".test_windows_phone()", + "id": "tests_test_device_coverage_testdetectos_test_windows_phone" }, { - "label": "test_memory_maintenance.py", + "label": ".test_macos()", "file_type": "code", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L1", - "community": 518, - "norm_label": "test_memory_maintenance.py", - "id": "tests_test_memory_maintenance_py" + "source_file": "tests/test_device_coverage.py", + "source_location": "L94", + "community": 1, + "norm_label": ".test_macos()", + "id": "tests_test_device_coverage_testdetectos_test_macos" }, { - "label": "brt()", + "label": ".test_ios()", "file_type": "code", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L18", - "community": 518, - "norm_label": "brt()", - "id": "tests_test_memory_maintenance_brt" + "source_file": "tests/test_device_coverage.py", + "source_location": "L100", + "community": 1, + "norm_label": ".test_ios()", + "id": "tests_test_device_coverage_testdetectos_test_ios" }, { - "label": "create_memories()", + "label": ".test_ipados()", "file_type": "code", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L23", - "community": 518, - "norm_label": "create_memories()", - "id": "tests_test_memory_maintenance_create_memories" + "source_file": "tests/test_device_coverage.py", + "source_location": "L106", + "community": 1, + "norm_label": ".test_ipados()", + "id": "tests_test_device_coverage_testdetectos_test_ipados" }, { - "label": "TestDecay", + "label": ".test_android()", "file_type": "code", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L46", - "community": 518, - "norm_label": "testdecay", - "id": "tests_test_memory_maintenance_testdecay" + "source_file": "tests/test_device_coverage.py", + "source_location": "L112", + "community": 1, + "norm_label": ".test_android()", + "id": "tests_test_device_coverage_testdetectos_test_android" }, { - "label": ".test_active_memory_decays()", + "label": ".test_linux()", "file_type": "code", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L47", - "community": 518, - "norm_label": ".test_active_memory_decays()", - "id": "tests_test_memory_maintenance_testdecay_test_active_memory_decays" + "source_file": "tests/test_device_coverage.py", + "source_location": "L118", + "community": 1, + "norm_label": ".test_linux()", + "id": "tests_test_device_coverage_testdetectos_test_linux" }, { - "label": ".test_zero_access_count_still_decays()", + "label": ".test_chrome_os()", "file_type": "code", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L54", - "community": 518, - "norm_label": ".test_zero_access_count_still_decays()", - "id": "tests_test_memory_maintenance_testdecay_test_zero_access_count_still_decays" + "source_file": "tests/test_device_coverage.py", + "source_location": "L122", + "community": 1, + "norm_label": ".test_chrome_os()", + "id": "tests_test_device_coverage_testdetectos_test_chrome_os" }, { - "label": ".test_high_score_decays_proportionally()", + "label": ".test_freebsd()", "file_type": "code", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L61", - "community": 518, - "norm_label": ".test_high_score_decays_proportionally()", - "id": "tests_test_memory_maintenance_testdecay_test_high_score_decays_proportionally" + "source_file": "tests/test_device_coverage.py", + "source_location": "L126", + "community": 1, + "norm_label": ".test_freebsd()", + "id": "tests_test_device_coverage_testdetectos_test_freebsd" }, { - "label": ".test_very_low_score_stays_above_zero()", + "label": ".test_netbsd()", "file_type": "code", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L67", - "community": 518, - "norm_label": ".test_very_low_score_stays_above_zero()", - "id": "tests_test_memory_maintenance_testdecay_test_very_low_score_stays_above_zero" + "source_file": "tests/test_device_coverage.py", + "source_location": "L130", + "community": 1, + "norm_label": ".test_netbsd()", + "id": "tests_test_device_coverage_testdetectos_test_netbsd" }, { - "label": ".test_multiple_users_all_decayed()", + "label": ".test_unknown_os()", "file_type": "code", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L74", - "community": 518, - "norm_label": ".test_multiple_users_all_decayed()", - "id": "tests_test_memory_maintenance_testdecay_test_multiple_users_all_decayed" + "source_file": "tests/test_device_coverage.py", + "source_location": "L134", + "community": 1, + "norm_label": ".test_unknown_os()", + "id": "tests_test_device_coverage_testdetectos_test_unknown_os" }, { - "label": "TestArchive", + "label": "TestDetectDeviceType", "file_type": "code", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L84", - "community": 518, - "norm_label": "testarchive", - "id": "tests_test_memory_maintenance_testarchive" + "source_file": "tests/test_device_coverage.py", + "source_location": "L139", + "community": 1, + "norm_label": "testdetectdevicetype", + "id": "tests_test_device_coverage_testdetectdevicetype" }, { - "label": ".test_dead_memory_archived()", + "label": ".test_desktop()", "file_type": "code", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L85", - "community": 518, - "norm_label": ".test_dead_memory_archived()", - "id": "tests_test_memory_maintenance_testarchive_test_dead_memory_archived" + "source_file": "tests/test_device_coverage.py", + "source_location": "L140", + "community": 1, + "norm_label": ".test_desktop()", + "id": "tests_test_device_coverage_testdetectdevicetype_test_desktop" }, { - "label": ".test_low_score_but_recent_not_archived()", + "label": ".test_mobile_android()", "file_type": "code", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L92", - "community": 518, - "norm_label": ".test_low_score_but_recent_not_archived()", - "id": "tests_test_memory_maintenance_testarchive_test_low_score_but_recent_not_archived" + "source_file": "tests/test_device_coverage.py", + "source_location": "L143", + "community": 1, + "norm_label": ".test_mobile_android()", + "id": "tests_test_device_coverage_testdetectdevicetype_test_mobile_android" }, { - "label": ".test_zero_access_but_high_score_not_archived()", + "label": ".test_mobile_iphone()", "file_type": "code", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L99", - "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" + "source_file": "tests/test_device_coverage.py", + "source_location": "L146", + "community": 1, + "norm_label": ".test_mobile_iphone()", + "id": "tests_test_device_coverage_testdetectdevicetype_test_mobile_iphone" }, { - "label": ".test_accessed_memory_not_archived()", + "label": ".test_mobile_ipod()", "file_type": "code", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L106", - "community": 518, - "norm_label": ".test_accessed_memory_not_archived()", - "id": "tests_test_memory_maintenance_testarchive_test_accessed_memory_not_archived" + "source_file": "tests/test_device_coverage.py", + "source_location": "L149", + "community": 1, + "norm_label": ".test_mobile_ipod()", + "id": "tests_test_device_coverage_testdetectdevicetype_test_mobile_ipod" }, { - "label": ".test_already_archived_not_double_archived()", + "label": ".test_mobile_windows_phone()", "file_type": "code", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L113", - "community": 518, - "norm_label": ".test_already_archived_not_double_archived()", - "id": "tests_test_memory_maintenance_testarchive_test_already_archived_not_double_archived" + "source_file": "tests/test_device_coverage.py", + "source_location": "L152", + "community": 1, + "norm_label": ".test_mobile_windows_phone()", + "id": "tests_test_device_coverage_testdetectdevicetype_test_mobile_windows_phone" }, { - "label": ".test_multiple_users_independent_archive()", + "label": ".test_mobile_blackberry()", "file_type": "code", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L123", - "community": 518, - "norm_label": ".test_multiple_users_independent_archive()", - "id": "tests_test_memory_maintenance_testarchive_test_multiple_users_independent_archive" + "source_file": "tests/test_device_coverage.py", + "source_location": "L155", + "community": 1, + "norm_label": ".test_mobile_blackberry()", + "id": "tests_test_device_coverage_testdetectdevicetype_test_mobile_blackberry" }, { - "label": "TestDecayAndArchiveTogether", + "label": ".test_tablet_ipad()", "file_type": "code", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L133", - "community": 518, - "norm_label": "testdecayandarchivetogether", - "id": "tests_test_memory_maintenance_testdecayandarchivetogether" + "source_file": "tests/test_device_coverage.py", + "source_location": "L158", + "community": 1, + "norm_label": ".test_tablet_ipad()", + "id": "tests_test_device_coverage_testdetectdevicetype_test_tablet_ipad" }, { - "label": ".test_decay_then_archive_check()", + "label": ".test_tablet_tab()", "file_type": "code", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L134", - "community": 518, - "norm_label": ".test_decay_then_archive_check()", - "id": "tests_test_memory_maintenance_testdecayandarchivetogether_test_decay_then_archive_check" + "source_file": "tests/test_device_coverage.py", + "source_location": "L161", + "community": 1, + "norm_label": ".test_tablet_tab()", + "id": "tests_test_device_coverage_testdetectdevicetype_test_tablet_tab" }, { - "label": ".test_score_above_threshold_after_decay_not_archived()", + "label": ".test_tablet_sm_t()", "file_type": "code", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L143", - "community": 518, - "norm_label": ".test_score_above_threshold_after_decay_not_archived()", - "id": "tests_test_memory_maintenance_testdecayandarchivetogether_test_score_above_threshold_after_decay_not_archived" + "source_file": "tests/test_device_coverage.py", + "source_location": "L164", + "community": 1, + "norm_label": ".test_tablet_sm_t()", + "id": "tests_test_device_coverage_testdetectdevicetype_test_tablet_sm_t" }, { - "label": ".test_score_just_below_threshold_archived()", + "label": ".test_kindle()", "file_type": "code", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L150", - "community": 518, - "norm_label": ".test_score_just_below_threshold_archived()", - "id": "tests_test_memory_maintenance_testdecayandarchivetogether_test_score_just_below_threshold_archived" + "source_file": "tests/test_device_coverage.py", + "source_location": "L167", + "community": 1, + "norm_label": ".test_kindle()", + "id": "tests_test_device_coverage_testdetectdevicetype_test_kindle" }, { - "label": ".test_days_just_below_threshold_not_archived()", + "label": "TestGenerateFingerprint", "file_type": "code", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L156", - "community": 518, - "norm_label": ".test_days_just_below_threshold_not_archived()", - "id": "tests_test_memory_maintenance_testdecayandarchivetogether_test_days_just_below_threshold_not_archived" + "source_file": "tests/test_device_coverage.py", + "source_location": "L171", + "community": 1, + "norm_label": "testgeneratefingerprint", + "id": "tests_test_device_coverage_testgeneratefingerprint" }, { - "label": ".test_days_just_above_threshold_archived()", + "label": ".test_basic()", "file_type": "code", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L163", - "community": 518, - "norm_label": ".test_days_just_above_threshold_archived()", - "id": "tests_test_memory_maintenance_testdecayandarchivetogether_test_days_just_above_threshold_archived" + "source_file": "tests/test_device_coverage.py", + "source_location": "L172", + "community": 1, + "norm_label": ".test_basic()", + "id": "tests_test_device_coverage_testgeneratefingerprint_test_basic" }, { - "label": "TestEmptyDatabase", + "label": ".test_with_language()", "file_type": "code", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L170", - "community": 140, - "norm_label": "testemptydatabase", - "id": "tests_test_memory_maintenance_testemptydatabase" + "source_file": "tests/test_device_coverage.py", + "source_location": "L177", + "community": 1, + "norm_label": ".test_with_language()", + "id": "tests_test_device_coverage_testgeneratefingerprint_test_with_language" }, { - "label": ".test_no_memories_does_not_crash()", + "label": ".test_different_inputs_different_hash()", "file_type": "code", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L171", - "community": 488, - "norm_label": ".test_no_memories_does_not_crash()", - "id": "tests_test_memory_maintenance_testemptydatabase_test_no_memories_does_not_crash" + "source_file": "tests/test_device_coverage.py", + "source_location": "L181", + "community": 1, + "norm_label": ".test_different_inputs_different_hash()", + "id": "tests_test_device_coverage_testgeneratefingerprint_test_different_inputs_different_hash" }, { - "label": "Helper to create memories with controlled baseScore, lastAccessedAt, accessCount", - "file_type": "rationale", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L24", - "community": 518, - "norm_label": "helper to create memories with controlled basescore, lastaccessedat, accesscount", - "id": "tests_test_memory_maintenance_rationale_24" - }, - { - "label": "Decay applies to ALL active memories, not just accessed ones.", - "file_type": "rationale", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L55", - "community": 518, - "norm_label": "decay applies to all active memories, not just accessed ones.", - "id": "tests_test_memory_maintenance_rationale_55" - }, - { - "label": "baseScore should never reach exactly 0 from decay alone.", - "file_type": "rationale", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L68", - "community": 518, - "norm_label": "basescore should never reach exactly 0 from decay alone.", - "id": "tests_test_memory_maintenance_rationale_68" - }, - { - "label": "Score below threshold + accessCount=0 + 90+ days \u2192 archived.", - "file_type": "rationale", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L86", - "community": 518, - "norm_label": "score below threshold + accesscount=0 + 90+ days \u2192 archived.", - "id": "tests_test_memory_maintenance_rationale_86" - }, - { - "label": "Low score but accessed recently \u2192 not archived.", - "file_type": "rationale", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L93", - "community": 518, - "norm_label": "low score but accessed recently \u2192 not archived.", - "id": "tests_test_memory_maintenance_rationale_93" - }, - { - "label": "Zero access but score still above threshold \u2192 not archived.", - "file_type": "rationale", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L100", - "community": 518, - "norm_label": "zero access but score still above threshold \u2192 not archived.", - "id": "tests_test_memory_maintenance_rationale_100" + "label": "TestParseUserAgent", + "file_type": "code", + "source_file": "tests/test_device_coverage.py", + "source_location": "L187", + "community": 1, + "norm_label": "testparseuseragent", + "id": "tests_test_device_coverage_testparseuseragent" }, { - "label": "Even with low score, if accessed \u2192 not archived.", - "file_type": "rationale", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L107", - "community": 518, - "norm_label": "even with low score, if accessed \u2192 not archived.", - "id": "tests_test_memory_maintenance_rationale_107" + "label": ".test_empty_ua()", + "file_type": "code", + "source_file": "tests/test_device_coverage.py", + "source_location": "L188", + "community": 1, + "norm_label": ".test_empty_ua()", + "id": "tests_test_device_coverage_testparseuseragent_test_empty_ua" }, { - "label": "Already archived memories are skipped.", - "file_type": "rationale", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L114", - "community": 518, - "norm_label": "already archived memories are skipped.", - "id": "tests_test_memory_maintenance_rationale_114" + "label": ".test_none_ua()", + "file_type": "code", + "source_file": "tests/test_device_coverage.py", + "source_location": "L195", + "community": 1, + "norm_label": ".test_none_ua()", + "id": "tests_test_device_coverage_testparseuseragent_test_none_ua" }, { - "label": "Decay happens first, then archive check with new scores.", - "file_type": "rationale", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L135", - "community": 518, - "norm_label": "decay happens first, then archive check with new scores.", - "id": "tests_test_memory_maintenance_rationale_135" + "label": ".test_full_chrome_windows()", + "file_type": "code", + "source_file": "tests/test_device_coverage.py", + "source_location": "L200", + "community": 1, + "norm_label": ".test_full_chrome_windows()", + "id": "tests_test_device_coverage_testparseuseragent_test_full_chrome_windows" }, { - "label": "Score that decays to >= threshold stays alive. 0.12 * 0.90 = 0.108 >= 0.1.", - "file_type": "rationale", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L144", - "community": 518, - "norm_label": "score that decays to >= threshold stays alive. 0.12 * 0.90 = 0.108 >= 0.1.", - "id": "tests_test_memory_maintenance_rationale_144" + "label": ".test_full_safari_macos()", + "file_type": "code", + "source_file": "tests/test_device_coverage.py", + "source_location": "L207", + "community": 1, + "norm_label": ".test_full_safari_macos()", + "id": "tests_test_device_coverage_testparseuseragent_test_full_safari_macos" }, { - "label": "89 days with low score \u2192 not archived (need > 90).", + "label": "Tests for main/app/authentication/device.py \u2014 covers all branches.", "file_type": "rationale", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L157", - "community": 518, - "norm_label": "89 days with low score \u2192 not archived (need > 90).", - "id": "tests_test_memory_maintenance_rationale_157" + "source_file": "tests/test_device_coverage.py", + "source_location": "L1", + "community": 1, + "norm_label": "tests for main/app/authentication/device.py \u2014 covers all branches.", + "id": "tests_test_device_coverage_rationale_1" }, { - "label": "test_memory_manager.py", + "label": "test_error_handlers.py", "file_type": "code", - "source_file": "tests/test_memory_manager.py", + "source_file": "tests/test_error_handlers.py", "source_location": "L1", - "community": 140, - "norm_label": "test_memory_manager.py", - "id": "tests_test_memory_manager_py" + "community": 33, + "norm_label": "test_error_handlers.py", + "id": "tests_test_error_handlers_py" }, { - "label": "TestGetMemoryLimit", + "label": "SampleBody", "file_type": "code", - "source_file": "tests/test_memory_manager.py", - "source_location": "L8", - "community": 140, - "norm_label": "testgetmemorylimit", - "id": "tests_test_memory_manager_testgetmemorylimit" + "source_file": "tests/test_error_handlers.py", + "source_location": "L20", + "community": 33, + "norm_label": "samplebody", + "id": "tests_test_error_handlers_samplebody" }, { - "label": ".test_basic_user()", + "label": "app()", "file_type": "code", - "source_file": "tests/test_memory_manager.py", - "source_location": "L9", - "community": 576, - "norm_label": ".test_basic_user()", - "id": "tests_test_memory_manager_testgetmemorylimit_test_basic_user" + "source_file": "tests/test_error_handlers.py", + "source_location": "L25", + "community": 104, + "norm_label": "app()", + "id": "tests_test_error_handlers_app" }, { - "label": ".test_premium_user()", + "label": "client()", "file_type": "code", - "source_file": "tests/test_memory_manager.py", - "source_location": "L12", - "community": 140, - "norm_label": ".test_premium_user()", - "id": "tests_test_memory_manager_testgetmemorylimit_test_premium_user" + "source_file": "tests/test_error_handlers.py", + "source_location": "L50", + "community": 33, + "norm_label": "client()", + "id": "tests_test_error_handlers_client" }, { - "label": ".test_admin_user()", + "label": "TestErrorResponseModel", "file_type": "code", - "source_file": "tests/test_memory_manager.py", - "source_location": "L15", - "community": 581, - "norm_label": ".test_admin_user()", - "id": "tests_test_memory_manager_testgetmemorylimit_test_admin_user" + "source_file": "tests/test_error_handlers.py", + "source_location": "L54", + "community": 33, + "norm_label": "testerrorresponsemodel", + "id": "tests_test_error_handlers_testerrorresponsemodel" }, { - "label": "TestUpsertMemory", + "label": ".test_error_response_structure()", "file_type": "code", - "source_file": "tests/test_memory_manager.py", - "source_location": "L19", - "community": 140, - "norm_label": "testupsertmemory", - "id": "tests_test_memory_manager_testupsertmemory" + "source_file": "tests/test_error_handlers.py", + "source_location": "L55", + "community": 33, + "norm_label": ".test_error_response_structure()", + "id": "tests_test_error_handlers_testerrorresponsemodel_test_error_response_structure" }, { - "label": ".test_create()", + "label": ".test_error_response_with_detail_and_request_id()", "file_type": "code", - "source_file": "tests/test_memory_manager.py", - "source_location": "L20", - "community": 140, - "norm_label": ".test_create()", - "id": "tests_test_memory_manager_testupsertmemory_test_create" + "source_file": "tests/test_error_handlers.py", + "source_location": "L65", + "community": 33, + "norm_label": ".test_error_response_with_detail_and_request_id()", + "id": "tests_test_error_handlers_testerrorresponsemodel_test_error_response_with_detail_and_request_id" }, { - "label": ".test_update()", + "label": "TestRequestContextFilter", "file_type": "code", - "source_file": "tests/test_memory_manager.py", - "source_location": "L33", - "community": 140, - "norm_label": ".test_update()", - "id": "tests_test_memory_manager_testupsertmemory_test_update" + "source_file": "tests/test_error_handlers.py", + "source_location": "L79", + "community": 33, + "norm_label": "testrequestcontextfilter", + "id": "tests_test_error_handlers_testrequestcontextfilter" }, { - "label": ".test_unchanged()", + "label": ".test_injects_request_id_from_contextvar()", "file_type": "code", - "source_file": "tests/test_memory_manager.py", - "source_location": "L40", - "community": 582, - "norm_label": ".test_unchanged()", - "id": "tests_test_memory_manager_testupsertmemory_test_unchanged" + "source_file": "tests/test_error_handlers.py", + "source_location": "L80", + "community": 33, + "norm_label": ".test_injects_request_id_from_contextvar()", + "id": "tests_test_error_handlers_testrequestcontextfilter_test_injects_request_id_from_contextvar" }, { - "label": ".test_limit_enforcement()", + "label": ".test_empty_request_id_default()", "file_type": "code", - "source_file": "tests/test_memory_manager.py", - "source_location": "L45", - "community": 583, - "norm_label": ".test_limit_enforcement()", - "id": "tests_test_memory_manager_testupsertmemory_test_limit_enforcement" + "source_file": "tests/test_error_handlers.py", + "source_location": "L89", + "community": 33, + "norm_label": ".test_empty_request_id_default()", + "id": "tests_test_error_handlers_testrequestcontextfilter_test_empty_request_id_default" }, { - "label": ".test_limit_not_enforced_without_roles()", + "label": "TestHTTPExceptionHandler", "file_type": "code", - "source_file": "tests/test_memory_manager.py", - "source_location": "L59", - "community": 584, - "norm_label": ".test_limit_not_enforced_without_roles()", - "id": "tests_test_memory_manager_testupsertmemory_test_limit_not_enforced_without_roles" + "source_file": "tests/test_error_handlers.py", + "source_location": "L99", + "community": 33, + "norm_label": "testhttpexceptionhandler", + "id": "tests_test_error_handlers_testhttpexceptionhandler" }, { - "label": ".test_upsert_with_embedding()", + "label": ".test_returns_structured_error()", "file_type": "code", - "source_file": "tests/test_memory_manager.py", - "source_location": "L66", - "community": 585, - "norm_label": ".test_upsert_with_embedding()", - "id": "tests_test_memory_manager_testupsertmemory_test_upsert_with_embedding" + "source_file": "tests/test_error_handlers.py", + "source_location": "L100", + "community": 33, + "norm_label": ".test_returns_structured_error()", + "id": "tests_test_error_handlers_testhttpexceptionhandler_test_returns_structured_error" }, { - "label": "TestCountMemories", + "label": ".test_includes_request_id_header()", "file_type": "code", - "source_file": "tests/test_memory_manager.py", - "source_location": "L80", - "community": 140, - "norm_label": "testcountmemories", - "id": "tests_test_memory_manager_testcountmemories" + "source_file": "tests/test_error_handlers.py", + "source_location": "L109", + "community": 33, + "norm_label": ".test_includes_request_id_header()", + "id": "tests_test_error_handlers_testhttpexceptionhandler_test_includes_request_id_header" }, { - "label": ".test_counts_active()", + "label": "TestValidationExceptionHandler", "file_type": "code", - "source_file": "tests/test_memory_manager.py", - "source_location": "L81", - "community": 140, - "norm_label": ".test_counts_active()", - "id": "tests_test_memory_manager_testcountmemories_test_counts_active" + "source_file": "tests/test_error_handlers.py", + "source_location": "L115", + "community": 33, + "norm_label": "testvalidationexceptionhandler", + "id": "tests_test_error_handlers_testvalidationexceptionhandler" }, { - "label": ".test_excludes_archived()", + "label": ".test_returns_422_for_invalid_input()", "file_type": "code", - "source_file": "tests/test_memory_manager.py", - "source_location": "L86", - "community": 140, - "norm_label": ".test_excludes_archived()", - "id": "tests_test_memory_manager_testcountmemories_test_excludes_archived" + "source_file": "tests/test_error_handlers.py", + "source_location": "L116", + "community": 33, + "norm_label": ".test_returns_422_for_invalid_input()", + "id": "tests_test_error_handlers_testvalidationexceptionhandler_test_returns_422_for_invalid_input" }, { - "label": ".test_counts_per_user()", + "label": ".test_returns_422_for_missing_body()", "file_type": "code", - "source_file": "tests/test_memory_manager.py", - "source_location": "L94", - "community": 140, - "norm_label": ".test_counts_per_user()", - "id": "tests_test_memory_manager_testcountmemories_test_counts_per_user" + "source_file": "tests/test_error_handlers.py", + "source_location": "L124", + "community": 33, + "norm_label": ".test_returns_422_for_missing_body()", + "id": "tests_test_error_handlers_testvalidationexceptionhandler_test_returns_422_for_missing_body" }, { - "label": "TestGetUserMemories", + "label": ".test_valid_input_passes()", "file_type": "code", - "source_file": "tests/test_memory_manager.py", - "source_location": "L101", - "community": 140, - "norm_label": "testgetusermemories", - "id": "tests_test_memory_manager_testgetusermemories" + "source_file": "tests/test_error_handlers.py", + "source_location": "L131", + "community": 33, + "norm_label": ".test_valid_input_passes()", + "id": "tests_test_error_handlers_testvalidationexceptionhandler_test_valid_input_passes" }, { - "label": ".test_returns_memories()", + "label": "TestGenericExceptionHandler", "file_type": "code", - "source_file": "tests/test_memory_manager.py", - "source_location": "L102", - "community": 575, - "norm_label": ".test_returns_memories()", - "id": "tests_test_memory_manager_testgetusermemories_test_returns_memories" + "source_file": "tests/test_error_handlers.py", + "source_location": "L137", + "community": 33, + "norm_label": "testgenericexceptionhandler", + "id": "tests_test_error_handlers_testgenericexceptionhandler" }, { - "label": ".test_pagination()", + "label": ".test_returns_500_for_unhandled()", "file_type": "code", - "source_file": "tests/test_memory_manager.py", - "source_location": "L109", - "community": 578, - "norm_label": ".test_pagination()", - "id": "tests_test_memory_manager_testgetusermemories_test_pagination" + "source_file": "tests/test_error_handlers.py", + "source_location": "L138", + "community": 33, + "norm_label": ".test_returns_500_for_unhandled()", + "id": "tests_test_error_handlers_testgenericexceptionhandler_test_returns_500_for_unhandled" }, { - "label": ".test_excludes_archived()", + "label": "TestSuccessPassthrough", "file_type": "code", - "source_file": "tests/test_memory_manager.py", - "source_location": "L115", - "community": 579, - "norm_label": ".test_excludes_archived()", - "id": "tests_test_memory_manager_testgetusermemories_test_excludes_archived" + "source_file": "tests/test_error_handlers.py", + "source_location": "L147", + "community": 33, + "norm_label": "testsuccesspassthrough", + "id": "tests_test_error_handlers_testsuccesspassthrough" }, { - "label": "TestDeleteMemory", + "label": ".test_ok_route_unaffected()", "file_type": "code", - "source_file": "tests/test_memory_manager.py", - "source_location": "L125", - "community": 140, - "norm_label": "testdeletememory", - "id": "tests_test_memory_manager_testdeletememory" + "source_file": "tests/test_error_handlers.py", + "source_location": "L148", + "community": 33, + "norm_label": ".test_ok_route_unaffected()", + "id": "tests_test_error_handlers_testsuccesspassthrough_test_ok_route_unaffected" }, { - "label": ".test_soft_delete()", - "file_type": "code", - "source_file": "tests/test_memory_manager.py", - "source_location": "L126", - "community": 580, - "norm_label": ".test_soft_delete()", - "id": "tests_test_memory_manager_testdeletememory_test_soft_delete" + "label": "Tests for standardized error responses (errors.py).", + "file_type": "rationale", + "source_file": "tests/test_error_handlers.py", + "source_location": "L1", + "community": 33, + "norm_label": "tests for standardized error responses (errors.py).", + "id": "tests_test_error_handlers_rationale_1" }, { - "label": ".test_delete_nonexistent()", + "label": "test_events.py", "file_type": "code", - "source_file": "tests/test_memory_manager.py", - "source_location": "L132", - "community": 140, - "norm_label": ".test_delete_nonexistent()", - "id": "tests_test_memory_manager_testdeletememory_test_delete_nonexistent" + "source_file": "tests/test_events.py", + "source_location": "L1", + "community": 12, + "norm_label": "test_events.py", + "id": "tests_test_events_py" }, { - "label": ".test_delete_wrong_user()", + "label": "TestLoopLogger", "file_type": "code", - "source_file": "tests/test_memory_manager.py", - "source_location": "L135", - "community": 140, - "norm_label": ".test_delete_wrong_user()", - "id": "tests_test_memory_manager_testdeletememory_test_delete_wrong_user" + "source_file": "tests/test_events.py", + "source_location": "L6", + "community": 12, + "norm_label": "testlooplogger", + "id": "tests_test_events_testlooplogger" }, { - "label": "TestSearchFulltext", + "label": ".test_init_with_empty_history()", "file_type": "code", - "source_file": "tests/test_memory_manager.py", - "source_location": "L142", - "community": 140, - "norm_label": "testsearchfulltext", - "id": "tests_test_memory_manager_testsearchfulltext" + "source_file": "tests/test_events.py", + "source_location": "L7", + "community": 12, + "norm_label": ".test_init_with_empty_history()", + "id": "tests_test_events_testlooplogger_test_init_with_empty_history" }, { - "label": ".test_search_after_create()", + "label": ".test_emit_tool_call_appends_to_history()", "file_type": "code", - "source_file": "tests/test_memory_manager.py", - "source_location": "L143", - "community": 140, - "norm_label": ".test_search_after_create()", - "id": "tests_test_memory_manager_testsearchfulltext_test_search_after_create" + "source_file": "tests/test_events.py", + "source_location": "L12", + "community": 12, + "norm_label": ".test_emit_tool_call_appends_to_history()", + "id": "tests_test_events_testlooplogger_test_emit_tool_call_appends_to_history" }, { - "label": "test_memory_tools_wiring.py", + "label": ".test_emit_tool_result_appends_to_history()", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L1", - "community": 49, - "norm_label": "test_memory_tools_wiring.py", - "id": "tests_test_memory_tools_wiring_py" + "source_file": "tests/test_events.py", + "source_location": "L24", + "community": 12, + "norm_label": ".test_emit_tool_result_appends_to_history()", + "id": "tests_test_events_testlooplogger_test_emit_tool_result_appends_to_history" }, { - "label": "TestMemoryToolFunctions", + "label": ".test_emit_turn_end_appends_to_history()", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L23", - "community": 105, - "norm_label": "testmemorytoolfunctions", - "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions" + "source_file": "tests/test_events.py", + "source_location": "L33", + "community": 12, + "norm_label": ".test_emit_turn_end_appends_to_history()", + "id": "tests_test_events_testlooplogger_test_emit_turn_end_appends_to_history" }, { - "label": ".test_search_memory_has_docstring()", + "label": ".test_flush_is_noop()", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L26", - "community": 105, - "norm_label": ".test_search_memory_has_docstring()", - "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions_test_search_memory_has_docstring" + "source_file": "tests/test_events.py", + "source_location": "L42", + "community": 12, + "norm_label": ".test_flush_is_noop()", + "id": "tests_test_events_testlooplogger_test_flush_is_noop" }, { - "label": ".test_save_memory_has_docstring()", + "label": ".test_multiple_events_preserve_order()", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L30", - "community": 105, - "norm_label": ".test_save_memory_has_docstring()", - "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions_test_save_memory_has_docstring" + "source_file": "tests/test_events.py", + "source_location": "L49", + "community": 12, + "norm_label": ".test_multiple_events_preserve_order()", + "id": "tests_test_events_testlooplogger_test_multiple_events_preserve_order" }, { - "label": ".test_search_memory_signature()", + "label": ".test_events_share_history_with_chat_messages()", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L34", - "community": 105, - "norm_label": ".test_search_memory_signature()", - "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions_test_search_memory_signature" + "source_file": "tests/test_events.py", + "source_location": "L58", + "community": 12, + "norm_label": ".test_events_share_history_with_chat_messages()", + "id": "tests_test_events_testlooplogger_test_events_share_history_with_chat_messages" }, { - "label": ".test_save_memory_signature()", + "label": ".test_emit_turn_end_with_default_tools_used()", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L39", - "community": 105, - "norm_label": ".test_save_memory_signature()", - "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions_test_save_memory_signature" + "source_file": "tests/test_events.py", + "source_location": "L74", + "community": 12, + "norm_label": ".test_emit_turn_end_with_default_tools_used()", + "id": "tests_test_events_testlooplogger_test_emit_turn_end_with_default_tools_used" }, { - "label": ".test_search_memory_has_type_hints()", - "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L46", - "community": 105, - "norm_label": ".test_search_memory_has_type_hints()", - "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions_test_search_memory_has_type_hints" + "label": "Tests for LoopLogger \u2014 appends events to history JSON list.", + "file_type": "rationale", + "source_file": "tests/test_events.py", + "source_location": "L1", + "community": 12, + "norm_label": "tests for looplogger \u2014 appends events to history json list.", + "id": "tests_test_events_rationale_1" }, { - "label": ".test_save_memory_has_type_hints()", - "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L50", - "community": 105, - "norm_label": ".test_save_memory_has_type_hints()", - "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions_test_save_memory_has_type_hints" + "label": "Loop events coexist with user/assistant messages in the same history list.", + "file_type": "rationale", + "source_file": "tests/test_events.py", + "source_location": "L59", + "community": 12, + "norm_label": "loop events coexist with user/assistant messages in the same history list.", + "id": "tests_test_events_rationale_59" }, { - "label": ".test_memory_tools_is_list_of_callables()", + "label": "test_harness_state.py", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L54", - "community": 105, - "norm_label": ".test_memory_tools_is_list_of_callables()", - "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions_test_memory_tools_is_list_of_callables" + "source_file": "tests/test_harness_state.py", + "source_location": "L1", + "community": 251, + "norm_label": "test_harness_state.py", + "id": "tests_test_harness_state_py" }, { - "label": ".test_memory_tool_names_unchanged()", + "label": "TestHarnessState", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L60", - "community": 215, - "norm_label": ".test_memory_tool_names_unchanged()", - "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions_test_memory_tool_names_unchanged" + "source_file": "tests/test_harness_state.py", + "source_location": "L5", + "community": 8, + "norm_label": "testharnessstate", + "id": "tests_test_harness_state_testharnessstate" }, { - "label": "TestToolRegistry", + "label": ".test_get_returns_none_when_empty()", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L64", - "community": 572, - "norm_label": "testtoolregistry", - "id": "tests_test_memory_tools_wiring_testtoolregistry" + "source_file": "tests/test_harness_state.py", + "source_location": "L6", + "community": 8, + "norm_label": ".test_get_returns_none_when_empty()", + "id": "tests_test_harness_state_testharnessstate_test_get_returns_none_when_empty" }, { - "label": ".test_registry_contains_memory_tools()", + "label": ".test_get_returns_default_when_empty()", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L67", - "community": 572, - "norm_label": ".test_registry_contains_memory_tools()", - "id": "tests_test_memory_tools_wiring_testtoolregistry_test_registry_contains_memory_tools" + "source_file": "tests/test_harness_state.py", + "source_location": "L10", + "community": 8, + "norm_label": ".test_get_returns_default_when_empty()", + "id": "tests_test_harness_state_testharnessstate_test_get_returns_default_when_empty" }, { - "label": ".test_registry_values_are_callable()", + "label": ".test_set_and_get()", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L71", - "community": 572, - "norm_label": ".test_registry_values_are_callable()", - "id": "tests_test_memory_tools_wiring_testtoolregistry_test_registry_values_are_callable" + "source_file": "tests/test_harness_state.py", + "source_location": "L14", + "community": 8, + "norm_label": ".test_set_and_get()", + "id": "tests_test_harness_state_testharnessstate_test_set_and_get" }, { - "label": ".test_registry_matches_tool_names()", + "label": ".test_set_overwrites()", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L75", - "community": 572, - "norm_label": ".test_registry_matches_tool_names()", - "id": "tests_test_memory_tools_wiring_testtoolregistry_test_registry_matches_tool_names" + "source_file": "tests/test_harness_state.py", + "source_location": "L19", + "community": 8, + "norm_label": ".test_set_overwrites()", + "id": "tests_test_harness_state_testharnessstate_test_set_overwrites" }, { - "label": "TestMakeChatIncludesMemoryTools", + "label": ".test_has_changed_true_after_set()", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L79", - "community": 49, - "norm_label": "testmakechatincludesmemorytools", - "id": "tests_test_memory_tools_wiring_testmakechatincludesmemorytools" + "source_file": "tests/test_harness_state.py", + "source_location": "L25", + "community": 8, + "norm_label": ".test_has_changed_true_after_set()", + "id": "tests_test_harness_state_testharnessstate_test_has_changed_true_after_set" }, { - "label": "test_makeChat_tools_include_memory_tools()", + "label": ".test_has_changed_false_after_reset()", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L86", - "community": 49, - "norm_label": "test_makechat_tools_include_memory_tools()", - "id": "tests_test_memory_tools_wiring_test_makechat_tools_include_memory_tools" + "source_file": "tests/test_harness_state.py", + "source_location": "L31", + "community": 8, + "norm_label": ".test_has_changed_false_after_reset()", + "id": "tests_test_harness_state_testharnessstate_test_has_changed_false_after_reset" }, { - "label": "TestDispatchRoutesMemoryTools", + "label": ".test_toDict_returns_copy()", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L112", - "community": 49, - "norm_label": "testdispatchroutesmemorytools", - "id": "tests_test_memory_tools_wiring_testdispatchroutesmemorytools" + "source_file": "tests/test_harness_state.py", + "source_location": "L37", + "community": 8, + "norm_label": ".test_todict_returns_copy()", + "id": "tests_test_harness_state_testharnessstate_test_toDict_returns_copy" }, { - "label": "test_search_memory_routed_via_registry()", + "label": ".test_toContext_empty_when_no_data()", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L116", - "community": 49, - "norm_label": "test_search_memory_routed_via_registry()", - "id": "tests_test_memory_tools_wiring_test_search_memory_routed_via_registry" + "source_file": "tests/test_harness_state.py", + "source_location": "L44", + "community": 8, + "norm_label": ".test_tocontext_empty_when_no_data()", + "id": "tests_test_harness_state_testharnessstate_test_toContext_empty_when_no_data" }, { - "label": "test_save_memory_routed_via_registry()", + "label": ".test_toContext_formats_entries()", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L131", - "community": 49, - "norm_label": "test_save_memory_routed_via_registry()", - "id": "tests_test_memory_tools_wiring_test_save_memory_routed_via_registry" + "source_file": "tests/test_harness_state.py", + "source_location": "L48", + "community": 8, + "norm_label": ".test_tocontext_formats_entries()", + "id": "tests_test_harness_state_testharnessstate_test_toContext_formats_entries" }, { - "label": "test_non_registry_tool_not_routed()", + "label": ".test_clear_resets_all()", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L148", - "community": 49, - "norm_label": "test_non_registry_tool_not_routed()", - "id": "tests_test_memory_tools_wiring_test_non_registry_tool_not_routed" + "source_file": "tests/test_harness_state.py", + "source_location": "L56", + "community": 8, + "norm_label": ".test_clear_resets_all()", + "id": "tests_test_harness_state_testharnessstate_test_clear_resets_all" }, { - "label": "TDD tests: verify memory tools are wired into the Prometheus agent. RED: Thes", - "file_type": "rationale", - "source_file": "tests/test_memory_tools_wiring.py", + "label": "test_http_session_coverage.py", + "file_type": "code", + "source_file": "tests/test_http_session_coverage.py", "source_location": "L1", - "community": 49, - "norm_label": "tdd tests: verify memory tools are wired into the prometheus agent. red: thes", - "id": "tests_test_memory_tools_wiring_rationale_1" + "community": 186, + "norm_label": "test_http_session_coverage.py", + "id": "tests_test_http_session_coverage_py" }, { - "label": "Verify the actual async tool functions have correct signatures.", - "file_type": "rationale", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L24", - "community": 105, - "norm_label": "verify the actual async tool functions have correct signatures.", - "id": "tests_test_memory_tools_wiring_rationale_24" + "label": "TestGetSession", + "file_type": "code", + "source_file": "tests/test_http_session_coverage.py", + "source_location": "L8", + "community": 186, + "norm_label": "testgetsession", + "id": "tests_test_http_session_coverage_testgetsession" }, { - "label": "TOOL_REGISTRY pattern must work correctly.", - "file_type": "rationale", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L65", - "community": 572, - "norm_label": "tool_registry pattern must work correctly.", - "id": "tests_test_memory_tools_wiring_rationale_65" + "label": ".test_returns_same_session()", + "file_type": "code", + "source_file": "tests/test_http_session_coverage.py", + "source_location": "L9", + "community": 186, + "norm_label": ".test_returns_same_session()", + "id": "tests_test_http_session_coverage_testgetsession_test_returns_same_session" }, { - "label": "makeChat must include MEMORY_TOOLS alongside MCP sessions.", - "file_type": "rationale", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L80", - "community": 49, - "norm_label": "makechat must include memory_tools alongside mcp sessions.", - "id": "tests_test_memory_tools_wiring_rationale_80" + "label": ".test_returns_requests_session()", + "file_type": "code", + "source_file": "tests/test_http_session_coverage.py", + "source_location": "L16", + "community": 186, + "norm_label": ".test_returns_requests_session()", + "id": "tests_test_http_session_coverage_testgetsession_test_returns_requests_session" }, { - "label": "dispatchToolCall must route memory tool names via TOOL_REGISTRY.", + "label": "Tests for main/utils/http_session.py \u2014 covers all branches.", "file_type": "rationale", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L113", - "community": 49, - "norm_label": "dispatchtoolcall must route memory tool names via tool_registry.", - "id": "tests_test_memory_tools_wiring_rationale_113" - }, - { - "label": "test_memory_types.py", - "file_type": "code", - "source_file": "tests/test_memory_types.py", + "source_file": "tests/test_http_session_coverage.py", "source_location": "L1", - "community": 51, - "norm_label": "test_memory_types.py", - "id": "tests_test_memory_types_py" + "community": 186, + "norm_label": "tests for main/utils/http_session.py \u2014 covers all branches.", + "id": "tests_test_http_session_coverage_rationale_1" }, { - "label": "TestVectorType", + "label": "test_input_validation.py", "file_type": "code", - "source_file": "tests/test_memory_types.py", - "source_location": "L6", - "community": 51, - "norm_label": "testvectortype", - "id": "tests_test_memory_types_testvectortype" + "source_file": "tests/test_input_validation.py", + "source_location": "L1", + "community": 25, + "norm_label": "test_input_validation.py", + "id": "tests_test_input_validation_py" }, { - "label": ".test_roundtrip()", + "label": "TestRegisterValidation", "file_type": "code", - "source_file": "tests/test_memory_types.py", - "source_location": "L7", - "community": 51, - "norm_label": ".test_roundtrip()", - "id": "tests_test_memory_types_testvectortype_test_roundtrip" + "source_file": "tests/test_input_validation.py", + "source_location": "L14", + "community": 25, + "norm_label": "testregistervalidation", + "id": "tests_test_input_validation_testregistervalidation" }, { - "label": ".test_none_roundtrip()", + "label": ".test_valid_registration()", "file_type": "code", - "source_file": "tests/test_memory_types.py", + "source_file": "tests/test_input_validation.py", "source_location": "L17", - "community": 51, - "norm_label": ".test_none_roundtrip()", - "id": "tests_test_memory_types_testvectortype_test_none_roundtrip" + "community": 25, + "norm_label": ".test_valid_registration()", + "id": "tests_test_input_validation_testregistervalidation_test_valid_registration" }, { - "label": ".test_wrong_dims_raises()", + "label": ".test_username_too_short()", "file_type": "code", - "source_file": "tests/test_memory_types.py", - "source_location": "L23", - "community": 51, - "norm_label": ".test_wrong_dims_raises()", - "id": "tests_test_memory_types_testvectortype_test_wrong_dims_raises" + "source_file": "tests/test_input_validation.py", + "source_location": "L25", + "community": 25, + "norm_label": ".test_username_too_short()", + "id": "tests_test_input_validation_testregistervalidation_test_username_too_short" }, { - "label": ".test_preserves_negative_values()", + "label": ".test_username_too_long()", "file_type": "code", - "source_file": "tests/test_memory_types.py", - "source_location": "L29", - "community": 51, - "norm_label": ".test_preserves_negative_values()", - "id": "tests_test_memory_types_testvectortype_test_preserves_negative_values" + "source_file": "tests/test_input_validation.py", + "source_location": "L32", + "community": 25, + "norm_label": ".test_username_too_long()", + "id": "tests_test_input_validation_testregistervalidation_test_username_too_long" }, { - "label": ".test_large_random_vector()", + "label": ".test_email_too_short()", "file_type": "code", - "source_file": "tests/test_memory_types.py", - "source_location": "L37", - "community": 51, - "norm_label": ".test_large_random_vector()", - "id": "tests_test_memory_types_testvectortype_test_large_random_vector" + "source_file": "tests/test_input_validation.py", + "source_location": "L39", + "community": 25, + "norm_label": ".test_email_too_short()", + "id": "tests_test_input_validation_testregistervalidation_test_email_too_short" }, { - "label": "VectorType: list \u2192 bytes \u2192 list preserves data.", - "file_type": "rationale", - "source_file": "tests/test_memory_types.py", - "source_location": "L8", - "community": 51, - "norm_label": "vectortype: list \u2192 bytes \u2192 list preserves data.", - "id": "tests_test_memory_types_rationale_8" + "label": ".test_password_too_short()", + "file_type": "code", + "source_file": "tests/test_input_validation.py", + "source_location": "L46", + "community": 25, + "norm_label": ".test_password_too_short()", + "id": "tests_test_input_validation_testregistervalidation_test_password_too_short" }, { - "label": "VectorType: None passes through.", - "file_type": "rationale", - "source_file": "tests/test_memory_types.py", - "source_location": "L18", - "community": 51, - "norm_label": "vectortype: none passes through.", - "id": "tests_test_memory_types_rationale_18" + "label": "TestLoginValidation", + "file_type": "code", + "source_file": "tests/test_input_validation.py", + "source_location": "L54", + "community": 25, + "norm_label": "testloginvalidation", + "id": "tests_test_input_validation_testloginvalidation" }, { - "label": "VectorType: rejects wrong dimension.", - "file_type": "rationale", - "source_file": "tests/test_memory_types.py", - "source_location": "L24", - "community": 51, - "norm_label": "vectortype: rejects wrong dimension.", - "id": "tests_test_memory_types_rationale_24" + "label": ".test_valid_login_payload()", + "file_type": "code", + "source_file": "tests/test_input_validation.py", + "source_location": "L57", + "community": 25, + "norm_label": ".test_valid_login_payload()", + "id": "tests_test_input_validation_testloginvalidation_test_valid_login_payload" }, { - "label": "VectorType: handles negative floats.", - "file_type": "rationale", - "source_file": "tests/test_memory_types.py", - "source_location": "L30", - "community": 51, - "norm_label": "vectortype: handles negative floats.", - "id": "tests_test_memory_types_rationale_30" + "label": ".test_username_too_short()", + "file_type": "code", + "source_file": "tests/test_input_validation.py", + "source_location": "L65", + "community": 25, + "norm_label": ".test_username_too_short()", + "id": "tests_test_input_validation_testloginvalidation_test_username_too_short" }, { - "label": "VectorType: random 384-dim vector roundtrips.", - "file_type": "rationale", - "source_file": "tests/test_memory_types.py", - "source_location": "L38", - "community": 51, - "norm_label": "vectortype: random 384-dim vector roundtrips.", - "id": "tests_test_memory_types_rationale_38" + "label": ".test_password_too_short()", + "file_type": "code", + "source_file": "tests/test_input_validation.py", + "source_location": "L72", + "community": 25, + "norm_label": ".test_password_too_short()", + "id": "tests_test_input_validation_testloginvalidation_test_password_too_short" }, { - "label": "test_models.py", + "label": "TestPrometheusSessionValidation", "file_type": "code", - "source_file": "tests/test_models.py", - "source_location": "L1", - "community": 125, - "norm_label": "test_models.py", - "id": "tests_test_models_py" + "source_file": "tests/test_input_validation.py", + "source_location": "L80", + "community": 25, + "norm_label": "testprometheussessionvalidation", + "id": "tests_test_input_validation_testprometheussessionvalidation" }, { - "label": "TestUserModel", + "label": ".test_valid_create_session()", "file_type": "code", - "source_file": "tests/test_models.py", - "source_location": "L17", - "community": 61, - "norm_label": "testusermodel", - "id": "tests_test_models_testusermodel" + "source_file": "tests/test_input_validation.py", + "source_location": "L83", + "community": 25, + "norm_label": ".test_valid_create_session()", + "id": "tests_test_input_validation_testprometheussessionvalidation_test_valid_create_session" }, { - "label": ".test_create_user()", + "label": ".test_empty_title()", "file_type": "code", - "source_file": "tests/test_models.py", - "source_location": "L18", - "community": 61, - "norm_label": ".test_create_user()", - "id": "tests_test_models_testusermodel_test_create_user" + "source_file": "tests/test_input_validation.py", + "source_location": "L92", + "community": 25, + "norm_label": ".test_empty_title()", + "id": "tests_test_input_validation_testprometheussessionvalidation_test_empty_title" }, { - "label": ".test_get_roles_list_default()", + "label": ".test_title_too_long()", "file_type": "code", - "source_file": "tests/test_models.py", - "source_location": "L28", - "community": 61, - "norm_label": ".test_get_roles_list_default()", - "id": "tests_test_models_testusermodel_test_get_roles_list_default" + "source_file": "tests/test_input_validation.py", + "source_location": "L100", + "community": 25, + "norm_label": ".test_title_too_long()", + "id": "tests_test_input_validation_testprometheussessionvalidation_test_title_too_long" }, { - "label": ".test_get_roles_list_single_role()", + "label": "TestUpdateTitleValidation", "file_type": "code", - "source_file": "tests/test_models.py", - "source_location": "L33", - "community": 61, - "norm_label": ".test_get_roles_list_single_role()", - "id": "tests_test_models_testusermodel_test_get_roles_list_single_role" + "source_file": "tests/test_input_validation.py", + "source_location": "L109", + "community": 25, + "norm_label": "testupdatetitlevalidation", + "id": "tests_test_input_validation_testupdatetitlevalidation" }, { - "label": ".test_get_roles_list_multiple_roles()", + "label": ".test_empty_title()", "file_type": "code", - "source_file": "tests/test_models.py", - "source_location": "L38", - "community": 61, - "norm_label": ".test_get_roles_list_multiple_roles()", - "id": "tests_test_models_testusermodel_test_get_roles_list_multiple_roles" + "source_file": "tests/test_input_validation.py", + "source_location": "L112", + "community": 25, + "norm_label": ".test_empty_title()", + "id": "tests_test_input_validation_testupdatetitlevalidation_test_empty_title" }, { - "label": ".test_add_role_new()", + "label": ".test_title_too_long()", "file_type": "code", - "source_file": "tests/test_models.py", - "source_location": "L46", - "community": 61, - "norm_label": ".test_add_role_new()", - "id": "tests_test_models_testusermodel_test_add_role_new" + "source_file": "tests/test_input_validation.py", + "source_location": "L120", + "community": 25, + "norm_label": ".test_title_too_long()", + "id": "tests_test_input_validation_testupdatetitlevalidation_test_title_too_long" }, { - "label": ".test_add_role_existing()", + "label": "TestChatValidation", "file_type": "code", - "source_file": "tests/test_models.py", - "source_location": "L52", - "community": 61, - "norm_label": ".test_add_role_existing()", - "id": "tests_test_models_testusermodel_test_add_role_existing" + "source_file": "tests/test_input_validation.py", + "source_location": "L129", + "community": 25, + "norm_label": "testchatvalidation", + "id": "tests_test_input_validation_testchatvalidation" }, { - "label": ".test_has_role_true()", + "label": ".test_empty_text()", "file_type": "code", - "source_file": "tests/test_models.py", - "source_location": "L59", - "community": 61, - "norm_label": ".test_has_role_true()", - "id": "tests_test_models_testusermodel_test_has_role_true" + "source_file": "tests/test_input_validation.py", + "source_location": "L132", + "community": 25, + "norm_label": ".test_empty_text()", + "id": "tests_test_input_validation_testchatvalidation_test_empty_text" }, { - "label": ".test_has_role_false()", + "label": ".test_text_too_long()", "file_type": "code", - "source_file": "tests/test_models.py", - "source_location": "L64", - "community": 61, - "norm_label": ".test_has_role_false()", - "id": "tests_test_models_testusermodel_test_has_role_false" + "source_file": "tests/test_input_validation.py", + "source_location": "L140", + "community": 25, + "norm_label": ".test_text_too_long()", + "id": "tests_test_input_validation_testchatvalidation_test_text_too_long" }, { - "label": ".test_has_role_with_enum()", + "label": ".test_max_length_boundary()", "file_type": "code", - "source_file": "tests/test_models.py", - "source_location": "L69", - "community": 61, - "norm_label": ".test_has_role_with_enum()", - "id": "tests_test_models_testusermodel_test_has_role_with_enum" + "source_file": "tests/test_input_validation.py", + "source_location": "L148", + "community": 25, + "norm_label": ".test_max_length_boundary()", + "id": "tests_test_input_validation_testchatvalidation_test_max_length_boundary" }, { - "label": ".test_toDict()", - "file_type": "code", - "source_file": "tests/test_models.py", - "source_location": "L77", - "community": 61, - "norm_label": ".test_todict()", - "id": "tests_test_models_testusermodel_test_toDict" - }, - { - "label": "TestStocksAPIKeyModel", - "file_type": "code", - "source_file": "tests/test_models.py", - "source_location": "L88", - "community": 37, - "norm_label": "teststocksapikeymodel", - "id": "tests_test_models_teststocksapikeymodel" - }, - { - "label": ".test_create_api_key()", + "label": "TestMissingBody", "file_type": "code", - "source_file": "tests/test_models.py", - "source_location": "L89", - "community": 37, - "norm_label": ".test_create_api_key()", - "id": "tests_test_models_teststocksapikeymodel_test_create_api_key" + "source_file": "tests/test_input_validation.py", + "source_location": "L158", + "community": 25, + "norm_label": "testmissingbody", + "id": "tests_test_input_validation_testmissingbody" }, { - "label": ".test_is_quota_exceeded_true()", + "label": ".test_register_missing_username()", "file_type": "code", - "source_file": "tests/test_models.py", - "source_location": "L98", - "community": 37, - "norm_label": ".test_is_quota_exceeded_true()", - "id": "tests_test_models_teststocksapikeymodel_test_is_quota_exceeded_true" + "source_file": "tests/test_input_validation.py", + "source_location": "L161", + "community": 25, + "norm_label": ".test_register_missing_username()", + "id": "tests_test_input_validation_testmissingbody_test_register_missing_username" }, { - "label": ".test_is_quota_exceeded_false()", + "label": ".test_register_missing_all()", "file_type": "code", - "source_file": "tests/test_models.py", - "source_location": "L104", - "community": 37, - "norm_label": ".test_is_quota_exceeded_false()", - "id": "tests_test_models_teststocksapikeymodel_test_is_quota_exceeded_false" + "source_file": "tests/test_input_validation.py", + "source_location": "L168", + "community": 25, + "norm_label": ".test_register_missing_all()", + "id": "tests_test_input_validation_testmissingbody_test_register_missing_all" }, { - "label": ".test_needs_reset_true_no_last_reset()", + "label": ".test_login_missing_fields()", "file_type": "code", - "source_file": "tests/test_models.py", - "source_location": "L110", - "community": 37, - "norm_label": ".test_needs_reset_true_no_last_reset()", - "id": "tests_test_models_teststocksapikeymodel_test_needs_reset_true_no_last_reset" + "source_file": "tests/test_input_validation.py", + "source_location": "L172", + "community": 25, + "norm_label": ".test_login_missing_fields()", + "id": "tests_test_input_validation_testmissingbody_test_login_missing_fields" }, { - "label": ".test_needs_reset_true_expired()", - "file_type": "code", - "source_file": "tests/test_models.py", - "source_location": "L115", - "community": 37, - "norm_label": ".test_needs_reset_true_expired()", - "id": "tests_test_models_teststocksapikeymodel_test_needs_reset_true_expired" + "label": "Tests for input validation via HTTP endpoints. Validation is now inline via Bod", + "file_type": "rationale", + "source_file": "tests/test_input_validation.py", + "source_location": "L1", + "community": 25, + "norm_label": "tests for input validation via http endpoints. validation is now inline via bod", + "id": "tests_test_input_validation_rationale_1" }, { - "label": ".test_needs_reset_false_recent()", - "file_type": "code", - "source_file": "tests/test_models.py", - "source_location": "L120", - "community": 37, - "norm_label": ".test_needs_reset_false_recent()", - "id": "tests_test_models_teststocksapikeymodel_test_needs_reset_false_recent" + "label": "POST /auth/register \u2014 validates username, email, password via Body(...)", + "file_type": "rationale", + "source_file": "tests/test_input_validation.py", + "source_location": "L15", + "community": 25, + "norm_label": "post /auth/register \u2014 validates username, email, password via body(...)", + "id": "tests_test_input_validation_rationale_15" }, { - "label": ".test_reset_quota()", - "file_type": "code", - "source_file": "tests/test_models.py", - "source_location": "L125", - "community": 37, - "norm_label": ".test_reset_quota()", - "id": "tests_test_models_teststocksapikeymodel_test_reset_quota" + "label": "POST /auth/login \u2014 validates username, password via Body(...)", + "file_type": "rationale", + "source_file": "tests/test_input_validation.py", + "source_location": "L55", + "community": 25, + "norm_label": "post /auth/login \u2014 validates username, password via body(...)", + "id": "tests_test_input_validation_rationale_55" }, { - "label": ".test_increment_usage()", - "file_type": "code", - "source_file": "tests/test_models.py", - "source_location": "L133", - "community": 37, - "norm_label": ".test_increment_usage()", - "id": "tests_test_models_teststocksapikeymodel_test_increment_usage" + "label": "POST /prometheus/sessions \u2014 validates title via Body(...)", + "file_type": "rationale", + "source_file": "tests/test_input_validation.py", + "source_location": "L81", + "community": 25, + "norm_label": "post /prometheus/sessions \u2014 validates title via body(...)", + "id": "tests_test_input_validation_rationale_81" }, { - "label": ".test_get_remaining_quota()", - "file_type": "code", - "source_file": "tests/test_models.py", - "source_location": "L139", - "community": 37, - "norm_label": ".test_get_remaining_quota()", - "id": "tests_test_models_teststocksapikeymodel_test_get_remaining_quota" + "label": "PUT /prometheus/sessions/{sessionId} \u2014 validates title via Body(...)", + "file_type": "rationale", + "source_file": "tests/test_input_validation.py", + "source_location": "L110", + "community": 25, + "norm_label": "put /prometheus/sessions/{sessionid} \u2014 validates title via body(...)", + "id": "tests_test_input_validation_rationale_110" }, { - "label": ".test_get_remaining_quota_exceeded()", - "file_type": "code", - "source_file": "tests/test_models.py", - "source_location": "L145", - "community": 37, - "norm_label": ".test_get_remaining_quota_exceeded()", - "id": "tests_test_models_teststocksapikeymodel_test_get_remaining_quota_exceeded" + "label": "POST /prometheus/chat/stream \u2014 validates query via Body(...)", + "file_type": "rationale", + "source_file": "tests/test_input_validation.py", + "source_location": "L130", + "community": 25, + "norm_label": "post /prometheus/chat/stream \u2014 validates query via body(...)", + "id": "tests_test_input_validation_rationale_130" }, { - "label": ".test_toDict()", - "file_type": "code", - "source_file": "tests/test_models.py", - "source_location": "L151", - "community": 37, - "norm_label": ".test_todict()", - "id": "tests_test_models_teststocksapikeymodel_test_toDict" + "label": "Test that endpoints reject requests with missing required fields.", + "file_type": "rationale", + "source_file": "tests/test_input_validation.py", + "source_location": "L159", + "community": 25, + "norm_label": "test that endpoints reject requests with missing required fields.", + "id": "tests_test_input_validation_rationale_159" }, { - "label": "TestPrometheusSessionModel", + "label": "test_logging_config_coverage.py", "file_type": "code", - "source_file": "tests/test_models.py", - "source_location": "L162", - "community": 125, - "norm_label": "testprometheussessionmodel", - "id": "tests_test_models_testprometheussessionmodel" + "source_file": "tests/test_logging_config_coverage.py", + "source_location": "L1", + "community": 188, + "norm_label": "test_logging_config_coverage.py", + "id": "tests_test_logging_config_coverage_py" }, { - "label": ".test_create_session()", + "label": "TestDiscordHandlerEmit", "file_type": "code", - "source_file": "tests/test_models.py", - "source_location": "L163", - "community": 125, - "norm_label": ".test_create_session()", - "id": "tests_test_models_testprometheussessionmodel_test_create_session" + "source_file": "tests/test_logging_config_coverage.py", + "source_location": "L8", + "community": 188, + "norm_label": "testdiscordhandleremit", + "id": "tests_test_logging_config_coverage_testdiscordhandleremit" }, { - "label": ".test_default_history()", + "label": "._make_handler()", "file_type": "code", - "source_file": "tests/test_models.py", - "source_location": "L172", - "community": 125, - "norm_label": ".test_default_history()", - "id": "tests_test_models_testprometheussessionmodel_test_default_history" + "source_file": "tests/test_logging_config_coverage.py", + "source_location": "L9", + "community": 188, + "norm_label": "._make_handler()", + "id": "tests_test_logging_config_coverage_testdiscordhandleremit_make_handler" }, { - "label": "test_oauth_cookie_security.py", + "label": "._make_record()", "file_type": "code", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L1", - "community": 40, - "norm_label": "test_oauth_cookie_security.py", - "id": "tests_test_oauth_cookie_security_py" + "source_file": "tests/test_logging_config_coverage.py", + "source_location": "L14", + "community": 188, + "norm_label": "._make_record()", + "id": "tests_test_logging_config_coverage_testdiscordhandleremit_make_record" }, { - "label": "_make_callback_client()", + "label": "test_discord_disabled()", "file_type": "code", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L17", - "community": 40, - "norm_label": "_make_callback_client()", - "id": "tests_test_oauth_cookie_security_make_callback_client" + "source_file": "tests/test_logging_config_coverage.py", + "source_location": "L27", + "community": 188, + "norm_label": "test_discord_disabled()", + "id": "tests_test_logging_config_coverage_test_discord_disabled" }, { - "label": "_setup_callback_mocks()", + "label": "test_discord_no_webhook()", "file_type": "code", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L30", - "community": 40, - "norm_label": "_setup_callback_mocks()", - "id": "tests_test_oauth_cookie_security_setup_callback_mocks" + "source_file": "tests/test_logging_config_coverage.py", + "source_location": "L35", + "community": 188, + "norm_label": "test_discord_no_webhook()", + "id": "tests_test_logging_config_coverage_test_discord_no_webhook" }, { - "label": "TestOAuthCallbackTokenNotInURL", + "label": "test_level_below_error()", "file_type": "code", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L56", - "community": 40, - "norm_label": "testoauthcallbacktokennotinurl", - "id": "tests_test_oauth_cookie_security_testoauthcallbacktokennotinurl" + "source_file": "tests/test_logging_config_coverage.py", + "source_location": "L43", + "community": 188, + "norm_label": "test_level_below_error()", + "id": "tests_test_logging_config_coverage_test_level_below_error" }, { - "label": "test_callback_with_state_redirect_no_token_in_url()", + "label": "test_submit_called_on_error()", "file_type": "code", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L63", - "community": 40, - "norm_label": "test_callback_with_state_redirect_no_token_in_url()", - "id": "tests_test_oauth_cookie_security_test_callback_with_state_redirect_no_token_in_url" + "source_file": "tests/test_logging_config_coverage.py", + "source_location": "L52", + "community": 188, + "norm_label": "test_submit_called_on_error()", + "id": "tests_test_logging_config_coverage_test_submit_called_on_error" }, { - "label": "test_callback_sets_httponly_cookie()", + "label": "test_message_truncation()", "file_type": "code", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L96", - "community": 40, - "norm_label": "test_callback_sets_httponly_cookie()", - "id": "tests_test_oauth_cookie_security_test_callback_sets_httponly_cookie" + "source_file": "tests/test_logging_config_coverage.py", + "source_location": "L62", + "community": 188, + "norm_label": "test_message_truncation()", + "id": "tests_test_logging_config_coverage_test_message_truncation" }, { - "label": "test_callback_cookies_have_secure_flag()", + "label": "test_exception_in_submit()", "file_type": "code", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L123", - "community": 40, - "norm_label": "test_callback_cookies_have_secure_flag()", - "id": "tests_test_oauth_cookie_security_test_callback_cookies_have_secure_flag" + "source_file": "tests/test_logging_config_coverage.py", + "source_location": "L77", + "community": 188, + "norm_label": "test_exception_in_submit()", + "id": "tests_test_logging_config_coverage_test_exception_in_submit" }, { - "label": "test_callback_no_state_returns_json_with_token()", + "label": "test_with_exception_info()", "file_type": "code", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L149", - "community": 40, - "norm_label": "test_callback_no_state_returns_json_with_token()", - "id": "tests_test_oauth_cookie_security_test_callback_no_state_returns_json_with_token" + "source_file": "tests/test_logging_config_coverage.py", + "source_location": "L88", + "community": 188, + "norm_label": "test_with_exception_info()", + "id": "tests_test_logging_config_coverage_test_with_exception_info" }, { - "label": "TestOAuthCallbackFrontendCompatibility", + "label": "TestSetupLogging", "file_type": "code", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L169", - "community": 40, - "norm_label": "testoauthcallbackfrontendcompatibility", - "id": "tests_test_oauth_cookie_security_testoauthcallbackfrontendcompatibility" + "source_file": "tests/test_logging_config_coverage.py", + "source_location": "L103", + "community": 188, + "norm_label": "testsetuplogging", + "id": "tests_test_logging_config_coverage_testsetuplogging" }, { - "label": "test_frontend_gets_token_from_cookie()", + "label": "test_setup_discord_handler_enabled()", "file_type": "code", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L176", - "community": 40, - "norm_label": "test_frontend_gets_token_from_cookie()", - "id": "tests_test_oauth_cookie_security_test_frontend_gets_token_from_cookie" + "source_file": "tests/test_logging_config_coverage.py", + "source_location": "L105", + "community": 122, + "norm_label": "test_setup_discord_handler_enabled()", + "id": "tests_test_logging_config_coverage_test_setup_discord_handler_enabled" }, { - "label": "test_open_redirect_blocked()", + "label": "test_setup_discord_handler_disabled()", "file_type": "code", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L210", - "community": 40, - "norm_label": "test_open_redirect_blocked()", - "id": "tests_test_oauth_cookie_security_test_open_redirect_blocked" + "source_file": "tests/test_logging_config_coverage.py", + "source_location": "L114", + "community": 122, + "norm_label": "test_setup_discord_handler_disabled()", + "id": "tests_test_logging_config_coverage_test_setup_discord_handler_disabled" }, { - "label": "Tests for OAuth callback security - JWT token should NOT be in URL. Token is de", + "label": "Tests for main/utils/logging_config.py \u2014 covers DiscordHandler branches.", "file_type": "rationale", - "source_file": "tests/test_oauth_cookie_security.py", + "source_file": "tests/test_logging_config_coverage.py", "source_location": "L1", - "community": 40, - "norm_label": "tests for oauth callback security - jwt token should not be in url. token is de", - "id": "tests_test_oauth_cookie_security_rationale_1" - }, - { - "label": "Return (client, app, mock_session) for testing Google callback.", - "file_type": "rationale", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L18", - "community": 40, - "norm_label": "return (client, app, mock_session) for testing google callback.", - "id": "tests_test_oauth_cookie_security_rationale_18" - }, - { - "label": "Helper to setup common mock values for callback tests.", - "file_type": "rationale", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L33", - "community": 40, - "norm_label": "helper to setup common mock values for callback tests.", - "id": "tests_test_oauth_cookie_security_rationale_33" - }, - { - "label": "Verify JWT token is NOT leaked in redirect URL after OAuth callback.", - "file_type": "rationale", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L57", - "community": 40, - "norm_label": "verify jwt token is not leaked in redirect url after oauth callback.", - "id": "tests_test_oauth_cookie_security_rationale_57" - }, - { - "label": "Token must NOT appear in redirect URL \u2014 cookie only.", - "file_type": "rationale", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L66", - "community": 299, - "norm_label": "token must not appear in redirect url \u2014 cookie only.", - "id": "tests_test_oauth_cookie_security_rationale_66" - }, - { - "label": "Cookie must be httponly (not accessible via JavaScript).", - "file_type": "rationale", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L97", - "community": 300, - "norm_label": "cookie must be httponly (not accessible via javascript).", - "id": "tests_test_oauth_cookie_security_rationale_97" + "community": 188, + "norm_label": "tests for main/utils/logging_config.py \u2014 covers discordhandler branches.", + "id": "tests_test_logging_config_coverage_rationale_1" }, { - "label": "Cookie should have secure flag (HTTPS only).", - "file_type": "rationale", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L124", - "community": 301, - "norm_label": "cookie should have secure flag (https only).", - "id": "tests_test_oauth_cookie_security_rationale_124" + "label": "test_memory_dedup.py", + "file_type": "code", + "source_file": "tests/test_memory_dedup.py", + "source_location": "L1", + "community": 140, + "norm_label": "test_memory_dedup.py", + "id": "tests_test_memory_dedup_py" }, { - "label": "When no state param, return JSON response (not redirect).", - "file_type": "rationale", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L152", - "community": 302, - "norm_label": "when no state param, return json response (not redirect).", - "id": "tests_test_oauth_cookie_security_rationale_152" + "label": "_create_memory()", + "file_type": "code", + "source_file": "tests/test_memory_dedup.py", + "source_location": "L8", + "community": 140, + "norm_label": "_create_memory()", + "id": "tests_test_memory_dedup_create_memory" }, { - "label": "Verify frontend can still auth after OAuth redirect via cookie.", - "file_type": "rationale", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L170", - "community": 40, - "norm_label": "verify frontend can still auth after oauth redirect via cookie.", - "id": "tests_test_oauth_cookie_security_rationale_170" + "label": "_count_memories()", + "file_type": "code", + "source_file": "tests/test_memory_dedup.py", + "source_location": "L12", + "community": 140, + "norm_label": "_count_memories()", + "id": "tests_test_memory_dedup_count_memories" }, { - "label": "After OAuth redirect, httponly cookie contains the token.", - "file_type": "rationale", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L177", - "community": 303, - "norm_label": "after oauth redirect, httponly cookie contains the token.", - "id": "tests_test_oauth_cookie_security_rationale_177" + "label": "_get_memory()", + "file_type": "code", + "source_file": "tests/test_memory_dedup.py", + "source_location": "L20", + "community": 140, + "norm_label": "_get_memory()", + "id": "tests_test_memory_dedup_get_memory" }, { - "label": "Non-localhost redirect URLs must be rejected.", - "file_type": "rationale", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L211", - "community": 304, - "norm_label": "non-localhost redirect urls must be rejected.", - "id": "tests_test_oauth_cookie_security_rationale_211" + "label": "TestExactSameKeyUpdates", + "file_type": "code", + "source_file": "tests/test_memory_dedup.py", + "source_location": "L28", + "community": 140, + "norm_label": "testexactsamekeyupdates", + "id": "tests_test_memory_dedup_testexactsamekeyupdates" }, { - "label": "test_pagination.py", + "label": ".test_exact_same_key_updates()", "file_type": "code", - "source_file": "tests/test_pagination.py", - "source_location": "L1", - "community": 504, - "norm_label": "test_pagination.py", - "id": "tests_test_pagination_py" + "source_file": "tests/test_memory_dedup.py", + "source_location": "L29", + "community": 140, + "norm_label": ".test_exact_same_key_updates()", + "id": "tests_test_memory_dedup_testexactsamekeyupdates_test_exact_same_key_updates" }, { - "label": "app()", + "label": "TestSimilarKeyMerges", "file_type": "code", - "source_file": "tests/test_pagination.py", - "source_location": "L14", - "community": 504, - "norm_label": "app()", - "id": "tests_test_pagination_app" + "source_file": "tests/test_memory_dedup.py", + "source_location": "L36", + "community": 140, + "norm_label": "testsimilarkeymerges", + "id": "tests_test_memory_dedup_testsimilarkeymerges" }, { - "label": "client()", + "label": ".test_similar_key_merges()", "file_type": "code", - "source_file": "tests/test_pagination.py", - "source_location": "L35", - "community": 504, - "norm_label": "client()", - "id": "tests_test_pagination_client" + "source_file": "tests/test_memory_dedup.py", + "source_location": "L37", + "community": 140, + "norm_label": ".test_similar_key_merges()", + "id": "tests_test_memory_dedup_testsimilarkeymerges_test_similar_key_merges" }, { - "label": "TestInlinePagination", + "label": "TestDifferentKeysNoMerge", "file_type": "code", - "source_file": "tests/test_pagination.py", - "source_location": "L39", - "community": 504, - "norm_label": "testinlinepagination", - "id": "tests_test_pagination_testinlinepagination" + "source_file": "tests/test_memory_dedup.py", + "source_location": "L46", + "community": 140, + "norm_label": "testdifferentkeysnomerge", + "id": "tests_test_memory_dedup_testdifferentkeysnomerge" }, { - "label": ".test_defaults()", + "label": ".test_different_keys_no_merge()", "file_type": "code", - "source_file": "tests/test_pagination.py", - "source_location": "L40", - "community": 504, - "norm_label": ".test_defaults()", - "id": "tests_test_pagination_testinlinepagination_test_defaults" + "source_file": "tests/test_memory_dedup.py", + "source_location": "L47", + "community": 140, + "norm_label": ".test_different_keys_no_merge()", + "id": "tests_test_memory_dedup_testdifferentkeysnomerge_test_different_keys_no_merge" }, { - "label": ".test_custom_limit()", + "label": "TestMergeBoostsScore", "file_type": "code", - "source_file": "tests/test_pagination.py", - "source_location": "L48", - "community": 504, - "norm_label": ".test_custom_limit()", - "id": "tests_test_pagination_testinlinepagination_test_custom_limit" + "source_file": "tests/test_memory_dedup.py", + "source_location": "L55", + "community": 140, + "norm_label": "testmergeboostsscore", + "id": "tests_test_memory_dedup_testmergeboostsscore" }, { - "label": ".test_custom_offset()", + "label": ".test_merge_boosts_score()", "file_type": "code", - "source_file": "tests/test_pagination.py", - "source_location": "L54", - "community": 504, - "norm_label": ".test_custom_offset()", - "id": "tests_test_pagination_testinlinepagination_test_custom_offset" + "source_file": "tests/test_memory_dedup.py", + "source_location": "L56", + "community": 140, + "norm_label": ".test_merge_boosts_score()", + "id": "tests_test_memory_dedup_testmergeboostsscore_test_merge_boosts_score" }, { - "label": ".test_limit_and_offset()", + "label": "TestMergeIncrementsAccess", "file_type": "code", - "source_file": "tests/test_pagination.py", - "source_location": "L61", - "community": 504, - "norm_label": ".test_limit_and_offset()", - "id": "tests_test_pagination_testinlinepagination_test_limit_and_offset" + "source_file": "tests/test_memory_dedup.py", + "source_location": "L64", + "community": 140, + "norm_label": "testmergeincrementsaccess", + "id": "tests_test_memory_dedup_testmergeincrementsaccess" }, { - "label": ".test_limit_exceeds_max_rejected()", + "label": ".test_merge_increments_access()", "file_type": "code", - "source_file": "tests/test_pagination.py", - "source_location": "L69", - "community": 504, - "norm_label": ".test_limit_exceeds_max_rejected()", - "id": "tests_test_pagination_testinlinepagination_test_limit_exceeds_max_rejected" + "source_file": "tests/test_memory_dedup.py", + "source_location": "L65", + "community": 140, + "norm_label": ".test_merge_increments_access()", + "id": "tests_test_memory_dedup_testmergeincrementsaccess_test_merge_increments_access" }, { - "label": ".test_limit_zero_rejected()", + "label": "TestThresholdBoundary", "file_type": "code", - "source_file": "tests/test_pagination.py", + "source_file": "tests/test_memory_dedup.py", "source_location": "L73", - "community": 504, - "norm_label": ".test_limit_zero_rejected()", - "id": "tests_test_pagination_testinlinepagination_test_limit_zero_rejected" + "community": 140, + "norm_label": "testthresholdboundary", + "id": "tests_test_memory_dedup_testthresholdboundary" }, { - "label": ".test_negative_offset_rejected()", + "label": ".test_threshold_boundary()", "file_type": "code", - "source_file": "tests/test_pagination.py", - "source_location": "L77", - "community": 504, - "norm_label": ".test_negative_offset_rejected()", - "id": "tests_test_pagination_testinlinepagination_test_negative_offset_rejected" + "source_file": "tests/test_memory_dedup.py", + "source_location": "L74", + "community": 140, + "norm_label": ".test_threshold_boundary()", + "id": "tests_test_memory_dedup_testthresholdboundary_test_threshold_boundary" }, { - "label": ".test_offset_beyond_total()", - "file_type": "code", - "source_file": "tests/test_pagination.py", - "source_location": "L81", - "community": 504, - "norm_label": ".test_offset_beyond_total()", - "id": "tests_test_pagination_testinlinepagination_test_offset_beyond_total" + "label": "Keys with Jaccard > 0.8 should merge.", + "file_type": "rationale", + "source_file": "tests/test_memory_dedup.py", + "source_location": "L38", + "community": 140, + "norm_label": "keys with jaccard > 0.8 should merge.", + "id": "tests_test_memory_dedup_rationale_38" }, { - "label": ".test_limit_equals_max()", - "file_type": "code", - "source_file": "tests/test_pagination.py", - "source_location": "L86", - "community": 504, - "norm_label": ".test_limit_equals_max()", - "id": "tests_test_pagination_testinlinepagination_test_limit_equals_max" + "label": "Keys with low similarity should not merge.", + "file_type": "rationale", + "source_file": "tests/test_memory_dedup.py", + "source_location": "L48", + "community": 140, + "norm_label": "keys with low similarity should not merge.", + "id": "tests_test_memory_dedup_rationale_48" }, { - "label": "Tests for inline pagination params (used in user + prometheus controllers).", + "label": "Keys with Jaccard <= 0.8 should not merge.", "file_type": "rationale", - "source_file": "tests/test_pagination.py", - "source_location": "L1", - "community": 504, - "norm_label": "tests for inline pagination params (used in user + prometheus controllers).", - "id": "tests_test_pagination_rationale_1" + "source_file": "tests/test_memory_dedup.py", + "source_location": "L75", + "community": 140, + "norm_label": "keys with jaccard <= 0.8 should not merge.", + "id": "tests_test_memory_dedup_rationale_75" }, { - "label": "test_prometheus_auth_coverage.py", + "label": "test_memory_maintenance.py", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", + "source_file": "tests/test_memory_maintenance.py", "source_location": "L1", - "community": 29, - "norm_label": "test_prometheus_auth_coverage.py", - "id": "tests_test_prometheus_auth_coverage_py" + "community": 518, + "norm_label": "test_memory_maintenance.py", + "id": "tests_test_memory_maintenance_py" }, { - "label": "TestPrometheusInit", + "label": "brt()", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L26", - "community": 68, - "norm_label": "testprometheusinit", - "id": "tests_test_prometheus_auth_coverage_testprometheusinit" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L18", + "community": 518, + "norm_label": "brt()", + "id": "tests_test_memory_maintenance_brt" }, { - "label": "test_init_creates_client()", + "label": "create_memories()", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L31", - "community": 29, - "norm_label": "test_init_creates_client()", - "id": "tests_test_prometheus_auth_coverage_test_init_creates_client" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L23", + "community": 518, + "norm_label": "create_memories()", + "id": "tests_test_memory_maintenance_create_memories" }, { - "label": "TestPrometheusSendMessage", + "label": "TestDecay", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L41", - "community": 68, - "norm_label": "testprometheussendmessage", - "id": "tests_test_prometheus_auth_coverage_testprometheussendmessage" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L46", + "community": 518, + "norm_label": "testdecay", + "id": "tests_test_memory_maintenance_testdecay" }, { - "label": "test_send_message_basic()", + "label": ".test_active_memory_decays()", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L49", - "community": 29, - "norm_label": "test_send_message_basic()", - "id": "tests_test_prometheus_auth_coverage_test_send_message_basic" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L47", + "community": 518, + "norm_label": ".test_active_memory_decays()", + "id": "tests_test_memory_maintenance_testdecay_test_active_memory_decays" }, { - "label": "test_send_message_saves_user_message_on_error()", + "label": ".test_zero_access_count_still_decays()", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L78", - "community": 29, - "norm_label": "test_send_message_saves_user_message_on_error()", - "id": "tests_test_prometheus_auth_coverage_test_send_message_saves_user_message_on_error" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L54", + "community": 518, + "norm_label": ".test_zero_access_count_still_decays()", + "id": "tests_test_memory_maintenance_testdecay_test_zero_access_count_still_decays" }, { - "label": "test_send_message_with_history()", + "label": ".test_high_score_decays_proportionally()", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L101", - "community": 29, - "norm_label": "test_send_message_with_history()", - "id": "tests_test_prometheus_auth_coverage_test_send_message_with_history" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L61", + "community": 518, + "norm_label": ".test_high_score_decays_proportionally()", + "id": "tests_test_memory_maintenance_testdecay_test_high_score_decays_proportionally" }, { - "label": "test_stream_message_yields_text_chunks()", + "label": ".test_very_low_score_stays_above_zero()", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L124", - "community": 138, - "norm_label": "test_stream_message_yields_text_chunks()", - "id": "tests_test_prometheus_auth_coverage_test_stream_message_yields_text_chunks" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L67", + "community": 518, + "norm_label": ".test_very_low_score_stays_above_zero()", + "id": "tests_test_memory_maintenance_testdecay_test_very_low_score_stays_above_zero" }, { - "label": "test_stream_message_handles_function_calls()", + "label": ".test_multiple_users_all_decayed()", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L175", - "community": 29, - "norm_label": "test_stream_message_handles_function_calls()", - "id": "tests_test_prometheus_auth_coverage_test_stream_message_handles_function_calls" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L74", + "community": 518, + "norm_label": ".test_multiple_users_all_decayed()", + "id": "tests_test_memory_maintenance_testdecay_test_multiple_users_all_decayed" }, { - "label": "TestPrometheusChatManager", + "label": "TestArchive", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L245", - "community": 52, - "norm_label": "testprometheuschatmanager", - "id": "tests_test_prometheus_auth_coverage_testprometheuschatmanager" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L84", + "community": 140, + "norm_label": "testarchive", + "id": "tests_test_memory_maintenance_testarchive" }, { - "label": ".test_init()", + "label": ".test_dead_memory_archived()", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L248", - "community": 68, - "norm_label": ".test_init()", - "id": "tests_test_prometheus_auth_coverage_testprometheuschatmanager_test_init" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L85", + "community": 544, + "norm_label": ".test_dead_memory_archived()", + "id": "tests_test_memory_maintenance_testarchive_test_dead_memory_archived" }, { - "label": ".test_get_user_sessions()", + "label": ".test_low_score_but_recent_not_archived()", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L254", - "community": 52, - "norm_label": ".test_get_user_sessions()", - "id": "tests_test_prometheus_auth_coverage_testprometheuschatmanager_test_get_user_sessions" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L92", + "community": 570, + "norm_label": ".test_low_score_but_recent_not_archived()", + "id": "tests_test_memory_maintenance_testarchive_test_low_score_but_recent_not_archived" }, { - "label": ".test_create_session()", + "label": ".test_zero_access_but_high_score_not_archived()", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L280", - "community": 52, - "norm_label": ".test_create_session()", - "id": "tests_test_prometheus_auth_coverage_testprometheuschatmanager_test_create_session" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L99", + "community": 539, + "norm_label": ".test_zero_access_but_high_score_not_archived()", + "id": "tests_test_memory_maintenance_testarchive_test_zero_access_but_high_score_not_archived" }, { - "label": ".test_update_session_title_found()", + "label": ".test_accessed_memory_not_archived()", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L291", - "community": 52, - "norm_label": ".test_update_session_title_found()", - "id": "tests_test_prometheus_auth_coverage_testprometheuschatmanager_test_update_session_title_found" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L106", + "community": 570, + "norm_label": ".test_accessed_memory_not_archived()", + "id": "tests_test_memory_maintenance_testarchive_test_accessed_memory_not_archived" }, { - "label": ".test_update_session_title_not_found()", + "label": ".test_already_archived_not_double_archived()", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L303", - "community": 52, - "norm_label": ".test_update_session_title_not_found()", - "id": "tests_test_prometheus_auth_coverage_testprometheuschatmanager_test_update_session_title_not_found" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L113", + "community": 574, + "norm_label": ".test_already_archived_not_double_archived()", + "id": "tests_test_memory_maintenance_testarchive_test_already_archived_not_double_archived" }, { - "label": ".test_save_message_found()", + "label": ".test_multiple_users_independent_archive()", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L312", - "community": 52, - "norm_label": ".test_save_message_found()", - "id": "tests_test_prometheus_auth_coverage_testprometheuschatmanager_test_save_message_found" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L123", + "community": 518, + "norm_label": ".test_multiple_users_independent_archive()", + "id": "tests_test_memory_maintenance_testarchive_test_multiple_users_independent_archive" }, { - "label": ".test_save_message_history_none()", + "label": "TestDecayAndArchiveTogether", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L328", - "community": 52, - "norm_label": ".test_save_message_history_none()", - "id": "tests_test_prometheus_auth_coverage_testprometheuschatmanager_test_save_message_history_none" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L133", + "community": 518, + "norm_label": "testdecayandarchivetogether", + "id": "tests_test_memory_maintenance_testdecayandarchivetogether" }, { - "label": ".test_save_message_not_found()", + "label": ".test_decay_then_archive_check()", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L347", - "community": 52, - "norm_label": ".test_save_message_not_found()", - "id": "tests_test_prometheus_auth_coverage_testprometheuschatmanager_test_save_message_not_found" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L134", + "community": 518, + "norm_label": ".test_decay_then_archive_check()", + "id": "tests_test_memory_maintenance_testdecayandarchivetogether_test_decay_then_archive_check" }, { - "label": ".test_get_history_with_messages()", + "label": ".test_score_above_threshold_after_decay_not_archived()", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L356", - "community": 52, - "norm_label": ".test_get_history_with_messages()", - "id": "tests_test_prometheus_auth_coverage_testprometheuschatmanager_test_get_history_with_messages" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L143", + "community": 518, + "norm_label": ".test_score_above_threshold_after_decay_not_archived()", + "id": "tests_test_memory_maintenance_testdecayandarchivetogether_test_score_above_threshold_after_decay_not_archived" }, { - "label": ".test_get_history_empty()", + "label": ".test_score_just_below_threshold_archived()", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L373", - "community": 52, - "norm_label": ".test_get_history_empty()", - "id": "tests_test_prometheus_auth_coverage_testprometheuschatmanager_test_get_history_empty" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L150", + "community": 518, + "norm_label": ".test_score_just_below_threshold_archived()", + "id": "tests_test_memory_maintenance_testdecayandarchivetogether_test_score_just_below_threshold_archived" }, { - "label": ".test_get_history_no_history()", + "label": ".test_days_just_below_threshold_not_archived()", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L382", - "community": 52, - "norm_label": ".test_get_history_no_history()", - "id": "tests_test_prometheus_auth_coverage_testprometheuschatmanager_test_get_history_no_history" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L156", + "community": 518, + "norm_label": ".test_days_just_below_threshold_not_archived()", + "id": "tests_test_memory_maintenance_testdecayandarchivetogether_test_days_just_below_threshold_not_archived" }, { - "label": ".test_get_history_with_limit()", + "label": ".test_days_just_above_threshold_archived()", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L393", - "community": 52, - "norm_label": ".test_get_history_with_limit()", - "id": "tests_test_prometheus_auth_coverage_testprometheuschatmanager_test_get_history_with_limit" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L163", + "community": 518, + "norm_label": ".test_days_just_above_threshold_archived()", + "id": "tests_test_memory_maintenance_testdecayandarchivetogether_test_days_just_above_threshold_archived" }, { - "label": ".test_update_summary_found()", + "label": "TestEmptyDatabase", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L404", - "community": 52, - "norm_label": ".test_update_summary_found()", - "id": "tests_test_prometheus_auth_coverage_testprometheuschatmanager_test_update_summary_found" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L170", + "community": 140, + "norm_label": "testemptydatabase", + "id": "tests_test_memory_maintenance_testemptydatabase" }, { - "label": ".test_update_summary_not_found()", + "label": ".test_no_memories_does_not_crash()", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L415", - "community": 52, - "norm_label": ".test_update_summary_not_found()", - "id": "tests_test_prometheus_auth_coverage_testprometheuschatmanager_test_update_summary_not_found" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L171", + "community": 570, + "norm_label": ".test_no_memories_does_not_crash()", + "id": "tests_test_memory_maintenance_testemptydatabase_test_no_memories_does_not_crash" }, { - "label": ".test_delete_session_found()", - "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L424", - "community": 52, - "norm_label": ".test_delete_session_found()", - "id": "tests_test_prometheus_auth_coverage_testprometheuschatmanager_test_delete_session_found" + "label": "Helper to create memories with controlled baseScore, lastAccessedAt, accessCount", + "file_type": "rationale", + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L24", + "community": 518, + "norm_label": "helper to create memories with controlled basescore, lastaccessedat, accesscount", + "id": "tests_test_memory_maintenance_rationale_24" }, { - "label": ".test_delete_session_not_found()", - "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L436", - "community": 52, - "norm_label": ".test_delete_session_not_found()", - "id": "tests_test_prometheus_auth_coverage_testprometheuschatmanager_test_delete_session_not_found" + "label": "Decay applies to ALL active memories, not just accessed ones.", + "file_type": "rationale", + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L55", + "community": 518, + "norm_label": "decay applies to all active memories, not just accessed ones.", + "id": "tests_test_memory_maintenance_rationale_55" }, { - "label": ".test_verify_session_ownership_true()", - "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L445", - "community": 52, - "norm_label": ".test_verify_session_ownership_true()", - "id": "tests_test_prometheus_auth_coverage_testprometheuschatmanager_test_verify_session_ownership_true" + "label": "baseScore should never reach exactly 0 from decay alone.", + "file_type": "rationale", + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L68", + "community": 518, + "norm_label": "basescore should never reach exactly 0 from decay alone.", + "id": "tests_test_memory_maintenance_rationale_68" }, { - "label": ".test_verify_session_ownership_false()", - "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L454", - "community": 52, - "norm_label": ".test_verify_session_ownership_false()", - "id": "tests_test_prometheus_auth_coverage_testprometheuschatmanager_test_verify_session_ownership_false" + "label": "Score below threshold + accessCount=0 + 90+ days \u2192 archived.", + "file_type": "rationale", + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L86", + "community": 544, + "norm_label": "score below threshold + accesscount=0 + 90+ days \u2192 archived.", + "id": "tests_test_memory_maintenance_rationale_86" }, { - "label": "TestAuthenticationManager", - "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L469", - "community": 88, - "norm_label": "testauthenticationmanager", - "id": "tests_test_prometheus_auth_coverage_testauthenticationmanager" + "label": "Low score but accessed recently \u2192 not archived.", + "file_type": "rationale", + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L93", + "community": 570, + "norm_label": "low score but accessed recently \u2192 not archived.", + "id": "tests_test_memory_maintenance_rationale_93" }, { - "label": "test_create_user_account_success()", - "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L473", - "community": 29, - "norm_label": "test_create_user_account_success()", - "id": "tests_test_prometheus_auth_coverage_test_create_user_account_success" + "label": "Zero access but score still above threshold \u2192 not archived.", + "file_type": "rationale", + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L100", + "community": 539, + "norm_label": "zero access but score still above threshold \u2192 not archived.", + "id": "tests_test_memory_maintenance_rationale_100" }, { - "label": ".test_create_user_account_no_password_no_google()", - "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L485", - "community": 88, - "norm_label": ".test_create_user_account_no_password_no_google()", - "id": "tests_test_prometheus_auth_coverage_testauthenticationmanager_test_create_user_account_no_password_no_google" + "label": "Even with low score, if accessed \u2192 not archived.", + "file_type": "rationale", + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L107", + "community": 570, + "norm_label": "even with low score, if accessed \u2192 not archived.", + "id": "tests_test_memory_maintenance_rationale_107" }, { - "label": ".test_create_user_account_username_taken()", - "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L496", - "community": 88, - "norm_label": ".test_create_user_account_username_taken()", - "id": "tests_test_prometheus_auth_coverage_testauthenticationmanager_test_create_user_account_username_taken" + "label": "Already archived memories are skipped.", + "file_type": "rationale", + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L114", + "community": 574, + "norm_label": "already archived memories are skipped.", + "id": "tests_test_memory_maintenance_rationale_114" }, { - "label": ".test_create_user_account_email_taken()", - "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L510", - "community": 88, - "norm_label": ".test_create_user_account_email_taken()", - "id": "tests_test_prometheus_auth_coverage_testauthenticationmanager_test_create_user_account_email_taken" - }, - { - "label": "test_create_user_account_db_exception()", - "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L525", - "community": 29, - "norm_label": "test_create_user_account_db_exception()", - "id": "tests_test_prometheus_auth_coverage_test_create_user_account_db_exception" - }, - { - "label": ".test_create_user_account_with_google_id()", - "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L539", - "community": 88, - "norm_label": ".test_create_user_account_with_google_id()", - "id": "tests_test_prometheus_auth_coverage_testauthenticationmanager_test_create_user_account_with_google_id" - }, - { - "label": ".test_authenticate_google_user_found()", - "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L548", - "community": 88, - "norm_label": ".test_authenticate_google_user_found()", - "id": "tests_test_prometheus_auth_coverage_testauthenticationmanager_test_authenticate_google_user_found" - }, - { - "label": ".test_authenticate_google_user_not_found()", - "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L563", - "community": 88, - "norm_label": ".test_authenticate_google_user_not_found()", - "id": "tests_test_prometheus_auth_coverage_testauthenticationmanager_test_authenticate_google_user_not_found" - }, - { - "label": ".test_authenticate_google_user_exception()", - "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L572", - "community": 88, - "norm_label": ".test_authenticate_google_user_exception()", - "id": "tests_test_prometheus_auth_coverage_testauthenticationmanager_test_authenticate_google_user_exception" - }, - { - "label": "test_authenticate_user_success()", - "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L582", - "community": 29, - "norm_label": "test_authenticate_user_success()", - "id": "tests_test_prometheus_auth_coverage_test_authenticate_user_success" - }, - { - "label": "test_authenticate_user_wrong_password()", - "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L599", - "community": 29, - "norm_label": "test_authenticate_user_wrong_password()", - "id": "tests_test_prometheus_auth_coverage_test_authenticate_user_wrong_password" + "label": "Decay happens first, then archive check with new scores.", + "file_type": "rationale", + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L135", + "community": 518, + "norm_label": "decay happens first, then archive check with new scores.", + "id": "tests_test_memory_maintenance_rationale_135" }, { - "label": ".test_authenticate_user_not_found()", - "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L611", - "community": 88, - "norm_label": ".test_authenticate_user_not_found()", - "id": "tests_test_prometheus_auth_coverage_testauthenticationmanager_test_authenticate_user_not_found" + "label": "Score that decays to >= threshold stays alive. 0.12 * 0.90 = 0.108 >= 0.1.", + "file_type": "rationale", + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L144", + "community": 518, + "norm_label": "score that decays to >= threshold stays alive. 0.12 * 0.90 = 0.108 >= 0.1.", + "id": "tests_test_memory_maintenance_rationale_144" }, { - "label": ".test_authenticate_user_no_password_hash()", - "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L620", - "community": 88, - "norm_label": ".test_authenticate_user_no_password_hash()", - "id": "tests_test_prometheus_auth_coverage_testauthenticationmanager_test_authenticate_user_no_password_hash" + "label": "89 days with low score \u2192 not archived (need > 90).", + "file_type": "rationale", + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L157", + "community": 518, + "norm_label": "89 days with low score \u2192 not archived (need > 90).", + "id": "tests_test_memory_maintenance_rationale_157" }, { - "label": ".test_authenticate_user_exception()", + "label": "test_memory_manager.py", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L631", - "community": 88, - "norm_label": ".test_authenticate_user_exception()", - "id": "tests_test_prometheus_auth_coverage_testauthenticationmanager_test_authenticate_user_exception" + "source_file": "tests/test_memory_manager.py", + "source_location": "L1", + "community": 140, + "norm_label": "test_memory_manager.py", + "id": "tests_test_memory_manager_py" }, { - "label": "TestSessionManager", + "label": "TestGetMemoryLimit", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L646", - "community": 60, - "norm_label": "testsessionmanager", - "id": "tests_test_prometheus_auth_coverage_testsessionmanager" + "source_file": "tests/test_memory_manager.py", + "source_location": "L8", + "community": 140, + "norm_label": "testgetmemorylimit", + "id": "tests_test_memory_manager_testgetmemorylimit" }, { - "label": "test_create_session()", + "label": ".test_basic_user()", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L652", - "community": 29, - "norm_label": "test_create_session()", - "id": "tests_test_prometheus_auth_coverage_test_create_session" + "source_file": "tests/test_memory_manager.py", + "source_location": "L9", + "community": 140, + "norm_label": ".test_basic_user()", + "id": "tests_test_memory_manager_testgetmemorylimit_test_basic_user" }, { - "label": "test_create_session_custom_expiry()", + "label": ".test_premium_user()", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L679", - "community": 29, - "norm_label": "test_create_session_custom_expiry()", - "id": "tests_test_prometheus_auth_coverage_test_create_session_custom_expiry" + "source_file": "tests/test_memory_manager.py", + "source_location": "L12", + "community": 140, + "norm_label": ".test_premium_user()", + "id": "tests_test_memory_manager_testgetmemorylimit_test_premium_user" }, { - "label": ".test_get_user_sessions_active_only()", + "label": ".test_admin_user()", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L697", - "community": 60, - "norm_label": ".test_get_user_sessions_active_only()", - "id": "tests_test_prometheus_auth_coverage_testsessionmanager_test_get_user_sessions_active_only" + "source_file": "tests/test_memory_manager.py", + "source_location": "L15", + "community": 140, + "norm_label": ".test_admin_user()", + "id": "tests_test_memory_manager_testgetmemorylimit_test_admin_user" }, { - "label": ".test_get_user_sessions_include_inactive()", + "label": "TestUpsertMemory", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L708", - "community": 60, - "norm_label": ".test_get_user_sessions_include_inactive()", - "id": "tests_test_prometheus_auth_coverage_testsessionmanager_test_get_user_sessions_include_inactive" + "source_file": "tests/test_memory_manager.py", + "source_location": "L19", + "community": 140, + "norm_label": "testupsertmemory", + "id": "tests_test_memory_manager_testupsertmemory" }, { - "label": ".test_get_session_by_id()", + "label": ".test_create()", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L718", - "community": 60, - "norm_label": ".test_get_session_by_id()", - "id": "tests_test_prometheus_auth_coverage_testsessionmanager_test_get_session_by_id" + "source_file": "tests/test_memory_manager.py", + "source_location": "L20", + "community": 140, + "norm_label": ".test_create()", + "id": "tests_test_memory_manager_testupsertmemory_test_create" }, { - "label": ".test_get_session_by_id_no_user_id()", + "label": ".test_update()", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L728", - "community": 60, - "norm_label": ".test_get_session_by_id_no_user_id()", - "id": "tests_test_prometheus_auth_coverage_testsessionmanager_test_get_session_by_id_no_user_id" + "source_file": "tests/test_memory_manager.py", + "source_location": "L33", + "community": 140, + "norm_label": ".test_update()", + "id": "tests_test_memory_manager_testupsertmemory_test_update" }, { - "label": ".test_get_current_session()", + "label": ".test_unchanged()", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L738", - "community": 60, - "norm_label": ".test_get_current_session()", - "id": "tests_test_prometheus_auth_coverage_testsessionmanager_test_get_current_session" + "source_file": "tests/test_memory_manager.py", + "source_location": "L40", + "community": 140, + "norm_label": ".test_unchanged()", + "id": "tests_test_memory_manager_testupsertmemory_test_unchanged" }, { - "label": ".test_revoke_session_found()", + "label": ".test_limit_enforcement()", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L747", - "community": 60, - "norm_label": ".test_revoke_session_found()", - "id": "tests_test_prometheus_auth_coverage_testsessionmanager_test_revoke_session_found" + "source_file": "tests/test_memory_manager.py", + "source_location": "L45", + "community": 140, + "norm_label": ".test_limit_enforcement()", + "id": "tests_test_memory_manager_testupsertmemory_test_limit_enforcement" }, { - "label": ".test_revoke_session_not_found()", + "label": ".test_limit_not_enforced_without_roles()", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L759", - "community": 60, - "norm_label": ".test_revoke_session_not_found()", - "id": "tests_test_prometheus_auth_coverage_testsessionmanager_test_revoke_session_not_found" + "source_file": "tests/test_memory_manager.py", + "source_location": "L59", + "community": 140, + "norm_label": ".test_limit_not_enforced_without_roles()", + "id": "tests_test_memory_manager_testupsertmemory_test_limit_not_enforced_without_roles" }, { - "label": ".test_revoke_all_sessions()", + "label": ".test_upsert_with_embedding()", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L768", - "community": 60, - "norm_label": ".test_revoke_all_sessions()", - "id": "tests_test_prometheus_auth_coverage_testsessionmanager_test_revoke_all_sessions" + "source_file": "tests/test_memory_manager.py", + "source_location": "L66", + "community": 140, + "norm_label": ".test_upsert_with_embedding()", + "id": "tests_test_memory_manager_testupsertmemory_test_upsert_with_embedding" }, { - "label": ".test_revoke_all_sessions_with_except()", + "label": "TestCountMemories", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L779", - "community": 60, - "norm_label": ".test_revoke_all_sessions_with_except()", - "id": "tests_test_prometheus_auth_coverage_testsessionmanager_test_revoke_all_sessions_with_except" + "source_file": "tests/test_memory_manager.py", + "source_location": "L80", + "community": 140, + "norm_label": "testcountmemories", + "id": "tests_test_memory_manager_testcountmemories" }, { - "label": ".test_update_last_active_found()", + "label": ".test_counts_active()", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L789", - "community": 60, - "norm_label": ".test_update_last_active_found()", - "id": "tests_test_prometheus_auth_coverage_testsessionmanager_test_update_last_active_found" + "source_file": "tests/test_memory_manager.py", + "source_location": "L81", + "community": 140, + "norm_label": ".test_counts_active()", + "id": "tests_test_memory_manager_testcountmemories_test_counts_active" }, { - "label": ".test_update_last_active_not_found()", + "label": ".test_excludes_archived()", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L800", - "community": 60, - "norm_label": ".test_update_last_active_not_found()", - "id": "tests_test_prometheus_auth_coverage_testsessionmanager_test_update_last_active_not_found" + "source_file": "tests/test_memory_manager.py", + "source_location": "L86", + "community": 140, + "norm_label": ".test_excludes_archived()", + "id": "tests_test_memory_manager_testcountmemories_test_excludes_archived" }, { - "label": "test_cleanup_expired_sessions()", + "label": ".test_counts_per_user()", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L810", - "community": 29, - "norm_label": "test_cleanup_expired_sessions()", - "id": "tests_test_prometheus_auth_coverage_test_cleanup_expired_sessions" + "source_file": "tests/test_memory_manager.py", + "source_location": "L94", + "community": 140, + "norm_label": ".test_counts_per_user()", + "id": "tests_test_memory_manager_testcountmemories_test_counts_per_user" }, { - "label": "test_cleanup_expired_sessions_none_expired()", + "label": "TestGetUserMemories", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L823", - "community": 29, - "norm_label": "test_cleanup_expired_sessions_none_expired()", - "id": "tests_test_prometheus_auth_coverage_test_cleanup_expired_sessions_none_expired" + "source_file": "tests/test_memory_manager.py", + "source_location": "L101", + "community": 140, + "norm_label": "testgetusermemories", + "id": "tests_test_memory_manager_testgetusermemories" }, { - "label": ".test_validate_session_active()", + "label": ".test_returns_memories()", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L834", - "community": 60, - "norm_label": ".test_validate_session_active()", - "id": "tests_test_prometheus_auth_coverage_testsessionmanager_test_validate_session_active" + "source_file": "tests/test_memory_manager.py", + "source_location": "L102", + "community": 140, + "norm_label": ".test_returns_memories()", + "id": "tests_test_memory_manager_testgetusermemories_test_returns_memories" }, { - "label": ".test_validate_session_not_found()", + "label": ".test_pagination()", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L846", - "community": 60, - "norm_label": ".test_validate_session_not_found()", - "id": "tests_test_prometheus_auth_coverage_testsessionmanager_test_validate_session_not_found" + "source_file": "tests/test_memory_manager.py", + "source_location": "L109", + "community": 140, + "norm_label": ".test_pagination()", + "id": "tests_test_memory_manager_testgetusermemories_test_pagination" }, { - "label": ".test_validate_session_inactive()", + "label": ".test_excludes_archived()", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L855", - "community": 60, - "norm_label": ".test_validate_session_inactive()", - "id": "tests_test_prometheus_auth_coverage_testsessionmanager_test_validate_session_inactive" + "source_file": "tests/test_memory_manager.py", + "source_location": "L115", + "community": 140, + "norm_label": ".test_excludes_archived()", + "id": "tests_test_memory_manager_testgetusermemories_test_excludes_archived" }, { - "label": ".test_validate_session_expired()", + "label": "TestDeleteMemory", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L867", - "community": 60, - "norm_label": ".test_validate_session_expired()", - "id": "tests_test_prometheus_auth_coverage_testsessionmanager_test_validate_session_expired" + "source_file": "tests/test_memory_manager.py", + "source_location": "L125", + "community": 140, + "norm_label": "testdeletememory", + "id": "tests_test_memory_manager_testdeletememory" }, { - "label": ".test_validate_session_expired_naive_tz()", + "label": ".test_soft_delete()", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L881", - "community": 190, - "norm_label": ".test_validate_session_expired_naive_tz()", - "id": "tests_test_prometheus_auth_coverage_testsessionmanager_test_validate_session_expired_naive_tz" + "source_file": "tests/test_memory_manager.py", + "source_location": "L126", + "community": 140, + "norm_label": ".test_soft_delete()", + "id": "tests_test_memory_manager_testdeletememory_test_soft_delete" }, { - "label": ".test_validate_session_no_expiry()", + "label": ".test_delete_nonexistent()", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L895", - "community": 165, - "norm_label": ".test_validate_session_no_expiry()", - "id": "tests_test_prometheus_auth_coverage_testsessionmanager_test_validate_session_no_expiry" + "source_file": "tests/test_memory_manager.py", + "source_location": "L132", + "community": 140, + "norm_label": ".test_delete_nonexistent()", + "id": "tests_test_memory_manager_testdeletememory_test_delete_nonexistent" }, { - "label": "TestSSO", + "label": ".test_delete_wrong_user()", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L914", - "community": 68, - "norm_label": "testsso", - "id": "tests_test_prometheus_auth_coverage_testsso" + "source_file": "tests/test_memory_manager.py", + "source_location": "L135", + "community": 140, + "norm_label": ".test_delete_wrong_user()", + "id": "tests_test_memory_manager_testdeletememory_test_delete_wrong_user" }, { - "label": "test_get_google_sso_with_redirect()", + "label": "TestSearchFulltext", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L919", - "community": 58, - "norm_label": "test_get_google_sso_with_redirect()", - "id": "tests_test_prometheus_auth_coverage_test_get_google_sso_with_redirect" + "source_file": "tests/test_memory_manager.py", + "source_location": "L142", + "community": 140, + "norm_label": "testsearchfulltext", + "id": "tests_test_memory_manager_testsearchfulltext" }, { - "label": "test_get_google_sso_default_redirect()", + "label": ".test_search_after_create()", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L938", - "community": 58, - "norm_label": "test_get_google_sso_default_redirect()", - "id": "tests_test_prometheus_auth_coverage_test_get_google_sso_default_redirect" - }, - { - "label": "Tests to increase coverage for: - main/app/prometheus/generation.py - main/a", - "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L1", - "community": 29, - "norm_label": "tests to increase coverage for: - main/app/prometheus/generation.py - main/a", - "id": "tests_test_prometheus_auth_coverage_rationale_1" - }, - { - "label": "Cover streamMessage in agent.py.", - "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L42", - "community": 68, - "norm_label": "cover streammessage in agent.py.", - "id": "tests_test_prometheus_auth_coverage_rationale_42" - }, - { - "label": "streamMessage must yield dict chunks from async iterator.", - "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L125", - "community": 305, - "norm_label": "streammessage must yield dict chunks from async iterator.", - "id": "tests_test_prometheus_auth_coverage_rationale_125" - }, - { - "label": "streamMessage must handle function_calls as a list (not dict).", - "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L176", - "community": 306, - "norm_label": "streammessage must handle function_calls as a list (not dict).", - "id": "tests_test_prometheus_auth_coverage_rationale_176" - }, - { - "label": "Cover all methods in chat.py (lines 11-120).", - "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L246", - "community": 52, - "norm_label": "cover all methods in chat.py (lines 11-120).", - "id": "tests_test_prometheus_auth_coverage_rationale_246" - }, - { - "label": "Cover all methods in authentication.py (lines 13-75).", - "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L470", - "community": 88, - "norm_label": "cover all methods in authentication.py (lines 13-75).", - "id": "tests_test_prometheus_auth_coverage_rationale_470" - }, - { - "label": "Cover all methods in session.py (lines 14-154).", - "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L647", - "community": 60, - "norm_label": "cover all methods in session.py (lines 14-154).", - "id": "tests_test_prometheus_auth_coverage_rationale_647" - }, - { - "label": "Exercises the tzinfo-is-None branch (line 144-148).", - "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L882", - "community": 190, - "norm_label": "exercises the tzinfo-is-none branch (line 144-148).", - "id": "tests_test_prometheus_auth_coverage_rationale_882" - }, - { - "label": "Exercises the expiresAt-is-None branch (line 143).", - "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L896", - "community": 165, - "norm_label": "exercises the expiresat-is-none branch (line 143).", - "id": "tests_test_prometheus_auth_coverage_rationale_896" - }, - { - "label": "Cover getGoogleSSO (lines 6-14).", - "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L915", - "community": 68, - "norm_label": "cover getgooglesso (lines 6-14).", - "id": "tests_test_prometheus_auth_coverage_rationale_915" + "source_file": "tests/test_memory_manager.py", + "source_location": "L143", + "community": 140, + "norm_label": ".test_search_after_create()", + "id": "tests_test_memory_manager_testsearchfulltext_test_search_after_create" }, { - "label": "test_prometheus_tools.py", + "label": "test_memory_tools_wiring.py", "file_type": "code", - "source_file": "tests/test_prometheus_tools.py", + "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L1", - "community": 100, - "norm_label": "test_prometheus_tools.py", - "id": "tests_test_prometheus_tools_py" - }, - { - "label": "_assert_gemini_safe()", - "file_type": "code", - "source_file": "tests/test_prometheus_tools.py", - "source_location": "L21", - "community": 100, - "norm_label": "_assert_gemini_safe()", - "id": "tests_test_prometheus_tools_assert_gemini_safe" + "community": 49, + "norm_label": "test_memory_tools_wiring.py", + "id": "tests_test_memory_tools_wiring_py" }, { "label": "TestMemoryToolFunctions", "file_type": "code", - "source_file": "tests/test_prometheus_tools.py", - "source_location": "L44", - "community": 512, + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L23", + "community": 584, "norm_label": "testmemorytoolfunctions", - "id": "tests_test_prometheus_tools_testmemorytoolfunctions" + "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions" }, { "label": ".test_search_memory_has_docstring()", "file_type": "code", - "source_file": "tests/test_prometheus_tools.py", - "source_location": "L45", - "community": 512, + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L26", + "community": 584, "norm_label": ".test_search_memory_has_docstring()", - "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_search_memory_has_docstring" + "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions_test_search_memory_has_docstring" }, { "label": ".test_save_memory_has_docstring()", "file_type": "code", - "source_file": "tests/test_prometheus_tools.py", - "source_location": "L49", - "community": 512, + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L30", + "community": 584, "norm_label": ".test_save_memory_has_docstring()", - "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_save_memory_has_docstring" + "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions_test_save_memory_has_docstring" }, { "label": ".test_search_memory_signature()", "file_type": "code", - "source_file": "tests/test_prometheus_tools.py", - "source_location": "L53", - "community": 512, + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L34", + "community": 584, "norm_label": ".test_search_memory_signature()", - "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_search_memory_signature" + "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions_test_search_memory_signature" }, { "label": ".test_save_memory_signature()", "file_type": "code", - "source_file": "tests/test_prometheus_tools.py", - "source_location": "L59", - "community": 512, + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L39", + "community": 584, "norm_label": ".test_save_memory_signature()", - "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_save_memory_signature" + "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions_test_save_memory_signature" }, { "label": ".test_search_memory_has_type_hints()", "file_type": "code", - "source_file": "tests/test_prometheus_tools.py", - "source_location": "L66", - "community": 512, + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L46", + "community": 584, "norm_label": ".test_search_memory_has_type_hints()", - "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_search_memory_has_type_hints" + "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions_test_search_memory_has_type_hints" }, { "label": ".test_save_memory_has_type_hints()", "file_type": "code", - "source_file": "tests/test_prometheus_tools.py", - "source_location": "L71", - "community": 512, + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L50", + "community": 584, "norm_label": ".test_save_memory_has_type_hints()", - "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_save_memory_has_type_hints" + "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions_test_save_memory_has_type_hints" }, { "label": ".test_memory_tools_is_list_of_callables()", "file_type": "code", - "source_file": "tests/test_prometheus_tools.py", - "source_location": "L77", - "community": 512, + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L54", + "community": 584, "norm_label": ".test_memory_tools_is_list_of_callables()", - "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_memory_tools_is_list_of_callables" + "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions_test_memory_tools_is_list_of_callables" }, { "label": ".test_memory_tool_names_unchanged()", "file_type": "code", - "source_file": "tests/test_prometheus_tools.py", - "source_location": "L83", - "community": 512, + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L60", + "community": 215, "norm_label": ".test_memory_tool_names_unchanged()", - "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_memory_tool_names_unchanged" + "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions_test_memory_tool_names_unchanged" }, { - "label": "TestStateToolFunctions", + "label": "TestToolRegistry", "file_type": "code", - "source_file": "tests/test_prometheus_tools.py", - "source_location": "L90", - "community": 100, - "norm_label": "teststatetoolfunctions", - "id": "tests_test_prometheus_tools_teststatetoolfunctions" + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L64", + "community": 215, + "norm_label": "testtoolregistry", + "id": "tests_test_memory_tools_wiring_testtoolregistry" }, { - "label": ".test_get_state_has_docstring()", + "label": ".test_registry_contains_memory_tools()", "file_type": "code", - "source_file": "tests/test_prometheus_tools.py", - "source_location": "L91", - "community": 100, - "norm_label": ".test_get_state_has_docstring()", - "id": "tests_test_prometheus_tools_teststatetoolfunctions_test_get_state_has_docstring" + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L67", + "community": 215, + "norm_label": ".test_registry_contains_memory_tools()", + "id": "tests_test_memory_tools_wiring_testtoolregistry_test_registry_contains_memory_tools" }, { - "label": ".test_set_state_has_docstring()", + "label": ".test_registry_values_are_callable()", "file_type": "code", - "source_file": "tests/test_prometheus_tools.py", - "source_location": "L94", - "community": 100, - "norm_label": ".test_set_state_has_docstring()", - "id": "tests_test_prometheus_tools_teststatetoolfunctions_test_set_state_has_docstring" + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L71", + "community": 215, + "norm_label": ".test_registry_values_are_callable()", + "id": "tests_test_memory_tools_wiring_testtoolregistry_test_registry_values_are_callable" }, { - "label": ".test_get_state_signature()", + "label": ".test_registry_matches_tool_names()", "file_type": "code", - "source_file": "tests/test_prometheus_tools.py", - "source_location": "L97", - "community": 100, - "norm_label": ".test_get_state_signature()", - "id": "tests_test_prometheus_tools_teststatetoolfunctions_test_get_state_signature" + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L75", + "community": 215, + "norm_label": ".test_registry_matches_tool_names()", + "id": "tests_test_memory_tools_wiring_testtoolregistry_test_registry_matches_tool_names" }, { - "label": ".test_set_state_signature()", + "label": "TestMakeChatIncludesMemoryTools", "file_type": "code", - "source_file": "tests/test_prometheus_tools.py", - "source_location": "L102", - "community": 100, - "norm_label": ".test_set_state_signature()", - "id": "tests_test_prometheus_tools_teststatetoolfunctions_test_set_state_signature" + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L79", + "community": 49, + "norm_label": "testmakechatincludesmemorytools", + "id": "tests_test_memory_tools_wiring_testmakechatincludesmemorytools" }, { - "label": ".test_get_state_gemini_safe()", + "label": "test_makeChat_tools_include_memory_tools()", "file_type": "code", - "source_file": "tests/test_prometheus_tools.py", - "source_location": "L108", - "community": 100, - "norm_label": ".test_get_state_gemini_safe()", - "id": "tests_test_prometheus_tools_teststatetoolfunctions_test_get_state_gemini_safe" + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L86", + "community": 49, + "norm_label": "test_makechat_tools_include_memory_tools()", + "id": "tests_test_memory_tools_wiring_test_makechat_tools_include_memory_tools" }, { - "label": ".test_set_state_gemini_safe()", + "label": "TestDispatchRoutesMemoryTools", "file_type": "code", - "source_file": "tests/test_prometheus_tools.py", - "source_location": "L111", - "community": 100, - "norm_label": ".test_set_state_gemini_safe()", - "id": "tests_test_prometheus_tools_teststatetoolfunctions_test_set_state_gemini_safe" + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L112", + "community": 575, + "norm_label": "testdispatchroutesmemorytools", + "id": "tests_test_memory_tools_wiring_testdispatchroutesmemorytools" }, { - "label": ".test_get_state_no_state_returns_error()", + "label": "test_search_memory_routed_via_registry()", "file_type": "code", - "source_file": "tests/test_prometheus_tools.py", - "source_location": "L114", - "community": 100, - "norm_label": ".test_get_state_no_state_returns_error()", - "id": "tests_test_prometheus_tools_teststatetoolfunctions_test_get_state_no_state_returns_error" + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L116", + "community": 49, + "norm_label": "test_search_memory_routed_via_registry()", + "id": "tests_test_memory_tools_wiring_test_search_memory_routed_via_registry" }, { - "label": ".test_set_state_no_state_returns_error()", + "label": "test_save_memory_routed_via_registry()", "file_type": "code", - "source_file": "tests/test_prometheus_tools.py", - "source_location": "L118", - "community": 100, - "norm_label": ".test_set_state_no_state_returns_error()", - "id": "tests_test_prometheus_tools_teststatetoolfunctions_test_set_state_no_state_returns_error" + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L131", + "community": 49, + "norm_label": "test_save_memory_routed_via_registry()", + "id": "tests_test_memory_tools_wiring_test_save_memory_routed_via_registry" }, { - "label": "TestGeminiCompatibility", + "label": "test_non_registry_tool_not_routed()", "file_type": "code", - "source_file": "tests/test_prometheus_tools.py", - "source_location": "L126", - "community": 577, - "norm_label": "testgeminicompatibility", - "id": "tests_test_prometheus_tools_testgeminicompatibility" + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L148", + "community": 49, + "norm_label": "test_non_registry_tool_not_routed()", + "id": "tests_test_memory_tools_wiring_test_non_registry_tool_not_routed" }, { - "label": "test_tool_has_gemini_safe_signature()", + "label": "TDD tests: verify memory tools are wired into the Prometheus agent. RED: Thes", + "file_type": "rationale", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L1", + "community": 49, + "norm_label": "tdd tests: verify memory tools are wired into the prometheus agent. red: thes", + "id": "tests_test_memory_tools_wiring_rationale_1" + }, + { + "label": "Verify the actual async tool functions have correct signatures.", + "file_type": "rationale", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L24", + "community": 584, + "norm_label": "verify the actual async tool functions have correct signatures.", + "id": "tests_test_memory_tools_wiring_rationale_24" + }, + { + "label": "TOOL_REGISTRY pattern must work correctly.", + "file_type": "rationale", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L65", + "community": 215, + "norm_label": "tool_registry pattern must work correctly.", + "id": "tests_test_memory_tools_wiring_rationale_65" + }, + { + "label": "makeChat must include MEMORY_TOOLS alongside MCP sessions.", + "file_type": "rationale", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L80", + "community": 49, + "norm_label": "makechat must include memory_tools alongside mcp sessions.", + "id": "tests_test_memory_tools_wiring_rationale_80" + }, + { + "label": "dispatchToolCall must route memory tool names via TOOL_REGISTRY.", + "file_type": "rationale", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L113", + "community": 575, + "norm_label": "dispatchtoolcall must route memory tool names via tool_registry.", + "id": "tests_test_memory_tools_wiring_rationale_113" + }, + { + "label": "test_memory_types.py", "file_type": "code", - "source_file": "tests/test_prometheus_tools.py", - "source_location": "L132", - "community": 100, - "norm_label": "test_tool_has_gemini_safe_signature()", - "id": "tests_test_prometheus_tools_test_tool_has_gemini_safe_signature" + "source_file": "tests/test_memory_types.py", + "source_location": "L1", + "community": 51, + "norm_label": "test_memory_types.py", + "id": "tests_test_memory_types_py" }, { - "label": ".test_no_harnessstate_in_any_signature()", + "label": "TestVectorType", "file_type": "code", - "source_file": "tests/test_prometheus_tools.py", - "source_location": "L135", - "community": 577, - "norm_label": ".test_no_harnessstate_in_any_signature()", - "id": "tests_test_prometheus_tools_testgeminicompatibility_test_no_harnessstate_in_any_signature" + "source_file": "tests/test_memory_types.py", + "source_location": "L6", + "community": 51, + "norm_label": "testvectortype", + "id": "tests_test_memory_types_testvectortype" }, { - "label": "TestToolRegistry", + "label": ".test_roundtrip()", "file_type": "code", - "source_file": "tests/test_prometheus_tools.py", - "source_location": "L151", - "community": 571, - "norm_label": "testtoolregistry", - "id": "tests_test_prometheus_tools_testtoolregistry" + "source_file": "tests/test_memory_types.py", + "source_location": "L7", + "community": 51, + "norm_label": ".test_roundtrip()", + "id": "tests_test_memory_types_testvectortype_test_roundtrip" }, { - "label": ".test_registry_contains_memory_tools()", + "label": ".test_none_roundtrip()", "file_type": "code", - "source_file": "tests/test_prometheus_tools.py", - "source_location": "L152", - "community": 571, - "norm_label": ".test_registry_contains_memory_tools()", - "id": "tests_test_prometheus_tools_testtoolregistry_test_registry_contains_memory_tools" + "source_file": "tests/test_memory_types.py", + "source_location": "L17", + "community": 51, + "norm_label": ".test_none_roundtrip()", + "id": "tests_test_memory_types_testvectortype_test_none_roundtrip" }, { - "label": ".test_registry_values_are_callable()", + "label": ".test_wrong_dims_raises()", "file_type": "code", - "source_file": "tests/test_prometheus_tools.py", - "source_location": "L156", - "community": 571, - "norm_label": ".test_registry_values_are_callable()", - "id": "tests_test_prometheus_tools_testtoolregistry_test_registry_values_are_callable" + "source_file": "tests/test_memory_types.py", + "source_location": "L23", + "community": 51, + "norm_label": ".test_wrong_dims_raises()", + "id": "tests_test_memory_types_testvectortype_test_wrong_dims_raises" }, { - "label": ".test_registry_matches_tool_names()", + "label": ".test_preserves_negative_values()", "file_type": "code", - "source_file": "tests/test_prometheus_tools.py", - "source_location": "L160", - "community": 571, - "norm_label": ".test_registry_matches_tool_names()", - "id": "tests_test_prometheus_tools_testtoolregistry_test_registry_matches_tool_names" + "source_file": "tests/test_memory_types.py", + "source_location": "L29", + "community": 51, + "norm_label": ".test_preserves_negative_values()", + "id": "tests_test_memory_types_testvectortype_test_preserves_negative_values" }, { - "label": "Assert a tool function has only Gemini-compatible parameter types.", + "label": ".test_large_random_vector()", + "file_type": "code", + "source_file": "tests/test_memory_types.py", + "source_location": "L37", + "community": 51, + "norm_label": ".test_large_random_vector()", + "id": "tests_test_memory_types_testvectortype_test_large_random_vector" + }, + { + "label": "VectorType: list \u2192 bytes \u2192 list preserves data.", "file_type": "rationale", - "source_file": "tests/test_prometheus_tools.py", - "source_location": "L22", - "community": 100, - "norm_label": "assert a tool function has only gemini-compatible parameter types.", - "id": "tests_test_prometheus_tools_rationale_22" + "source_file": "tests/test_memory_types.py", + "source_location": "L8", + "community": 51, + "norm_label": "vectortype: list \u2192 bytes \u2192 list preserves data.", + "id": "tests_test_memory_types_rationale_8" }, { - "label": "Every function in TOOL_REGISTRY must have Gemini-safe signatures. Custom cl", + "label": "VectorType: None passes through.", "file_type": "rationale", - "source_file": "tests/test_prometheus_tools.py", - "source_location": "L127", - "community": 577, - "norm_label": "every function in tool_registry must have gemini-safe signatures. custom cl", - "id": "tests_test_prometheus_tools_rationale_127" + "source_file": "tests/test_memory_types.py", + "source_location": "L18", + "community": 51, + "norm_label": "vectortype: none passes through.", + "id": "tests_test_memory_types_rationale_18" }, { - "label": "Regression: HarnessState must never leak into tool signatures.", + "label": "VectorType: rejects wrong dimension.", "file_type": "rationale", - "source_file": "tests/test_prometheus_tools.py", - "source_location": "L136", - "community": 577, - "norm_label": "regression: harnessstate must never leak into tool signatures.", - "id": "tests_test_prometheus_tools_rationale_136" + "source_file": "tests/test_memory_types.py", + "source_location": "L24", + "community": 51, + "norm_label": "vectortype: rejects wrong dimension.", + "id": "tests_test_memory_types_rationale_24" }, { - "label": "test_relevance_score.py", - "file_type": "code", - "source_file": "tests/test_relevance_score.py", - "source_location": "L1", - "community": 27, - "norm_label": "test_relevance_score.py", - "id": "tests_test_relevance_score_py" + "label": "VectorType: handles negative floats.", + "file_type": "rationale", + "source_file": "tests/test_memory_types.py", + "source_location": "L30", + "community": 51, + "norm_label": "vectortype: handles negative floats.", + "id": "tests_test_memory_types_rationale_30" }, { - "label": "_FakeMemory", + "label": "VectorType: random 384-dim vector roundtrips.", + "file_type": "rationale", + "source_file": "tests/test_memory_types.py", + "source_location": "L38", + "community": 51, + "norm_label": "vectortype: random 384-dim vector roundtrips.", + "id": "tests_test_memory_types_rationale_38" + }, + { + "label": "test_models.py", "file_type": "code", - "source_file": "tests/test_relevance_score.py", - "source_location": "L12", - "community": 27, - "norm_label": "_fakememory", - "id": "tests_test_relevance_score_fakememory" + "source_file": "tests/test_models.py", + "source_location": "L1", + "community": 61, + "norm_label": "test_models.py", + "id": "tests_test_models_py" }, { - "label": ".__init__()", + "label": "TestUserModel", "file_type": "code", - "source_file": "tests/test_relevance_score.py", - "source_location": "L13", - "community": 27, - "norm_label": ".__init__()", - "id": "tests_test_relevance_score_fakememory_init" + "source_file": "tests/test_models.py", + "source_location": "L17", + "community": 61, + "norm_label": "testusermodel", + "id": "tests_test_models_testusermodel" }, { - "label": "TestTimeDecay", + "label": ".test_create_user()", "file_type": "code", - "source_file": "tests/test_relevance_score.py", + "source_file": "tests/test_models.py", "source_location": "L18", - "community": 27, - "norm_label": "testtimedecay", - "id": "tests_test_relevance_score_testtimedecay" + "community": 61, + "norm_label": ".test_create_user()", + "id": "tests_test_models_testusermodel_test_create_user" }, { - "label": ".test_just_accessed_has_full_score()", + "label": ".test_get_roles_list_default()", "file_type": "code", - "source_file": "tests/test_relevance_score.py", - "source_location": "L19", - "community": 27, - "norm_label": ".test_just_accessed_has_full_score()", - "id": "tests_test_relevance_score_testtimedecay_test_just_accessed_has_full_score" + "source_file": "tests/test_models.py", + "source_location": "L28", + "community": 61, + "norm_label": ".test_get_roles_list_default()", + "id": "tests_test_models_testusermodel_test_get_roles_list_default" }, { - "label": ".test_one_day_old()", + "label": ".test_get_roles_list_single_role()", "file_type": "code", - "source_file": "tests/test_relevance_score.py", - "source_location": "L24", - "community": 27, - "norm_label": ".test_one_day_old()", - "id": "tests_test_relevance_score_testtimedecay_test_one_day_old" + "source_file": "tests/test_models.py", + "source_location": "L33", + "community": 61, + "norm_label": ".test_get_roles_list_single_role()", + "id": "tests_test_models_testusermodel_test_get_roles_list_single_role" }, { - "label": ".test_seven_days_old()", + "label": ".test_get_roles_list_multiple_roles()", "file_type": "code", - "source_file": "tests/test_relevance_score.py", - "source_location": "L29", - "community": 27, - "norm_label": ".test_seven_days_old()", - "id": "tests_test_relevance_score_testtimedecay_test_seven_days_old" + "source_file": "tests/test_models.py", + "source_location": "L38", + "community": 61, + "norm_label": ".test_get_roles_list_multiple_roles()", + "id": "tests_test_models_testusermodel_test_get_roles_list_multiple_roles" }, { - "label": ".test_thirty_days_old()", + "label": ".test_add_role_new()", "file_type": "code", - "source_file": "tests/test_relevance_score.py", - "source_location": "L34", - "community": 27, - "norm_label": ".test_thirty_days_old()", - "id": "tests_test_relevance_score_testtimedecay_test_thirty_days_old" + "source_file": "tests/test_models.py", + "source_location": "L46", + "community": 61, + "norm_label": ".test_add_role_new()", + "id": "tests_test_models_testusermodel_test_add_role_new" }, { - "label": ".test_ninety_days_old()", + "label": ".test_add_role_existing()", "file_type": "code", - "source_file": "tests/test_relevance_score.py", - "source_location": "L39", - "community": 27, - "norm_label": ".test_ninety_days_old()", - "id": "tests_test_relevance_score_testtimedecay_test_ninety_days_old" + "source_file": "tests/test_models.py", + "source_location": "L52", + "community": 61, + "norm_label": ".test_add_role_existing()", + "id": "tests_test_models_testusermodel_test_add_role_existing" }, { - "label": ".test_one_year_old()", + "label": ".test_has_role_true()", "file_type": "code", - "source_file": "tests/test_relevance_score.py", - "source_location": "L44", - "community": 27, - "norm_label": ".test_one_year_old()", - "id": "tests_test_relevance_score_testtimedecay_test_one_year_old" + "source_file": "tests/test_models.py", + "source_location": "L59", + "community": 61, + "norm_label": ".test_has_role_true()", + "id": "tests_test_models_testusermodel_test_has_role_true" }, { - "label": ".test_score_always_positive()", + "label": ".test_has_role_false()", "file_type": "code", - "source_file": "tests/test_relevance_score.py", - "source_location": "L49", - "community": 27, - "norm_label": ".test_score_always_positive()", - "id": "tests_test_relevance_score_testtimedecay_test_score_always_positive" + "source_file": "tests/test_models.py", + "source_location": "L64", + "community": 61, + "norm_label": ".test_has_role_false()", + "id": "tests_test_models_testusermodel_test_has_role_false" }, { - "label": "TestBaseScoreImpact", + "label": ".test_has_role_with_enum()", "file_type": "code", - "source_file": "tests/test_relevance_score.py", - "source_location": "L56", - "community": 27, - "norm_label": "testbasescoreimpact", - "id": "tests_test_relevance_score_testbasescoreimpact" + "source_file": "tests/test_models.py", + "source_location": "L69", + "community": 61, + "norm_label": ".test_has_role_with_enum()", + "id": "tests_test_models_testusermodel_test_has_role_with_enum" }, { - "label": ".test_high_base_beats_low_base_same_age()", + "label": ".test_toDict()", "file_type": "code", - "source_file": "tests/test_relevance_score.py", - "source_location": "L57", - "community": 27, - "norm_label": ".test_high_base_beats_low_base_same_age()", - "id": "tests_test_relevance_score_testbasescoreimpact_test_high_base_beats_low_base_same_age" + "source_file": "tests/test_models.py", + "source_location": "L77", + "community": 61, + "norm_label": ".test_todict()", + "id": "tests_test_models_testusermodel_test_toDict" }, { - "label": ".test_frequently_used_survives_longer()", + "label": "TestStocksAPIKeyModel", "file_type": "code", - "source_file": "tests/test_relevance_score.py", - "source_location": "L63", - "community": 27, - "norm_label": ".test_frequently_used_survives_longer()", - "id": "tests_test_relevance_score_testbasescoreimpact_test_frequently_used_survives_longer" + "source_file": "tests/test_models.py", + "source_location": "L88", + "community": 37, + "norm_label": "teststocksapikeymodel", + "id": "tests_test_models_teststocksapikeymodel" }, { - "label": ".test_rare_old_loses_to_popular_new()", + "label": ".test_create_api_key()", "file_type": "code", - "source_file": "tests/test_relevance_score.py", - "source_location": "L71", - "community": 27, - "norm_label": ".test_rare_old_loses_to_popular_new()", - "id": "tests_test_relevance_score_testbasescoreimpact_test_rare_old_loses_to_popular_new" + "source_file": "tests/test_models.py", + "source_location": "L89", + "community": 37, + "norm_label": ".test_create_api_key()", + "id": "tests_test_models_teststocksapikeymodel_test_create_api_key" }, { - "label": ".test_score_capped_at_one()", + "label": ".test_is_quota_exceeded_true()", "file_type": "code", - "source_file": "tests/test_relevance_score.py", - "source_location": "L77", - "community": 27, - "norm_label": ".test_score_capped_at_one()", - "id": "tests_test_relevance_score_testbasescoreimpact_test_score_capped_at_one" + "source_file": "tests/test_models.py", + "source_location": "L98", + "community": 37, + "norm_label": ".test_is_quota_exceeded_true()", + "id": "tests_test_models_teststocksapikeymodel_test_is_quota_exceeded_true" }, { - "label": ".test_equal_age_higher_base_wins()", + "label": ".test_is_quota_exceeded_false()", "file_type": "code", - "source_file": "tests/test_relevance_score.py", - "source_location": "L82", - "community": 27, - "norm_label": ".test_equal_age_higher_base_wins()", - "id": "tests_test_relevance_score_testbasescoreimpact_test_equal_age_higher_base_wins" + "source_file": "tests/test_models.py", + "source_location": "L104", + "community": 37, + "norm_label": ".test_is_quota_exceeded_false()", + "id": "tests_test_models_teststocksapikeymodel_test_is_quota_exceeded_false" }, { - "label": "TestDecayMonotonicity", + "label": ".test_needs_reset_true_no_last_reset()", "file_type": "code", - "source_file": "tests/test_relevance_score.py", - "source_location": "L90", - "community": 27, - "norm_label": "testdecaymonotonicity", - "id": "tests_test_relevance_score_testdecaymonotonicity" + "source_file": "tests/test_models.py", + "source_location": "L110", + "community": 37, + "norm_label": ".test_needs_reset_true_no_last_reset()", + "id": "tests_test_models_teststocksapikeymodel_test_needs_reset_true_no_last_reset" }, { - "label": ".test_older_always_lower_score()", + "label": ".test_needs_reset_true_expired()", "file_type": "code", - "source_file": "tests/test_relevance_score.py", - "source_location": "L91", - "community": 27, - "norm_label": ".test_older_always_lower_score()", - "id": "tests_test_relevance_score_testdecaymonotonicity_test_older_always_lower_score" + "source_file": "tests/test_models.py", + "source_location": "L115", + "community": 37, + "norm_label": ".test_needs_reset_true_expired()", + "id": "tests_test_models_teststocksapikeymodel_test_needs_reset_true_expired" }, { - "label": ".test_never_accessed_uses_full_base()", + "label": ".test_needs_reset_false_recent()", "file_type": "code", - "source_file": "tests/test_relevance_score.py", - "source_location": "L99", - "community": 27, - "norm_label": ".test_never_accessed_uses_full_base()", - "id": "tests_test_relevance_score_testdecaymonotonicity_test_never_accessed_uses_full_base" + "source_file": "tests/test_models.py", + "source_location": "L120", + "community": 37, + "norm_label": ".test_needs_reset_false_recent()", + "id": "tests_test_models_teststocksapikeymodel_test_needs_reset_false_recent" }, { - "label": "TestNoCronNeeded", + "label": ".test_reset_quota()", "file_type": "code", - "source_file": "tests/test_relevance_score.py", - "source_location": "L106", - "community": 27, - "norm_label": "testnocronneeded", - "id": "tests_test_relevance_score_testnocronneeded" + "source_file": "tests/test_models.py", + "source_location": "L125", + "community": 37, + "norm_label": ".test_reset_quota()", + "id": "tests_test_models_teststocksapikeymodel_test_reset_quota" }, { - "label": ".test_same_memory_same_time_same_score()", + "label": ".test_increment_usage()", "file_type": "code", - "source_file": "tests/test_relevance_score.py", - "source_location": "L107", - "community": 27, - "norm_label": ".test_same_memory_same_time_same_score()", - "id": "tests_test_relevance_score_testnocronneeded_test_same_memory_same_time_same_score" + "source_file": "tests/test_models.py", + "source_location": "L133", + "community": 37, + "norm_label": ".test_increment_usage()", + "id": "tests_test_models_teststocksapikeymodel_test_increment_usage" }, { - "label": ".test_different_times_different_scores()", + "label": ".test_get_remaining_quota()", "file_type": "code", - "source_file": "tests/test_relevance_score.py", - "source_location": "L114", - "community": 27, - "norm_label": ".test_different_times_different_scores()", - "id": "tests_test_relevance_score_testnocronneeded_test_different_times_different_scores" - }, - { - "label": "A memory accessed 10x (baseScore 1.0) should still outrank a memory acce", - "file_type": "rationale", - "source_file": "tests/test_relevance_score.py", - "source_location": "L64", - "community": 27, - "norm_label": "a memory accessed 10x (basescore 1.0) should still outrank a memory acce", - "id": "tests_test_relevance_score_rationale_64" + "source_file": "tests/test_models.py", + "source_location": "L139", + "community": 37, + "norm_label": ".test_get_remaining_quota()", + "id": "tests_test_models_teststocksapikeymodel_test_get_remaining_quota" }, { - "label": "A rarely-used old memory should lose to a popular fresh one.", - "file_type": "rationale", - "source_file": "tests/test_relevance_score.py", - "source_location": "L72", - "community": 27, - "norm_label": "a rarely-used old memory should lose to a popular fresh one.", - "id": "tests_test_relevance_score_rationale_72" + "label": ".test_get_remaining_quota_exceeded()", + "file_type": "code", + "source_file": "tests/test_models.py", + "source_location": "L145", + "community": 37, + "norm_label": ".test_get_remaining_quota_exceeded()", + "id": "tests_test_models_teststocksapikeymodel_test_get_remaining_quota_exceeded" }, { - "label": "With same access time, higher baseScore always wins.", - "file_type": "rationale", - "source_file": "tests/test_relevance_score.py", - "source_location": "L83", - "community": 27, - "norm_label": "with same access time, higher basescore always wins.", - "id": "tests_test_relevance_score_rationale_83" + "label": ".test_toDict()", + "file_type": "code", + "source_file": "tests/test_models.py", + "source_location": "L151", + "community": 37, + "norm_label": ".test_todict()", + "id": "tests_test_models_teststocksapikeymodel_test_toDict" }, { - "label": "A memory with no lastAccessedAt should use baseScore as-is.", - "file_type": "rationale", - "source_file": "tests/test_relevance_score.py", - "source_location": "L100", - "community": 27, - "norm_label": "a memory with no lastaccessedat should use basescore as-is.", - "id": "tests_test_relevance_score_rationale_100" + "label": "TestPrometheusSessionModel", + "file_type": "code", + "source_file": "tests/test_models.py", + "source_location": "L162", + "community": 61, + "norm_label": "testprometheussessionmodel", + "id": "tests_test_models_testprometheussessionmodel" }, { - "label": "Scores are deterministic \u2014 no cron mutation needed.", - "file_type": "rationale", - "source_file": "tests/test_relevance_score.py", - "source_location": "L108", - "community": 27, - "norm_label": "scores are deterministic \u2014 no cron mutation needed.", - "id": "tests_test_relevance_score_rationale_108" + "label": ".test_create_session()", + "file_type": "code", + "source_file": "tests/test_models.py", + "source_location": "L163", + "community": 61, + "norm_label": ".test_create_session()", + "id": "tests_test_models_testprometheussessionmodel_test_create_session" }, { - "label": "Same memory at different points in time yields different scores.", - "file_type": "rationale", - "source_file": "tests/test_relevance_score.py", - "source_location": "L115", - "community": 27, - "norm_label": "same memory at different points in time yields different scores.", - "id": "tests_test_relevance_score_rationale_115" + "label": ".test_default_history()", + "file_type": "code", + "source_file": "tests/test_models.py", + "source_location": "L172", + "community": 61, + "norm_label": ".test_default_history()", + "id": "tests_test_models_testprometheussessionmodel_test_default_history" }, { - "label": "test_request_id.py", + "label": "test_oauth_cookie_security.py", "file_type": "code", - "source_file": "tests/test_request_id.py", + "source_file": "tests/test_oauth_cookie_security.py", "source_location": "L1", - "community": 475, - "norm_label": "test_request_id.py", - "id": "tests_test_request_id_py" + "community": 40, + "norm_label": "test_oauth_cookie_security.py", + "id": "tests_test_oauth_cookie_security_py" }, { - "label": "app()", + "label": "_make_callback_client()", "file_type": "code", - "source_file": "tests/test_request_id.py", - "source_location": "L14", - "community": 475, - "norm_label": "app()", - "id": "tests_test_request_id_app" + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L17", + "community": 40, + "norm_label": "_make_callback_client()", + "id": "tests_test_oauth_cookie_security_make_callback_client" }, { - "label": "client()", + "label": "_setup_callback_mocks()", "file_type": "code", - "source_file": "tests/test_request_id.py", + "source_file": "tests/test_oauth_cookie_security.py", "source_location": "L30", - "community": 475, - "norm_label": "client()", - "id": "tests_test_request_id_client" + "community": 40, + "norm_label": "_setup_callback_mocks()", + "id": "tests_test_oauth_cookie_security_setup_callback_mocks" }, { - "label": "TestRequestIDMiddleware", + "label": "TestOAuthCallbackTokenNotInURL", "file_type": "code", - "source_file": "tests/test_request_id.py", - "source_location": "L34", - "community": 475, - "norm_label": "testrequestidmiddleware", - "id": "tests_test_request_id_testrequestidmiddleware" + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L56", + "community": 40, + "norm_label": "testoauthcallbacktokennotinurl", + "id": "tests_test_oauth_cookie_security_testoauthcallbacktokennotinurl" }, { - "label": ".test_generates_uuid_when_no_header()", + "label": "test_callback_with_state_redirect_no_token_in_url()", "file_type": "code", - "source_file": "tests/test_request_id.py", - "source_location": "L35", - "community": 475, - "norm_label": ".test_generates_uuid_when_no_header()", - "id": "tests_test_request_id_testrequestidmiddleware_test_generates_uuid_when_no_header" + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L63", + "community": 40, + "norm_label": "test_callback_with_state_redirect_no_token_in_url()", + "id": "tests_test_oauth_cookie_security_test_callback_with_state_redirect_no_token_in_url" }, { - "label": ".test_returns_generated_uuid_in_body()", + "label": "test_callback_sets_httponly_cookie()", "file_type": "code", - "source_file": "tests/test_request_id.py", - "source_location": "L44", - "community": 475, - "norm_label": ".test_returns_generated_uuid_in_body()", - "id": "tests_test_request_id_testrequestidmiddleware_test_returns_generated_uuid_in_body" + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L96", + "community": 40, + "norm_label": "test_callback_sets_httponly_cookie()", + "id": "tests_test_oauth_cookie_security_test_callback_sets_httponly_cookie" }, { - "label": ".test_uses_client_provided_request_id()", + "label": "test_callback_cookies_have_secure_flag()", "file_type": "code", - "source_file": "tests/test_request_id.py", - "source_location": "L51", - "community": 475, - "norm_label": ".test_uses_client_provided_request_id()", - "id": "tests_test_request_id_testrequestidmiddleware_test_uses_client_provided_request_id" + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L123", + "community": 40, + "norm_label": "test_callback_cookies_have_secure_flag()", + "id": "tests_test_oauth_cookie_security_test_callback_cookies_have_secure_flag" }, { - "label": ".test_response_header_matches_request()", + "label": "test_callback_no_state_returns_json_with_token()", "file_type": "code", - "source_file": "tests/test_request_id.py", - "source_location": "L57", - "community": 475, - "norm_label": ".test_response_header_matches_request()", - "id": "tests_test_request_id_testrequestidmiddleware_test_response_header_matches_request" + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L149", + "community": 40, + "norm_label": "test_callback_no_state_returns_json_with_token()", + "id": "tests_test_oauth_cookie_security_test_callback_no_state_returns_json_with_token" }, { - "label": ".test_different_requests_get_different_ids()", + "label": "TestOAuthCallbackFrontendCompatibility", "file_type": "code", - "source_file": "tests/test_request_id.py", - "source_location": "L62", - "community": 475, - "norm_label": ".test_different_requests_get_different_ids()", - "id": "tests_test_request_id_testrequestidmiddleware_test_different_requests_get_different_ids" + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L169", + "community": 40, + "norm_label": "testoauthcallbackfrontendcompatibility", + "id": "tests_test_oauth_cookie_security_testoauthcallbackfrontendcompatibility" }, { - "label": ".test_context_var_available_in_route()", + "label": "test_frontend_gets_token_from_cookie()", "file_type": "code", - "source_file": "tests/test_request_id.py", - "source_location": "L67", - "community": 475, - "norm_label": ".test_context_var_available_in_route()", - "id": "tests_test_request_id_testrequestidmiddleware_test_context_var_available_in_route" + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L176", + "community": 40, + "norm_label": "test_frontend_gets_token_from_cookie()", + "id": "tests_test_oauth_cookie_security_test_frontend_gets_token_from_cookie" }, { - "label": ".test_empty_x_request_id_header_generates_uuid()", + "label": "test_open_redirect_blocked()", "file_type": "code", - "source_file": "tests/test_request_id.py", - "source_location": "L72", - "community": 475, - "norm_label": ".test_empty_x_request_id_header_generates_uuid()", - "id": "tests_test_request_id_testrequestidmiddleware_test_empty_x_request_id_header_generates_uuid" + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L210", + "community": 40, + "norm_label": "test_open_redirect_blocked()", + "id": "tests_test_oauth_cookie_security_test_open_redirect_blocked" }, { - "label": ".test_middleware_preserves_response_body()", - "file_type": "code", - "source_file": "tests/test_request_id.py", - "source_location": "L81", - "community": 475, - "norm_label": ".test_middleware_preserves_response_body()", - "id": "tests_test_request_id_testrequestidmiddleware_test_middleware_preserves_response_body" + "label": "Tests for OAuth callback security - JWT token should NOT be in URL. Token is de", + "file_type": "rationale", + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L1", + "community": 40, + "norm_label": "tests for oauth callback security - jwt token should not be in url. token is de", + "id": "tests_test_oauth_cookie_security_rationale_1" }, { - "label": "test_roles.py", - "file_type": "code", - "source_file": "tests/test_roles.py", - "source_location": "L1", - "community": 527, - "norm_label": "test_roles.py", - "id": "tests_test_roles_py" + "label": "Return (client, app, mock_session) for testing Google callback.", + "file_type": "rationale", + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L18", + "community": 40, + "norm_label": "return (client, app, mock_session) for testing google callback.", + "id": "tests_test_oauth_cookie_security_rationale_18" }, { - "label": "TestPermission", - "file_type": "code", - "source_file": "tests/test_roles.py", - "source_location": "L4", - "community": 527, - "norm_label": "testpermission", - "id": "tests_test_roles_testpermission" + "label": "Helper to setup common mock values for callback tests.", + "file_type": "rationale", + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L33", + "community": 40, + "norm_label": "helper to setup common mock values for callback tests.", + "id": "tests_test_oauth_cookie_security_rationale_33" }, { - "label": ".test_permission_enum_values()", - "file_type": "code", - "source_file": "tests/test_roles.py", - "source_location": "L5", - "community": 527, - "norm_label": ".test_permission_enum_values()", - "id": "tests_test_roles_testpermission_test_permission_enum_values" + "label": "Verify JWT token is NOT leaked in redirect URL after OAuth callback.", + "file_type": "rationale", + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L57", + "community": 40, + "norm_label": "verify jwt token is not leaked in redirect url after oauth callback.", + "id": "tests_test_oauth_cookie_security_rationale_57" }, { - "label": ".test_permission_all_includes_all()", - "file_type": "code", - "source_file": "tests/test_roles.py", - "source_location": "L10", - "community": 527, - "norm_label": ".test_permission_all_includes_all()", - "id": "tests_test_roles_testpermission_test_permission_all_includes_all" + "label": "Token must NOT appear in redirect URL \u2014 cookie only.", + "file_type": "rationale", + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L66", + "community": 299, + "norm_label": "token must not appear in redirect url \u2014 cookie only.", + "id": "tests_test_oauth_cookie_security_rationale_66" }, { - "label": "TestRoles", - "file_type": "code", - "source_file": "tests/test_roles.py", - "source_location": "L17", - "community": 527, - "norm_label": "testroles", - "id": "tests_test_roles_testroles" + "label": "Cookie must be httponly (not accessible via JavaScript).", + "file_type": "rationale", + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L97", + "community": 300, + "norm_label": "cookie must be httponly (not accessible via javascript).", + "id": "tests_test_oauth_cookie_security_rationale_97" }, { - "label": ".test_user_role_has_basic_permissions()", - "file_type": "code", - "source_file": "tests/test_roles.py", - "source_location": "L18", - "community": 527, - "norm_label": ".test_user_role_has_basic_permissions()", - "id": "tests_test_roles_testroles_test_user_role_has_basic_permissions" + "label": "Cookie should have secure flag (HTTPS only).", + "file_type": "rationale", + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L124", + "community": 301, + "norm_label": "cookie should have secure flag (https only).", + "id": "tests_test_oauth_cookie_security_rationale_124" }, { - "label": ".test_user_role_missing_premium_permissions()", - "file_type": "code", - "source_file": "tests/test_roles.py", - "source_location": "L23", - "community": 527, - "norm_label": ".test_user_role_missing_premium_permissions()", - "id": "tests_test_roles_testroles_test_user_role_missing_premium_permissions" + "label": "When no state param, return JSON response (not redirect).", + "file_type": "rationale", + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L152", + "community": 302, + "norm_label": "when no state param, return json response (not redirect).", + "id": "tests_test_oauth_cookie_security_rationale_152" }, { - "label": ".test_premium_includes_user_permissions()", + "label": "Verify frontend can still auth after OAuth redirect via cookie.", + "file_type": "rationale", + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L170", + "community": 40, + "norm_label": "verify frontend can still auth after oauth redirect via cookie.", + "id": "tests_test_oauth_cookie_security_rationale_170" + }, + { + "label": "After OAuth redirect, httponly cookie contains the token.", + "file_type": "rationale", + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L177", + "community": 303, + "norm_label": "after oauth redirect, httponly cookie contains the token.", + "id": "tests_test_oauth_cookie_security_rationale_177" + }, + { + "label": "Non-localhost redirect URLs must be rejected.", + "file_type": "rationale", + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L211", + "community": 304, + "norm_label": "non-localhost redirect urls must be rejected.", + "id": "tests_test_oauth_cookie_security_rationale_211" + }, + { + "label": "test_pagination.py", "file_type": "code", - "source_file": "tests/test_roles.py", - "source_location": "L27", - "community": 527, - "norm_label": ".test_premium_includes_user_permissions()", - "id": "tests_test_roles_testroles_test_premium_includes_user_permissions" + "source_file": "tests/test_pagination.py", + "source_location": "L1", + "community": 482, + "norm_label": "test_pagination.py", + "id": "tests_test_pagination_py" }, { - "label": ".test_premium_has_extra_permissions()", + "label": "app()", "file_type": "code", - "source_file": "tests/test_roles.py", - "source_location": "L31", - "community": 527, - "norm_label": ".test_premium_has_extra_permissions()", - "id": "tests_test_roles_testroles_test_premium_has_extra_permissions" + "source_file": "tests/test_pagination.py", + "source_location": "L14", + "community": 482, + "norm_label": "app()", + "id": "tests_test_pagination_app" }, { - "label": ".test_developer_starter_includes_user()", + "label": "client()", "file_type": "code", - "source_file": "tests/test_roles.py", + "source_file": "tests/test_pagination.py", "source_location": "L35", - "community": 527, - "norm_label": ".test_developer_starter_includes_user()", - "id": "tests_test_roles_testroles_test_developer_starter_includes_user" + "community": 482, + "norm_label": "client()", + "id": "tests_test_pagination_client" }, { - "label": ".test_developer_enterprise_includes_all()", + "label": "TestInlinePagination", "file_type": "code", - "source_file": "tests/test_roles.py", + "source_file": "tests/test_pagination.py", "source_location": "L39", - "community": 527, - "norm_label": ".test_developer_enterprise_includes_all()", - "id": "tests_test_roles_testroles_test_developer_enterprise_includes_all" + "community": 504, + "norm_label": "testinlinepagination", + "id": "tests_test_pagination_testinlinepagination" }, { - "label": ".test_admin_has_all_permissions()", + "label": ".test_defaults()", "file_type": "code", - "source_file": "tests/test_roles.py", - "source_location": "L43", - "community": 527, - "norm_label": ".test_admin_has_all_permissions()", - "id": "tests_test_roles_testroles_test_admin_has_all_permissions" + "source_file": "tests/test_pagination.py", + "source_location": "L40", + "community": 504, + "norm_label": ".test_defaults()", + "id": "tests_test_pagination_testinlinepagination_test_defaults" }, { - "label": ".test_check_access_admin_returns_true()", + "label": ".test_custom_limit()", "file_type": "code", - "source_file": "tests/test_roles.py", + "source_file": "tests/test_pagination.py", "source_location": "L48", - "community": 527, - "norm_label": ".test_check_access_admin_returns_true()", - "id": "tests_test_roles_testroles_test_check_access_admin_returns_true" + "community": 504, + "norm_label": ".test_custom_limit()", + "id": "tests_test_pagination_testinlinepagination_test_custom_limit" }, { - "label": ".test_check_access_user_with_permission()", + "label": ".test_custom_offset()", "file_type": "code", - "source_file": "tests/test_roles.py", - "source_location": "L52", - "community": 527, - "norm_label": ".test_check_access_user_with_permission()", - "id": "tests_test_roles_testroles_test_check_access_user_with_permission" + "source_file": "tests/test_pagination.py", + "source_location": "L54", + "community": 504, + "norm_label": ".test_custom_offset()", + "id": "tests_test_pagination_testinlinepagination_test_custom_offset" }, { - "label": ".test_check_access_user_without_permission()", + "label": ".test_limit_and_offset()", "file_type": "code", - "source_file": "tests/test_roles.py", - "source_location": "L56", - "community": 527, - "norm_label": ".test_check_access_user_without_permission()", - "id": "tests_test_roles_testroles_test_check_access_user_without_permission" + "source_file": "tests/test_pagination.py", + "source_location": "L61", + "community": 504, + "norm_label": ".test_limit_and_offset()", + "id": "tests_test_pagination_testinlinepagination_test_limit_and_offset" }, { - "label": ".test_check_access_premium_has_prometheus()", + "label": ".test_limit_exceeds_max_rejected()", "file_type": "code", - "source_file": "tests/test_roles.py", - "source_location": "L60", - "community": 527, - "norm_label": ".test_check_access_premium_has_prometheus()", - "id": "tests_test_roles_testroles_test_check_access_premium_has_prometheus" + "source_file": "tests/test_pagination.py", + "source_location": "L69", + "community": 504, + "norm_label": ".test_limit_exceeds_max_rejected()", + "id": "tests_test_pagination_testinlinepagination_test_limit_exceeds_max_rejected" }, { - "label": ".test_check_access_case_insensitive()", + "label": ".test_limit_zero_rejected()", "file_type": "code", - "source_file": "tests/test_roles.py", - "source_location": "L64", - "community": 527, - "norm_label": ".test_check_access_case_insensitive()", - "id": "tests_test_roles_testroles_test_check_access_case_insensitive" + "source_file": "tests/test_pagination.py", + "source_location": "L73", + "community": 504, + "norm_label": ".test_limit_zero_rejected()", + "id": "tests_test_pagination_testinlinepagination_test_limit_zero_rejected" }, { - "label": ".test_check_access_invalid_role_ignored()", + "label": ".test_negative_offset_rejected()", "file_type": "code", - "source_file": "tests/test_roles.py", - "source_location": "L68", - "community": 527, - "norm_label": ".test_check_access_invalid_role_ignored()", - "id": "tests_test_roles_testroles_test_check_access_invalid_role_ignored" + "source_file": "tests/test_pagination.py", + "source_location": "L77", + "community": 504, + "norm_label": ".test_negative_offset_rejected()", + "id": "tests_test_pagination_testinlinepagination_test_negative_offset_rejected" }, { - "label": ".test_check_access_empty_roles()", + "label": ".test_offset_beyond_total()", "file_type": "code", - "source_file": "tests/test_roles.py", - "source_location": "L72", - "community": 527, - "norm_label": ".test_check_access_empty_roles()", - "id": "tests_test_roles_testroles_test_check_access_empty_roles" + "source_file": "tests/test_pagination.py", + "source_location": "L81", + "community": 504, + "norm_label": ".test_offset_beyond_total()", + "id": "tests_test_pagination_testinlinepagination_test_offset_beyond_total" }, { - "label": ".test_check_access_multiple_roles()", + "label": ".test_limit_equals_max()", "file_type": "code", - "source_file": "tests/test_roles.py", - "source_location": "L76", - "community": 527, - "norm_label": ".test_check_access_multiple_roles()", - "id": "tests_test_roles_testroles_test_check_access_multiple_roles" + "source_file": "tests/test_pagination.py", + "source_location": "L86", + "community": 504, + "norm_label": ".test_limit_equals_max()", + "id": "tests_test_pagination_testinlinepagination_test_limit_equals_max" }, { - "label": "test_roles_coverage.py", - "file_type": "code", - "source_file": "tests/test_roles_coverage.py", + "label": "Tests for inline pagination params (used in user + prometheus controllers).", + "file_type": "rationale", + "source_file": "tests/test_pagination.py", "source_location": "L1", - "community": 45, - "norm_label": "test_roles_coverage.py", - "id": "tests_test_roles_coverage_py" + "community": 482, + "norm_label": "tests for inline pagination params (used in user + prometheus controllers).", + "id": "tests_test_pagination_rationale_1" }, { - "label": "TestCheckAccess", + "label": "test_prometheus_auth_coverage.py", "file_type": "code", - "source_file": "tests/test_roles_coverage.py", - "source_location": "L9", - "community": 45, - "norm_label": "testcheckaccess", - "id": "tests_test_roles_coverage_testcheckaccess" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L1", + "community": 29, + "norm_label": "test_prometheus_auth_coverage.py", + "id": "tests_test_prometheus_auth_coverage_py" }, { - "label": ".test_admin_always_passes()", + "label": "TestPrometheusInit", "file_type": "code", - "source_file": "tests/test_roles_coverage.py", - "source_location": "L10", - "community": 45, - "norm_label": ".test_admin_always_passes()", - "id": "tests_test_roles_coverage_testcheckaccess_test_admin_always_passes" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L26", + "community": 68, + "norm_label": "testprometheusinit", + "id": "tests_test_prometheus_auth_coverage_testprometheusinit" }, { - "label": ".test_user_has_view_profile()", + "label": "test_init_creates_client()", "file_type": "code", - "source_file": "tests/test_roles_coverage.py", - "source_location": "L13", - "community": 45, - "norm_label": ".test_user_has_view_profile()", - "id": "tests_test_roles_coverage_testcheckaccess_test_user_has_view_profile" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L31", + "community": 29, + "norm_label": "test_init_creates_client()", + "id": "tests_test_prometheus_auth_coverage_test_init_creates_client" }, { - "label": ".test_user_lacks_prometheus()", + "label": "TestPrometheusSendMessage", "file_type": "code", - "source_file": "tests/test_roles_coverage.py", - "source_location": "L16", - "community": 45, - "norm_label": ".test_user_lacks_prometheus()", - "id": "tests_test_roles_coverage_testcheckaccess_test_user_lacks_prometheus" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L41", + "community": 68, + "norm_label": "testprometheussendmessage", + "id": "tests_test_prometheus_auth_coverage_testprometheussendmessage" }, { - "label": ".test_premium_has_prometheus()", + "label": "test_send_message_basic()", "file_type": "code", - "source_file": "tests/test_roles_coverage.py", - "source_location": "L19", - "community": 45, - "norm_label": ".test_premium_has_prometheus()", - "id": "tests_test_roles_coverage_testcheckaccess_test_premium_has_prometheus" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L49", + "community": 29, + "norm_label": "test_send_message_basic()", + "id": "tests_test_prometheus_auth_coverage_test_send_message_basic" }, { - "label": ".test_developer_starter_has_api()", + "label": "test_send_message_saves_user_message_on_error()", "file_type": "code", - "source_file": "tests/test_roles_coverage.py", - "source_location": "L22", - "community": 45, - "norm_label": ".test_developer_starter_has_api()", - "id": "tests_test_roles_coverage_testcheckaccess_test_developer_starter_has_api" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L78", + "community": 29, + "norm_label": "test_send_message_saves_user_message_on_error()", + "id": "tests_test_prometheus_auth_coverage_test_send_message_saves_user_message_on_error" }, { - "label": ".test_developer_starter_lacks_enterprise()", + "label": "test_send_message_with_history()", "file_type": "code", - "source_file": "tests/test_roles_coverage.py", - "source_location": "L25", - "community": 45, - "norm_label": ".test_developer_starter_lacks_enterprise()", - "id": "tests_test_roles_coverage_testcheckaccess_test_developer_starter_lacks_enterprise" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L101", + "community": 29, + "norm_label": "test_send_message_with_history()", + "id": "tests_test_prometheus_auth_coverage_test_send_message_with_history" }, { - "label": ".test_developer_enterprise_has_all_dev()", + "label": "test_stream_message_yields_text_chunks()", "file_type": "code", - "source_file": "tests/test_roles_coverage.py", - "source_location": "L28", - "community": 45, - "norm_label": ".test_developer_enterprise_has_all_dev()", - "id": "tests_test_roles_coverage_testcheckaccess_test_developer_enterprise_has_all_dev" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L124", + "community": 138, + "norm_label": "test_stream_message_yields_text_chunks()", + "id": "tests_test_prometheus_auth_coverage_test_stream_message_yields_text_chunks" }, { - "label": ".test_unknown_role_ignored()", + "label": "test_stream_message_handles_function_calls()", "file_type": "code", - "source_file": "tests/test_roles_coverage.py", - "source_location": "L32", - "community": 45, - "norm_label": ".test_unknown_role_ignored()", - "id": "tests_test_roles_coverage_testcheckaccess_test_unknown_role_ignored" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L175", + "community": 29, + "norm_label": "test_stream_message_handles_function_calls()", + "id": "tests_test_prometheus_auth_coverage_test_stream_message_handles_function_calls" }, { - "label": ".test_multiple_roles_combined()", + "label": "TestPrometheusChatManager", "file_type": "code", - "source_file": "tests/test_roles_coverage.py", - "source_location": "L35", - "community": 45, - "norm_label": ".test_multiple_roles_combined()", - "id": "tests_test_roles_coverage_testcheckaccess_test_multiple_roles_combined" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L245", + "community": 52, + "norm_label": "testprometheuschatmanager", + "id": "tests_test_prometheus_auth_coverage_testprometheuschatmanager" }, { - "label": ".test_empty_roles()", + "label": ".test_init()", "file_type": "code", - "source_file": "tests/test_roles_coverage.py", - "source_location": "L38", - "community": 45, - "norm_label": ".test_empty_roles()", - "id": "tests_test_roles_coverage_testcheckaccess_test_empty_roles" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L248", + "community": 68, + "norm_label": ".test_init()", + "id": "tests_test_prometheus_auth_coverage_testprometheuschatmanager_test_init" }, { - "label": ".test_admin_skips_other_roles()", + "label": ".test_get_user_sessions()", "file_type": "code", - "source_file": "tests/test_roles_coverage.py", - "source_location": "L41", - "community": 45, - "norm_label": ".test_admin_skips_other_roles()", - "id": "tests_test_roles_coverage_testcheckaccess_test_admin_skips_other_roles" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L254", + "community": 52, + "norm_label": ".test_get_user_sessions()", + "id": "tests_test_prometheus_auth_coverage_testprometheuschatmanager_test_get_user_sessions" }, { - "label": "TestRequirePermission", + "label": ".test_create_session()", "file_type": "code", - "source_file": "tests/test_roles_coverage.py", - "source_location": "L45", - "community": 45, - "norm_label": "testrequirepermission", - "id": "tests_test_roles_coverage_testrequirepermission" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L280", + "community": 52, + "norm_label": ".test_create_session()", + "id": "tests_test_prometheus_auth_coverage_testprometheuschatmanager_test_create_session" }, { - "label": ".test_raises_403_when_missing()", + "label": ".test_update_session_title_found()", "file_type": "code", - "source_file": "tests/test_roles_coverage.py", - "source_location": "L46", - "community": 45, - "norm_label": ".test_raises_403_when_missing()", - "id": "tests_test_roles_coverage_testrequirepermission_test_raises_403_when_missing" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L291", + "community": 52, + "norm_label": ".test_update_session_title_found()", + "id": "tests_test_prometheus_auth_coverage_testprometheuschatmanager_test_update_session_title_found" }, { - "label": ".test_passes_when_has_permission()", + "label": ".test_update_session_title_not_found()", "file_type": "code", - "source_file": "tests/test_roles_coverage.py", - "source_location": "L64", - "community": 45, - "norm_label": ".test_passes_when_has_permission()", - "id": "tests_test_roles_coverage_testrequirepermission_test_passes_when_has_permission" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L303", + "community": 52, + "norm_label": ".test_update_session_title_not_found()", + "id": "tests_test_prometheus_auth_coverage_testprometheuschatmanager_test_update_session_title_not_found" }, { - "label": "TestPermissionAll", + "label": ".test_save_message_found()", "file_type": "code", - "source_file": "tests/test_roles_coverage.py", - "source_location": "L83", - "community": 45, - "norm_label": "testpermissionall", - "id": "tests_test_roles_coverage_testpermissionall" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L312", + "community": 52, + "norm_label": ".test_save_message_found()", + "id": "tests_test_prometheus_auth_coverage_testprometheuschatmanager_test_save_message_found" }, { - "label": ".test_all_includes_all_permissions()", + "label": ".test_save_message_history_none()", "file_type": "code", - "source_file": "tests/test_roles_coverage.py", - "source_location": "L84", - "community": 45, - "norm_label": ".test_all_includes_all_permissions()", - "id": "tests_test_roles_coverage_testpermissionall_test_all_includes_all_permissions" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L328", + "community": 52, + "norm_label": ".test_save_message_history_none()", + "id": "tests_test_prometheus_auth_coverage_testprometheuschatmanager_test_save_message_history_none" }, { - "label": "TestRolesHierarchy", + "label": ".test_save_message_not_found()", "file_type": "code", - "source_file": "tests/test_roles_coverage.py", - "source_location": "L92", - "community": 45, - "norm_label": "testroleshierarchy", - "id": "tests_test_roles_coverage_testroleshierarchy" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L347", + "community": 52, + "norm_label": ".test_save_message_not_found()", + "id": "tests_test_prometheus_auth_coverage_testprometheuschatmanager_test_save_message_not_found" }, { - "label": ".test_premium_includes_user()", + "label": ".test_get_history_with_messages()", "file_type": "code", - "source_file": "tests/test_roles_coverage.py", - "source_location": "L93", - "community": 45, - "norm_label": ".test_premium_includes_user()", - "id": "tests_test_roles_coverage_testroleshierarchy_test_premium_includes_user" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L356", + "community": 52, + "norm_label": ".test_get_history_with_messages()", + "id": "tests_test_prometheus_auth_coverage_testprometheuschatmanager_test_get_history_with_messages" }, { - "label": ".test_enterprise_includes_starter()", + "label": ".test_get_history_empty()", "file_type": "code", - "source_file": "tests/test_roles_coverage.py", - "source_location": "L96", - "community": 45, - "norm_label": ".test_enterprise_includes_starter()", - "id": "tests_test_roles_coverage_testroleshierarchy_test_enterprise_includes_starter" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L373", + "community": 52, + "norm_label": ".test_get_history_empty()", + "id": "tests_test_prometheus_auth_coverage_testprometheuschatmanager_test_get_history_empty" }, { - "label": ".test_admin_includes_all()", + "label": ".test_get_history_no_history()", "file_type": "code", - "source_file": "tests/test_roles_coverage.py", - "source_location": "L99", - "community": 45, - "norm_label": ".test_admin_includes_all()", - "id": "tests_test_roles_coverage_testroleshierarchy_test_admin_includes_all" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L382", + "community": 52, + "norm_label": ".test_get_history_no_history()", + "id": "tests_test_prometheus_auth_coverage_testprometheuschatmanager_test_get_history_no_history" }, { - "label": "Tests for main/utils/roles.py \u2014 covers requirePermission and edge cases.", - "file_type": "rationale", - "source_file": "tests/test_roles_coverage.py", - "source_location": "L1", - "community": 45, - "norm_label": "tests for main/utils/roles.py \u2014 covers requirepermission and edge cases.", - "id": "tests_test_roles_coverage_rationale_1" + "label": ".test_get_history_with_limit()", + "file_type": "code", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L393", + "community": 52, + "norm_label": ".test_get_history_with_limit()", + "id": "tests_test_prometheus_auth_coverage_testprometheuschatmanager_test_get_history_with_limit" }, { - "label": "test_sandbox.py", + "label": ".test_update_summary_found()", "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L1", - "community": 2, - "norm_label": "test_sandbox.py", - "id": "tests_test_sandbox_py" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L404", + "community": 52, + "norm_label": ".test_update_summary_found()", + "id": "tests_test_prometheus_auth_coverage_testprometheuschatmanager_test_update_summary_found" }, { - "label": "_mock_forgevm()", + "label": ".test_update_summary_not_found()", "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L7", - "community": 2, - "norm_label": "_mock_forgevm()", - "id": "tests_test_sandbox_mock_forgevm" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L415", + "community": 52, + "norm_label": ".test_update_summary_not_found()", + "id": "tests_test_prometheus_auth_coverage_testprometheuschatmanager_test_update_summary_not_found" }, { - "label": "TestSandboxManager", + "label": ".test_delete_session_found()", "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L24", - "community": 113, - "norm_label": "testsandboxmanager", - "id": "tests_test_sandbox_testsandboxmanager" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L424", + "community": 52, + "norm_label": ".test_delete_session_found()", + "id": "tests_test_prometheus_auth_coverage_testprometheuschatmanager_test_delete_session_found" }, { - "label": "test_create_sandbox()", + "label": ".test_delete_session_not_found()", "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L27", - "community": 2, - "norm_label": "test_create_sandbox()", - "id": "tests_test_sandbox_test_create_sandbox" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L436", + "community": 52, + "norm_label": ".test_delete_session_not_found()", + "id": "tests_test_prometheus_auth_coverage_testprometheuschatmanager_test_delete_session_not_found" }, { - "label": "test_execute_code()", + "label": ".test_verify_session_ownership_true()", "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L35", - "community": 2, - "norm_label": "test_execute_code()", - "id": "tests_test_sandbox_test_execute_code" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L445", + "community": 52, + "norm_label": ".test_verify_session_ownership_true()", + "id": "tests_test_prometheus_auth_coverage_testprometheuschatmanager_test_verify_session_ownership_true" }, { - "label": ".test_read_file()", + "label": ".test_verify_session_ownership_false()", "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L42", - "community": 113, - "norm_label": ".test_read_file()", - "id": "tests_test_sandbox_testsandboxmanager_test_read_file" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L454", + "community": 52, + "norm_label": ".test_verify_session_ownership_false()", + "id": "tests_test_prometheus_auth_coverage_testprometheuschatmanager_test_verify_session_ownership_false" }, { - "label": ".test_write_file()", + "label": "TestAuthenticationManager", "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L52", - "community": 113, - "norm_label": ".test_write_file()", - "id": "tests_test_sandbox_testsandboxmanager_test_write_file" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L469", + "community": 88, + "norm_label": "testauthenticationmanager", + "id": "tests_test_prometheus_auth_coverage_testauthenticationmanager" }, { - "label": ".test_list_files()", + "label": "test_create_user_account_success()", "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L62", - "community": 113, - "norm_label": ".test_list_files()", - "id": "tests_test_sandbox_testsandboxmanager_test_list_files" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L473", + "community": 29, + "norm_label": "test_create_user_account_success()", + "id": "tests_test_prometheus_auth_coverage_test_create_user_account_success" }, { - "label": ".test_list_files_empty()", + "label": ".test_create_user_account_no_password_no_google()", "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L74", - "community": 113, - "norm_label": ".test_list_files_empty()", - "id": "tests_test_sandbox_testsandboxmanager_test_list_files_empty" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L485", + "community": 88, + "norm_label": ".test_create_user_account_no_password_no_google()", + "id": "tests_test_prometheus_auth_coverage_testauthenticationmanager_test_create_user_account_no_password_no_google" }, { - "label": ".test_read_file_not_found()", + "label": ".test_create_user_account_username_taken()", "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L80", - "community": 113, - "norm_label": ".test_read_file_not_found()", - "id": "tests_test_sandbox_testsandboxmanager_test_read_file_not_found" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L496", + "community": 88, + "norm_label": ".test_create_user_account_username_taken()", + "id": "tests_test_prometheus_auth_coverage_testauthenticationmanager_test_create_user_account_username_taken" }, { - "label": "test_destroy_sandbox()", + "label": ".test_create_user_account_email_taken()", "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L88", - "community": 2, - "norm_label": "test_destroy_sandbox()", - "id": "tests_test_sandbox_test_destroy_sandbox" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L510", + "community": 88, + "norm_label": ".test_create_user_account_email_taken()", + "id": "tests_test_prometheus_auth_coverage_testauthenticationmanager_test_create_user_account_email_taken" }, { - "label": "test_destroy_handles_failure()", + "label": "test_create_user_account_db_exception()", "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L95", - "community": 2, - "norm_label": "test_destroy_handles_failure()", - "id": "tests_test_sandbox_test_destroy_handles_failure" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L525", + "community": 29, + "norm_label": "test_create_user_account_db_exception()", + "id": "tests_test_prometheus_auth_coverage_test_create_user_account_db_exception" }, { - "label": "test_execute_passes_timeout()", + "label": ".test_create_user_account_with_google_id()", "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L107", - "community": 2, - "norm_label": "test_execute_passes_timeout()", - "id": "tests_test_sandbox_test_execute_passes_timeout" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L539", + "community": 88, + "norm_label": ".test_create_user_account_with_google_id()", + "id": "tests_test_prometheus_auth_coverage_testauthenticationmanager_test_create_user_account_with_google_id" }, { - "label": "test_create_returns_sandbox_id()", + "label": ".test_authenticate_google_user_found()", "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L116", - "community": 96, - "norm_label": "test_create_returns_sandbox_id()", - "id": "tests_test_sandbox_test_create_returns_sandbox_id" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L548", + "community": 88, + "norm_label": ".test_authenticate_google_user_found()", + "id": "tests_test_prometheus_auth_coverage_testauthenticationmanager_test_authenticate_google_user_found" }, { - "label": ".test_write_file_returns_false_on_error()", + "label": ".test_authenticate_google_user_not_found()", "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L122", - "community": 113, - "norm_label": ".test_write_file_returns_false_on_error()", - "id": "tests_test_sandbox_testsandboxmanager_test_write_file_returns_false_on_error" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L563", + "community": 88, + "norm_label": ".test_authenticate_google_user_not_found()", + "id": "tests_test_prometheus_auth_coverage_testauthenticationmanager_test_authenticate_google_user_not_found" }, { - "label": "test_execute_retries_on_sandbox_not_found()", + "label": ".test_authenticate_google_user_exception()", "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L131", - "community": 2, - "norm_label": "test_execute_retries_on_sandbox_not_found()", - "id": "tests_test_sandbox_test_execute_retries_on_sandbox_not_found" - }, - { - "label": "Wire up mock forgevm AsyncClient that returns sandbox with all methods.", - "file_type": "rationale", - "source_file": "tests/test_sandbox.py", - "source_location": "L8", - "community": 2, - "norm_label": "wire up mock forgevm asyncclient that returns sandbox with all methods.", - "id": "tests_test_sandbox_rationale_8" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L572", + "community": 88, + "norm_label": ".test_authenticate_google_user_exception()", + "id": "tests_test_prometheus_auth_coverage_testauthenticationmanager_test_authenticate_google_user_exception" }, { - "label": "read_file reads from host filesystem.", - "file_type": "rationale", - "source_file": "tests/test_sandbox.py", - "source_location": "L43", - "community": 113, - "norm_label": "read_file reads from host filesystem.", - "id": "tests_test_sandbox_rationale_43" + "label": "test_authenticate_user_success()", + "file_type": "code", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L582", + "community": 29, + "norm_label": "test_authenticate_user_success()", + "id": "tests_test_prometheus_auth_coverage_test_authenticate_user_success" }, { - "label": "write_file writes to host filesystem.", - "file_type": "rationale", - "source_file": "tests/test_sandbox.py", - "source_location": "L53", - "community": 113, - "norm_label": "write_file writes to host filesystem.", - "id": "tests_test_sandbox_rationale_53" + "label": "test_authenticate_user_wrong_password()", + "file_type": "code", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L599", + "community": 29, + "norm_label": "test_authenticate_user_wrong_password()", + "id": "tests_test_prometheus_auth_coverage_test_authenticate_user_wrong_password" }, { - "label": "list_files lists host filesystem entries.", - "file_type": "rationale", - "source_file": "tests/test_sandbox.py", - "source_location": "L63", - "community": 113, - "norm_label": "list_files lists host filesystem entries.", - "id": "tests_test_sandbox_rationale_63" + "label": ".test_authenticate_user_not_found()", + "file_type": "code", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L611", + "community": 88, + "norm_label": ".test_authenticate_user_not_found()", + "id": "tests_test_prometheus_auth_coverage_testauthenticationmanager_test_authenticate_user_not_found" }, { - "label": "list_files returns empty for missing directory.", - "file_type": "rationale", - "source_file": "tests/test_sandbox.py", - "source_location": "L75", - "community": 113, - "norm_label": "list_files returns empty for missing directory.", - "id": "tests_test_sandbox_rationale_75" + "label": ".test_authenticate_user_no_password_hash()", + "file_type": "code", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L620", + "community": 88, + "norm_label": ".test_authenticate_user_no_password_hash()", + "id": "tests_test_prometheus_auth_coverage_testauthenticationmanager_test_authenticate_user_no_password_hash" }, { - "label": "read_file raises FileNotFoundError for missing file.", - "file_type": "rationale", - "source_file": "tests/test_sandbox.py", - "source_location": "L81", - "community": 113, - "norm_label": "read_file raises filenotfounderror for missing file.", - "id": "tests_test_sandbox_rationale_81" + "label": ".test_authenticate_user_exception()", + "file_type": "code", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L631", + "community": 88, + "norm_label": ".test_authenticate_user_exception()", + "id": "tests_test_prometheus_auth_coverage_testauthenticationmanager_test_authenticate_user_exception" }, { - "label": "write_file returns False when host write fails (e.g. invalid path chars).", - "file_type": "rationale", - "source_file": "tests/test_sandbox.py", - "source_location": "L123", - "community": 113, - "norm_label": "write_file returns false when host write fails (e.g. invalid path chars).", - "id": "tests_test_sandbox_rationale_123" + "label": "TestSessionManager", + "file_type": "code", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L646", + "community": 60, + "norm_label": "testsessionmanager", + "id": "tests_test_prometheus_auth_coverage_testsessionmanager" }, { - "label": "execute() catches SandboxNotFound from exec, calls getOrCreate, retries.", - "file_type": "rationale", - "source_file": "tests/test_sandbox.py", - "source_location": "L132", - "community": 307, - "norm_label": "execute() catches sandboxnotfound from exec, calls getorcreate, retries.", - "id": "tests_test_sandbox_rationale_132" + "label": "test_create_session()", + "file_type": "code", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L652", + "community": 29, + "norm_label": "test_create_session()", + "id": "tests_test_prometheus_auth_coverage_test_create_session" }, { - "label": "test_sandbox_persistence.py", + "label": "test_create_session_custom_expiry()", "file_type": "code", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L1", - "community": 4, - "norm_label": "test_sandbox_persistence.py", - "id": "tests_test_sandbox_persistence_py" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L679", + "community": 29, + "norm_label": "test_create_session_custom_expiry()", + "id": "tests_test_prometheus_auth_coverage_test_create_session_custom_expiry" }, { - "label": "_mock_forgevm()", + "label": ".test_get_user_sessions_active_only()", "file_type": "code", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L9", - "community": 4, - "norm_label": "_mock_forgevm()", - "id": "tests_test_sandbox_persistence_mock_forgevm" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L697", + "community": 60, + "norm_label": ".test_get_user_sessions_active_only()", + "id": "tests_test_prometheus_auth_coverage_testsessionmanager_test_get_user_sessions_active_only" }, { - "label": "TestPrometheusSandboxModel", + "label": ".test_get_user_sessions_include_inactive()", "file_type": "code", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L28", - "community": 4, - "norm_label": "testprometheussandboxmodel", - "id": "tests_test_sandbox_persistence_testprometheussandboxmodel" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L708", + "community": 60, + "norm_label": ".test_get_user_sessions_include_inactive()", + "id": "tests_test_prometheus_auth_coverage_testsessionmanager_test_get_user_sessions_include_inactive" }, { - "label": ".test_create_sandbox_mapping()", + "label": ".test_get_session_by_id()", "file_type": "code", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L29", - "community": 4, - "norm_label": ".test_create_sandbox_mapping()", - "id": "tests_test_sandbox_persistence_testprometheussandboxmodel_test_create_sandbox_mapping" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L718", + "community": 60, + "norm_label": ".test_get_session_by_id()", + "id": "tests_test_prometheus_auth_coverage_testsessionmanager_test_get_session_by_id" }, { - "label": ".test_sandbox_has_timestamps()", + "label": ".test_get_session_by_id_no_user_id()", "file_type": "code", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L41", - "community": 4, - "norm_label": ".test_sandbox_has_timestamps()", - "id": "tests_test_sandbox_persistence_testprometheussandboxmodel_test_sandbox_has_timestamps" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L728", + "community": 60, + "norm_label": ".test_get_session_by_id_no_user_id()", + "id": "tests_test_prometheus_auth_coverage_testsessionmanager_test_get_session_by_id_no_user_id" }, { - "label": ".test_one_sandbox_per_user()", + "label": ".test_get_current_session()", "file_type": "code", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L52", - "community": 4, - "norm_label": ".test_one_sandbox_per_user()", - "id": "tests_test_sandbox_persistence_testprometheussandboxmodel_test_one_sandbox_per_user" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L738", + "community": 60, + "norm_label": ".test_get_current_session()", + "id": "tests_test_prometheus_auth_coverage_testsessionmanager_test_get_current_session" }, { - "label": "TestSandboxPersistence", + "label": ".test_revoke_session_found()", "file_type": "code", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L62", - "community": 4, - "norm_label": "testsandboxpersistence", - "id": "tests_test_sandbox_persistence_testsandboxpersistence" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L747", + "community": 60, + "norm_label": ".test_revoke_session_found()", + "id": "tests_test_prometheus_auth_coverage_testsessionmanager_test_revoke_session_found" }, { - "label": "test_get_or_create_creates_new_when_no_existing()", + "label": ".test_revoke_session_not_found()", "file_type": "code", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L65", - "community": 4, - "norm_label": "test_get_or_create_creates_new_when_no_existing()", - "id": "tests_test_sandbox_persistence_test_get_or_create_creates_new_when_no_existing" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L759", + "community": 60, + "norm_label": ".test_revoke_session_not_found()", + "id": "tests_test_prometheus_auth_coverage_testsessionmanager_test_revoke_session_not_found" }, { - "label": "test_get_or_create_reuses_existing()", + "label": ".test_revoke_all_sessions()", "file_type": "code", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L77", - "community": 4, - "norm_label": "test_get_or_create_reuses_existing()", - "id": "tests_test_sandbox_persistence_test_get_or_create_reuses_existing" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L768", + "community": 60, + "norm_label": ".test_revoke_all_sessions()", + "id": "tests_test_prometheus_auth_coverage_testsessionmanager_test_revoke_all_sessions" }, { - "label": "test_get_or_create_respawns_when_dead()", + "label": ".test_revoke_all_sessions_with_except()", "file_type": "code", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L93", - "community": 4, - "norm_label": "test_get_or_create_respawns_when_dead()", - "id": "tests_test_sandbox_persistence_test_get_or_create_respawns_when_dead" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L779", + "community": 60, + "norm_label": ".test_revoke_all_sessions_with_except()", + "id": "tests_test_prometheus_auth_coverage_testsessionmanager_test_revoke_all_sessions_with_except" }, { - "label": "test_sync_to_sandbox()", + "label": ".test_update_last_active_found()", "file_type": "code", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L126", - "community": 4, - "norm_label": "test_sync_to_sandbox()", - "id": "tests_test_sandbox_persistence_test_sync_to_sandbox" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L789", + "community": 60, + "norm_label": ".test_update_last_active_found()", + "id": "tests_test_prometheus_auth_coverage_testsessionmanager_test_update_last_active_found" }, { - "label": "test_sync_from_sandbox()", + "label": ".test_update_last_active_not_found()", "file_type": "code", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L145", - "community": 4, - "norm_label": "test_sync_from_sandbox()", - "id": "tests_test_sandbox_persistence_test_sync_from_sandbox" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L800", + "community": 60, + "norm_label": ".test_update_last_active_not_found()", + "id": "tests_test_prometheus_auth_coverage_testsessionmanager_test_update_last_active_not_found" }, { - "label": "test_sync_to_sandbox_empty_workspace()", + "label": "test_cleanup_expired_sessions()", "file_type": "code", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L165", - "community": 4, - "norm_label": "test_sync_to_sandbox_empty_workspace()", - "id": "tests_test_sandbox_persistence_test_sync_to_sandbox_empty_workspace" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L810", + "community": 29, + "norm_label": "test_cleanup_expired_sessions()", + "id": "tests_test_prometheus_auth_coverage_test_cleanup_expired_sessions" }, { - "label": "Wire up mock forgevm AsyncClient that returns sandbox with all methods.", - "file_type": "rationale", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L10", - "community": 4, - "norm_label": "wire up mock forgevm asyncclient that returns sandbox with all methods.", - "id": "tests_test_sandbox_persistence_rationale_10" + "label": "test_cleanup_expired_sessions_none_expired()", + "file_type": "code", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L823", + "community": 29, + "norm_label": "test_cleanup_expired_sessions_none_expired()", + "id": "tests_test_prometheus_auth_coverage_test_cleanup_expired_sessions_none_expired" }, { - "label": "Enforce one active sandbox per user via application logic.", - "file_type": "rationale", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L53", - "community": 4, - "norm_label": "enforce one active sandbox per user via application logic.", - "id": "tests_test_sandbox_persistence_rationale_53" + "label": ".test_validate_session_active()", + "file_type": "code", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L834", + "community": 60, + "norm_label": ".test_validate_session_active()", + "id": "tests_test_prometheus_auth_coverage_testsessionmanager_test_validate_session_active" }, { - "label": "syncToSandbox pushes host files into the sandbox.", - "file_type": "rationale", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L127", - "community": 308, - "norm_label": "synctosandbox pushes host files into the sandbox.", - "id": "tests_test_sandbox_persistence_rationale_127" + "label": ".test_validate_session_not_found()", + "file_type": "code", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L846", + "community": 60, + "norm_label": ".test_validate_session_not_found()", + "id": "tests_test_prometheus_auth_coverage_testsessionmanager_test_validate_session_not_found" }, { - "label": "syncFromSandbox pulls sandbox files to host.", - "file_type": "rationale", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L146", - "community": 309, - "norm_label": "syncfromsandbox pulls sandbox files to host.", - "id": "tests_test_sandbox_persistence_rationale_146" + "label": ".test_validate_session_inactive()", + "file_type": "code", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L855", + "community": 60, + "norm_label": ".test_validate_session_inactive()", + "id": "tests_test_prometheus_auth_coverage_testsessionmanager_test_validate_session_inactive" }, { - "label": "syncToSandbox returns 0 when workspace is empty.", - "file_type": "rationale", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L166", - "community": 310, - "norm_label": "synctosandbox returns 0 when workspace is empty.", - "id": "tests_test_sandbox_persistence_rationale_166" + "label": ".test_validate_session_expired()", + "file_type": "code", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L867", + "community": 60, + "norm_label": ".test_validate_session_expired()", + "id": "tests_test_prometheus_auth_coverage_testsessionmanager_test_validate_session_expired" }, { - "label": "test_sandbox_tools.py", + "label": ".test_validate_session_expired_naive_tz()", "file_type": "code", - "source_file": "tests/test_sandbox_tools.py", - "source_location": "L1", - "community": 49, - "norm_label": "test_sandbox_tools.py", - "id": "tests_test_sandbox_tools_py" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L881", + "community": 190, + "norm_label": ".test_validate_session_expired_naive_tz()", + "id": "tests_test_prometheus_auth_coverage_testsessionmanager_test_validate_session_expired_naive_tz" }, { - "label": "TestSandboxToolDefinitions", + "label": ".test_validate_session_no_expiry()", "file_type": "code", - "source_file": "tests/test_sandbox_tools.py", - "source_location": "L6", - "community": 222, - "norm_label": "testsandboxtooldefinitions", - "id": "tests_test_sandbox_tools_testsandboxtooldefinitions" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L895", + "community": 165, + "norm_label": ".test_validate_session_no_expiry()", + "id": "tests_test_prometheus_auth_coverage_testsessionmanager_test_validate_session_no_expiry" }, { - "label": ".test_execute_code_in_registry()", + "label": "TestSSO", "file_type": "code", - "source_file": "tests/test_sandbox_tools.py", - "source_location": "L7", - "community": 222, - "norm_label": ".test_execute_code_in_registry()", - "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_execute_code_in_registry" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L914", + "community": 68, + "norm_label": "testsso", + "id": "tests_test_prometheus_auth_coverage_testsso" }, { - "label": ".test_read_file_in_registry()", + "label": "test_get_google_sso_with_redirect()", "file_type": "code", - "source_file": "tests/test_sandbox_tools.py", - "source_location": "L10", - "community": 222, - "norm_label": ".test_read_file_in_registry()", - "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_read_file_in_registry" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L919", + "community": 58, + "norm_label": "test_get_google_sso_with_redirect()", + "id": "tests_test_prometheus_auth_coverage_test_get_google_sso_with_redirect" }, { - "label": ".test_write_file_in_registry()", + "label": "test_get_google_sso_default_redirect()", "file_type": "code", - "source_file": "tests/test_sandbox_tools.py", - "source_location": "L13", - "community": 222, - "norm_label": ".test_write_file_in_registry()", - "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_write_file_in_registry" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L938", + "community": 58, + "norm_label": "test_get_google_sso_default_redirect()", + "id": "tests_test_prometheus_auth_coverage_test_get_google_sso_default_redirect" }, { - "label": ".test_list_files_in_registry()", - "file_type": "code", - "source_file": "tests/test_sandbox_tools.py", - "source_location": "L16", - "community": 222, - "norm_label": ".test_list_files_in_registry()", - "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_list_files_in_registry" + "label": "Tests to increase coverage for: - main/app/prometheus/generation.py - main/a", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L1", + "community": 29, + "norm_label": "tests to increase coverage for: - main/app/prometheus/generation.py - main/a", + "id": "tests_test_prometheus_auth_coverage_rationale_1" }, { - "label": ".test_execute_code_has_docstring()", - "file_type": "code", - "source_file": "tests/test_sandbox_tools.py", - "source_location": "L19", - "community": 222, - "norm_label": ".test_execute_code_has_docstring()", - "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_execute_code_has_docstring" + "label": "Cover streamMessage in agent.py.", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L42", + "community": 68, + "norm_label": "cover streammessage in agent.py.", + "id": "tests_test_prometheus_auth_coverage_rationale_42" }, { - "label": "TestDispatchToolCallSandbox", - "file_type": "code", - "source_file": "tests/test_sandbox_tools.py", - "source_location": "L25", - "community": 49, - "norm_label": "testdispatchtoolcallsandbox", - "id": "tests_test_sandbox_tools_testdispatchtoolcallsandbox" + "label": "streamMessage must yield dict chunks from async iterator.", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L125", + "community": 305, + "norm_label": "streammessage must yield dict chunks from async iterator.", + "id": "tests_test_prometheus_auth_coverage_rationale_125" }, { - "label": "test_dispatch_execute_code()", - "file_type": "code", - "source_file": "tests/test_sandbox_tools.py", - "source_location": "L28", - "community": 49, - "norm_label": "test_dispatch_execute_code()", - "id": "tests_test_sandbox_tools_test_dispatch_execute_code" + "label": "streamMessage must handle function_calls as a list (not dict).", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L176", + "community": 306, + "norm_label": "streammessage must handle function_calls as a list (not dict).", + "id": "tests_test_prometheus_auth_coverage_rationale_176" }, { - "label": "test_dispatch_execute_code_no_sandbox()", - "file_type": "code", - "source_file": "tests/test_sandbox_tools.py", - "source_location": "L38", - "community": 49, - "norm_label": "test_dispatch_execute_code_no_sandbox()", - "id": "tests_test_sandbox_tools_test_dispatch_execute_code_no_sandbox" + "label": "Cover all methods in chat.py (lines 11-120).", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L246", + "community": 52, + "norm_label": "cover all methods in chat.py (lines 11-120).", + "id": "tests_test_prometheus_auth_coverage_rationale_246" }, { - "label": "test_dispatch_read_file()", - "file_type": "code", - "source_file": "tests/test_sandbox_tools.py", - "source_location": "L47", - "community": 49, - "norm_label": "test_dispatch_read_file()", - "id": "tests_test_sandbox_tools_test_dispatch_read_file" + "label": "Cover all methods in authentication.py (lines 13-75).", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L470", + "community": 88, + "norm_label": "cover all methods in authentication.py (lines 13-75).", + "id": "tests_test_prometheus_auth_coverage_rationale_470" }, { - "label": "test_dispatch_write_file()", - "file_type": "code", - "source_file": "tests/test_sandbox_tools.py", - "source_location": "L57", - "community": 49, - "norm_label": "test_dispatch_write_file()", - "id": "tests_test_sandbox_tools_test_dispatch_write_file" + "label": "Cover all methods in session.py (lines 14-154).", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L647", + "community": 60, + "norm_label": "cover all methods in session.py (lines 14-154).", + "id": "tests_test_prometheus_auth_coverage_rationale_647" }, { - "label": "test_dispatch_list_files()", - "file_type": "code", - "source_file": "tests/test_sandbox_tools.py", - "source_location": "L67", - "community": 49, - "norm_label": "test_dispatch_list_files()", - "id": "tests_test_sandbox_tools_test_dispatch_list_files" + "label": "Exercises the tzinfo-is-None branch (line 144-148).", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L882", + "community": 190, + "norm_label": "exercises the tzinfo-is-none branch (line 144-148).", + "id": "tests_test_prometheus_auth_coverage_rationale_882" }, { - "label": "test_dispatch_read_file_no_sandbox()", - "file_type": "code", - "source_file": "tests/test_sandbox_tools.py", - "source_location": "L76", - "community": 49, - "norm_label": "test_dispatch_read_file_no_sandbox()", - "id": "tests_test_sandbox_tools_test_dispatch_read_file_no_sandbox" + "label": "Exercises the expiresAt-is-None branch (line 143).", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L896", + "community": 165, + "norm_label": "exercises the expiresat-is-none branch (line 143).", + "id": "tests_test_prometheus_auth_coverage_rationale_896" }, { - "label": "test_sessions.py", - "file_type": "code", - "source_file": "tests/test_sessions.py", - "source_location": "L1", - "community": 44, - "norm_label": "test_sessions.py", - "id": "tests_test_sessions_py" + "label": "Cover getGoogleSSO (lines 6-14).", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L915", + "community": 68, + "norm_label": "cover getgooglesso (lines 6-14).", + "id": "tests_test_prometheus_auth_coverage_rationale_915" }, { - "label": "TestUserSessionModel", + "label": "test_prometheus_tools.py", "file_type": "code", - "source_file": "tests/test_sessions.py", - "source_location": "L13", - "community": 44, - "norm_label": "testusersessionmodel", - "id": "tests_test_sessions_testusersessionmodel" + "source_file": "tests/test_prometheus_tools.py", + "source_location": "L1", + "community": 100, + "norm_label": "test_prometheus_tools.py", + "id": "tests_test_prometheus_tools_py" }, { - "label": ".test_getDeviceName_with_browser_and_os()", + "label": "_assert_gemini_safe()", "file_type": "code", - "source_file": "tests/test_sessions.py", - "source_location": "L14", - "community": 44, - "norm_label": ".test_getdevicename_with_browser_and_os()", - "id": "tests_test_sessions_testusersessionmodel_test_getdevicename_with_browser_and_os" + "source_file": "tests/test_prometheus_tools.py", + "source_location": "L21", + "community": 100, + "norm_label": "_assert_gemini_safe()", + "id": "tests_test_prometheus_tools_assert_gemini_safe" }, { - "label": ".test_getDeviceName_with_fingerprint_only()", + "label": "TestMemoryToolFunctions", "file_type": "code", - "source_file": "tests/test_sessions.py", - "source_location": "L27", - "community": 44, - "norm_label": ".test_getdevicename_with_fingerprint_only()", - "id": "tests_test_sessions_testusersessionmodel_test_getdevicename_with_fingerprint_only" + "source_file": "tests/test_prometheus_tools.py", + "source_location": "L44", + "community": 100, + "norm_label": "testmemorytoolfunctions", + "id": "tests_test_prometheus_tools_testmemorytoolfunctions" }, { - "label": ".test_getDeviceName_fallback()", + "label": ".test_search_memory_has_docstring()", "file_type": "code", - "source_file": "tests/test_sessions.py", - "source_location": "L39", - "community": 44, - "norm_label": ".test_getdevicename_fallback()", - "id": "tests_test_sessions_testusersessionmodel_test_getdevicename_fallback" + "source_file": "tests/test_prometheus_tools.py", + "source_location": "L45", + "community": 100, + "norm_label": ".test_search_memory_has_docstring()", + "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_search_memory_has_docstring" }, { - "label": ".test_getDeviceName_empty_strings()", + "label": ".test_save_memory_has_docstring()", "file_type": "code", - "source_file": "tests/test_sessions.py", - "source_location": "L52", - "community": 44, - "norm_label": ".test_getdevicename_empty_strings()", - "id": "tests_test_sessions_testusersessionmodel_test_getdevicename_empty_strings" + "source_file": "tests/test_prometheus_tools.py", + "source_location": "L49", + "community": 100, + "norm_label": ".test_save_memory_has_docstring()", + "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_save_memory_has_docstring" }, { - "label": ".test_isActive_default()", + "label": ".test_search_memory_signature()", "file_type": "code", - "source_file": "tests/test_sessions.py", - "source_location": "L66", - "community": 44, - "norm_label": ".test_isactive_default()", - "id": "tests_test_sessions_testusersessionmodel_test_isactive_default" + "source_file": "tests/test_prometheus_tools.py", + "source_location": "L53", + "community": 100, + "norm_label": ".test_search_memory_signature()", + "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_search_memory_signature" }, { - "label": ".test_isActive_can_be_false()", + "label": ".test_save_memory_signature()", "file_type": "code", - "source_file": "tests/test_sessions.py", - "source_location": "L70", - "community": 44, - "norm_label": ".test_isactive_can_be_false()", - "id": "tests_test_sessions_testusersessionmodel_test_isactive_can_be_false" + "source_file": "tests/test_prometheus_tools.py", + "source_location": "L59", + "community": 100, + "norm_label": ".test_save_memory_signature()", + "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_save_memory_signature" }, { - "label": "TestSessionExpiration", + "label": ".test_search_memory_has_type_hints()", "file_type": "code", - "source_file": "tests/test_sessions.py", - "source_location": "L75", - "community": 44, - "norm_label": "testsessionexpiration", - "id": "tests_test_sessions_testsessionexpiration" + "source_file": "tests/test_prometheus_tools.py", + "source_location": "L66", + "community": 100, + "norm_label": ".test_search_memory_has_type_hints()", + "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_search_memory_has_type_hints" }, { - "label": ".test_session_expiry_days_is_30()", + "label": ".test_save_memory_has_type_hints()", "file_type": "code", - "source_file": "tests/test_sessions.py", - "source_location": "L76", - "community": 44, - "norm_label": ".test_session_expiry_days_is_30()", - "id": "tests_test_sessions_testsessionexpiration_test_session_expiry_days_is_30" + "source_file": "tests/test_prometheus_tools.py", + "source_location": "L71", + "community": 100, + "norm_label": ".test_save_memory_has_type_hints()", + "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_save_memory_has_type_hints" }, { - "label": ".test_session_can_expire()", + "label": ".test_memory_tools_is_list_of_callables()", "file_type": "code", - "source_file": "tests/test_sessions.py", - "source_location": "L79", - "community": 44, - "norm_label": ".test_session_can_expire()", - "id": "tests_test_sessions_testsessionexpiration_test_session_can_expire" + "source_file": "tests/test_prometheus_tools.py", + "source_location": "L77", + "community": 100, + "norm_label": ".test_memory_tools_is_list_of_callables()", + "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_memory_tools_is_list_of_callables" }, { - "label": ".test_session_still_valid_within_expiry()", + "label": ".test_memory_tool_names_unchanged()", "file_type": "code", - "source_file": "tests/test_sessions.py", - "source_location": "L98", - "community": 44, - "norm_label": ".test_session_still_valid_within_expiry()", - "id": "tests_test_sessions_testsessionexpiration_test_session_still_valid_within_expiry" + "source_file": "tests/test_prometheus_tools.py", + "source_location": "L83", + "community": 100, + "norm_label": ".test_memory_tool_names_unchanged()", + "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_memory_tool_names_unchanged" }, { - "label": ".test_session_exactly_at_boundary()", + "label": "TestStateToolFunctions", "file_type": "code", - "source_file": "tests/test_sessions.py", - "source_location": "L116", - "community": 44, - "norm_label": ".test_session_exactly_at_boundary()", - "id": "tests_test_sessions_testsessionexpiration_test_session_exactly_at_boundary" + "source_file": "tests/test_prometheus_tools.py", + "source_location": "L90", + "community": 100, + "norm_label": "teststatetoolfunctions", + "id": "tests_test_prometheus_tools_teststatetoolfunctions" }, { - "label": ".test_created_at_future_date()", + "label": ".test_get_state_has_docstring()", "file_type": "code", - "source_file": "tests/test_sessions.py", - "source_location": "L134", - "community": 44, - "norm_label": ".test_created_at_future_date()", - "id": "tests_test_sessions_testsessionexpiration_test_created_at_future_date" + "source_file": "tests/test_prometheus_tools.py", + "source_location": "L91", + "community": 100, + "norm_label": ".test_get_state_has_docstring()", + "id": "tests_test_prometheus_tools_teststatetoolfunctions_test_get_state_has_docstring" }, { - "label": "test_sso_state_cookie.py", + "label": ".test_set_state_has_docstring()", "file_type": "code", - "source_file": "tests/test_sso_state_cookie.py", - "source_location": "L1", - "community": 18, - "norm_label": "test_sso_state_cookie.py", - "id": "tests_test_sso_state_cookie_py" + "source_file": "tests/test_prometheus_tools.py", + "source_location": "L94", + "community": 100, + "norm_label": ".test_set_state_has_docstring()", + "id": "tests_test_prometheus_tools_teststatetoolfunctions_test_set_state_has_docstring" }, { - "label": "_build_app()", + "label": ".test_get_state_signature()", "file_type": "code", - "source_file": "tests/test_sso_state_cookie.py", - "source_location": "L20", - "community": 18, - "norm_label": "_build_app()", - "id": "tests_test_sso_state_cookie_build_app" + "source_file": "tests/test_prometheus_tools.py", + "source_location": "L97", + "community": 100, + "norm_label": ".test_get_state_signature()", + "id": "tests_test_prometheus_tools_teststatetoolfunctions_test_get_state_signature" }, { - "label": "_override_session()", + "label": ".test_set_state_signature()", "file_type": "code", - "source_file": "tests/test_sso_state_cookie.py", - "source_location": "L35", - "community": 18, - "norm_label": "_override_session()", - "id": "tests_test_sso_state_cookie_override_session" + "source_file": "tests/test_prometheus_tools.py", + "source_location": "L102", + "community": 100, + "norm_label": ".test_set_state_signature()", + "id": "tests_test_prometheus_tools_teststatetoolfunctions_test_set_state_signature" }, { - "label": "TestGoogleEndpointSetsState", + "label": ".test_get_state_gemini_safe()", "file_type": "code", - "source_file": "tests/test_sso_state_cookie.py", - "source_location": "L41", - "community": 18, - "norm_label": "testgoogleendpointsetsstate", - "id": "tests_test_sso_state_cookie_testgoogleendpointsetsstate" + "source_file": "tests/test_prometheus_tools.py", + "source_location": "L108", + "community": 100, + "norm_label": ".test_get_state_gemini_safe()", + "id": "tests_test_prometheus_tools_teststatetoolfunctions_test_get_state_gemini_safe" }, { - "label": ".test_passes_redirect_url_as_state()", + "label": ".test_set_state_gemini_safe()", "file_type": "code", - "source_file": "tests/test_sso_state_cookie.py", - "source_location": "L44", - "community": 18, - "norm_label": ".test_passes_redirect_url_as_state()", - "id": "tests_test_sso_state_cookie_testgoogleendpointsetsstate_test_passes_redirect_url_as_state" + "source_file": "tests/test_prometheus_tools.py", + "source_location": "L111", + "community": 100, + "norm_label": ".test_set_state_gemini_safe()", + "id": "tests_test_prometheus_tools_teststatetoolfunctions_test_set_state_gemini_safe" }, { - "label": ".test_none_when_no_redirect_url()", + "label": ".test_get_state_no_state_returns_error()", "file_type": "code", - "source_file": "tests/test_sso_state_cookie.py", - "source_location": "L67", - "community": 18, - "norm_label": ".test_none_when_no_redirect_url()", - "id": "tests_test_sso_state_cookie_testgoogleendpointsetsstate_test_none_when_no_redirect_url" + "source_file": "tests/test_prometheus_tools.py", + "source_location": "L114", + "community": 100, + "norm_label": ".test_get_state_no_state_returns_error()", + "id": "tests_test_prometheus_tools_teststatetoolfunctions_test_get_state_no_state_returns_error" }, { - "label": ".test_no_sso_redirect_cookie_set()", + "label": ".test_set_state_no_state_returns_error()", "file_type": "code", - "source_file": "tests/test_sso_state_cookie.py", - "source_location": "L87", - "community": 18, - "norm_label": ".test_no_sso_redirect_cookie_set()", - "id": "tests_test_sso_state_cookie_testgoogleendpointsetsstate_test_no_sso_redirect_cookie_set" + "source_file": "tests/test_prometheus_tools.py", + "source_location": "L118", + "community": 487, + "norm_label": ".test_set_state_no_state_returns_error()", + "id": "tests_test_prometheus_tools_teststatetoolfunctions_test_set_state_no_state_returns_error" }, { - "label": "TestCallbackSuccess", + "label": "TestGeminiCompatibility", "file_type": "code", - "source_file": "tests/test_sso_state_cookie.py", - "source_location": "L112", - "community": 18, - "norm_label": "testcallbacksuccess", - "id": "tests_test_sso_state_cookie_testcallbacksuccess" + "source_file": "tests/test_prometheus_tools.py", + "source_location": "L126", + "community": 100, + "norm_label": "testgeminicompatibility", + "id": "tests_test_prometheus_tools_testgeminicompatibility" }, { - "label": ".test_redirects_to_url_in_state()", + "label": "test_tool_has_gemini_safe_signature()", "file_type": "code", - "source_file": "tests/test_sso_state_cookie.py", - "source_location": "L115", - "community": 18, - "norm_label": ".test_redirects_to_url_in_state()", - "id": "tests_test_sso_state_cookie_testcallbacksuccess_test_redirects_to_url_in_state" + "source_file": "tests/test_prometheus_tools.py", + "source_location": "L132", + "community": 100, + "norm_label": "test_tool_has_gemini_safe_signature()", + "id": "tests_test_prometheus_tools_test_tool_has_gemini_safe_signature" }, { - "label": ".test_returns_json_when_no_redirect_in_state()", + "label": ".test_no_harnessstate_in_any_signature()", "file_type": "code", - "source_file": "tests/test_sso_state_cookie.py", - "source_location": "L159", - "community": 18, - "norm_label": ".test_returns_json_when_no_redirect_in_state()", - "id": "tests_test_sso_state_cookie_testcallbacksuccess_test_returns_json_when_no_redirect_in_state" + "source_file": "tests/test_prometheus_tools.py", + "source_location": "L135", + "community": 100, + "norm_label": ".test_no_harnessstate_in_any_signature()", + "id": "tests_test_prometheus_tools_testgeminicompatibility_test_no_harnessstate_in_any_signature" }, { - "label": "TestSSOLoginErrorHandling", + "label": "TestToolRegistry", "file_type": "code", - "source_file": "tests/test_sso_state_cookie.py", - "source_location": "L202", - "community": 18, - "norm_label": "testssologinerrorhandling", - "id": "tests_test_sso_state_cookie_testssologinerrorhandling" + "source_file": "tests/test_prometheus_tools.py", + "source_location": "L151", + "community": 100, + "norm_label": "testtoolregistry", + "id": "tests_test_prometheus_tools_testtoolregistry" }, { - "label": ".test_stale_state_returns_401()", + "label": ".test_registry_contains_memory_tools()", "file_type": "code", - "source_file": "tests/test_sso_state_cookie.py", - "source_location": "L205", - "community": 18, - "norm_label": ".test_stale_state_returns_401()", - "id": "tests_test_sso_state_cookie_testssologinerrorhandling_test_stale_state_returns_401" + "source_file": "tests/test_prometheus_tools.py", + "source_location": "L152", + "community": 100, + "norm_label": ".test_registry_contains_memory_tools()", + "id": "tests_test_prometheus_tools_testtoolregistry_test_registry_contains_memory_tools" }, { - "label": "TestStateSurvivesUrlEncoding", + "label": ".test_registry_values_are_callable()", "file_type": "code", - "source_file": "tests/test_sso_state_cookie.py", - "source_location": "L236", - "community": 18, - "norm_label": "teststatesurvivesurlencoding", - "id": "tests_test_sso_state_cookie_teststatesurvivesurlencoding" + "source_file": "tests/test_prometheus_tools.py", + "source_location": "L156", + "community": 100, + "norm_label": ".test_registry_values_are_callable()", + "id": "tests_test_prometheus_tools_testtoolregistry_test_registry_values_are_callable" }, { - "label": ".test_url_in_state_survives_round_trip()", + "label": ".test_registry_matches_tool_names()", "file_type": "code", - "source_file": "tests/test_sso_state_cookie.py", - "source_location": "L239", - "community": 18, - "norm_label": ".test_url_in_state_survives_round_trip()", - "id": "tests_test_sso_state_cookie_teststatesurvivesurlencoding_test_url_in_state_survives_round_trip" + "source_file": "tests/test_prometheus_tools.py", + "source_location": "L160", + "community": 100, + "norm_label": ".test_registry_matches_tool_names()", + "id": "tests_test_prometheus_tools_testtoolregistry_test_registry_matches_tool_names" }, { - "label": "Tests for Google SSO state cookie flow. The state parameter carries the fronten", + "label": "Assert a tool function has only Gemini-compatible parameter types.", "file_type": "rationale", - "source_file": "tests/test_sso_state_cookie.py", - "source_location": "L1", - "community": 18, - "norm_label": "tests for google sso state cookie flow. the state parameter carries the fronten", - "id": "tests_test_sso_state_cookie_rationale_1" + "source_file": "tests/test_prometheus_tools.py", + "source_location": "L22", + "community": 100, + "norm_label": "assert a tool function has only gemini-compatible parameter types.", + "id": "tests_test_prometheus_tools_rationale_22" }, { - "label": "Verify /auth/google passes redirect URL as state parameter.", + "label": "Every function in TOOL_REGISTRY must have Gemini-safe signatures. Custom cl", "file_type": "rationale", - "source_file": "tests/test_sso_state_cookie.py", - "source_location": "L42", - "community": 18, - "norm_label": "verify /auth/google passes redirect url as state parameter.", - "id": "tests_test_sso_state_cookie_rationale_42" + "source_file": "tests/test_prometheus_tools.py", + "source_location": "L127", + "community": 100, + "norm_label": "every function in tool_registry must have gemini-safe signatures. custom cl", + "id": "tests_test_prometheus_tools_rationale_127" }, { - "label": "State should be the redirect URL directly.", + "label": "Regression: HarnessState must never leak into tool signatures.", "file_type": "rationale", - "source_file": "tests/test_sso_state_cookie.py", - "source_location": "L45", - "community": 18, - "norm_label": "state should be the redirect url directly.", - "id": "tests_test_sso_state_cookie_rationale_45" + "source_file": "tests/test_prometheus_tools.py", + "source_location": "L136", + "community": 100, + "norm_label": "regression: harnessstate must never leak into tool signatures.", + "id": "tests_test_prometheus_tools_rationale_136" }, { - "label": "Without redirect_url, state should be None.", - "file_type": "rationale", - "source_file": "tests/test_sso_state_cookie.py", - "source_location": "L68", - "community": 18, - "norm_label": "without redirect_url, state should be none.", - "id": "tests_test_sso_state_cookie_rationale_68" + "label": "test_relevance_score.py", + "file_type": "code", + "source_file": "tests/test_relevance_score.py", + "source_location": "L1", + "community": 27, + "norm_label": "test_relevance_score.py", + "id": "tests_test_relevance_score_py" }, { - "label": "The /google endpoint should NOT set sso_redirect cookie.", - "file_type": "rationale", - "source_file": "tests/test_sso_state_cookie.py", - "source_location": "L88", - "community": 18, - "norm_label": "the /google endpoint should not set sso_redirect cookie.", - "id": "tests_test_sso_state_cookie_rationale_88" + "label": "_FakeMemory", + "file_type": "code", + "source_file": "tests/test_relevance_score.py", + "source_location": "L12", + "community": 27, + "norm_label": "_fakememory", + "id": "tests_test_relevance_score_fakememory" }, { - "label": "Verify callback redirects cleanly \u2014 token in cookie only.", - "file_type": "rationale", - "source_file": "tests/test_sso_state_cookie.py", - "source_location": "L113", - "community": 18, - "norm_label": "verify callback redirects cleanly \u2014 token in cookie only.", - "id": "tests_test_sso_state_cookie_rationale_113" + "label": ".__init__()", + "file_type": "code", + "source_file": "tests/test_relevance_score.py", + "source_location": "L13", + "community": 27, + "norm_label": ".__init__()", + "id": "tests_test_relevance_score_fakememory_init" }, { - "label": "On success, redirect to URL from state param \u2014 no token in URL.", - "file_type": "rationale", - "source_file": "tests/test_sso_state_cookie.py", - "source_location": "L116", - "community": 18, - "norm_label": "on success, redirect to url from state param \u2014 no token in url.", - "id": "tests_test_sso_state_cookie_rationale_116" - }, - { - "label": "When state has no URL, return JSON with token.", - "file_type": "rationale", - "source_file": "tests/test_sso_state_cookie.py", - "source_location": "L160", - "community": 18, - "norm_label": "when state has no url, return json with token.", - "id": "tests_test_sso_state_cookie_rationale_160" - }, - { - "label": "Verify SSOLoginError returns 401, not 500.", - "file_type": "rationale", - "source_file": "tests/test_sso_state_cookie.py", - "source_location": "L203", - "community": 18, - "norm_label": "verify ssologinerror returns 401, not 500.", - "id": "tests_test_sso_state_cookie_rationale_203" - }, - { - "label": "Stale sso_state cookie must produce 401, not 500.", - "file_type": "rationale", - "source_file": "tests/test_sso_state_cookie.py", - "source_location": "L206", - "community": 18, - "norm_label": "stale sso_state cookie must produce 401, not 500.", - "id": "tests_test_sso_state_cookie_rationale_206" - }, - { - "label": "Verify state parameter survives URL encoding round-trip.", - "file_type": "rationale", - "source_file": "tests/test_sso_state_cookie.py", - "source_location": "L237", - "community": 18, - "norm_label": "verify state parameter survives url encoding round-trip.", - "id": "tests_test_sso_state_cookie_rationale_237" - }, - { - "label": "State with URL characters should survive round-trip through OAuth URL.", - "file_type": "rationale", - "source_file": "tests/test_sso_state_cookie.py", - "source_location": "L240", - "community": 18, - "norm_label": "state with url characters should survive round-trip through oauth url.", - "id": "tests_test_sso_state_cookie_rationale_240" - }, - { - "label": "test_state_tools.py", - "file_type": "code", - "source_file": "tests/test_state_tools.py", - "source_location": "L1", - "community": 8, - "norm_label": "test_state_tools.py", - "id": "tests_test_state_tools_py" - }, - { - "label": "TestStateToolFunctions", + "label": "TestTimeDecay", "file_type": "code", - "source_file": "tests/test_state_tools.py", - "source_location": "L15", - "community": 148, - "norm_label": "teststatetoolfunctions", - "id": "tests_test_state_tools_teststatetoolfunctions" + "source_file": "tests/test_relevance_score.py", + "source_location": "L18", + "community": 27, + "norm_label": "testtimedecay", + "id": "tests_test_relevance_score_testtimedecay" }, { - "label": ".test_get_state_has_docstring()", + "label": ".test_just_accessed_has_full_score()", "file_type": "code", - "source_file": "tests/test_state_tools.py", - "source_location": "L16", - "community": 148, - "norm_label": ".test_get_state_has_docstring()", - "id": "tests_test_state_tools_teststatetoolfunctions_test_get_state_has_docstring" + "source_file": "tests/test_relevance_score.py", + "source_location": "L19", + "community": 27, + "norm_label": ".test_just_accessed_has_full_score()", + "id": "tests_test_relevance_score_testtimedecay_test_just_accessed_has_full_score" }, { - "label": ".test_set_state_has_docstring()", + "label": ".test_one_day_old()", "file_type": "code", - "source_file": "tests/test_state_tools.py", - "source_location": "L20", - "community": 148, - "norm_label": ".test_set_state_has_docstring()", - "id": "tests_test_state_tools_teststatetoolfunctions_test_set_state_has_docstring" + "source_file": "tests/test_relevance_score.py", + "source_location": "L24", + "community": 27, + "norm_label": ".test_one_day_old()", + "id": "tests_test_relevance_score_testtimedecay_test_one_day_old" }, { - "label": ".test_get_state_signature()", + "label": ".test_seven_days_old()", "file_type": "code", - "source_file": "tests/test_state_tools.py", - "source_location": "L24", - "community": 148, - "norm_label": ".test_get_state_signature()", - "id": "tests_test_state_tools_teststatetoolfunctions_test_get_state_signature" + "source_file": "tests/test_relevance_score.py", + "source_location": "L29", + "community": 27, + "norm_label": ".test_seven_days_old()", + "id": "tests_test_relevance_score_testtimedecay_test_seven_days_old" }, { - "label": ".test_set_state_signature()", + "label": ".test_thirty_days_old()", "file_type": "code", - "source_file": "tests/test_state_tools.py", - "source_location": "L31", - "community": 148, - "norm_label": ".test_set_state_signature()", - "id": "tests_test_state_tools_teststatetoolfunctions_test_set_state_signature" + "source_file": "tests/test_relevance_score.py", + "source_location": "L34", + "community": 27, + "norm_label": ".test_thirty_days_old()", + "id": "tests_test_relevance_score_testtimedecay_test_thirty_days_old" }, { - "label": ".test_get_state_has_type_hints()", + "label": ".test_ninety_days_old()", "file_type": "code", - "source_file": "tests/test_state_tools.py", - "source_location": "L38", - "community": 148, - "norm_label": ".test_get_state_has_type_hints()", - "id": "tests_test_state_tools_teststatetoolfunctions_test_get_state_has_type_hints" + "source_file": "tests/test_relevance_score.py", + "source_location": "L39", + "community": 27, + "norm_label": ".test_ninety_days_old()", + "id": "tests_test_relevance_score_testtimedecay_test_ninety_days_old" }, { - "label": ".test_set_state_has_type_hints()", + "label": ".test_one_year_old()", "file_type": "code", - "source_file": "tests/test_state_tools.py", + "source_file": "tests/test_relevance_score.py", "source_location": "L44", - "community": 148, - "norm_label": ".test_set_state_has_type_hints()", - "id": "tests_test_state_tools_teststatetoolfunctions_test_set_state_has_type_hints" + "community": 27, + "norm_label": ".test_one_year_old()", + "id": "tests_test_relevance_score_testtimedecay_test_one_year_old" }, { - "label": ".test_state_tools_in_registry()", + "label": ".test_score_always_positive()", "file_type": "code", - "source_file": "tests/test_state_tools.py", - "source_location": "L50", - "community": 148, - "norm_label": ".test_state_tools_in_registry()", - "id": "tests_test_state_tools_teststatetoolfunctions_test_state_tools_in_registry" + "source_file": "tests/test_relevance_score.py", + "source_location": "L49", + "community": 27, + "norm_label": ".test_score_always_positive()", + "id": "tests_test_relevance_score_testtimedecay_test_score_always_positive" }, { - "label": ".test_registry_has_all_tools()", + "label": "TestBaseScoreImpact", "file_type": "code", - "source_file": "tests/test_state_tools.py", + "source_file": "tests/test_relevance_score.py", "source_location": "L56", - "community": 148, - "norm_label": ".test_registry_has_all_tools()", - "id": "tests_test_state_tools_teststatetoolfunctions_test_registry_has_all_tools" + "community": 27, + "norm_label": "testbasescoreimpact", + "id": "tests_test_relevance_score_testbasescoreimpact" }, { - "label": "TestGetState", + "label": ".test_high_base_beats_low_base_same_age()", "file_type": "code", - "source_file": "tests/test_state_tools.py", - "source_location": "L60", - "community": 8, - "norm_label": "testgetstate", - "id": "tests_test_state_tools_testgetstate" + "source_file": "tests/test_relevance_score.py", + "source_location": "L57", + "community": 27, + "norm_label": ".test_high_base_beats_low_base_same_age()", + "id": "tests_test_relevance_score_testbasescoreimpact_test_high_base_beats_low_base_same_age" }, { - "label": "test_get_state_specific_key()", + "label": ".test_frequently_used_survives_longer()", "file_type": "code", - "source_file": "tests/test_state_tools.py", - "source_location": "L62", - "community": 8, - "norm_label": "test_get_state_specific_key()", - "id": "tests_test_state_tools_test_get_state_specific_key" + "source_file": "tests/test_relevance_score.py", + "source_location": "L63", + "community": 27, + "norm_label": ".test_frequently_used_survives_longer()", + "id": "tests_test_relevance_score_testbasescoreimpact_test_frequently_used_survives_longer" }, { - "label": "test_get_state_all()", + "label": ".test_rare_old_loses_to_popular_new()", "file_type": "code", - "source_file": "tests/test_state_tools.py", - "source_location": "L69", - "community": 8, - "norm_label": "test_get_state_all()", - "id": "tests_test_state_tools_test_get_state_all" + "source_file": "tests/test_relevance_score.py", + "source_location": "L71", + "community": 27, + "norm_label": ".test_rare_old_loses_to_popular_new()", + "id": "tests_test_relevance_score_testbasescoreimpact_test_rare_old_loses_to_popular_new" }, { - "label": "test_get_state_missing_key()", + "label": ".test_score_capped_at_one()", "file_type": "code", - "source_file": "tests/test_state_tools.py", + "source_file": "tests/test_relevance_score.py", "source_location": "L77", - "community": 8, - "norm_label": "test_get_state_missing_key()", - "id": "tests_test_state_tools_test_get_state_missing_key" + "community": 27, + "norm_label": ".test_score_capped_at_one()", + "id": "tests_test_relevance_score_testbasescoreimpact_test_score_capped_at_one" }, { - "label": "test_get_state_no_state()", + "label": ".test_equal_age_higher_base_wins()", "file_type": "code", - "source_file": "tests/test_state_tools.py", - "source_location": "L83", - "community": 8, - "norm_label": "test_get_state_no_state()", - "id": "tests_test_state_tools_test_get_state_no_state" + "source_file": "tests/test_relevance_score.py", + "source_location": "L82", + "community": 27, + "norm_label": ".test_equal_age_higher_base_wins()", + "id": "tests_test_relevance_score_testbasescoreimpact_test_equal_age_higher_base_wins" }, { - "label": "TestSetState", + "label": "TestDecayMonotonicity", "file_type": "code", - "source_file": "tests/test_state_tools.py", - "source_location": "L88", - "community": 8, - "norm_label": "testsetstate", - "id": "tests_test_state_tools_testsetstate" + "source_file": "tests/test_relevance_score.py", + "source_location": "L90", + "community": 27, + "norm_label": "testdecaymonotonicity", + "id": "tests_test_relevance_score_testdecaymonotonicity" }, { - "label": "test_set_state()", + "label": ".test_older_always_lower_score()", "file_type": "code", - "source_file": "tests/test_state_tools.py", - "source_location": "L90", - "community": 8, - "norm_label": "test_set_state()", - "id": "tests_test_state_tools_test_set_state" + "source_file": "tests/test_relevance_score.py", + "source_location": "L91", + "community": 27, + "norm_label": ".test_older_always_lower_score()", + "id": "tests_test_relevance_score_testdecaymonotonicity_test_older_always_lower_score" }, { - "label": "test_set_state_no_state()", + "label": ".test_never_accessed_uses_full_base()", "file_type": "code", - "source_file": "tests/test_state_tools.py", - "source_location": "L97", - "community": 487, - "norm_label": "test_set_state_no_state()", - "id": "tests_test_state_tools_test_set_state_no_state" + "source_file": "tests/test_relevance_score.py", + "source_location": "L99", + "community": 27, + "norm_label": ".test_never_accessed_uses_full_base()", + "id": "tests_test_relevance_score_testdecaymonotonicity_test_never_accessed_uses_full_base" }, { - "label": "TestStateDispatch", + "label": "TestNoCronNeeded", "file_type": "code", - "source_file": "tests/test_state_tools.py", - "source_location": "L102", - "community": 8, - "norm_label": "teststatedispatch", - "id": "tests_test_state_tools_teststatedispatch" + "source_file": "tests/test_relevance_score.py", + "source_location": "L106", + "community": 27, + "norm_label": "testnocronneeded", + "id": "tests_test_relevance_score_testnocronneeded" }, { - "label": "test_dispatch_get_state()", + "label": ".test_same_memory_same_time_same_score()", "file_type": "code", - "source_file": "tests/test_state_tools.py", - "source_location": "L104", - "community": 8, - "norm_label": "test_dispatch_get_state()", - "id": "tests_test_state_tools_test_dispatch_get_state" + "source_file": "tests/test_relevance_score.py", + "source_location": "L107", + "community": 27, + "norm_label": ".test_same_memory_same_time_same_score()", + "id": "tests_test_relevance_score_testnocronneeded_test_same_memory_same_time_same_score" }, { - "label": "test_dispatch_set_state()", + "label": ".test_different_times_different_scores()", "file_type": "code", - "source_file": "tests/test_state_tools.py", + "source_file": "tests/test_relevance_score.py", "source_location": "L114", - "community": 8, - "norm_label": "test_dispatch_set_state()", - "id": "tests_test_state_tools_test_dispatch_set_state" + "community": 27, + "norm_label": ".test_different_times_different_scores()", + "id": "tests_test_relevance_score_testnocronneeded_test_different_times_different_scores" }, { - "label": "test_status_endpoint.py", - "file_type": "code", - "source_file": "tests/test_status_endpoint.py", - "source_location": "L1", - "community": 184, - "norm_label": "test_status_endpoint.py", - "id": "tests_test_status_endpoint_py" + "label": "A memory accessed 10x (baseScore 1.0) should still outrank a memory acce", + "file_type": "rationale", + "source_file": "tests/test_relevance_score.py", + "source_location": "L64", + "community": 27, + "norm_label": "a memory accessed 10x (basescore 1.0) should still outrank a memory acce", + "id": "tests_test_relevance_score_rationale_64" }, { - "label": "statusClient()", - "file_type": "code", - "source_file": "tests/test_status_endpoint.py", - "source_location": "L9", - "community": 184, - "norm_label": "statusclient()", - "id": "tests_test_status_endpoint_statusclient" + "label": "A rarely-used old memory should lose to a popular fresh one.", + "file_type": "rationale", + "source_file": "tests/test_relevance_score.py", + "source_location": "L72", + "community": 27, + "norm_label": "a rarely-used old memory should lose to a popular fresh one.", + "id": "tests_test_relevance_score_rationale_72" }, { - "label": "TestStatusEndpoint", - "file_type": "code", - "source_file": "tests/test_status_endpoint.py", - "source_location": "L16", - "community": 184, - "norm_label": "teststatusendpoint", - "id": "tests_test_status_endpoint_teststatusendpoint" + "label": "With same access time, higher baseScore always wins.", + "file_type": "rationale", + "source_file": "tests/test_relevance_score.py", + "source_location": "L83", + "community": 27, + "norm_label": "with same access time, higher basescore always wins.", + "id": "tests_test_relevance_score_rationale_83" }, { - "label": ".test_status_returns_200()", - "file_type": "code", - "source_file": "tests/test_status_endpoint.py", - "source_location": "L17", - "community": 184, - "norm_label": ".test_status_returns_200()", - "id": "tests_test_status_endpoint_teststatusendpoint_test_status_returns_200" + "label": "A memory with no lastAccessedAt should use baseScore as-is.", + "file_type": "rationale", + "source_file": "tests/test_relevance_score.py", + "source_location": "L100", + "community": 27, + "norm_label": "a memory with no lastaccessedat should use basescore as-is.", + "id": "tests_test_relevance_score_rationale_100" }, { - "label": ".test_status_has_healthy()", + "label": "Scores are deterministic \u2014 no cron mutation needed.", + "file_type": "rationale", + "source_file": "tests/test_relevance_score.py", + "source_location": "L108", + "community": 27, + "norm_label": "scores are deterministic \u2014 no cron mutation needed.", + "id": "tests_test_relevance_score_rationale_108" + }, + { + "label": "Same memory at different points in time yields different scores.", + "file_type": "rationale", + "source_file": "tests/test_relevance_score.py", + "source_location": "L115", + "community": 27, + "norm_label": "same memory at different points in time yields different scores.", + "id": "tests_test_relevance_score_rationale_115" + }, + { + "label": "test_request_id.py", "file_type": "code", - "source_file": "tests/test_status_endpoint.py", - "source_location": "L21", - "community": 184, - "norm_label": ".test_status_has_healthy()", - "id": "tests_test_status_endpoint_teststatusendpoint_test_status_has_healthy" + "source_file": "tests/test_request_id.py", + "source_location": "L1", + "community": 475, + "norm_label": "test_request_id.py", + "id": "tests_test_request_id_py" }, { - "label": ".test_status_has_uptime_format()", + "label": "app()", "file_type": "code", - "source_file": "tests/test_status_endpoint.py", - "source_location": "L25", - "community": 184, - "norm_label": ".test_status_has_uptime_format()", - "id": "tests_test_status_endpoint_teststatusendpoint_test_status_has_uptime_format" + "source_file": "tests/test_request_id.py", + "source_location": "L14", + "community": 475, + "norm_label": "app()", + "id": "tests_test_request_id_app" }, { - "label": ".test_status_has_services_dict()", + "label": "client()", "file_type": "code", - "source_file": "tests/test_status_endpoint.py", + "source_file": "tests/test_request_id.py", "source_location": "L30", - "community": 184, - "norm_label": ".test_status_has_services_dict()", - "id": "tests_test_status_endpoint_teststatusendpoint_test_status_has_services_dict" + "community": 475, + "norm_label": "client()", + "id": "tests_test_request_id_client" }, { - "label": ".test_status_services_contain_expected_keys()", + "label": "TestRequestIDMiddleware", "file_type": "code", - "source_file": "tests/test_status_endpoint.py", + "source_file": "tests/test_request_id.py", + "source_location": "L34", + "community": 475, + "norm_label": "testrequestidmiddleware", + "id": "tests_test_request_id_testrequestidmiddleware" + }, + { + "label": ".test_generates_uuid_when_no_header()", + "file_type": "code", + "source_file": "tests/test_request_id.py", "source_location": "L35", - "community": 184, - "norm_label": ".test_status_services_contain_expected_keys()", - "id": "tests_test_status_endpoint_teststatusendpoint_test_status_services_contain_expected_keys" + "community": 475, + "norm_label": ".test_generates_uuid_when_no_header()", + "id": "tests_test_request_id_testrequestidmiddleware_test_generates_uuid_when_no_header" }, { - "label": ".test_status_local_service_has_port_and_type()", + "label": ".test_returns_generated_uuid_in_body()", "file_type": "code", - "source_file": "tests/test_status_endpoint.py", - "source_location": "L41", - "community": 184, - "norm_label": ".test_status_local_service_has_port_and_type()", - "id": "tests_test_status_endpoint_teststatusendpoint_test_status_local_service_has_port_and_type" + "source_file": "tests/test_request_id.py", + "source_location": "L44", + "community": 475, + "norm_label": ".test_returns_generated_uuid_in_body()", + "id": "tests_test_request_id_testrequestidmiddleware_test_returns_generated_uuid_in_body" }, { - "label": ".test_status_disabled_service()", + "label": ".test_uses_client_provided_request_id()", "file_type": "code", - "source_file": "tests/test_status_endpoint.py", + "source_file": "tests/test_request_id.py", "source_location": "L51", - "community": 184, - "norm_label": ".test_status_disabled_service()", - "id": "tests_test_status_endpoint_teststatusendpoint_test_status_disabled_service" + "community": 475, + "norm_label": ".test_uses_client_provided_request_id()", + "id": "tests_test_request_id_testrequestidmiddleware_test_uses_client_provided_request_id" }, { - "label": ".test_status_scraper_no_port()", + "label": ".test_response_header_matches_request()", "file_type": "code", - "source_file": "tests/test_status_endpoint.py", + "source_file": "tests/test_request_id.py", "source_location": "L57", - "community": 184, - "norm_label": ".test_status_scraper_no_port()", - "id": "tests_test_status_endpoint_teststatusendpoint_test_status_scraper_no_port" + "community": 475, + "norm_label": ".test_response_header_matches_request()", + "id": "tests_test_request_id_testrequestidmiddleware_test_response_header_matches_request" }, { - "label": ".test_health_endpoint()", + "label": ".test_different_requests_get_different_ids()", "file_type": "code", - "source_file": "tests/test_status_endpoint.py", - "source_location": "L63", - "community": 184, - "norm_label": ".test_health_endpoint()", - "id": "tests_test_status_endpoint_teststatusendpoint_test_health_endpoint" + "source_file": "tests/test_request_id.py", + "source_location": "L62", + "community": 475, + "norm_label": ".test_different_requests_get_different_ids()", + "id": "tests_test_request_id_testrequestidmiddleware_test_different_requests_get_different_ids" }, { - "label": "TestScraperTrigger", + "label": ".test_context_var_available_in_route()", "file_type": "code", - "source_file": "tests/test_status_endpoint.py", - "source_location": "L69", - "community": 184, - "norm_label": "testscrapertrigger", - "id": "tests_test_status_endpoint_testscrapertrigger" + "source_file": "tests/test_request_id.py", + "source_location": "L67", + "community": 475, + "norm_label": ".test_context_var_available_in_route()", + "id": "tests_test_request_id_testrequestidmiddleware_test_context_var_available_in_route" }, { - "label": ".test_scraper_trigger_debug_mode()", + "label": ".test_empty_x_request_id_header_generates_uuid()", "file_type": "code", - "source_file": "tests/test_status_endpoint.py", - "source_location": "L70", - "community": 184, - "norm_label": ".test_scraper_trigger_debug_mode()", - "id": "tests_test_status_endpoint_testscrapertrigger_test_scraper_trigger_debug_mode" + "source_file": "tests/test_request_id.py", + "source_location": "L72", + "community": 475, + "norm_label": ".test_empty_x_request_id_header_generates_uuid()", + "id": "tests_test_request_id_testrequestidmiddleware_test_empty_x_request_id_header_generates_uuid" }, { - "label": ".test_scraper_trigger_not_debug()", + "label": ".test_middleware_preserves_response_body()", "file_type": "code", - "source_file": "tests/test_status_endpoint.py", - "source_location": "L77", - "community": 184, - "norm_label": ".test_scraper_trigger_not_debug()", - "id": "tests_test_status_endpoint_testscrapertrigger_test_scraper_trigger_not_debug" + "source_file": "tests/test_request_id.py", + "source_location": "L81", + "community": 475, + "norm_label": ".test_middleware_preserves_response_body()", + "id": "tests_test_request_id_testrequestidmiddleware_test_middleware_preserves_response_body" }, { - "label": "Tests for run.py /status endpoint \u2014 covers status response structure.", - "file_type": "rationale", - "source_file": "tests/test_status_endpoint.py", + "label": "test_roles.py", + "file_type": "code", + "source_file": "tests/test_roles.py", "source_location": "L1", - "community": 184, - "norm_label": "tests for run.py /status endpoint \u2014 covers status response structure.", - "id": "tests_test_status_endpoint_rationale_1" - }, - { - "label": "Create a test client for the status endpoint without running lifespan.", - "file_type": "rationale", - "source_file": "tests/test_status_endpoint.py", - "source_location": "L10", - "community": 184, - "norm_label": "create a test client for the status endpoint without running lifespan.", - "id": "tests_test_status_endpoint_rationale_10" + "community": 527, + "norm_label": "test_roles.py", + "id": "tests_test_roles_py" }, { - "label": "test_stocks_api_coverage.py", + "label": "TestPermission", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1", - "community": 567, - "norm_label": "test_stocks_api_coverage.py", - "id": "tests_test_stocks_api_coverage_py" + "source_file": "tests/test_roles.py", + "source_location": "L4", + "community": 527, + "norm_label": "testpermission", + "id": "tests_test_roles_testpermission" }, { - "label": "_make_stocks_df()", + "label": ".test_permission_enum_values()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L23", - "community": 112, - "norm_label": "_make_stocks_df()", - "id": "tests_test_stocks_api_coverage_make_stocks_df" + "source_file": "tests/test_roles.py", + "source_location": "L5", + "community": 527, + "norm_label": ".test_permission_enum_values()", + "id": "tests_test_roles_testpermission_test_permission_enum_values" }, { - "label": "TestStocksCacheManager", + "label": ".test_permission_all_includes_all()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L43", - "community": 3, - "norm_label": "teststockscachemanager", - "id": "tests_test_stocks_api_coverage_teststockscachemanager" + "source_file": "tests/test_roles.py", + "source_location": "L10", + "community": 527, + "norm_label": ".test_permission_all_includes_all()", + "id": "tests_test_roles_testpermission_test_permission_all_includes_all" }, { - "label": "._make_manager()", + "label": "TestRoles", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L46", - "community": 42, - "norm_label": "._make_manager()", - "id": "tests_test_stocks_api_coverage_teststockscachemanager_make_manager" + "source_file": "tests/test_roles.py", + "source_location": "L17", + "community": 527, + "norm_label": "testroles", + "id": "tests_test_roles_testroles" }, { - "label": "test_cache_scheduler_starts_apscheduler()", + "label": ".test_user_role_has_basic_permissions()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L55", - "community": 567, - "norm_label": "test_cache_scheduler_starts_apscheduler()", - "id": "tests_test_stocks_api_coverage_test_cache_scheduler_starts_apscheduler" + "source_file": "tests/test_roles.py", + "source_location": "L18", + "community": 527, + "norm_label": ".test_user_role_has_basic_permissions()", + "id": "tests_test_roles_testroles_test_user_role_has_basic_permissions" }, { - "label": ".test_getCachedStocks_no_columns()", + "label": ".test_user_role_missing_premium_permissions()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L70", - "community": 3, - "norm_label": ".test_getcachedstocks_no_columns()", - "id": "tests_test_stocks_api_coverage_teststockscachemanager_test_getcachedstocks_no_columns" + "source_file": "tests/test_roles.py", + "source_location": "L23", + "community": 527, + "norm_label": ".test_user_role_missing_premium_permissions()", + "id": "tests_test_roles_testroles_test_user_role_missing_premium_permissions" }, { - "label": ".test_getCachedStocks_with_valid_columns()", + "label": ".test_premium_includes_user_permissions()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L84", - "community": 3, - "norm_label": ".test_getcachedstocks_with_valid_columns()", - "id": "tests_test_stocks_api_coverage_teststockscachemanager_test_getcachedstocks_with_valid_columns" + "source_file": "tests/test_roles.py", + "source_location": "L27", + "community": 527, + "norm_label": ".test_premium_includes_user_permissions()", + "id": "tests_test_roles_testroles_test_premium_includes_user_permissions" }, { - "label": ".test_getCachedStocks_replaces_nan_inf()", + "label": ".test_premium_has_extra_permissions()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L95", - "community": 3, - "norm_label": ".test_getcachedstocks_replaces_nan_inf()", - "id": "tests_test_stocks_api_coverage_teststockscachemanager_test_getcachedstocks_replaces_nan_inf" + "source_file": "tests/test_roles.py", + "source_location": "L31", + "community": 527, + "norm_label": ".test_premium_has_extra_permissions()", + "id": "tests_test_roles_testroles_test_premium_has_extra_permissions" }, { - "label": ".test_getCachedStocks_builds_ticker_index()", + "label": ".test_developer_starter_includes_user()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L108", - "community": 3, - "norm_label": ".test_getcachedstocks_builds_ticker_index()", - "id": "tests_test_stocks_api_coverage_teststockscachemanager_test_getcachedstocks_builds_ticker_index" + "source_file": "tests/test_roles.py", + "source_location": "L35", + "community": 527, + "norm_label": ".test_developer_starter_includes_user()", + "id": "tests_test_roles_testroles_test_developer_starter_includes_user" }, { - "label": ".test_getCachedStocks_exception_logged()", + "label": ".test_developer_enterprise_includes_all()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L119", - "community": 3, - "norm_label": ".test_getcachedstocks_exception_logged()", - "id": "tests_test_stocks_api_coverage_teststockscachemanager_test_getcachedstocks_exception_logged" + "source_file": "tests/test_roles.py", + "source_location": "L39", + "community": 527, + "norm_label": ".test_developer_enterprise_includes_all()", + "id": "tests_test_roles_testroles_test_developer_enterprise_includes_all" }, { - "label": ".test_getCachedStocks_replaces_inf()", + "label": ".test_admin_has_all_permissions()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L126", - "community": 3, - "norm_label": ".test_getcachedstocks_replaces_inf()", - "id": "tests_test_stocks_api_coverage_teststockscachemanager_test_getcachedstocks_replaces_inf" + "source_file": "tests/test_roles.py", + "source_location": "L43", + "community": 527, + "norm_label": ".test_admin_has_all_permissions()", + "id": "tests_test_roles_testroles_test_admin_has_all_permissions" }, { - "label": ".test_getCachedStocks_replaces_neg_inf()", + "label": ".test_check_access_admin_returns_true()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L137", - "community": 3, - "norm_label": ".test_getcachedstocks_replaces_neg_inf()", - "id": "tests_test_stocks_api_coverage_teststockscachemanager_test_getcachedstocks_replaces_neg_inf" + "source_file": "tests/test_roles.py", + "source_location": "L48", + "community": 527, + "norm_label": ".test_check_access_admin_returns_true()", + "id": "tests_test_roles_testroles_test_check_access_admin_returns_true" }, { - "label": "TestVerifyAPIKey", + "label": ".test_check_access_user_with_permission()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L152", - "community": 567, - "norm_label": "testverifyapikey", - "id": "tests_test_stocks_api_coverage_testverifyapikey" + "source_file": "tests/test_roles.py", + "source_location": "L52", + "community": 527, + "norm_label": ".test_check_access_user_with_permission()", + "id": "tests_test_roles_testroles_test_check_access_user_with_permission" }, { - "label": "test_verify_api_key_disabled_returns_none()", + "label": ".test_check_access_user_without_permission()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L157", - "community": 567, - "norm_label": "test_verify_api_key_disabled_returns_none()", - "id": "tests_test_stocks_api_coverage_test_verify_api_key_disabled_returns_none" + "source_file": "tests/test_roles.py", + "source_location": "L56", + "community": 527, + "norm_label": ".test_check_access_user_without_permission()", + "id": "tests_test_roles_testroles_test_check_access_user_without_permission" }, { - "label": "test_verify_api_key_missing_raises_401()", + "label": ".test_check_access_premium_has_prometheus()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L168", - "community": 567, - "norm_label": "test_verify_api_key_missing_raises_401()", - "id": "tests_test_stocks_api_coverage_test_verify_api_key_missing_raises_401" + "source_file": "tests/test_roles.py", + "source_location": "L60", + "community": 527, + "norm_label": ".test_check_access_premium_has_prometheus()", + "id": "tests_test_roles_testroles_test_check_access_premium_has_prometheus" }, { - "label": "test_verify_api_key_invalid_key_raises_401()", + "label": ".test_check_access_case_insensitive()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L181", - "community": 567, - "norm_label": "test_verify_api_key_invalid_key_raises_401()", - "id": "tests_test_stocks_api_coverage_test_verify_api_key_invalid_key_raises_401" + "source_file": "tests/test_roles.py", + "source_location": "L64", + "community": 527, + "norm_label": ".test_check_access_case_insensitive()", + "id": "tests_test_roles_testroles_test_check_access_case_insensitive" }, { - "label": "test_verify_api_key_quota_exceeded()", + "label": ".test_check_access_invalid_role_ignored()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L198", - "community": 567, - "norm_label": "test_verify_api_key_quota_exceeded()", - "id": "tests_test_stocks_api_coverage_test_verify_api_key_quota_exceeded" + "source_file": "tests/test_roles.py", + "source_location": "L68", + "community": 527, + "norm_label": ".test_check_access_invalid_role_ignored()", + "id": "tests_test_roles_testroles_test_check_access_invalid_role_ignored" }, { - "label": "test_verify_api_key_success()", + "label": ".test_check_access_empty_roles()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L216", - "community": 567, - "norm_label": "test_verify_api_key_success()", - "id": "tests_test_stocks_api_coverage_test_verify_api_key_success" + "source_file": "tests/test_roles.py", + "source_location": "L72", + "community": 527, + "norm_label": ".test_check_access_empty_roles()", + "id": "tests_test_roles_testroles_test_check_access_empty_roles" }, { - "label": "test_verify_api_key_http_exception_rollback()", + "label": ".test_check_access_multiple_roles()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L230", - "community": 567, - "norm_label": "test_verify_api_key_http_exception_rollback()", - "id": "tests_test_stocks_api_coverage_test_verify_api_key_http_exception_rollback" + "source_file": "tests/test_roles.py", + "source_location": "L76", + "community": 527, + "norm_label": ".test_check_access_multiple_roles()", + "id": "tests_test_roles_testroles_test_check_access_multiple_roles" }, { - "label": "test_verify_api_key_generic_exception_rollback()", + "label": "test_roles_coverage.py", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L249", - "community": 567, - "norm_label": "test_verify_api_key_generic_exception_rollback()", - "id": "tests_test_stocks_api_coverage_test_verify_api_key_generic_exception_rollback" + "source_file": "tests/test_roles_coverage.py", + "source_location": "L1", + "community": 45, + "norm_label": "test_roles_coverage.py", + "id": "tests_test_roles_coverage_py" }, { - "label": "TestGenerateSecureKey", + "label": "TestCheckAccess", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L264", - "community": 141, - "norm_label": "testgeneratesecurekey", - "id": "tests_test_stocks_api_coverage_testgeneratesecurekey" + "source_file": "tests/test_roles_coverage.py", + "source_location": "L9", + "community": 45, + "norm_label": "testcheckaccess", + "id": "tests_test_roles_coverage_testcheckaccess" }, { - "label": ".test_generate_secure_key_length()", + "label": ".test_admin_always_passes()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L267", - "community": 141, - "norm_label": ".test_generate_secure_key_length()", - "id": "tests_test_stocks_api_coverage_testgeneratesecurekey_test_generate_secure_key_length" + "source_file": "tests/test_roles_coverage.py", + "source_location": "L10", + "community": 45, + "norm_label": ".test_admin_always_passes()", + "id": "tests_test_roles_coverage_testcheckaccess_test_admin_always_passes" }, { - "label": ".test_generate_secure_key_custom_length()", + "label": ".test_user_has_view_profile()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L274", - "community": 141, - "norm_label": ".test_generate_secure_key_custom_length()", - "id": "tests_test_stocks_api_coverage_testgeneratesecurekey_test_generate_secure_key_custom_length" + "source_file": "tests/test_roles_coverage.py", + "source_location": "L13", + "community": 45, + "norm_label": ".test_user_has_view_profile()", + "id": "tests_test_roles_coverage_testcheckaccess_test_user_has_view_profile" }, { - "label": ".test_generate_secure_key_unique()", + "label": ".test_user_lacks_prometheus()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L280", - "community": 141, - "norm_label": ".test_generate_secure_key_unique()", - "id": "tests_test_stocks_api_coverage_testgeneratesecurekey_test_generate_secure_key_unique" + "source_file": "tests/test_roles_coverage.py", + "source_location": "L16", + "community": 45, + "norm_label": ".test_user_lacks_prometheus()", + "id": "tests_test_roles_coverage_testcheckaccess_test_user_lacks_prometheus" }, { - "label": "TestCreateKey", + "label": ".test_premium_has_prometheus()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L287", - "community": 565, - "norm_label": "testcreatekey", - "id": "tests_test_stocks_api_coverage_testcreatekey" + "source_file": "tests/test_roles_coverage.py", + "source_location": "L19", + "community": 45, + "norm_label": ".test_premium_has_prometheus()", + "id": "tests_test_roles_coverage_testcheckaccess_test_premium_has_prometheus" }, { - "label": "test_create_key_new_user()", + "label": ".test_developer_starter_has_api()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L291", - "community": 567, - "norm_label": "test_create_key_new_user()", - "id": "tests_test_stocks_api_coverage_test_create_key_new_user" + "source_file": "tests/test_roles_coverage.py", + "source_location": "L22", + "community": 45, + "norm_label": ".test_developer_starter_has_api()", + "id": "tests_test_roles_coverage_testcheckaccess_test_developer_starter_has_api" }, { - "label": "test_create_key_existing_user_updates()", + "label": ".test_developer_starter_lacks_enterprise()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L306", - "community": 26, - "norm_label": "test_create_key_existing_user_updates()", - "id": "tests_test_stocks_api_coverage_test_create_key_existing_user_updates" + "source_file": "tests/test_roles_coverage.py", + "source_location": "L25", + "community": 45, + "norm_label": ".test_developer_starter_lacks_enterprise()", + "id": "tests_test_roles_coverage_testcheckaccess_test_developer_starter_lacks_enterprise" }, { - "label": "test_create_key_exception_rollback()", + "label": ".test_developer_enterprise_has_all_dev()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L323", - "community": 567, - "norm_label": "test_create_key_exception_rollback()", - "id": "tests_test_stocks_api_coverage_test_create_key_exception_rollback" + "source_file": "tests/test_roles_coverage.py", + "source_location": "L28", + "community": 45, + "norm_label": ".test_developer_enterprise_has_all_dev()", + "id": "tests_test_roles_coverage_testcheckaccess_test_developer_enterprise_has_all_dev" }, { - "label": "TestDeserializeJsonColumns", + "label": ".test_unknown_role_ignored()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L341", - "community": 3, - "norm_label": "testdeserializejsoncolumns", - "id": "tests_test_stocks_api_coverage_testdeserializejsoncolumns" + "source_file": "tests/test_roles_coverage.py", + "source_location": "L32", + "community": 45, + "norm_label": ".test_unknown_role_ignored()", + "id": "tests_test_roles_coverage_testcheckaccess_test_unknown_role_ignored" }, { - "label": "._make_manager()", + "label": ".test_multiple_roles_combined()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L344", - "community": 101, - "norm_label": "._make_manager()", - "id": "tests_test_stocks_api_coverage_testdeserializejsoncolumns_make_manager" + "source_file": "tests/test_roles_coverage.py", + "source_location": "L35", + "community": 45, + "norm_label": ".test_multiple_roles_combined()", + "id": "tests_test_roles_coverage_testcheckaccess_test_multiple_roles_combined" }, { - "label": ".test_deserialize_empty_df()", + "label": ".test_empty_roles()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L352", - "community": 3, - "norm_label": ".test_deserialize_empty_df()", - "id": "tests_test_stocks_api_coverage_testdeserializejsoncolumns_test_deserialize_empty_df" + "source_file": "tests/test_roles_coverage.py", + "source_location": "L38", + "community": 45, + "norm_label": ".test_empty_roles()", + "id": "tests_test_roles_coverage_testcheckaccess_test_empty_roles" }, { - "label": ".test_deserialize_returns_copy()", + "label": ".test_admin_skips_other_roles()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L358", - "community": 3, - "norm_label": ".test_deserialize_returns_copy()", - "id": "tests_test_stocks_api_coverage_testdeserializejsoncolumns_test_deserialize_returns_copy" + "source_file": "tests/test_roles_coverage.py", + "source_location": "L41", + "community": 45, + "norm_label": ".test_admin_skips_other_roles()", + "id": "tests_test_roles_coverage_testcheckaccess_test_admin_skips_other_roles" }, { - "label": ".test_deserialize_json_dict_in_special_col()", + "label": "TestRequirePermission", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L364", - "community": 3, - "norm_label": ".test_deserialize_json_dict_in_special_col()", - "id": "tests_test_stocks_api_coverage_testdeserializejsoncolumns_test_deserialize_json_dict_in_special_col" + "source_file": "tests/test_roles_coverage.py", + "source_location": "L45", + "community": 45, + "norm_label": "testrequirepermission", + "id": "tests_test_roles_coverage_testrequirepermission" }, { - "label": ".test_deserialize_json_list_in_special_col()", + "label": ".test_raises_403_when_missing()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L371", - "community": 3, - "norm_label": ".test_deserialize_json_list_in_special_col()", - "id": "tests_test_stocks_api_coverage_testdeserializejsoncolumns_test_deserialize_json_list_in_special_col" + "source_file": "tests/test_roles_coverage.py", + "source_location": "L46", + "community": 45, + "norm_label": ".test_raises_403_when_missing()", + "id": "tests_test_roles_coverage_testrequirepermission_test_raises_403_when_missing" }, { - "label": ".test_deserialize_nan_in_dict_replaced()", + "label": ".test_passes_when_has_permission()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L378", - "community": 3, - "norm_label": ".test_deserialize_nan_in_dict_replaced()", - "id": "tests_test_stocks_api_coverage_testdeserializejsoncolumns_test_deserialize_nan_in_dict_replaced" + "source_file": "tests/test_roles_coverage.py", + "source_location": "L64", + "community": 45, + "norm_label": ".test_passes_when_has_permission()", + "id": "tests_test_roles_coverage_testrequirepermission_test_passes_when_has_permission" }, { - "label": ".test_deserialize_nan_in_list_replaced()", + "label": "TestPermissionAll", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L385", - "community": 3, - "norm_label": ".test_deserialize_nan_in_list_replaced()", - "id": "tests_test_stocks_api_coverage_testdeserializejsoncolumns_test_deserialize_nan_in_list_replaced" + "source_file": "tests/test_roles_coverage.py", + "source_location": "L83", + "community": 45, + "norm_label": "testpermissionall", + "id": "tests_test_roles_coverage_testpermissionall" }, { - "label": ".test_deserialize_nested_nan_in_dict()", + "label": ".test_all_includes_all_permissions()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L393", - "community": 3, - "norm_label": ".test_deserialize_nested_nan_in_dict()", - "id": "tests_test_stocks_api_coverage_testdeserializejsoncolumns_test_deserialize_nested_nan_in_dict" + "source_file": "tests/test_roles_coverage.py", + "source_location": "L84", + "community": 45, + "norm_label": ".test_all_includes_all_permissions()", + "id": "tests_test_roles_coverage_testpermissionall_test_all_includes_all_permissions" }, { - "label": ".test_deserialize_non_special_col_not_parsed()", + "label": "TestRolesHierarchy", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L400", - "community": 3, - "norm_label": ".test_deserialize_non_special_col_not_parsed()", - "id": "tests_test_stocks_api_coverage_testdeserializejsoncolumns_test_deserialize_non_special_col_not_parsed" + "source_file": "tests/test_roles_coverage.py", + "source_location": "L92", + "community": 45, + "norm_label": "testroleshierarchy", + "id": "tests_test_roles_coverage_testroleshierarchy" }, { - "label": ".test_deserialize_non_string_value_not_parsed()", + "label": ".test_premium_includes_user()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L407", - "community": 3, - "norm_label": ".test_deserialize_non_string_value_not_parsed()", - "id": "tests_test_stocks_api_coverage_testdeserializejsoncolumns_test_deserialize_non_string_value_not_parsed" + "source_file": "tests/test_roles_coverage.py", + "source_location": "L93", + "community": 45, + "norm_label": ".test_premium_includes_user()", + "id": "tests_test_roles_coverage_testroleshierarchy_test_premium_includes_user" }, { - "label": ".test_deserialize_string_not_json_not_parsed()", + "label": ".test_enterprise_includes_starter()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L413", - "community": 3, - "norm_label": ".test_deserialize_string_not_json_not_parsed()", - "id": "tests_test_stocks_api_coverage_testdeserializejsoncolumns_test_deserialize_string_not_json_not_parsed" + "source_file": "tests/test_roles_coverage.py", + "source_location": "L96", + "community": 45, + "norm_label": ".test_enterprise_includes_starter()", + "id": "tests_test_roles_coverage_testroleshierarchy_test_enterprise_includes_starter" }, { - "label": ".test_deserialize_float_nan_direct()", + "label": ".test_admin_includes_all()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L419", - "community": 520, - "norm_label": ".test_deserialize_float_nan_direct()", - "id": "tests_test_stocks_api_coverage_testdeserializejsoncolumns_test_deserialize_float_nan_direct" + "source_file": "tests/test_roles_coverage.py", + "source_location": "L99", + "community": 45, + "norm_label": ".test_admin_includes_all()", + "id": "tests_test_roles_coverage_testroleshierarchy_test_admin_includes_all" }, { - "label": ".test_deserialize_non_nan_float()", - "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L433", - "community": 566, - "norm_label": ".test_deserialize_non_nan_float()", - "id": "tests_test_stocks_api_coverage_testdeserializejsoncolumns_test_deserialize_non_nan_float" + "label": "Tests for main/utils/roles.py \u2014 covers requirePermission and edge cases.", + "file_type": "rationale", + "source_file": "tests/test_roles_coverage.py", + "source_location": "L1", + "community": 45, + "norm_label": "tests for main/utils/roles.py \u2014 covers requirepermission and edge cases.", + "id": "tests_test_roles_coverage_rationale_1" }, { - "label": ".test_deserialize_pd_na_value()", + "label": "test_sandbox.py", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L442", - "community": 520, - "norm_label": ".test_deserialize_pd_na_value()", - "id": "tests_test_stocks_api_coverage_testdeserializejsoncolumns_test_deserialize_pd_na_value" + "source_file": "tests/test_sandbox.py", + "source_location": "L1", + "community": 2, + "norm_label": "test_sandbox.py", + "id": "tests_test_sandbox_py" }, { - "label": ".test_deserialize_mixed_string_none_parses_json()", + "label": "_mock_forgevm()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L451", - "community": 3, - "norm_label": ".test_deserialize_mixed_string_none_parses_json()", - "id": "tests_test_stocks_api_coverage_testdeserializejsoncolumns_test_deserialize_mixed_string_none_parses_json" + "source_file": "tests/test_sandbox.py", + "source_location": "L7", + "community": 2, + "norm_label": "_mock_forgevm()", + "id": "tests_test_sandbox_mock_forgevm" }, { - "label": ".test_deserialize_multiple_special_cols_with_none()", + "label": "TestSandboxManager", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L473", - "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" + "source_file": "tests/test_sandbox.py", + "source_location": "L24", + "community": 113, + "norm_label": "testsandboxmanager", + "id": "tests_test_sandbox_testsandboxmanager" }, { - "label": "TestFilterBySearchTerms", + "label": "test_create_sandbox()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L498", - "community": 3, - "norm_label": "testfilterbysearchterms", - "id": "tests_test_stocks_api_coverage_testfilterbysearchterms" + "source_file": "tests/test_sandbox.py", + "source_location": "L27", + "community": 2, + "norm_label": "test_create_sandbox()", + "id": "tests_test_sandbox_test_create_sandbox" }, { - "label": "._make_manager()", + "label": "test_execute_code()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L501", - "community": 101, - "norm_label": "._make_manager()", - "id": "tests_test_stocks_api_coverage_testfilterbysearchterms_make_manager" + "source_file": "tests/test_sandbox.py", + "source_location": "L35", + "community": 2, + "norm_label": "test_execute_code()", + "id": "tests_test_sandbox_test_execute_code" }, { - "label": ".test_filter_empty_search_returns_all()", + "label": ".test_read_file()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L509", - "community": 3, - "norm_label": ".test_filter_empty_search_returns_all()", - "id": "tests_test_stocks_api_coverage_testfilterbysearchterms_test_filter_empty_search_returns_all" + "source_file": "tests/test_sandbox.py", + "source_location": "L42", + "community": 113, + "norm_label": ".test_read_file()", + "id": "tests_test_sandbox_testsandboxmanager_test_read_file" }, { - "label": ".test_filter_ticker_index_hit()", + "label": ".test_write_file()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L515", - "community": 3, - "norm_label": ".test_filter_ticker_index_hit()", - "id": "tests_test_stocks_api_coverage_testfilterbysearchterms_test_filter_ticker_index_hit" + "source_file": "tests/test_sandbox.py", + "source_location": "L52", + "community": 113, + "norm_label": ".test_write_file()", + "id": "tests_test_sandbox_testsandboxmanager_test_write_file" }, { - "label": ".test_filter_multiple_terms_index()", + "label": ".test_list_files()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L523", - "community": 3, - "norm_label": ".test_filter_multiple_terms_index()", - "id": "tests_test_stocks_api_coverage_testfilterbysearchterms_test_filter_multiple_terms_index" + "source_file": "tests/test_sandbox.py", + "source_location": "L62", + "community": 113, + "norm_label": ".test_list_files()", + "id": "tests_test_sandbox_testsandboxmanager_test_list_files" }, { - "label": ".test_filter_no_index_match_fallback_to_str()", + "label": ".test_list_files_empty()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L530", - "community": 3, - "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" + "source_file": "tests/test_sandbox.py", + "source_location": "L74", + "community": 113, + "norm_label": ".test_list_files_empty()", + "id": "tests_test_sandbox_testsandboxmanager_test_list_files_empty" }, { - "label": ".test_filter_fallback_multiple_terms()", + "label": ".test_read_file_not_found()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L538", - "community": 3, - "norm_label": ".test_filter_fallback_multiple_terms()", - "id": "tests_test_stocks_api_coverage_testfilterbysearchterms_test_filter_fallback_multiple_terms" + "source_file": "tests/test_sandbox.py", + "source_location": "L80", + "community": 113, + "norm_label": ".test_read_file_not_found()", + "id": "tests_test_sandbox_testsandboxmanager_test_read_file_not_found" }, { - "label": ".test_filter_case_insensitive()", + "label": "test_destroy_sandbox()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L545", - "community": 3, - "norm_label": ".test_filter_case_insensitive()", - "id": "tests_test_stocks_api_coverage_testfilterbysearchterms_test_filter_case_insensitive" + "source_file": "tests/test_sandbox.py", + "source_location": "L88", + "community": 2, + "norm_label": "test_destroy_sandbox()", + "id": "tests_test_sandbox_test_destroy_sandbox" }, { - "label": "TestQueryHistorical", + "label": "test_destroy_handles_failure()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L553", - "community": 112, - "norm_label": "testqueryhistorical", - "id": "tests_test_stocks_api_coverage_testqueryhistorical" + "source_file": "tests/test_sandbox.py", + "source_location": "L95", + "community": 2, + "norm_label": "test_destroy_handles_failure()", + "id": "tests_test_sandbox_test_destroy_handles_failure" }, { - "label": "._make_manager()", + "label": "test_execute_passes_timeout()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L556", - "community": 101, - "norm_label": "._make_manager()", - "id": "tests_test_stocks_api_coverage_testqueryhistorical_make_manager" + "source_file": "tests/test_sandbox.py", + "source_location": "L107", + "community": 2, + "norm_label": "test_execute_passes_timeout()", + "id": "tests_test_sandbox_test_execute_passes_timeout" }, { - "label": ".test_cache_not_initialized_raises_503()", + "label": "test_create_returns_sandbox_id()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L566", - "community": 112, - "norm_label": ".test_cache_not_initialized_raises_503()", - "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_cache_not_initialized_raises_503" + "source_file": "tests/test_sandbox.py", + "source_location": "L116", + "community": 96, + "norm_label": "test_create_returns_sandbox_id()", + "id": "tests_test_sandbox_test_create_returns_sandbox_id" }, { - "label": ".test_basic_historical_query()", + "label": ".test_write_file_returns_false_on_error()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L574", - "community": 112, - "norm_label": ".test_basic_historical_query()", - "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_basic_historical_query" + "source_file": "tests/test_sandbox.py", + "source_location": "L122", + "community": 113, + "norm_label": ".test_write_file_returns_false_on_error()", + "id": "tests_test_sandbox_testsandboxmanager_test_write_file_returns_false_on_error" }, { - "label": ".test_historical_with_search()", + "label": "test_execute_retries_on_sandbox_not_found()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L583", - "community": 112, - "norm_label": ".test_historical_with_search()", - "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_historical_with_search" + "source_file": "tests/test_sandbox.py", + "source_location": "L131", + "community": 2, + "norm_label": "test_execute_retries_on_sandbox_not_found()", + "id": "tests_test_sandbox_test_execute_retries_on_sandbox_not_found" }, { - "label": ".test_historical_with_fields()", - "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L591", - "community": 28, - "norm_label": ".test_historical_with_fields()", - "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_historical_with_fields" + "label": "Wire up mock forgevm AsyncClient that returns sandbox with all methods.", + "file_type": "rationale", + "source_file": "tests/test_sandbox.py", + "source_location": "L8", + "community": 2, + "norm_label": "wire up mock forgevm asyncclient that returns sandbox with all methods.", + "id": "tests_test_sandbox_rationale_8" }, { - "label": ".test_historical_with_dates()", - "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L599", - "community": 112, - "norm_label": ".test_historical_with_dates()", - "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_historical_with_dates" + "label": "read_file reads from host filesystem.", + "file_type": "rationale", + "source_file": "tests/test_sandbox.py", + "source_location": "L43", + "community": 113, + "norm_label": "read_file reads from host filesystem.", + "id": "tests_test_sandbox_rationale_43" }, { - "label": ".test_historical_with_order_by()", - "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L605", - "community": 112, - "norm_label": ".test_historical_with_order_by()", - "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_historical_with_order_by" + "label": "write_file writes to host filesystem.", + "file_type": "rationale", + "source_file": "tests/test_sandbox.py", + "source_location": "L53", + "community": 113, + "norm_label": "write_file writes to host filesystem.", + "id": "tests_test_sandbox_rationale_53" }, { - "label": ".test_historical_with_limit()", - "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L611", - "community": 112, - "norm_label": ".test_historical_with_limit()", - "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_historical_with_limit" + "label": "list_files lists host filesystem entries.", + "file_type": "rationale", + "source_file": "tests/test_sandbox.py", + "source_location": "L63", + "community": 113, + "norm_label": "list_files lists host filesystem entries.", + "id": "tests_test_sandbox_rationale_63" }, { - "label": ".test_historical_no_historical_fields()", - "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L617", - "community": 28, - "norm_label": ".test_historical_no_historical_fields()", - "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_historical_no_historical_fields" + "label": "list_files returns empty for missing directory.", + "file_type": "rationale", + "source_file": "tests/test_sandbox.py", + "source_location": "L75", + "community": 113, + "norm_label": "list_files returns empty for missing directory.", + "id": "tests_test_sandbox_rationale_75" }, { - "label": ".test_historical_sorts_by_time()", - "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L628", - "community": 112, - "norm_label": ".test_historical_sorts_by_time()", - "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_historical_sorts_by_time" + "label": "read_file raises FileNotFoundError for missing file.", + "file_type": "rationale", + "source_file": "tests/test_sandbox.py", + "source_location": "L81", + "community": 113, + "norm_label": "read_file raises filenotfounderror for missing file.", + "id": "tests_test_sandbox_rationale_81" }, { - "label": ".test_historical_deduplicates_by_ticker()", - "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L634", - "community": 112, - "norm_label": ".test_historical_deduplicates_by_ticker()", - "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_historical_deduplicates_by_ticker" + "label": "write_file returns False when host write fails (e.g. invalid path chars).", + "file_type": "rationale", + "source_file": "tests/test_sandbox.py", + "source_location": "L123", + "community": 113, + "norm_label": "write_file returns false when host write fails (e.g. invalid path chars).", + "id": "tests_test_sandbox_rationale_123" }, { - "label": ".test_historical_exception_returns_500()", - "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L642", - "community": 28, - "norm_label": ".test_historical_exception_returns_500()", - "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_historical_exception_returns_500" + "label": "execute() catches SandboxNotFound from exec, calls getOrCreate, retries.", + "file_type": "rationale", + "source_file": "tests/test_sandbox.py", + "source_location": "L132", + "community": 307, + "norm_label": "execute() catches sandboxnotfound from exec, calls getorcreate, retries.", + "id": "tests_test_sandbox_rationale_132" }, { - "label": ".test_historical_with_invalid_dates()", + "label": "test_sandbox_persistence.py", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L660", - "community": 543, - "norm_label": ".test_historical_with_invalid_dates()", - "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_historical_with_invalid_dates" + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L1", + "community": 4, + "norm_label": "test_sandbox_persistence.py", + "id": "tests_test_sandbox_persistence_py" }, { - "label": ".test_historical_search_with_no_results()", + "label": "_mock_forgevm()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L669", - "community": 112, - "norm_label": ".test_historical_search_with_no_results()", - "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_historical_search_with_no_results" + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L9", + "community": 4, + "norm_label": "_mock_forgevm()", + "id": "tests_test_sandbox_persistence_mock_forgevm" }, { - "label": ".test_historical_no_fields_collected()", + "label": "TestPrometheusSandboxModel", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L676", - "community": 127, - "norm_label": ".test_historical_no_fields_collected()", - "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_historical_no_fields_collected" + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L28", + "community": 4, + "norm_label": "testprometheussandboxmodel", + "id": "tests_test_sandbox_persistence_testprometheussandboxmodel" }, { - "label": ".test_historical_with_date_range()", + "label": ".test_create_sandbox_mapping()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L686", - "community": 562, - "norm_label": ".test_historical_with_date_range()", - "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_historical_with_date_range" + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L29", + "community": 4, + "norm_label": ".test_create_sandbox_mapping()", + "id": "tests_test_sandbox_persistence_testprometheussandboxmodel_test_create_sandbox_mapping" }, { - "label": ".test_historical_search_multiple_terms_index()", + "label": ".test_sandbox_has_timestamps()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L693", - "community": 28, - "norm_label": ".test_historical_search_multiple_terms_index()", - "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_historical_search_multiple_terms_index" + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L41", + "community": 4, + "norm_label": ".test_sandbox_has_timestamps()", + "id": "tests_test_sandbox_persistence_testprometheussandboxmodel_test_sandbox_has_timestamps" }, { - "label": ".test_historical_requires_search_fields_or_dates()", + "label": ".test_one_sandbox_per_user()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L701", - "community": 112, - "norm_label": ".test_historical_requires_search_fields_or_dates()", - "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_historical_requires_search_fields_or_dates" + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L52", + "community": 4, + "norm_label": ".test_one_sandbox_per_user()", + "id": "tests_test_sandbox_persistence_testprometheussandboxmodel_test_one_sandbox_per_user" }, { - "label": "TestQueryFundamental", + "label": "TestSandboxPersistence", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L712", - "community": 112, - "norm_label": "testqueryfundamental", - "id": "tests_test_stocks_api_coverage_testqueryfundamental" + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L62", + "community": 4, + "norm_label": "testsandboxpersistence", + "id": "tests_test_sandbox_persistence_testsandboxpersistence" }, { - "label": "._make_manager()", + "label": "test_get_or_create_creates_new_when_no_existing()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L715", - "community": 3, - "norm_label": "._make_manager()", - "id": "tests_test_stocks_api_coverage_testqueryfundamental_make_manager" + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L65", + "community": 4, + "norm_label": "test_get_or_create_creates_new_when_no_existing()", + "id": "tests_test_sandbox_persistence_test_get_or_create_creates_new_when_no_existing" }, { - "label": ".test_cache_not_initialized_raises_503()", + "label": "test_get_or_create_reuses_existing()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L725", - "community": 112, - "norm_label": ".test_cache_not_initialized_raises_503()", - "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_cache_not_initialized_raises_503" + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L77", + "community": 4, + "norm_label": "test_get_or_create_reuses_existing()", + "id": "tests_test_sandbox_persistence_test_get_or_create_reuses_existing" }, { - "label": ".test_basic_fundamental_query()", + "label": "test_get_or_create_respawns_when_dead()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L733", - "community": 112, - "norm_label": ".test_basic_fundamental_query()", - "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_basic_fundamental_query" + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L93", + "community": 4, + "norm_label": "test_get_or_create_respawns_when_dead()", + "id": "tests_test_sandbox_persistence_test_get_or_create_respawns_when_dead" }, { - "label": ".test_fundamental_with_search()", + "label": "test_sync_to_sandbox()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L741", - "community": 112, - "norm_label": ".test_fundamental_with_search()", - "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_with_search" + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L126", + "community": 4, + "norm_label": "test_sync_to_sandbox()", + "id": "tests_test_sandbox_persistence_test_sync_to_sandbox" }, { - "label": ".test_fundamental_with_fields()", + "label": "test_sync_from_sandbox()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L748", - "community": 112, - "norm_label": ".test_fundamental_with_fields()", - "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_with_fields" + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L145", + "community": 4, + "norm_label": "test_sync_from_sandbox()", + "id": "tests_test_sandbox_persistence_test_sync_from_sandbox" }, { - "label": ".test_fundamental_with_date_range()", + "label": "test_sync_to_sandbox_empty_workspace()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L754", - "community": 112, - "norm_label": ".test_fundamental_with_date_range()", - "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_with_date_range" + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L165", + "community": 4, + "norm_label": "test_sync_to_sandbox_empty_workspace()", + "id": "tests_test_sandbox_persistence_test_sync_to_sandbox_empty_workspace" }, { - "label": ".test_fundamental_with_single_date()", - "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L760", - "community": 112, - "norm_label": ".test_fundamental_with_single_date()", - "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_with_single_date" + "label": "Wire up mock forgevm AsyncClient that returns sandbox with all methods.", + "file_type": "rationale", + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L10", + "community": 4, + "norm_label": "wire up mock forgevm asyncclient that returns sandbox with all methods.", + "id": "tests_test_sandbox_persistence_rationale_10" }, { - "label": ".test_fundamental_with_invalid_date()", - "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L766", - "community": 497, - "norm_label": ".test_fundamental_with_invalid_date()", - "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_with_invalid_date" + "label": "Enforce one active sandbox per user via application logic.", + "file_type": "rationale", + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L53", + "community": 4, + "norm_label": "enforce one active sandbox per user via application logic.", + "id": "tests_test_sandbox_persistence_rationale_53" }, { - "label": ".test_fundamental_with_order_by()", - "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L776", - "community": 112, - "norm_label": ".test_fundamental_with_order_by()", - "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_with_order_by" + "label": "syncToSandbox pushes host files into the sandbox.", + "file_type": "rationale", + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L127", + "community": 308, + "norm_label": "synctosandbox pushes host files into the sandbox.", + "id": "tests_test_sandbox_persistence_rationale_127" }, { - "label": ".test_fundamental_with_limit()", - "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L782", - "community": 112, - "norm_label": ".test_fundamental_with_limit()", - "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_with_limit" + "label": "syncFromSandbox pulls sandbox files to host.", + "file_type": "rationale", + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L146", + "community": 309, + "norm_label": "syncfromsandbox pulls sandbox files to host.", + "id": "tests_test_sandbox_persistence_rationale_146" }, { - "label": ".test_fundamental_deduplicates_without_search()", - "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L788", - "community": 112, - "norm_label": ".test_fundamental_deduplicates_without_search()", - "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_deduplicates_without_search" + "label": "syncToSandbox returns 0 when workspace is empty.", + "file_type": "rationale", + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L166", + "community": 310, + "norm_label": "synctosandbox returns 0 when workspace is empty.", + "id": "tests_test_sandbox_persistence_rationale_166" }, { - "label": ".test_fundamental_with_search_no_dedup()", + "label": "test_sandbox_tools.py", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L796", - "community": 112, - "norm_label": ".test_fundamental_with_search_no_dedup()", - "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_with_search_no_dedup" + "source_file": "tests/test_sandbox_tools.py", + "source_location": "L1", + "community": 49, + "norm_label": "test_sandbox_tools.py", + "id": "tests_test_sandbox_tools_py" }, { - "label": ".test_fundamental_exception_returns_500()", + "label": "TestSandboxToolDefinitions", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L802", - "community": 112, - "norm_label": ".test_fundamental_exception_returns_500()", - "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_exception_returns_500" + "source_file": "tests/test_sandbox_tools.py", + "source_location": "L6", + "community": 222, + "norm_label": "testsandboxtooldefinitions", + "id": "tests_test_sandbox_tools_testsandboxtooldefinitions" }, { - "label": ".test_fundamental_empty_search_string_no_dedup()", + "label": ".test_execute_code_in_registry()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L819", - "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" + "source_file": "tests/test_sandbox_tools.py", + "source_location": "L7", + "community": 222, + "norm_label": ".test_execute_code_in_registry()", + "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_execute_code_in_registry" }, { - "label": ".test_fundamental_no_time_column()", + "label": ".test_read_file_in_registry()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L828", - "community": 17, - "norm_label": ".test_fundamental_no_time_column()", - "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_no_time_column" + "source_file": "tests/test_sandbox_tools.py", + "source_location": "L10", + "community": 222, + "norm_label": ".test_read_file_in_registry()", + "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_read_file_in_registry" }, { - "label": ".test_fundamental_date_range_two_dates()", + "label": ".test_write_file_in_registry()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L841", - "community": 39, - "norm_label": ".test_fundamental_date_range_two_dates()", - "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_date_range_two_dates" + "source_file": "tests/test_sandbox_tools.py", + "source_location": "L13", + "community": 222, + "norm_label": ".test_write_file_in_registry()", + "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_write_file_in_registry" }, { - "label": ".test_fundamental_with_invalid_single_date()", + "label": ".test_list_files_in_registry()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L855", - "community": 46, - "norm_label": ".test_fundamental_with_invalid_single_date()", - "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_with_invalid_single_date" + "source_file": "tests/test_sandbox_tools.py", + "source_location": "L16", + "community": 222, + "norm_label": ".test_list_files_in_registry()", + "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_list_files_in_registry" }, { - "label": ".test_fundamental_fields_not_in_columns()", + "label": ".test_execute_code_has_docstring()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L865", - "community": 46, - "norm_label": ".test_fundamental_fields_not_in_columns()", - "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_fields_not_in_columns" + "source_file": "tests/test_sandbox_tools.py", + "source_location": "L19", + "community": 222, + "norm_label": ".test_execute_code_has_docstring()", + "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_execute_code_has_docstring" }, { - "label": ".test_fundamental_search_multiple_terms()", + "label": "TestDispatchToolCallSandbox", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L882", - "community": 17, - "norm_label": ".test_fundamental_search_multiple_terms()", - "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_search_multiple_terms" + "source_file": "tests/test_sandbox_tools.py", + "source_location": "L25", + "community": 49, + "norm_label": "testdispatchtoolcallsandbox", + "id": "tests_test_sandbox_tools_testdispatchtoolcallsandbox" }, { - "label": ".test_fundamental_search_fallback_string_match()", + "label": "test_dispatch_execute_code()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L890", - "community": 39, - "norm_label": ".test_fundamental_search_fallback_string_match()", - "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_search_fallback_string_match" + "source_file": "tests/test_sandbox_tools.py", + "source_location": "L28", + "community": 49, + "norm_label": "test_dispatch_execute_code()", + "id": "tests_test_sandbox_tools_test_dispatch_execute_code" }, { - "label": ".test_fundamental_dates_one_date()", + "label": "test_dispatch_execute_code_no_sandbox()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L898", - "community": 39, - "norm_label": ".test_fundamental_dates_one_date()", - "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_dates_one_date" + "source_file": "tests/test_sandbox_tools.py", + "source_location": "L38", + "community": 49, + "norm_label": "test_dispatch_execute_code_no_sandbox()", + "id": "tests_test_sandbox_tools_test_dispatch_execute_code_no_sandbox" }, { - "label": ".test_fundamental_excludes_cotacao_10y()", + "label": "test_dispatch_read_file()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L913", - "community": 570, - "norm_label": ".test_fundamental_excludes_cotacao_10y()", - "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_excludes_cotacao_10y" + "source_file": "tests/test_sandbox_tools.py", + "source_location": "L47", + "community": 49, + "norm_label": "test_dispatch_read_file()", + "id": "tests_test_sandbox_tools_test_dispatch_read_file" }, { - "label": ".test_fundamental_does_not_mutate_cache_time_dtype()", + "label": "test_dispatch_write_file()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L940", - "community": 101, - "norm_label": ".test_fundamental_does_not_mutate_cache_time_dtype()", - "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_does_not_mutate_cache_time_dtype" + "source_file": "tests/test_sandbox_tools.py", + "source_location": "L57", + "community": 49, + "norm_label": "test_dispatch_write_file()", + "id": "tests_test_sandbox_tools_test_dispatch_write_file" }, { - "label": ".test_fundamental_requires_search_fields_or_dates()", + "label": "test_dispatch_list_files()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L963", - "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" + "source_file": "tests/test_sandbox_tools.py", + "source_location": "L67", + "community": 49, + "norm_label": "test_dispatch_list_files()", + "id": "tests_test_sandbox_tools_test_dispatch_list_files" }, { - "label": "TestQueryCotations", + "label": "test_dispatch_read_file_no_sandbox()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L983", - "community": 10, - "norm_label": "testquerycotations", - "id": "tests_test_stocks_api_coverage_testquerycotations" + "source_file": "tests/test_sandbox_tools.py", + "source_location": "L76", + "community": 49, + "norm_label": "test_dispatch_read_file_no_sandbox()", + "id": "tests_test_sandbox_tools_test_dispatch_read_file_no_sandbox" }, { - "label": "._make_manager()", + "label": "test_sessions.py", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L986", - "community": 10, - "norm_label": "._make_manager()", - "id": "tests_test_stocks_api_coverage_testquerycotations_make_manager" + "source_file": "tests/test_sessions.py", + "source_location": "L1", + "community": 44, + "norm_label": "test_sessions.py", + "id": "tests_test_sessions_py" }, { - "label": "._make_cotations_df()", + "label": "TestUserSessionModel", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L995", - "community": 10, - "norm_label": "._make_cotations_df()", - "id": "tests_test_stocks_api_coverage_testquerycotations_make_cotations_df" + "source_file": "tests/test_sessions.py", + "source_location": "L13", + "community": 44, + "norm_label": "testusersessionmodel", + "id": "tests_test_sessions_testusersessionmodel" }, { - "label": ".test_cotations_cache_not_initialized_raises_503()", + "label": ".test_getDeviceName_with_browser_and_os()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1012", - "community": 10, - "norm_label": ".test_cotations_cache_not_initialized_raises_503()", - "id": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_cache_not_initialized_raises_503" + "source_file": "tests/test_sessions.py", + "source_location": "L14", + "community": 44, + "norm_label": ".test_getdevicename_with_browser_and_os()", + "id": "tests_test_sessions_testusersessionmodel_test_getdevicename_with_browser_and_os" }, { - "label": ".test_cotations_adjusted_false_returns_padrao()", + "label": ".test_getDeviceName_with_fingerprint_only()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1021", - "community": 10, - "norm_label": ".test_cotations_adjusted_false_returns_padrao()", - "id": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_adjusted_false_returns_padrao" + "source_file": "tests/test_sessions.py", + "source_location": "L27", + "community": 44, + "norm_label": ".test_getdevicename_with_fingerprint_only()", + "id": "tests_test_sessions_testusersessionmodel_test_getdevicename_with_fingerprint_only" }, { - "label": ".test_cotations_adjusted_true_returns_ajustada()", + "label": ".test_getDeviceName_fallback()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1031", - "community": 10, - "norm_label": ".test_cotations_adjusted_true_returns_ajustada()", - "id": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_adjusted_true_returns_ajustada" + "source_file": "tests/test_sessions.py", + "source_location": "L39", + "community": 44, + "norm_label": ".test_getdevicename_fallback()", + "id": "tests_test_sessions_testusersessionmodel_test_getdevicename_fallback" }, { - "label": ".test_cotations_returns_most_recent_per_ticker()", + "label": ".test_getDeviceName_empty_strings()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1041", - "community": 10, - "norm_label": ".test_cotations_returns_most_recent_per_ticker()", - "id": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_returns_most_recent_per_ticker" + "source_file": "tests/test_sessions.py", + "source_location": "L52", + "community": 44, + "norm_label": ".test_getdevicename_empty_strings()", + "id": "tests_test_sessions_testusersessionmodel_test_getdevicename_empty_strings" }, { - "label": ".test_cotations_dates_filter_inner_json_data()", + "label": ".test_isActive_default()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1053", - "community": 10, - "norm_label": ".test_cotations_dates_filter_inner_json_data()", - "id": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_dates_filter_inner_json_data" + "source_file": "tests/test_sessions.py", + "source_location": "L66", + "community": 44, + "norm_label": ".test_isactive_default()", + "id": "tests_test_sessions_testusersessionmodel_test_isactive_default" }, { - "label": ".test_cotations_dates_range_keeps_all_inner_entries()", + "label": ".test_isActive_can_be_false()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1065", - "community": 10, - "norm_label": ".test_cotations_dates_range_keeps_all_inner_entries()", - "id": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_dates_range_keeps_all_inner_entries" + "source_file": "tests/test_sessions.py", + "source_location": "L70", + "community": 44, + "norm_label": ".test_isactive_can_be_false()", + "id": "tests_test_sessions_testusersessionmodel_test_isactive_can_be_false" }, { - "label": ".test_cotations_no_dates_keeps_all_inner_entries()", + "label": "TestSessionExpiration", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1073", - "community": 10, - "norm_label": ".test_cotations_no_dates_keeps_all_inner_entries()", - "id": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_no_dates_keeps_all_inner_entries" + "source_file": "tests/test_sessions.py", + "source_location": "L75", + "community": 44, + "norm_label": "testsessionexpiration", + "id": "tests_test_sessions_testsessionexpiration" }, { - "label": ".test_cotations_with_search_filter()", + "label": ".test_session_expiry_days_is_30()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1081", - "community": 10, - "norm_label": ".test_cotations_with_search_filter()", - "id": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_with_search_filter" + "source_file": "tests/test_sessions.py", + "source_location": "L76", + "community": 44, + "norm_label": ".test_session_expiry_days_is_30()", + "id": "tests_test_sessions_testsessionexpiration_test_session_expiry_days_is_30" }, { - "label": ".test_cotations_with_search_multiple_terms()", + "label": ".test_session_can_expire()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1090", - "community": 10, - "norm_label": ".test_cotations_with_search_multiple_terms()", - "id": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_with_search_multiple_terms" + "source_file": "tests/test_sessions.py", + "source_location": "L79", + "community": 44, + "norm_label": ".test_session_can_expire()", + "id": "tests_test_sessions_testsessionexpiration_test_session_can_expire" }, { - "label": ".test_cotations_missing_column_returns_empty()", + "label": ".test_session_still_valid_within_expiry()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1098", - "community": 10, - "norm_label": ".test_cotations_missing_column_returns_empty()", - "id": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_missing_column_returns_empty" + "source_file": "tests/test_sessions.py", + "source_location": "L98", + "community": 44, + "norm_label": ".test_session_still_valid_within_expiry()", + "id": "tests_test_sessions_testsessionexpiration_test_session_still_valid_within_expiry" }, { - "label": ".test_cotations_dates_param_stored()", + "label": ".test_session_exactly_at_boundary()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1108", - "community": 10, - "norm_label": ".test_cotations_dates_param_stored()", - "id": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_dates_param_stored" + "source_file": "tests/test_sessions.py", + "source_location": "L116", + "community": 44, + "norm_label": ".test_session_exactly_at_boundary()", + "id": "tests_test_sessions_testsessionexpiration_test_session_exactly_at_boundary" }, { - "label": ".test_cotations_dates_default_none()", + "label": ".test_created_at_future_date()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1114", - "community": 10, - "norm_label": ".test_cotations_dates_default_none()", - "id": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_dates_default_none" + "source_file": "tests/test_sessions.py", + "source_location": "L134", + "community": 44, + "norm_label": ".test_created_at_future_date()", + "id": "tests_test_sessions_testsessionexpiration_test_created_at_future_date" }, { - "label": ".test_cotations_default_search_all()", + "label": "test_sso_state_cookie.py", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1121", - "community": 10, - "norm_label": ".test_cotations_default_search_all()", - "id": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_default_search_all" + "source_file": "tests/test_sso_state_cookie.py", + "source_location": "L1", + "community": 18, + "norm_label": "test_sso_state_cookie.py", + "id": "tests_test_sso_state_cookie_py" }, { - "label": ".test_cotations_exception_returns_500()", + "label": "_build_app()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1128", - "community": 10, - "norm_label": ".test_cotations_exception_returns_500()", - "id": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_exception_returns_500" + "source_file": "tests/test_sso_state_cookie.py", + "source_location": "L20", + "community": 18, + "norm_label": "_build_app()", + "id": "tests_test_sso_state_cookie_build_app" }, { - "label": ".test_cotations_http_route()", + "label": "_override_session()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1139", - "community": 521, - "norm_label": ".test_cotations_http_route()", - "id": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_http_route" + "source_file": "tests/test_sso_state_cookie.py", + "source_location": "L35", + "community": 18, + "norm_label": "_override_session()", + "id": "tests_test_sso_state_cookie_override_session" }, { - "label": "TestQueryLiveCotation", + "label": "TestGoogleEndpointSetsState", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1166", - "community": 22, - "norm_label": "testquerylivecotation", - "id": "tests_test_stocks_api_coverage_testquerylivecotation" + "source_file": "tests/test_sso_state_cookie.py", + "source_location": "L41", + "community": 18, + "norm_label": "testgoogleendpointsetsstate", + "id": "tests_test_sso_state_cookie_testgoogleendpointsetsstate" }, { - "label": "._make_manager()", + "label": ".test_passes_redirect_url_as_state()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1169", - "community": 3, - "norm_label": "._make_manager()", - "id": "tests_test_stocks_api_coverage_testquerylivecotation_make_manager" + "source_file": "tests/test_sso_state_cookie.py", + "source_location": "L44", + "community": 18, + "norm_label": ".test_passes_redirect_url_as_state()", + "id": "tests_test_sso_state_cookie_testgoogleendpointsetsstate_test_passes_redirect_url_as_state" }, { - "label": "._mock_b3_response()", + "label": ".test_none_when_no_redirect_url()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1178", - "community": 22, - "norm_label": "._mock_b3_response()", - "id": "tests_test_stocks_api_coverage_testquerylivecotation_mock_b3_response" + "source_file": "tests/test_sso_state_cookie.py", + "source_location": "L67", + "community": 18, + "norm_label": ".test_none_when_no_redirect_url()", + "id": "tests_test_sso_state_cookie_testgoogleendpointsetsstate_test_none_when_no_redirect_url" }, { - "label": "._patch_session()", + "label": ".test_no_sso_redirect_cookie_set()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1203", - "community": 22, - "norm_label": "._patch_session()", - "id": "tests_test_stocks_api_coverage_testquerylivecotation_patch_session" + "source_file": "tests/test_sso_state_cookie.py", + "source_location": "L87", + "community": 18, + "norm_label": ".test_no_sso_redirect_cookie_set()", + "id": "tests_test_sso_state_cookie_testgoogleendpointsetsstate_test_no_sso_redirect_cookie_set" }, { - "label": ".test_success_returns_correct_shape()", + "label": "TestCallbackSuccess", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1214", - "community": 22, - "norm_label": ".test_success_returns_correct_shape()", - "id": "tests_test_stocks_api_coverage_testquerylivecotation_test_success_returns_correct_shape" + "source_file": "tests/test_sso_state_cookie.py", + "source_location": "L112", + "community": 18, + "norm_label": "testcallbacksuccess", + "id": "tests_test_sso_state_cookie_testcallbacksuccess" }, { - "label": ".test_lowercase_ticker_uppercased()", + "label": ".test_redirects_to_url_in_state()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1231", - "community": 22, - "norm_label": ".test_lowercase_ticker_uppercased()", - "id": "tests_test_stocks_api_coverage_testquerylivecotation_test_lowercase_ticker_uppercased" + "source_file": "tests/test_sso_state_cookie.py", + "source_location": "L115", + "community": 18, + "norm_label": ".test_redirects_to_url_in_state()", + "id": "tests_test_sso_state_cookie_testcallbacksuccess_test_redirects_to_url_in_state" }, { - "label": ".test_b3_unavailable_returns_503()", + "label": ".test_returns_json_when_no_redirect_in_state()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1238", - "community": 22, - "norm_label": ".test_b3_unavailable_returns_503()", - "id": "tests_test_stocks_api_coverage_testquerylivecotation_test_b3_unavailable_returns_503" + "source_file": "tests/test_sso_state_cookie.py", + "source_location": "L159", + "community": 18, + "norm_label": ".test_returns_json_when_no_redirect_in_state()", + "id": "tests_test_sso_state_cookie_testcallbacksuccess_test_returns_json_when_no_redirect_in_state" }, { - "label": ".test_b3_bad_status_returns_404()", + "label": "TestSSOLoginErrorHandling", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1247", - "community": 22, - "norm_label": ".test_b3_bad_status_returns_404()", - "id": "tests_test_stocks_api_coverage_testquerylivecotation_test_b3_bad_status_returns_404" + "source_file": "tests/test_sso_state_cookie.py", + "source_location": "L202", + "community": 18, + "norm_label": "testssologinerrorhandling", + "id": "tests_test_sso_state_cookie_testssologinerrorhandling" }, { - "label": ".test_http_route_returns_200()", + "label": ".test_stale_state_returns_401()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1257", - "community": 22, - "norm_label": ".test_http_route_returns_200()", - "id": "tests_test_stocks_api_coverage_testquerylivecotation_test_http_route_returns_200" + "source_file": "tests/test_sso_state_cookie.py", + "source_location": "L205", + "community": 18, + "norm_label": ".test_stale_state_returns_401()", + "id": "tests_test_sso_state_cookie_testssologinerrorhandling_test_stale_state_returns_401" }, { - "label": ".test_http_route_search_required()", + "label": "TestStateSurvivesUrlEncoding", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1265", - "community": 234, - "norm_label": ".test_http_route_search_required()", - "id": "tests_test_stocks_api_coverage_testquerylivecotation_test_http_route_search_required" + "source_file": "tests/test_sso_state_cookie.py", + "source_location": "L236", + "community": 18, + "norm_label": "teststatesurvivesurlencoding", + "id": "tests_test_sso_state_cookie_teststatesurvivesurlencoding" }, { - "label": ".test_cotations_filter_cotation_column_filters_by_date()", + "label": ".test_url_in_state_survives_round_trip()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1271", - "community": 22, - "norm_label": ".test_cotations_filter_cotation_column_filters_by_date()", - "id": "tests_test_stocks_api_coverage_testquerylivecotation_test_cotations_filter_cotation_column_filters_by_date" + "source_file": "tests/test_sso_state_cookie.py", + "source_location": "L239", + "community": 18, + "norm_label": ".test_url_in_state_survives_round_trip()", + "id": "tests_test_sso_state_cookie_teststatesurvivesurlencoding_test_url_in_state_survives_round_trip" }, { - "label": ".test_cotations_filter_cotation_column_range()", - "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1287", - "community": 22, - "norm_label": ".test_cotations_filter_cotation_column_range()", - "id": "tests_test_stocks_api_coverage_testquerylivecotation_test_cotations_filter_cotation_column_range" + "label": "Tests for Google SSO state cookie flow. The state parameter carries the fronten", + "file_type": "rationale", + "source_file": "tests/test_sso_state_cookie.py", + "source_location": "L1", + "community": 18, + "norm_label": "tests for google sso state cookie flow. the state parameter carries the fronten", + "id": "tests_test_sso_state_cookie_rationale_1" }, { - "label": ".test_cotations_filter_cotation_column_handles_non_list()", - "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1304", - "community": 22, - "norm_label": ".test_cotations_filter_cotation_column_handles_non_list()", - "id": "tests_test_stocks_api_coverage_testquerylivecotation_test_cotations_filter_cotation_column_handles_non_list" + "label": "Verify /auth/google passes redirect URL as state parameter.", + "file_type": "rationale", + "source_file": "tests/test_sso_state_cookie.py", + "source_location": "L42", + "community": 18, + "norm_label": "verify /auth/google passes redirect url as state parameter.", + "id": "tests_test_sso_state_cookie_rationale_42" }, { - "label": ".test_cotations_search_required()", - "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1315", - "community": 568, - "norm_label": ".test_cotations_search_required()", - "id": "tests_test_stocks_api_coverage_testquerylivecotation_test_cotations_search_required" + "label": "State should be the redirect URL directly.", + "file_type": "rationale", + "source_file": "tests/test_sso_state_cookie.py", + "source_location": "L45", + "community": 18, + "norm_label": "state should be the redirect url directly.", + "id": "tests_test_sso_state_cookie_rationale_45" }, { - "label": "Tests to increase coverage for query.py, key.py, and cache.py in stocks_api.", + "label": "Without redirect_url, state should be None.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1", - "community": 567, - "norm_label": "tests to increase coverage for query.py, key.py, and cache.py in stocks_api.", - "id": "tests_test_stocks_api_coverage_rationale_1" + "source_file": "tests/test_sso_state_cookie.py", + "source_location": "L68", + "community": 18, + "norm_label": "without redirect_url, state should be none.", + "id": "tests_test_sso_state_cookie_rationale_68" }, { - "label": "Return a small DataFrame with the columns the query module expects.", + "label": "The /google endpoint should NOT set sso_redirect cookie.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L24", - "community": 112, - "norm_label": "return a small dataframe with the columns the query module expects.", - "id": "tests_test_stocks_api_coverage_rationale_24" + "source_file": "tests/test_sso_state_cookie.py", + "source_location": "L88", + "community": 18, + "norm_label": "the /google endpoint should not set sso_redirect cookie.", + "id": "tests_test_sso_state_cookie_rationale_88" }, { - "label": "Tests covering cache.py lines 28-76.", + "label": "Verify callback redirects cleanly \u2014 token in cookie only.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L44", - "community": 3, - "norm_label": "tests covering cache.py lines 28-76.", - "id": "tests_test_stocks_api_coverage_rationale_44" + "source_file": "tests/test_sso_state_cookie.py", + "source_location": "L113", + "community": 18, + "norm_label": "verify callback redirects cleanly \u2014 token in cookie only.", + "id": "tests_test_sso_state_cookie_rationale_113" }, { - "label": "Tests covering key.py lines 15-40. Uses asyncio.run() since pytest-asyncio", + "label": "On success, redirect to URL from state param \u2014 no token in URL.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L153", - "community": 567, - "norm_label": "tests covering key.py lines 15-40. uses asyncio.run() since pytest-asyncio", - "id": "tests_test_stocks_api_coverage_rationale_153" + "source_file": "tests/test_sso_state_cookie.py", + "source_location": "L116", + "community": 18, + "norm_label": "on success, redirect to url from state param \u2014 no token in url.", + "id": "tests_test_sso_state_cookie_rationale_116" }, { - "label": "When KEY.SYSTEM is falsy, return None (line 16).", + "label": "When state has no URL, return JSON with token.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L158", - "community": 311, - "norm_label": "when key.system is falsy, return none (line 16).", - "id": "tests_test_stocks_api_coverage_rationale_158" + "source_file": "tests/test_sso_state_cookie.py", + "source_location": "L160", + "community": 18, + "norm_label": "when state has no url, return json with token.", + "id": "tests_test_sso_state_cookie_rationale_160" }, { - "label": "When key is required but not provided (line 19).", + "label": "Verify SSOLoginError returns 401, not 500.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L169", - "community": 312, - "norm_label": "when key is required but not provided (line 19).", - "id": "tests_test_stocks_api_coverage_rationale_169" + "source_file": "tests/test_sso_state_cookie.py", + "source_location": "L203", + "community": 18, + "norm_label": "verify ssologinerror returns 401, not 500.", + "id": "tests_test_sso_state_cookie_rationale_203" }, { - "label": "When atomic UPDATE returns 0 rows and query finds no key -> 401.", + "label": "Stale sso_state cookie must produce 401, not 500.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L182", - "community": 313, - "norm_label": "when atomic update returns 0 rows and query finds no key -> 401.", - "id": "tests_test_stocks_api_coverage_rationale_182" + "source_file": "tests/test_sso_state_cookie.py", + "source_location": "L206", + "community": 18, + "norm_label": "stale sso_state cookie must produce 401, not 500.", + "id": "tests_test_sso_state_cookie_rationale_206" }, { - "label": "When atomic UPDATE returns 0 rows and query finds key at limit -> 429.", + "label": "Verify state parameter survives URL encoding round-trip.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L199", - "community": 314, - "norm_label": "when atomic update returns 0 rows and query finds key at limit -> 429.", - "id": "tests_test_stocks_api_coverage_rationale_199" + "source_file": "tests/test_sso_state_cookie.py", + "source_location": "L237", + "community": 18, + "norm_label": "verify state parameter survives url encoding round-trip.", + "id": "tests_test_sso_state_cookie_rationale_237" }, { - "label": "Happy path: atomic UPDATE succeeds, returns key (lines 22-33).", + "label": "State with URL characters should survive round-trip through OAuth URL.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L217", - "community": 315, - "norm_label": "happy path: atomic update succeeds, returns key (lines 22-33).", - "id": "tests_test_stocks_api_coverage_rationale_217" + "source_file": "tests/test_sso_state_cookie.py", + "source_location": "L240", + "community": 18, + "norm_label": "state with url characters should survive round-trip through oauth url.", + "id": "tests_test_sso_state_cookie_rationale_240" }, { - "label": "HTTPException should cause rollback then re-raise (lines 35-37).", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L231", - "community": 316, - "norm_label": "httpexception should cause rollback then re-raise (lines 35-37).", - "id": "tests_test_stocks_api_coverage_rationale_231" + "label": "test_state_tools.py", + "file_type": "code", + "source_file": "tests/test_state_tools.py", + "source_location": "L1", + "community": 162, + "norm_label": "test_state_tools.py", + "id": "tests_test_state_tools_py" }, { - "label": "Generic DB exception should rollback and raise 500 (lines 38-40).", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L250", - "community": 317, - "norm_label": "generic db exception should rollback and raise 500 (lines 38-40).", - "id": "tests_test_stocks_api_coverage_rationale_250" + "label": "TestStateToolFunctions", + "file_type": "code", + "source_file": "tests/test_state_tools.py", + "source_location": "L15", + "community": 148, + "norm_label": "teststatetoolfunctions", + "id": "tests_test_state_tools_teststatetoolfunctions" }, { - "label": "Tests covering key.py line 44.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L265", - "community": 141, - "norm_label": "tests covering key.py line 44.", - "id": "tests_test_stocks_api_coverage_rationale_265" + "label": ".test_get_state_has_docstring()", + "file_type": "code", + "source_file": "tests/test_state_tools.py", + "source_location": "L16", + "community": 148, + "norm_label": ".test_get_state_has_docstring()", + "id": "tests_test_state_tools_teststatetoolfunctions_test_get_state_has_docstring" }, { - "label": "Tests covering key.py lines 48-66.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L288", - "community": 565, - "norm_label": "tests covering key.py lines 48-66.", - "id": "tests_test_stocks_api_coverage_rationale_288" + "label": ".test_set_state_has_docstring()", + "file_type": "code", + "source_file": "tests/test_state_tools.py", + "source_location": "L20", + "community": 148, + "norm_label": ".test_set_state_has_docstring()", + "id": "tests_test_state_tools_teststatetoolfunctions_test_set_state_has_docstring" }, { - "label": "New key created when no existing key for user (lines 57-59).", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L292", - "community": 318, - "norm_label": "new key created when no existing key for user (lines 57-59).", - "id": "tests_test_stocks_api_coverage_rationale_292" + "label": ".test_get_state_signature()", + "file_type": "code", + "source_file": "tests/test_state_tools.py", + "source_location": "L24", + "community": 148, + "norm_label": ".test_get_state_signature()", + "id": "tests_test_state_tools_teststatetoolfunctions_test_get_state_signature" }, { - "label": "Existing key is updated (lines 54-56).", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L307", - "community": 319, - "norm_label": "existing key is updated (lines 54-56).", - "id": "tests_test_stocks_api_coverage_rationale_307" + "label": ".test_set_state_signature()", + "file_type": "code", + "source_file": "tests/test_state_tools.py", + "source_location": "L31", + "community": 148, + "norm_label": ".test_set_state_signature()", + "id": "tests_test_state_tools_teststatetoolfunctions_test_set_state_signature" }, { - "label": "Exception during creation triggers rollback and 500 (lines 64-66).", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L324", - "community": 320, - "norm_label": "exception during creation triggers rollback and 500 (lines 64-66).", - "id": "tests_test_stocks_api_coverage_rationale_324" + "label": ".test_get_state_has_type_hints()", + "file_type": "code", + "source_file": "tests/test_state_tools.py", + "source_location": "L38", + "community": 148, + "norm_label": ".test_get_state_has_type_hints()", + "id": "tests_test_state_tools_teststatetoolfunctions_test_get_state_has_type_hints" }, { - "label": "Tests covering query.py lines 22-48.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L342", - "community": 3, - "norm_label": "tests covering query.py lines 22-48.", - "id": "tests_test_stocks_api_coverage_rationale_342" + "label": ".test_set_state_has_type_hints()", + "file_type": "code", + "source_file": "tests/test_state_tools.py", + "source_location": "L44", + "community": 148, + "norm_label": ".test_set_state_has_type_hints()", + "id": "tests_test_state_tools_teststatetoolfunctions_test_set_state_has_type_hints" }, { - "label": "replaceNan handles direct float NaN values (line 34).", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L420", - "community": 520, - "norm_label": "replacenan handles direct float nan values (line 34).", - "id": "tests_test_stocks_api_coverage_rationale_420" + "label": ".test_state_tools_in_registry()", + "file_type": "code", + "source_file": "tests/test_state_tools.py", + "source_location": "L50", + "community": 148, + "norm_label": ".test_state_tools_in_registry()", + "id": "tests_test_state_tools_teststatetoolfunctions_test_state_tools_in_registry" }, { - "label": "Non-JSON-dict/list string is left as-is.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L434", - "community": 566, - "norm_label": "non-json-dict/list string is left as-is.", - "id": "tests_test_stocks_api_coverage_rationale_434" + "label": ".test_registry_has_all_tools()", + "file_type": "code", + "source_file": "tests/test_state_tools.py", + "source_location": "L56", + "community": 148, + "norm_label": ".test_registry_has_all_tools()", + "id": "tests_test_state_tools_teststatetoolfunctions_test_registry_has_all_tools" }, { - "label": "pd.NA is not a string, so lambda returns it unchanged.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L443", - "community": 520, - "norm_label": "pd.na is not a string, so lambda returns it unchanged.", - "id": "tests_test_stocks_api_coverage_rationale_443" + "label": "TestGetState", + "file_type": "code", + "source_file": "tests/test_state_tools.py", + "source_location": "L60", + "community": 162, + "norm_label": "testgetstate", + "id": "tests_test_state_tools_testgetstate" }, { - "label": "Regression: is_string_dtype fails when column has strings + None (pandas 2.x).", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L452", - "community": 3, - "norm_label": "regression: is_string_dtype fails when column has strings + none (pandas 2.x).", - "id": "tests_test_stocks_api_coverage_rationale_452" + "label": "test_get_state_specific_key()", + "file_type": "code", + "source_file": "tests/test_state_tools.py", + "source_location": "L62", + "community": 162, + "norm_label": "test_get_state_specific_key()", + "id": "tests_test_state_tools_test_get_state_specific_key" }, { - "label": "All four SPECIAL_COLS should parse correctly when mixed with None.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L474", - "community": 3, - "norm_label": "all four special_cols should parse correctly when mixed with none.", - "id": "tests_test_stocks_api_coverage_rationale_474" + "label": "test_get_state_all()", + "file_type": "code", + "source_file": "tests/test_state_tools.py", + "source_location": "L69", + "community": 162, + "norm_label": "test_get_state_all()", + "id": "tests_test_state_tools_test_get_state_all" }, { - "label": "Tests covering query.py lines 50-67.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L499", - "community": 3, - "norm_label": "tests covering query.py lines 50-67.", - "id": "tests_test_stocks_api_coverage_rationale_499" + "label": "test_get_state_missing_key()", + "file_type": "code", + "source_file": "tests/test_state_tools.py", + "source_location": "L77", + "community": 162, + "norm_label": "test_get_state_missing_key()", + "id": "tests_test_state_tools_test_get_state_missing_key" }, { - "label": "Tests covering query.py lines 77-132.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L554", - "community": 112, - "norm_label": "tests covering query.py lines 77-132.", - "id": "tests_test_stocks_api_coverage_rationale_554" + "label": "test_get_state_no_state()", + "file_type": "code", + "source_file": "tests/test_state_tools.py", + "source_location": "L83", + "community": 162, + "norm_label": "test_get_state_no_state()", + "id": "tests_test_state_tools_test_get_state_no_state" }, { - "label": "Pass field name WITHOUT year (how categorizeColumns returns them).", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L592", - "community": 28, - "norm_label": "pass field name without year (how categorizecolumns returns them).", - "id": "tests_test_stocks_api_coverage_rationale_592" + "label": "TestSetState", + "file_type": "code", + "source_file": "tests/test_state_tools.py", + "source_location": "L88", + "community": 162, + "norm_label": "testsetstate", + "id": "tests_test_state_tools_testsetstate" }, { - "label": "No historical data columns -> inner 400 caught by outer except -> 500.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L618", - "community": 28, - "norm_label": "no historical data columns -> inner 400 caught by outer except -> 500.", - "id": "tests_test_stocks_api_coverage_rationale_618" + "label": "test_set_state()", + "file_type": "code", + "source_file": "tests/test_state_tools.py", + "source_location": "L90", + "community": 162, + "norm_label": "test_set_state()", + "id": "tests_test_state_tools_test_set_state" }, { - "label": "If an unexpected exception occurs in queryHistorical.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L643", - "community": 28, - "norm_label": "if an unexpected exception occurs in queryhistorical.", - "id": "tests_test_stocks_api_coverage_rationale_643" + "label": "test_set_state_no_state()", + "file_type": "code", + "source_file": "tests/test_state_tools.py", + "source_location": "L97", + "community": 487, + "norm_label": "test_set_state_no_state()", + "id": "tests_test_state_tools_test_set_state_no_state" }, { - "label": "Invalid date format raises exception (line 132).", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L661", - "community": 543, - "norm_label": "invalid date format raises exception (line 132).", - "id": "tests_test_stocks_api_coverage_rationale_661" + "label": "TestStateDispatch", + "file_type": "code", + "source_file": "tests/test_state_tools.py", + "source_location": "L102", + "community": 162, + "norm_label": "teststatedispatch", + "id": "tests_test_state_tools_teststatedispatch" }, { - "label": "No historical columns at all -> inner 400 caught by outer except -> 500.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L677", - "community": 127, - "norm_label": "no historical columns at all -> inner 400 caught by outer except -> 500.", - "id": "tests_test_stocks_api_coverage_rationale_677" + "label": "test_dispatch_get_state()", + "file_type": "code", + "source_file": "tests/test_state_tools.py", + "source_location": "L104", + "community": 162, + "norm_label": "test_dispatch_get_state()", + "id": "tests_test_state_tools_test_dispatch_get_state" }, { - "label": "Historical query with a year range.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L687", - "community": 562, - "norm_label": "historical query with a year range.", - "id": "tests_test_stocks_api_coverage_rationale_687" + "label": "test_dispatch_set_state()", + "file_type": "code", + "source_file": "tests/test_state_tools.py", + "source_location": "L114", + "community": 162, + "norm_label": "test_dispatch_set_state()", + "id": "tests_test_state_tools_test_dispatch_set_state" }, { - "label": "Multiple search terms, all found in tickerIndex.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L694", - "community": 28, - "norm_label": "multiple search terms, all found in tickerindex.", - "id": "tests_test_stocks_api_coverage_rationale_694" + "label": "test_status_endpoint.py", + "file_type": "code", + "source_file": "tests/test_status_endpoint.py", + "source_location": "L1", + "community": 184, + "norm_label": "test_status_endpoint.py", + "id": "tests_test_status_endpoint_py" }, { - "label": "Calling with all None returns 400.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L702", - "community": 112, - "norm_label": "calling with all none returns 400.", - "id": "tests_test_stocks_api_coverage_rationale_702" + "label": "statusClient()", + "file_type": "code", + "source_file": "tests/test_status_endpoint.py", + "source_location": "L9", + "community": 184, + "norm_label": "statusclient()", + "id": "tests_test_status_endpoint_statusclient" }, { - "label": "Tests covering query.py lines 142-202.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L713", - "community": 112, - "norm_label": "tests covering query.py lines 142-202.", - "id": "tests_test_stocks_api_coverage_rationale_713" + "label": "TestStatusEndpoint", + "file_type": "code", + "source_file": "tests/test_status_endpoint.py", + "source_location": "L16", + "community": 184, + "norm_label": "teststatusendpoint", + "id": "tests_test_status_endpoint_teststatusendpoint" }, { - "label": "Invalid date -> inner 400 passes through (not wrapped as 500).", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L767", - "community": 497, - "norm_label": "invalid date -> inner 400 passes through (not wrapped as 500).", - "id": "tests_test_stocks_api_coverage_rationale_767" + "label": ".test_status_returns_200()", + "file_type": "code", + "source_file": "tests/test_status_endpoint.py", + "source_location": "L17", + "community": 184, + "norm_label": ".test_status_returns_200()", + "id": "tests_test_status_endpoint_teststatusendpoint_test_status_returns_200" }, { - "label": "search.strip() == '' should still dedup (line 181).", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L820", - "community": 17, - "norm_label": "search.strip() == '' should still dedup (line 181).", - "id": "tests_test_stocks_api_coverage_rationale_820" + "label": ".test_status_has_healthy()", + "file_type": "code", + "source_file": "tests/test_status_endpoint.py", + "source_location": "L21", + "community": 184, + "norm_label": ".test_status_has_healthy()", + "id": "tests_test_status_endpoint_teststatusendpoint_test_status_has_healthy" }, { - "label": "DataFrame without TIME column.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L829", - "community": 17, - "norm_label": "dataframe without time column.", - "id": "tests_test_stocks_api_coverage_rationale_829" + "label": ".test_status_has_uptime_format()", + "file_type": "code", + "source_file": "tests/test_status_endpoint.py", + "source_location": "L25", + "community": 184, + "norm_label": ".test_status_has_uptime_format()", + "id": "tests_test_status_endpoint_teststatusendpoint_test_status_has_uptime_format" }, { - "label": "Two dates in the range, both valid.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L842", - "community": 497, - "norm_label": "two dates in the range, both valid.", - "id": "tests_test_stocks_api_coverage_rationale_842" + "label": ".test_status_has_services_dict()", + "file_type": "code", + "source_file": "tests/test_status_endpoint.py", + "source_location": "L30", + "community": 184, + "norm_label": ".test_status_has_services_dict()", + "id": "tests_test_status_endpoint_teststatusendpoint_test_status_has_services_dict" }, { - "label": "Single invalid date -> inner 400 passes through.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L856", - "community": 46, - "norm_label": "single invalid date -> inner 400 passes through.", - "id": "tests_test_stocks_api_coverage_rationale_856" + "label": ".test_status_services_contain_expected_keys()", + "file_type": "code", + "source_file": "tests/test_status_endpoint.py", + "source_location": "L35", + "community": 184, + "norm_label": ".test_status_services_contain_expected_keys()", + "id": "tests_test_status_endpoint_teststatusendpoint_test_status_services_contain_expected_keys" }, { - "label": "Invalid fields now raise 400 with actionable error message.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L866", - "community": 46, - "norm_label": "invalid fields now raise 400 with actionable error message.", - "id": "tests_test_stocks_api_coverage_rationale_866" + "label": ".test_status_local_service_has_port_and_type()", + "file_type": "code", + "source_file": "tests/test_status_endpoint.py", + "source_location": "L41", + "community": 184, + "norm_label": ".test_status_local_service_has_port_and_type()", + "id": "tests_test_status_endpoint_teststatusendpoint_test_status_local_service_has_port_and_type" }, { - "label": "Multiple search terms with tickerIndex.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L883", - "community": 17, - "norm_label": "multiple search terms with tickerindex.", - "id": "tests_test_stocks_api_coverage_rationale_883" + "label": ".test_status_disabled_service()", + "file_type": "code", + "source_file": "tests/test_status_endpoint.py", + "source_location": "L51", + "community": 184, + "norm_label": ".test_status_disabled_service()", + "id": "tests_test_status_endpoint_teststatusendpoint_test_status_disabled_service" }, { - "label": "Search with no index match falls back to string startswith.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L891", - "community": 39, - "norm_label": "search with no index match falls back to string startswith.", - "id": "tests_test_stocks_api_coverage_rationale_891" + "label": ".test_status_scraper_no_port()", + "file_type": "code", + "source_file": "tests/test_status_endpoint.py", + "source_location": "L57", + "community": 184, + "norm_label": ".test_status_scraper_no_port()", + "id": "tests_test_status_endpoint_teststatusendpoint_test_status_scraper_no_port" }, { - "label": "len(dateRange) == 1 -> per-ticker closest snapshot.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L899", - "community": 39, - "norm_label": "len(daterange) == 1 -> per-ticker closest snapshot.", - "id": "tests_test_stocks_api_coverage_rationale_899" + "label": ".test_health_endpoint()", + "file_type": "code", + "source_file": "tests/test_status_endpoint.py", + "source_location": "L63", + "community": 184, + "norm_label": ".test_health_endpoint()", + "id": "tests_test_status_endpoint_teststatusendpoint_test_health_endpoint" }, { - "label": "COTACAO 10Y PADRAO and COTACAO 10Y AJUSTADA belong to /cotations, not /fundament", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L914", - "community": 570, - "norm_label": "cotacao 10y padrao and cotacao 10y ajustada belong to /cotations, not /fundament", - "id": "tests_test_stocks_api_coverage_rationale_914" + "label": "TestScraperTrigger", + "file_type": "code", + "source_file": "tests/test_status_endpoint.py", + "source_location": "L69", + "community": 184, + "norm_label": "testscrapertrigger", + "id": "tests_test_status_endpoint_testscrapertrigger" }, { - "label": "Regression: queryFundamental must not mutate the shared cache TIME column.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L941", - "community": 101, - "norm_label": "regression: queryfundamental must not mutate the shared cache time column.", - "id": "tests_test_stocks_api_coverage_rationale_941" + "label": ".test_scraper_trigger_debug_mode()", + "file_type": "code", + "source_file": "tests/test_status_endpoint.py", + "source_location": "L70", + "community": 184, + "norm_label": ".test_scraper_trigger_debug_mode()", + "id": "tests_test_status_endpoint_testscrapertrigger_test_scraper_trigger_debug_mode" }, { - "label": "Tests for queryCotations and /stocks/cotations.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L984", - "community": 10, - "norm_label": "tests for querycotations and /stocks/cotations.", - "id": "tests_test_stocks_api_coverage_rationale_984" + "label": ".test_scraper_trigger_not_debug()", + "file_type": "code", + "source_file": "tests/test_status_endpoint.py", + "source_location": "L77", + "community": 184, + "norm_label": ".test_scraper_trigger_not_debug()", + "id": "tests_test_status_endpoint_testscrapertrigger_test_scraper_trigger_not_debug" }, { - "label": "2 tickers x 2 rows. Rows 0,2 are 2024-01-15; rows 1,3 are 2024-06-15. M", + "label": "Tests for run.py /status endpoint \u2014 covers status response structure.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L996", - "community": 10, - "norm_label": "2 tickers x 2 rows. rows 0,2 are 2024-01-15; rows 1,3 are 2024-06-15. m", - "id": "tests_test_stocks_api_coverage_rationale_996" + "source_file": "tests/test_status_endpoint.py", + "source_location": "L1", + "community": 184, + "norm_label": "tests for run.py /status endpoint \u2014 covers status response structure.", + "id": "tests_test_status_endpoint_rationale_1" }, { - "label": "4 rows for 2 tickers -> 2 results, one per ticker, both with latest TIME.", + "label": "Create a test client for the status endpoint without running lifespan.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1042", - "community": 10, - "norm_label": "4 rows for 2 tickers -> 2 results, one per ticker, both with latest time.", - "id": "tests_test_stocks_api_coverage_rationale_1042" + "source_file": "tests/test_status_endpoint.py", + "source_location": "L10", + "community": 184, + "norm_label": "create a test client for the status endpoint without running lifespan.", + "id": "tests_test_status_endpoint_rationale_10" }, { - "label": "dates=\"2016-12-02\" should keep only the 02-12-2016 entry in each JSON list.", - "file_type": "rationale", + "label": "test_stocks_api_coverage.py", + "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1054", - "community": 10, - "norm_label": "dates=\"2016-12-02\" should keep only the 02-12-2016 entry in each json list.", - "id": "tests_test_stocks_api_coverage_rationale_1054" + "source_location": "L1", + "community": 500, + "norm_label": "test_stocks_api_coverage.py", + "id": "tests_test_stocks_api_coverage_py" }, { - "label": "Hit the actual /stocks/cotations HTTP endpoint with adjusted=false.", - "file_type": "rationale", + "label": "_make_stocks_df()", + "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1140", - "community": 521, - "norm_label": "hit the actual /stocks/cotations http endpoint with adjusted=false.", - "id": "tests_test_stocks_api_coverage_rationale_1140" + "source_location": "L23", + "community": 3, + "norm_label": "_make_stocks_df()", + "id": "tests_test_stocks_api_coverage_make_stocks_df" }, { - "label": "Tests for queryLiveCotation and /stocks/cotations/live.", - "file_type": "rationale", + "label": "TestStocksCacheManager", + "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1167", - "community": 22, - "norm_label": "tests for querylivecotation and /stocks/cotations/live.", - "id": "tests_test_stocks_api_coverage_rationale_1167" + "source_location": "L43", + "community": 3, + "norm_label": "teststockscachemanager", + "id": "tests_test_stocks_api_coverage_teststockscachemanager" }, { - "label": "GET /stocks/realtime-cotation without search returns 422.", - "file_type": "rationale", + "label": "._make_manager()", + "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1266", - "community": 234, - "norm_label": "get /stocks/realtime-cotation without search returns 422.", - "id": "tests_test_stocks_api_coverage_rationale_1266" + "source_location": "L46", + "community": 42, + "norm_label": "._make_manager()", + "id": "tests_test_stocks_api_coverage_teststockscachemanager_make_manager" }, { - "label": "GET /cotations without search returns 422.", - "file_type": "rationale", + "label": "test_cache_scheduler_starts_apscheduler()", + "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1316", - "community": 568, - "norm_label": "get /cotations without search returns 422.", - "id": "tests_test_stocks_api_coverage_rationale_1316" + "source_location": "L55", + "community": 500, + "norm_label": "test_cache_scheduler_starts_apscheduler()", + "id": "tests_test_stocks_api_coverage_test_cache_scheduler_starts_apscheduler" }, { - "label": "test_stocks_api_fields.py", + "label": ".test_getCachedStocks_no_columns()", "file_type": "code", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L1", - "community": 129, - "norm_label": "test_stocks_api_fields.py", - "id": "tests_test_stocks_api_fields_py" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L70", + "community": 3, + "norm_label": ".test_getcachedstocks_no_columns()", + "id": "tests_test_stocks_api_coverage_teststockscachemanager_test_getcachedstocks_no_columns" }, { - "label": "TestFieldRegexPattern", + "label": ".test_getCachedStocks_with_valid_columns()", "file_type": "code", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L15", - "community": 128, - "norm_label": "testfieldregexpattern", - "id": "tests_test_stocks_api_fields_testfieldregexpattern" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L84", + "community": 3, + "norm_label": ".test_getcachedstocks_with_valid_columns()", + "id": "tests_test_stocks_api_coverage_teststockscachemanager_test_getcachedstocks_with_valid_columns" }, { - "label": ".test_slash_in_field_name()", + "label": ".test_getCachedStocks_replaces_nan_inf()", "file_type": "code", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L18", - "community": 128, - "norm_label": ".test_slash_in_field_name()", - "id": "tests_test_stocks_api_fields_testfieldregexpattern_test_slash_in_field_name" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L95", + "community": 3, + "norm_label": ".test_getcachedstocks_replaces_nan_inf()", + "id": "tests_test_stocks_api_coverage_teststockscachemanager_test_getcachedstocks_replaces_nan_inf" }, { - "label": ".test_dot_in_field_name()", + "label": ".test_getCachedStocks_builds_ticker_index()", "file_type": "code", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L22", - "community": 254, - "norm_label": ".test_dot_in_field_name()", - "id": "tests_test_stocks_api_fields_testfieldregexpattern_test_dot_in_field_name" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L108", + "community": 3, + "norm_label": ".test_getcachedstocks_builds_ticker_index()", + "id": "tests_test_stocks_api_coverage_teststockscachemanager_test_getcachedstocks_builds_ticker_index" }, { - "label": ".test_slash_and_dot_combined()", + "label": ".test_getCachedStocks_exception_logged()", "file_type": "code", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L26", - "community": 128, - "norm_label": ".test_slash_and_dot_combined()", - "id": "tests_test_stocks_api_fields_testfieldregexpattern_test_slash_and_dot_combined" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L119", + "community": 3, + "norm_label": ".test_getcachedstocks_exception_logged()", + "id": "tests_test_stocks_api_coverage_teststockscachemanager_test_getcachedstocks_exception_logged" }, { - "label": ".test_normal_field_still_works()", + "label": ".test_getCachedStocks_replaces_inf()", "file_type": "code", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L30", - "community": 255, - "norm_label": ".test_normal_field_still_works()", - "id": "tests_test_stocks_api_fields_testfieldregexpattern_test_normal_field_still_works" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L126", + "community": 3, + "norm_label": ".test_getcachedstocks_replaces_inf()", + "id": "tests_test_stocks_api_coverage_teststockscachemanager_test_getcachedstocks_replaces_inf" }, { - "label": ".test_comma_separated_with_slash()", + "label": ".test_getCachedStocks_replaces_neg_inf()", "file_type": "code", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L34", - "community": 252, - "norm_label": ".test_comma_separated_with_slash()", - "id": "tests_test_stocks_api_fields_testfieldregexpattern_test_comma_separated_with_slash" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L137", + "community": 3, + "norm_label": ".test_getcachedstocks_replaces_neg_inf()", + "id": "tests_test_stocks_api_coverage_teststockscachemanager_test_getcachedstocks_replaces_neg_inf" }, { - "label": ".test_rejects_script_injection()", + "label": "TestVerifyAPIKey", "file_type": "code", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L38", - "community": 253, - "norm_label": ".test_rejects_script_injection()", - "id": "tests_test_stocks_api_fields_testfieldregexpattern_test_rejects_script_injection" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L152", + "community": 571, + "norm_label": "testverifyapikey", + "id": "tests_test_stocks_api_coverage_testverifyapikey" }, { - "label": "TestFundamentalFieldValidation", + "label": "test_verify_api_key_disabled_returns_none()", "file_type": "code", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L49", - "community": 129, - "norm_label": "testfundamentalfieldvalidation", - "id": "tests_test_stocks_api_fields_testfundamentalfieldvalidation" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L157", + "community": 500, + "norm_label": "test_verify_api_key_disabled_returns_none()", + "id": "tests_test_stocks_api_coverage_test_verify_api_key_disabled_returns_none" }, { - "label": ".test_pslashl_not_422()", + "label": "test_verify_api_key_missing_raises_401()", "file_type": "code", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L52", - "community": 129, - "norm_label": ".test_pslashl_not_422()", - "id": "tests_test_stocks_api_fields_testfundamentalfieldvalidation_test_pslashl_not_422" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L168", + "community": 500, + "norm_label": "test_verify_api_key_missing_raises_401()", + "id": "tests_test_stocks_api_coverage_test_verify_api_key_missing_raises_401" }, { - "label": ".test_dot_field_not_422()", + "label": "test_verify_api_key_invalid_key_raises_401()", "file_type": "code", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L57", - "community": 167, - "norm_label": ".test_dot_field_not_422()", - "id": "tests_test_stocks_api_fields_testfundamentalfieldvalidation_test_dot_field_not_422" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L181", + "community": 500, + "norm_label": "test_verify_api_key_invalid_key_raises_401()", + "id": "tests_test_stocks_api_coverage_test_verify_api_key_invalid_key_raises_401" }, { - "label": ".test_mixed_fields_not_422()", + "label": "test_verify_api_key_quota_exceeded()", "file_type": "code", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L62", - "community": 166, - "norm_label": ".test_mixed_fields_not_422()", - "id": "tests_test_stocks_api_fields_testfundamentalfieldvalidation_test_mixed_fields_not_422" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L198", + "community": 500, + "norm_label": "test_verify_api_key_quota_exceeded()", + "id": "tests_test_stocks_api_coverage_test_verify_api_key_quota_exceeded" }, { - "label": "TestHistoricalFieldValidation", + "label": "test_verify_api_key_success()", "file_type": "code", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L68", - "community": 191, - "norm_label": "testhistoricalfieldvalidation", - "id": "tests_test_stocks_api_fields_testhistoricalfieldvalidation" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L216", + "community": 500, + "norm_label": "test_verify_api_key_success()", + "id": "tests_test_stocks_api_coverage_test_verify_api_key_success" }, { - "label": ".test_pslashl_not_422()", + "label": "test_verify_api_key_http_exception_rollback()", "file_type": "code", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L71", - "community": 191, - "norm_label": ".test_pslashl_not_422()", - "id": "tests_test_stocks_api_fields_testhistoricalfieldvalidation_test_pslashl_not_422" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L230", + "community": 500, + "norm_label": "test_verify_api_key_http_exception_rollback()", + "id": "tests_test_stocks_api_coverage_test_verify_api_key_http_exception_rollback" }, { - "label": ".test_dot_field_not_422()", + "label": "test_verify_api_key_generic_exception_rollback()", "file_type": "code", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L76", - "community": 167, - "norm_label": ".test_dot_field_not_422()", - "id": "tests_test_stocks_api_fields_testhistoricalfieldvalidation_test_dot_field_not_422" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L249", + "community": 500, + "norm_label": "test_verify_api_key_generic_exception_rollback()", + "id": "tests_test_stocks_api_coverage_test_verify_api_key_generic_exception_rollback" }, { - "label": ".test_comma_separated_with_slash_not_422()", + "label": "TestGenerateSecureKey", "file_type": "code", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L81", - "community": 166, - "norm_label": ".test_comma_separated_with_slash_not_422()", - "id": "tests_test_stocks_api_fields_testhistoricalfieldvalidation_test_comma_separated_with_slash_not_422" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L264", + "community": 141, + "norm_label": "testgeneratesecurekey", + "id": "tests_test_stocks_api_coverage_testgeneratesecurekey" }, { - "label": "TestFundamentalDateFiltering", + "label": ".test_generate_secure_key_length()", "file_type": "code", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L87", - "community": 179, - "norm_label": "testfundamentaldatefiltering", - "id": "tests_test_stocks_api_fields_testfundamentaldatefiltering" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L267", + "community": 141, + "norm_label": ".test_generate_secure_key_length()", + "id": "tests_test_stocks_api_coverage_testgeneratesecurekey_test_generate_secure_key_length" }, { - "label": ".test_single_date_returns_per_ticker_closest()", + "label": ".test_generate_secure_key_custom_length()", "file_type": "code", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L90", - "community": 179, - "norm_label": ".test_single_date_returns_per_ticker_closest()", - "id": "tests_test_stocks_api_fields_testfundamentaldatefiltering_test_single_date_returns_per_ticker_closest" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L274", + "community": 141, + "norm_label": ".test_generate_secure_key_custom_length()", + "id": "tests_test_stocks_api_coverage_testgeneratesecurekey_test_generate_secure_key_custom_length" }, { - "label": "Tests for stocks API field validation \u2014 verifies the fields parameter accepts a", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L1", - "community": 129, - "norm_label": "tests for stocks api field validation \u2014 verifies the fields parameter accepts a", - "id": "tests_test_stocks_api_fields_rationale_1" + "label": ".test_generate_secure_key_unique()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L280", + "community": 141, + "norm_label": ".test_generate_secure_key_unique()", + "id": "tests_test_stocks_api_coverage_testgeneratesecurekey_test_generate_secure_key_unique" }, { - "label": "Direct tests on the regex pattern used for the `fields` query param.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L16", - "community": 128, - "norm_label": "direct tests on the regex pattern used for the `fields` query param.", - "id": "tests_test_stocks_api_fields_rationale_16" + "label": "TestCreateKey", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L287", + "community": 565, + "norm_label": "testcreatekey", + "id": "tests_test_stocks_api_coverage_testcreatekey" }, { - "label": "P/L must be accepted \u2014 it's a standard valuation metric.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L19", - "community": 128, - "norm_label": "p/l must be accepted \u2014 it's a standard valuation metric.", - "id": "tests_test_stocks_api_fields_rationale_19" + "label": "test_create_key_new_user()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L291", + "community": 500, + "norm_label": "test_create_key_new_user()", + "id": "tests_test_stocks_api_coverage_test_create_key_new_user" }, { - "label": "MARG. LIQUIDA must be accepted \u2014 returned by /stocks/fields.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L23", - "community": 254, - "norm_label": "marg. liquida must be accepted \u2014 returned by /stocks/fields.", - "id": "tests_test_stocks_api_fields_rationale_23" + "label": "test_create_key_existing_user_updates()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L306", + "community": 26, + "norm_label": "test_create_key_existing_user_updates()", + "id": "tests_test_stocks_api_coverage_test_create_key_existing_user_updates" }, { - "label": "P/VP and similar combos must be accepted.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L27", - "community": 128, - "norm_label": "p/vp and similar combos must be accepted.", - "id": "tests_test_stocks_api_fields_rationale_27" - }, - { - "label": "Basic fields like ROE must still pass.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L31", - "community": 255, - "norm_label": "basic fields like roe must still pass.", - "id": "tests_test_stocks_api_fields_rationale_31" + "label": "test_create_key_exception_rollback()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L323", + "community": 500, + "norm_label": "test_create_key_exception_rollback()", + "id": "tests_test_stocks_api_coverage_test_create_key_exception_rollback" }, { - "label": "Comma-separated list containing slash fields must pass.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L35", - "community": 252, - "norm_label": "comma-separated list containing slash fields must pass.", - "id": "tests_test_stocks_api_fields_rationale_35" + "label": "TestDeserializeJsonColumns", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L341", + "community": 3, + "norm_label": "testdeserializejsoncolumns", + "id": "tests_test_stocks_api_coverage_testdeserializejsoncolumns" }, { - "label": "Pattern must reject potential injection \u2014 no angle brackets.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L39", - "community": 253, - "norm_label": "pattern must reject potential injection \u2014 no angle brackets.", - "id": "tests_test_stocks_api_fields_rationale_39" + "label": "._make_manager()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L344", + "community": 63, + "norm_label": "._make_manager()", + "id": "tests_test_stocks_api_coverage_testdeserializejsoncolumns_make_manager" }, { - "label": "Integration: /stocks/fundamental must accept slash and dot fields.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L50", - "community": 129, - "norm_label": "integration: /stocks/fundamental must accept slash and dot fields.", - "id": "tests_test_stocks_api_fields_rationale_50" + "label": ".test_deserialize_empty_df()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L352", + "community": 3, + "norm_label": ".test_deserialize_empty_df()", + "id": "tests_test_stocks_api_coverage_testdeserializejsoncolumns_test_deserialize_empty_df" }, { - "label": "GET /fundamental?fields=P/L must not return 422 (validation error).", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L53", - "community": 129, - "norm_label": "get /fundamental?fields=p/l must not return 422 (validation error).", - "id": "tests_test_stocks_api_fields_rationale_53" + "label": ".test_deserialize_returns_copy()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L358", + "community": 3, + "norm_label": ".test_deserialize_returns_copy()", + "id": "tests_test_stocks_api_coverage_testdeserializejsoncolumns_test_deserialize_returns_copy" }, { - "label": "GET /fundamental?fields=MARG. LIQUIDA must not return 422.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L58", - "community": 167, - "norm_label": "get /fundamental?fields=marg. liquida must not return 422.", - "id": "tests_test_stocks_api_fields_rationale_58" + "label": ".test_deserialize_json_dict_in_special_col()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L364", + "community": 3, + "norm_label": ".test_deserialize_json_dict_in_special_col()", + "id": "tests_test_stocks_api_coverage_testdeserializejsoncolumns_test_deserialize_json_dict_in_special_col" }, { - "label": "GET /fundamental?fields=P/L,ROE,DY must not return 422.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L63", - "community": 166, - "norm_label": "get /fundamental?fields=p/l,roe,dy must not return 422.", - "id": "tests_test_stocks_api_fields_rationale_63" + "label": ".test_deserialize_json_list_in_special_col()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L371", + "community": 3, + "norm_label": ".test_deserialize_json_list_in_special_col()", + "id": "tests_test_stocks_api_coverage_testdeserializejsoncolumns_test_deserialize_json_list_in_special_col" }, { - "label": "Integration: /stocks/historical must accept slash and dot fields.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L69", - "community": 191, - "norm_label": "integration: /stocks/historical must accept slash and dot fields.", - "id": "tests_test_stocks_api_fields_rationale_69" + "label": ".test_deserialize_nan_in_dict_replaced()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L378", + "community": 3, + "norm_label": ".test_deserialize_nan_in_dict_replaced()", + "id": "tests_test_stocks_api_coverage_testdeserializejsoncolumns_test_deserialize_nan_in_dict_replaced" }, { - "label": "GET /historical?fields=P/L must not return 422.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L72", - "community": 191, - "norm_label": "get /historical?fields=p/l must not return 422.", - "id": "tests_test_stocks_api_fields_rationale_72" + "label": ".test_deserialize_nan_in_list_replaced()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L385", + "community": 3, + "norm_label": ".test_deserialize_nan_in_list_replaced()", + "id": "tests_test_stocks_api_coverage_testdeserializejsoncolumns_test_deserialize_nan_in_list_replaced" }, { - "label": "GET /historical?fields=MARG. LIQUIDA must not return 422.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L77", - "community": 167, - "norm_label": "get /historical?fields=marg. liquida must not return 422.", - "id": "tests_test_stocks_api_fields_rationale_77" + "label": ".test_deserialize_nested_nan_in_dict()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L393", + "community": 3, + "norm_label": ".test_deserialize_nested_nan_in_dict()", + "id": "tests_test_stocks_api_coverage_testdeserializejsoncolumns_test_deserialize_nested_nan_in_dict" }, { - "label": "GET /historical?fields=LUCRO LIQUIDO,P/L must not return 422.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L82", - "community": 166, - "norm_label": "get /historical?fields=lucro liquido,p/l must not return 422.", - "id": "tests_test_stocks_api_fields_rationale_82" + "label": ".test_deserialize_non_special_col_not_parsed()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L400", + "community": 3, + "norm_label": ".test_deserialize_non_special_col_not_parsed()", + "id": "tests_test_stocks_api_coverage_testdeserializejsoncolumns_test_deserialize_non_special_col_not_parsed" }, { - "label": "Integration: /stocks/fundamental date filter should work per-ticker.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L88", - "community": 179, - "norm_label": "integration: /stocks/fundamental date filter should work per-ticker.", - "id": "tests_test_stocks_api_fields_rationale_88" + "label": ".test_deserialize_non_string_value_not_parsed()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L407", + "community": 3, + "norm_label": ".test_deserialize_non_string_value_not_parsed()", + "id": "tests_test_stocks_api_coverage_testdeserializejsoncolumns_test_deserialize_non_string_value_not_parsed" }, { - "label": "When tickers have different date coverage, each should get its closest snapshot.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L91", - "community": 179, - "norm_label": "when tickers have different date coverage, each should get its closest snapshot.", - "id": "tests_test_stocks_api_fields_rationale_91" + "label": ".test_deserialize_string_not_json_not_parsed()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L413", + "community": 3, + "norm_label": ".test_deserialize_string_not_json_not_parsed()", + "id": "tests_test_stocks_api_coverage_testdeserializejsoncolumns_test_deserialize_string_not_json_not_parsed" }, { - "label": "test_stocks_api_util_coverage.py", + "label": ".test_deserialize_float_nan_direct()", "file_type": "code", - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L1", - "community": 477, - "norm_label": "test_stocks_api_util_coverage.py", - "id": "tests_test_stocks_api_util_coverage_py" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L419", + "community": 577, + "norm_label": ".test_deserialize_float_nan_direct()", + "id": "tests_test_stocks_api_coverage_testdeserializejsoncolumns_test_deserialize_float_nan_direct" }, { - "label": "TestCategorizeColumns", + "label": ".test_deserialize_non_nan_float()", "file_type": "code", - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L9", - "community": 147, - "norm_label": "testcategorizecolumns", - "id": "tests_test_stocks_api_util_coverage_testcategorizecolumns" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L433", + "community": 566, + "norm_label": ".test_deserialize_non_nan_float()", + "id": "tests_test_stocks_api_coverage_testdeserializejsoncolumns_test_deserialize_non_nan_float" }, { - "label": ".test_historical_and_fundamental()", + "label": ".test_deserialize_pd_na_value()", "file_type": "code", - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L10", - "community": 147, - "norm_label": ".test_historical_and_fundamental()", - "id": "tests_test_stocks_api_util_coverage_testcategorizecolumns_test_historical_and_fundamental" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L442", + "community": 520, + "norm_label": ".test_deserialize_pd_na_value()", + "id": "tests_test_stocks_api_coverage_testdeserializejsoncolumns_test_deserialize_pd_na_value" }, { - "label": ".test_only_fundamental()", + "label": ".test_deserialize_mixed_string_none_parses_json()", "file_type": "code", - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L19", - "community": 147, - "norm_label": ".test_only_fundamental()", - "id": "tests_test_stocks_api_util_coverage_testcategorizecolumns_test_only_fundamental" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L451", + "community": 86, + "norm_label": ".test_deserialize_mixed_string_none_parses_json()", + "id": "tests_test_stocks_api_coverage_testdeserializejsoncolumns_test_deserialize_mixed_string_none_parses_json" }, { - "label": ".test_reserved_words_excluded()", + "label": ".test_deserialize_multiple_special_cols_with_none()", "file_type": "code", - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L25", - "community": 147, - "norm_label": ".test_reserved_words_excluded()", - "id": "tests_test_stocks_api_util_coverage_testcategorizecolumns_test_reserved_words_excluded" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L473", + "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" }, { - "label": ".test_single_year()", + "label": "TestFilterBySearchTerms", "file_type": "code", - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L31", - "community": 147, - "norm_label": ".test_single_year()", - "id": "tests_test_stocks_api_util_coverage_testcategorizecolumns_test_single_year" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L498", + "community": 86, + "norm_label": "testfilterbysearchterms", + "id": "tests_test_stocks_api_coverage_testfilterbysearchterms" }, { - "label": ".test_no_year_suffix()", + "label": "._make_manager()", "file_type": "code", - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L36", - "community": 147, - "norm_label": ".test_no_year_suffix()", - "id": "tests_test_stocks_api_util_coverage_testcategorizecolumns_test_no_year_suffix" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L501", + "community": 86, + "norm_label": "._make_manager()", + "id": "tests_test_stocks_api_coverage_testfilterbysearchterms_make_manager" }, { - "label": "TestParseDateRange", + "label": ".test_filter_empty_search_returns_all()", "file_type": "code", - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L43", - "community": 73, - "norm_label": "testparsedaterange", - "id": "tests_test_stocks_api_util_coverage_testparsedaterange" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L509", + "community": 86, + "norm_label": ".test_filter_empty_search_returns_all()", + "id": "tests_test_stocks_api_coverage_testfilterbysearchterms_test_filter_empty_search_returns_all" }, { - "label": ".test_empty_string()", + "label": ".test_filter_ticker_index_hit()", "file_type": "code", - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L44", - "community": 73, - "norm_label": ".test_empty_string()", - "id": "tests_test_stocks_api_util_coverage_testparsedaterange_test_empty_string" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L515", + "community": 86, + "norm_label": ".test_filter_ticker_index_hit()", + "id": "tests_test_stocks_api_coverage_testfilterbysearchterms_test_filter_ticker_index_hit" }, { - "label": ".test_none()", + "label": ".test_filter_multiple_terms_index()", "file_type": "code", - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L47", - "community": 73, - "norm_label": ".test_none()", - "id": "tests_test_stocks_api_util_coverage_testparsedaterange_test_none" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L523", + "community": 86, + "norm_label": ".test_filter_multiple_terms_index()", + "id": "tests_test_stocks_api_coverage_testfilterbysearchterms_test_filter_multiple_terms_index" }, { - "label": ".test_single_year()", + "label": ".test_filter_no_index_match_fallback_to_str()", "file_type": "code", - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L50", - "community": 73, - "norm_label": ".test_single_year()", - "id": "tests_test_stocks_api_util_coverage_testparsedaterange_test_single_year" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L530", + "community": 86, + "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" }, { - "label": ".test_year_range()", + "label": ".test_filter_fallback_multiple_terms()", "file_type": "code", - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L59", - "community": 73, - "norm_label": ".test_year_range()", - "id": "tests_test_stocks_api_util_coverage_testparsedaterange_test_year_range" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L538", + "community": 86, + "norm_label": ".test_filter_fallback_multiple_terms()", + "id": "tests_test_stocks_api_coverage_testfilterbysearchterms_test_filter_fallback_multiple_terms" }, { - "label": ".test_spaces()", + "label": ".test_filter_case_insensitive()", "file_type": "code", - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L64", - "community": 73, - "norm_label": ".test_spaces()", - "id": "tests_test_stocks_api_util_coverage_testparsedaterange_test_spaces" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L545", + "community": 86, + "norm_label": ".test_filter_case_insensitive()", + "id": "tests_test_stocks_api_coverage_testfilterbysearchterms_test_filter_case_insensitive" }, { - "label": ".test_three_values_raises()", + "label": "TestQueryHistorical", "file_type": "code", - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L69", - "community": 73, - "norm_label": ".test_three_values_raises()", - "id": "tests_test_stocks_api_util_coverage_testparsedaterange_test_three_values_raises" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L553", + "community": 28, + "norm_label": "testqueryhistorical", + "id": "tests_test_stocks_api_coverage_testqueryhistorical" }, { - "label": ".test_month_start()", + "label": "._make_manager()", "file_type": "code", - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L74", - "community": 73, - "norm_label": ".test_month_start()", - "id": "tests_test_stocks_api_util_coverage_testparsedaterange_test_month_start" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L556", + "community": 63, + "norm_label": "._make_manager()", + "id": "tests_test_stocks_api_coverage_testqueryhistorical_make_manager" }, { - "label": ".test_full_date()", + "label": ".test_cache_not_initialized_raises_503()", "file_type": "code", - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L81", - "community": 73, - "norm_label": ".test_full_date()", - "id": "tests_test_stocks_api_util_coverage_testparsedaterange_test_full_date" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L566", + "community": 28, + "norm_label": ".test_cache_not_initialized_raises_503()", + "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_cache_not_initialized_raises_503" }, { - "label": "Tests for main/app/stocks_api/util.py.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L1", - "community": 477, - "norm_label": "tests for main/app/stocks_api/util.py.", - "id": "tests_test_stocks_api_util_coverage_rationale_1" + "label": ".test_basic_historical_query()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L574", + "community": 3, + "norm_label": ".test_basic_historical_query()", + "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_basic_historical_query" }, { - "label": "test_stocks_mcp.py", + "label": ".test_historical_with_search()", "file_type": "code", - "source_file": "tests/test_stocks_mcp.py", - "source_location": "L1", - "community": 34, - "norm_label": "test_stocks_mcp.py", - "id": "tests_test_stocks_mcp_py" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L583", + "community": 3, + "norm_label": ".test_historical_with_search()", + "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_historical_with_search" }, { - "label": "_build_app_with_all_routers()", + "label": ".test_historical_with_fields()", "file_type": "code", - "source_file": "tests/test_stocks_mcp.py", - "source_location": "L29", - "community": 34, - "norm_label": "_build_app_with_all_routers()", - "id": "tests_test_stocks_mcp_build_app_with_all_routers" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L591", + "community": 28, + "norm_label": ".test_historical_with_fields()", + "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_historical_with_fields" }, { - "label": "_make_mcp()", + "label": ".test_historical_with_dates()", "file_type": "code", - "source_file": "tests/test_stocks_mcp.py", - "source_location": "L39", - "community": 34, - "norm_label": "_make_mcp()", - "id": "tests_test_stocks_mcp_make_mcp" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L599", + "community": 3, + "norm_label": ".test_historical_with_dates()", + "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_historical_with_dates" }, { - "label": "TestMCPToolScoping", + "label": ".test_historical_with_order_by()", "file_type": "code", - "source_file": "tests/test_stocks_mcp.py", - "source_location": "L48", - "community": 34, - "norm_label": "testmcptoolscoping", - "id": "tests_test_stocks_mcp_testmcptoolscoping" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L605", + "community": 3, + "norm_label": ".test_historical_with_order_by()", + "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_historical_with_order_by" }, { - "label": ".test_mcp_exactly_five_tools()", + "label": ".test_historical_with_limit()", "file_type": "code", - "source_file": "tests/test_stocks_mcp.py", - "source_location": "L51", - "community": 34, - "norm_label": ".test_mcp_exactly_five_tools()", - "id": "tests_test_stocks_mcp_testmcptoolscoping_test_mcp_exactly_five_tools" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L611", + "community": 3, + "norm_label": ".test_historical_with_limit()", + "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_historical_with_limit" }, { - "label": ".test_mcp_excludes_health()", + "label": ".test_historical_no_historical_fields()", "file_type": "code", - "source_file": "tests/test_stocks_mcp.py", - "source_location": "L57", - "community": 34, - "norm_label": ".test_mcp_excludes_health()", - "id": "tests_test_stocks_mcp_testmcptoolscoping_test_mcp_excludes_health" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L617", + "community": 28, + "norm_label": ".test_historical_no_historical_fields()", + "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_historical_no_historical_fields" }, { - "label": ".test_mcp_excludes_generate_key()", + "label": ".test_historical_sorts_by_time()", "file_type": "code", - "source_file": "tests/test_stocks_mcp.py", - "source_location": "L64", - "community": 34, - "norm_label": ".test_mcp_excludes_generate_key()", - "id": "tests_test_stocks_mcp_testmcptoolscoping_test_mcp_excludes_generate_key" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L628", + "community": 3, + "norm_label": ".test_historical_sorts_by_time()", + "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_historical_sorts_by_time" }, { - "label": ".test_mcp_excludes_non_stocks_endpoints()", + "label": ".test_historical_deduplicates_by_ticker()", "file_type": "code", - "source_file": "tests/test_stocks_mcp.py", - "source_location": "L71", - "community": 34, - "norm_label": ".test_mcp_excludes_non_stocks_endpoints()", - "id": "tests_test_stocks_mcp_testmcptoolscoping_test_mcp_excludes_non_stocks_endpoints" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L634", + "community": 3, + "norm_label": ".test_historical_deduplicates_by_ticker()", + "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_historical_deduplicates_by_ticker" }, { - "label": ".test_mcp_tool_names_match_endpoints()", + "label": ".test_historical_exception_returns_500()", "file_type": "code", - "source_file": "tests/test_stocks_mcp.py", - "source_location": "L79", - "community": 34, - "norm_label": ".test_mcp_tool_names_match_endpoints()", - "id": "tests_test_stocks_mcp_testmcptoolscoping_test_mcp_tool_names_match_endpoints" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L642", + "community": 28, + "norm_label": ".test_historical_exception_returns_500()", + "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_historical_exception_returns_500" }, { - "label": ".test_mcp_descriptions_are_meaningful()", + "label": ".test_historical_with_invalid_dates()", "file_type": "code", - "source_file": "tests/test_stocks_mcp.py", - "source_location": "L87", - "community": 34, - "norm_label": ".test_mcp_descriptions_are_meaningful()", - "id": "tests_test_stocks_mcp_testmcptoolscoping_test_mcp_descriptions_are_meaningful" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L660", + "community": 543, + "norm_label": ".test_historical_with_invalid_dates()", + "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_historical_with_invalid_dates" }, { - "label": ".test_mcp_mount_returns_valid_response()", + "label": ".test_historical_search_with_no_results()", "file_type": "code", - "source_file": "tests/test_stocks_mcp.py", - "source_location": "L94", - "community": 34, - "norm_label": ".test_mcp_mount_returns_valid_response()", - "id": "tests_test_stocks_mcp_testmcptoolscoping_test_mcp_mount_returns_valid_response" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L669", + "community": 3, + "norm_label": ".test_historical_search_with_no_results()", + "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_historical_search_with_no_results" }, { - "label": ".test_wrong_operation_ids_match_nothing()", + "label": ".test_historical_no_fields_collected()", "file_type": "code", - "source_file": "tests/test_stocks_mcp.py", - "source_location": "L106", - "community": 34, - "norm_label": ".test_wrong_operation_ids_match_nothing()", - "id": "tests_test_stocks_mcp_testmcptoolscoping_test_wrong_operation_ids_match_nothing" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L676", + "community": 127, + "norm_label": ".test_historical_no_fields_collected()", + "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_historical_no_fields_collected" }, { - "label": ".test_listfields_tool_exists()", + "label": ".test_historical_with_date_range()", "file_type": "code", - "source_file": "tests/test_stocks_mcp.py", - "source_location": "L116", - "community": 34, - "norm_label": ".test_listfields_tool_exists()", - "id": "tests_test_stocks_mcp_testmcptoolscoping_test_listfields_tool_exists" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L686", + "community": 28, + "norm_label": ".test_historical_with_date_range()", + "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_historical_with_date_range" }, { - "label": ".test_listfields_description_mentions_discovery()", + "label": ".test_historical_search_multiple_terms_index()", "file_type": "code", - "source_file": "tests/test_stocks_mcp.py", - "source_location": "L123", - "community": 34, - "norm_label": ".test_listfields_description_mentions_discovery()", - "id": "tests_test_stocks_mcp_testmcptoolscoping_test_listfields_description_mentions_discovery" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L693", + "community": 28, + "norm_label": ".test_historical_search_multiple_terms_index()", + "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_historical_search_multiple_terms_index" }, { - "label": ".test_historical_dates_format_in_description()", + "label": ".test_historical_requires_search_fields_or_dates()", "file_type": "code", - "source_file": "tests/test_stocks_mcp.py", - "source_location": "L132", - "community": 34, - "norm_label": ".test_historical_dates_format_in_description()", - "id": "tests_test_stocks_mcp_testmcptoolscoping_test_historical_dates_format_in_description" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L701", + "community": 112, + "norm_label": ".test_historical_requires_search_fields_or_dates()", + "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_historical_requires_search_fields_or_dates" }, { - "label": "Tests for MCP tool scoping in stocksapi_service.py. Verifies that FastApiMCP ex", - "file_type": "rationale", - "source_file": "tests/test_stocks_mcp.py", - "source_location": "L1", - "community": 34, - "norm_label": "tests for mcp tool scoping in stocksapi_service.py. verifies that fastapimcp ex", - "id": "tests_test_stocks_mcp_rationale_1" + "label": "TestQueryFundamental", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L712", + "community": 112, + "norm_label": "testqueryfundamental", + "id": "tests_test_stocks_api_coverage_testqueryfundamental" }, { - "label": "Build a FastAPI app with all service routers \u2014 mimics production shared port.", - "file_type": "rationale", - "source_file": "tests/test_stocks_mcp.py", - "source_location": "L30", - "community": 34, - "norm_label": "build a fastapi app with all service routers \u2014 mimics production shared port.", - "id": "tests_test_stocks_mcp_rationale_30" + "label": "._make_manager()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L715", + "community": 3, + "norm_label": "._make_manager()", + "id": "tests_test_stocks_api_coverage_testqueryfundamental_make_manager" }, { - "label": "Create MCP matching production config.", - "file_type": "rationale", - "source_file": "tests/test_stocks_mcp.py", - "source_location": "L40", - "community": 34, - "norm_label": "create mcp matching production config.", - "id": "tests_test_stocks_mcp_rationale_40" + "label": ".test_cache_not_initialized_raises_503()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L725", + "community": 112, + "norm_label": ".test_cache_not_initialized_raises_503()", + "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_cache_not_initialized_raises_503" }, { - "label": "Verify FastApiMCP exposes exactly the 5 data query tools.", - "file_type": "rationale", - "source_file": "tests/test_stocks_mcp.py", - "source_location": "L49", - "community": 34, - "norm_label": "verify fastapimcp exposes exactly the 5 data query tools.", - "id": "tests_test_stocks_mcp_rationale_49" + "label": ".test_basic_fundamental_query()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L733", + "community": 3, + "norm_label": ".test_basic_fundamental_query()", + "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_basic_fundamental_query" }, { - "label": "MCP should expose exactly 5 tools: fields, historical, fundamental, cotations, l", - "file_type": "rationale", - "source_file": "tests/test_stocks_mcp.py", - "source_location": "L52", - "community": 34, - "norm_label": "mcp should expose exactly 5 tools: fields, historical, fundamental, cotations, l", - "id": "tests_test_stocks_mcp_rationale_52" + "label": ".test_fundamental_with_search()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L741", + "community": 3, + "norm_label": ".test_fundamental_with_search()", + "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_with_search" }, { - "label": "Health endpoint should not be an MCP tool.", - "file_type": "rationale", - "source_file": "tests/test_stocks_mcp.py", - "source_location": "L58", - "community": 34, - "norm_label": "health endpoint should not be an mcp tool.", - "id": "tests_test_stocks_mcp_rationale_58" + "label": ".test_fundamental_with_fields()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L748", + "community": 3, + "norm_label": ".test_fundamental_with_fields()", + "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_with_fields" }, { - "label": "Key generation endpoint should not be an MCP tool.", - "file_type": "rationale", - "source_file": "tests/test_stocks_mcp.py", - "source_location": "L65", - "community": 34, - "norm_label": "key generation endpoint should not be an mcp tool.", - "id": "tests_test_stocks_mcp_rationale_65" + "label": ".test_fundamental_with_date_range()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L754", + "community": 3, + "norm_label": ".test_fundamental_with_date_range()", + "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_with_date_range" }, { - "label": "Auth, user, and prometheus tools should not appear.", - "file_type": "rationale", - "source_file": "tests/test_stocks_mcp.py", - "source_location": "L72", - "community": 34, - "norm_label": "auth, user, and prometheus tools should not appear.", - "id": "tests_test_stocks_mcp_rationale_72" + "label": ".test_fundamental_with_single_date()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L760", + "community": 3, + "norm_label": ".test_fundamental_with_single_date()", + "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_with_single_date" }, { - "label": "Each MCP tool should correspond to a data endpoint.", - "file_type": "rationale", - "source_file": "tests/test_stocks_mcp.py", - "source_location": "L80", - "community": 34, - "norm_label": "each mcp tool should correspond to a data endpoint.", - "id": "tests_test_stocks_mcp_rationale_80" + "label": ".test_fundamental_with_invalid_date()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L766", + "community": 39, + "norm_label": ".test_fundamental_with_invalid_date()", + "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_with_invalid_date" }, { - "label": "Tool descriptions should be more than just the function name.", - "file_type": "rationale", - "source_file": "tests/test_stocks_mcp.py", - "source_location": "L88", - "community": 34, - "norm_label": "tool descriptions should be more than just the function name.", - "id": "tests_test_stocks_mcp_rationale_88" + "label": ".test_fundamental_with_order_by()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L776", + "community": 3, + "norm_label": ".test_fundamental_with_order_by()", + "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_with_order_by" }, { - "label": "MCP endpoint should respond \u2014 confirms mount is registered.", - "file_type": "rationale", - "source_file": "tests/test_stocks_mcp.py", - "source_location": "L95", - "community": 34, - "norm_label": "mcp endpoint should respond \u2014 confirms mount is registered.", - "id": "tests_test_stocks_mcp_rationale_95" + "label": ".test_fundamental_with_limit()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L782", + "community": 3, + "norm_label": ".test_fundamental_with_limit()", + "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_with_limit" }, { - "label": "Short function names (the original bug) should match 0 tools.", - "file_type": "rationale", - "source_file": "tests/test_stocks_mcp.py", - "source_location": "L107", - "community": 34, - "norm_label": "short function names (the original bug) should match 0 tools.", - "id": "tests_test_stocks_mcp_rationale_107" + "label": ".test_fundamental_deduplicates_without_search()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L788", + "community": 3, + "norm_label": ".test_fundamental_deduplicates_without_search()", + "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_deduplicates_without_search" }, { - "label": "The listFields discovery tool should be included.", - "file_type": "rationale", - "source_file": "tests/test_stocks_mcp.py", - "source_location": "L117", - "community": 34, - "norm_label": "the listfields discovery tool should be included.", - "id": "tests_test_stocks_mcp_rationale_117" + "label": ".test_fundamental_with_search_no_dedup()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L796", + "community": 3, + "norm_label": ".test_fundamental_with_search_no_dedup()", + "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_with_search_no_dedup" }, { - "label": "The listFields tool description should guide LLMs to call it first.", - "file_type": "rationale", - "source_file": "tests/test_stocks_mcp.py", - "source_location": "L124", - "community": 34, - "norm_label": "the listfields tool description should guide llms to call it first.", - "id": "tests_test_stocks_mcp_rationale_124" + "label": ".test_fundamental_exception_returns_500()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L802", + "community": 112, + "norm_label": ".test_fundamental_exception_returns_500()", + "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_exception_returns_500" }, { - "label": "Historical tool description should mention YYYY date format.", - "file_type": "rationale", - "source_file": "tests/test_stocks_mcp.py", - "source_location": "L133", - "community": 34, - "norm_label": "historical tool description should mention yyyy date format.", - "id": "tests_test_stocks_mcp_rationale_133" + "label": ".test_fundamental_empty_search_string_no_dedup()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L819", + "community": 39, + "norm_label": ".test_fundamental_empty_search_string_no_dedup()", + "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_empty_search_string_no_dedup" }, { - "label": "test_stocks_util.py", + "label": ".test_fundamental_no_time_column()", "file_type": "code", - "source_file": "tests/test_stocks_util.py", - "source_location": "L1", - "community": 147, - "norm_label": "test_stocks_util.py", - "id": "tests_test_stocks_util_py" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L828", + "community": 39, + "norm_label": ".test_fundamental_no_time_column()", + "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_no_time_column" }, { - "label": "TestCategorizeColumns", + "label": ".test_fundamental_date_range_two_dates()", "file_type": "code", - "source_file": "tests/test_stocks_util.py", - "source_location": "L12", - "community": 147, - "norm_label": "testcategorizecolumns", - "id": "tests_test_stocks_util_testcategorizecolumns" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L841", + "community": 17, + "norm_label": ".test_fundamental_date_range_two_dates()", + "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_date_range_two_dates" }, { - "label": ".test_categorize_columns_historical_only()", + "label": ".test_fundamental_with_invalid_single_date()", "file_type": "code", - "source_file": "tests/test_stocks_util.py", - "source_location": "L13", - "community": 147, - "norm_label": ".test_categorize_columns_historical_only()", - "id": "tests_test_stocks_util_testcategorizecolumns_test_categorize_columns_historical_only" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L855", + "community": 46, + "norm_label": ".test_fundamental_with_invalid_single_date()", + "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_with_invalid_single_date" }, { - "label": ".test_categorize_columns_fundamental_only()", + "label": ".test_fundamental_fields_not_in_columns()", "file_type": "code", - "source_file": "tests/test_stocks_util.py", - "source_location": "L22", - "community": 147, - "norm_label": ".test_categorize_columns_fundamental_only()", - "id": "tests_test_stocks_util_testcategorizecolumns_test_categorize_columns_fundamental_only" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L865", + "community": 46, + "norm_label": ".test_fundamental_fields_not_in_columns()", + "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_fields_not_in_columns" }, { - "label": ".test_categorize_columns_mixed()", + "label": ".test_fundamental_search_multiple_terms()", "file_type": "code", - "source_file": "tests/test_stocks_util.py", - "source_location": "L31", - "community": 147, - "norm_label": ".test_categorize_columns_mixed()", - "id": "tests_test_stocks_util_testcategorizecolumns_test_categorize_columns_mixed" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L882", + "community": 39, + "norm_label": ".test_fundamental_search_multiple_terms()", + "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_search_multiple_terms" }, { - "label": ".test_categorize_columns_excludes_special()", + "label": ".test_fundamental_search_fallback_string_match()", "file_type": "code", - "source_file": "tests/test_stocks_util.py", - "source_location": "L39", - "community": 147, - "norm_label": ".test_categorize_columns_excludes_special()", - "id": "tests_test_stocks_util_testcategorizecolumns_test_categorize_columns_excludes_special" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L890", + "community": 17, + "norm_label": ".test_fundamental_search_fallback_string_match()", + "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_search_fallback_string_match" }, { - "label": ".test_categorize_columns_empty()", + "label": ".test_fundamental_dates_one_date()", "file_type": "code", - "source_file": "tests/test_stocks_util.py", - "source_location": "L47", - "community": 147, - "norm_label": ".test_categorize_columns_empty()", - "id": "tests_test_stocks_util_testcategorizecolumns_test_categorize_columns_empty" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L898", + "community": 17, + "norm_label": ".test_fundamental_dates_one_date()", + "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_dates_one_date" }, { - "label": "TestParseDateRange", + "label": ".test_fundamental_excludes_cotacao_10y()", "file_type": "code", - "source_file": "tests/test_stocks_util.py", - "source_location": "L53", - "community": 73, - "norm_label": "testparsedaterange", - "id": "tests_test_stocks_util_testparsedaterange" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L913", + "community": 112, + "norm_label": ".test_fundamental_excludes_cotacao_10y()", + "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_excludes_cotacao_10y" }, { - "label": ".test_parse_year_single()", + "label": ".test_fundamental_does_not_mutate_cache_time_dtype()", "file_type": "code", - "source_file": "tests/test_stocks_util.py", - "source_location": "L54", - "community": 73, - "norm_label": ".test_parse_year_single()", - "id": "tests_test_stocks_util_testparsedaterange_test_parse_year_single" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L940", + "community": 46, + "norm_label": ".test_fundamental_does_not_mutate_cache_time_dtype()", + "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_does_not_mutate_cache_time_dtype" }, { - "label": ".test_parse_year_range()", + "label": ".test_fundamental_requires_search_fields_or_dates()", "file_type": "code", - "source_file": "tests/test_stocks_util.py", - "source_location": "L63", - "community": 73, - "norm_label": ".test_parse_year_range()", - "id": "tests_test_stocks_util_testparsedaterange_test_parse_year_range" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L963", + "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" }, { - "label": ".test_parse_year_none()", + "label": "TestQueryCotations", "file_type": "code", - "source_file": "tests/test_stocks_util.py", - "source_location": "L68", - "community": 73, - "norm_label": ".test_parse_year_none()", - "id": "tests_test_stocks_util_testparsedaterange_test_parse_year_none" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L983", + "community": 10, + "norm_label": "testquerycotations", + "id": "tests_test_stocks_api_coverage_testquerycotations" }, { - "label": ".test_parse_year_empty_string()", + "label": "._make_manager()", "file_type": "code", - "source_file": "tests/test_stocks_util.py", - "source_location": "L73", - "community": 73, - "norm_label": ".test_parse_year_empty_string()", - "id": "tests_test_stocks_util_testparsedaterange_test_parse_year_empty_string" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L986", + "community": 3, + "norm_label": "._make_manager()", + "id": "tests_test_stocks_api_coverage_testquerycotations_make_manager" }, { - "label": ".test_parse_month()", + "label": "._make_cotations_df()", "file_type": "code", - "source_file": "tests/test_stocks_util.py", - "source_location": "L78", - "community": 73, - "norm_label": ".test_parse_month()", - "id": "tests_test_stocks_util_testparsedaterange_test_parse_month" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L995", + "community": 10, + "norm_label": "._make_cotations_df()", + "id": "tests_test_stocks_api_coverage_testquerycotations_make_cotations_df" }, { - "label": ".test_parse_full_date()", + "label": ".test_cotations_cache_not_initialized_raises_503()", "file_type": "code", - "source_file": "tests/test_stocks_util.py", - "source_location": "L85", - "community": 73, - "norm_label": ".test_parse_full_date()", - "id": "tests_test_stocks_util_testparsedaterange_test_parse_full_date" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1012", + "community": 10, + "norm_label": ".test_cotations_cache_not_initialized_raises_503()", + "id": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_cache_not_initialized_raises_503" }, { - "label": ".test_parse_two_values()", + "label": ".test_cotations_adjusted_false_returns_padrao()", "file_type": "code", - "source_file": "tests/test_stocks_util.py", - "source_location": "L89", - "community": 73, - "norm_label": ".test_parse_two_values()", - "id": "tests_test_stocks_util_testparsedaterange_test_parse_two_values" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1021", + "community": 10, + "norm_label": ".test_cotations_adjusted_false_returns_padrao()", + "id": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_adjusted_false_returns_padrao" }, { - "label": ".test_parse_three_values_raises()", + "label": ".test_cotations_adjusted_true_returns_ajustada()", "file_type": "code", - "source_file": "tests/test_stocks_util.py", - "source_location": "L96", - "community": 73, - "norm_label": ".test_parse_three_values_raises()", - "id": "tests_test_stocks_util_testparsedaterange_test_parse_three_values_raises" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1031", + "community": 10, + "norm_label": ".test_cotations_adjusted_true_returns_ajustada()", + "id": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_adjusted_true_returns_ajustada" }, { - "label": "test_streammessage_no_chatsession.py", + "label": ".test_cotations_returns_most_recent_per_ticker()", "file_type": "code", - "source_file": "tests/test_streammessage_no_chatsession.py", - "source_location": "L1", - "community": 138, - "norm_label": "test_streammessage_no_chatsession.py", - "id": "tests_test_streammessage_no_chatsession_py" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1041", + "community": 10, + "norm_label": ".test_cotations_returns_most_recent_per_ticker()", + "id": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_returns_most_recent_per_ticker" }, { - "label": "FakeChunk", + "label": ".test_cotations_dates_filter_inner_json_data()", "file_type": "code", - "source_file": "tests/test_streammessage_no_chatsession.py", - "source_location": "L18", - "community": 138, - "norm_label": "fakechunk", - "id": "tests_test_streammessage_no_chatsession_fakechunk" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1053", + "community": 10, + "norm_label": ".test_cotations_dates_filter_inner_json_data()", + "id": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_dates_filter_inner_json_data" }, { - "label": ".__init__()", + "label": ".test_cotations_dates_range_keeps_all_inner_entries()", "file_type": "code", - "source_file": "tests/test_streammessage_no_chatsession.py", - "source_location": "L19", - "community": 138, - "norm_label": ".__init__()", - "id": "tests_test_streammessage_no_chatsession_fakechunk_init" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1065", + "community": 10, + "norm_label": ".test_cotations_dates_range_keeps_all_inner_entries()", + "id": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_dates_range_keeps_all_inner_entries" }, { - "label": "TestStreamMessageNoChatSession", + "label": ".test_cotations_no_dates_keeps_all_inner_entries()", "file_type": "code", - "source_file": "tests/test_streammessage_no_chatsession.py", - "source_location": "L24", - "community": 138, - "norm_label": "teststreammessagenochatsession", - "id": "tests_test_streammessage_no_chatsession_teststreammessagenochatsession" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1073", + "community": 10, + "norm_label": ".test_cotations_no_dates_keeps_all_inner_entries()", + "id": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_no_dates_keeps_all_inner_entries" }, { - "label": "test_stream_message_yields_text_chunks()", + "label": ".test_cotations_with_search_filter()", "file_type": "code", - "source_file": "tests/test_streammessage_no_chatsession.py", - "source_location": "L32", - "community": 138, - "norm_label": "test_stream_message_yields_text_chunks()", - "id": "tests_test_streammessage_no_chatsession_test_stream_message_yields_text_chunks" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1081", + "community": 10, + "norm_label": ".test_cotations_with_search_filter()", + "id": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_with_search_filter" }, { - "label": "test_stream_message_does_not_call_chatSession()", + "label": ".test_cotations_with_search_multiple_terms()", "file_type": "code", - "source_file": "tests/test_streammessage_no_chatsession.py", - "source_location": "L76", - "community": 138, - "norm_label": "test_stream_message_does_not_call_chatsession()", - "id": "tests_test_streammessage_no_chatsession_test_stream_message_does_not_call_chatsession" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1090", + "community": 10, + "norm_label": ".test_cotations_with_search_multiple_terms()", + "id": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_with_search_multiple_terms" }, { - "label": "test_stream_message_handles_function_calls_without_chatsession()", + "label": ".test_cotations_missing_column_returns_empty()", "file_type": "code", - "source_file": "tests/test_streammessage_no_chatsession.py", - "source_location": "L97", - "community": 138, - "norm_label": "test_stream_message_handles_function_calls_without_chatsession()", - "id": "tests_test_streammessage_no_chatsession_test_stream_message_handles_function_calls_without_chatsession" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1098", + "community": 10, + "norm_label": ".test_cotations_missing_column_returns_empty()", + "id": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_missing_column_returns_empty" }, { - "label": "GREEN test: streamMessage works without chatSession \u2014 MCP setup is inlined. Aft", - "file_type": "rationale", - "source_file": "tests/test_streammessage_no_chatsession.py", - "source_location": "L1", - "community": 138, - "norm_label": "green test: streammessage works without chatsession \u2014 mcp setup is inlined. aft", - "id": "tests_test_streammessage_no_chatsession_rationale_1" + "label": ".test_cotations_dates_param_stored()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1108", + "community": 10, + "norm_label": ".test_cotations_dates_param_stored()", + "id": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_dates_param_stored" }, { - "label": "streamMessage inlines MCP setup \u2014 chatSession no longer exists.", - "file_type": "rationale", - "source_file": "tests/test_streammessage_no_chatsession.py", - "source_location": "L25", - "community": 138, - "norm_label": "streammessage inlines mcp setup \u2014 chatsession no longer exists.", - "id": "tests_test_streammessage_no_chatsession_rationale_25" + "label": ".test_cotations_dates_default_none()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1114", + "community": 10, + "norm_label": ".test_cotations_dates_default_none()", + "id": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_dates_default_none" }, { - "label": "streamMessage yields text chunks via inlined MCP setup.", - "file_type": "rationale", - "source_file": "tests/test_streammessage_no_chatsession.py", - "source_location": "L33", - "community": 321, - "norm_label": "streammessage yields text chunks via inlined mcp setup.", - "id": "tests_test_streammessage_no_chatsession_rationale_33" + "label": ".test_cotations_default_search_all()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1121", + "community": 10, + "norm_label": ".test_cotations_default_search_all()", + "id": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_default_search_all" }, { - "label": "chatSession attribute must not exist \u2014 MCP setup is inlined.", - "file_type": "rationale", - "source_file": "tests/test_streammessage_no_chatsession.py", - "source_location": "L77", - "community": 322, - "norm_label": "chatsession attribute must not exist \u2014 mcp setup is inlined.", - "id": "tests_test_streammessage_no_chatsession_rationale_77" + "label": ".test_cotations_exception_returns_500()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1128", + "community": 10, + "norm_label": ".test_cotations_exception_returns_500()", + "id": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_exception_returns_500" }, { - "label": "streamMessage handles function call loops via inlined MCP setup.", - "file_type": "rationale", - "source_file": "tests/test_streammessage_no_chatsession.py", - "source_location": "L100", - "community": 323, - "norm_label": "streammessage handles function call loops via inlined mcp setup.", - "id": "tests_test_streammessage_no_chatsession_rationale_100" + "label": ".test_cotations_http_route()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1139", + "community": 10, + "norm_label": ".test_cotations_http_route()", + "id": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_http_route" }, { - "label": "test_thread_safety.py", + "label": "TestQueryLiveCotation", "file_type": "code", - "source_file": "tests/test_thread_safety.py", - "source_location": "L1", - "community": 172, - "norm_label": "test_thread_safety.py", - "id": "tests_test_thread_safety_py" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1166", + "community": 22, + "norm_label": "testquerylivecotation", + "id": "tests_test_stocks_api_coverage_testquerylivecotation" }, { - "label": "TestGetSession", + "label": "._make_manager()", "file_type": "code", - "source_file": "tests/test_thread_safety.py", - "source_location": "L21", - "community": 137, - "norm_label": "testgetsession", - "id": "tests_test_thread_safety_testgetsession" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1169", + "community": 3, + "norm_label": "._make_manager()", + "id": "tests_test_stocks_api_coverage_testquerylivecotation_make_manager" }, { - "label": ".test_same_session_within_same_thread()", + "label": "._mock_b3_response()", "file_type": "code", - "source_file": "tests/test_thread_safety.py", - "source_location": "L24", - "community": 137, - "norm_label": ".test_same_session_within_same_thread()", - "id": "tests_test_thread_safety_testgetsession_test_same_session_within_same_thread" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1178", + "community": 22, + "norm_label": "._mock_b3_response()", + "id": "tests_test_stocks_api_coverage_testquerylivecotation_mock_b3_response" }, { - "label": ".test_different_sessions_in_different_threads()", + "label": "._patch_session()", "file_type": "code", - "source_file": "tests/test_thread_safety.py", - "source_location": "L32", - "community": 137, - "norm_label": ".test_different_sessions_in_different_threads()", - "id": "tests_test_thread_safety_testgetsession_test_different_sessions_in_different_threads" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1203", + "community": 22, + "norm_label": "._patch_session()", + "id": "tests_test_stocks_api_coverage_testquerylivecotation_patch_session" }, { - "label": ".test_isolation_under_high_concurrency()", + "label": ".test_success_returns_correct_shape()", "file_type": "code", - "source_file": "tests/test_thread_safety.py", - "source_location": "L52", - "community": 137, - "norm_label": ".test_isolation_under_high_concurrency()", - "id": "tests_test_thread_safety_testgetsession_test_isolation_under_high_concurrency" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1214", + "community": 22, + "norm_label": ".test_success_returns_correct_shape()", + "id": "tests_test_stocks_api_coverage_testquerylivecotation_test_success_returns_correct_shape" }, { - "label": ".test_session_is_requests_session()", + "label": ".test_lowercase_ticker_uppercased()", "file_type": "code", - "source_file": "tests/test_thread_safety.py", - "source_location": "L73", - "community": 137, - "norm_label": ".test_session_is_requests_session()", - "id": "tests_test_thread_safety_testgetsession_test_session_is_requests_session" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1231", + "community": 22, + "norm_label": ".test_lowercase_ticker_uppercased()", + "id": "tests_test_stocks_api_coverage_testquerylivecotation_test_lowercase_ticker_uppercased" }, { - "label": "TestDiscordHandlerThreadPool", + "label": ".test_b3_unavailable_returns_503()", "file_type": "code", - "source_file": "tests/test_thread_safety.py", - "source_location": "L87", - "community": 122, - "norm_label": "testdiscordhandlerthreadpool", - "id": "tests_test_thread_safety_testdiscordhandlerthreadpool" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1238", + "community": 22, + "norm_label": ".test_b3_unavailable_returns_503()", + "id": "tests_test_stocks_api_coverage_testquerylivecotation_test_b3_unavailable_returns_503" }, { - "label": ".test_executor_exists_and_is_bounded()", + "label": ".test_b3_bad_status_returns_404()", "file_type": "code", - "source_file": "tests/test_thread_safety.py", - "source_location": "L90", - "community": 122, - "norm_label": ".test_executor_exists_and_is_bounded()", - "id": "tests_test_thread_safety_testdiscordhandlerthreadpool_test_executor_exists_and_is_bounded" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1247", + "community": 22, + "norm_label": ".test_b3_bad_status_returns_404()", + "id": "tests_test_stocks_api_coverage_testquerylivecotation_test_b3_bad_status_returns_404" }, { - "label": ".test_emit_submits_to_executor()", + "label": ".test_http_route_returns_200()", "file_type": "code", - "source_file": "tests/test_thread_safety.py", - "source_location": "L98", - "community": 122, - "norm_label": ".test_emit_submits_to_executor()", - "id": "tests_test_thread_safety_testdiscordhandlerthreadpool_test_emit_submits_to_executor" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1257", + "community": 22, + "norm_label": ".test_http_route_returns_200()", + "id": "tests_test_stocks_api_coverage_testquerylivecotation_test_http_route_returns_200" }, { - "label": ".test_concurrent_emits_do_not_spawn_unbounded_threads()", + "label": ".test_http_route_search_required()", "file_type": "code", - "source_file": "tests/test_thread_safety.py", - "source_location": "L128", - "community": 122, - "norm_label": ".test_concurrent_emits_do_not_spawn_unbounded_threads()", - "id": "tests_test_thread_safety_testdiscordhandlerthreadpool_test_concurrent_emits_do_not_spawn_unbounded_threads" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1265", + "community": 587, + "norm_label": ".test_http_route_search_required()", + "id": "tests_test_stocks_api_coverage_testquerylivecotation_test_http_route_search_required" }, { - "label": "TestConcurrentGetSession", + "label": ".test_cotations_filter_cotation_column_filters_by_date()", "file_type": "code", - "source_file": "tests/test_thread_safety.py", - "source_location": "L175", - "community": 172, - "norm_label": "testconcurrentgetsession", - "id": "tests_test_thread_safety_testconcurrentgetsession" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1271", + "community": 22, + "norm_label": ".test_cotations_filter_cotation_column_filters_by_date()", + "id": "tests_test_stocks_api_coverage_testquerylivecotation_test_cotations_filter_cotation_column_filters_by_date" }, { - "label": ".test_getSession_returns_thread_local_sessions()", + "label": ".test_cotations_filter_cotation_column_range()", "file_type": "code", - "source_file": "tests/test_thread_safety.py", - "source_location": "L178", - "community": 172, - "norm_label": ".test_getsession_returns_thread_local_sessions()", - "id": "tests_test_thread_safety_testconcurrentgetsession_test_getsession_returns_thread_local_sessions" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1287", + "community": 22, + "norm_label": ".test_cotations_filter_cotation_column_range()", + "id": "tests_test_stocks_api_coverage_testquerylivecotation_test_cotations_filter_cotation_column_range" }, { - "label": ".test_connectivity_uses_getSession()", + "label": ".test_cotations_filter_cotation_column_handles_non_list()", "file_type": "code", - "source_file": "tests/test_thread_safety.py", - "source_location": "L199", - "community": 172, - "norm_label": ".test_connectivity_uses_getsession()", - "id": "tests_test_thread_safety_testconcurrentgetsession_test_connectivity_uses_getsession" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1304", + "community": 22, + "norm_label": ".test_cotations_filter_cotation_column_handles_non_list()", + "id": "tests_test_stocks_api_coverage_testquerylivecotation_test_cotations_filter_cotation_column_handles_non_list" }, { - "label": "Tests for thread safety utilities (Issues 5 & 6). Issue 5: DiscordHandler use", - "file_type": "rationale", - "source_file": "tests/test_thread_safety.py", - "source_location": "L1", - "community": 172, - "norm_label": "tests for thread safety utilities (issues 5 & 6). issue 5: discordhandler use", - "id": "tests_test_thread_safety_rationale_1" + "label": ".test_cotations_search_required()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1315", + "community": 22, + "norm_label": ".test_cotations_search_required()", + "id": "tests_test_stocks_api_coverage_testquerylivecotation_test_cotations_search_required" }, { - "label": "Verify that getSession() returns per-thread Session instances.", + "label": "Tests to increase coverage for query.py, key.py, and cache.py in stocks_api.", "file_type": "rationale", - "source_file": "tests/test_thread_safety.py", - "source_location": "L22", - "community": 137, - "norm_label": "verify that getsession() returns per-thread session instances.", - "id": "tests_test_thread_safety_rationale_22" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1", + "community": 500, + "norm_label": "tests to increase coverage for query.py, key.py, and cache.py in stocks_api.", + "id": "tests_test_stocks_api_coverage_rationale_1" }, { - "label": "Calling getSession() twice in the same thread returns the same object.", + "label": "Return a small DataFrame with the columns the query module expects.", "file_type": "rationale", - "source_file": "tests/test_thread_safety.py", - "source_location": "L25", - "community": 137, - "norm_label": "calling getsession() twice in the same thread returns the same object.", - "id": "tests_test_thread_safety_rationale_25" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L24", + "community": 3, + "norm_label": "return a small dataframe with the columns the query module expects.", + "id": "tests_test_stocks_api_coverage_rationale_24" }, { - "label": "Two threads must NOT share a Session object.", + "label": "Tests covering cache.py lines 28-76.", "file_type": "rationale", - "source_file": "tests/test_thread_safety.py", - "source_location": "L33", - "community": 137, - "norm_label": "two threads must not share a session object.", - "id": "tests_test_thread_safety_rationale_33" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L44", + "community": 3, + "norm_label": "tests covering cache.py lines 28-76.", + "id": "tests_test_stocks_api_coverage_rationale_44" }, { - "label": "With 20 concurrent threads, every thread must get its own Session.", + "label": "Tests covering key.py lines 15-40. Uses asyncio.run() since pytest-asyncio", "file_type": "rationale", - "source_file": "tests/test_thread_safety.py", - "source_location": "L53", - "community": 137, - "norm_label": "with 20 concurrent threads, every thread must get its own session.", - "id": "tests_test_thread_safety_rationale_53" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L153", + "community": 571, + "norm_label": "tests covering key.py lines 15-40. uses asyncio.run() since pytest-asyncio", + "id": "tests_test_stocks_api_coverage_rationale_153" }, { - "label": "The returned object must be a real requests.Session.", + "label": "When KEY.SYSTEM is falsy, return None (line 16).", "file_type": "rationale", - "source_file": "tests/test_thread_safety.py", - "source_location": "L74", - "community": 137, - "norm_label": "the returned object must be a real requests.session.", - "id": "tests_test_thread_safety_rationale_74" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L158", + "community": 311, + "norm_label": "when key.system is falsy, return none (line 16).", + "id": "tests_test_stocks_api_coverage_rationale_158" }, { - "label": "Verify that DiscordHandler submits to a bounded executor, not raw threads.", + "label": "When key is required but not provided (line 19).", "file_type": "rationale", - "source_file": "tests/test_thread_safety.py", - "source_location": "L88", - "community": 122, - "norm_label": "verify that discordhandler submits to a bounded executor, not raw threads.", - "id": "tests_test_thread_safety_rationale_88" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L169", + "community": 312, + "norm_label": "when key is required but not provided (line 19).", + "id": "tests_test_stocks_api_coverage_rationale_169" }, { - "label": "The module-level discordExecutor must exist with max_workers <= 5.", + "label": "When atomic UPDATE returns 0 rows and query finds no key -> 401.", "file_type": "rationale", - "source_file": "tests/test_thread_safety.py", - "source_location": "L91", - "community": 122, - "norm_label": "the module-level discordexecutor must exist with max_workers <= 5.", - "id": "tests_test_thread_safety_rationale_91" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L182", + "community": 313, + "norm_label": "when atomic update returns 0 rows and query finds no key -> 401.", + "id": "tests_test_stocks_api_coverage_rationale_182" }, { - "label": "DiscordHandler.emit() must use discordExecutor.submit, not Thread.start.", + "label": "When atomic UPDATE returns 0 rows and query finds key at limit -> 429.", "file_type": "rationale", - "source_file": "tests/test_thread_safety.py", - "source_location": "L99", - "community": 122, - "norm_label": "discordhandler.emit() must use discordexecutor.submit, not thread.start.", - "id": "tests_test_thread_safety_rationale_99" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L199", + "community": 314, + "norm_label": "when atomic update returns 0 rows and query finds key at limit -> 429.", + "id": "tests_test_stocks_api_coverage_rationale_199" }, { - "label": "Many concurrent emit() calls must not create more threads than max_workers.", + "label": "Happy path: atomic UPDATE succeeds, returns key (lines 22-33).", "file_type": "rationale", - "source_file": "tests/test_thread_safety.py", - "source_location": "L129", - "community": 122, - "norm_label": "many concurrent emit() calls must not create more threads than max_workers.", - "id": "tests_test_thread_safety_rationale_129" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L217", + "community": 315, + "norm_label": "happy path: atomic update succeeds, returns key (lines 22-33).", + "id": "tests_test_stocks_api_coverage_rationale_217" }, { - "label": "Verify getSession returns thread-local sessions under concurrency.", + "label": "HTTPException should cause rollback then re-raise (lines 35-37).", "file_type": "rationale", - "source_file": "tests/test_thread_safety.py", - "source_location": "L176", - "community": 172, - "norm_label": "verify getsession returns thread-local sessions under concurrency.", - "id": "tests_test_thread_safety_rationale_176" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L231", + "community": 316, + "norm_label": "httpexception should cause rollback then re-raise (lines 35-37).", + "id": "tests_test_stocks_api_coverage_rationale_231" }, { - "label": "getSession() must give each thread its own Session.", + "label": "Generic DB exception should rollback and raise 500 (lines 38-40).", "file_type": "rationale", - "source_file": "tests/test_thread_safety.py", - "source_location": "L179", - "community": 172, - "norm_label": "getsession() must give each thread its own session.", - "id": "tests_test_thread_safety_rationale_179" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L250", + "community": 317, + "norm_label": "generic db exception should rollback and raise 500 (lines 38-40).", + "id": "tests_test_stocks_api_coverage_rationale_250" }, { - "label": "connectivity.checkServiceConnection must call getSession(), not use a global Ses", + "label": "Tests covering key.py line 44.", "file_type": "rationale", - "source_file": "tests/test_thread_safety.py", - "source_location": "L200", - "community": 172, - "norm_label": "connectivity.checkserviceconnection must call getsession(), not use a global ses", - "id": "tests_test_thread_safety_rationale_200" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L265", + "community": 141, + "norm_label": "tests covering key.py line 44.", + "id": "tests_test_stocks_api_coverage_rationale_265" }, { - "label": "test_type_aware_decay.py", - "file_type": "code", - "source_file": "tests/test_type_aware_decay.py", - "source_location": "L1", - "community": 488, - "norm_label": "test_type_aware_decay.py", - "id": "tests_test_type_aware_decay_py" + "label": "Tests covering key.py lines 48-66.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L288", + "community": 565, + "norm_label": "tests covering key.py lines 48-66.", + "id": "tests_test_stocks_api_coverage_rationale_288" }, { - "label": "_create()", - "file_type": "code", - "source_file": "tests/test_type_aware_decay.py", - "source_location": "L11", - "community": 488, - "norm_label": "_create()", - "id": "tests_test_type_aware_decay_create" + "label": "New key created when no existing key for user (lines 57-59).", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L292", + "community": 318, + "norm_label": "new key created when no existing key for user (lines 57-59).", + "id": "tests_test_stocks_api_coverage_rationale_292" }, { - "label": "TestTypeAwareDecay", - "file_type": "code", - "source_file": "tests/test_type_aware_decay.py", - "source_location": "L29", - "community": 488, - "norm_label": "testtypeawaredecay", - "id": "tests_test_type_aware_decay_testtypeawaredecay" + "label": "Existing key is updated (lines 54-56).", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L307", + "community": 319, + "norm_label": "existing key is updated (lines 54-56).", + "id": "tests_test_stocks_api_coverage_rationale_307" }, { - "label": ".test_preference_decays_slowly()", - "file_type": "code", - "source_file": "tests/test_type_aware_decay.py", - "source_location": "L30", - "community": 488, - "norm_label": ".test_preference_decays_slowly()", - "id": "tests_test_type_aware_decay_testtypeawaredecay_test_preference_decays_slowly" + "label": "Exception during creation triggers rollback and 500 (lines 64-66).", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L324", + "community": 320, + "norm_label": "exception during creation triggers rollback and 500 (lines 64-66).", + "id": "tests_test_stocks_api_coverage_rationale_324" }, { - "label": ".test_context_decays_fast()", - "file_type": "code", - "source_file": "tests/test_type_aware_decay.py", - "source_location": "L36", - "community": 488, - "norm_label": ".test_context_decays_fast()", - "id": "tests_test_type_aware_decay_testtypeawaredecay_test_context_decays_fast" + "label": "Tests covering query.py lines 22-48.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L342", + "community": 3, + "norm_label": "tests covering query.py lines 22-48.", + "id": "tests_test_stocks_api_coverage_rationale_342" }, { - "label": ".test_analysis_decays_normally()", - "file_type": "code", - "source_file": "tests/test_type_aware_decay.py", - "source_location": "L42", - "community": 488, - "norm_label": ".test_analysis_decays_normally()", - "id": "tests_test_type_aware_decay_testtypeawaredecay_test_analysis_decays_normally" + "label": "replaceNan handles direct float NaN values (line 34).", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L420", + "community": 577, + "norm_label": "replacenan handles direct float nan values (line 34).", + "id": "tests_test_stocks_api_coverage_rationale_420" }, { - "label": ".test_feedback_decays_medium()", - "file_type": "code", - "source_file": "tests/test_type_aware_decay.py", - "source_location": "L48", - "community": 488, - "norm_label": ".test_feedback_decays_medium()", - "id": "tests_test_type_aware_decay_testtypeawaredecay_test_feedback_decays_medium" + "label": "Non-JSON-dict/list string is left as-is.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L434", + "community": 566, + "norm_label": "non-json-dict/list string is left as-is.", + "id": "tests_test_stocks_api_coverage_rationale_434" }, { - "label": ".test_unknown_type_uses_default()", - "file_type": "code", - "source_file": "tests/test_type_aware_decay.py", - "source_location": "L54", - "community": 488, - "norm_label": ".test_unknown_type_uses_default()", - "id": "tests_test_type_aware_decay_testtypeawaredecay_test_unknown_type_uses_default" + "label": "pd.NA is not a string, so lambda returns it unchanged.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L443", + "community": 520, + "norm_label": "pd.na is not a string, so lambda returns it unchanged.", + "id": "tests_test_stocks_api_coverage_rationale_443" }, { - "label": ".test_mixed_types_all_correct()", - "file_type": "code", - "source_file": "tests/test_type_aware_decay.py", - "source_location": "L60", - "community": 488, - "norm_label": ".test_mixed_types_all_correct()", - "id": "tests_test_type_aware_decay_testtypeawaredecay_test_mixed_types_all_correct" + "label": "Regression: is_string_dtype fails when column has strings + None (pandas 2.x).", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L452", + "community": 86, + "norm_label": "regression: is_string_dtype fails when column has strings + none (pandas 2.x).", + "id": "tests_test_stocks_api_coverage_rationale_452" }, { - "label": ".test_preference_survives_longer()", - "file_type": "code", - "source_file": "tests/test_type_aware_decay.py", - "source_location": "L76", - "community": 488, - "norm_label": ".test_preference_survives_longer()", - "id": "tests_test_type_aware_decay_testtypeawaredecay_test_preference_survives_longer" + "label": "All four SPECIAL_COLS should parse correctly when mixed with None.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L474", + "community": 520, + "norm_label": "all four special_cols should parse correctly when mixed with none.", + "id": "tests_test_stocks_api_coverage_rationale_474" }, { - "label": "After 10 cycles, preference (0.99^10) > context (0.90^10).", + "label": "Tests covering query.py lines 50-67.", "file_type": "rationale", - "source_file": "tests/test_type_aware_decay.py", - "source_location": "L77", - "community": 488, - "norm_label": "after 10 cycles, preference (0.99^10) > context (0.90^10).", - "id": "tests_test_type_aware_decay_rationale_77" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L499", + "community": 86, + "norm_label": "tests covering query.py lines 50-67.", + "id": "tests_test_stocks_api_coverage_rationale_499" }, { - "label": "test_user_deps.py", - "file_type": "code", - "source_file": "tests/test_user_deps.py", - "source_location": "L1", - "community": 500, - "norm_label": "test_user_deps.py", - "id": "tests_test_user_deps_py" + "label": "Tests covering query.py lines 77-132.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L554", + "community": 28, + "norm_label": "tests covering query.py lines 77-132.", + "id": "tests_test_stocks_api_coverage_rationale_554" }, { - "label": "TestExtractTokenPayload", - "file_type": "code", - "source_file": "tests/test_user_deps.py", - "source_location": "L11", - "community": 98, - "norm_label": "testextracttokenpayload", - "id": "tests_test_user_deps_testextracttokenpayload" + "label": "Pass field name WITHOUT year (how categorizeColumns returns them).", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L592", + "community": 28, + "norm_label": "pass field name without year (how categorizecolumns returns them).", + "id": "tests_test_stocks_api_coverage_rationale_592" }, { - "label": "._make_request()", - "file_type": "code", - "source_file": "tests/test_user_deps.py", - "source_location": "L14", - "community": 98, - "norm_label": "._make_request()", - "id": "tests_test_user_deps_testextracttokenpayload_make_request" + "label": "No historical data columns -> inner 400 caught by outer except -> 500.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L618", + "community": 28, + "norm_label": "no historical data columns -> inner 400 caught by outer except -> 500.", + "id": "tests_test_stocks_api_coverage_rationale_618" }, { - "label": ".test_missing_token_raises_401()", - "file_type": "code", - "source_file": "tests/test_user_deps.py", - "source_location": "L19", - "community": 98, - "norm_label": ".test_missing_token_raises_401()", - "id": "tests_test_user_deps_testextracttokenpayload_test_missing_token_raises_401" + "label": "If an unexpected exception occurs in queryHistorical.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L643", + "community": 28, + "norm_label": "if an unexpected exception occurs in queryhistorical.", + "id": "tests_test_stocks_api_coverage_rationale_643" }, { - "label": ".test_x_access_token_header_used()", - "file_type": "code", - "source_file": "tests/test_user_deps.py", - "source_location": "L28", - "community": 98, - "norm_label": ".test_x_access_token_header_used()", - "id": "tests_test_user_deps_testextracttokenpayload_test_x_access_token_header_used" + "label": "Invalid date format raises exception (line 132).", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L661", + "community": 543, + "norm_label": "invalid date format raises exception (line 132).", + "id": "tests_test_stocks_api_coverage_rationale_661" }, { - "label": ".test_authorization_bearer_header_used()", - "file_type": "code", - "source_file": "tests/test_user_deps.py", - "source_location": "L38", - "community": 98, - "norm_label": ".test_authorization_bearer_header_used()", - "id": "tests_test_user_deps_testextracttokenpayload_test_authorization_bearer_header_used" + "label": "No historical columns at all -> inner 400 caught by outer except -> 500.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L677", + "community": 127, + "norm_label": "no historical columns at all -> inner 400 caught by outer except -> 500.", + "id": "tests_test_stocks_api_coverage_rationale_677" }, { - "label": ".test_x_access_token_takes_priority_over_bearer()", - "file_type": "code", - "source_file": "tests/test_user_deps.py", - "source_location": "L48", - "community": 98, - "norm_label": ".test_x_access_token_takes_priority_over_bearer()", - "id": "tests_test_user_deps_testextracttokenpayload_test_x_access_token_takes_priority_over_bearer" + "label": "Historical query with a year range.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L687", + "community": 28, + "norm_label": "historical query with a year range.", + "id": "tests_test_stocks_api_coverage_rationale_687" }, { - "label": ".test_invalid_token_raises_401()", - "file_type": "code", - "source_file": "tests/test_user_deps.py", - "source_location": "L58", - "community": 98, - "norm_label": ".test_invalid_token_raises_401()", - "id": "tests_test_user_deps_testextracttokenpayload_test_invalid_token_raises_401" + "label": "Multiple search terms, all found in tickerIndex.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L694", + "community": 28, + "norm_label": "multiple search terms, all found in tickerindex.", + "id": "tests_test_stocks_api_coverage_rationale_694" }, { - "label": ".test_empty_user_id_raises_401()", - "file_type": "code", - "source_file": "tests/test_user_deps.py", - "source_location": "L68", - "community": 98, - "norm_label": ".test_empty_user_id_raises_401()", - "id": "tests_test_user_deps_testextracttokenpayload_test_empty_user_id_raises_401" + "label": "Calling with all None returns 400.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L702", + "community": 112, + "norm_label": "calling with all none returns 400.", + "id": "tests_test_stocks_api_coverage_rationale_702" }, { - "label": ".test_empty_bearer_value_raises_401()", - "file_type": "code", - "source_file": "tests/test_user_deps.py", - "source_location": "L77", - "community": 98, - "norm_label": ".test_empty_bearer_value_raises_401()", - "id": "tests_test_user_deps_testextracttokenpayload_test_empty_bearer_value_raises_401" + "label": "Tests covering query.py lines 142-202.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L713", + "community": 112, + "norm_label": "tests covering query.py lines 142-202.", + "id": "tests_test_stocks_api_coverage_rationale_713" }, { - "label": ".test_non_bearer_auth_header_raises_401()", - "file_type": "code", - "source_file": "tests/test_user_deps.py", - "source_location": "L86", - "community": 98, - "norm_label": ".test_non_bearer_auth_header_raises_401()", - "id": "tests_test_user_deps_testextracttokenpayload_test_non_bearer_auth_header_raises_401" + "label": "Invalid date -> inner 400 passes through (not wrapped as 500).", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L767", + "community": 39, + "norm_label": "invalid date -> inner 400 passes through (not wrapped as 500).", + "id": "tests_test_stocks_api_coverage_rationale_767" }, { - "label": "Tests for extractTokenPayload \u2014 the standalone token extraction dependency.", + "label": "search.strip() == '' should still dedup (line 181).", "file_type": "rationale", - "source_file": "tests/test_user_deps.py", - "source_location": "L12", - "community": 98, - "norm_label": "tests for extracttokenpayload \u2014 the standalone token extraction dependency.", - "id": "tests_test_user_deps_rationale_12" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L820", + "community": 39, + "norm_label": "search.strip() == '' should still dedup (line 181).", + "id": "tests_test_stocks_api_coverage_rationale_820" }, { - "label": "Create a mock Starlette Request with given headers.", + "label": "DataFrame without TIME column.", "file_type": "rationale", - "source_file": "tests/test_user_deps.py", - "source_location": "L15", - "community": 98, - "norm_label": "create a mock starlette request with given headers.", - "id": "tests_test_user_deps_rationale_15" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L829", + "community": 39, + "norm_label": "dataframe without time column.", + "id": "tests_test_stocks_api_coverage_rationale_829" }, { - "label": "Authorization: Bearer (empty) \u2014 no token after Bearer.", + "label": "Two dates in the range, both valid.", "file_type": "rationale", - "source_file": "tests/test_user_deps.py", - "source_location": "L78", - "community": 98, - "norm_label": "authorization: bearer (empty) \u2014 no token after bearer.", - "id": "tests_test_user_deps_rationale_78" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L842", + "community": 17, + "norm_label": "two dates in the range, both valid.", + "id": "tests_test_stocks_api_coverage_rationale_842" }, { - "label": "Authorization: Basic xxx \u2014 not Bearer, so no token found.", + "label": "Single invalid date -> inner 400 passes through.", "file_type": "rationale", - "source_file": "tests/test_user_deps.py", - "source_location": "L87", - "community": 98, - "norm_label": "authorization: basic xxx \u2014 not bearer, so no token found.", - "id": "tests_test_user_deps_rationale_87" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L856", + "community": 46, + "norm_label": "single invalid date -> inner 400 passes through.", + "id": "tests_test_stocks_api_coverage_rationale_856" }, { - "label": "test_vector_utils.py", - "file_type": "code", - "source_file": "tests/test_vector_utils.py", - "source_location": "L1", - "community": 131, - "norm_label": "test_vector_utils.py", - "id": "tests_test_vector_utils_py" + "label": "Invalid fields now raise 400 with actionable error message.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L866", + "community": 46, + "norm_label": "invalid fields now raise 400 with actionable error message.", + "id": "tests_test_stocks_api_coverage_rationale_866" }, { - "label": "TestBatchCosineSimilarity", - "file_type": "code", - "source_file": "tests/test_vector_utils.py", - "source_location": "L6", - "community": 13, - "norm_label": "testbatchcosinesimilarity", - "id": "tests_test_vector_utils_testbatchcosinesimilarity" + "label": "Multiple search terms with tickerIndex.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L883", + "community": 39, + "norm_label": "multiple search terms with tickerindex.", + "id": "tests_test_stocks_api_coverage_rationale_883" }, { - "label": ".test_empty_matrix()", - "file_type": "code", - "source_file": "tests/test_vector_utils.py", - "source_location": "L7", - "community": 13, - "norm_label": ".test_empty_matrix()", - "id": "tests_test_vector_utils_testbatchcosinesimilarity_test_empty_matrix" + "label": "Search with no index match falls back to string startswith.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L891", + "community": 17, + "norm_label": "search with no index match falls back to string startswith.", + "id": "tests_test_stocks_api_coverage_rationale_891" }, { - "label": ".test_single_row()", - "file_type": "code", - "source_file": "tests/test_vector_utils.py", - "source_location": "L11", - "community": 13, - "norm_label": ".test_single_row()", - "id": "tests_test_vector_utils_testbatchcosinesimilarity_test_single_row" + "label": "len(dateRange) == 1 -> per-ticker closest snapshot.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L899", + "community": 17, + "norm_label": "len(daterange) == 1 -> per-ticker closest snapshot.", + "id": "tests_test_stocks_api_coverage_rationale_899" }, { - "label": ".test_multiple_rows()", - "file_type": "code", - "source_file": "tests/test_vector_utils.py", - "source_location": "L17", - "community": 13, - "norm_label": ".test_multiple_rows()", - "id": "tests_test_vector_utils_testbatchcosinesimilarity_test_multiple_rows" + "label": "COTACAO 10Y PADRAO and COTACAO 10Y AJUSTADA belong to /cotations, not /fundament", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L914", + "community": 112, + "norm_label": "cotacao 10y padrao and cotacao 10y ajustada belong to /cotations, not /fundament", + "id": "tests_test_stocks_api_coverage_rationale_914" }, { - "label": ".test_zero_query()", - "file_type": "code", - "source_file": "tests/test_vector_utils.py", - "source_location": "L32", - "community": 13, - "norm_label": ".test_zero_query()", - "id": "tests_test_vector_utils_testbatchcosinesimilarity_test_zero_query" + "label": "Regression: queryFundamental must not mutate the shared cache TIME column.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L941", + "community": 46, + "norm_label": "regression: queryfundamental must not mutate the shared cache time column.", + "id": "tests_test_stocks_api_coverage_rationale_941" }, { - "label": "TestContentHash", - "file_type": "code", - "source_file": "tests/test_vector_utils.py", - "source_location": "L38", - "community": 131, - "norm_label": "testcontenthash", - "id": "tests_test_vector_utils_testcontenthash" + "label": "Tests for queryCotations and /stocks/cotations.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L984", + "community": 10, + "norm_label": "tests for querycotations and /stocks/cotations.", + "id": "tests_test_stocks_api_coverage_rationale_984" }, { - "label": ".test_deterministic()", - "file_type": "code", - "source_file": "tests/test_vector_utils.py", - "source_location": "L39", - "community": 131, - "norm_label": ".test_deterministic()", - "id": "tests_test_vector_utils_testcontenthash_test_deterministic" + "label": "2 tickers x 2 rows. Rows 0,2 are 2024-01-15; rows 1,3 are 2024-06-15. M", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L996", + "community": 10, + "norm_label": "2 tickers x 2 rows. rows 0,2 are 2024-01-15; rows 1,3 are 2024-06-15. m", + "id": "tests_test_stocks_api_coverage_rationale_996" }, { - "label": ".test_different_inputs()", - "file_type": "code", - "source_file": "tests/test_vector_utils.py", - "source_location": "L42", - "community": 131, - "norm_label": ".test_different_inputs()", - "id": "tests_test_vector_utils_testcontenthash_test_different_inputs" + "label": "4 rows for 2 tickers -> 2 results, one per ticker, both with latest TIME.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1042", + "community": 10, + "norm_label": "4 rows for 2 tickers -> 2 results, one per ticker, both with latest time.", + "id": "tests_test_stocks_api_coverage_rationale_1042" }, { - "label": ".test_hex_format()", - "file_type": "code", - "source_file": "tests/test_vector_utils.py", - "source_location": "L45", - "community": 131, - "norm_label": ".test_hex_format()", - "id": "tests_test_vector_utils_testcontenthash_test_hex_format" + "label": "dates=\"2016-12-02\" should keep only the 02-12-2016 entry in each JSON list.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1054", + "community": 10, + "norm_label": "dates=\"2016-12-02\" should keep only the 02-12-2016 entry in each json list.", + "id": "tests_test_stocks_api_coverage_rationale_1054" }, { - "label": "README.md", - "file_type": "document", - "source_file": "main/utils/models/all-MiniLM-L6-v2/README.md", - "source_location": "L1", - "community": 108, - "norm_label": "readme.md", - "id": "main_utils_models_all_minilm_l6_v2_readme_md" + "label": "Hit the actual /stocks/cotations HTTP endpoint with adjusted=false.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1140", + "community": 10, + "norm_label": "hit the actual /stocks/cotations http endpoint with adjusted=false.", + "id": "tests_test_stocks_api_coverage_rationale_1140" }, { - "label": "all-MiniLM-L6-v2", - "file_type": "document", - "source_file": "main/utils/models/all-MiniLM-L6-v2/README.md", - "source_location": "L38", - "community": 108, - "norm_label": "all-minilm-l6-v2", - "id": "all_minilm_l6_v2_readme_all_minilm_l6_v2" + "label": "Tests for queryLiveCotation and /stocks/cotations/live.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1167", + "community": 22, + "norm_label": "tests for querylivecotation and /stocks/cotations/live.", + "id": "tests_test_stocks_api_coverage_rationale_1167" }, { - "label": "Usage (Sentence-Transformers)", - "file_type": "document", - "source_file": "main/utils/models/all-MiniLM-L6-v2/README.md", - "source_location": "L41", - "community": 108, - "norm_label": "usage (sentence-transformers)", - "id": "all_minilm_l6_v2_readme_usage_sentence_transformers" + "label": "GET /stocks/realtime-cotation without search returns 422.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1266", + "community": 587, + "norm_label": "get /stocks/realtime-cotation without search returns 422.", + "id": "tests_test_stocks_api_coverage_rationale_1266" }, { - "label": "code:block1 (pip install -U sentence-transformers)", - "file_type": "document", - "source_file": "main/utils/models/all-MiniLM-L6-v2/README.md", - "source_location": "L44", - "community": 108, - "norm_label": "code:block1 (pip install -u sentence-transformers)", - "id": "all_minilm_l6_v2_readme_codeblock_1" + "label": "GET /cotations without search returns 422.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1316", + "community": 22, + "norm_label": "get /cotations without search returns 422.", + "id": "tests_test_stocks_api_coverage_rationale_1316" }, { - "label": "code:python (from sentence_transformers import SentenceTransformer)", - "file_type": "document", - "source_file": "main/utils/models/all-MiniLM-L6-v2/README.md", - "source_location": "L49", - "community": 108, - "norm_label": "code:python (from sentence_transformers import sentencetransformer)", - "id": "all_minilm_l6_v2_readme_codeblock_2" + "label": "test_stocks_api_fields.py", + "file_type": "code", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L1", + "community": 129, + "norm_label": "test_stocks_api_fields.py", + "id": "tests_test_stocks_api_fields_py" }, { - "label": "Usage (HuggingFace Transformers)", - "file_type": "document", - "source_file": "main/utils/models/all-MiniLM-L6-v2/README.md", - "source_location": "L58", - "community": 108, - "norm_label": "usage (huggingface transformers)", - "id": "all_minilm_l6_v2_readme_usage_huggingface_transformers" + "label": "TestFieldRegexPattern", + "file_type": "code", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L15", + "community": 128, + "norm_label": "testfieldregexpattern", + "id": "tests_test_stocks_api_fields_testfieldregexpattern" }, { - "label": "code:python (from transformers import AutoTokenizer, AutoModel)", - "file_type": "document", - "source_file": "main/utils/models/all-MiniLM-L6-v2/README.md", - "source_location": "L61", - "community": 108, - "norm_label": "code:python (from transformers import autotokenizer, automodel)", - "id": "all_minilm_l6_v2_readme_codeblock_3" + "label": ".test_slash_in_field_name()", + "file_type": "code", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L18", + "community": 128, + "norm_label": ".test_slash_in_field_name()", + "id": "tests_test_stocks_api_fields_testfieldregexpattern_test_slash_in_field_name" }, { - "label": "Background", - "file_type": "document", - "source_file": "main/utils/models/all-MiniLM-L6-v2/README.md", - "source_location": "L99", - "community": 108, - "norm_label": "background", - "id": "all_minilm_l6_v2_readme_background" + "label": ".test_dot_in_field_name()", + "file_type": "code", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L22", + "community": 254, + "norm_label": ".test_dot_in_field_name()", + "id": "tests_test_stocks_api_fields_testfieldregexpattern_test_dot_in_field_name" }, { - "label": "Intended uses", - "file_type": "document", - "source_file": "main/utils/models/all-MiniLM-L6-v2/README.md", - "source_location": "L110", - "community": 108, - "norm_label": "intended uses", - "id": "all_minilm_l6_v2_readme_intended_uses" + "label": ".test_slash_and_dot_combined()", + "file_type": "code", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L26", + "community": 128, + "norm_label": ".test_slash_and_dot_combined()", + "id": "tests_test_stocks_api_fields_testfieldregexpattern_test_slash_and_dot_combined" }, { - "label": "Training procedure", - "file_type": "document", - "source_file": "main/utils/models/all-MiniLM-L6-v2/README.md", - "source_location": "L118", - "community": 108, - "norm_label": "training procedure", - "id": "all_minilm_l6_v2_readme_training_procedure" + "label": ".test_normal_field_still_works()", + "file_type": "code", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L30", + "community": 255, + "norm_label": ".test_normal_field_still_works()", + "id": "tests_test_stocks_api_fields_testfieldregexpattern_test_normal_field_still_works" }, { - "label": "Pre-training", - "file_type": "document", - "source_file": "main/utils/models/all-MiniLM-L6-v2/README.md", - "source_location": "L120", - "community": 108, - "norm_label": "pre-training", - "id": "all_minilm_l6_v2_readme_pre_training" + "label": ".test_comma_separated_with_slash()", + "file_type": "code", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L34", + "community": 252, + "norm_label": ".test_comma_separated_with_slash()", + "id": "tests_test_stocks_api_fields_testfieldregexpattern_test_comma_separated_with_slash" }, { - "label": "Fine-tuning", - "file_type": "document", - "source_file": "main/utils/models/all-MiniLM-L6-v2/README.md", - "source_location": "L124", - "community": 108, - "norm_label": "fine-tuning", - "id": "all_minilm_l6_v2_readme_fine_tuning" + "label": ".test_rejects_script_injection()", + "file_type": "code", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L38", + "community": 253, + "norm_label": ".test_rejects_script_injection()", + "id": "tests_test_stocks_api_fields_testfieldregexpattern_test_rejects_script_injection" }, { - "label": "Hyper parameters", - "file_type": "document", - "source_file": "main/utils/models/all-MiniLM-L6-v2/README.md", - "source_location": "L129", - "community": 108, - "norm_label": "hyper parameters", - "id": "all_minilm_l6_v2_readme_hyper_parameters" + "label": "TestFundamentalFieldValidation", + "file_type": "code", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L49", + "community": 129, + "norm_label": "testfundamentalfieldvalidation", + "id": "tests_test_stocks_api_fields_testfundamentalfieldvalidation" }, { - "label": "Training data", - "file_type": "document", - "source_file": "main/utils/models/all-MiniLM-L6-v2/README.md", - "source_location": "L135", - "community": 108, - "norm_label": "training data", - "id": "all_minilm_l6_v2_readme_training_data" + "label": ".test_pslashl_not_422()", + "file_type": "code", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L52", + "community": 129, + "norm_label": ".test_pslashl_not_422()", + "id": "tests_test_stocks_api_fields_testfundamentalfieldvalidation_test_pslashl_not_422" }, { - "label": "ToolCard()", + "label": ".test_dot_field_not_422()", "file_type": "code", - "source_file": "frontend/src/components/AgentLoop.jsx", - "source_location": "L3", - "community": 150, - "norm_label": "toolcard()", - "id": "components_agentloop_toolcard" + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L57", + "community": 167, + "norm_label": ".test_dot_field_not_422()", + "id": "tests_test_stocks_api_fields_testfundamentalfieldvalidation_test_dot_field_not_422" }, { - "label": "2026-07-17-observable-agent-loop.md", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-observable-agent-loop.md", - "source_location": "L1", - "community": 70, - "norm_label": "2026-07-17-observable-agent-loop.md", - "id": "docs_superpowers_plans_2026_07_17_observable_agent_loop_md" + "label": ".test_mixed_fields_not_422()", + "file_type": "code", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L62", + "community": 166, + "norm_label": ".test_mixed_fields_not_422()", + "id": "tests_test_stocks_api_fields_testfundamentalfieldvalidation_test_mixed_fields_not_422" }, { - "label": "Observable Agent Loop \u2014 Implementation Plan", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-observable-agent-loop.md", - "source_location": "L1", - "community": 70, - "norm_label": "observable agent loop \u2014 implementation plan", - "id": "plans_2026_07_17_observable_agent_loop_observable_agent_loop_implementation_plan" + "label": "TestHistoricalFieldValidation", + "file_type": "code", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L68", + "community": 191, + "norm_label": "testhistoricalfieldvalidation", + "id": "tests_test_stocks_api_fields_testhistoricalfieldvalidation" }, { - "label": "Context", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-observable-agent-loop.md", - "source_location": "L13", - "community": 70, - "norm_label": "context", - "id": "plans_2026_07_17_observable_agent_loop_context" + "label": ".test_pslashl_not_422()", + "file_type": "code", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L71", + "community": 191, + "norm_label": ".test_pslashl_not_422()", + "id": "tests_test_stocks_api_fields_testhistoricalfieldvalidation_test_pslashl_not_422" }, { - "label": "Current State", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-observable-agent-loop.md", - "source_location": "L15", - "community": 70, - "norm_label": "current state", - "id": "plans_2026_07_17_observable_agent_loop_current_state" + "label": ".test_dot_field_not_422()", + "file_type": "code", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L76", + "community": 167, + "norm_label": ".test_dot_field_not_422()", + "id": "tests_test_stocks_api_fields_testhistoricalfieldvalidation_test_dot_field_not_422" }, { - "label": "What Changes", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-observable-agent-loop.md", - "source_location": "L22", - "community": 70, - "norm_label": "what changes", - "id": "plans_2026_07_17_observable_agent_loop_what_changes" + "label": ".test_comma_separated_with_slash_not_422()", + "file_type": "code", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L81", + "community": 166, + "norm_label": ".test_comma_separated_with_slash_not_422()", + "id": "tests_test_stocks_api_fields_testhistoricalfieldvalidation_test_comma_separated_with_slash_not_422" }, { - "label": "File Structure", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-observable-agent-loop.md", - "source_location": "L29", - "community": 70, - "norm_label": "file structure", - "id": "plans_2026_07_17_observable_agent_loop_file_structure" + "label": "TestFundamentalDateFiltering", + "file_type": "code", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L87", + "community": 179, + "norm_label": "testfundamentaldatefiltering", + "id": "tests_test_stocks_api_fields_testfundamentaldatefiltering" }, { - "label": "Task 1: Stream Tool Events via SSE", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-observable-agent-loop.md", - "source_location": "L40", - "community": 70, - "norm_label": "task 1: stream tool events via sse", - "id": "plans_2026_07_17_observable_agent_loop_task_1_stream_tool_events_via_sse" + "label": ".test_single_date_returns_per_ticker_closest()", + "file_type": "code", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L90", + "community": 179, + "norm_label": ".test_single_date_returns_per_ticker_closest()", + "id": "tests_test_stocks_api_fields_testfundamentaldatefiltering_test_single_date_returns_per_ticker_closest" }, { - "label": "code:python (for fc in function_calls:)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-observable-agent-loop.md", - "source_location": "L55", - "community": 70, - "norm_label": "code:python (for fc in function_calls:)", - "id": "plans_2026_07_17_observable_agent_loop_codeblock_1" + "label": "Tests for stocks API field validation \u2014 verifies the fields parameter accepts a", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L1", + "community": 129, + "norm_label": "tests for stocks api field validation \u2014 verifies the fields parameter accepts a", + "id": "tests_test_stocks_api_fields_rationale_1" }, { - "label": "code:python (turn_end_event = {)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-observable-agent-loop.md", - "source_location": "L88", - "community": 70, - "norm_label": "code:python (turn_end_event = {)", - "id": "plans_2026_07_17_observable_agent_loop_codeblock_2" + "label": "Direct tests on the regex pattern used for the `fields` query param.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L16", + "community": 128, + "norm_label": "direct tests on the regex pattern used for the `fields` query param.", + "id": "tests_test_stocks_api_fields_rationale_16" }, { - "label": "code:bash (git add main/app/prometheus/agent.py)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-observable-agent-loop.md", - "source_location": "L115", - "community": 70, - "norm_label": "code:bash (git add main/app/prometheus/agent.py)", - "id": "plans_2026_07_17_observable_agent_loop_codeblock_3" + "label": "P/L must be accepted \u2014 it's a standard valuation metric.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L19", + "community": 128, + "norm_label": "p/l must be accepted \u2014 it's a standard valuation metric.", + "id": "tests_test_stocks_api_fields_rationale_19" }, { - "label": "Task 2: Create the Testing Frontend", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-observable-agent-loop.md", - "source_location": "L122", - "community": 70, - "norm_label": "task 2: create the testing frontend", - "id": "plans_2026_07_17_observable_agent_loop_task_2_create_the_testing_frontend" + "label": "MARG. LIQUIDA must be accepted \u2014 returned by /stocks/fields.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L23", + "community": 254, + "norm_label": "marg. liquida must be accepted \u2014 returned by /stocks/fields.", + "id": "tests_test_stocks_api_fields_rationale_23" }, { - "label": "code:bash (mkdir -p main/app/prometheus/static)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-observable-agent-loop.md", - "source_location": "L133", - "community": 70, - "norm_label": "code:bash (mkdir -p main/app/prometheus/static)", - "id": "plans_2026_07_17_observable_agent_loop_codeblock_4" + "label": "P/VP and similar combos must be accepted.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L27", + "community": 128, + "norm_label": "p/vp and similar combos must be accepted.", + "id": "tests_test_stocks_api_fields_rationale_27" }, { - "label": "code:javascript (// Event types from the stream:)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-observable-agent-loop.md", - "source_location": "L148", - "community": 70, - "norm_label": "code:javascript (// event types from the stream:)", - "id": "plans_2026_07_17_observable_agent_loop_codeblock_5" + "label": "Basic fields like ROE must still pass.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L31", + "community": 255, + "norm_label": "basic fields like roe must still pass.", + "id": "tests_test_stocks_api_fields_rationale_31" }, { - "label": "code:python (from fastapi.responses import FileResponse)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-observable-agent-loop.md", - "source_location": "L193", - "community": 70, - "norm_label": "code:python (from fastapi.responses import fileresponse)", - "id": "plans_2026_07_17_observable_agent_loop_codeblock_6" + "label": "Comma-separated list containing slash fields must pass.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L35", + "community": 252, + "norm_label": "comma-separated list containing slash fields must pass.", + "id": "tests_test_stocks_api_fields_rationale_35" }, { - "label": "code:bash (git add main/app/prometheus/static/index.html main/controlle)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-observable-agent-loop.md", - "source_location": "L216", - "community": 70, - "norm_label": "code:bash (git add main/app/prometheus/static/index.html main/controlle)", - "id": "plans_2026_07_17_observable_agent_loop_codeblock_7" + "label": "Pattern must reject potential injection \u2014 no angle brackets.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L39", + "community": 253, + "norm_label": "pattern must reject potential injection \u2014 no angle brackets.", + "id": "tests_test_stocks_api_fields_rationale_39" }, { - "label": "Task 3: Verify End-to-End", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-observable-agent-loop.md", - "source_location": "L223", - "community": 70, - "norm_label": "task 3: verify end-to-end", - "id": "plans_2026_07_17_observable_agent_loop_task_3_verify_end_to_end" + "label": "Integration: /stocks/fundamental must accept slash and dot fields.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L50", + "community": 129, + "norm_label": "integration: /stocks/fundamental must accept slash and dot fields.", + "id": "tests_test_stocks_api_fields_rationale_50" }, { - "label": "SSE Event Flow (Reference)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-observable-agent-loop.md", - "source_location": "L240", - "community": 70, - "norm_label": "sse event flow (reference)", - "id": "plans_2026_07_17_observable_agent_loop_sse_event_flow_reference" + "label": "GET /fundamental?fields=P/L must not return 422 (validation error).", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L53", + "community": 129, + "norm_label": "get /fundamental?fields=p/l must not return 422 (validation error).", + "id": "tests_test_stocks_api_fields_rationale_53" }, { - "label": "code:block8 (Frontend Backend (agent.py) )", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-observable-agent-loop.md", - "source_location": "L242", - "community": 70, - "norm_label": "code:block8 (frontend backend (agent.py) )", - "id": "plans_2026_07_17_observable_agent_loop_codeblock_8" + "label": "GET /fundamental?fields=MARG. LIQUIDA must not return 422.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L58", + "community": 167, + "norm_label": "get /fundamental?fields=marg. liquida must not return 422.", + "id": "tests_test_stocks_api_fields_rationale_58" }, { - "label": "Design Notes", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-observable-agent-loop.md", - "source_location": "L271", - "community": 70, - "norm_label": "design notes", - "id": "plans_2026_07_17_observable_agent_loop_design_notes" + "label": "GET /fundamental?fields=P/L,ROE,DY must not return 422.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L63", + "community": 166, + "norm_label": "get /fundamental?fields=p/l,roe,dy must not return 422.", + "id": "tests_test_stocks_api_fields_rationale_63" }, { - "label": "2026-07-18-observable-agent-loop.md", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", - "source_location": "L1", - "community": 31, - "norm_label": "2026-07-18-observable-agent-loop.md", - "id": "docs_superpowers_plans_2026_07_18_observable_agent_loop_md" + "label": "Integration: /stocks/historical must accept slash and dot fields.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L69", + "community": 191, + "norm_label": "integration: /stocks/historical must accept slash and dot fields.", + "id": "tests_test_stocks_api_fields_rationale_69" }, { - "label": "Observable Agent Loop \u2014 Implementation Plan", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", - "source_location": "L1", - "community": 31, - "norm_label": "observable agent loop \u2014 implementation plan", - "id": "plans_2026_07_18_observable_agent_loop_observable_agent_loop_implementation_plan" + "label": "GET /historical?fields=P/L must not return 422.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L72", + "community": 191, + "norm_label": "get /historical?fields=p/l must not return 422.", + "id": "tests_test_stocks_api_fields_rationale_72" }, { - "label": "Global Constraints", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", - "source_location": "L11", - "community": 31, - "norm_label": "global constraints", - "id": "plans_2026_07_18_observable_agent_loop_global_constraints" + "label": "GET /historical?fields=MARG. LIQUIDA must not return 422.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L77", + "community": 167, + "norm_label": "get /historical?fields=marg. liquida must not return 422.", + "id": "tests_test_stocks_api_fields_rationale_77" }, { - "label": "File Map", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", - "source_location": "L21", - "community": 31, - "norm_label": "file map", - "id": "plans_2026_07_18_observable_agent_loop_file_map" + "label": "GET /historical?fields=LUCRO LIQUIDO,P/L must not return 422.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L82", + "community": 166, + "norm_label": "get /historical?fields=lucro liquido,p/l must not return 422.", + "id": "tests_test_stocks_api_fields_rationale_82" }, { - "label": "Task 1: Backend \u2014 Yield tool events to SSE", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", - "source_location": "L34", - "community": 31, - "norm_label": "task 1: backend \u2014 yield tool events to sse", - "id": "plans_2026_07_18_observable_agent_loop_task_1_backend_yield_tool_events_to_sse" + "label": "Integration: /stocks/fundamental date filter should work per-ticker.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L88", + "community": 179, + "norm_label": "integration: /stocks/fundamental date filter should work per-ticker.", + "id": "tests_test_stocks_api_fields_rationale_88" }, { - "label": "code:python (def emit_tool_call(self, toolName: str, args: dict, turnNumb)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", - "source_location": "L48", - "community": 31, - "norm_label": "code:python (def emit_tool_call(self, toolname: str, args: dict, turnnumb)", - "id": "plans_2026_07_18_observable_agent_loop_codeblock_1" + "label": "When tickers have different date coverage, each should get its closest snapshot.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L91", + "community": 179, + "norm_label": "when tickers have different date coverage, each should get its closest snapshot.", + "id": "tests_test_stocks_api_fields_rationale_91" }, { - "label": "code:python (# After loop.emit_tool_call(...))", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", - "source_location": "L69", - "community": 31, - "norm_label": "code:python (# after loop.emit_tool_call(...))", - "id": "plans_2026_07_18_observable_agent_loop_codeblock_2" + "label": "test_stocks_api_util_coverage.py", + "file_type": "code", + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L1", + "community": 477, + "norm_label": "test_stocks_api_util_coverage.py", + "id": "tests_test_stocks_api_util_coverage_py" }, { - "label": "code:bash (git add main/app/prometheus/agent.py main/app/prometheus/eve)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", - "source_location": "L87", - "community": 31, - "norm_label": "code:bash (git add main/app/prometheus/agent.py main/app/prometheus/eve)", - "id": "plans_2026_07_18_observable_agent_loop_codeblock_3" + "label": "TestCategorizeColumns", + "file_type": "code", + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L9", + "community": 147, + "norm_label": "testcategorizecolumns", + "id": "tests_test_stocks_api_util_coverage_testcategorizecolumns" }, { - "label": "Task 2: Frontend \u2014 Update api.js to dispatch tool events", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", - "source_location": "L94", - "community": 31, - "norm_label": "task 2: frontend \u2014 update api.js to dispatch tool events", - "id": "plans_2026_07_18_observable_agent_loop_task_2_frontend_update_api_js_to_dispatch_tool_events" + "label": ".test_historical_and_fundamental()", + "file_type": "code", + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L10", + "community": 147, + "norm_label": ".test_historical_and_fundamental()", + "id": "tests_test_stocks_api_util_coverage_testcategorizecolumns_test_historical_and_fundamental" }, { - "label": "code:javascript (export async function streamChat(query, sessionId, onChunk, )", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", - "source_location": "L107", - "community": 31, - "norm_label": "code:javascript (export async function streamchat(query, sessionid, onchunk, )", - "id": "plans_2026_07_18_observable_agent_loop_codeblock_4" + "label": ".test_only_fundamental()", + "file_type": "code", + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L19", + "community": 147, + "norm_label": ".test_only_fundamental()", + "id": "tests_test_stocks_api_util_coverage_testcategorizecolumns_test_only_fundamental" }, { - "label": "code:javascript (try {)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", - "source_location": "L115", - "community": 31, - "norm_label": "code:javascript (try {)", - "id": "plans_2026_07_18_observable_agent_loop_codeblock_5" + "label": ".test_reserved_words_excluded()", + "file_type": "code", + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L25", + "community": 147, + "norm_label": ".test_reserved_words_excluded()", + "id": "tests_test_stocks_api_util_coverage_testcategorizecolumns_test_reserved_words_excluded" }, { - "label": "code:bash (git add frontend/src/api.js)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", - "source_location": "L134", - "community": 31, - "norm_label": "code:bash (git add frontend/src/api.js)", - "id": "plans_2026_07_18_observable_agent_loop_codeblock_6" + "label": ".test_single_year()", + "file_type": "code", + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L31", + "community": 147, + "norm_label": ".test_single_year()", + "id": "tests_test_stocks_api_util_coverage_testcategorizecolumns_test_single_year" }, { - "label": "Task 3: Frontend \u2014 Add AgentLoop component", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", - "source_location": "L141", - "community": 31, - "norm_label": "task 3: frontend \u2014 add agentloop component", - "id": "plans_2026_07_18_observable_agent_loop_task_3_frontend_add_agentloop_component" + "label": ".test_no_year_suffix()", + "file_type": "code", + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L36", + "community": 147, + "norm_label": ".test_no_year_suffix()", + "id": "tests_test_stocks_api_util_coverage_testcategorizecolumns_test_no_year_suffix" }, { - "label": "code:jsx (import { useState } from 'react';)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", - "source_location": "L152", - "community": 31, - "norm_label": "code:jsx (import { usestate } from 'react';)", - "id": "plans_2026_07_18_observable_agent_loop_codeblock_7" + "label": "TestParseDateRange", + "file_type": "code", + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L43", + "community": 73, + "norm_label": "testparsedaterange", + "id": "tests_test_stocks_api_util_coverage_testparsedaterange" }, { - "label": "code:bash (git add frontend/src/components/AgentLoop.jsx)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", - "source_location": "L215", - "community": 31, - "norm_label": "code:bash (git add frontend/src/components/agentloop.jsx)", - "id": "plans_2026_07_18_observable_agent_loop_codeblock_8" + "label": ".test_empty_string()", + "file_type": "code", + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L44", + "community": 73, + "norm_label": ".test_empty_string()", + "id": "tests_test_stocks_api_util_coverage_testparsedaterange_test_empty_string" }, { - "label": "Task 4: Frontend \u2014 Wire AgentLoop into App.jsx", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", - "source_location": "L222", - "community": 31, - "norm_label": "task 4: frontend \u2014 wire agentloop into app.jsx", - "id": "plans_2026_07_18_observable_agent_loop_task_4_frontend_wire_agentloop_into_app_jsx" + "label": ".test_none()", + "file_type": "code", + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L47", + "community": 73, + "norm_label": ".test_none()", + "id": "tests_test_stocks_api_util_coverage_testparsedaterange_test_none" }, { - "label": "code:javascript (const [toolEvents, setToolEvents] = useState([]);)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", - "source_location": "L235", - "community": 31, - "norm_label": "code:javascript (const [toolevents, settoolevents] = usestate([]);)", - "id": "plans_2026_07_18_observable_agent_loop_codeblock_9" + "label": ".test_single_year()", + "file_type": "code", + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L50", + "community": 73, + "norm_label": ".test_single_year()", + "id": "tests_test_stocks_api_util_coverage_testparsedaterange_test_single_year" }, { - "label": "code:javascript (setToolEvents([]);)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", - "source_location": "L244", - "community": 31, - "norm_label": "code:javascript (settoolevents([]);)", - "id": "plans_2026_07_18_observable_agent_loop_codeblock_10" + "label": ".test_year_range()", + "file_type": "code", + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L59", + "community": 73, + "norm_label": ".test_year_range()", + "id": "tests_test_stocks_api_util_coverage_testparsedaterange_test_year_range" }, { - "label": "code:javascript (setToolEvents([]);)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", - "source_location": "L251", - "community": 31, - "norm_label": "code:javascript (settoolevents([]);)", - "id": "plans_2026_07_18_observable_agent_loop_codeblock_11" + "label": ".test_spaces()", + "file_type": "code", + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L64", + "community": 73, + "norm_label": ".test_spaces()", + "id": "tests_test_stocks_api_util_coverage_testparsedaterange_test_spaces" }, { - "label": "code:javascript (await streamChat()", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", - "source_location": "L260", - "community": 31, - "norm_label": "code:javascript (await streamchat()", - "id": "plans_2026_07_18_observable_agent_loop_codeblock_12" + "label": ".test_three_values_raises()", + "file_type": "code", + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L69", + "community": 73, + "norm_label": ".test_three_values_raises()", + "id": "tests_test_stocks_api_util_coverage_testparsedaterange_test_three_values_raises" }, { - "label": "code:jsx (
)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", - "source_location": "L278", - "community": 31, - "norm_label": "code:jsx (
)", - "id": "plans_2026_07_18_observable_agent_loop_codeblock_13" + "label": ".test_month_start()", + "file_type": "code", + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L74", + "community": 73, + "norm_label": ".test_month_start()", + "id": "tests_test_stocks_api_util_coverage_testparsedaterange_test_month_start" }, { - "label": "code:javascript (import AgentLoop from './components/AgentLoop';)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", - "source_location": "L288", - "community": 31, - "norm_label": "code:javascript (import agentloop from './components/agentloop';)", - "id": "plans_2026_07_18_observable_agent_loop_codeblock_14" + "label": ".test_full_date()", + "file_type": "code", + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L81", + "community": 73, + "norm_label": ".test_full_date()", + "id": "tests_test_stocks_api_util_coverage_testparsedaterange_test_full_date" }, { - "label": "code:bash (git add frontend/src/App.jsx)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", - "source_location": "L294", - "community": 31, - "norm_label": "code:bash (git add frontend/src/app.jsx)", - "id": "plans_2026_07_18_observable_agent_loop_codeblock_15" + "label": "Tests for main/app/stocks_api/util.py.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L1", + "community": 477, + "norm_label": "tests for main/app/stocks_api/util.py.", + "id": "tests_test_stocks_api_util_coverage_rationale_1" }, { - "label": "Task 5: Frontend \u2014 Add CSS styles", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", - "source_location": "L301", - "community": 31, - "norm_label": "task 5: frontend \u2014 add css styles", - "id": "plans_2026_07_18_observable_agent_loop_task_5_frontend_add_css_styles" + "label": "test_stocks_mcp.py", + "file_type": "code", + "source_file": "tests/test_stocks_mcp.py", + "source_location": "L1", + "community": 34, + "norm_label": "test_stocks_mcp.py", + "id": "tests_test_stocks_mcp_py" }, { - "label": "code:css (/* Agent Loop */)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", - "source_location": "L314", - "community": 31, - "norm_label": "code:css (/* agent loop */)", - "id": "plans_2026_07_18_observable_agent_loop_codeblock_16" + "label": "_build_app_with_all_routers()", + "file_type": "code", + "source_file": "tests/test_stocks_mcp.py", + "source_location": "L29", + "community": 34, + "norm_label": "_build_app_with_all_routers()", + "id": "tests_test_stocks_mcp_build_app_with_all_routers" }, { - "label": "code:bash (git add frontend/src/App.css)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", - "source_location": "L337", - "community": 31, - "norm_label": "code:bash (git add frontend/src/app.css)", - "id": "plans_2026_07_18_observable_agent_loop_codeblock_17" + "label": "_make_mcp()", + "file_type": "code", + "source_file": "tests/test_stocks_mcp.py", + "source_location": "L39", + "community": 34, + "norm_label": "_make_mcp()", + "id": "tests_test_stocks_mcp_make_mcp" }, { - "label": "Task 6: Integration test", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", - "source_location": "L344", - "community": 31, - "norm_label": "task 6: integration test", - "id": "plans_2026_07_18_observable_agent_loop_task_6_integration_test" + "label": "TestMCPToolScoping", + "file_type": "code", + "source_file": "tests/test_stocks_mcp.py", + "source_location": "L48", + "community": 34, + "norm_label": "testmcptoolscoping", + "id": "tests_test_stocks_mcp_testmcptoolscoping" }, { - "label": "code:bash (docker compose up -d --build)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", - "source_location": "L355", - "community": 31, - "norm_label": "code:bash (docker compose up -d --build)", - "id": "plans_2026_07_18_observable_agent_loop_codeblock_18" + "label": ".test_mcp_exactly_five_tools()", + "file_type": "code", + "source_file": "tests/test_stocks_mcp.py", + "source_location": "L51", + "community": 34, + "norm_label": ".test_mcp_exactly_five_tools()", + "id": "tests_test_stocks_mcp_testmcptoolscoping_test_mcp_exactly_five_tools" }, { - "label": "code:bash (cd frontend && npx vitest run)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", - "source_location": "L374", - "community": 31, - "norm_label": "code:bash (cd frontend && npx vitest run)", - "id": "plans_2026_07_18_observable_agent_loop_codeblock_19" + "label": ".test_mcp_excludes_health()", + "file_type": "code", + "source_file": "tests/test_stocks_mcp.py", + "source_location": "L57", + "community": 34, + "norm_label": ".test_mcp_excludes_health()", + "id": "tests_test_stocks_mcp_testmcptoolscoping_test_mcp_excludes_health" }, { - "label": "code:bash (git add -A && git commit -m \"observable agent loop: backend )", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", - "source_location": "L382", - "community": 31, - "norm_label": "code:bash (git add -a && git commit -m \"observable agent loop: backend )", - "id": "plans_2026_07_18_observable_agent_loop_codeblock_20" + "label": ".test_mcp_excludes_generate_key()", + "file_type": "code", + "source_file": "tests/test_stocks_mcp.py", + "source_location": "L64", + "community": 34, + "norm_label": ".test_mcp_excludes_generate_key()", + "id": "tests_test_stocks_mcp_testmcptoolscoping_test_mcp_excludes_generate_key" }, { - "label": "STOCKS_API", - "file_type": "document", - "source_file": "TODO.md", - "source_location": "L77", - "community": 187, - "norm_label": "stocks_api", - "id": "server_todo_stocks_api" + "label": ".test_mcp_excludes_non_stocks_endpoints()", + "file_type": "code", + "source_file": "tests/test_stocks_mcp.py", + "source_location": "L71", + "community": 34, + "norm_label": ".test_mcp_excludes_non_stocks_endpoints()", + "id": "tests_test_stocks_mcp_testmcptoolscoping_test_mcp_excludes_non_stocks_endpoints" }, { - "label": "Prometheus", - "file_type": "document", - "source_file": "TODO.md", - "source_location": "L80", - "community": 187, - "norm_label": "prometheus", - "id": "server_todo_prometheus" + "label": ".test_mcp_tool_names_match_endpoints()", + "file_type": "code", + "source_file": "tests/test_stocks_mcp.py", + "source_location": "L79", + "community": 34, + "norm_label": ".test_mcp_tool_names_match_endpoints()", + "id": "tests_test_stocks_mcp_testmcptoolscoping_test_mcp_tool_names_match_endpoints" }, { - "label": "2026-07-17-prometheus-forgevm-sandbox.md", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", - "source_location": "L1", - "community": 15, - "norm_label": "2026-07-17-prometheus-forgevm-sandbox.md", - "id": "docs_superpowers_plans_2026_07_17_prometheus_forgevm_sandbox_md" + "label": ".test_mcp_descriptions_are_meaningful()", + "file_type": "code", + "source_file": "tests/test_stocks_mcp.py", + "source_location": "L87", + "community": 34, + "norm_label": ".test_mcp_descriptions_are_meaningful()", + "id": "tests_test_stocks_mcp_testmcptoolscoping_test_mcp_descriptions_are_meaningful" }, { - "label": "Prometheus ForgeVM Sandbox \u2014 Implementation Plan", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", - "source_location": "L1", - "community": 15, - "norm_label": "prometheus forgevm sandbox \u2014 implementation plan", - "id": "plans_2026_07_17_prometheus_forgevm_sandbox_prometheus_forgevm_sandbox_implementation_plan" + "label": ".test_mcp_mount_returns_valid_response()", + "file_type": "code", + "source_file": "tests/test_stocks_mcp.py", + "source_location": "L94", + "community": 34, + "norm_label": ".test_mcp_mount_returns_valid_response()", + "id": "tests_test_stocks_mcp_testmcptoolscoping_test_mcp_mount_returns_valid_response" }, { - "label": "code:block1 (User 123: \"Analyze PETR4 vs VALE3 correlation\")", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", - "source_location": "L9", - "community": 15, - "norm_label": "code:block1 (user 123: \"analyze petr4 vs vale3 correlation\")", - "id": "plans_2026_07_17_prometheus_forgevm_sandbox_codeblock_1" + "label": ".test_wrong_operation_ids_match_nothing()", + "file_type": "code", + "source_file": "tests/test_stocks_mcp.py", + "source_location": "L106", + "community": 34, + "norm_label": ".test_wrong_operation_ids_match_nothing()", + "id": "tests_test_stocks_mcp_testmcptoolscoping_test_wrong_operation_ids_match_nothing" }, { - "label": "Global Constraints", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", - "source_location": "L43", - "community": 15, - "norm_label": "global constraints", - "id": "plans_2026_07_17_prometheus_forgevm_sandbox_global_constraints" + "label": ".test_listfields_tool_exists()", + "file_type": "code", + "source_file": "tests/test_stocks_mcp.py", + "source_location": "L116", + "community": 34, + "norm_label": ".test_listfields_tool_exists()", + "id": "tests_test_stocks_mcp_testmcptoolscoping_test_listfields_tool_exists" }, { - "label": "File Map", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", - "source_location": "L59", - "community": 15, - "norm_label": "file map", - "id": "plans_2026_07_17_prometheus_forgevm_sandbox_file_map" + "label": ".test_listfields_description_mentions_discovery()", + "file_type": "code", + "source_file": "tests/test_stocks_mcp.py", + "source_location": "L123", + "community": 34, + "norm_label": ".test_listfields_description_mentions_discovery()", + "id": "tests_test_stocks_mcp_testmcptoolscoping_test_listfields_description_mentions_discovery" }, { - "label": "Phase 1: Config + ForgeVM Setup", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", - "source_location": "L75", - "community": 15, - "norm_label": "phase 1: config + forgevm setup", - "id": "plans_2026_07_17_prometheus_forgevm_sandbox_phase_1_config_forgevm_setup" + "label": ".test_historical_dates_format_in_description()", + "file_type": "code", + "source_file": "tests/test_stocks_mcp.py", + "source_location": "L132", + "community": 34, + "norm_label": ".test_historical_dates_format_in_description()", + "id": "tests_test_stocks_mcp_testmcptoolscoping_test_historical_dates_format_in_description" }, { - "label": "Task 1: Config \u2014 Add ForgeVM Settings", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", - "source_location": "L77", - "community": 15, - "norm_label": "task 1: config \u2014 add forgevm settings", - "id": "plans_2026_07_17_prometheus_forgevm_sandbox_task_1_config_add_forgevm_settings" + "label": "Tests for MCP tool scoping in stocksapi_service.py. Verifies that FastApiMCP ex", + "file_type": "rationale", + "source_file": "tests/test_stocks_mcp.py", + "source_location": "L1", + "community": 34, + "norm_label": "tests for mcp tool scoping in stocksapi_service.py. verifies that fastapimcp ex", + "id": "tests_test_stocks_mcp_rationale_1" }, { - "label": "code:python (class PrometheusSettings(BaseMansaSettings):)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", - "source_location": "L84", - "community": 15, - "norm_label": "code:python (class prometheussettings(basemansasettings):)", - "id": "plans_2026_07_17_prometheus_forgevm_sandbox_codeblock_2" + "label": "Build a FastAPI app with all service routers \u2014 mimics production shared port.", + "file_type": "rationale", + "source_file": "tests/test_stocks_mcp.py", + "source_location": "L30", + "community": 34, + "norm_label": "build a fastapi app with all service routers \u2014 mimics production shared port.", + "id": "tests_test_stocks_mcp_rationale_30" }, { - "label": "code:bash (git add config.py)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", - "source_location": "L97", - "community": 15, - "norm_label": "code:bash (git add config.py)", - "id": "plans_2026_07_17_prometheus_forgevm_sandbox_codeblock_3" + "label": "Create MCP matching production config.", + "file_type": "rationale", + "source_file": "tests/test_stocks_mcp.py", + "source_location": "L40", + "community": 34, + "norm_label": "create mcp matching production config.", + "id": "tests_test_stocks_mcp_rationale_40" }, { - "label": "Task 2: Docker Compose \u2014 Add ForgeVM Service", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", - "source_location": "L104", - "community": 15, - "norm_label": "task 2: docker compose \u2014 add forgevm service", - "id": "plans_2026_07_17_prometheus_forgevm_sandbox_task_2_docker_compose_add_forgevm_service" + "label": "Verify FastApiMCP exposes exactly the 5 data query tools.", + "file_type": "rationale", + "source_file": "tests/test_stocks_mcp.py", + "source_location": "L49", + "community": 34, + "norm_label": "verify fastapimcp exposes exactly the 5 data query tools.", + "id": "tests_test_stocks_mcp_rationale_49" }, { - "label": "code:yaml (services:)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", - "source_location": "L111", - "community": 15, - "norm_label": "code:yaml (services:)", - "id": "plans_2026_07_17_prometheus_forgevm_sandbox_codeblock_4" + "label": "MCP should expose exactly 5 tools: fields, historical, fundamental, cotations, l", + "file_type": "rationale", + "source_file": "tests/test_stocks_mcp.py", + "source_location": "L52", + "community": 34, + "norm_label": "mcp should expose exactly 5 tools: fields, historical, fundamental, cotations, l", + "id": "tests_test_stocks_mcp_rationale_52" }, { - "label": "code:bash (git add docker-compose.yml)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", - "source_location": "L139", - "community": 15, - "norm_label": "code:bash (git add docker-compose.yml)", - "id": "plans_2026_07_17_prometheus_forgevm_sandbox_codeblock_5" + "label": "Health endpoint should not be an MCP tool.", + "file_type": "rationale", + "source_file": "tests/test_stocks_mcp.py", + "source_location": "L58", + "community": 34, + "norm_label": "health endpoint should not be an mcp tool.", + "id": "tests_test_stocks_mcp_rationale_58" }, { - "label": "Phase 2: SandboxManager", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", - "source_location": "L146", - "community": 15, - "norm_label": "phase 2: sandboxmanager", - "id": "plans_2026_07_17_prometheus_forgevm_sandbox_phase_2_sandboxmanager" + "label": "Key generation endpoint should not be an MCP tool.", + "file_type": "rationale", + "source_file": "tests/test_stocks_mcp.py", + "source_location": "L65", + "community": 34, + "norm_label": "key generation endpoint should not be an mcp tool.", + "id": "tests_test_stocks_mcp_rationale_65" }, { - "label": "Task 3: ForgeVM REST API Client", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", - "source_location": "L148", - "community": 15, - "norm_label": "task 3: forgevm rest api client", - "id": "plans_2026_07_17_prometheus_forgevm_sandbox_task_3_forgevm_rest_api_client" + "label": "Auth, user, and prometheus tools should not appear.", + "file_type": "rationale", + "source_file": "tests/test_stocks_mcp.py", + "source_location": "L72", + "community": 34, + "norm_label": "auth, user, and prometheus tools should not appear.", + "id": "tests_test_stocks_mcp_rationale_72" }, { - "label": "code:python (import pytest)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", - "source_location": "L160", - "community": 15, - "norm_label": "code:python (import pytest)", - "id": "plans_2026_07_17_prometheus_forgevm_sandbox_codeblock_6" + "label": "Each MCP tool should correspond to a data endpoint.", + "file_type": "rationale", + "source_file": "tests/test_stocks_mcp.py", + "source_location": "L80", + "community": 34, + "norm_label": "each mcp tool should correspond to a data endpoint.", + "id": "tests_test_stocks_mcp_rationale_80" }, { - "label": "code:python (import logging)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", - "source_location": "L270", - "community": 15, - "norm_label": "code:python (import logging)", - "id": "plans_2026_07_17_prometheus_forgevm_sandbox_codeblock_7" - }, - { - "label": "code:bash (git add main/app/prometheus/sandbox.py tests/test_sandbox.py)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", - "source_location": "L377", - "community": 15, - "norm_label": "code:bash (git add main/app/prometheus/sandbox.py tests/test_sandbox.py)", - "id": "plans_2026_07_17_prometheus_forgevm_sandbox_codeblock_8" - }, - { - "label": "Phase 3: Sandbox Tools", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", - "source_location": "L384", - "community": 15, - "norm_label": "phase 3: sandbox tools", - "id": "plans_2026_07_17_prometheus_forgevm_sandbox_phase_3_sandbox_tools" - }, - { - "label": "Task 4: Tool Definitions \u2014 Sandbox Tools in TOOL_REGISTRY", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", - "source_location": "L386", - "community": 15, - "norm_label": "task 4: tool definitions \u2014 sandbox tools in tool_registry", - "id": "plans_2026_07_17_prometheus_forgevm_sandbox_task_4_tool_definitions_sandbox_tools_in_tool_registry" - }, - { - "label": "code:python (import pytest)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", - "source_location": "L396", - "community": 15, - "norm_label": "code:python (import pytest)", - "id": "plans_2026_07_17_prometheus_forgevm_sandbox_codeblock_9" + "label": "Tool descriptions should be more than just the function name.", + "file_type": "rationale", + "source_file": "tests/test_stocks_mcp.py", + "source_location": "L88", + "community": 34, + "norm_label": "tool descriptions should be more than just the function name.", + "id": "tests_test_stocks_mcp_rationale_88" }, { - "label": "code:python (from main.app.prometheus.sandbox import SandboxManager)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", - "source_location": "L455", - "community": 15, - "norm_label": "code:python (from main.app.prometheus.sandbox import sandboxmanager)", - "id": "plans_2026_07_17_prometheus_forgevm_sandbox_codeblock_10" + "label": "MCP endpoint should respond \u2014 confirms mount is registered.", + "file_type": "rationale", + "source_file": "tests/test_stocks_mcp.py", + "source_location": "L95", + "community": 34, + "norm_label": "mcp endpoint should respond \u2014 confirms mount is registered.", + "id": "tests_test_stocks_mcp_rationale_95" }, { - "label": "code:python (TOOL_REGISTRY: dict[str, Any] = {)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", - "source_location": "L524", - "community": 15, - "norm_label": "code:python (tool_registry: dict[str, any] = {)", - "id": "plans_2026_07_17_prometheus_forgevm_sandbox_codeblock_11" + "label": "Short function names (the original bug) should match 0 tools.", + "file_type": "rationale", + "source_file": "tests/test_stocks_mcp.py", + "source_location": "L107", + "community": 34, + "norm_label": "short function names (the original bug) should match 0 tools.", + "id": "tests_test_stocks_mcp_rationale_107" }, { - "label": "code:python (async def dispatchToolCall()", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", - "source_location": "L539", - "community": 15, - "norm_label": "code:python (async def dispatchtoolcall()", - "id": "plans_2026_07_17_prometheus_forgevm_sandbox_codeblock_12" + "label": "The listFields discovery tool should be included.", + "file_type": "rationale", + "source_file": "tests/test_stocks_mcp.py", + "source_location": "L117", + "community": 34, + "norm_label": "the listfields discovery tool should be included.", + "id": "tests_test_stocks_mcp_rationale_117" }, { - "label": "code:bash (git add main/app/prometheus/tools.py tests/test_sandbox_tool)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", - "source_location": "L567", - "community": 15, - "norm_label": "code:bash (git add main/app/prometheus/tools.py tests/test_sandbox_tool)", - "id": "plans_2026_07_17_prometheus_forgevm_sandbox_codeblock_13" + "label": "The listFields tool description should guide LLMs to call it first.", + "file_type": "rationale", + "source_file": "tests/test_stocks_mcp.py", + "source_location": "L124", + "community": 34, + "norm_label": "the listfields tool description should guide llms to call it first.", + "id": "tests_test_stocks_mcp_rationale_124" }, { - "label": "Phase 4: Agent Integration", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", - "source_location": "L574", - "community": 15, - "norm_label": "phase 4: agent integration", - "id": "plans_2026_07_17_prometheus_forgevm_sandbox_phase_4_agent_integration" + "label": "Historical tool description should mention YYYY date format.", + "file_type": "rationale", + "source_file": "tests/test_stocks_mcp.py", + "source_location": "L133", + "community": 34, + "norm_label": "historical tool description should mention yyyy date format.", + "id": "tests_test_stocks_mcp_rationale_133" }, { - "label": "Task 5: Agent \u2014 On-Demand Sandbox + Premium Gating", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", - "source_location": "L576", - "community": 15, - "norm_label": "task 5: agent \u2014 on-demand sandbox + premium gating", - "id": "plans_2026_07_17_prometheus_forgevm_sandbox_task_5_agent_on_demand_sandbox_premium_gating" + "label": "test_stocks_util.py", + "file_type": "code", + "source_file": "tests/test_stocks_util.py", + "source_location": "L1", + "community": 147, + "norm_label": "test_stocks_util.py", + "id": "tests_test_stocks_util_py" }, { - "label": "code:python (import pytest)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", - "source_location": "L586", - "community": 15, - "norm_label": "code:python (import pytest)", - "id": "plans_2026_07_17_prometheus_forgevm_sandbox_codeblock_14" + "label": "TestCategorizeColumns", + "file_type": "code", + "source_file": "tests/test_stocks_util.py", + "source_location": "L12", + "community": 147, + "norm_label": "testcategorizecolumns", + "id": "tests_test_stocks_util_testcategorizecolumns" }, { - "label": "code:python (from main.app.prometheus.sandbox import SandboxManager)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", - "source_location": "L617", - "community": 15, - "norm_label": "code:python (from main.app.prometheus.sandbox import sandboxmanager)", - "id": "plans_2026_07_17_prometheus_forgevm_sandbox_codeblock_15" + "label": ".test_categorize_columns_historical_only()", + "file_type": "code", + "source_file": "tests/test_stocks_util.py", + "source_location": "L13", + "community": 147, + "norm_label": ".test_categorize_columns_historical_only()", + "id": "tests_test_stocks_util_testcategorizecolumns_test_categorize_columns_historical_only" }, { - "label": "code:python (async def streamMessage(self, query=None, sessionId=None, db)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", - "source_location": "L623", - "community": 15, - "norm_label": "code:python (async def streammessage(self, query=none, sessionid=none, db)", - "id": "plans_2026_07_17_prometheus_forgevm_sandbox_codeblock_16" + "label": ".test_categorize_columns_fundamental_only()", + "file_type": "code", + "source_file": "tests/test_stocks_util.py", + "source_location": "L22", + "community": 147, + "norm_label": ".test_categorize_columns_fundamental_only()", + "id": "tests_test_stocks_util_testcategorizecolumns_test_categorize_columns_fundamental_only" }, { - "label": "code:python (## Code Sandbox (On-Demand))", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", - "source_location": "L723", - "community": 15, - "norm_label": "code:python (## code sandbox (on-demand))", - "id": "plans_2026_07_17_prometheus_forgevm_sandbox_codeblock_17" + "label": ".test_categorize_columns_mixed()", + "file_type": "code", + "source_file": "tests/test_stocks_util.py", + "source_location": "L31", + "community": 147, + "norm_label": ".test_categorize_columns_mixed()", + "id": "tests_test_stocks_util_testcategorizecolumns_test_categorize_columns_mixed" }, { - "label": "code:bash (git add main/app/prometheus/agent.py tests/test_agent_sandbo)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", - "source_location": "L751", - "community": 15, - "norm_label": "code:bash (git add main/app/prometheus/agent.py tests/test_agent_sandbo)", - "id": "plans_2026_07_17_prometheus_forgevm_sandbox_codeblock_18" + "label": ".test_categorize_columns_excludes_special()", + "file_type": "code", + "source_file": "tests/test_stocks_util.py", + "source_location": "L39", + "community": 147, + "norm_label": ".test_categorize_columns_excludes_special()", + "id": "tests_test_stocks_util_testcategorizecolumns_test_categorize_columns_excludes_special" }, { - "label": "Phase 5: Docker Image + Final Verification", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", - "source_location": "L758", - "community": 15, - "norm_label": "phase 5: docker image + final verification", - "id": "plans_2026_07_17_prometheus_forgevm_sandbox_phase_5_docker_image_final_verification" + "label": ".test_categorize_columns_empty()", + "file_type": "code", + "source_file": "tests/test_stocks_util.py", + "source_location": "L47", + "community": 147, + "norm_label": ".test_categorize_columns_empty()", + "id": "tests_test_stocks_util_testcategorizecolumns_test_categorize_columns_empty" }, { - "label": "Task 6: Dockerfile.sandbox \u2014 Python Data Science Image", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", - "source_location": "L760", - "community": 15, - "norm_label": "task 6: dockerfile.sandbox \u2014 python data science image", - "id": "plans_2026_07_17_prometheus_forgevm_sandbox_task_6_dockerfile_sandbox_python_data_science_image" + "label": "TestParseDateRange", + "file_type": "code", + "source_file": "tests/test_stocks_util.py", + "source_location": "L53", + "community": 73, + "norm_label": "testparsedaterange", + "id": "tests_test_stocks_util_testparsedaterange" }, { - "label": "code:dockerfile (FROM python:3.11-slim)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", - "source_location": "L767", - "community": 15, - "norm_label": "code:dockerfile (from python:3.11-slim)", - "id": "plans_2026_07_17_prometheus_forgevm_sandbox_codeblock_19" + "label": ".test_parse_year_single()", + "file_type": "code", + "source_file": "tests/test_stocks_util.py", + "source_location": "L54", + "community": 73, + "norm_label": ".test_parse_year_single()", + "id": "tests_test_stocks_util_testparsedaterange_test_parse_year_single" }, { - "label": "code:bash (git add Dockerfile.sandbox)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", - "source_location": "L785", - "community": 15, - "norm_label": "code:bash (git add dockerfile.sandbox)", - "id": "plans_2026_07_17_prometheus_forgevm_sandbox_codeblock_20" + "label": ".test_parse_year_range()", + "file_type": "code", + "source_file": "tests/test_stocks_util.py", + "source_location": "L63", + "community": 73, + "norm_label": ".test_parse_year_range()", + "id": "tests_test_stocks_util_testparsedaterange_test_parse_year_range" }, { - "label": "Task 7: Full CI Verification", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", - "source_location": "L792", - "community": 15, - "norm_label": "task 7: full ci verification", - "id": "plans_2026_07_17_prometheus_forgevm_sandbox_task_7_full_ci_verification" + "label": ".test_parse_year_none()", + "file_type": "code", + "source_file": "tests/test_stocks_util.py", + "source_location": "L68", + "community": 73, + "norm_label": ".test_parse_year_none()", + "id": "tests_test_stocks_util_testparsedaterange_test_parse_year_none" }, { - "label": "code:bash (docker-compose up -d --build)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", - "source_location": "L801", - "community": 15, - "norm_label": "code:bash (docker-compose up -d --build)", - "id": "plans_2026_07_17_prometheus_forgevm_sandbox_codeblock_21" + "label": ".test_parse_year_empty_string()", + "file_type": "code", + "source_file": "tests/test_stocks_util.py", + "source_location": "L73", + "community": 73, + "norm_label": ".test_parse_year_empty_string()", + "id": "tests_test_stocks_util_testparsedaterange_test_parse_year_empty_string" }, { - "label": "Summary", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", - "source_location": "L811", - "community": 15, - "norm_label": "summary", - "id": "plans_2026_07_17_prometheus_forgevm_sandbox_summary" + "label": ".test_parse_month()", + "file_type": "code", + "source_file": "tests/test_stocks_util.py", + "source_location": "L78", + "community": 73, + "norm_label": ".test_parse_month()", + "id": "tests_test_stocks_util_testparsedaterange_test_parse_month" }, { - "label": "What This Enables", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", - "source_location": "L827", - "community": 15, - "norm_label": "what this enables", - "id": "plans_2026_07_17_prometheus_forgevm_sandbox_what_this_enables" + "label": ".test_parse_full_date()", + "file_type": "code", + "source_file": "tests/test_stocks_util.py", + "source_location": "L85", + "community": 73, + "norm_label": ".test_parse_full_date()", + "id": "tests_test_stocks_util_testparsedaterange_test_parse_full_date" }, { - "label": "What This Does NOT Do (By Design)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", - "source_location": "L838", - "community": 15, - "norm_label": "what this does not do (by design)", - "id": "plans_2026_07_17_prometheus_forgevm_sandbox_what_this_does_not_do_by_design" + "label": ".test_parse_two_values()", + "file_type": "code", + "source_file": "tests/test_stocks_util.py", + "source_location": "L89", + "community": 73, + "norm_label": ".test_parse_two_values()", + "id": "tests_test_stocks_util_testparsedaterange_test_parse_two_values" }, { - "label": "2026-07-17-sandbox-persistence.md", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", - "source_location": "L1", - "community": 35, - "norm_label": "2026-07-17-sandbox-persistence.md", - "id": "docs_superpowers_plans_2026_07_17_sandbox_persistence_md" + "label": ".test_parse_three_values_raises()", + "file_type": "code", + "source_file": "tests/test_stocks_util.py", + "source_location": "L96", + "community": 73, + "norm_label": ".test_parse_three_values_raises()", + "id": "tests_test_stocks_util_testparsedaterange_test_parse_three_values_raises" }, { - "label": "Sandbox Persistence Implementation Plan", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", + "label": "test_streammessage_no_chatsession.py", + "file_type": "code", + "source_file": "tests/test_streammessage_no_chatsession.py", "source_location": "L1", - "community": 35, - "norm_label": "sandbox persistence implementation plan", - "id": "plans_2026_07_17_sandbox_persistence_sandbox_persistence_implementation_plan" - }, - { - "label": "Global Constraints", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", - "source_location": "L11", - "community": 35, - "norm_label": "global constraints", - "id": "plans_2026_07_17_sandbox_persistence_global_constraints" - }, - { - "label": "File Structure", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", - "source_location": "L23", - "community": 35, - "norm_label": "file structure", - "id": "plans_2026_07_17_sandbox_persistence_file_structure" - }, - { - "label": "Task 1: Database Model + Migration", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", - "source_location": "L38", - "community": 35, - "norm_label": "task 1: database model + migration", - "id": "plans_2026_07_17_sandbox_persistence_task_1_database_model_migration" - }, - { - "label": "code:python (# tests/test_sandbox_persistence.py)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", - "source_location": "L52", - "community": 35, - "norm_label": "code:python (# tests/test_sandbox_persistence.py)", - "id": "plans_2026_07_17_sandbox_persistence_codeblock_1" + "community": 138, + "norm_label": "test_streammessage_no_chatsession.py", + "id": "tests_test_streammessage_no_chatsession_py" }, { - "label": "code:python (# main/models/sandbox.py)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", - "source_location": "L101", - "community": 35, - "norm_label": "code:python (# main/models/sandbox.py)", - "id": "plans_2026_07_17_sandbox_persistence_codeblock_2" + "label": "FakeChunk", + "file_type": "code", + "source_file": "tests/test_streammessage_no_chatsession.py", + "source_location": "L18", + "community": 138, + "norm_label": "fakechunk", + "id": "tests_test_streammessage_no_chatsession_fakechunk" }, { - "label": "code:python (# main/models/__init__.py \u2014 add import)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", - "source_location": "L120", - "community": 35, - "norm_label": "code:python (# main/models/__init__.py \u2014 add import)", - "id": "plans_2026_07_17_sandbox_persistence_codeblock_3" + "label": ".__init__()", + "file_type": "code", + "source_file": "tests/test_streammessage_no_chatsession.py", + "source_location": "L19", + "community": 138, + "norm_label": ".__init__()", + "id": "tests_test_streammessage_no_chatsession_fakechunk_init" }, { - "label": "code:python (# migrations/env.py \u2014 add import after line 14)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", - "source_location": "L133", - "community": 35, - "norm_label": "code:python (# migrations/env.py \u2014 add import after line 14)", - "id": "plans_2026_07_17_sandbox_persistence_codeblock_4" + "label": "TestStreamMessageNoChatSession", + "file_type": "code", + "source_file": "tests/test_streammessage_no_chatsession.py", + "source_location": "L24", + "community": 138, + "norm_label": "teststreammessagenochatsession", + "id": "tests_test_streammessage_no_chatsession_teststreammessagenochatsession" }, { - "label": "code:bash (git add main/models/sandbox.py main/models/__init__.py migra)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", - "source_location": "L150", - "community": 35, - "norm_label": "code:bash (git add main/models/sandbox.py main/models/__init__.py migra)", - "id": "plans_2026_07_17_sandbox_persistence_codeblock_5" + "label": "test_stream_message_yields_text_chunks()", + "file_type": "code", + "source_file": "tests/test_streammessage_no_chatsession.py", + "source_location": "L32", + "community": 138, + "norm_label": "test_stream_message_yields_text_chunks()", + "id": "tests_test_streammessage_no_chatsession_test_stream_message_yields_text_chunks" }, { - "label": "Task 2: SandboxManager Persistence Logic", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", - "source_location": "L157", - "community": 35, - "norm_label": "task 2: sandboxmanager persistence logic", - "id": "plans_2026_07_17_sandbox_persistence_task_2_sandboxmanager_persistence_logic" + "label": "test_stream_message_does_not_call_chatSession()", + "file_type": "code", + "source_file": "tests/test_streammessage_no_chatsession.py", + "source_location": "L76", + "community": 138, + "norm_label": "test_stream_message_does_not_call_chatsession()", + "id": "tests_test_streammessage_no_chatsession_test_stream_message_does_not_call_chatsession" }, { - "label": "code:python (# tests/test_sandbox_persistence.py \u2014 append to existing fil)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", - "source_location": "L170", - "community": 35, - "norm_label": "code:python (# tests/test_sandbox_persistence.py \u2014 append to existing fil)", - "id": "plans_2026_07_17_sandbox_persistence_codeblock_6" + "label": "test_stream_message_handles_function_calls_without_chatsession()", + "file_type": "code", + "source_file": "tests/test_streammessage_no_chatsession.py", + "source_location": "L97", + "community": 138, + "norm_label": "test_stream_message_handles_function_calls_without_chatsession()", + "id": "tests_test_streammessage_no_chatsession_test_stream_message_handles_function_calls_without_chatsession" }, { - "label": "code:python (# main/app/prometheus/sandbox.py \u2014 full rewrite)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", - "source_location": "L284", - "community": 35, - "norm_label": "code:python (# main/app/prometheus/sandbox.py \u2014 full rewrite)", - "id": "plans_2026_07_17_sandbox_persistence_codeblock_7" + "label": "GREEN test: streamMessage works without chatSession \u2014 MCP setup is inlined. Aft", + "file_type": "rationale", + "source_file": "tests/test_streammessage_no_chatsession.py", + "source_location": "L1", + "community": 138, + "norm_label": "green test: streammessage works without chatsession \u2014 mcp setup is inlined. aft", + "id": "tests_test_streammessage_no_chatsession_rationale_1" }, { - "label": "code:bash (git add main/app/prometheus/sandbox.py tests/test_sandbox_pe)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", - "source_location": "L533", - "community": 35, - "norm_label": "code:bash (git add main/app/prometheus/sandbox.py tests/test_sandbox_pe)", - "id": "plans_2026_07_17_sandbox_persistence_codeblock_8" + "label": "streamMessage inlines MCP setup \u2014 chatSession no longer exists.", + "file_type": "rationale", + "source_file": "tests/test_streammessage_no_chatsession.py", + "source_location": "L25", + "community": 138, + "norm_label": "streammessage inlines mcp setup \u2014 chatsession no longer exists.", + "id": "tests_test_streammessage_no_chatsession_rationale_25" }, { - "label": "Task 3: Agent Integration \u2014 Persistent Sandbox Lifecycle", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", - "source_location": "L540", - "community": 35, - "norm_label": "task 3: agent integration \u2014 persistent sandbox lifecycle", - "id": "plans_2026_07_17_sandbox_persistence_task_3_agent_integration_persistent_sandbox_lifecycle" + "label": "streamMessage yields text chunks via inlined MCP setup.", + "file_type": "rationale", + "source_file": "tests/test_streammessage_no_chatsession.py", + "source_location": "L33", + "community": 321, + "norm_label": "streammessage yields text chunks via inlined mcp setup.", + "id": "tests_test_streammessage_no_chatsession_rationale_33" }, { - "label": "code:python (# tests/test_agent_sandbox_integration.py \u2014 append)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", - "source_location": "L552", - "community": 35, - "norm_label": "code:python (# tests/test_agent_sandbox_integration.py \u2014 append)", - "id": "plans_2026_07_17_sandbox_persistence_codeblock_9" + "label": "chatSession attribute must not exist \u2014 MCP setup is inlined.", + "file_type": "rationale", + "source_file": "tests/test_streammessage_no_chatsession.py", + "source_location": "L77", + "community": 322, + "norm_label": "chatsession attribute must not exist \u2014 mcp setup is inlined.", + "id": "tests_test_streammessage_no_chatsession_rationale_77" }, { - "label": "code:python (# In streamMessage \u2014 replace sandbox_id = None with:)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", - "source_location": "L586", - "community": 35, - "norm_label": "code:python (# in streammessage \u2014 replace sandbox_id = none with:)", - "id": "plans_2026_07_17_sandbox_persistence_codeblock_10" + "label": "streamMessage handles function call loops via inlined MCP setup.", + "file_type": "rationale", + "source_file": "tests/test_streammessage_no_chatsession.py", + "source_location": "L100", + "community": 323, + "norm_label": "streammessage handles function call loops via inlined mcp setup.", + "id": "tests_test_streammessage_no_chatsession_rationale_100" }, { - "label": "code:bash (git add main/app/prometheus/agent.py tests/test_agent_sandbo)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", - "source_location": "L627", - "community": 35, - "norm_label": "code:bash (git add main/app/prometheus/agent.py tests/test_agent_sandbo)", - "id": "plans_2026_07_17_sandbox_persistence_codeblock_11" + "label": "test_thread_safety.py", + "file_type": "code", + "source_file": "tests/test_thread_safety.py", + "source_location": "L1", + "community": 172, + "norm_label": "test_thread_safety.py", + "id": "tests_test_thread_safety_py" }, { - "label": "Task 4: Cleanup Job \u2014 Expired Sandbox Sweeper", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", - "source_location": "L634", - "community": 35, - "norm_label": "task 4: cleanup job \u2014 expired sandbox sweeper", - "id": "plans_2026_07_17_sandbox_persistence_task_4_cleanup_job_expired_sandbox_sweeper" + "label": "TestGetSession", + "file_type": "code", + "source_file": "tests/test_thread_safety.py", + "source_location": "L21", + "community": 580, + "norm_label": "testgetsession", + "id": "tests_test_thread_safety_testgetsession" }, { - "label": "code:python (# tests/test_sandbox_persistence.py \u2014 append)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", - "source_location": "L646", - "community": 35, - "norm_label": "code:python (# tests/test_sandbox_persistence.py \u2014 append)", - "id": "plans_2026_07_17_sandbox_persistence_codeblock_12" + "label": ".test_same_session_within_same_thread()", + "file_type": "code", + "source_file": "tests/test_thread_safety.py", + "source_location": "L24", + "community": 580, + "norm_label": ".test_same_session_within_same_thread()", + "id": "tests_test_thread_safety_testgetsession_test_same_session_within_same_thread" }, { - "label": "code:python (# main/app/prometheus/sandbox_cleanup.py)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", - "source_location": "L700", - "community": 35, - "norm_label": "code:python (# main/app/prometheus/sandbox_cleanup.py)", - "id": "plans_2026_07_17_sandbox_persistence_codeblock_13" + "label": ".test_different_sessions_in_different_threads()", + "file_type": "code", + "source_file": "tests/test_thread_safety.py", + "source_location": "L32", + "community": 580, + "norm_label": ".test_different_sessions_in_different_threads()", + "id": "tests_test_thread_safety_testgetsession_test_different_sessions_in_different_threads" }, { - "label": "code:bash (git add main/app/prometheus/sandbox_cleanup.py tests/test_sa)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", - "source_location": "L746", - "community": 35, - "norm_label": "code:bash (git add main/app/prometheus/sandbox_cleanup.py tests/test_sa)", - "id": "plans_2026_07_17_sandbox_persistence_codeblock_14" + "label": ".test_isolation_under_high_concurrency()", + "file_type": "code", + "source_file": "tests/test_thread_safety.py", + "source_location": "L52", + "community": 580, + "norm_label": ".test_isolation_under_high_concurrency()", + "id": "tests_test_thread_safety_testgetsession_test_isolation_under_high_concurrency" }, { - "label": "Task 5: Full CI Verification", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", - "source_location": "L753", - "community": 35, - "norm_label": "task 5: full ci verification", - "id": "plans_2026_07_17_sandbox_persistence_task_5_full_ci_verification" + "label": ".test_session_is_requests_session()", + "file_type": "code", + "source_file": "tests/test_thread_safety.py", + "source_location": "L73", + "community": 580, + "norm_label": ".test_session_is_requests_session()", + "id": "tests_test_thread_safety_testgetsession_test_session_is_requests_session" }, { - "label": "code:bash (git add -A)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", - "source_location": "L764", - "community": 35, - "norm_label": "code:bash (git add -a)", - "id": "plans_2026_07_17_sandbox_persistence_codeblock_15" + "label": "TestDiscordHandlerThreadPool", + "file_type": "code", + "source_file": "tests/test_thread_safety.py", + "source_location": "L87", + "community": 122, + "norm_label": "testdiscordhandlerthreadpool", + "id": "tests_test_thread_safety_testdiscordhandlerthreadpool" }, { - "label": "Task 6: Docker Compose \u2014 Workspace Volume for Persistence", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", - "source_location": "L771", - "community": 35, - "norm_label": "task 6: docker compose \u2014 workspace volume for persistence", - "id": "plans_2026_07_17_sandbox_persistence_task_6_docker_compose_workspace_volume_for_persistence" + "label": ".test_executor_exists_and_is_bounded()", + "file_type": "code", + "source_file": "tests/test_thread_safety.py", + "source_location": "L90", + "community": 122, + "norm_label": ".test_executor_exists_and_is_bounded()", + "id": "tests_test_thread_safety_testdiscordhandlerthreadpool_test_executor_exists_and_is_bounded" }, { - "label": "code:yaml (# docker-compose.yml \u2014 add to api service volumes)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", - "source_location": "L782", - "community": 35, - "norm_label": "code:yaml (# docker-compose.yml \u2014 add to api service volumes)", - "id": "plans_2026_07_17_sandbox_persistence_codeblock_16" + "label": ".test_emit_submits_to_executor()", + "file_type": "code", + "source_file": "tests/test_thread_safety.py", + "source_location": "L98", + "community": 122, + "norm_label": ".test_emit_submits_to_executor()", + "id": "tests_test_thread_safety_testdiscordhandlerthreadpool_test_emit_submits_to_executor" }, { - "label": "code:yaml (# docker-compose.yml \u2014 add to api environment)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", - "source_location": "L797", - "community": 35, - "norm_label": "code:yaml (# docker-compose.yml \u2014 add to api environment)", - "id": "plans_2026_07_17_sandbox_persistence_codeblock_17" + "label": ".test_concurrent_emits_do_not_spawn_unbounded_threads()", + "file_type": "code", + "source_file": "tests/test_thread_safety.py", + "source_location": "L128", + "community": 122, + "norm_label": ".test_concurrent_emits_do_not_spawn_unbounded_threads()", + "id": "tests_test_thread_safety_testdiscordhandlerthreadpool_test_concurrent_emits_do_not_spawn_unbounded_threads" }, { - "label": "code:bash (git add docker-compose.yml)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", - "source_location": "L809", - "community": 35, - "norm_label": "code:bash (git add docker-compose.yml)", - "id": "plans_2026_07_17_sandbox_persistence_codeblock_18" + "label": "TestConcurrentGetSession", + "file_type": "code", + "source_file": "tests/test_thread_safety.py", + "source_location": "L175", + "community": 172, + "norm_label": "testconcurrentgetsession", + "id": "tests_test_thread_safety_testconcurrentgetsession" }, { - "label": "Summary", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", - "source_location": "L816", - "community": 35, - "norm_label": "summary", - "id": "plans_2026_07_17_sandbox_persistence_summary" + "label": ".test_getSession_returns_thread_local_sessions()", + "file_type": "code", + "source_file": "tests/test_thread_safety.py", + "source_location": "L178", + "community": 172, + "norm_label": ".test_getsession_returns_thread_local_sessions()", + "id": "tests_test_thread_safety_testconcurrentgetsession_test_getsession_returns_thread_local_sessions" }, { - "label": "task-1-report.md", - "file_type": "document", - "source_file": "docs/superpowers/plans/task-1-report.md", - "source_location": "L1", - "community": 175, - "norm_label": "task-1-report.md", - "id": "docs_superpowers_plans_task_1_report_md" + "label": ".test_connectivity_uses_getSession()", + "file_type": "code", + "source_file": "tests/test_thread_safety.py", + "source_location": "L199", + "community": 172, + "norm_label": ".test_connectivity_uses_getsession()", + "id": "tests_test_thread_safety_testconcurrentgetsession_test_connectivity_uses_getsession" }, { - "label": "Task 1 Report: PrometheusSandbox Model & Migration", - "file_type": "document", - "source_file": "docs/superpowers/plans/task-1-report.md", + "label": "Tests for thread safety utilities (Issues 5 & 6). Issue 5: DiscordHandler use", + "file_type": "rationale", + "source_file": "tests/test_thread_safety.py", "source_location": "L1", - "community": 175, - "norm_label": "task 1 report: prometheussandbox model & migration", - "id": "plans_task_1_report_task_1_report_prometheussandbox_model_migration" - }, - { - "label": "Files Created/Modified", - "file_type": "document", - "source_file": "docs/superpowers/plans/task-1-report.md", - "source_location": "L5", - "community": 175, - "norm_label": "files created/modified", - "id": "plans_task_1_report_files_created_modified" - }, - { - "label": "Test Results", - "file_type": "document", - "source_file": "docs/superpowers/plans/task-1-report.md", - "source_location": "L15", - "community": 175, - "norm_label": "test results", - "id": "plans_task_1_report_test_results" + "community": 172, + "norm_label": "tests for thread safety utilities (issues 5 & 6). issue 5: discordhandler use", + "id": "tests_test_thread_safety_rationale_1" }, { - "label": "code:block1 (tests/test_sandbox_persistence.py::TestPrometheusSandboxMode)", - "file_type": "document", - "source_file": "docs/superpowers/plans/task-1-report.md", - "source_location": "L17", - "community": 175, - "norm_label": "code:block1 (tests/test_sandbox_persistence.py::testprometheussandboxmode)", - "id": "plans_task_1_report_codeblock_1" + "label": "Verify that getSession() returns per-thread Session instances.", + "file_type": "rationale", + "source_file": "tests/test_thread_safety.py", + "source_location": "L22", + "community": 580, + "norm_label": "verify that getsession() returns per-thread session instances.", + "id": "tests_test_thread_safety_rationale_22" }, { - "label": "Commits", - "file_type": "document", - "source_file": "docs/superpowers/plans/task-1-report.md", + "label": "Calling getSession() twice in the same thread returns the same object.", + "file_type": "rationale", + "source_file": "tests/test_thread_safety.py", "source_location": "L25", - "community": 175, - "norm_label": "commits", - "id": "plans_task_1_report_commits" - }, - { - "label": "code:block2 (7fe4c6d feat: add PrometheusSandbox model for per-user sandb)", - "file_type": "document", - "source_file": "docs/superpowers/plans/task-1-report.md", - "source_location": "L27", - "community": 175, - "norm_label": "code:block2 (7fe4c6d feat: add prometheussandbox model for per-user sandb)", - "id": "plans_task_1_report_codeblock_2" + "community": 580, + "norm_label": "calling getsession() twice in the same thread returns the same object.", + "id": "tests_test_thread_safety_rationale_25" }, { - "label": "Concerns", - "file_type": "document", - "source_file": "docs/superpowers/plans/task-1-report.md", - "source_location": "L31", - "community": 175, - "norm_label": "concerns", - "id": "plans_task_1_report_concerns" + "label": "Two threads must NOT share a Session object.", + "file_type": "rationale", + "source_file": "tests/test_thread_safety.py", + "source_location": "L33", + "community": 580, + "norm_label": "two threads must not share a session object.", + "id": "tests_test_thread_safety_rationale_33" }, { - "label": "streamMessage should create a HarnessState and pass it to buildSystemPrompt.", + "label": "With 20 concurrent threads, every thread must get its own Session.", "file_type": "rationale", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L82", - "community": 324, - "norm_label": "streammessage should create a harnessstate and pass it to buildsystemprompt.", - "id": "tests_test_agent_state_integration_rationale_82" + "source_file": "tests/test_thread_safety.py", + "source_location": "L53", + "community": 580, + "norm_label": "with 20 concurrent threads, every thread must get its own session.", + "id": "tests_test_thread_safety_rationale_53" }, { - "label": "streamMessage should pass state to dispatchToolCall.", + "label": "The returned object must be a real requests.Session.", "file_type": "rationale", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L122", - "community": 325, - "norm_label": "streammessage should pass state to dispatchtoolcall.", - "id": "tests_test_agent_state_integration_rationale_122" + "source_file": "tests/test_thread_safety.py", + "source_location": "L74", + "community": 580, + "norm_label": "the returned object must be a real requests.session.", + "id": "tests_test_thread_safety_rationale_74" }, { - "label": "System prompt should instruct LLM about harness state usage.", + "label": "Verify that DiscordHandler submits to a bounded executor, not raw threads.", "file_type": "rationale", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L182", - "community": 93, - "norm_label": "system prompt should instruct llm about harness state usage.", - "id": "tests_test_agent_state_integration_rationale_182" + "source_file": "tests/test_thread_safety.py", + "source_location": "L88", + "community": 122, + "norm_label": "verify that discordhandler submits to a bounded executor, not raw threads.", + "id": "tests_test_thread_safety_rationale_88" }, { - "label": "System prompt should instruct LLM about memory vs state.", + "label": "The module-level discordExecutor must exist with max_workers <= 5.", "file_type": "rationale", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L190", - "community": 93, - "norm_label": "system prompt should instruct llm about memory vs state.", - "id": "tests_test_agent_state_integration_rationale_190" + "source_file": "tests/test_thread_safety.py", + "source_location": "L91", + "community": 122, + "norm_label": "the module-level discordexecutor must exist with max_workers <= 5.", + "id": "tests_test_thread_safety_rationale_91" }, { - "label": "Covers lines 114-115, 117-120, 122: existing session with verified ownership.", + "label": "DiscordHandler.emit() must use discordExecutor.submit, not Thread.start.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1042", - "community": 16, - "norm_label": "covers lines 114-115, 117-120, 122: existing session with verified ownership.", - "id": "tests_test_controllers_coverage_rationale_1042" + "source_file": "tests/test_thread_safety.py", + "source_location": "L99", + "community": 122, + "norm_label": "discordhandler.emit() must use discordexecutor.submit, not thread.start.", + "id": "tests_test_thread_safety_rationale_99" }, { - "label": "Covers lines 114-115: session ownership check fails.", + "label": "Many concurrent emit() calls must not create more threads than max_workers.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1083", - "community": 104, - "norm_label": "covers lines 114-115: session ownership check fails.", - "id": "tests_test_controllers_coverage_rationale_1083" + "source_file": "tests/test_thread_safety.py", + "source_location": "L129", + "community": 122, + "norm_label": "many concurrent emit() calls must not create more threads than max_workers.", + "id": "tests_test_thread_safety_rationale_129" }, { - "label": "Generic Exception in chat propagates to FastAPI's default 500 handler.", + "label": "Verify getSession returns thread-local sessions under concurrency.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1120", - "community": 16, - "norm_label": "generic exception in chat propagates to fastapi's default 500 handler.", - "id": "tests_test_controllers_coverage_rationale_1120" + "source_file": "tests/test_thread_safety.py", + "source_location": "L176", + "community": 172, + "norm_label": "verify getsession returns thread-local sessions under concurrency.", + "id": "tests_test_thread_safety_rationale_176" }, { - "label": "Covers line 18: GET /stocks/health.", + "label": "getSession() must give each thread its own Session.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1138", - "community": 498, - "norm_label": "covers line 18: get /stocks/health.", - "id": "tests_test_controllers_coverage_rationale_1138" + "source_file": "tests/test_thread_safety.py", + "source_location": "L179", + "community": 172, + "norm_label": "getsession() must give each thread its own session.", + "id": "tests_test_thread_safety_rationale_179" }, { - "label": "Covers line 35: GET /stocks/historical.", + "label": "connectivity.checkServiceConnection must call getSession(), not use a global Ses", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1152", - "community": 14, - "norm_label": "covers line 35: get /stocks/historical.", - "id": "tests_test_controllers_coverage_rationale_1152" + "source_file": "tests/test_thread_safety.py", + "source_location": "L200", + "community": 172, + "norm_label": "connectivity.checkserviceconnection must call getsession(), not use a global ses", + "id": "tests_test_thread_safety_rationale_200" }, { - "label": "Covers line 47: GET /stocks/fundamental.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1166", - "community": 14, - "norm_label": "covers line 47: get /stocks/fundamental.", - "id": "tests_test_controllers_coverage_rationale_1166" + "label": "test_type_aware_decay.py", + "file_type": "code", + "source_file": "tests/test_type_aware_decay.py", + "source_location": "L1", + "community": 570, + "norm_label": "test_type_aware_decay.py", + "id": "tests_test_type_aware_decay_py" }, { - "label": "Covers lines 52-53, 57-63: GET /stocks/key/generate. NOTE: stocksapi_cont", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1180", - "community": 14, - "norm_label": "covers lines 52-53, 57-63: get /stocks/key/generate. note: stocksapi_cont", - "id": "tests_test_controllers_coverage_rationale_1180" + "label": "_create()", + "file_type": "code", + "source_file": "tests/test_type_aware_decay.py", + "source_location": "L11", + "community": 570, + "norm_label": "_create()", + "id": "tests_test_type_aware_decay_create" }, { - "label": "Covers lines 52-53: user without GENERATE_API_KEYS permission gets 403.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1188", - "community": 14, - "norm_label": "covers lines 52-53: user without generate_api_keys permission gets 403.", - "id": "tests_test_controllers_coverage_rationale_1188" + "label": "TestTypeAwareDecay", + "file_type": "code", + "source_file": "tests/test_type_aware_decay.py", + "source_location": "L29", + "community": 570, + "norm_label": "testtypeawaredecay", + "id": "tests_test_type_aware_decay_testtypeawaredecay" }, { - "label": "Covers lines 57-60: admin bypasses permission check and generates key.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1196", - "community": 14, - "norm_label": "covers lines 57-60: admin bypasses permission check and generates key.", - "id": "tests_test_controllers_coverage_rationale_1196" + "label": ".test_preference_decays_slowly()", + "file_type": "code", + "source_file": "tests/test_type_aware_decay.py", + "source_location": "L30", + "community": 570, + "norm_label": ".test_preference_decays_slowly()", + "id": "tests_test_type_aware_decay_testtypeawaredecay_test_preference_decays_slowly" }, { - "label": "Covers lines 61-63: exception during key generation (admin path).", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1208", - "community": 14, - "norm_label": "covers lines 61-63: exception during key generation (admin path).", - "id": "tests_test_controllers_coverage_rationale_1208" + "label": ".test_context_decays_fast()", + "file_type": "code", + "source_file": "tests/test_type_aware_decay.py", + "source_location": "L36", + "community": 570, + "norm_label": ".test_context_decays_fast()", + "id": "tests_test_type_aware_decay_testtypeawaredecay_test_context_decays_fast" }, { - "label": "Covers lines 13, 17, 19-20, 22-27: UserManager.addRoleToUser.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1223", - "community": 560, - "norm_label": "covers lines 13, 17, 19-20, 22-27: usermanager.addroletouser.", - "id": "tests_test_controllers_coverage_rationale_1223" + "label": ".test_analysis_decays_normally()", + "file_type": "code", + "source_file": "tests/test_type_aware_decay.py", + "source_location": "L42", + "community": 570, + "norm_label": ".test_analysis_decays_normally()", + "id": "tests_test_type_aware_decay_testtypeawaredecay_test_analysis_decays_normally" }, { - "label": "Covers lines 17, 22-27: user found, role not present, role added.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1226", - "community": 560, - "norm_label": "covers lines 17, 22-27: user found, role not present, role added.", - "id": "tests_test_controllers_coverage_rationale_1226" + "label": ".test_feedback_decays_medium()", + "file_type": "code", + "source_file": "tests/test_type_aware_decay.py", + "source_location": "L48", + "community": 570, + "norm_label": ".test_feedback_decays_medium()", + "id": "tests_test_type_aware_decay_testtypeawaredecay_test_feedback_decays_medium" }, { - "label": "Covers line 27: user already has the role.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1243", - "community": 560, - "norm_label": "covers line 27: user already has the role.", - "id": "tests_test_controllers_coverage_rationale_1243" + "label": ".test_unknown_type_uses_default()", + "file_type": "code", + "source_file": "tests/test_type_aware_decay.py", + "source_location": "L54", + "community": 570, + "norm_label": ".test_unknown_type_uses_default()", + "id": "tests_test_type_aware_decay_testtypeawaredecay_test_unknown_type_uses_default" }, { - "label": "Covers lines 19-20: user not found raises 404.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1257", - "community": 528, - "norm_label": "covers lines 19-20: user not found raises 404.", - "id": "tests_test_controllers_coverage_rationale_1257" + "label": ".test_mixed_types_all_correct()", + "file_type": "code", + "source_file": "tests/test_type_aware_decay.py", + "source_location": "L60", + "community": 570, + "norm_label": ".test_mixed_types_all_correct()", + "id": "tests_test_type_aware_decay_testtypeawaredecay_test_mixed_types_all_correct" }, { - "label": "Covers lines 34, 36-38, 40-44, 46, 48-49, 51, 58-59, 61, 63-67: UserManager.getC", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1269", - "community": 493, - "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_1269" + "label": ".test_preference_survives_longer()", + "file_type": "code", + "source_file": "tests/test_type_aware_decay.py", + "source_location": "L76", + "community": 570, + "norm_label": ".test_preference_survives_longer()", + "id": "tests_test_type_aware_decay_testtypeawaredecay_test_preference_survives_longer" }, { - "label": "Covers lines 42-44: session validation fails.", + "label": "After 10 cycles, preference (0.99^10) > context (0.90^10).", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1301", - "community": 560, - "norm_label": "covers lines 42-44: session validation fails.", - "id": "tests_test_controllers_coverage_rationale_1301" + "source_file": "tests/test_type_aware_decay.py", + "source_location": "L77", + "community": 570, + "norm_label": "after 10 cycles, preference (0.99^10) > context (0.90^10).", + "id": "tests_test_type_aware_decay_rationale_77" }, { - "label": "Covers lines 48-49: user not in DB.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1317", - "community": 493, - "norm_label": "covers lines 48-49: user not in db.", - "id": "tests_test_controllers_coverage_rationale_1317" + "label": "test_user_deps.py", + "file_type": "code", + "source_file": "tests/test_user_deps.py", + "source_location": "L1", + "community": 482, + "norm_label": "test_user_deps.py", + "id": "tests_test_user_deps_py" }, { - "label": "Covers lines 65-67: unexpected exception.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1334", - "community": 493, - "norm_label": "covers lines 65-67: unexpected exception.", - "id": "tests_test_controllers_coverage_rationale_1334" + "label": "TestExtractTokenPayload", + "file_type": "code", + "source_file": "tests/test_user_deps.py", + "source_location": "L11", + "community": 98, + "norm_label": "testextracttokenpayload", + "id": "tests_test_user_deps_testextracttokenpayload" }, { - "label": "Covers lines 37-38, 46, 51, 58 (sessionId is None): skips session validation.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1351", - "community": 493, - "norm_label": "covers lines 37-38, 46, 51, 58 (sessionid is none): skips session validation.", - "id": "tests_test_controllers_coverage_rationale_1351" + "label": "._make_request()", + "file_type": "code", + "source_file": "tests/test_user_deps.py", + "source_location": "L14", + "community": 98, + "norm_label": "._make_request()", + "id": "tests_test_user_deps_testextracttokenpayload_make_request" }, { - "label": "Covers line 16: empty password raises ValueError.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1375", - "community": 524, - "norm_label": "covers line 16: empty password raises valueerror.", - "id": "tests_test_controllers_coverage_rationale_1375" + "label": ".test_missing_token_raises_401()", + "file_type": "code", + "source_file": "tests/test_user_deps.py", + "source_location": "L19", + "community": 98, + "norm_label": ".test_missing_token_raises_401()", + "id": "tests_test_user_deps_testextracttokenpayload_test_missing_token_raises_401" }, { - "label": "Covers lines 45-51: verifyAccessToken with expired and invalid tokens.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1385", - "community": 524, - "norm_label": "covers lines 45-51: verifyaccesstoken with expired and invalid tokens.", - "id": "tests_test_controllers_coverage_rationale_1385" + "label": ".test_x_access_token_header_used()", + "file_type": "code", + "source_file": "tests/test_user_deps.py", + "source_location": "L28", + "community": 98, + "norm_label": ".test_x_access_token_header_used()", + "id": "tests_test_user_deps_testextracttokenpayload_test_x_access_token_header_used" }, { - "label": "Covers lines 48-49: jwt.ExpiredSignatureError.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1388", - "community": 524, - "norm_label": "covers lines 48-49: jwt.expiredsignatureerror.", - "id": "tests_test_controllers_coverage_rationale_1388" + "label": ".test_authorization_bearer_header_used()", + "file_type": "code", + "source_file": "tests/test_user_deps.py", + "source_location": "L38", + "community": 98, + "norm_label": ".test_authorization_bearer_header_used()", + "id": "tests_test_user_deps_testextracttokenpayload_test_authorization_bearer_header_used" }, { - "label": "Covers lines 50-51: jwt.InvalidTokenError.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1404", - "community": 544, - "norm_label": "covers lines 50-51: jwt.invalidtokenerror.", - "id": "tests_test_controllers_coverage_rationale_1404" + "label": ".test_x_access_token_takes_priority_over_bearer()", + "file_type": "code", + "source_file": "tests/test_user_deps.py", + "source_location": "L48", + "community": 98, + "norm_label": ".test_x_access_token_takes_priority_over_bearer()", + "id": "tests_test_user_deps_testextracttokenpayload_test_x_access_token_takes_priority_over_bearer" }, { - "label": "Covers line 67: extractTokenPayload re-raises HTTPException from verifyAccessTok", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1416", - "community": 114, - "norm_label": "covers line 67: extracttokenpayload re-raises httpexception from verifyaccesstok", - "id": "tests_test_controllers_coverage_rationale_1416" + "label": ".test_invalid_token_raises_401()", + "file_type": "code", + "source_file": "tests/test_user_deps.py", + "source_location": "L58", + "community": 98, + "norm_label": ".test_invalid_token_raises_401()", + "id": "tests_test_user_deps_testextracttokenpayload_test_invalid_token_raises_401" }, { - "label": "Covers line 67: HTTPException raised by verifyAccessToken is re-raised.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1419", - "community": 114, - "norm_label": "covers line 67: httpexception raised by verifyaccesstoken is re-raised.", - "id": "tests_test_controllers_coverage_rationale_1419" + "label": ".test_empty_user_id_raises_401()", + "file_type": "code", + "source_file": "tests/test_user_deps.py", + "source_location": "L68", + "community": 98, + "norm_label": ".test_empty_user_id_raises_401()", + "id": "tests_test_user_deps_testextracttokenpayload_test_empty_user_id_raises_401" }, { - "label": "Covers line 13: UserManager.__init__.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1435", - "community": 498, - "norm_label": "covers line 13: usermanager.__init__.", - "id": "tests_test_controllers_coverage_rationale_1435" + "label": ".test_empty_bearer_value_raises_401()", + "file_type": "code", + "source_file": "tests/test_user_deps.py", + "source_location": "L77", + "community": 98, + "norm_label": ".test_empty_bearer_value_raises_401()", + "id": "tests_test_user_deps_testextracttokenpayload_test_empty_bearer_value_raises_401" }, { - "label": "streamMessage must yield dict chunks from async iterator.", - "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L157", - "community": 326, - "norm_label": "streammessage must yield dict chunks from async iterator.", - "id": "tests_test_prometheus_auth_coverage_rationale_157" + "label": ".test_non_bearer_auth_header_raises_401()", + "file_type": "code", + "source_file": "tests/test_user_deps.py", + "source_location": "L86", + "community": 98, + "norm_label": ".test_non_bearer_auth_header_raises_401()", + "id": "tests_test_user_deps_testextracttokenpayload_test_non_bearer_auth_header_raises_401" }, { - "label": "streamMessage must handle function_calls as a list (not dict).", + "label": "Tests for extractTokenPayload \u2014 the standalone token extraction dependency.", "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L208", - "community": 327, - "norm_label": "streammessage must handle function_calls as a list (not dict).", - "id": "tests_test_prometheus_auth_coverage_rationale_208" + "source_file": "tests/test_user_deps.py", + "source_location": "L12", + "community": 98, + "norm_label": "tests for extracttokenpayload \u2014 the standalone token extraction dependency.", + "id": "tests_test_user_deps_rationale_12" }, { - "label": "Cover all methods in chat.py (lines 11-120).", + "label": "Create a mock Starlette Request with given headers.", "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L278", - "community": 52, - "norm_label": "cover all methods in chat.py (lines 11-120).", - "id": "tests_test_prometheus_auth_coverage_rationale_278" + "source_file": "tests/test_user_deps.py", + "source_location": "L15", + "community": 98, + "norm_label": "create a mock starlette request with given headers.", + "id": "tests_test_user_deps_rationale_15" }, { - "label": "Cover all methods in authentication.py (lines 13-75).", + "label": "Authorization: Bearer (empty) \u2014 no token after Bearer.", "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L502", - "community": 88, - "norm_label": "cover all methods in authentication.py (lines 13-75).", - "id": "tests_test_prometheus_auth_coverage_rationale_502" + "source_file": "tests/test_user_deps.py", + "source_location": "L78", + "community": 98, + "norm_label": "authorization: bearer (empty) \u2014 no token after bearer.", + "id": "tests_test_user_deps_rationale_78" }, { - "label": "Cover all methods in session.py (lines 14-154).", + "label": "Authorization: Basic xxx \u2014 not Bearer, so no token found.", "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L679", - "community": 60, - "norm_label": "cover all methods in session.py (lines 14-154).", - "id": "tests_test_prometheus_auth_coverage_rationale_679" + "source_file": "tests/test_user_deps.py", + "source_location": "L87", + "community": 98, + "norm_label": "authorization: basic xxx \u2014 not bearer, so no token found.", + "id": "tests_test_user_deps_rationale_87" }, { - "label": "Exercises the tzinfo-is-None branch (line 144-148).", - "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L914", - "community": 190, - "norm_label": "exercises the tzinfo-is-none branch (line 144-148).", - "id": "tests_test_prometheus_auth_coverage_rationale_914" + "label": "test_vector_utils.py", + "file_type": "code", + "source_file": "tests/test_vector_utils.py", + "source_location": "L1", + "community": 131, + "norm_label": "test_vector_utils.py", + "id": "tests_test_vector_utils_py" }, { - "label": "Exercises the expiresAt-is-None branch (line 143).", - "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L928", - "community": 165, - "norm_label": "exercises the expiresat-is-none branch (line 143).", - "id": "tests_test_prometheus_auth_coverage_rationale_928" + "label": "TestBatchCosineSimilarity", + "file_type": "code", + "source_file": "tests/test_vector_utils.py", + "source_location": "L6", + "community": 13, + "norm_label": "testbatchcosinesimilarity", + "id": "tests_test_vector_utils_testbatchcosinesimilarity" }, { - "label": "Cover getGoogleSSO (lines 6-14).", - "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L947", - "community": 68, - "norm_label": "cover getgooglesso (lines 6-14).", - "id": "tests_test_prometheus_auth_coverage_rationale_947" + "label": ".test_empty_matrix()", + "file_type": "code", + "source_file": "tests/test_vector_utils.py", + "source_location": "L7", + "community": 13, + "norm_label": ".test_empty_matrix()", + "id": "tests_test_vector_utils_testbatchcosinesimilarity_test_empty_matrix" }, { - "label": "chatSession attribute must not exist \u2014 MCP setup is inlined.", - "file_type": "rationale", - "source_file": "tests/test_streammessage_no_chatsession.py", - "source_location": "L78", - "community": 328, - "norm_label": "chatsession attribute must not exist \u2014 mcp setup is inlined.", - "id": "tests_test_streammessage_no_chatsession_rationale_78" + "label": ".test_single_row()", + "file_type": "code", + "source_file": "tests/test_vector_utils.py", + "source_location": "L11", + "community": 13, + "norm_label": ".test_single_row()", + "id": "tests_test_vector_utils_testbatchcosinesimilarity_test_single_row" }, { - "label": "streamMessage handles function call loops via inlined MCP setup.", - "file_type": "rationale", - "source_file": "tests/test_streammessage_no_chatsession.py", - "source_location": "L101", - "community": 329, - "norm_label": "streammessage handles function call loops via inlined mcp setup.", - "id": "tests_test_streammessage_no_chatsession_rationale_101" + "label": ".test_multiple_rows()", + "file_type": "code", + "source_file": "tests/test_vector_utils.py", + "source_location": "L17", + "community": 13, + "norm_label": ".test_multiple_rows()", + "id": "tests_test_vector_utils_testbatchcosinesimilarity_test_multiple_rows" }, { - "label": "Search user's saved memories, preferences, and past analysis context. Use", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L16", - "community": 152, - "norm_label": "search user's saved memories, preferences, and past analysis context. use", - "id": "prometheus_tools_rationale_16" + "label": ".test_zero_query()", + "file_type": "code", + "source_file": "tests/test_vector_utils.py", + "source_location": "L32", + "community": 13, + "norm_label": ".test_zero_query()", + "id": "tests_test_vector_utils_testbatchcosinesimilarity_test_zero_query" }, { - "label": "Store a memory about the user's preferences, analysis results, or feedback.", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L42", - "community": 208, - "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", - "id": "prometheus_tools_rationale_42" + "label": "TestContentHash", + "file_type": "code", + "source_file": "tests/test_vector_utils.py", + "source_location": "L38", + "community": 131, + "norm_label": "testcontenthash", + "id": "tests_test_vector_utils_testcontenthash" }, { - "label": "Retrieve values from the harness state. Use this to recall intermediate results,", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L79", - "community": 8, - "norm_label": "retrieve values from the harness state. use this to recall intermediate results,", - "id": "prometheus_tools_rationale_79" + "label": ".test_deterministic()", + "file_type": "code", + "source_file": "tests/test_vector_utils.py", + "source_location": "L39", + "community": 131, + "norm_label": ".test_deterministic()", + "id": "tests_test_vector_utils_testcontenthash_test_deterministic" }, { - "label": "Read a file from the workspace. Args: path: Path to the file (e.", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L147", - "community": 525, - "norm_label": "read a file from the workspace. args: path: path to the file (e.", - "id": "prometheus_tools_rationale_147" + "label": ".test_different_inputs()", + "file_type": "code", + "source_file": "tests/test_vector_utils.py", + "source_location": "L42", + "community": 131, + "norm_label": ".test_different_inputs()", + "id": "tests_test_vector_utils_testcontenthash_test_different_inputs" }, { - "label": "List files in the workspace directory. Args: path: Directory pat", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L171", - "community": 523, - "norm_label": "list files in the workspace directory. args: path: directory pat", - "id": "prometheus_tools_rationale_171" + "label": ".test_hex_format()", + "file_type": "code", + "source_file": "tests/test_vector_utils.py", + "source_location": "L45", + "community": 131, + "norm_label": ".test_hex_format()", + "id": "tests_test_vector_utils_testcontenthash_test_hex_format" }, { - "label": "Keys with Jaccard > 0.8 should merge.", - "file_type": "rationale", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L30", - "community": 67, - "norm_label": "keys with jaccard > 0.8 should merge.", - "id": "tests_test_memory_dedup_rationale_30" + "label": "README.md", + "file_type": "document", + "source_file": "main/utils/models/all-MiniLM-L6-v2/README.md", + "source_location": "L1", + "community": 108, + "norm_label": "readme.md", + "id": "main_utils_models_all_minilm_l6_v2_readme_md" }, { - "label": "Keys with low similarity should not merge.", - "file_type": "rationale", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L40", - "community": 67, - "norm_label": "keys with low similarity should not merge.", - "id": "tests_test_memory_dedup_rationale_40" + "label": "all-MiniLM-L6-v2", + "file_type": "document", + "source_file": "main/utils/models/all-MiniLM-L6-v2/README.md", + "source_location": "L38", + "community": 108, + "norm_label": "all-minilm-l6-v2", + "id": "all_minilm_l6_v2_readme_all_minilm_l6_v2" }, { - "label": "Keys with Jaccard <= 0.8 should not merge.", - "file_type": "rationale", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L67", - "community": 67, - "norm_label": "keys with jaccard <= 0.8 should not merge.", - "id": "tests_test_memory_dedup_rationale_67" + "label": "Usage (Sentence-Transformers)", + "file_type": "document", + "source_file": "main/utils/models/all-MiniLM-L6-v2/README.md", + "source_location": "L41", + "community": 108, + "norm_label": "usage (sentence-transformers)", + "id": "all_minilm_l6_v2_readme_usage_sentence_transformers" }, { - "label": "Wire up mock forgevm AsyncClient that returns sandbox with all methods.", - "file_type": "rationale", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L9", - "community": 4, - "norm_label": "wire up mock forgevm asyncclient that returns sandbox with all methods.", - "id": "tests_test_sandbox_persistence_rationale_9" + "label": "code:block1 (pip install -U sentence-transformers)", + "file_type": "document", + "source_file": "main/utils/models/all-MiniLM-L6-v2/README.md", + "source_location": "L44", + "community": 108, + "norm_label": "code:block1 (pip install -u sentence-transformers)", + "id": "all_minilm_l6_v2_readme_codeblock_1" }, { - "label": "Enforce one active sandbox per user via application logic.", - "file_type": "rationale", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L52", - "community": 4, - "norm_label": "enforce one active sandbox per user via application logic.", - "id": "tests_test_sandbox_persistence_rationale_52" + "label": "code:python (from sentence_transformers import SentenceTransformer)", + "file_type": "document", + "source_file": "main/utils/models/all-MiniLM-L6-v2/README.md", + "source_location": "L49", + "community": 108, + "norm_label": "code:python (from sentence_transformers import sentencetransformer)", + "id": "all_minilm_l6_v2_readme_codeblock_2" }, { - "label": "syncToSandbox pushes host files into the sandbox.", - "file_type": "rationale", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L116", - "community": 330, - "norm_label": "synctosandbox pushes host files into the sandbox.", - "id": "tests_test_sandbox_persistence_rationale_116" + "label": "Usage (HuggingFace Transformers)", + "file_type": "document", + "source_file": "main/utils/models/all-MiniLM-L6-v2/README.md", + "source_location": "L58", + "community": 108, + "norm_label": "usage (huggingface transformers)", + "id": "all_minilm_l6_v2_readme_usage_huggingface_transformers" }, { - "label": "syncFromSandbox pulls sandbox files to host.", - "file_type": "rationale", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L135", - "community": 331, - "norm_label": "syncfromsandbox pulls sandbox files to host.", - "id": "tests_test_sandbox_persistence_rationale_135" + "label": "code:python (from transformers import AutoTokenizer, AutoModel)", + "file_type": "document", + "source_file": "main/utils/models/all-MiniLM-L6-v2/README.md", + "source_location": "L61", + "community": 108, + "norm_label": "code:python (from transformers import autotokenizer, automodel)", + "id": "all_minilm_l6_v2_readme_codeblock_3" }, { - "label": "syncToSandbox returns 0 when workspace is empty.", - "file_type": "rationale", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L155", - "community": 332, - "norm_label": "synctosandbox returns 0 when workspace is empty.", - "id": "tests_test_sandbox_persistence_rationale_155" + "label": "Background", + "file_type": "document", + "source_file": "main/utils/models/all-MiniLM-L6-v2/README.md", + "source_location": "L99", + "community": 108, + "norm_label": "background", + "id": "all_minilm_l6_v2_readme_background" }, { - "label": "sandbox_cleanup.py", - "file_type": "code", - "source_file": "main/app/prometheus/sandbox_cleanup.py", - "source_location": "L1", - "community": 4, - "norm_label": "sandbox_cleanup.py", - "id": "main_app_prometheus_sandbox_cleanup_py" + "label": "Intended uses", + "file_type": "document", + "source_file": "main/utils/models/all-MiniLM-L6-v2/README.md", + "source_location": "L110", + "community": 108, + "norm_label": "intended uses", + "id": "all_minilm_l6_v2_readme_intended_uses" }, { - "label": "cleanup_expired_sandboxes()", - "file_type": "code", - "source_file": "main/app/prometheus/sandbox_cleanup.py", - "source_location": "L9", - "community": 4, - "norm_label": "cleanup_expired_sandboxes()", - "id": "prometheus_sandbox_cleanup_cleanup_expired_sandboxes" + "label": "Training procedure", + "file_type": "document", + "source_file": "main/utils/models/all-MiniLM-L6-v2/README.md", + "source_location": "L118", + "community": 108, + "norm_label": "training procedure", + "id": "all_minilm_l6_v2_readme_training_procedure" }, { - "label": "Remove DB mappings for sandboxes that no longer exist in ForgeVM.", - "file_type": "rationale", - "source_file": "main/app/prometheus/sandbox_cleanup.py", - "source_location": "L10", - "community": 4, - "norm_label": "remove db mappings for sandboxes that no longer exist in forgevm.", - "id": "prometheus_sandbox_cleanup_rationale_10" + "label": "Pre-training", + "file_type": "document", + "source_file": "main/utils/models/all-MiniLM-L6-v2/README.md", + "source_location": "L120", + "community": 108, + "norm_label": "pre-training", + "id": "all_minilm_l6_v2_readme_pre_training" }, { - "label": "test_agent_import_sandbox_manager()", - "file_type": "code", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L53", - "community": 24, - "norm_label": "test_agent_import_sandbox_manager()", - "id": "tests_test_agent_sandbox_integration_test_agent_import_sandbox_manager" + "label": "Fine-tuning", + "file_type": "document", + "source_file": "main/utils/models/all-MiniLM-L6-v2/README.md", + "source_location": "L124", + "community": 108, + "norm_label": "fine-tuning", + "id": "all_minilm_l6_v2_readme_fine_tuning" }, { - "label": "test_destroy_still_available()", - "file_type": "code", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L60", - "community": 24, - "norm_label": "test_destroy_still_available()", - "id": "tests_test_agent_sandbox_integration_test_destroy_still_available" + "label": "Hyper parameters", + "file_type": "document", + "source_file": "main/utils/models/all-MiniLM-L6-v2/README.md", + "source_location": "L129", + "community": 108, + "norm_label": "hyper parameters", + "id": "all_minilm_l6_v2_readme_hyper_parameters" }, { - "label": "destroy() still exists for explicit user requests.", - "file_type": "rationale", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L61", - "community": 333, - "norm_label": "destroy() still exists for explicit user requests.", - "id": "tests_test_agent_sandbox_integration_rationale_61" + "label": "Training data", + "file_type": "document", + "source_file": "main/utils/models/all-MiniLM-L6-v2/README.md", + "source_location": "L135", + "community": 108, + "norm_label": "training data", + "id": "all_minilm_l6_v2_readme_training_data" }, { - "label": "Verify agent.py no longer calls SandboxManager.create directly.", - "file_type": "rationale", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L66", - "community": 334, - "norm_label": "verify agent.py no longer calls sandboxmanager.create directly.", - "id": "tests_test_agent_sandbox_integration_rationale_66" + "label": "ToolCard()", + "file_type": "code", + "source_file": "frontend/src/components/AgentLoop.jsx", + "source_location": "L3", + "community": 150, + "norm_label": "toolcard()", + "id": "components_agentloop_toolcard" }, { - "label": "TestSandboxCleanup", - "file_type": "code", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L164", - "community": 4, - "norm_label": "testsandboxcleanup", - "id": "tests_test_sandbox_persistence_testsandboxcleanup" + "label": "2026-07-17-observable-agent-loop.md", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-17-observable-agent-loop.md", + "source_location": "L1", + "community": 70, + "norm_label": "2026-07-17-observable-agent-loop.md", + "id": "docs_superpowers_plans_2026_07_17_observable_agent_loop_md" }, { - "label": "test_cleanup_removes_dead_mappings()", - "file_type": "code", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L167", - "community": 4, - "norm_label": "test_cleanup_removes_dead_mappings()", - "id": "tests_test_sandbox_persistence_test_cleanup_removes_dead_mappings" + "label": "Observable Agent Loop \u2014 Implementation Plan", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-17-observable-agent-loop.md", + "source_location": "L1", + "community": 70, + "norm_label": "observable agent loop \u2014 implementation plan", + "id": "plans_2026_07_17_observable_agent_loop_observable_agent_loop_implementation_plan" }, { - "label": "test_cleanup_keeps_alive_sandboxes()", - "file_type": "code", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L187", - "community": 4, - "norm_label": "test_cleanup_keeps_alive_sandboxes()", - "id": "tests_test_sandbox_persistence_test_cleanup_keeps_alive_sandboxes" + "label": "Context", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-17-observable-agent-loop.md", + "source_location": "L13", + "community": 70, + "norm_label": "context", + "id": "plans_2026_07_17_observable_agent_loop_context" }, { - "label": "Mappings for dead sandboxes are removed.", - "file_type": "rationale", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L168", - "community": 335, - "norm_label": "mappings for dead sandboxes are removed.", - "id": "tests_test_sandbox_persistence_rationale_168" + "label": "Current State", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-17-observable-agent-loop.md", + "source_location": "L15", + "community": 70, + "norm_label": "current state", + "id": "plans_2026_07_17_observable_agent_loop_current_state" }, { - "label": "Mappings for alive sandboxes are kept.", - "file_type": "rationale", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L188", - "community": 336, - "norm_label": "mappings for alive sandboxes are kept.", - "id": "tests_test_sandbox_persistence_rationale_188" + "label": "What Changes", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-17-observable-agent-loop.md", + "source_location": "L22", + "community": 70, + "norm_label": "what changes", + "id": "plans_2026_07_17_observable_agent_loop_what_changes" }, { - "label": "PrometheusMemory", - "file_type": "code", - "source_file": "main/models/memory.py", - "source_location": "L7", - "community": 140, - "norm_label": "prometheusmemory", - "id": "models_memory_usermemory" + "label": "File Structure", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-17-observable-agent-loop.md", + "source_location": "L29", + "community": 70, + "norm_label": "file structure", + "id": "plans_2026_07_17_observable_agent_loop_file_structure" }, { - "label": ".sendMessage()", - "file_type": "code", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L181", - "community": 116, - "norm_label": ".sendmessage()", - "id": "prometheus_agent_prometheus_sendmessage" + "label": "Task 1: Stream Tool Events via SSE", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-17-observable-agent-loop.md", + "source_location": "L40", + "community": 70, + "norm_label": "task 1: stream tool events via sse", + "id": "plans_2026_07_17_observable_agent_loop_task_1_stream_tool_events_via_sse" }, { - "label": "syncWorkspace()", - "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L135", - "community": 69, - "norm_label": "syncworkspace()", - "id": "prometheus_sandbox_syncworkspace" + "label": "code:python (for fc in function_calls:)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-17-observable-agent-loop.md", + "source_location": "L55", + "community": 70, + "norm_label": "code:python (for fc in function_calls:)", + "id": "plans_2026_07_17_observable_agent_loop_codeblock_1" }, { - "label": "restoreWorkspace()", - "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L149", - "community": 69, - "norm_label": "restoreworkspace()", - "id": "prometheus_sandbox_restoreworkspace" + "label": "code:python (turn_end_event = {)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-17-observable-agent-loop.md", + "source_location": "L88", + "community": 70, + "norm_label": "code:python (turn_end_event = {)", + "id": "plans_2026_07_17_observable_agent_loop_codeblock_2" }, { - "label": "_saveBackup()", - "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L160", - "community": 69, - "norm_label": "_savebackup()", - "id": "prometheus_sandbox_savebackup" + "label": "code:bash (git add main/app/prometheus/agent.py)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-17-observable-agent-loop.md", + "source_location": "L115", + "community": 70, + "norm_label": "code:bash (git add main/app/prometheus/agent.py)", + "id": "plans_2026_07_17_observable_agent_loop_codeblock_3" }, { - "label": "_loadBackup()", - "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L169", - "community": 69, - "norm_label": "_loadbackup()", - "id": "prometheus_sandbox_loadbackup" + "label": "Task 2: Create the Testing Frontend", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-17-observable-agent-loop.md", + "source_location": "L122", + "community": 70, + "norm_label": "task 2: create the testing frontend", + "id": "plans_2026_07_17_observable_agent_loop_task_2_create_the_testing_frontend" }, { - "label": "Return existing sandbox if alive, otherwise create a new one. When a DB", - "file_type": "rationale", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L45", - "community": 337, - "norm_label": "return existing sandbox if alive, otherwise create a new one. when a db", - "id": "prometheus_sandbox_rationale_45" + "label": "code:bash (mkdir -p main/app/prometheus/static)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-17-observable-agent-loop.md", + "source_location": "L133", + "community": 70, + "norm_label": "code:bash (mkdir -p main/app/prometheus/static)", + "id": "plans_2026_07_17_observable_agent_loop_codeblock_4" }, { - "label": "Snapshot every file in /workspace as a {path: content} dict.", - "file_type": "rationale", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L136", - "community": 338, - "norm_label": "snapshot every file in /workspace as a {path: content} dict.", - "id": "prometheus_sandbox_rationale_136" + "label": "code:javascript (// Event types from the stream:)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-17-observable-agent-loop.md", + "source_location": "L148", + "community": 70, + "norm_label": "code:javascript (// event types from the stream:)", + "id": "plans_2026_07_17_observable_agent_loop_codeblock_5" }, { - "label": "Write a {path: content} dict back into the sandbox.", - "file_type": "rationale", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L150", - "community": 339, - "norm_label": "write a {path: content} dict back into the sandbox.", - "id": "prometheus_sandbox_rationale_150" + "label": "code:python (from fastapi.responses import FileResponse)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-17-observable-agent-loop.md", + "source_location": "L193", + "community": 70, + "norm_label": "code:python (from fastapi.responses import fileresponse)", + "id": "plans_2026_07_17_observable_agent_loop_codeblock_6" }, { - "label": "Persist workspace files to the host volume as JSON.", - "file_type": "rationale", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L161", - "community": 340, - "norm_label": "persist workspace files to the host volume as json.", - "id": "prometheus_sandbox_rationale_161" + "label": "code:bash (git add main/app/prometheus/static/index.html main/controlle)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-17-observable-agent-loop.md", + "source_location": "L216", + "community": 70, + "norm_label": "code:bash (git add main/app/prometheus/static/index.html main/controlle)", + "id": "plans_2026_07_17_observable_agent_loop_codeblock_7" }, { - "label": "Load workspace backup from host volume, or return {} if none.", - "file_type": "rationale", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L170", - "community": 341, - "norm_label": "load workspace backup from host volume, or return {} if none.", - "id": "prometheus_sandbox_rationale_170" + "label": "Task 3: Verify End-to-End", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-17-observable-agent-loop.md", + "source_location": "L223", + "community": 70, + "norm_label": "task 3: verify end-to-end", + "id": "plans_2026_07_17_observable_agent_loop_task_3_verify_end_to_end" }, { - "label": "Destroy a sandbox and optionally remove its DB mapping.", - "file_type": "rationale", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L179", - "community": 342, - "norm_label": "destroy a sandbox and optionally remove its db mapping.", - "id": "prometheus_sandbox_rationale_179" + "label": "SSE Event Flow (Reference)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-17-observable-agent-loop.md", + "source_location": "L240", + "community": 70, + "norm_label": "sse event flow (reference)", + "id": "plans_2026_07_17_observable_agent_loop_sse_event_flow_reference" }, { - "label": "Read a file from the sandbox filesystem. Args: path: Absolute pa", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L131", - "community": 525, - "norm_label": "read a file from the sandbox filesystem. args: path: absolute pa", - "id": "prometheus_tools_rationale_131" + "label": "code:block8 (Frontend Backend (agent.py) )", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-17-observable-agent-loop.md", + "source_location": "L242", + "community": 70, + "norm_label": "code:block8 (frontend backend (agent.py) )", + "id": "plans_2026_07_17_observable_agent_loop_codeblock_8" }, { - "label": "chat()", - "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L111", - "community": 84, - "norm_label": "chat()", - "id": "controller_prometheus_controller_chat" + "label": "Design Notes", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-17-observable-agent-loop.md", + "source_location": "L271", + "community": 70, + "norm_label": "design notes", + "id": "plans_2026_07_17_observable_agent_loop_design_notes" }, { - "label": "test_sync_empty_workspace_skips_save()", - "file_type": "code", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L42", - "community": 24, - "norm_label": "test_sync_empty_workspace_skips_save()", - "id": "tests_test_agent_sandbox_integration_test_sync_empty_workspace_skips_save" + "label": "2026-07-18-observable-agent-loop.md", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", + "source_location": "L1", + "community": 31, + "norm_label": "2026-07-18-observable-agent-loop.md", + "id": "docs_superpowers_plans_2026_07_18_observable_agent_loop_md" }, { - "label": "Agent module can import SandboxManager.", - "file_type": "rationale", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L60", - "community": 343, - "norm_label": "agent module can import sandboxmanager.", - "id": "tests_test_agent_sandbox_integration_rationale_60" + "label": "Observable Agent Loop \u2014 Implementation Plan", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", + "source_location": "L1", + "community": 31, + "norm_label": "observable agent loop \u2014 implementation plan", + "id": "plans_2026_07_18_observable_agent_loop_observable_agent_loop_implementation_plan" }, { - "label": "destroy() still exists for explicit user requests.", - "file_type": "rationale", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L70", - "community": 344, - "norm_label": "destroy() still exists for explicit user requests.", - "id": "tests_test_agent_sandbox_integration_rationale_70" + "label": "Global Constraints", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", + "source_location": "L11", + "community": 31, + "norm_label": "global constraints", + "id": "plans_2026_07_18_observable_agent_loop_global_constraints" }, { - "label": "Verify agent.py no longer calls SandboxManager.create directly.", - "file_type": "rationale", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L75", - "community": 345, - "norm_label": "verify agent.py no longer calls sandboxmanager.create directly.", - "id": "tests_test_agent_sandbox_integration_rationale_75" + "label": "File Map", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", + "source_location": "L21", + "community": 31, + "norm_label": "file map", + "id": "plans_2026_07_18_observable_agent_loop_file_map" }, { - "label": "test_read_file()", - "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L43", - "community": 2, - "norm_label": "test_read_file()", - "id": "tests_test_sandbox_test_read_file" + "label": "Task 1: Backend \u2014 Yield tool events to SSE", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", + "source_location": "L34", + "community": 31, + "norm_label": "task 1: backend \u2014 yield tool events to sse", + "id": "plans_2026_07_18_observable_agent_loop_task_1_backend_yield_tool_events_to_sse" }, { - "label": "test_write_file()", - "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L51", - "community": 2, - "norm_label": "test_write_file()", - "id": "tests_test_sandbox_test_write_file" + "label": "code:python (def emit_tool_call(self, toolName: str, args: dict, turnNumb)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", + "source_location": "L48", + "community": 31, + "norm_label": "code:python (def emit_tool_call(self, toolname: str, args: dict, turnnumb)", + "id": "plans_2026_07_18_observable_agent_loop_codeblock_1" }, { - "label": "test_list_files()", - "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L59", - "community": 2, - "norm_label": "test_list_files()", - "id": "tests_test_sandbox_test_list_files" + "label": "code:python (# After loop.emit_tool_call(...))", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", + "source_location": "L69", + "community": 31, + "norm_label": "code:python (# after loop.emit_tool_call(...))", + "id": "plans_2026_07_18_observable_agent_loop_codeblock_2" }, { - "label": "test_write_file_returns_false_on_error()", - "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L102", - "community": 2, - "norm_label": "test_write_file_returns_false_on_error()", - "id": "tests_test_sandbox_test_write_file_returns_false_on_error" + "label": "code:bash (git add main/app/prometheus/agent.py main/app/prometheus/eve)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", + "source_location": "L87", + "community": 31, + "norm_label": "code:bash (git add main/app/prometheus/agent.py main/app/prometheus/eve)", + "id": "plans_2026_07_18_observable_agent_loop_codeblock_3" }, { - "label": "Wire up mock forgevm AsyncClient that returns sandbox with all methods.", - "file_type": "rationale", - "source_file": "tests/test_sandbox.py", - "source_location": "L7", - "community": 2, - "norm_label": "wire up mock forgevm asyncclient that returns sandbox with all methods.", - "id": "tests_test_sandbox_rationale_7" + "label": "Task 2: Frontend \u2014 Update api.js to dispatch tool events", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", + "source_location": "L94", + "community": 31, + "norm_label": "task 2: frontend \u2014 update api.js to dispatch tool events", + "id": "plans_2026_07_18_observable_agent_loop_task_2_frontend_update_api_js_to_dispatch_tool_events" }, { - "label": "test_sync_workspace()", - "file_type": "code", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L114", - "community": 4, - "norm_label": "test_sync_workspace()", - "id": "tests_test_sandbox_persistence_test_sync_workspace" + "label": "code:javascript (export async function streamChat(query, sessionId, onChunk, )", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", + "source_location": "L107", + "community": 31, + "norm_label": "code:javascript (export async function streamchat(query, sessionid, onchunk, )", + "id": "plans_2026_07_18_observable_agent_loop_codeblock_4" }, { - "label": "test_restore_workspace()", - "file_type": "code", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L132", - "community": 4, - "norm_label": "test_restore_workspace()", - "id": "tests_test_sandbox_persistence_test_restore_workspace" + "label": "code:javascript (try {)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", + "source_location": "L115", + "community": 31, + "norm_label": "code:javascript (try {)", + "id": "plans_2026_07_18_observable_agent_loop_codeblock_5" }, { - "label": "Wire up mock forgevm AsyncClient that returns sandbox with all methods.", - "file_type": "rationale", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L8", - "community": 4, - "norm_label": "wire up mock forgevm asyncclient that returns sandbox with all methods.", - "id": "tests_test_sandbox_persistence_rationale_8" + "label": "code:bash (git add frontend/src/api.js)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", + "source_location": "L134", + "community": 31, + "norm_label": "code:bash (git add frontend/src/api.js)", + "id": "plans_2026_07_18_observable_agent_loop_codeblock_6" }, { - "label": "Enforce one active sandbox per user via application logic.", - "file_type": "rationale", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L51", - "community": 4, - "norm_label": "enforce one active sandbox per user via application logic.", - "id": "tests_test_sandbox_persistence_rationale_51" - }, - { - "label": "Mappings for dead sandboxes are removed.", - "file_type": "rationale", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L145", - "community": 346, - "norm_label": "mappings for dead sandboxes are removed.", - "id": "tests_test_sandbox_persistence_rationale_145" - }, - { - "label": "Mappings for alive sandboxes are kept.", - "file_type": "rationale", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L165", - "community": 347, - "norm_label": "mappings for alive sandboxes are kept.", - "id": "tests_test_sandbox_persistence_rationale_165" - }, - { - "label": "Snapshot every file in /workspace as a {path: content} dict.", - "file_type": "rationale", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L135", - "community": 348, - "norm_label": "snapshot every file in /workspace as a {path: content} dict.", - "id": "prometheus_sandbox_rationale_135" - }, - { - "label": "Write a {path: content} dict back into the sandbox.", - "file_type": "rationale", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L149", - "community": 349, - "norm_label": "write a {path: content} dict back into the sandbox.", - "id": "prometheus_sandbox_rationale_149" - }, - { - "label": "Persist workspace files to the host volume as JSON.", - "file_type": "rationale", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L160", - "community": 350, - "norm_label": "persist workspace files to the host volume as json.", - "id": "prometheus_sandbox_rationale_160" - }, - { - "label": "Load workspace backup from host volume, or return {} if none.", - "file_type": "rationale", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L169", - "community": 351, - "norm_label": "load workspace backup from host volume, or return {} if none.", - "id": "prometheus_sandbox_rationale_169" + "label": "Task 3: Frontend \u2014 Add AgentLoop component", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", + "source_location": "L141", + "community": 31, + "norm_label": "task 3: frontend \u2014 add agentloop component", + "id": "plans_2026_07_18_observable_agent_loop_task_3_frontend_add_agentloop_component" }, { - "label": "Destroy a sandbox and optionally remove its DB mapping.", - "file_type": "rationale", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L178", - "community": 352, - "norm_label": "destroy a sandbox and optionally remove its db mapping.", - "id": "prometheus_sandbox_rationale_178" + "label": "code:jsx (import { useState } from 'react';)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", + "source_location": "L152", + "community": 31, + "norm_label": "code:jsx (import { usestate } from 'react';)", + "id": "plans_2026_07_18_observable_agent_loop_codeblock_7" }, { - "label": "Read a file from the sandbox filesystem. Args: path: Absolute pa", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L130", - "community": 525, - "norm_label": "read a file from the sandbox filesystem. args: path: absolute pa", - "id": "prometheus_tools_rationale_130" + "label": "code:bash (git add frontend/src/components/AgentLoop.jsx)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", + "source_location": "L215", + "community": 31, + "norm_label": "code:bash (git add frontend/src/components/agentloop.jsx)", + "id": "plans_2026_07_18_observable_agent_loop_codeblock_8" }, { - "label": "TestAgentSandboxIntegration", - "file_type": "code", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L7", - "community": 529, - "norm_label": "testagentsandboxintegration", - "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration" + "label": "Task 4: Frontend \u2014 Wire AgentLoop into App.jsx", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", + "source_location": "L222", + "community": 31, + "norm_label": "task 4: frontend \u2014 wire agentloop into app.jsx", + "id": "plans_2026_07_18_observable_agent_loop_task_4_frontend_wire_agentloop_into_app_jsx" }, { - "label": ".test_build_system_prompt_includes_sandbox_instructions()", - "file_type": "code", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L8", - "community": 529, - "norm_label": ".test_build_system_prompt_includes_sandbox_instructions()", - "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_build_system_prompt_includes_sandbox_instructions" + "label": "code:javascript (const [toolEvents, setToolEvents] = useState([]);)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", + "source_location": "L235", + "community": 31, + "norm_label": "code:javascript (const [toolevents, settoolevents] = usestate([]);)", + "id": "plans_2026_07_18_observable_agent_loop_codeblock_9" }, { - "label": ".test_build_system_prompt_includes_state_instructions()", - "file_type": "code", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L14", - "community": 529, - "norm_label": ".test_build_system_prompt_includes_state_instructions()", - "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_build_system_prompt_includes_state_instructions" + "label": "code:javascript (setToolEvents([]);)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", + "source_location": "L244", + "community": 31, + "norm_label": "code:javascript (settoolevents([]);)", + "id": "plans_2026_07_18_observable_agent_loop_codeblock_10" }, { - "label": ".test_build_system_prompt_with_state()", - "file_type": "code", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L19", - "community": 529, - "norm_label": ".test_build_system_prompt_with_state()", - "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_build_system_prompt_with_state" + "label": "code:javascript (setToolEvents([]);)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", + "source_location": "L251", + "community": 31, + "norm_label": "code:javascript (settoolevents([]);)", + "id": "plans_2026_07_18_observable_agent_loop_codeblock_11" }, { - "label": "test_streamMessage_creates_sandbox_on_execute_code()", - "file_type": "code", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L28", - "community": 24, - "norm_label": "test_streammessage_creates_sandbox_on_execute_code()", - "id": "tests_test_agent_sandbox_integration_test_streammessage_creates_sandbox_on_execute_code" + "label": "code:javascript (await streamChat()", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", + "source_location": "L260", + "community": 31, + "norm_label": "code:javascript (await streamchat()", + "id": "plans_2026_07_18_observable_agent_loop_codeblock_12" }, { - "label": "TestPremiumCheck", - "file_type": "code", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L36", - "community": 24, - "norm_label": "testpremiumcheck", - "id": "tests_test_agent_sandbox_integration_testpremiumcheck" + "label": "code:jsx (
)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", + "source_location": "L278", + "community": 31, + "norm_label": "code:jsx (
)", + "id": "plans_2026_07_18_observable_agent_loop_codeblock_13" }, { - "label": ".test_premium_user_has_sandbox_access()", - "file_type": "code", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L39", - "community": 24, - "norm_label": ".test_premium_user_has_sandbox_access()", - "id": "tests_test_agent_sandbox_integration_testpremiumcheck_test_premium_user_has_sandbox_access" + "label": "code:javascript (import AgentLoop from './components/AgentLoop';)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", + "source_location": "L288", + "community": 31, + "norm_label": "code:javascript (import agentloop from './components/agentloop';)", + "id": "plans_2026_07_18_observable_agent_loop_codeblock_14" }, { - "label": ".test_admin_user_has_sandbox_access()", - "file_type": "code", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L45", - "community": 24, - "norm_label": ".test_admin_user_has_sandbox_access()", - "id": "tests_test_agent_sandbox_integration_testpremiumcheck_test_admin_user_has_sandbox_access" + "label": "code:bash (git add frontend/src/App.jsx)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", + "source_location": "L294", + "community": 31, + "norm_label": "code:bash (git add frontend/src/app.jsx)", + "id": "plans_2026_07_18_observable_agent_loop_codeblock_15" }, { - "label": ".test_free_user_no_sandbox_access()", - "file_type": "code", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L51", - "community": 24, - "norm_label": ".test_free_user_no_sandbox_access()", - "id": "tests_test_agent_sandbox_integration_testpremiumcheck_test_free_user_no_sandbox_access" + "label": "Task 5: Frontend \u2014 Add CSS styles", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", + "source_location": "L301", + "community": 31, + "norm_label": "task 5: frontend \u2014 add css styles", + "id": "plans_2026_07_18_observable_agent_loop_task_5_frontend_add_css_styles" }, { - "label": ".test_no_user_no_sandbox_access()", - "file_type": "code", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L57", - "community": 24, - "norm_label": ".test_no_user_no_sandbox_access()", - "id": "tests_test_agent_sandbox_integration_testpremiumcheck_test_no_user_no_sandbox_access" + "label": "code:css (/* Agent Loop */)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", + "source_location": "L314", + "community": 31, + "norm_label": "code:css (/* agent loop */)", + "id": "plans_2026_07_18_observable_agent_loop_codeblock_16" }, { - "label": "Verify on-demand sandbox is created when LLM calls execute_code.", - "file_type": "rationale", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L29", - "community": 353, - "norm_label": "verify on-demand sandbox is created when llm calls execute_code.", - "id": "tests_test_agent_sandbox_integration_rationale_29" + "label": "code:bash (git add frontend/src/App.css)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", + "source_location": "L337", + "community": 31, + "norm_label": "code:bash (git add frontend/src/app.css)", + "id": "plans_2026_07_18_observable_agent_loop_codeblock_17" }, { - "label": "Test the premium gating logic used in streamMessage.", - "file_type": "rationale", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L37", - "community": 24, - "norm_label": "test the premium gating logic used in streammessage.", - "id": "tests_test_agent_sandbox_integration_rationale_37" + "label": "Task 6: Integration test", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", + "source_location": "L344", + "community": 31, + "norm_label": "task 6: integration test", + "id": "plans_2026_07_18_observable_agent_loop_task_6_integration_test" }, { - "label": "Enforce one active sandbox per user via application logic.", - "file_type": "rationale", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L30", - "community": 4, - "norm_label": "enforce one active sandbox per user via application logic.", - "id": "tests_test_sandbox_persistence_rationale_30" + "label": "code:bash (docker compose up -d --build)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", + "source_location": "L355", + "community": 31, + "norm_label": "code:bash (docker compose up -d --build)", + "id": "plans_2026_07_18_observable_agent_loop_codeblock_18" }, { - "label": "Search user's saved memories, preferences, and past analysis context. Use", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L15", - "community": 152, - "norm_label": "search user's saved memories, preferences, and past analysis context. use", - "id": "prometheus_tools_rationale_15" + "label": "code:bash (cd frontend && npx vitest run)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", + "source_location": "L374", + "community": 31, + "norm_label": "code:bash (cd frontend && npx vitest run)", + "id": "plans_2026_07_18_observable_agent_loop_codeblock_19" }, { - "label": "Store a memory about the user's preferences, analysis results, or feedback.", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L41", - "community": 208, - "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", - "id": "prometheus_tools_rationale_41" + "label": "code:bash (git add -A && git commit -m \"observable agent loop: backend )", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-18-observable-agent-loop.md", + "source_location": "L382", + "community": 31, + "norm_label": "code:bash (git add -a && git commit -m \"observable agent loop: backend )", + "id": "plans_2026_07_18_observable_agent_loop_codeblock_20" }, { - "label": "Retrieve values from the harness state. Use this to recall intermediate results,", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L78", - "community": 8, - "norm_label": "retrieve values from the harness state. use this to recall intermediate results,", - "id": "prometheus_tools_rationale_78" + "label": "STOCKS_API", + "file_type": "document", + "source_file": "TODO.md", + "source_location": "L77", + "community": 187, + "norm_label": "stocks_api", + "id": "server_todo_stocks_api" }, { - "label": "Store a value in the harness state for this session. Use this to save inter", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L93", - "community": 487, - "norm_label": "store a value in the harness state for this session. use this to save inter", - "id": "prometheus_tools_rationale_93" + "label": "Prometheus", + "file_type": "document", + "source_file": "TODO.md", + "source_location": "L80", + "community": 187, + "norm_label": "prometheus", + "id": "server_todo_prometheus" }, { - "label": "2026-07-16-prometheus-harness-architecture.md", + "label": "2026-07-17-prometheus-forgevm-sandbox.md", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", "source_location": "L1", - "community": 158, - "norm_label": "2026-07-16-prometheus-harness-architecture.md", - "id": "docs_superpowers_plans_2026_07_16_prometheus_harness_architecture_md" + "community": 15, + "norm_label": "2026-07-17-prometheus-forgevm-sandbox.md", + "id": "docs_superpowers_plans_2026_07_17_prometheus_forgevm_sandbox_md" }, { - "label": "Prometheus Harness Architecture \u2014 Observable Loops, Sandbox Execution, Persistent States", + "label": "Prometheus ForgeVM Sandbox \u2014 Implementation Plan", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", "source_location": "L1", - "community": 158, - "norm_label": "prometheus harness architecture \u2014 observable loops, sandbox execution, persistent states", - "id": "plans_2026_07_16_prometheus_harness_architecture_prometheus_harness_architecture_observable_loops_sandbox_execution_persistent_states" + "community": 15, + "norm_label": "prometheus forgevm sandbox \u2014 implementation plan", + "id": "plans_2026_07_17_prometheus_forgevm_sandbox_prometheus_forgevm_sandbox_implementation_plan" }, { - "label": "Global Constraints", + "label": "code:block1 (User 123: \"Analyze PETR4 vs VALE3 correlation\")", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L14", - "community": 158, - "norm_label": "global constraints", - "id": "plans_2026_07_16_prometheus_harness_architecture_global_constraints" + "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", + "source_location": "L9", + "community": 15, + "norm_label": "code:block1 (user 123: \"analyze petr4 vs vale3 correlation\")", + "id": "plans_2026_07_17_prometheus_forgevm_sandbox_codeblock_1" }, { - "label": "Architecture Overview", + "label": "Global Constraints", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L27", - "community": 245, - "norm_label": "architecture overview", - "id": "plans_2026_07_16_prometheus_harness_architecture_architecture_overview" + "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", + "source_location": "L43", + "community": 15, + "norm_label": "global constraints", + "id": "plans_2026_07_17_prometheus_forgevm_sandbox_global_constraints" }, { - "label": "code:block1 (+-----------------------------------------------------------)", + "label": "File Map", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L29", - "community": 245, - "norm_label": "code:block1 (+-----------------------------------------------------------)", - "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_1" + "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", + "source_location": "L59", + "community": 15, + "norm_label": "file map", + "id": "plans_2026_07_17_prometheus_forgevm_sandbox_file_map" }, { - "label": "Data Flow for a Complex Task", + "label": "Phase 1: Config + ForgeVM Setup", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L62", - "community": 245, - "norm_label": "data flow for a complex task", - "id": "plans_2026_07_16_prometheus_harness_architecture_data_flow_for_a_complex_task" + "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", + "source_location": "L75", + "community": 15, + "norm_label": "phase 1: config + forgevm setup", + "id": "plans_2026_07_17_prometheus_forgevm_sandbox_phase_1_config_forgevm_setup" }, { - "label": "code:block2 (User: \"Analyze PETR4 vs VALE3 correlation over 5 years\")", + "label": "Task 1: Config \u2014 Add ForgeVM Settings", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L64", - "community": 245, - "norm_label": "code:block2 (user: \"analyze petr4 vs vale3 correlation over 5 years\")", - "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_2" + "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", + "source_location": "L77", + "community": 15, + "norm_label": "task 1: config \u2014 add forgevm settings", + "id": "plans_2026_07_17_prometheus_forgevm_sandbox_task_1_config_add_forgevm_settings" }, { - "label": "File Map", + "label": "code:python (class PrometheusSettings(BaseMansaSettings):)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L86", - "community": 158, - "norm_label": "file map", - "id": "plans_2026_07_16_prometheus_harness_architecture_file_map" + "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", + "source_location": "L84", + "community": 15, + "norm_label": "code:python (class prometheussettings(basemansasettings):)", + "id": "plans_2026_07_17_prometheus_forgevm_sandbox_codeblock_2" }, { - "label": "Task 1: Config \u2014 Add Sandbox + Workspace Settings", + "label": "code:bash (git add config.py)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L108", - "community": 224, - "norm_label": "task 1: config \u2014 add sandbox + workspace settings", - "id": "plans_2026_07_16_prometheus_harness_architecture_task_1_config_add_sandbox_workspace_settings" + "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", + "source_location": "L97", + "community": 15, + "norm_label": "code:bash (git add config.py)", + "id": "plans_2026_07_17_prometheus_forgevm_sandbox_codeblock_3" }, { - "label": "code:python (# Sandbox)", + "label": "Task 2: Docker Compose \u2014 Add ForgeVM Service", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L121", - "community": 224, - "norm_label": "code:python (# sandbox)", - "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_3" + "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", + "source_location": "L104", + "community": 15, + "norm_label": "task 2: docker compose \u2014 add forgevm service", + "id": "plans_2026_07_17_prometheus_forgevm_sandbox_task_2_docker_compose_add_forgevm_service" }, { - "label": "code:yaml (environment:)", + "label": "code:yaml (services:)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L138", - "community": 224, - "norm_label": "code:yaml (environment:)", - "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_4" + "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", + "source_location": "L111", + "community": 15, + "norm_label": "code:yaml (services:)", + "id": "plans_2026_07_17_prometheus_forgevm_sandbox_codeblock_4" }, { - "label": "code:yaml (sandbox:)", + "label": "code:bash (git add docker-compose.yml)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L149", - "community": 224, - "norm_label": "code:yaml (sandbox:)", - "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_5" + "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", + "source_location": "L139", + "community": 15, + "norm_label": "code:bash (git add docker-compose.yml)", + "id": "plans_2026_07_17_prometheus_forgevm_sandbox_codeblock_5" }, { - "label": "code:bash (git add config.py docker-compose.yml)", + "label": "Phase 2: SandboxManager", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L161", - "community": 224, - "norm_label": "code:bash (git add config.py docker-compose.yml)", - "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_6" + "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", + "source_location": "L146", + "community": 15, + "norm_label": "phase 2: sandboxmanager", + "id": "plans_2026_07_17_prometheus_forgevm_sandbox_phase_2_sandboxmanager" }, { - "label": "Task 2: Loop Events \u2014 Structured Event Model + Logger", + "label": "Task 3: ForgeVM REST API Client", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L168", - "community": 225, - "norm_label": "task 2: loop events \u2014 structured event model + logger", - "id": "plans_2026_07_16_prometheus_harness_architecture_task_2_loop_events_structured_event_model_logger" + "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", + "source_location": "L148", + "community": 15, + "norm_label": "task 3: forgevm rest api client", + "id": "plans_2026_07_17_prometheus_forgevm_sandbox_task_3_forgevm_rest_api_client" }, { "label": "code:python (import pytest)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L182", - "community": 225, + "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", + "source_location": "L160", + "community": 15, "norm_label": "code:python (import pytest)", - "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_7" - }, - { - "label": "code:python (from datetime import datetime, timezone)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L269", - "community": 225, - "norm_label": "code:python (from datetime import datetime, timezone)", - "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_8" + "id": "plans_2026_07_17_prometheus_forgevm_sandbox_codeblock_6" }, { "label": "code:python (import logging)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L299", - "community": 225, + "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", + "source_location": "L270", + "community": 15, "norm_label": "code:python (import logging)", - "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_9" + "id": "plans_2026_07_17_prometheus_forgevm_sandbox_codeblock_7" }, { - "label": "code:bash (git add main/models/harness.py main/app/prometheus/events.py)", + "label": "code:bash (git add main/app/prometheus/sandbox.py tests/test_sandbox.py)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L344", - "community": 225, - "norm_label": "code:bash (git add main/models/harness.py main/app/prometheus/events.py)", - "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_10" + "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", + "source_location": "L377", + "community": 15, + "norm_label": "code:bash (git add main/app/prometheus/sandbox.py tests/test_sandbox.py)", + "id": "plans_2026_07_17_prometheus_forgevm_sandbox_codeblock_8" }, { - "label": "Task 3: Workspace Manager \u2014 Tiered Persistent Workspace", + "label": "Phase 3: Sandbox Tools", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L351", - "community": 247, - "norm_label": "task 3: workspace manager \u2014 tiered persistent workspace", - "id": "plans_2026_07_16_prometheus_harness_architecture_task_3_workspace_manager_tiered_persistent_workspace" + "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", + "source_location": "L384", + "community": 15, + "norm_label": "phase 3: sandbox tools", + "id": "plans_2026_07_17_prometheus_forgevm_sandbox_phase_3_sandbox_tools" }, { - "label": "code:python (import json, os, time, pytest)", + "label": "Task 4: Tool Definitions \u2014 Sandbox Tools in TOOL_REGISTRY", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L364", - "community": 247, - "norm_label": "code:python (import json, os, time, pytest)", - "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_11" + "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", + "source_location": "L386", + "community": 15, + "norm_label": "task 4: tool definitions \u2014 sandbox tools in tool_registry", + "id": "plans_2026_07_17_prometheus_forgevm_sandbox_task_4_tool_definitions_sandbox_tools_in_tool_registry" }, { - "label": "code:python (import json, logging, shutil, time)", + "label": "code:python (import pytest)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L419", - "community": 247, - "norm_label": "code:python (import json, logging, shutil, time)", - "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_12" + "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", + "source_location": "L396", + "community": 15, + "norm_label": "code:python (import pytest)", + "id": "plans_2026_07_17_prometheus_forgevm_sandbox_codeblock_9" }, { - "label": "code:bash (git add main/app/prometheus/workspace.py tests/test_workspac)", + "label": "code:python (from main.app.prometheus.sandbox import SandboxManager)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L516", - "community": 247, - "norm_label": "code:bash (git add main/app/prometheus/workspace.py tests/test_workspac)", - "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_13" + "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", + "source_location": "L455", + "community": 15, + "norm_label": "code:python (from main.app.prometheus.sandbox import sandboxmanager)", + "id": "plans_2026_07_17_prometheus_forgevm_sandbox_codeblock_10" }, { - "label": "Task 4: Sandbox Manager \u2014 HTTP Client for CubeSandbox", + "label": "code:python (TOOL_REGISTRY: dict[str, Any] = {)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L523", - "community": 246, - "norm_label": "task 4: sandbox manager \u2014 http client for cubesandbox", - "id": "plans_2026_07_16_prometheus_harness_architecture_task_4_sandbox_manager_http_client_for_cubesandbox" + "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", + "source_location": "L524", + "community": 15, + "norm_label": "code:python (tool_registry: dict[str, any] = {)", + "id": "plans_2026_07_17_prometheus_forgevm_sandbox_codeblock_11" }, { - "label": "code:python (import pytest)", + "label": "code:python (async def dispatchToolCall()", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L536", - "community": 246, - "norm_label": "code:python (import pytest)", - "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_14" + "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", + "source_location": "L539", + "community": 15, + "norm_label": "code:python (async def dispatchtoolcall()", + "id": "plans_2026_07_17_prometheus_forgevm_sandbox_codeblock_12" }, { - "label": "code:python (import base64, logging)", + "label": "code:bash (git add main/app/prometheus/tools.py tests/test_sandbox_tool)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L594", - "community": 246, - "norm_label": "code:python (import base64, logging)", - "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_15" + "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", + "source_location": "L567", + "community": 15, + "norm_label": "code:bash (git add main/app/prometheus/tools.py tests/test_sandbox_tool)", + "id": "plans_2026_07_17_prometheus_forgevm_sandbox_codeblock_13" }, { - "label": "code:bash (git add main/app/prometheus/sandbox.py tests/test_sandbox.py)", + "label": "Phase 4: Agent Integration", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L655", - "community": 246, - "norm_label": "code:bash (git add main/app/prometheus/sandbox.py tests/test_sandbox.py)", - "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_16" + "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", + "source_location": "L574", + "community": 15, + "norm_label": "phase 4: agent integration", + "id": "plans_2026_07_17_prometheus_forgevm_sandbox_phase_4_agent_integration" }, { - "label": "Task 5: Sandbox Tools \u2014 Gemini Function Declarations + Dispatch", + "label": "Task 5: Agent \u2014 On-Demand Sandbox + Premium Gating", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L662", - "community": 223, - "norm_label": "task 5: sandbox tools \u2014 gemini function declarations + dispatch", - "id": "plans_2026_07_16_prometheus_harness_architecture_task_5_sandbox_tools_gemini_function_declarations_dispatch" + "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", + "source_location": "L576", + "community": 15, + "norm_label": "task 5: agent \u2014 on-demand sandbox + premium gating", + "id": "plans_2026_07_17_prometheus_forgevm_sandbox_task_5_agent_on_demand_sandbox_premium_gating" }, { - "label": "code:python (from main.app.prometheus.tools import SANDBOX_TOOLS, SANDBOX)", + "label": "code:python (import pytest)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L675", - "community": 223, - "norm_label": "code:python (from main.app.prometheus.tools import sandbox_tools, sandbox)", - "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_17" + "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", + "source_location": "L586", + "community": 15, + "norm_label": "code:python (import pytest)", + "id": "plans_2026_07_17_prometheus_forgevm_sandbox_codeblock_14" }, { "label": "code:python (from main.app.prometheus.sandbox import SandboxManager)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L699", - "community": 223, + "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", + "source_location": "L617", + "community": 15, "norm_label": "code:python (from main.app.prometheus.sandbox import sandboxmanager)", - "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_18" + "id": "plans_2026_07_17_prometheus_forgevm_sandbox_codeblock_15" }, { - "label": "code:python (async def dispatchToolCall(functionCall, mcpClients, user=No)", + "label": "code:python (async def streamMessage(self, query=None, sessionId=None, db)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L774", - "community": 223, - "norm_label": "code:python (async def dispatchtoolcall(functioncall, mcpclients, user=no)", - "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_19" + "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", + "source_location": "L623", + "community": 15, + "norm_label": "code:python (async def streammessage(self, query=none, sessionid=none, db)", + "id": "plans_2026_07_17_prometheus_forgevm_sandbox_codeblock_16" }, { - "label": "code:bash (git add main/app/prometheus/tools.py tests/test_sandbox.py)", + "label": "code:python (## Code Sandbox (On-Demand))", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L812", - "community": 223, - "norm_label": "code:bash (git add main/app/prometheus/tools.py tests/test_sandbox.py)", - "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_20" + "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", + "source_location": "L723", + "community": 15, + "norm_label": "code:python (## code sandbox (on-demand))", + "id": "plans_2026_07_17_prometheus_forgevm_sandbox_codeblock_17" }, { - "label": "Task 6: Agent Integration \u2014 Sandbox Lifecycle + Loop Events in Stream Loop", + "label": "code:bash (git add main/app/prometheus/agent.py tests/test_agent_sandbo)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L819", - "community": 199, - "norm_label": "task 6: agent integration \u2014 sandbox lifecycle + loop events in stream loop", - "id": "plans_2026_07_16_prometheus_harness_architecture_task_6_agent_integration_sandbox_lifecycle_loop_events_in_stream_loop" + "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", + "source_location": "L751", + "community": 15, + "norm_label": "code:bash (git add main/app/prometheus/agent.py tests/test_agent_sandbo)", + "id": "plans_2026_07_17_prometheus_forgevm_sandbox_codeblock_18" }, { - "label": "code:python (import pytest)", + "label": "Phase 5: Docker Image + Final Verification", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L832", - "community": 199, - "norm_label": "code:python (import pytest)", - "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_21" + "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", + "source_location": "L758", + "community": 15, + "norm_label": "phase 5: docker image + final verification", + "id": "plans_2026_07_17_prometheus_forgevm_sandbox_phase_5_docker_image_final_verification" }, { - "label": "code:python (from main.app.prometheus.sandbox import SandboxManager)", + "label": "Task 6: Dockerfile.sandbox \u2014 Python Data Science Image", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L862", - "community": 199, - "norm_label": "code:python (from main.app.prometheus.sandbox import sandboxmanager)", - "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_22" + "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", + "source_location": "L760", + "community": 15, + "norm_label": "task 6: dockerfile.sandbox \u2014 python data science image", + "id": "plans_2026_07_17_prometheus_forgevm_sandbox_task_6_dockerfile_sandbox_python_data_science_image" }, { - "label": "code:python (def makeChat(self, sessions, history, *, system_prompt=None,)", + "label": "code:dockerfile (FROM python:3.11-slim)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L871", - "community": 199, - "norm_label": "code:python (def makechat(self, sessions, history, *, system_prompt=none,)", - "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_23" + "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", + "source_location": "L767", + "community": 15, + "norm_label": "code:dockerfile (from python:3.11-slim)", + "id": "plans_2026_07_17_prometheus_forgevm_sandbox_codeblock_19" }, { - "label": "code:python (async def streamMessage(self, query=None, sessionId=None, db)", + "label": "code:bash (git add Dockerfile.sandbox)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L880", - "community": 199, - "norm_label": "code:python (async def streammessage(self, query=none, sessionid=none, db)", - "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_24" + "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", + "source_location": "L785", + "community": 15, + "norm_label": "code:bash (git add dockerfile.sandbox)", + "id": "plans_2026_07_17_prometheus_forgevm_sandbox_codeblock_20" }, { - "label": "code:bash (git add main/app/prometheus/agent.py tests/test_harness.py)", + "label": "Task 7: Full CI Verification", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L974", - "community": 199, - "norm_label": "code:bash (git add main/app/prometheus/agent.py tests/test_harness.py)", - "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_25" + "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", + "source_location": "L792", + "community": 15, + "norm_label": "task 7: full ci verification", + "id": "plans_2026_07_17_prometheus_forgevm_sandbox_task_7_full_ci_verification" }, { - "label": "Task 7: Docker \u2014 CubeSandbox Template + Compose Service", + "label": "code:bash (docker-compose up -d --build)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L981", - "community": 248, - "norm_label": "task 7: docker \u2014 cubesandbox template + compose service", - "id": "plans_2026_07_16_prometheus_harness_architecture_task_7_docker_cubesandbox_template_compose_service" + "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", + "source_location": "L801", + "community": 15, + "norm_label": "code:bash (docker-compose up -d --build)", + "id": "plans_2026_07_17_prometheus_forgevm_sandbox_codeblock_21" }, { - "label": "code:dockerfile (FROM python:3.11-slim)", + "label": "Summary", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L993", - "community": 248, - "norm_label": "code:dockerfile (from python:3.11-slim)", - "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_26" + "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", + "source_location": "L811", + "community": 15, + "norm_label": "summary", + "id": "plans_2026_07_17_prometheus_forgevm_sandbox_summary" }, { - "label": "code:yaml (sandbox:)", + "label": "What This Enables", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L1011", - "community": 248, - "norm_label": "code:yaml (sandbox:)", - "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_27" + "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", + "source_location": "L827", + "community": 15, + "norm_label": "what this enables", + "id": "plans_2026_07_17_prometheus_forgevm_sandbox_what_this_enables" }, { - "label": "code:bash (git add Dockerfile.sandbox docker-compose.yml)", + "label": "What This Does NOT Do (By Design)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L1024", - "community": 248, - "norm_label": "code:bash (git add dockerfile.sandbox docker-compose.yml)", - "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_28" + "source_file": "docs/superpowers/plans/2026-07-17-prometheus-forgevm-sandbox.md", + "source_location": "L838", + "community": 15, + "norm_label": "what this does not do (by design)", + "id": "plans_2026_07_17_prometheus_forgevm_sandbox_what_this_does_not_do_by_design" }, { - "label": "Task 8: System Prompt \u2014 Teach LLM About Sandbox", + "label": "2026-07-17-sandbox-persistence.md", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L1031", - "community": 158, - "norm_label": "task 8: system prompt \u2014 teach llm about sandbox", - "id": "plans_2026_07_16_prometheus_harness_architecture_task_8_system_prompt_teach_llm_about_sandbox" + "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", + "source_location": "L1", + "community": 35, + "norm_label": "2026-07-17-sandbox-persistence.md", + "id": "docs_superpowers_plans_2026_07_17_sandbox_persistence_md" }, { - "label": "code:python (SYSTEM_PROMPT = \"\"\")", + "label": "Sandbox Persistence Implementation Plan", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L1044", - "community": 158, - "norm_label": "code:python (system_prompt = \"\"\")", - "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_29" + "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", + "source_location": "L1", + "community": 35, + "norm_label": "sandbox persistence implementation plan", + "id": "plans_2026_07_17_sandbox_persistence_sandbox_persistence_implementation_plan" }, { - "label": "code:bash (git add main/app/prometheus/agent.py)", + "label": "Global Constraints", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L1073", - "community": 158, - "norm_label": "code:bash (git add main/app/prometheus/agent.py)", - "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_30" + "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", + "source_location": "L11", + "community": 35, + "norm_label": "global constraints", + "id": "plans_2026_07_17_sandbox_persistence_global_constraints" }, { - "label": "Task 9: Frontend \u2014 SandboxArtifact Component", + "label": "File Structure", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L1080", - "community": 249, - "norm_label": "task 9: frontend \u2014 sandboxartifact component", - "id": "plans_2026_07_16_prometheus_harness_architecture_task_9_frontend_sandboxartifact_component" + "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", + "source_location": "L23", + "community": 35, + "norm_label": "file structure", + "id": "plans_2026_07_17_sandbox_persistence_file_structure" }, { - "label": "code:tsx (import React from \"react\";)", + "label": "Task 1: Database Model + Migration", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L1091", - "community": 249, - "norm_label": "code:tsx (import react from \"react\";)", - "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_31" + "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", + "source_location": "L38", + "community": 35, + "norm_label": "task 1: database model + migration", + "id": "plans_2026_07_17_sandbox_persistence_task_1_database_model_migration" }, { - "label": "code:tsx (import { SandboxArtifactList } from \"./SandboxArtifact\";)", + "label": "code:python (# tests/test_sandbox_persistence.py)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L1135", - "community": 249, - "norm_label": "code:tsx (import { sandboxartifactlist } from \"./sandboxartifact\";)", - "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_32" + "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", + "source_location": "L52", + "community": 35, + "norm_label": "code:python (# tests/test_sandbox_persistence.py)", + "id": "plans_2026_07_17_sandbox_persistence_codeblock_1" }, { - "label": "code:bash (git add frontend/src/components/SandboxArtifact.tsx)", + "label": "code:python (# main/models/sandbox.py)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L1146", - "community": 249, - "norm_label": "code:bash (git add frontend/src/components/sandboxartifact.tsx)", - "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_33" + "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", + "source_location": "L101", + "community": 35, + "norm_label": "code:python (# main/models/sandbox.py)", + "id": "plans_2026_07_17_sandbox_persistence_codeblock_2" }, { - "label": "Summary", + "label": "code:python (# main/models/__init__.py \u2014 add import)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L1153", - "community": 158, - "norm_label": "summary", - "id": "plans_2026_07_16_prometheus_harness_architecture_summary" + "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", + "source_location": "L120", + "community": 35, + "norm_label": "code:python (# main/models/__init__.py \u2014 add import)", + "id": "plans_2026_07_17_sandbox_persistence_codeblock_3" }, { - "label": "How This Compares to ComputerUse", + "label": "code:python (# migrations/env.py \u2014 add import after line 14)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", - "source_location": "L1171", - "community": 158, - "norm_label": "how this compares to computeruse", - "id": "plans_2026_07_16_prometheus_harness_architecture_how_this_compares_to_computeruse" + "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", + "source_location": "L133", + "community": 35, + "norm_label": "code:python (# migrations/env.py \u2014 add import after line 14)", + "id": "plans_2026_07_17_sandbox_persistence_codeblock_4" }, { - "label": "2026-07-16-prometheus-harness-master-v2.md", + "label": "code:bash (git add main/models/sandbox.py main/models/__init__.py migra)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L1", - "community": 111, - "norm_label": "2026-07-16-prometheus-harness-master-v2.md", - "id": "docs_superpowers_plans_2026_07_16_prometheus_harness_master_v2_md" + "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", + "source_location": "L150", + "community": 35, + "norm_label": "code:bash (git add main/models/sandbox.py main/models/__init__.py migra)", + "id": "plans_2026_07_17_sandbox_persistence_codeblock_5" }, { - "label": "Prometheus Harness \u2014 Master Implementation Plan (v2: CubeSandbox + On-Demand)", + "label": "Task 2: SandboxManager Persistence Logic", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L1", - "community": 111, - "norm_label": "prometheus harness \u2014 master implementation plan (v2: cubesandbox + on-demand)", - "id": "plans_2026_07_16_prometheus_harness_master_v2_prometheus_harness_master_implementation_plan_v2_cubesandbox_on_demand" + "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", + "source_location": "L157", + "community": 35, + "norm_label": "task 2: sandboxmanager persistence logic", + "id": "plans_2026_07_17_sandbox_persistence_task_2_sandboxmanager_persistence_logic" }, { - "label": "Global Constraints", + "label": "code:python (# tests/test_sandbox_persistence.py \u2014 append to existing fil)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L15", - "community": 111, - "norm_label": "global constraints", - "id": "plans_2026_07_16_prometheus_harness_master_v2_global_constraints" + "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", + "source_location": "L170", + "community": 35, + "norm_label": "code:python (# tests/test_sandbox_persistence.py \u2014 append to existing fil)", + "id": "plans_2026_07_17_sandbox_persistence_codeblock_6" }, { - "label": "Architecture", + "label": "code:python (# main/app/prometheus/sandbox.py \u2014 full rewrite)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L31", - "community": 201, - "norm_label": "architecture", - "id": "plans_2026_07_16_prometheus_harness_master_v2_architecture" + "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", + "source_location": "L284", + "community": 35, + "norm_label": "code:python (# main/app/prometheus/sandbox.py \u2014 full rewrite)", + "id": "plans_2026_07_17_sandbox_persistence_codeblock_7" }, { - "label": "code:block1 (User: \"Analyze PETR4 vs VALE3 correlation over 5 years\")", + "label": "code:bash (git add main/app/prometheus/sandbox.py tests/test_sandbox_pe)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L33", - "community": 201, - "norm_label": "code:block1 (user: \"analyze petr4 vs vale3 correlation over 5 years\")", - "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_1" + "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", + "source_location": "L533", + "community": 35, + "norm_label": "code:bash (git add main/app/prometheus/sandbox.py tests/test_sandbox_pe)", + "id": "plans_2026_07_17_sandbox_persistence_codeblock_8" }, { - "label": "On-Demand Sandbox Lifecycle", + "label": "Task 3: Agent Integration \u2014 Persistent Sandbox Lifecycle", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L78", - "community": 201, - "norm_label": "on-demand sandbox lifecycle", - "id": "plans_2026_07_16_prometheus_harness_master_v2_on_demand_sandbox_lifecycle" + "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", + "source_location": "L540", + "community": 35, + "norm_label": "task 3: agent integration \u2014 persistent sandbox lifecycle", + "id": "plans_2026_07_17_sandbox_persistence_task_3_agent_integration_persistent_sandbox_lifecycle" }, { - "label": "code:block2 (Request Start:)", + "label": "code:python (# tests/test_agent_sandbox_integration.py \u2014 append)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L80", - "community": 201, - "norm_label": "code:block2 (request start:)", - "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_2" + "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", + "source_location": "L552", + "community": 35, + "norm_label": "code:python (# tests/test_agent_sandbox_integration.py \u2014 append)", + "id": "plans_2026_07_17_sandbox_persistence_codeblock_9" }, { - "label": "CubeCoW Checkpoint Persistence", + "label": "code:python (# In streamMessage \u2014 replace sandbox_id = None with:)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L100", - "community": 201, - "norm_label": "cubecow checkpoint persistence", - "id": "plans_2026_07_16_prometheus_harness_master_v2_cubecow_checkpoint_persistence" + "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", + "source_location": "L586", + "community": 35, + "norm_label": "code:python (# in streammessage \u2014 replace sandbox_id = none with:)", + "id": "plans_2026_07_17_sandbox_persistence_codeblock_10" }, { - "label": "code:block3 (Session 1 (premium user):)", + "label": "code:bash (git add main/app/prometheus/agent.py tests/test_agent_sandbo)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L102", - "community": 201, - "norm_label": "code:block3 (session 1 (premium user):)", - "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_3" + "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", + "source_location": "L627", + "community": 35, + "norm_label": "code:bash (git add main/app/prometheus/agent.py tests/test_agent_sandbo)", + "id": "plans_2026_07_17_sandbox_persistence_codeblock_11" }, { - "label": "File Map", + "label": "Task 4: Cleanup Job \u2014 Expired Sandbox Sweeper", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L116", - "community": 111, - "norm_label": "file map", - "id": "plans_2026_07_16_prometheus_harness_master_v2_file_map" + "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", + "source_location": "L634", + "community": 35, + "norm_label": "task 4: cleanup job \u2014 expired sandbox sweeper", + "id": "plans_2026_07_17_sandbox_persistence_task_4_cleanup_job_expired_sandbox_sweeper" }, { - "label": "Phase 1: HarnessState (In-Memory Agent Scratchpad)", + "label": "code:python (# tests/test_sandbox_persistence.py \u2014 append)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L141", - "community": 111, - "norm_label": "phase 1: harnessstate (in-memory agent scratchpad)", - "id": "plans_2026_07_16_prometheus_harness_master_v2_phase_1_harnessstate_in_memory_agent_scratchpad" + "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", + "source_location": "L646", + "community": 35, + "norm_label": "code:python (# tests/test_sandbox_persistence.py \u2014 append)", + "id": "plans_2026_07_17_sandbox_persistence_codeblock_12" }, { - "label": "Task 1: HarnessState Class", + "label": "code:python (# main/app/prometheus/sandbox_cleanup.py)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L143", - "community": 111, - "norm_label": "task 1: harnessstate class", - "id": "plans_2026_07_16_prometheus_harness_master_v2_task_1_harnessstate_class" + "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", + "source_location": "L700", + "community": 35, + "norm_label": "code:python (# main/app/prometheus/sandbox_cleanup.py)", + "id": "plans_2026_07_17_sandbox_persistence_codeblock_13" }, { - "label": "code:python (import pytest)", + "label": "code:bash (git add main/app/prometheus/sandbox_cleanup.py tests/test_sa)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L157", - "community": 111, - "norm_label": "code:python (import pytest)", - "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_4" + "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", + "source_location": "L746", + "community": 35, + "norm_label": "code:bash (git add main/app/prometheus/sandbox_cleanup.py tests/test_sa)", + "id": "plans_2026_07_17_sandbox_persistence_codeblock_14" }, { - "label": "code:python (import logging)", + "label": "Task 5: Full CI Verification", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L230", - "community": 111, - "norm_label": "code:python (import logging)", - "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_5" + "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", + "source_location": "L753", + "community": 35, + "norm_label": "task 5: full ci verification", + "id": "plans_2026_07_17_sandbox_persistence_task_5_full_ci_verification" }, { - "label": "code:bash (git add main/app/prometheus/state.py tests/test_harness_stat)", + "label": "code:bash (git add -A)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L282", - "community": 111, - "norm_label": "code:bash (git add main/app/prometheus/state.py tests/test_harness_stat)", - "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_6" + "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", + "source_location": "L764", + "community": 35, + "norm_label": "code:bash (git add -a)", + "id": "plans_2026_07_17_sandbox_persistence_codeblock_15" }, { - "label": "Phase 2: On-Demand Sandbox Execution", + "label": "Task 6: Docker Compose \u2014 Workspace Volume for Persistence", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L289", - "community": 134, - "norm_label": "phase 2: on-demand sandbox execution", - "id": "plans_2026_07_16_prometheus_harness_master_v2_phase_2_on_demand_sandbox_execution" + "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", + "source_location": "L771", + "community": 35, + "norm_label": "task 6: docker compose \u2014 workspace volume for persistence", + "id": "plans_2026_07_17_sandbox_persistence_task_6_docker_compose_workspace_volume_for_persistence" }, { - "label": "Task 2: Config \u2014 Add Sandbox Settings", + "label": "code:yaml (# docker-compose.yml \u2014 add to api service volumes)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L291", - "community": 134, - "norm_label": "task 2: config \u2014 add sandbox settings", - "id": "plans_2026_07_16_prometheus_harness_master_v2_task_2_config_add_sandbox_settings" + "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", + "source_location": "L782", + "community": 35, + "norm_label": "code:yaml (# docker-compose.yml \u2014 add to api service volumes)", + "id": "plans_2026_07_17_sandbox_persistence_codeblock_16" }, { - "label": "code:python (class PrometheusSettings(BaseMansaSettings):)", + "label": "code:yaml (# docker-compose.yml \u2014 add to api environment)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L304", - "community": 134, - "norm_label": "code:python (class prometheussettings(basemansasettings):)", - "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_7" + "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", + "source_location": "L797", + "community": 35, + "norm_label": "code:yaml (# docker-compose.yml \u2014 add to api environment)", + "id": "plans_2026_07_17_sandbox_persistence_codeblock_17" }, { - "label": "code:yaml (environment:)", + "label": "code:bash (git add docker-compose.yml)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L327", - "community": 134, - "norm_label": "code:yaml (environment:)", - "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_8" + "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", + "source_location": "L809", + "community": 35, + "norm_label": "code:bash (git add docker-compose.yml)", + "id": "plans_2026_07_17_sandbox_persistence_codeblock_18" }, { - "label": "code:yaml (sandbox:)", + "label": "Summary", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L338", - "community": 134, - "norm_label": "code:yaml (sandbox:)", - "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_9" + "source_file": "docs/superpowers/plans/2026-07-17-sandbox-persistence.md", + "source_location": "L816", + "community": 35, + "norm_label": "summary", + "id": "plans_2026_07_17_sandbox_persistence_summary" }, { - "label": "code:yaml (volumes:)", + "label": "task-1-report.md", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L352", - "community": 134, - "norm_label": "code:yaml (volumes:)", - "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_10" + "source_file": "docs/superpowers/plans/task-1-report.md", + "source_location": "L1", + "community": 175, + "norm_label": "task-1-report.md", + "id": "docs_superpowers_plans_task_1_report_md" }, { - "label": "code:bash (git add config.py docker-compose.yml)", + "label": "Task 1 Report: PrometheusSandbox Model & Migration", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L359", - "community": 134, - "norm_label": "code:bash (git add config.py docker-compose.yml)", - "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_11" + "source_file": "docs/superpowers/plans/task-1-report.md", + "source_location": "L1", + "community": 175, + "norm_label": "task 1 report: prometheussandbox model & migration", + "id": "plans_task_1_report_task_1_report_prometheussandbox_model_migration" }, { - "label": "Task 3: SandboxManager \u2014 On-Demand HTTP Client for CubeSandbox", + "label": "Files Created/Modified", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L366", - "community": 134, - "norm_label": "task 3: sandboxmanager \u2014 on-demand http client for cubesandbox", - "id": "plans_2026_07_16_prometheus_harness_master_v2_task_3_sandboxmanager_on_demand_http_client_for_cubesandbox" + "source_file": "docs/superpowers/plans/task-1-report.md", + "source_location": "L5", + "community": 175, + "norm_label": "files created/modified", + "id": "plans_task_1_report_files_created_modified" }, { - "label": "code:python (import pytest)", + "label": "Test Results", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L382", - "community": 134, - "norm_label": "code:python (import pytest)", - "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_12" + "source_file": "docs/superpowers/plans/task-1-report.md", + "source_location": "L15", + "community": 175, + "norm_label": "test results", + "id": "plans_task_1_report_test_results" }, { - "label": "code:python (import logging)", + "label": "code:block1 (tests/test_sandbox_persistence.py::TestPrometheusSandboxMode)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L479", - "community": 134, - "norm_label": "code:python (import logging)", - "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_13" + "source_file": "docs/superpowers/plans/task-1-report.md", + "source_location": "L17", + "community": 175, + "norm_label": "code:block1 (tests/test_sandbox_persistence.py::testprometheussandboxmode)", + "id": "plans_task_1_report_codeblock_1" }, { - "label": "code:bash (git add main/app/prometheus/sandbox.py tests/test_sandbox.py)", + "label": "Commits", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L589", - "community": 134, - "norm_label": "code:bash (git add main/app/prometheus/sandbox.py tests/test_sandbox.py)", - "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_14" + "source_file": "docs/superpowers/plans/task-1-report.md", + "source_location": "L25", + "community": 175, + "norm_label": "commits", + "id": "plans_task_1_report_commits" }, { - "label": "Phase 3: Result Cache", + "label": "code:block2 (7fe4c6d feat: add PrometheusSandbox model for per-user sandb)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L596", - "community": 229, - "norm_label": "phase 3: result cache", - "id": "plans_2026_07_16_prometheus_harness_master_v2_phase_3_result_cache" + "source_file": "docs/superpowers/plans/task-1-report.md", + "source_location": "L27", + "community": 175, + "norm_label": "code:block2 (7fe4c6d feat: add prometheussandbox model for per-user sandb)", + "id": "plans_task_1_report_codeblock_2" }, { - "label": "Task 4: ResultCache \u2014 SHA256-Keyed Computed Results", + "label": "Concerns", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L598", - "community": 229, - "norm_label": "task 4: resultcache \u2014 sha256-keyed computed results", - "id": "plans_2026_07_16_prometheus_harness_master_v2_task_4_resultcache_sha256_keyed_computed_results" + "source_file": "docs/superpowers/plans/task-1-report.md", + "source_location": "L31", + "community": 175, + "norm_label": "concerns", + "id": "plans_task_1_report_concerns" }, { - "label": "code:python (import pytest)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L612", - "community": 229, - "norm_label": "code:python (import pytest)", - "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_15" + "label": "streamMessage should create a HarnessState and pass it to buildSystemPrompt.", + "file_type": "rationale", + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L82", + "community": 324, + "norm_label": "streammessage should create a harnessstate and pass it to buildsystemprompt.", + "id": "tests_test_agent_state_integration_rationale_82" }, { - "label": "code:python (import hashlib)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L663", - "community": 229, - "norm_label": "code:python (import hashlib)", - "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_16" + "label": "streamMessage should pass state to dispatchToolCall.", + "file_type": "rationale", + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L122", + "community": 325, + "norm_label": "streammessage should pass state to dispatchtoolcall.", + "id": "tests_test_agent_state_integration_rationale_122" }, { - "label": "code:bash (git add main/app/prometheus/cache.py tests/test_cache.py)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L722", - "community": 229, - "norm_label": "code:bash (git add main/app/prometheus/cache.py tests/test_cache.py)", - "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_17" + "label": "System prompt should instruct LLM about harness state usage.", + "file_type": "rationale", + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L182", + "community": 93, + "norm_label": "system prompt should instruct llm about harness state usage.", + "id": "tests_test_agent_state_integration_rationale_182" }, { - "label": "Phase 4: ToolContext (Bundled Dispatch Dependencies)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L729", - "community": 185, - "norm_label": "phase 4: toolcontext (bundled dispatch dependencies)", - "id": "plans_2026_07_16_prometheus_harness_master_v2_phase_4_toolcontext_bundled_dispatch_dependencies" + "label": "System prompt should instruct LLM about memory vs state.", + "file_type": "rationale", + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L190", + "community": 93, + "norm_label": "system prompt should instruct llm about memory vs state.", + "id": "tests_test_agent_state_integration_rationale_190" }, { - "label": "Task 5: ToolContext \u2014 Dataclass for Agent Use", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L731", - "community": 185, - "norm_label": "task 5: toolcontext \u2014 dataclass for agent use", - "id": "plans_2026_07_16_prometheus_harness_master_v2_task_5_toolcontext_dataclass_for_agent_use" + "label": "Covers lines 114-115, 117-120, 122: existing session with verified ownership.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1042", + "community": 16, + "norm_label": "covers lines 114-115, 117-120, 122: existing session with verified ownership.", + "id": "tests_test_controllers_coverage_rationale_1042" }, { - "label": "code:python (import pytest)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L747", - "community": 185, - "norm_label": "code:python (import pytest)", - "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_18" + "label": "Covers lines 114-115: session ownership check fails.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1083", + "community": 16, + "norm_label": "covers lines 114-115: session ownership check fails.", + "id": "tests_test_controllers_coverage_rationale_1083" }, { - "label": "code:python (from __future__ import annotations)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L820", - "community": 185, - "norm_label": "code:python (from __future__ import annotations)", - "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_19" + "label": "Generic Exception in chat propagates to FastAPI's default 500 handler.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1120", + "community": 16, + "norm_label": "generic exception in chat propagates to fastapi's default 500 handler.", + "id": "tests_test_controllers_coverage_rationale_1120" }, { - "label": "code:bash (git add main/app/prometheus/context.py tests/test_context.py)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L857", - "community": 185, - "norm_label": "code:bash (git add main/app/prometheus/context.py tests/test_context.py)", - "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_20" + "label": "Covers line 18: GET /stocks/health.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1138", + "community": 498, + "norm_label": "covers line 18: get /stocks/health.", + "id": "tests_test_controllers_coverage_rationale_1138" }, { - "label": "Phase 5: Observable Loop (Batched)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L864", - "community": 202, - "norm_label": "phase 5: observable loop (batched)", - "id": "plans_2026_07_16_prometheus_harness_master_v2_phase_5_observable_loop_batched" + "label": "Covers line 35: GET /stocks/historical.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1152", + "community": 14, + "norm_label": "covers line 35: get /stocks/historical.", + "id": "tests_test_controllers_coverage_rationale_1152" }, { - "label": "Task 6: LoopEvent Model + LoopLogger", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L866", - "community": 202, - "norm_label": "task 6: loopevent model + looplogger", - "id": "plans_2026_07_16_prometheus_harness_master_v2_task_6_loopevent_model_looplogger" + "label": "Covers line 47: GET /stocks/fundamental.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1166", + "community": 14, + "norm_label": "covers line 47: get /stocks/fundamental.", + "id": "tests_test_controllers_coverage_rationale_1166" }, { - "label": "code:python (import pytest)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L881", - "community": 202, - "norm_label": "code:python (import pytest)", - "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_21" + "label": "Covers lines 52-53, 57-63: GET /stocks/key/generate. NOTE: stocksapi_cont", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1180", + "community": 14, + "norm_label": "covers lines 52-53, 57-63: get /stocks/key/generate. note: stocksapi_cont", + "id": "tests_test_controllers_coverage_rationale_1180" }, { - "label": "code:python (from datetime import datetime, timezone)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L944", - "community": 202, - "norm_label": "code:python (from datetime import datetime, timezone)", - "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_22" + "label": "Covers lines 52-53: user without GENERATE_API_KEYS permission gets 403.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1188", + "community": 14, + "norm_label": "covers lines 52-53: user without generate_api_keys permission gets 403.", + "id": "tests_test_controllers_coverage_rationale_1188" }, { - "label": "code:python (import logging)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L974", - "community": 202, - "norm_label": "code:python (import logging)", - "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_23" + "label": "Covers lines 57-60: admin bypasses permission check and generates key.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1196", + "community": 14, + "norm_label": "covers lines 57-60: admin bypasses permission check and generates key.", + "id": "tests_test_controllers_coverage_rationale_1196" }, { - "label": "code:bash (git add main/models/harness.py main/app/prometheus/events.py)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L1031", - "community": 202, - "norm_label": "code:bash (git add main/models/harness.py main/app/prometheus/events.py)", - "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_24" + "label": "Covers lines 61-63: exception during key generation (admin path).", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1208", + "community": 14, + "norm_label": "covers lines 61-63: exception during key generation (admin path).", + "id": "tests_test_controllers_coverage_rationale_1208" }, { - "label": "Phase 6: Agent Integration (All Layers)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L1038", - "community": 121, - "norm_label": "phase 6: agent integration (all layers)", - "id": "plans_2026_07_16_prometheus_harness_master_v2_phase_6_agent_integration_all_layers" + "label": "Covers lines 13, 17, 19-20, 22-27: UserManager.addRoleToUser.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1223", + "community": 563, + "norm_label": "covers lines 13, 17, 19-20, 22-27: usermanager.addroletouser.", + "id": "tests_test_controllers_coverage_rationale_1223" }, { - "label": "Task 7: Tool Definitions \u2014 Sandbox + Cache Tools in TOOL_REGISTRY", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L1040", - "community": 121, - "norm_label": "task 7: tool definitions \u2014 sandbox + cache tools in tool_registry", - "id": "plans_2026_07_16_prometheus_harness_master_v2_task_7_tool_definitions_sandbox_cache_tools_in_tool_registry" + "label": "Covers lines 17, 22-27: user found, role not present, role added.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1226", + "community": 564, + "norm_label": "covers lines 17, 22-27: user found, role not present, role added.", + "id": "tests_test_controllers_coverage_rationale_1226" }, { - "label": "code:python (import inspect)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L1056", - "community": 121, - "norm_label": "code:python (import inspect)", - "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_25" + "label": "Covers line 27: user already has the role.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1243", + "community": 568, + "norm_label": "covers line 27: user already has the role.", + "id": "tests_test_controllers_coverage_rationale_1243" }, { - "label": "code:python (from main.app.prometheus.sandbox import SandboxManager)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L1153", - "community": 121, - "norm_label": "code:python (from main.app.prometheus.sandbox import sandboxmanager)", - "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_26" + "label": "Covers lines 19-20: user not found raises 404.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1257", + "community": 528, + "norm_label": "covers lines 19-20: user not found raises 404.", + "id": "tests_test_controllers_coverage_rationale_1257" }, { - "label": "code:python (TOOL_REGISTRY: dict[str, Any] = {)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L1221", - "community": 121, - "norm_label": "code:python (tool_registry: dict[str, any] = {)", - "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_27" + "label": "Covers lines 34, 36-38, 40-44, 46, 48-49, 51, 58-59, 61, 63-67: UserManager.getC", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1269", + "community": 493, + "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_1269" }, { - "label": "code:python (async def dispatchToolCall()", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L1235", - "community": 174, - "norm_label": "code:python (async def dispatchtoolcall()", - "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_28" + "label": "Covers lines 42-44: session validation fails.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1301", + "community": 569, + "norm_label": "covers lines 42-44: session validation fails.", + "id": "tests_test_controllers_coverage_rationale_1301" }, { - "label": "code:bash (git add main/app/prometheus/tools.py tests/test_sandbox_tool)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L1281", - "community": 174, - "norm_label": "code:bash (git add main/app/prometheus/tools.py tests/test_sandbox_tool)", - "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_29" + "label": "Covers lines 48-49: user not in DB.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1317", + "community": 546, + "norm_label": "covers lines 48-49: user not in db.", + "id": "tests_test_controllers_coverage_rationale_1317" }, { - "label": "Task 8: Agent Integration \u2014 On-Demand Sandbox + Premium Gating", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L1288", - "community": 174, - "norm_label": "task 8: agent integration \u2014 on-demand sandbox + premium gating", - "id": "plans_2026_07_16_prometheus_harness_master_v2_task_8_agent_integration_on_demand_sandbox_premium_gating" + "label": "Covers lines 65-67: unexpected exception.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1334", + "community": 560, + "norm_label": "covers lines 65-67: unexpected exception.", + "id": "tests_test_controllers_coverage_rationale_1334" }, { - "label": "code:python (import pytest)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L1304", - "community": 174, - "norm_label": "code:python (import pytest)", - "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_30" + "label": "Covers lines 37-38, 46, 51, 58 (sessionId is None): skips session validation.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1351", + "community": 561, + "norm_label": "covers lines 37-38, 46, 51, 58 (sessionid is none): skips session validation.", + "id": "tests_test_controllers_coverage_rationale_1351" }, { - "label": "code:python (from main.app.prometheus.tools import TOOL_REGISTRY, dispatc)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L1351", - "community": 174, - "norm_label": "code:python (from main.app.prometheus.tools import tool_registry, dispatc)", - "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_31" + "label": "Covers line 16: empty password raises ValueError.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1375", + "community": 45, + "norm_label": "covers line 16: empty password raises valueerror.", + "id": "tests_test_controllers_coverage_rationale_1375" }, { - "label": "code:python (def makeChat(self, sessions, history, *, system_prompt=None,)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L1363", - "community": 174, - "norm_label": "code:python (def makechat(self, sessions, history, *, system_prompt=none,)", - "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_32" + "label": "Covers lines 45-51: verifyAccessToken with expired and invalid tokens.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1385", + "community": 524, + "norm_label": "covers lines 45-51: verifyaccesstoken with expired and invalid tokens.", + "id": "tests_test_controllers_coverage_rationale_1385" }, { - "label": "code:python (async def streamMessage()", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L1383", - "community": 174, - "norm_label": "code:python (async def streammessage()", - "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_33" + "label": "Covers lines 48-49: jwt.ExpiredSignatureError.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1388", + "community": 524, + "norm_label": "covers lines 48-49: jwt.expiredsignatureerror.", + "id": "tests_test_controllers_coverage_rationale_1388" }, { - "label": "code:bash (git add main/app/prometheus/agent.py tests/test_agent_sandbo)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L1517", - "community": 174, - "norm_label": "code:bash (git add main/app/prometheus/agent.py tests/test_agent_sandbo)", - "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_34" + "label": "Covers lines 50-51: jwt.InvalidTokenError.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1404", + "community": 524, + "norm_label": "covers lines 50-51: jwt.invalidtokenerror.", + "id": "tests_test_controllers_coverage_rationale_1404" }, { - "label": "Task 9: System Prompt \u2014 Teach LLM About On-Demand Sandbox", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L1524", - "community": 121, - "norm_label": "task 9: system prompt \u2014 teach llm about on-demand sandbox", - "id": "plans_2026_07_16_prometheus_harness_master_v2_task_9_system_prompt_teach_llm_about_on_demand_sandbox" + "label": "Covers line 67: extractTokenPayload re-raises HTTPException from verifyAccessTok", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1416", + "community": 114, + "norm_label": "covers line 67: extracttokenpayload re-raises httpexception from verifyaccesstok", + "id": "tests_test_controllers_coverage_rationale_1416" }, { - "label": "code:python (## Code Sandbox (On-Demand))", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L1539", - "community": 121, - "norm_label": "code:python (## code sandbox (on-demand))", - "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_35" + "label": "Covers line 67: HTTPException raised by verifyAccessToken is re-raised.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1419", + "community": 114, + "norm_label": "covers line 67: httpexception raised by verifyaccesstoken is re-raised.", + "id": "tests_test_controllers_coverage_rationale_1419" }, { - "label": "code:bash (git add main/app/prometheus/agent.py)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L1568", - "community": 121, - "norm_label": "code:bash (git add main/app/prometheus/agent.py)", - "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_36" + "label": "Covers line 13: UserManager.__init__.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1435", + "community": 498, + "norm_label": "covers line 13: usermanager.__init__.", + "id": "tests_test_controllers_coverage_rationale_1435" }, { - "label": "Task 10: Docker \u2014 CubeSandbox Template", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L1575", - "community": 121, - "norm_label": "task 10: docker \u2014 cubesandbox template", - "id": "plans_2026_07_16_prometheus_harness_master_v2_task_10_docker_cubesandbox_template" + "label": "streamMessage must yield dict chunks from async iterator.", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L157", + "community": 326, + "norm_label": "streammessage must yield dict chunks from async iterator.", + "id": "tests_test_prometheus_auth_coverage_rationale_157" }, { - "label": "code:dockerfile (FROM python:3.11-slim)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L1586", - "community": 121, - "norm_label": "code:dockerfile (from python:3.11-slim)", - "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_37" + "label": "streamMessage must handle function_calls as a list (not dict).", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L208", + "community": 327, + "norm_label": "streammessage must handle function_calls as a list (not dict).", + "id": "tests_test_prometheus_auth_coverage_rationale_208" }, { - "label": "code:bash (git add Dockerfile.sandbox)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L1604", - "community": 121, - "norm_label": "code:bash (git add dockerfile.sandbox)", - "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_38" + "label": "Cover all methods in chat.py (lines 11-120).", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L278", + "community": 52, + "norm_label": "cover all methods in chat.py (lines 11-120).", + "id": "tests_test_prometheus_auth_coverage_rationale_278" }, { - "label": "Summary", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L1611", - "community": 111, - "norm_label": "summary", - "id": "plans_2026_07_16_prometheus_harness_master_v2_summary" + "label": "Cover all methods in authentication.py (lines 13-75).", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L502", + "community": 88, + "norm_label": "cover all methods in authentication.py (lines 13-75).", + "id": "tests_test_prometheus_auth_coverage_rationale_502" }, { - "label": "What This Enables", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L1630", - "community": 111, - "norm_label": "what this enables", - "id": "plans_2026_07_16_prometheus_harness_master_v2_what_this_enables" + "label": "Cover all methods in session.py (lines 14-154).", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L679", + "community": 60, + "norm_label": "cover all methods in session.py (lines 14-154).", + "id": "tests_test_prometheus_auth_coverage_rationale_679" }, { - "label": "What This Does NOT Do (By Design)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L1642", - "community": 111, - "norm_label": "what this does not do (by design)", - "id": "plans_2026_07_16_prometheus_harness_master_v2_what_this_does_not_do_by_design" + "label": "Exercises the tzinfo-is-None branch (line 144-148).", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L914", + "community": 190, + "norm_label": "exercises the tzinfo-is-none branch (line 144-148).", + "id": "tests_test_prometheus_auth_coverage_rationale_914" }, { - "label": "Resource Efficiency", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L1651", - "community": 111, - "norm_label": "resource efficiency", - "id": "plans_2026_07_16_prometheus_harness_master_v2_resource_efficiency" + "label": "Exercises the expiresAt-is-None branch (line 143).", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L928", + "community": 165, + "norm_label": "exercises the expiresat-is-none branch (line 143).", + "id": "tests_test_prometheus_auth_coverage_rationale_928" }, { - "label": "Relationship to Existing Systems", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L1660", - "community": 111, - "norm_label": "relationship to existing systems", - "id": "plans_2026_07_16_prometheus_harness_master_v2_relationship_to_existing_systems" + "label": "Cover getGoogleSSO (lines 6-14).", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L947", + "community": 68, + "norm_label": "cover getgooglesso (lines 6-14).", + "id": "tests_test_prometheus_auth_coverage_rationale_947" }, { - "label": "2026-07-16-prometheus-harness-master.md", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L1", - "community": 144, - "norm_label": "2026-07-16-prometheus-harness-master.md", - "id": "docs_superpowers_plans_2026_07_16_prometheus_harness_master_md" + "label": "chatSession attribute must not exist \u2014 MCP setup is inlined.", + "file_type": "rationale", + "source_file": "tests/test_streammessage_no_chatsession.py", + "source_location": "L78", + "community": 328, + "norm_label": "chatsession attribute must not exist \u2014 mcp setup is inlined.", + "id": "tests_test_streammessage_no_chatsession_rationale_78" }, { - "label": "Prometheus Harness \u2014 Master Implementation Plan", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L1", - "community": 144, - "norm_label": "prometheus harness \u2014 master implementation plan", - "id": "plans_2026_07_16_prometheus_harness_master_prometheus_harness_master_implementation_plan" + "label": "streamMessage handles function call loops via inlined MCP setup.", + "file_type": "rationale", + "source_file": "tests/test_streammessage_no_chatsession.py", + "source_location": "L101", + "community": 329, + "norm_label": "streammessage handles function call loops via inlined mcp setup.", + "id": "tests_test_streammessage_no_chatsession_rationale_101" }, { - "label": "Global Constraints", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L15", - "community": 144, - "norm_label": "global constraints", - "id": "plans_2026_07_16_prometheus_harness_master_global_constraints" + "label": "Search user's saved memories, preferences, and past analysis context. Use", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L16", + "community": 152, + "norm_label": "search user's saved memories, preferences, and past analysis context. use", + "id": "prometheus_tools_rationale_16" }, { - "label": "File Map", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L28", - "community": 144, - "norm_label": "file map", - "id": "plans_2026_07_16_prometheus_harness_master_file_map" + "label": "Store a memory about the user's preferences, analysis results, or feedback.", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L42", + "community": 126, + "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", + "id": "prometheus_tools_rationale_42" }, { - "label": "Architecture", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L51", - "community": 144, - "norm_label": "architecture", - "id": "plans_2026_07_16_prometheus_harness_master_architecture" + "label": "Retrieve values from the harness state. Use this to recall intermediate results,", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L79", + "community": 162, + "norm_label": "retrieve values from the harness state. use this to recall intermediate results,", + "id": "prometheus_tools_rationale_79" }, { - "label": "code:block1 (User: \"Analyze PETR4 vs VALE3 correlation over 5 years\")", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L53", - "community": 144, - "norm_label": "code:block1 (user: \"analyze petr4 vs vale3 correlation over 5 years\")", - "id": "plans_2026_07_16_prometheus_harness_master_codeblock_1" + "label": "Read a file from the workspace. Args: path: Path to the file (e.", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L147", + "community": 208, + "norm_label": "read a file from the workspace. args: path: path to the file (e.", + "id": "prometheus_tools_rationale_147" }, { - "label": "Phase 1: HarnessState (In-Memory Agent Scratchpad)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L93", - "community": 227, - "norm_label": "phase 1: harnessstate (in-memory agent scratchpad)", - "id": "plans_2026_07_16_prometheus_harness_master_phase_1_harnessstate_in_memory_agent_scratchpad" + "label": "List files in the workspace directory. Args: path: Directory pat", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L171", + "community": 525, + "norm_label": "list files in the workspace directory. args: path: directory pat", + "id": "prometheus_tools_rationale_171" }, { - "label": "Task 1: HarnessState Class", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L95", - "community": 227, - "norm_label": "task 1: harnessstate class", - "id": "plans_2026_07_16_prometheus_harness_master_task_1_harnessstate_class" + "label": "Keys with Jaccard > 0.8 should merge.", + "file_type": "rationale", + "source_file": "tests/test_memory_dedup.py", + "source_location": "L30", + "community": 140, + "norm_label": "keys with jaccard > 0.8 should merge.", + "id": "tests_test_memory_dedup_rationale_30" }, { - "label": "code:python (import pytest)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L109", - "community": 227, - "norm_label": "code:python (import pytest)", - "id": "plans_2026_07_16_prometheus_harness_master_codeblock_2" + "label": "Keys with low similarity should not merge.", + "file_type": "rationale", + "source_file": "tests/test_memory_dedup.py", + "source_location": "L40", + "community": 140, + "norm_label": "keys with low similarity should not merge.", + "id": "tests_test_memory_dedup_rationale_40" }, { - "label": "code:python (import logging)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L182", - "community": 227, - "norm_label": "code:python (import logging)", - "id": "plans_2026_07_16_prometheus_harness_master_codeblock_3" + "label": "Keys with Jaccard <= 0.8 should not merge.", + "file_type": "rationale", + "source_file": "tests/test_memory_dedup.py", + "source_location": "L67", + "community": 140, + "norm_label": "keys with jaccard <= 0.8 should not merge.", + "id": "tests_test_memory_dedup_rationale_67" }, { - "label": "code:bash (git add main/app/prometheus/state.py tests/test_state.py)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L234", - "community": 227, - "norm_label": "code:bash (git add main/app/prometheus/state.py tests/test_state.py)", - "id": "plans_2026_07_16_prometheus_harness_master_codeblock_4" + "label": "Wire up mock forgevm AsyncClient that returns sandbox with all methods.", + "file_type": "rationale", + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L9", + "community": 4, + "norm_label": "wire up mock forgevm asyncclient that returns sandbox with all methods.", + "id": "tests_test_sandbox_persistence_rationale_9" }, { - "label": "Phase 2: Sandbox Execution", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L241", - "community": 145, - "norm_label": "phase 2: sandbox execution", - "id": "plans_2026_07_16_prometheus_harness_master_phase_2_sandbox_execution" + "label": "Enforce one active sandbox per user via application logic.", + "file_type": "rationale", + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L52", + "community": 4, + "norm_label": "enforce one active sandbox per user via application logic.", + "id": "tests_test_sandbox_persistence_rationale_52" }, { - "label": "Task 2: Config \u2014 Add Sandbox Settings", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L243", - "community": 145, - "norm_label": "task 2: config \u2014 add sandbox settings", - "id": "plans_2026_07_16_prometheus_harness_master_task_2_config_add_sandbox_settings" + "label": "syncToSandbox pushes host files into the sandbox.", + "file_type": "rationale", + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L116", + "community": 330, + "norm_label": "synctosandbox pushes host files into the sandbox.", + "id": "tests_test_sandbox_persistence_rationale_116" }, { - "label": "code:python (class PrometheusSettings(BaseMansaSettings):)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L256", - "community": 145, - "norm_label": "code:python (class prometheussettings(basemansasettings):)", - "id": "plans_2026_07_16_prometheus_harness_master_codeblock_5" + "label": "syncFromSandbox pulls sandbox files to host.", + "file_type": "rationale", + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L135", + "community": 331, + "norm_label": "syncfromsandbox pulls sandbox files to host.", + "id": "tests_test_sandbox_persistence_rationale_135" }, { - "label": "code:yaml (environment:)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L279", - "community": 145, - "norm_label": "code:yaml (environment:)", - "id": "plans_2026_07_16_prometheus_harness_master_codeblock_6" + "label": "syncToSandbox returns 0 when workspace is empty.", + "file_type": "rationale", + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L155", + "community": 332, + "norm_label": "synctosandbox returns 0 when workspace is empty.", + "id": "tests_test_sandbox_persistence_rationale_155" }, { - "label": "code:yaml (sandbox:)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L290", - "community": 145, - "norm_label": "code:yaml (sandbox:)", - "id": "plans_2026_07_16_prometheus_harness_master_codeblock_7" + "label": "sandbox_cleanup.py", + "file_type": "code", + "source_file": "main/app/prometheus/sandbox_cleanup.py", + "source_location": "L1", + "community": 4, + "norm_label": "sandbox_cleanup.py", + "id": "main_app_prometheus_sandbox_cleanup_py" }, { - "label": "code:bash (git add config.py docker-compose.yml)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L302", - "community": 145, - "norm_label": "code:bash (git add config.py docker-compose.yml)", - "id": "plans_2026_07_16_prometheus_harness_master_codeblock_8" + "label": "cleanup_expired_sandboxes()", + "file_type": "code", + "source_file": "main/app/prometheus/sandbox_cleanup.py", + "source_location": "L9", + "community": 4, + "norm_label": "cleanup_expired_sandboxes()", + "id": "prometheus_sandbox_cleanup_cleanup_expired_sandboxes" }, { - "label": "Task 3: SandboxManager \u2014 HTTP Client for CubeSandbox", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L309", - "community": 145, - "norm_label": "task 3: sandboxmanager \u2014 http client for cubesandbox", - "id": "plans_2026_07_16_prometheus_harness_master_task_3_sandboxmanager_http_client_for_cubesandbox" + "label": "Remove DB mappings for sandboxes that no longer exist in ForgeVM.", + "file_type": "rationale", + "source_file": "main/app/prometheus/sandbox_cleanup.py", + "source_location": "L10", + "community": 4, + "norm_label": "remove db mappings for sandboxes that no longer exist in forgevm.", + "id": "prometheus_sandbox_cleanup_rationale_10" }, { - "label": "code:python (import pytest)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L323", - "community": 145, - "norm_label": "code:python (import pytest)", - "id": "plans_2026_07_16_prometheus_harness_master_codeblock_9" + "label": "test_agent_import_sandbox_manager()", + "file_type": "code", + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L53", + "community": 24, + "norm_label": "test_agent_import_sandbox_manager()", + "id": "tests_test_agent_sandbox_integration_test_agent_import_sandbox_manager" }, { - "label": "code:python (import logging)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L392", - "community": 145, - "norm_label": "code:python (import logging)", - "id": "plans_2026_07_16_prometheus_harness_master_codeblock_10" + "label": "test_destroy_still_available()", + "file_type": "code", + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L60", + "community": 24, + "norm_label": "test_destroy_still_available()", + "id": "tests_test_agent_sandbox_integration_test_destroy_still_available" }, { - "label": "code:bash (git add main/app/prometheus/sandbox.py tests/test_sandbox.py)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L468", - "community": 145, - "norm_label": "code:bash (git add main/app/prometheus/sandbox.py tests/test_sandbox.py)", - "id": "plans_2026_07_16_prometheus_harness_master_codeblock_11" + "label": "destroy() still exists for explicit user requests.", + "file_type": "rationale", + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L61", + "community": 333, + "norm_label": "destroy() still exists for explicit user requests.", + "id": "tests_test_agent_sandbox_integration_rationale_61" }, { - "label": "Phase 3: Result Cache", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L475", - "community": 226, - "norm_label": "phase 3: result cache", - "id": "plans_2026_07_16_prometheus_harness_master_phase_3_result_cache" + "label": "Verify agent.py no longer calls SandboxManager.create directly.", + "file_type": "rationale", + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L66", + "community": 334, + "norm_label": "verify agent.py no longer calls sandboxmanager.create directly.", + "id": "tests_test_agent_sandbox_integration_rationale_66" }, { - "label": "Task 4: ResultCache \u2014 SHA256-Keyed Computed Results", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L477", - "community": 226, - "norm_label": "task 4: resultcache \u2014 sha256-keyed computed results", - "id": "plans_2026_07_16_prometheus_harness_master_task_4_resultcache_sha256_keyed_computed_results" + "label": "TestSandboxCleanup", + "file_type": "code", + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L164", + "community": 4, + "norm_label": "testsandboxcleanup", + "id": "tests_test_sandbox_persistence_testsandboxcleanup" }, { - "label": "code:python (import pytest)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L491", - "community": 226, - "norm_label": "code:python (import pytest)", - "id": "plans_2026_07_16_prometheus_harness_master_codeblock_12" + "label": "test_cleanup_removes_dead_mappings()", + "file_type": "code", + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L167", + "community": 4, + "norm_label": "test_cleanup_removes_dead_mappings()", + "id": "tests_test_sandbox_persistence_test_cleanup_removes_dead_mappings" }, { - "label": "code:python (import hashlib)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L542", - "community": 226, - "norm_label": "code:python (import hashlib)", - "id": "plans_2026_07_16_prometheus_harness_master_codeblock_13" + "label": "test_cleanup_keeps_alive_sandboxes()", + "file_type": "code", + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L187", + "community": 4, + "norm_label": "test_cleanup_keeps_alive_sandboxes()", + "id": "tests_test_sandbox_persistence_test_cleanup_keeps_alive_sandboxes" }, { - "label": "code:bash (git add main/app/prometheus/cache.py tests/test_cache.py)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L600", - "community": 226, - "norm_label": "code:bash (git add main/app/prometheus/cache.py tests/test_cache.py)", - "id": "plans_2026_07_16_prometheus_harness_master_codeblock_14" + "label": "Mappings for dead sandboxes are removed.", + "file_type": "rationale", + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L168", + "community": 335, + "norm_label": "mappings for dead sandboxes are removed.", + "id": "tests_test_sandbox_persistence_rationale_168" }, { - "label": "Phase 4: ToolContext (Replace God Function)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L607", - "community": 228, - "norm_label": "phase 4: toolcontext (replace god function)", - "id": "plans_2026_07_16_prometheus_harness_master_phase_4_toolcontext_replace_god_function" + "label": "Mappings for alive sandboxes are kept.", + "file_type": "rationale", + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L188", + "community": 336, + "norm_label": "mappings for alive sandboxes are kept.", + "id": "tests_test_sandbox_persistence_rationale_188" }, { - "label": "Task 5: ToolContext \u2014 Single Dispatch Object", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L609", - "community": 228, - "norm_label": "task 5: toolcontext \u2014 single dispatch object", - "id": "plans_2026_07_16_prometheus_harness_master_task_5_toolcontext_single_dispatch_object" + "label": "PrometheusMemory", + "file_type": "code", + "source_file": "main/models/memory.py", + "source_location": "L7", + "community": 140, + "norm_label": "prometheusmemory", + "id": "models_memory_usermemory" }, { - "label": "code:python (import pytest)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L623", - "community": 228, - "norm_label": "code:python (import pytest)", - "id": "plans_2026_07_16_prometheus_harness_master_codeblock_15" + "label": ".sendMessage()", + "file_type": "code", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L181", + "community": 116, + "norm_label": ".sendmessage()", + "id": "prometheus_agent_prometheus_sendmessage" }, { - "label": "code:python (import logging)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L673", - "community": 228, - "norm_label": "code:python (import logging)", - "id": "plans_2026_07_16_prometheus_harness_master_codeblock_16" + "label": "syncWorkspace()", + "file_type": "code", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L135", + "community": 69, + "norm_label": "syncworkspace()", + "id": "prometheus_sandbox_syncworkspace" }, { - "label": "code:bash (git add main/app/prometheus/context.py tests/test_context.py)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L847", - "community": 228, - "norm_label": "code:bash (git add main/app/prometheus/context.py tests/test_context.py)", - "id": "plans_2026_07_16_prometheus_harness_master_codeblock_17" + "label": "restoreWorkspace()", + "file_type": "code", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L149", + "community": 69, + "norm_label": "restoreworkspace()", + "id": "prometheus_sandbox_restoreworkspace" }, { - "label": "Phase 5: Observable Loop (Batched)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L854", - "community": 200, - "norm_label": "phase 5: observable loop (batched)", - "id": "plans_2026_07_16_prometheus_harness_master_phase_5_observable_loop_batched" + "label": "_saveBackup()", + "file_type": "code", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L160", + "community": 69, + "norm_label": "_savebackup()", + "id": "prometheus_sandbox_savebackup" }, { - "label": "Task 6: LoopEvent Model + LoopLogger", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L856", - "community": 200, - "norm_label": "task 6: loopevent model + looplogger", - "id": "plans_2026_07_16_prometheus_harness_master_task_6_loopevent_model_looplogger" + "label": "_loadBackup()", + "file_type": "code", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L169", + "community": 69, + "norm_label": "_loadbackup()", + "id": "prometheus_sandbox_loadbackup" }, { - "label": "code:python (import pytest)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L871", - "community": 200, - "norm_label": "code:python (import pytest)", - "id": "plans_2026_07_16_prometheus_harness_master_codeblock_18" + "label": "Return existing sandbox if alive, otherwise create a new one. When a DB", + "file_type": "rationale", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L45", + "community": 337, + "norm_label": "return existing sandbox if alive, otherwise create a new one. when a db", + "id": "prometheus_sandbox_rationale_45" }, { - "label": "code:python (from datetime import datetime, timezone)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L934", - "community": 200, - "norm_label": "code:python (from datetime import datetime, timezone)", - "id": "plans_2026_07_16_prometheus_harness_master_codeblock_19" + "label": "Snapshot every file in /workspace as a {path: content} dict.", + "file_type": "rationale", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L136", + "community": 338, + "norm_label": "snapshot every file in /workspace as a {path: content} dict.", + "id": "prometheus_sandbox_rationale_136" }, { - "label": "code:python (import logging)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L964", - "community": 200, - "norm_label": "code:python (import logging)", - "id": "plans_2026_07_16_prometheus_harness_master_codeblock_20" + "label": "Write a {path: content} dict back into the sandbox.", + "file_type": "rationale", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L150", + "community": 339, + "norm_label": "write a {path: content} dict back into the sandbox.", + "id": "prometheus_sandbox_rationale_150" }, { - "label": "code:bash (git add main/models/harness.py main/app/prometheus/events.py)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L1021", - "community": 200, - "norm_label": "code:bash (git add main/models/harness.py main/app/prometheus/events.py)", - "id": "plans_2026_07_16_prometheus_harness_master_codeblock_21" + "label": "Persist workspace files to the host volume as JSON.", + "file_type": "rationale", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L161", + "community": 340, + "norm_label": "persist workspace files to the host volume as json.", + "id": "prometheus_sandbox_rationale_161" }, { - "label": "Phase 6: Agent Integration (All Layers)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L1028", - "community": 133, - "norm_label": "phase 6: agent integration (all layers)", - "id": "plans_2026_07_16_prometheus_harness_master_phase_6_agent_integration_all_layers" + "label": "Load workspace backup from host volume, or return {} if none.", + "file_type": "rationale", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L170", + "community": 341, + "norm_label": "load workspace backup from host volume, or return {} if none.", + "id": "prometheus_sandbox_rationale_170" }, { - "label": "Task 7: Tool Definitions \u2014 State + Sandbox + Cache Tools", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L1030", - "community": 133, - "norm_label": "task 7: tool definitions \u2014 state + sandbox + cache tools", - "id": "plans_2026_07_16_prometheus_harness_master_task_7_tool_definitions_state_sandbox_cache_tools" + "label": "Destroy a sandbox and optionally remove its DB mapping.", + "file_type": "rationale", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L179", + "community": 342, + "norm_label": "destroy a sandbox and optionally remove its db mapping.", + "id": "prometheus_sandbox_rationale_179" }, { - "label": "code:python (import inspect)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L1043", - "community": 133, - "norm_label": "code:python (import inspect)", - "id": "plans_2026_07_16_prometheus_harness_master_codeblock_22" + "label": "Read a file from the sandbox filesystem. Args: path: Absolute pa", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L131", + "community": 208, + "norm_label": "read a file from the sandbox filesystem. args: path: absolute pa", + "id": "prometheus_tools_rationale_131" }, { - "label": "code:python (from main.app.prometheus.state import HarnessState)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L1090", - "community": 133, - "norm_label": "code:python (from main.app.prometheus.state import harnessstate)", - "id": "plans_2026_07_16_prometheus_harness_master_codeblock_23" + "label": "chat()", + "file_type": "code", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L111", + "community": 84, + "norm_label": "chat()", + "id": "controller_prometheus_controller_chat" }, { - "label": "code:bash (git add main/app/prometheus/tools.py tests/test_tools.py)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L1144", - "community": 133, - "norm_label": "code:bash (git add main/app/prometheus/tools.py tests/test_tools.py)", - "id": "plans_2026_07_16_prometheus_harness_master_codeblock_24" + "label": "test_sync_empty_workspace_skips_save()", + "file_type": "code", + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L42", + "community": 24, + "norm_label": "test_sync_empty_workspace_skips_save()", + "id": "tests_test_agent_sandbox_integration_test_sync_empty_workspace_skips_save" }, { - "label": "Task 8: Agent Integration \u2014 Wire Everything Together", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L1151", - "community": 173, - "norm_label": "task 8: agent integration \u2014 wire everything together", - "id": "plans_2026_07_16_prometheus_harness_master_task_8_agent_integration_wire_everything_together" + "label": "Agent module can import SandboxManager.", + "file_type": "rationale", + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L60", + "community": 343, + "norm_label": "agent module can import sandboxmanager.", + "id": "tests_test_agent_sandbox_integration_rationale_60" }, { - "label": "code:python (import pytest)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L1164", - "community": 173, - "norm_label": "code:python (import pytest)", - "id": "plans_2026_07_16_prometheus_harness_master_codeblock_25" + "label": "destroy() still exists for explicit user requests.", + "file_type": "rationale", + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L70", + "community": 344, + "norm_label": "destroy() still exists for explicit user requests.", + "id": "tests_test_agent_sandbox_integration_rationale_70" }, { - "label": "code:python (from main.app.prometheus.tools import MEMORY_TOOLS, STATE_TO)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L1203", - "community": 173, - "norm_label": "code:python (from main.app.prometheus.tools import memory_tools, state_to)", - "id": "plans_2026_07_16_prometheus_harness_master_codeblock_26" + "label": "Verify agent.py no longer calls SandboxManager.create directly.", + "file_type": "rationale", + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L75", + "community": 345, + "norm_label": "verify agent.py no longer calls sandboxmanager.create directly.", + "id": "tests_test_agent_sandbox_integration_rationale_75" }, { - "label": "code:python (@classmethod)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L1214", - "community": 173, - "norm_label": "code:python (@classmethod)", - "id": "plans_2026_07_16_prometheus_harness_master_codeblock_27" + "label": "test_read_file()", + "file_type": "code", + "source_file": "tests/test_sandbox.py", + "source_location": "L43", + "community": 2, + "norm_label": "test_read_file()", + "id": "tests_test_sandbox_test_read_file" }, { - "label": "code:python (def makeChat(self, sessions, history, *, system_prompt=None,)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L1242", - "community": 173, - "norm_label": "code:python (def makechat(self, sessions, history, *, system_prompt=none,)", - "id": "plans_2026_07_16_prometheus_harness_master_codeblock_28" + "label": "test_write_file()", + "file_type": "code", + "source_file": "tests/test_sandbox.py", + "source_location": "L51", + "community": 2, + "norm_label": "test_write_file()", + "id": "tests_test_sandbox_test_write_file" }, { - "label": "code:python (async def streamMessage()", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L1262", - "community": 173, - "norm_label": "code:python (async def streammessage()", - "id": "plans_2026_07_16_prometheus_harness_master_codeblock_29" + "label": "test_list_files()", + "file_type": "code", + "source_file": "tests/test_sandbox.py", + "source_location": "L59", + "community": 2, + "norm_label": "test_list_files()", + "id": "tests_test_sandbox_test_list_files" }, { - "label": "code:python (async def sendMessage()", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L1361", - "community": 173, - "norm_label": "code:python (async def sendmessage()", - "id": "plans_2026_07_16_prometheus_harness_master_codeblock_30" + "label": "test_write_file_returns_false_on_error()", + "file_type": "code", + "source_file": "tests/test_sandbox.py", + "source_location": "L102", + "community": 2, + "norm_label": "test_write_file_returns_false_on_error()", + "id": "tests_test_sandbox_test_write_file_returns_false_on_error" }, { - "label": "code:bash (git add main/app/prometheus/agent.py tests/test_agent_integr)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L1403", - "community": 173, - "norm_label": "code:bash (git add main/app/prometheus/agent.py tests/test_agent_integr)", - "id": "plans_2026_07_16_prometheus_harness_master_codeblock_31" + "label": "Wire up mock forgevm AsyncClient that returns sandbox with all methods.", + "file_type": "rationale", + "source_file": "tests/test_sandbox.py", + "source_location": "L7", + "community": 2, + "norm_label": "wire up mock forgevm asyncclient that returns sandbox with all methods.", + "id": "tests_test_sandbox_rationale_7" }, { - "label": "Task 9: System Prompt \u2014 Teach LLM About State, Sandbox, and Cache", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L1410", - "community": 133, - "norm_label": "task 9: system prompt \u2014 teach llm about state, sandbox, and cache", - "id": "plans_2026_07_16_prometheus_harness_master_task_9_system_prompt_teach_llm_about_state_sandbox_and_cache" + "label": "test_sync_workspace()", + "file_type": "code", + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L114", + "community": 4, + "norm_label": "test_sync_workspace()", + "id": "tests_test_sandbox_persistence_test_sync_workspace" }, { - "label": "code:python (SYSTEM_PROMPT = \"\"\")", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L1423", - "community": 133, - "norm_label": "code:python (system_prompt = \"\"\")", - "id": "plans_2026_07_16_prometheus_harness_master_codeblock_32" + "label": "test_restore_workspace()", + "file_type": "code", + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L132", + "community": 4, + "norm_label": "test_restore_workspace()", + "id": "tests_test_sandbox_persistence_test_restore_workspace" }, { - "label": "code:bash (git add main/app/prometheus/agent.py)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L1471", - "community": 133, - "norm_label": "code:bash (git add main/app/prometheus/agent.py)", - "id": "plans_2026_07_16_prometheus_harness_master_codeblock_33" + "label": "Wire up mock forgevm AsyncClient that returns sandbox with all methods.", + "file_type": "rationale", + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L8", + "community": 4, + "norm_label": "wire up mock forgevm asyncclient that returns sandbox with all methods.", + "id": "tests_test_sandbox_persistence_rationale_8" }, { - "label": "Task 10: Docker \u2014 CubeSandbox Template", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L1478", - "community": 133, - "norm_label": "task 10: docker \u2014 cubesandbox template", - "id": "plans_2026_07_16_prometheus_harness_master_task_10_docker_cubesandbox_template" + "label": "Enforce one active sandbox per user via application logic.", + "file_type": "rationale", + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L51", + "community": 4, + "norm_label": "enforce one active sandbox per user via application logic.", + "id": "tests_test_sandbox_persistence_rationale_51" }, { - "label": "code:dockerfile (FROM python:3.11-slim)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L1489", - "community": 133, - "norm_label": "code:dockerfile (from python:3.11-slim)", - "id": "plans_2026_07_16_prometheus_harness_master_codeblock_34" + "label": "Mappings for dead sandboxes are removed.", + "file_type": "rationale", + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L145", + "community": 346, + "norm_label": "mappings for dead sandboxes are removed.", + "id": "tests_test_sandbox_persistence_rationale_145" }, { - "label": "code:bash (git add Dockerfile.sandbox)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L1507", - "community": 133, - "norm_label": "code:bash (git add dockerfile.sandbox)", - "id": "plans_2026_07_16_prometheus_harness_master_codeblock_35" + "label": "Mappings for alive sandboxes are kept.", + "file_type": "rationale", + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L165", + "community": 347, + "norm_label": "mappings for alive sandboxes are kept.", + "id": "tests_test_sandbox_persistence_rationale_165" }, { - "label": "Summary", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L1514", - "community": 144, - "norm_label": "summary", - "id": "plans_2026_07_16_prometheus_harness_master_summary" + "label": "Snapshot every file in /workspace as a {path: content} dict.", + "file_type": "rationale", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L135", + "community": 348, + "norm_label": "snapshot every file in /workspace as a {path: content} dict.", + "id": "prometheus_sandbox_rationale_135" }, { - "label": "What This Enables", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L1533", - "community": 144, - "norm_label": "what this enables", - "id": "plans_2026_07_16_prometheus_harness_master_what_this_enables" + "label": "Write a {path: content} dict back into the sandbox.", + "file_type": "rationale", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L149", + "community": 349, + "norm_label": "write a {path: content} dict back into the sandbox.", + "id": "prometheus_sandbox_rationale_149" }, { - "label": "What This Does NOT Do (By Design)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L1542", - "community": 144, - "norm_label": "what this does not do (by design)", - "id": "plans_2026_07_16_prometheus_harness_master_what_this_does_not_do_by_design" + "label": "Persist workspace files to the host volume as JSON.", + "file_type": "rationale", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L160", + "community": 350, + "norm_label": "persist workspace files to the host volume as json.", + "id": "prometheus_sandbox_rationale_160" }, { - "label": "Relationship to Existing Systems", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", - "source_location": "L1550", - "community": 144, - "norm_label": "relationship to existing systems", - "id": "plans_2026_07_16_prometheus_harness_master_relationship_to_existing_systems" + "label": "Load workspace backup from host volume, or return {} if none.", + "file_type": "rationale", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L169", + "community": 351, + "norm_label": "load workspace backup from host volume, or return {} if none.", + "id": "prometheus_sandbox_rationale_169" }, { - "label": "2026-07-16-prometheus-harness-state.md", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", - "source_location": "L1", - "community": 30, - "norm_label": "2026-07-16-prometheus-harness-state.md", - "id": "docs_superpowers_plans_2026_07_16_prometheus_harness_state_md" + "label": "Destroy a sandbox and optionally remove its DB mapping.", + "file_type": "rationale", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L178", + "community": 352, + "norm_label": "destroy a sandbox and optionally remove its db mapping.", + "id": "prometheus_sandbox_rationale_178" }, { - "label": "Prometheus Harness State \u2014 In-Memory Agent Scratchpad", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", - "source_location": "L1", - "community": 30, - "norm_label": "prometheus harness state \u2014 in-memory agent scratchpad", - "id": "plans_2026_07_16_prometheus_harness_state_prometheus_harness_state_in_memory_agent_scratchpad" + "label": "Read a file from the sandbox filesystem. Args: path: Absolute pa", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L130", + "community": 208, + "norm_label": "read a file from the sandbox filesystem. args: path: absolute pa", + "id": "prometheus_tools_rationale_130" }, { - "label": "Global Constraints", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", - "source_location": "L11", - "community": 30, - "norm_label": "global constraints", - "id": "plans_2026_07_16_prometheus_harness_state_global_constraints" + "label": "TestAgentSandboxIntegration", + "file_type": "code", + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L7", + "community": 522, + "norm_label": "testagentsandboxintegration", + "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration" }, { - "label": "Architecture", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", - "source_location": "L23", - "community": 30, - "norm_label": "architecture", - "id": "plans_2026_07_16_prometheus_harness_state_architecture" + "label": ".test_build_system_prompt_includes_sandbox_instructions()", + "file_type": "code", + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L8", + "community": 522, + "norm_label": ".test_build_system_prompt_includes_sandbox_instructions()", + "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_build_system_prompt_includes_sandbox_instructions" }, { - "label": "code:block1 (User: \"Analyze PETR4 vs VALE3 correlation\")", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", - "source_location": "L25", - "community": 30, - "norm_label": "code:block1 (user: \"analyze petr4 vs vale3 correlation\")", - "id": "plans_2026_07_16_prometheus_harness_state_codeblock_1" + "label": ".test_build_system_prompt_includes_state_instructions()", + "file_type": "code", + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L14", + "community": 522, + "norm_label": ".test_build_system_prompt_includes_state_instructions()", + "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_build_system_prompt_includes_state_instructions" }, { - "label": "File Map", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", - "source_location": "L67", - "community": 30, - "norm_label": "file map", - "id": "plans_2026_07_16_prometheus_harness_state_file_map" + "label": ".test_build_system_prompt_with_state()", + "file_type": "code", + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L19", + "community": 522, + "norm_label": ".test_build_system_prompt_with_state()", + "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_build_system_prompt_with_state" }, { - "label": "Task 1: HarnessState Class", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", - "source_location": "L80", - "community": 30, - "norm_label": "task 1: harnessstate class", - "id": "plans_2026_07_16_prometheus_harness_state_task_1_harnessstate_class" + "label": "test_streamMessage_creates_sandbox_on_execute_code()", + "file_type": "code", + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L28", + "community": 24, + "norm_label": "test_streammessage_creates_sandbox_on_execute_code()", + "id": "tests_test_agent_sandbox_integration_test_streammessage_creates_sandbox_on_execute_code" }, { - "label": "code:python (import pytest)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", - "source_location": "L94", - "community": 30, - "norm_label": "code:python (import pytest)", - "id": "plans_2026_07_16_prometheus_harness_state_codeblock_2" + "label": "TestPremiumCheck", + "file_type": "code", + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L36", + "community": 24, + "norm_label": "testpremiumcheck", + "id": "tests_test_agent_sandbox_integration_testpremiumcheck" }, { - "label": "code:python (import logging)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", - "source_location": "L167", - "community": 30, - "norm_label": "code:python (import logging)", - "id": "plans_2026_07_16_prometheus_harness_state_codeblock_3" + "label": ".test_premium_user_has_sandbox_access()", + "file_type": "code", + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L39", + "community": 24, + "norm_label": ".test_premium_user_has_sandbox_access()", + "id": "tests_test_agent_sandbox_integration_testpremiumcheck_test_premium_user_has_sandbox_access" }, { - "label": "code:bash (git add main/app/prometheus/state.py tests/test_harness_stat)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", - "source_location": "L226", - "community": 30, - "norm_label": "code:bash (git add main/app/prometheus/state.py tests/test_harness_stat)", - "id": "plans_2026_07_16_prometheus_harness_state_codeblock_4" + "label": ".test_admin_user_has_sandbox_access()", + "file_type": "code", + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L45", + "community": 24, + "norm_label": ".test_admin_user_has_sandbox_access()", + "id": "tests_test_agent_sandbox_integration_testpremiumcheck_test_admin_user_has_sandbox_access" }, { - "label": "Task 2: State Tools \u2014 Function Definitions + Dispatch", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", - "source_location": "L233", - "community": 30, - "norm_label": "task 2: state tools \u2014 function definitions + dispatch", - "id": "plans_2026_07_16_prometheus_harness_state_task_2_state_tools_function_definitions_dispatch" + "label": ".test_free_user_no_sandbox_access()", + "file_type": "code", + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L51", + "community": 24, + "norm_label": ".test_free_user_no_sandbox_access()", + "id": "tests_test_agent_sandbox_integration_testpremiumcheck_test_free_user_no_sandbox_access" }, { - "label": "code:python (import inspect)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", - "source_location": "L247", - "community": 30, - "norm_label": "code:python (import inspect)", - "id": "plans_2026_07_16_prometheus_harness_state_codeblock_5" + "label": ".test_no_user_no_sandbox_access()", + "file_type": "code", + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L57", + "community": 24, + "norm_label": ".test_no_user_no_sandbox_access()", + "id": "tests_test_agent_sandbox_integration_testpremiumcheck_test_no_user_no_sandbox_access" }, { - "label": "code:python (from main.app.prometheus.state import HarnessState)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", - "source_location": "L344", - "community": 30, - "norm_label": "code:python (from main.app.prometheus.state import harnessstate)", - "id": "plans_2026_07_16_prometheus_harness_state_codeblock_6" + "label": "Verify on-demand sandbox is created when LLM calls execute_code.", + "file_type": "rationale", + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L29", + "community": 353, + "norm_label": "verify on-demand sandbox is created when llm calls execute_code.", + "id": "tests_test_agent_sandbox_integration_rationale_29" }, { - "label": "code:python (async def dispatchToolCall(functionCall, mcpClients, user=No)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", - "source_location": "L391", - "community": 30, - "norm_label": "code:python (async def dispatchtoolcall(functioncall, mcpclients, user=no)", - "id": "plans_2026_07_16_prometheus_harness_state_codeblock_7" + "label": "Test the premium gating logic used in streamMessage.", + "file_type": "rationale", + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L37", + "community": 24, + "norm_label": "test the premium gating logic used in streammessage.", + "id": "tests_test_agent_sandbox_integration_rationale_37" }, { - "label": "code:bash (git add main/app/prometheus/tools.py tests/test_state_tools.)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", - "source_location": "L427", - "community": 30, - "norm_label": "code:bash (git add main/app/prometheus/tools.py tests/test_state_tools.)", - "id": "plans_2026_07_16_prometheus_harness_state_codeblock_8" + "label": "Enforce one active sandbox per user via application logic.", + "file_type": "rationale", + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L30", + "community": 4, + "norm_label": "enforce one active sandbox per user via application logic.", + "id": "tests_test_sandbox_persistence_rationale_30" }, { - "label": "Task 3: Agent Integration \u2014 State Lifecycle in Stream Loop", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", - "source_location": "L434", - "community": 30, - "norm_label": "task 3: agent integration \u2014 state lifecycle in stream loop", - "id": "plans_2026_07_16_prometheus_harness_state_task_3_agent_integration_state_lifecycle_in_stream_loop" + "label": "Search user's saved memories, preferences, and past analysis context. Use", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L15", + "community": 152, + "norm_label": "search user's saved memories, preferences, and past analysis context. use", + "id": "prometheus_tools_rationale_15" }, { - "label": "code:python (import pytest)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", - "source_location": "L448", - "community": 30, - "norm_label": "code:python (import pytest)", - "id": "plans_2026_07_16_prometheus_harness_state_codeblock_9" + "label": "Store a memory about the user's preferences, analysis results, or feedback.", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L41", + "community": 126, + "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", + "id": "prometheus_tools_rationale_41" }, { - "label": "code:python (from main.app.prometheus.tools import MEMORY_TOOLS, STATE_TO)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", - "source_location": "L498", - "community": 30, - "norm_label": "code:python (from main.app.prometheus.tools import memory_tools, state_to)", - "id": "plans_2026_07_16_prometheus_harness_state_codeblock_10" + "label": "Retrieve values from the harness state. Use this to recall intermediate results,", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L78", + "community": 162, + "norm_label": "retrieve values from the harness state. use this to recall intermediate results,", + "id": "prometheus_tools_rationale_78" }, { - "label": "code:python (@classmethod)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", - "source_location": "L505", - "community": 30, - "norm_label": "code:python (@classmethod)", - "id": "plans_2026_07_16_prometheus_harness_state_codeblock_11" + "label": "Store a value in the harness state for this session. Use this to save inter", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L93", + "community": 487, + "norm_label": "store a value in the harness state for this session. use this to save inter", + "id": "prometheus_tools_rationale_93" }, { - "label": "code:python (def makeChat(self, sessions, history, *, system_prompt=None,)", + "label": "2026-07-16-prometheus-harness-architecture.md", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", - "source_location": "L533", - "community": 30, - "norm_label": "code:python (def makechat(self, sessions, history, *, system_prompt=none,)", - "id": "plans_2026_07_16_prometheus_harness_state_codeblock_12" + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L1", + "community": 158, + "norm_label": "2026-07-16-prometheus-harness-architecture.md", + "id": "docs_superpowers_plans_2026_07_16_prometheus_harness_architecture_md" }, { - "label": "code:python (async def sendMessage()", + "label": "Prometheus Harness Architecture \u2014 Observable Loops, Sandbox Execution, Persistent States", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", - "source_location": "L553", - "community": 30, - "norm_label": "code:python (async def sendmessage()", - "id": "plans_2026_07_16_prometheus_harness_state_codeblock_13" + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L1", + "community": 158, + "norm_label": "prometheus harness architecture \u2014 observable loops, sandbox execution, persistent states", + "id": "plans_2026_07_16_prometheus_harness_architecture_prometheus_harness_architecture_observable_loops_sandbox_execution_persistent_states" }, { - "label": "code:python (async def streamMessage()", + "label": "Global Constraints", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", - "source_location": "L574", - "community": 30, - "norm_label": "code:python (async def streammessage()", - "id": "plans_2026_07_16_prometheus_harness_state_codeblock_14" + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L14", + "community": 158, + "norm_label": "global constraints", + "id": "plans_2026_07_16_prometheus_harness_architecture_global_constraints" }, { - "label": "code:bash (git add main/app/prometheus/agent.py tests/test_agent_state_)", + "label": "Architecture Overview", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", - "source_location": "L649", - "community": 30, - "norm_label": "code:bash (git add main/app/prometheus/agent.py tests/test_agent_state_)", - "id": "plans_2026_07_16_prometheus_harness_state_codeblock_15" + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L27", + "community": 245, + "norm_label": "architecture overview", + "id": "plans_2026_07_16_prometheus_harness_architecture_architecture_overview" }, { - "label": "Task 4: System Prompt \u2014 Teach LLM About State Management", + "label": "code:block1 (+-----------------------------------------------------------)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", - "source_location": "L656", - "community": 30, - "norm_label": "task 4: system prompt \u2014 teach llm about state management", - "id": "plans_2026_07_16_prometheus_harness_state_task_4_system_prompt_teach_llm_about_state_management" + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L29", + "community": 245, + "norm_label": "code:block1 (+-----------------------------------------------------------)", + "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_1" }, { - "label": "code:python (SYSTEM_PROMPT = \"\"\")", + "label": "Data Flow for a Complex Task", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", - "source_location": "L669", - "community": 30, - "norm_label": "code:python (system_prompt = \"\"\")", - "id": "plans_2026_07_16_prometheus_harness_state_codeblock_16" + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L62", + "community": 245, + "norm_label": "data flow for a complex task", + "id": "plans_2026_07_16_prometheus_harness_architecture_data_flow_for_a_complex_task" }, { - "label": "code:bash (git add main/app/prometheus/agent.py)", + "label": "code:block2 (User: \"Analyze PETR4 vs VALE3 correlation over 5 years\")", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", - "source_location": "L700", - "community": 30, - "norm_label": "code:bash (git add main/app/prometheus/agent.py)", - "id": "plans_2026_07_16_prometheus_harness_state_codeblock_17" + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L64", + "community": 245, + "norm_label": "code:block2 (user: \"analyze petr4 vs vale3 correlation over 5 years\")", + "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_2" }, { - "label": "Summary", + "label": "File Map", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", - "source_location": "L707", - "community": 30, - "norm_label": "summary", - "id": "plans_2026_07_16_prometheus_harness_state_summary" + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L86", + "community": 158, + "norm_label": "file map", + "id": "plans_2026_07_16_prometheus_harness_architecture_file_map" }, { - "label": "What This Enables", + "label": "Task 1: Config \u2014 Add Sandbox + Workspace Settings", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", - "source_location": "L720", - "community": 30, - "norm_label": "what this enables", - "id": "plans_2026_07_16_prometheus_harness_state_what_this_enables" + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L108", + "community": 224, + "norm_label": "task 1: config \u2014 add sandbox + workspace settings", + "id": "plans_2026_07_16_prometheus_harness_architecture_task_1_config_add_sandbox_workspace_settings" }, { - "label": "What This Does NOT Do (By Design)", + "label": "code:python (# Sandbox)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", - "source_location": "L728", - "community": 30, - "norm_label": "what this does not do (by design)", - "id": "plans_2026_07_16_prometheus_harness_state_what_this_does_not_do_by_design" + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L121", + "community": 224, + "norm_label": "code:python (# sandbox)", + "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_3" }, { - "label": "Relationship to Other Plans", + "label": "code:yaml (environment:)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", - "source_location": "L735", - "community": 30, - "norm_label": "relationship to other plans", - "id": "plans_2026_07_16_prometheus_harness_state_relationship_to_other_plans" + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L138", + "community": 224, + "norm_label": "code:yaml (environment:)", + "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_4" }, { - "label": "2026-07-16-prometheus-sandbox-agent.md", + "label": "code:yaml (sandbox:)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", - "source_location": "L1", - "community": 19, - "norm_label": "2026-07-16-prometheus-sandbox-agent.md", - "id": "docs_superpowers_plans_2026_07_16_prometheus_sandbox_agent_md" + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L149", + "community": 224, + "norm_label": "code:yaml (sandbox:)", + "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_5" }, { - "label": "Prometheus Sandbox Code Interpreter \u2014 Implementation Plan", + "label": "code:bash (git add config.py docker-compose.yml)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", - "source_location": "L1", - "community": 19, - "norm_label": "prometheus sandbox code interpreter \u2014 implementation plan", - "id": "plans_2026_07_16_prometheus_sandbox_agent_prometheus_sandbox_code_interpreter_implementation_plan" + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L161", + "community": 224, + "norm_label": "code:bash (git add config.py docker-compose.yml)", + "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_6" }, { - "label": "Global Constraints", + "label": "Task 2: Loop Events \u2014 Structured Event Model + Logger", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", - "source_location": "L11", - "community": 19, - "norm_label": "global constraints", - "id": "plans_2026_07_16_prometheus_sandbox_agent_global_constraints" + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L168", + "community": 225, + "norm_label": "task 2: loop events \u2014 structured event model + logger", + "id": "plans_2026_07_16_prometheus_harness_architecture_task_2_loop_events_structured_event_model_logger" }, { - "label": "File Map", + "label": "code:python (import pytest)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", - "source_location": "L23", - "community": 19, - "norm_label": "file map", - "id": "plans_2026_07_16_prometheus_sandbox_agent_file_map" + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L182", + "community": 225, + "norm_label": "code:python (import pytest)", + "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_7" }, { - "label": "Task 1: Config \u2014 Add Sandbox Settings", + "label": "code:python (from datetime import datetime, timezone)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", - "source_location": "L37", - "community": 19, - "norm_label": "task 1: config \u2014 add sandbox settings", - "id": "plans_2026_07_16_prometheus_sandbox_agent_task_1_config_add_sandbox_settings" + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L269", + "community": 225, + "norm_label": "code:python (from datetime import datetime, timezone)", + "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_8" }, { - "label": "code:python (class PrometheusSettings(BaseMansaSettings):)", + "label": "code:python (import logging)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", - "source_location": "L50", - "community": 19, - "norm_label": "code:python (class prometheussettings(basemansasettings):)", - "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_1" + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L299", + "community": 225, + "norm_label": "code:python (import logging)", + "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_9" }, { - "label": "code:yaml (environment:)", + "label": "code:bash (git add main/models/harness.py main/app/prometheus/events.py)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", - "source_location": "L71", - "community": 19, - "norm_label": "code:yaml (environment:)", - "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_2" + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L344", + "community": 225, + "norm_label": "code:bash (git add main/models/harness.py main/app/prometheus/events.py)", + "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_10" }, { - "label": "code:bash (git add config.py docker-compose.yml)", + "label": "Task 3: Workspace Manager \u2014 Tiered Persistent Workspace", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", - "source_location": "L81", - "community": 19, - "norm_label": "code:bash (git add config.py docker-compose.yml)", - "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_3" + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L351", + "community": 247, + "norm_label": "task 3: workspace manager \u2014 tiered persistent workspace", + "id": "plans_2026_07_16_prometheus_harness_architecture_task_3_workspace_manager_tiered_persistent_workspace" }, { - "label": "Task 2: Sandbox Manager \u2014 Core HTTP Client", + "label": "code:python (import json, os, time, pytest)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", - "source_location": "L88", - "community": 19, - "norm_label": "task 2: sandbox manager \u2014 core http client", - "id": "plans_2026_07_16_prometheus_sandbox_agent_task_2_sandbox_manager_core_http_client" + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L364", + "community": 247, + "norm_label": "code:python (import json, os, time, pytest)", + "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_11" + }, + { + "label": "code:python (import json, logging, shutil, time)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L419", + "community": 247, + "norm_label": "code:python (import json, logging, shutil, time)", + "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_12" + }, + { + "label": "code:bash (git add main/app/prometheus/workspace.py tests/test_workspac)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L516", + "community": 247, + "norm_label": "code:bash (git add main/app/prometheus/workspace.py tests/test_workspac)", + "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_13" + }, + { + "label": "Task 4: Sandbox Manager \u2014 HTTP Client for CubeSandbox", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L523", + "community": 246, + "norm_label": "task 4: sandbox manager \u2014 http client for cubesandbox", + "id": "plans_2026_07_16_prometheus_harness_architecture_task_4_sandbox_manager_http_client_for_cubesandbox" }, { "label": "code:python (import pytest)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", - "source_location": "L101", - "community": 19, + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L536", + "community": 246, "norm_label": "code:python (import pytest)", - "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_4" + "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_14" }, { - "label": "code:python (import base64)", + "label": "code:python (import base64, logging)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", - "source_location": "L192", - "community": 19, - "norm_label": "code:python (import base64)", - "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_5" + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L594", + "community": 246, + "norm_label": "code:python (import base64, logging)", + "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_15" }, { "label": "code:bash (git add main/app/prometheus/sandbox.py tests/test_sandbox.py)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", - "source_location": "L269", - "community": 19, + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L655", + "community": 246, "norm_label": "code:bash (git add main/app/prometheus/sandbox.py tests/test_sandbox.py)", - "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_6" + "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_16" }, { - "label": "Task 3: Sandbox Tools \u2014 Gemini Function Declarations + Dispatch", + "label": "Task 5: Sandbox Tools \u2014 Gemini Function Declarations + Dispatch", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", - "source_location": "L276", - "community": 19, - "norm_label": "task 3: sandbox tools \u2014 gemini function declarations + dispatch", - "id": "plans_2026_07_16_prometheus_sandbox_agent_task_3_sandbox_tools_gemini_function_declarations_dispatch" + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L662", + "community": 223, + "norm_label": "task 5: sandbox tools \u2014 gemini function declarations + dispatch", + "id": "plans_2026_07_16_prometheus_harness_architecture_task_5_sandbox_tools_gemini_function_declarations_dispatch" }, { "label": "code:python (from main.app.prometheus.tools import SANDBOX_TOOLS, SANDBOX)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", - "source_location": "L289", - "community": 19, + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L675", + "community": 223, "norm_label": "code:python (from main.app.prometheus.tools import sandbox_tools, sandbox)", - "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_7" + "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_17" }, { - "label": "code:python (import base64)", + "label": "code:python (from main.app.prometheus.sandbox import SandboxManager)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", - "source_location": "L331", - "community": 19, - "norm_label": "code:python (import base64)", - "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_8" + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L699", + "community": 223, + "norm_label": "code:python (from main.app.prometheus.sandbox import sandboxmanager)", + "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_18" + }, + { + "label": "code:python (async def dispatchToolCall(functionCall, mcpClients, user=No)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L774", + "community": 223, + "norm_label": "code:python (async def dispatchtoolcall(functioncall, mcpclients, user=no)", + "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_19" }, { "label": "code:bash (git add main/app/prometheus/tools.py tests/test_sandbox.py)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", - "source_location": "L537", - "community": 19, + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L812", + "community": 223, "norm_label": "code:bash (git add main/app/prometheus/tools.py tests/test_sandbox.py)", - "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_9" + "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_20" }, { - "label": "Task 4: Agent \u2014 Sandbox Lifecycle in Stream Loop", + "label": "Task 6: Agent Integration \u2014 Sandbox Lifecycle + Loop Events in Stream Loop", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", - "source_location": "L544", - "community": 19, - "norm_label": "task 4: agent \u2014 sandbox lifecycle in stream loop", - "id": "plans_2026_07_16_prometheus_sandbox_agent_task_4_agent_sandbox_lifecycle_in_stream_loop" + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L819", + "community": 199, + "norm_label": "task 6: agent integration \u2014 sandbox lifecycle + loop events in stream loop", + "id": "plans_2026_07_16_prometheus_harness_architecture_task_6_agent_integration_sandbox_lifecycle_loop_events_in_stream_loop" }, { - "label": "code:python (from main.app.prometheus.agent import Prometheus)", + "label": "code:python (import pytest)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", - "source_location": "L557", - "community": 19, - "norm_label": "code:python (from main.app.prometheus.agent import prometheus)", - "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_10" + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L832", + "community": 199, + "norm_label": "code:python (import pytest)", + "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_21" }, { "label": "code:python (from main.app.prometheus.sandbox import SandboxManager)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", - "source_location": "L596", - "community": 19, + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L862", + "community": 199, "norm_label": "code:python (from main.app.prometheus.sandbox import sandboxmanager)", - "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_11" + "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_22" }, { "label": "code:python (def makeChat(self, sessions, history, *, system_prompt=None,)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", - "source_location": "L603", - "community": 19, + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L871", + "community": 199, "norm_label": "code:python (def makechat(self, sessions, history, *, system_prompt=none,)", - "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_12" - }, - { - "label": "code:python (async def sendMessage(self, query=None, sessionId=None, db=N)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", - "source_location": "L611", - "community": 19, - "norm_label": "code:python (async def sendmessage(self, query=none, sessionid=none, db=n)", - "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_13" + "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_23" }, { "label": "code:python (async def streamMessage(self, query=None, sessionId=None, db)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", - "source_location": "L631", - "community": 19, + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L880", + "community": 199, "norm_label": "code:python (async def streammessage(self, query=none, sessionid=none, db)", - "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_14" + "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_24" }, { - "label": "code:bash (git add main/app/prometheus/agent.py)", + "label": "code:bash (git add main/app/prometheus/agent.py tests/test_harness.py)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", - "source_location": "L694", - "community": 19, - "norm_label": "code:bash (git add main/app/prometheus/agent.py)", - "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_15" + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L974", + "community": 199, + "norm_label": "code:bash (git add main/app/prometheus/agent.py tests/test_harness.py)", + "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_25" }, { - "label": "Task 5: Docker \u2014 CubeSandbox Template + Compose Service", + "label": "Task 7: Docker \u2014 CubeSandbox Template + Compose Service", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", - "source_location": "L701", - "community": 19, - "norm_label": "task 5: docker \u2014 cubesandbox template + compose service", - "id": "plans_2026_07_16_prometheus_sandbox_agent_task_5_docker_cubesandbox_template_compose_service" + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L981", + "community": 248, + "norm_label": "task 7: docker \u2014 cubesandbox template + compose service", + "id": "plans_2026_07_16_prometheus_harness_architecture_task_7_docker_cubesandbox_template_compose_service" }, { "label": "code:dockerfile (FROM python:3.11-slim)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", - "source_location": "L713", - "community": 19, + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L993", + "community": 248, "norm_label": "code:dockerfile (from python:3.11-slim)", - "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_16" - }, - { - "label": "code:yaml (services:)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", - "source_location": "L733", - "community": 19, - "norm_label": "code:yaml (services:)", - "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_17" + "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_26" }, { - "label": "code:block18 (SANDBOX_HOST=localhost)", + "label": "code:yaml (sandbox:)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", - "source_location": "L797", - "community": 19, - "norm_label": "code:block18 (sandbox_host=localhost)", - "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_18" + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L1011", + "community": 248, + "norm_label": "code:yaml (sandbox:)", + "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_27" }, { "label": "code:bash (git add Dockerfile.sandbox docker-compose.yml)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", - "source_location": "L804", - "community": 19, + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L1024", + "community": 248, "norm_label": "code:bash (git add dockerfile.sandbox docker-compose.yml)", - "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_19" + "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_28" }, { - "label": "Task 6: Frontend \u2014 SandboxArtifact Component", + "label": "Task 8: System Prompt \u2014 Teach LLM About Sandbox", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", - "source_location": "L811", - "community": 19, - "norm_label": "task 6: frontend \u2014 sandboxartifact component", - "id": "plans_2026_07_16_prometheus_sandbox_agent_task_6_frontend_sandboxartifact_component" + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L1031", + "community": 158, + "norm_label": "task 8: system prompt \u2014 teach llm about sandbox", + "id": "plans_2026_07_16_prometheus_harness_architecture_task_8_system_prompt_teach_llm_about_sandbox" }, { - "label": "code:tsx (// frontend/src/components/SandboxArtifact.tsx)", + "label": "code:python (SYSTEM_PROMPT = \"\"\")", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", - "source_location": "L822", - "community": 19, - "norm_label": "code:tsx (// frontend/src/components/sandboxartifact.tsx)", - "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_20" + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L1044", + "community": 158, + "norm_label": "code:python (system_prompt = \"\"\")", + "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_29" }, { - "label": "code:tsx (// In your chat message component, after rendering text:)", + "label": "code:bash (git add main/app/prometheus/agent.py)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", - "source_location": "L886", - "community": 19, - "norm_label": "code:tsx (// in your chat message component, after rendering text:)", - "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_21" + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L1073", + "community": 158, + "norm_label": "code:bash (git add main/app/prometheus/agent.py)", + "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_30" }, { - "label": "code:bash (git add frontend/src/components/SandboxArtifact.tsx)", + "label": "Task 9: Frontend \u2014 SandboxArtifact Component", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", - "source_location": "L898", - "community": 19, - "norm_label": "code:bash (git add frontend/src/components/sandboxartifact.tsx)", - "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_22" + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L1080", + "community": 249, + "norm_label": "task 9: frontend \u2014 sandboxartifact component", + "id": "plans_2026_07_16_prometheus_harness_architecture_task_9_frontend_sandboxartifact_component" }, { - "label": "Task 7: System Prompt \u2014 Teach LLM About Sandbox", + "label": "code:tsx (import React from \"react\";)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", - "source_location": "L905", - "community": 19, - "norm_label": "task 7: system prompt \u2014 teach llm about sandbox", - "id": "plans_2026_07_16_prometheus_sandbox_agent_task_7_system_prompt_teach_llm_about_sandbox" + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L1091", + "community": 249, + "norm_label": "code:tsx (import react from \"react\";)", + "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_31" }, { - "label": "code:python (SYSTEM_PROMPT = \"\"\")", + "label": "code:tsx (import { SandboxArtifactList } from \"./SandboxArtifact\";)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", - "source_location": "L918", - "community": 19, - "norm_label": "code:python (system_prompt = \"\"\")", - "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_23" + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L1135", + "community": 249, + "norm_label": "code:tsx (import { sandboxartifactlist } from \"./sandboxartifact\";)", + "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_32" }, { - "label": "code:bash (git add main/app/prometheus/agent.py)", + "label": "code:bash (git add frontend/src/components/SandboxArtifact.tsx)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", - "source_location": "L947", - "community": 19, - "norm_label": "code:bash (git add main/app/prometheus/agent.py)", - "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_24" + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L1146", + "community": 249, + "norm_label": "code:bash (git add frontend/src/components/sandboxartifact.tsx)", + "id": "plans_2026_07_16_prometheus_harness_architecture_codeblock_33" }, { "label": "Summary", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", - "source_location": "L954", - "community": 19, + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L1153", + "community": 158, "norm_label": "summary", - "id": "plans_2026_07_16_prometheus_sandbox_agent_summary" - }, - { - "label": "test_get_state_no_state_returns_error()", - "file_type": "code", - "source_file": "tests/test_prometheus_tools.py", - "source_location": "L114", - "community": 100, - "norm_label": "test_get_state_no_state_returns_error()", - "id": "tests_test_prometheus_tools_test_get_state_no_state_returns_error" + "id": "plans_2026_07_16_prometheus_harness_architecture_summary" }, { - "label": "test_set_state_no_state_returns_error()", - "file_type": "code", - "source_file": "tests/test_prometheus_tools.py", - "source_location": "L119", - "community": 487, - "norm_label": "test_set_state_no_state_returns_error()", - "id": "tests_test_prometheus_tools_test_set_state_no_state_returns_error" + "label": "How This Compares to ComputerUse", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-architecture.md", + "source_location": "L1171", + "community": 158, + "norm_label": "how this compares to computeruse", + "id": "plans_2026_07_16_prometheus_harness_architecture_how_this_compares_to_computeruse" }, { - "label": "Assert a tool function has only Gemini-compatible parameter types.", - "file_type": "rationale", - "source_file": "tests/test_prometheus_tools.py", - "source_location": "L21", - "community": 100, - "norm_label": "assert a tool function has only gemini-compatible parameter types.", - "id": "tests_test_prometheus_tools_rationale_21" + "label": "2026-07-16-prometheus-harness-master-v2.md", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L1", + "community": 111, + "norm_label": "2026-07-16-prometheus-harness-master-v2.md", + "id": "docs_superpowers_plans_2026_07_16_prometheus_harness_master_v2_md" }, { - "label": "Every function in TOOL_REGISTRY must have Gemini-safe signatures. Custom cl", - "file_type": "rationale", - "source_file": "tests/test_prometheus_tools.py", - "source_location": "L128", - "community": 577, - "norm_label": "every function in tool_registry must have gemini-safe signatures. custom cl", - "id": "tests_test_prometheus_tools_rationale_128" + "label": "Prometheus Harness \u2014 Master Implementation Plan (v2: CubeSandbox + On-Demand)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L1", + "community": 111, + "norm_label": "prometheus harness \u2014 master implementation plan (v2: cubesandbox + on-demand)", + "id": "plans_2026_07_16_prometheus_harness_master_v2_prometheus_harness_master_implementation_plan_v2_cubesandbox_on_demand" }, { - "label": "Regression: HarnessState must never leak into tool signatures.", - "file_type": "rationale", - "source_file": "tests/test_prometheus_tools.py", - "source_location": "L137", - "community": 577, - "norm_label": "regression: harnessstate must never leak into tool signatures.", - "id": "tests_test_prometheus_tools_rationale_137" + "label": "Global Constraints", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L15", + "community": 111, + "norm_label": "global constraints", + "id": "plans_2026_07_16_prometheus_harness_master_v2_global_constraints" }, { - "label": "cache.py", - "file_type": "code", - "source_file": "main/app/prometheus/cache.py", - "source_location": "L1", - "community": 110, - "norm_label": "cache.py", - "id": "main_app_prometheus_cache_py" + "label": "Architecture", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L31", + "community": 201, + "norm_label": "architecture", + "id": "plans_2026_07_16_prometheus_harness_master_v2_architecture" }, { - "label": "ResultCache", - "file_type": "code", - "source_file": "main/app/prometheus/cache.py", - "source_location": "L7", - "community": 110, - "norm_label": "resultcache", - "id": "prometheus_cache_resultcache" + "label": "code:block1 (User: \"Analyze PETR4 vs VALE3 correlation over 5 years\")", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L33", + "community": 201, + "norm_label": "code:block1 (user: \"analyze petr4 vs vale3 correlation over 5 years\")", + "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_1" }, { - "label": ".__init__()", - "file_type": "code", - "source_file": "main/app/prometheus/cache.py", - "source_location": "L8", - "community": 110, - "norm_label": ".__init__()", - "id": "prometheus_cache_resultcache_init" + "label": "On-Demand Sandbox Lifecycle", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L78", + "community": 201, + "norm_label": "on-demand sandbox lifecycle", + "id": "plans_2026_07_16_prometheus_harness_master_v2_on_demand_sandbox_lifecycle" }, { - "label": ".cachePath()", - "file_type": "code", - "source_file": "main/app/prometheus/cache.py", - "source_location": "L11", - "community": 110, - "norm_label": ".cachepath()", - "id": "prometheus_cache_resultcache_cachepath" + "label": "code:block2 (Request Start:)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L80", + "community": 201, + "norm_label": "code:block2 (request start:)", + "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_2" }, { - "label": ".get()", - "file_type": "code", - "source_file": "main/app/prometheus/cache.py", - "source_location": "L15", - "community": 110, - "norm_label": ".get()", - "id": "prometheus_cache_resultcache_get" + "label": "CubeCoW Checkpoint Persistence", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L100", + "community": 201, + "norm_label": "cubecow checkpoint persistence", + "id": "plans_2026_07_16_prometheus_harness_master_v2_cubecow_checkpoint_persistence" }, { - "label": ".set()", - "file_type": "code", - "source_file": "main/app/prometheus/cache.py", - "source_location": "L21", - "community": 110, - "norm_label": ".set()", - "id": "prometheus_cache_resultcache_set" + "label": "code:block3 (Session 1 (premium user):)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L102", + "community": 201, + "norm_label": "code:block3 (session 1 (premium user):)", + "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_3" }, { - "label": ".invalidate()", - "file_type": "code", - "source_file": "main/app/prometheus/cache.py", - "source_location": "L31", - "community": 110, - "norm_label": ".invalidate()", - "id": "prometheus_cache_resultcache_invalidate" + "label": "File Map", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L116", + "community": 111, + "norm_label": "file map", + "id": "plans_2026_07_16_prometheus_harness_master_v2_file_map" }, { - "label": ".exists()", - "file_type": "code", - "source_file": "main/app/prometheus/cache.py", - "source_location": "L38", - "community": 110, - "norm_label": ".exists()", - "id": "prometheus_cache_resultcache_exists" + "label": "Phase 1: HarnessState (In-Memory Agent Scratchpad)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L141", + "community": 111, + "norm_label": "phase 1: harnessstate (in-memory agent scratchpad)", + "id": "plans_2026_07_16_prometheus_harness_master_v2_phase_1_harnessstate_in_memory_agent_scratchpad" }, { - "label": "baseUrl()", - "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L12", - "community": 69, - "norm_label": "baseurl()", - "id": "prometheus_sandbox_baseurl" + "label": "Task 1: HarnessState Class", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L143", + "community": 111, + "norm_label": "task 1: harnessstate class", + "id": "plans_2026_07_16_prometheus_harness_master_v2_task_1_harnessstate_class" }, { - "label": "checkpoint()", - "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L43", - "community": 69, - "norm_label": "checkpoint()", - "id": "prometheus_sandbox_checkpoint" + "label": "code:python (import pytest)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L157", + "community": 111, + "norm_label": "code:python (import pytest)", + "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_4" }, { - "label": "restore()", - "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L55", - "community": 69, - "norm_label": "restore()", - "id": "prometheus_sandbox_restore" + "label": "code:python (import logging)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L230", + "community": 111, + "norm_label": "code:python (import logging)", + "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_5" }, { - "label": "upload_file()", - "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L63", - "community": 69, - "norm_label": "upload_file()", - "id": "prometheus_sandbox_upload_file" + "label": "code:bash (git add main/app/prometheus/state.py tests/test_harness_stat)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L282", + "community": 111, + "norm_label": "code:bash (git add main/app/prometheus/state.py tests/test_harness_stat)", + "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_6" }, { - "label": "read_sandbox_file()", - "file_type": "code", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L139", - "community": 495, - "norm_label": "read_sandbox_file()", - "id": "prometheus_tools_read_sandbox_file" + "label": "Phase 2: On-Demand Sandbox Execution", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L289", + "community": 134, + "norm_label": "phase 2: on-demand sandbox execution", + "id": "plans_2026_07_16_prometheus_harness_master_v2_phase_2_on_demand_sandbox_execution" }, { - "label": "upload_to_sandbox()", - "file_type": "code", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L151", - "community": 495, - "norm_label": "upload_to_sandbox()", - "id": "prometheus_tools_upload_to_sandbox" + "label": "Task 2: Config \u2014 Add Sandbox Settings", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L291", + "community": 134, + "norm_label": "task 2: config \u2014 add sandbox settings", + "id": "plans_2026_07_16_prometheus_harness_master_v2_task_2_config_add_sandbox_settings" }, { - "label": "check_cache()", - "file_type": "code", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L165", - "community": 495, - "norm_label": "check_cache()", - "id": "prometheus_tools_check_cache" + "label": "code:python (class PrometheusSettings(BaseMansaSettings):)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L304", + "community": 134, + "norm_label": "code:python (class prometheussettings(basemansasettings):)", + "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_7" }, { - "label": "Search user's saved memories, preferences, and past analysis context. Use", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L17", - "community": 152, - "norm_label": "search user's saved memories, preferences, and past analysis context. use", - "id": "prometheus_tools_rationale_17" + "label": "code:yaml (environment:)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L327", + "community": 134, + "norm_label": "code:yaml (environment:)", + "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_8" }, { - "label": "Execute Python code in an isolated sandbox. Use for quantitative analysis,", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L109", - "community": 487, - "norm_label": "execute python code in an isolated sandbox. use for quantitative analysis,", - "id": "prometheus_tools_rationale_109" + "label": "code:yaml (sandbox:)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L338", + "community": 134, + "norm_label": "code:yaml (sandbox:)", + "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_9" }, { - "label": "Read a file from the sandbox filesystem. Args: path: Absolute pa", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L140", - "community": 495, - "norm_label": "read a file from the sandbox filesystem. args: path: absolute pa", - "id": "prometheus_tools_rationale_140" + "label": "code:yaml (volumes:)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L352", + "community": 134, + "norm_label": "code:yaml (volumes:)", + "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_10" }, { - "label": "Upload a file to the sandbox filesystem. Use this to push data files (CSV,", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L152", - "community": 495, - "norm_label": "upload a file to the sandbox filesystem. use this to push data files (csv,", - "id": "prometheus_tools_rationale_152" + "label": "code:bash (git add config.py docker-compose.yml)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L359", + "community": 134, + "norm_label": "code:bash (git add config.py docker-compose.yml)", + "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_11" }, { - "label": "Check if a computed result exists in the cache. Use before executing expens", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L166", - "community": 495, - "norm_label": "check if a computed result exists in the cache. use before executing expens", - "id": "prometheus_tools_rationale_166" + "label": "Task 3: SandboxManager \u2014 On-Demand HTTP Client for CubeSandbox", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L366", + "community": 134, + "norm_label": "task 3: sandboxmanager \u2014 on-demand http client for cubesandbox", + "id": "plans_2026_07_16_prometheus_harness_master_v2_task_3_sandboxmanager_on_demand_http_client_for_cubesandbox" }, { - "label": ".test_build_system_prompt_no_state()", - "file_type": "code", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L9", - "community": 529, - "norm_label": ".test_build_system_prompt_no_state()", - "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_build_system_prompt_no_state" + "label": "code:python (import pytest)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L382", + "community": 134, + "norm_label": "code:python (import pytest)", + "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_12" }, { - "label": ".test_build_system_prompt_empty_state()", - "file_type": "code", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L20", - "community": 529, - "norm_label": ".test_build_system_prompt_empty_state()", - "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_build_system_prompt_empty_state" + "label": "code:python (import logging)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L479", + "community": 134, + "norm_label": "code:python (import logging)", + "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_13" }, { - "label": ".test_system_prompt_includes_state_instructions()", - "file_type": "code", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L25", - "community": 529, - "norm_label": ".test_system_prompt_includes_state_instructions()", - "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_system_prompt_includes_state_instructions" + "label": "code:bash (git add main/app/prometheus/sandbox.py tests/test_sandbox.py)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L589", + "community": 134, + "norm_label": "code:bash (git add main/app/prometheus/sandbox.py tests/test_sandbox.py)", + "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_14" }, { - "label": ".test_system_prompt_includes_sandbox_instructions()", - "file_type": "code", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L30", - "community": 529, - "norm_label": ".test_system_prompt_includes_sandbox_instructions()", - "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_system_prompt_includes_sandbox_instructions" + "label": "Phase 3: Result Cache", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L596", + "community": 229, + "norm_label": "phase 3: result cache", + "id": "plans_2026_07_16_prometheus_harness_master_v2_phase_3_result_cache" }, { - "label": ".test_system_prompt_includes_cache_instructions()", - "file_type": "code", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L34", - "community": 529, - "norm_label": ".test_system_prompt_includes_cache_instructions()", - "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_system_prompt_includes_cache_instructions" + "label": "Task 4: ResultCache \u2014 SHA256-Keyed Computed Results", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L598", + "community": 229, + "norm_label": "task 4: resultcache \u2014 sha256-keyed computed results", + "id": "plans_2026_07_16_prometheus_harness_master_v2_task_4_resultcache_sha256_keyed_computed_results" }, { - "label": ".test_makeChat_uses_tool_registry()", - "file_type": "code", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L38", - "community": 529, - "norm_label": ".test_makechat_uses_tool_registry()", - "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_makechat_uses_tool_registry" + "label": "code:python (import pytest)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L612", + "community": 229, + "norm_label": "code:python (import pytest)", + "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_15" }, { - "label": "test_streamMessage_creates_loop_logger_and_cache()", - "file_type": "code", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L48", - "community": 24, - "norm_label": "test_streammessage_creates_loop_logger_and_cache()", - "id": "tests_test_agent_sandbox_integration_test_streammessage_creates_loop_logger_and_cache" + "label": "code:python (import hashlib)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L663", + "community": 229, + "norm_label": "code:python (import hashlib)", + "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_16" }, { - "label": "test_streamMessage_sandbox_creation_failure_falls_back()", - "file_type": "code", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L150", - "community": 24, - "norm_label": "test_streammessage_sandbox_creation_failure_falls_back()", - "id": "tests_test_agent_sandbox_integration_test_streammessage_sandbox_creation_failure_falls_back" + "label": "code:bash (git add main/app/prometheus/cache.py tests/test_cache.py)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L722", + "community": 229, + "norm_label": "code:bash (git add main/app/prometheus/cache.py tests/test_cache.py)", + "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_17" }, { - "label": "When sandbox creation fails, agent falls back to chat-only mode.", - "file_type": "rationale", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L151", - "community": 354, - "norm_label": "when sandbox creation fails, agent falls back to chat-only mode.", - "id": "tests_test_agent_sandbox_integration_rationale_151" + "label": "Phase 4: ToolContext (Bundled Dispatch Dependencies)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L729", + "community": 185, + "norm_label": "phase 4: toolcontext (bundled dispatch dependencies)", + "id": "plans_2026_07_16_prometheus_harness_master_v2_phase_4_toolcontext_bundled_dispatch_dependencies" }, { - "label": "test_cache.py", - "file_type": "code", - "source_file": "tests/test_cache.py", - "source_location": "L1", - "community": 135, - "norm_label": "test_cache.py", - "id": "tests_test_cache_py" + "label": "Task 5: ToolContext \u2014 Dataclass for Agent Use", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L731", + "community": 185, + "norm_label": "task 5: toolcontext \u2014 dataclass for agent use", + "id": "plans_2026_07_16_prometheus_harness_master_v2_task_5_toolcontext_dataclass_for_agent_use" }, { - "label": "cache()", - "file_type": "code", - "source_file": "tests/test_cache.py", - "source_location": "L11", - "community": 135, - "norm_label": "cache()", - "id": "tests_test_cache_cache" + "label": "code:python (import pytest)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L747", + "community": 185, + "norm_label": "code:python (import pytest)", + "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_18" }, { - "label": "TestResultCache", - "file_type": "code", - "source_file": "tests/test_cache.py", - "source_location": "L15", - "community": 135, - "norm_label": "testresultcache", - "id": "tests_test_cache_testresultcache" + "label": "code:python (from __future__ import annotations)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L820", + "community": 185, + "norm_label": "code:python (from __future__ import annotations)", + "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_19" }, { - "label": ".test_set_and_get()", - "file_type": "code", - "source_file": "tests/test_cache.py", - "source_location": "L16", - "community": 135, - "norm_label": ".test_set_and_get()", - "id": "tests_test_cache_testresultcache_test_set_and_get" + "label": "code:bash (git add main/app/prometheus/context.py tests/test_context.py)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L857", + "community": 185, + "norm_label": "code:bash (git add main/app/prometheus/context.py tests/test_context.py)", + "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_20" }, { - "label": ".test_get_miss()", - "file_type": "code", - "source_file": "tests/test_cache.py", - "source_location": "L24", - "community": 135, - "norm_label": ".test_get_miss()", - "id": "tests_test_cache_testresultcache_test_get_miss" + "label": "Phase 5: Observable Loop (Batched)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L864", + "community": 202, + "norm_label": "phase 5: observable loop (batched)", + "id": "plans_2026_07_16_prometheus_harness_master_v2_phase_5_observable_loop_batched" }, { - "label": ".test_exists()", - "file_type": "code", - "source_file": "tests/test_cache.py", - "source_location": "L27", - "community": 135, - "norm_label": ".test_exists()", - "id": "tests_test_cache_testresultcache_test_exists" + "label": "Task 6: LoopEvent Model + LoopLogger", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L866", + "community": 202, + "norm_label": "task 6: loopevent model + looplogger", + "id": "plans_2026_07_16_prometheus_harness_master_v2_task_6_loopevent_model_looplogger" }, { - "label": ".test_different_codes_different_hashes()", - "file_type": "code", - "source_file": "tests/test_cache.py", - "source_location": "L32", - "community": 135, - "norm_label": ".test_different_codes_different_hashes()", - "id": "tests_test_cache_testresultcache_test_different_codes_different_hashes" + "label": "code:python (import pytest)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L881", + "community": 202, + "norm_label": "code:python (import pytest)", + "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_21" }, { - "label": ".test_invalidate()", - "file_type": "code", - "source_file": "tests/test_cache.py", - "source_location": "L38", - "community": 135, - "norm_label": ".test_invalidate()", - "id": "tests_test_cache_testresultcache_test_invalidate" + "label": "code:python (from datetime import datetime, timezone)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L944", + "community": 202, + "norm_label": "code:python (from datetime import datetime, timezone)", + "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_22" }, { - "label": ".test_invalidate_does_not_affect_other_sessions()", - "file_type": "code", - "source_file": "tests/test_cache.py", - "source_location": "L45", - "community": 135, - "norm_label": ".test_invalidate_does_not_affect_other_sessions()", - "id": "tests_test_cache_testresultcache_test_invalidate_does_not_affect_other_sessions" + "label": "code:python (import logging)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L974", + "community": 202, + "norm_label": "code:python (import logging)", + "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_23" }, { - "label": ".test_invalidate_does_not_affect_other_users()", - "file_type": "code", - "source_file": "tests/test_cache.py", - "source_location": "L52", - "community": 135, - "norm_label": ".test_invalidate_does_not_affect_other_users()", - "id": "tests_test_cache_testresultcache_test_invalidate_does_not_affect_other_users" + "label": "code:bash (git add main/models/harness.py main/app/prometheus/events.py)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L1031", + "community": 202, + "norm_label": "code:bash (git add main/models/harness.py main/app/prometheus/events.py)", + "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_24" }, { - "label": ".test_set_creates_directories()", - "file_type": "code", - "source_file": "tests/test_cache.py", - "source_location": "L59", - "community": 135, - "norm_label": ".test_set_creates_directories()", - "id": "tests_test_cache_testresultcache_test_set_creates_directories" + "label": "Phase 6: Agent Integration (All Layers)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L1038", + "community": 121, + "norm_label": "phase 6: agent integration (all layers)", + "id": "plans_2026_07_16_prometheus_harness_master_v2_phase_6_agent_integration_all_layers" }, { - "label": ".test_overwrite_same_code()", - "file_type": "code", - "source_file": "tests/test_cache.py", - "source_location": "L66", - "community": 135, - "norm_label": ".test_overwrite_same_code()", - "id": "tests_test_cache_testresultcache_test_overwrite_same_code" + "label": "Task 7: Tool Definitions \u2014 Sandbox + Cache Tools in TOOL_REGISTRY", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L1040", + "community": 121, + "norm_label": "task 7: tool definitions \u2014 sandbox + cache tools in tool_registry", + "id": "plans_2026_07_16_prometheus_harness_master_v2_task_7_tool_definitions_sandbox_cache_tools_in_tool_registry" }, { - "label": ".test_invalidate_empty_session()", - "file_type": "code", - "source_file": "tests/test_cache.py", - "source_location": "L72", - "community": 135, - "norm_label": ".test_invalidate_empty_session()", - "id": "tests_test_cache_testresultcache_test_invalidate_empty_session" + "label": "code:python (import inspect)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L1056", + "community": 121, + "norm_label": "code:python (import inspect)", + "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_25" }, { - "label": ".test_json_roundtrip()", - "file_type": "code", - "source_file": "tests/test_cache.py", - "source_location": "L76", - "community": 135, - "norm_label": ".test_json_roundtrip()", - "id": "tests_test_cache_testresultcache_test_json_roundtrip" + "label": "code:python (from main.app.prometheus.sandbox import SandboxManager)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L1153", + "community": 121, + "norm_label": "code:python (from main.app.prometheus.sandbox import sandboxmanager)", + "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_26" }, { - "label": "Tests for ResultCache.", - "file_type": "rationale", - "source_file": "tests/test_cache.py", - "source_location": "L1", - "community": 135, - "norm_label": "tests for resultcache.", - "id": "tests_test_cache_rationale_1" + "label": "code:python (TOOL_REGISTRY: dict[str, Any] = {)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L1221", + "community": 121, + "norm_label": "code:python (tool_registry: dict[str, any] = {)", + "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_27" }, { - "label": "test_config_sandbox.py", - "file_type": "code", - "source_file": "tests/test_config_sandbox.py", - "source_location": "L1", - "community": 102, - "norm_label": "test_config_sandbox.py", - "id": "tests_test_config_sandbox_py" + "label": "code:python (async def dispatchToolCall()", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L1235", + "community": 174, + "norm_label": "code:python (async def dispatchtoolcall()", + "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_28" }, { - "label": "TestSandboxConfig", - "file_type": "code", - "source_file": "tests/test_config_sandbox.py", - "source_location": "L5", - "community": 102, - "norm_label": "testsandboxconfig", - "id": "tests_test_config_sandbox_testsandboxconfig" + "label": "code:bash (git add main/app/prometheus/tools.py tests/test_sandbox_tool)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L1281", + "community": 174, + "norm_label": "code:bash (git add main/app/prometheus/tools.py tests/test_sandbox_tool)", + "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_29" }, { - "label": ".test_sandbox_defaults()", - "file_type": "code", - "source_file": "tests/test_config_sandbox.py", - "source_location": "L6", - "community": 102, - "norm_label": ".test_sandbox_defaults()", - "id": "tests_test_config_sandbox_testsandboxconfig_test_sandbox_defaults" + "label": "Task 8: Agent Integration \u2014 On-Demand Sandbox + Premium Gating", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L1288", + "community": 174, + "norm_label": "task 8: agent integration \u2014 on-demand sandbox + premium gating", + "id": "plans_2026_07_16_prometheus_harness_master_v2_task_8_agent_integration_on_demand_sandbox_premium_gating" }, { - "label": ".test_sandbox_fields_exist()", - "file_type": "code", - "source_file": "tests/test_config_sandbox.py", - "source_location": "L13", - "community": 102, - "norm_label": ".test_sandbox_fields_exist()", - "id": "tests_test_config_sandbox_testsandboxconfig_test_sandbox_fields_exist" + "label": "code:python (import pytest)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L1304", + "community": 174, + "norm_label": "code:python (import pytest)", + "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_30" }, { - "label": ".test_sandbox_types()", - "file_type": "code", - "source_file": "tests/test_config_sandbox.py", - "source_location": "L21", - "community": 102, - "norm_label": ".test_sandbox_types()", - "id": "tests_test_config_sandbox_testsandboxconfig_test_sandbox_types" + "label": "code:python (from main.app.prometheus.tools import TOOL_REGISTRY, dispatc)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L1351", + "community": 174, + "norm_label": "code:python (from main.app.prometheus.tools import tool_registry, dispatc)", + "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_31" }, { - "label": "_FakeClient", - "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L9", - "community": 96, - "norm_label": "_fakeclient", - "id": "tests_test_sandbox_fakeclient" + "label": "code:python (def makeChat(self, sessions, history, *, system_prompt=None,)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L1363", + "community": 174, + "norm_label": "code:python (def makechat(self, sessions, history, *, system_prompt=none,)", + "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_32" }, { - "label": ".__init__()", - "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L12", - "community": 96, - "norm_label": ".__init__()", - "id": "tests_test_sandbox_fakeclient_init" + "label": "code:python (async def streamMessage()", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L1383", + "community": 174, + "norm_label": "code:python (async def streammessage()", + "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_33" }, { - "label": ".set_response()", - "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L16", - "community": 96, - "norm_label": ".set_response()", - "id": "tests_test_sandbox_fakeclient_set_response" + "label": "code:bash (git add main/app/prometheus/agent.py tests/test_agent_sandbo)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L1517", + "community": 174, + "norm_label": "code:bash (git add main/app/prometheus/agent.py tests/test_agent_sandbo)", + "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_34" }, { - "label": ".post()", - "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L19", - "community": 96, - "norm_label": ".post()", - "id": "tests_test_sandbox_fakeclient_post" + "label": "Task 9: System Prompt \u2014 Teach LLM About On-Demand Sandbox", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L1524", + "community": 121, + "norm_label": "task 9: system prompt \u2014 teach llm about on-demand sandbox", + "id": "plans_2026_07_16_prometheus_harness_master_v2_task_9_system_prompt_teach_llm_about_on_demand_sandbox" }, { - "label": ".get()", - "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L23", - "community": 96, - "norm_label": ".get()", - "id": "tests_test_sandbox_fakeclient_get" + "label": "code:python (## Code Sandbox (On-Demand))", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L1539", + "community": 121, + "norm_label": "code:python (## code sandbox (on-demand))", + "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_35" }, { - "label": ".put()", - "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L27", - "community": 96, - "norm_label": ".put()", - "id": "tests_test_sandbox_fakeclient_put" + "label": "code:bash (git add main/app/prometheus/agent.py)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L1568", + "community": 121, + "norm_label": "code:bash (git add main/app/prometheus/agent.py)", + "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_36" }, { - "label": ".delete()", - "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L31", - "community": 96, - "norm_label": ".delete()", - "id": "tests_test_sandbox_fakeclient_delete" + "label": "Task 10: Docker \u2014 CubeSandbox Template", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L1575", + "community": 121, + "norm_label": "task 10: docker \u2014 cubesandbox template", + "id": "plans_2026_07_16_prometheus_harness_master_v2_task_10_docker_cubesandbox_template" }, { - "label": ".__aenter__()", - "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L35", - "community": 96, - "norm_label": ".__aenter__()", - "id": "tests_test_sandbox_fakeclient_aenter" + "label": "code:dockerfile (FROM python:3.11-slim)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L1586", + "community": 121, + "norm_label": "code:dockerfile (from python:3.11-slim)", + "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_37" }, { - "label": ".__aexit__()", - "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L38", - "community": 96, - "norm_label": ".__aexit__()", - "id": "tests_test_sandbox_fakeclient_aexit" + "label": "code:bash (git add Dockerfile.sandbox)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L1604", + "community": 121, + "norm_label": "code:bash (git add dockerfile.sandbox)", + "id": "plans_2026_07_16_prometheus_harness_master_v2_codeblock_38" }, { - "label": "_ok_response()", - "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L42", - "community": 96, - "norm_label": "_ok_response()", - "id": "tests_test_sandbox_ok_response" + "label": "Summary", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L1611", + "community": 111, + "norm_label": "summary", + "id": "plans_2026_07_16_prometheus_harness_master_v2_summary" }, { - "label": "TestSandboxCreate", - "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L50", - "community": 2, - "norm_label": "testsandboxcreate", - "id": "tests_test_sandbox_testsandboxcreate" + "label": "What This Enables", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L1630", + "community": 111, + "norm_label": "what this enables", + "id": "plans_2026_07_16_prometheus_harness_master_v2_what_this_enables" }, { - "label": "test_create_fallback_id_on_empty_response()", - "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L60", - "community": 96, - "norm_label": "test_create_fallback_id_on_empty_response()", - "id": "tests_test_sandbox_test_create_fallback_id_on_empty_response" + "label": "What This Does NOT Do (By Design)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L1642", + "community": 111, + "norm_label": "what this does not do (by design)", + "id": "plans_2026_07_16_prometheus_harness_master_v2_what_this_does_not_do_by_design" }, { - "label": "TestSandboxExecute", - "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L68", - "community": 2, - "norm_label": "testsandboxexecute", - "id": "tests_test_sandbox_testsandboxexecute" + "label": "Resource Efficiency", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L1651", + "community": 111, + "norm_label": "resource efficiency", + "id": "plans_2026_07_16_prometheus_harness_master_v2_resource_efficiency" }, { - "label": "test_execute_returns_stdout_stderr()", - "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L70", - "community": 96, - "norm_label": "test_execute_returns_stdout_stderr()", - "id": "tests_test_sandbox_test_execute_returns_stdout_stderr" + "label": "Relationship to Existing Systems", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L1660", + "community": 111, + "norm_label": "relationship to existing systems", + "id": "plans_2026_07_16_prometheus_harness_master_v2_relationship_to_existing_systems" }, { - "label": "test_execute_sends_code_in_body()", - "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L79", - "community": 96, - "norm_label": "test_execute_sends_code_in_body()", - "id": "tests_test_sandbox_test_execute_sends_code_in_body" + "label": "2026-07-16-prometheus-harness-master.md", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L1", + "community": 144, + "norm_label": "2026-07-16-prometheus-harness-master.md", + "id": "docs_superpowers_plans_2026_07_16_prometheus_harness_master_md" }, { - "label": "TestSandboxCheckpoint", - "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L87", - "community": 2, - "norm_label": "testsandboxcheckpoint", - "id": "tests_test_sandbox_testsandboxcheckpoint" + "label": "Prometheus Harness \u2014 Master Implementation Plan", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L1", + "community": 144, + "norm_label": "prometheus harness \u2014 master implementation plan", + "id": "plans_2026_07_16_prometheus_harness_master_prometheus_harness_master_implementation_plan" }, { - "label": "test_checkpoint_returns_checkpoint_id()", - "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L89", - "community": 96, - "norm_label": "test_checkpoint_returns_checkpoint_id()", - "id": "tests_test_sandbox_test_checkpoint_returns_checkpoint_id" + "label": "Global Constraints", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L15", + "community": 144, + "norm_label": "global constraints", + "id": "plans_2026_07_16_prometheus_harness_master_global_constraints" }, { - "label": "TestSandboxRestore", - "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L97", - "community": 2, - "norm_label": "testsandboxrestore", - "id": "tests_test_sandbox_testsandboxrestore" + "label": "File Map", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L28", + "community": 144, + "norm_label": "file map", + "id": "plans_2026_07_16_prometheus_harness_master_file_map" }, { - "label": "test_restore_returns_new_sandbox_id()", - "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L99", - "community": 96, - "norm_label": "test_restore_returns_new_sandbox_id()", - "id": "tests_test_sandbox_test_restore_returns_new_sandbox_id" + "label": "Architecture", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L51", + "community": 144, + "norm_label": "architecture", + "id": "plans_2026_07_16_prometheus_harness_master_architecture" }, { - "label": "TestSandboxUploadFile", - "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L107", - "community": 2, - "norm_label": "testsandboxuploadfile", - "id": "tests_test_sandbox_testsandboxuploadfile" + "label": "code:block1 (User: \"Analyze PETR4 vs VALE3 correlation over 5 years\")", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L53", + "community": 144, + "norm_label": "code:block1 (user: \"analyze petr4 vs vale3 correlation over 5 years\")", + "id": "plans_2026_07_16_prometheus_harness_master_codeblock_1" }, { - "label": "test_upload_file_returns_true_on_success()", - "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L109", - "community": 96, - "norm_label": "test_upload_file_returns_true_on_success()", - "id": "tests_test_sandbox_test_upload_file_returns_true_on_success" + "label": "Phase 1: HarnessState (In-Memory Agent Scratchpad)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L93", + "community": 227, + "norm_label": "phase 1: harnessstate (in-memory agent scratchpad)", + "id": "plans_2026_07_16_prometheus_harness_master_phase_1_harnessstate_in_memory_agent_scratchpad" }, { - "label": "test_upload_file_returns_false_on_error()", - "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L117", - "community": 96, - "norm_label": "test_upload_file_returns_false_on_error()", - "id": "tests_test_sandbox_test_upload_file_returns_false_on_error" + "label": "Task 1: HarnessState Class", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L95", + "community": 227, + "norm_label": "task 1: harnessstate class", + "id": "plans_2026_07_16_prometheus_harness_master_task_1_harnessstate_class" }, { - "label": "TestSandboxReadFile", - "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L125", - "community": 2, - "norm_label": "testsandboxreadfile", - "id": "tests_test_sandbox_testsandboxreadfile" + "label": "code:python (import pytest)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L109", + "community": 227, + "norm_label": "code:python (import pytest)", + "id": "plans_2026_07_16_prometheus_harness_master_codeblock_2" }, { - "label": "test_read_file_returns_content()", - "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L127", - "community": 96, - "norm_label": "test_read_file_returns_content()", - "id": "tests_test_sandbox_test_read_file_returns_content" + "label": "code:python (import logging)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L182", + "community": 227, + "norm_label": "code:python (import logging)", + "id": "plans_2026_07_16_prometheus_harness_master_codeblock_3" }, { - "label": "TestSandboxDestroy", - "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L135", - "community": 2, - "norm_label": "testsandboxdestroy", - "id": "tests_test_sandbox_testsandboxdestroy" + "label": "code:bash (git add main/app/prometheus/state.py tests/test_state.py)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L234", + "community": 227, + "norm_label": "code:bash (git add main/app/prometheus/state.py tests/test_state.py)", + "id": "plans_2026_07_16_prometheus_harness_master_codeblock_4" }, { - "label": "test_destroy_calls_delete()", - "file_type": "code", - "source_file": "tests/test_sandbox.py", - "source_location": "L137", - "community": 96, - "norm_label": "test_destroy_calls_delete()", - "id": "tests_test_sandbox_test_destroy_calls_delete" + "label": "Phase 2: Sandbox Execution", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L241", + "community": 145, + "norm_label": "phase 2: sandbox execution", + "id": "plans_2026_07_16_prometheus_harness_master_phase_2_sandbox_execution" }, { - "label": "Unit tests for SandboxManager \u2014 HTTP calls mocked via a fake client class.", - "file_type": "rationale", - "source_file": "tests/test_sandbox.py", - "source_location": "L1", - "community": 2, - "norm_label": "unit tests for sandboxmanager \u2014 http calls mocked via a fake client class.", - "id": "tests_test_sandbox_rationale_1" + "label": "Task 2: Config \u2014 Add Sandbox Settings", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L243", + "community": 145, + "norm_label": "task 2: config \u2014 add sandbox settings", + "id": "plans_2026_07_16_prometheus_harness_master_task_2_config_add_sandbox_settings" }, { - "label": "Fake httpx.AsyncClient that records calls and returns pre-set responses.", - "file_type": "rationale", - "source_file": "tests/test_sandbox.py", - "source_location": "L10", - "community": 96, - "norm_label": "fake httpx.asyncclient that records calls and returns pre-set responses.", - "id": "tests_test_sandbox_rationale_10" + "label": "code:python (class PrometheusSettings(BaseMansaSettings):)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L256", + "community": 145, + "norm_label": "code:python (class prometheussettings(basemansasettings):)", + "id": "plans_2026_07_16_prometheus_harness_master_codeblock_5" }, { - "label": ".test_read_sandbox_file_in_registry()", - "file_type": "code", - "source_file": "tests/test_sandbox_tools.py", - "source_location": "L12", - "community": 222, - "norm_label": ".test_read_sandbox_file_in_registry()", - "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_read_sandbox_file_in_registry" + "label": "code:yaml (environment:)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L279", + "community": 145, + "norm_label": "code:yaml (environment:)", + "id": "plans_2026_07_16_prometheus_harness_master_codeblock_6" }, { - "label": ".test_check_cache_in_registry()", - "file_type": "code", - "source_file": "tests/test_sandbox_tools.py", - "source_location": "L15", - "community": 222, - "norm_label": ".test_check_cache_in_registry()", - "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_check_cache_in_registry" + "label": "code:yaml (sandbox:)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L290", + "community": 145, + "norm_label": "code:yaml (sandbox:)", + "id": "plans_2026_07_16_prometheus_harness_master_codeblock_7" }, { - "label": ".test_read_sandbox_file_has_docstring()", - "file_type": "code", - "source_file": "tests/test_sandbox_tools.py", - "source_location": "L23", - "community": 222, - "norm_label": ".test_read_sandbox_file_has_docstring()", - "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_read_sandbox_file_has_docstring" + "label": "code:bash (git add config.py docker-compose.yml)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L302", + "community": 145, + "norm_label": "code:bash (git add config.py docker-compose.yml)", + "id": "plans_2026_07_16_prometheus_harness_master_codeblock_8" }, { - "label": ".test_check_cache_has_docstring()", - "file_type": "code", - "source_file": "tests/test_sandbox_tools.py", - "source_location": "L28", - "community": 222, - "norm_label": ".test_check_cache_has_docstring()", - "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_check_cache_has_docstring" + "label": "Task 3: SandboxManager \u2014 HTTP Client for CubeSandbox", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L309", + "community": 145, + "norm_label": "task 3: sandboxmanager \u2014 http client for cubesandbox", + "id": "plans_2026_07_16_prometheus_harness_master_task_3_sandboxmanager_http_client_for_cubesandbox" }, { - "label": "TestCheckCache", - "file_type": "code", - "source_file": "tests/test_sandbox_tools.py", - "source_location": "L34", - "community": 49, - "norm_label": "testcheckcache", - "id": "tests_test_sandbox_tools_testcheckcache" + "label": "code:python (import pytest)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L323", + "community": 145, + "norm_label": "code:python (import pytest)", + "id": "plans_2026_07_16_prometheus_harness_master_codeblock_9" }, { - "label": "test_check_cache_hit()", - "file_type": "code", - "source_file": "tests/test_sandbox_tools.py", - "source_location": "L36", - "community": 49, - "norm_label": "test_check_cache_hit()", - "id": "tests_test_sandbox_tools_test_check_cache_hit" + "label": "code:python (import logging)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L392", + "community": 145, + "norm_label": "code:python (import logging)", + "id": "plans_2026_07_16_prometheus_harness_master_codeblock_10" }, { - "label": "test_check_cache_miss()", - "file_type": "code", - "source_file": "tests/test_sandbox_tools.py", - "source_location": "L44", - "community": 49, - "norm_label": "test_check_cache_miss()", - "id": "tests_test_sandbox_tools_test_check_cache_miss" + "label": "code:bash (git add main/app/prometheus/sandbox.py tests/test_sandbox.py)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L468", + "community": 145, + "norm_label": "code:bash (git add main/app/prometheus/sandbox.py tests/test_sandbox.py)", + "id": "plans_2026_07_16_prometheus_harness_master_codeblock_11" }, { - "label": "test_check_cache_no_cache()", - "file_type": "code", - "source_file": "tests/test_sandbox_tools.py", - "source_location": "L51", - "community": 49, - "norm_label": "test_check_cache_no_cache()", - "id": "tests_test_sandbox_tools_test_check_cache_no_cache" + "label": "Phase 3: Result Cache", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L475", + "community": 226, + "norm_label": "phase 3: result cache", + "id": "plans_2026_07_16_prometheus_harness_master_phase_3_result_cache" }, { - "label": "test_dispatch_execute_code_routes_to_registry()", - "file_type": "code", - "source_file": "tests/test_sandbox_tools.py", - "source_location": "L59", - "community": 49, - "norm_label": "test_dispatch_execute_code_routes_to_registry()", - "id": "tests_test_sandbox_tools_test_dispatch_execute_code_routes_to_registry" + "label": "Task 4: ResultCache \u2014 SHA256-Keyed Computed Results", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L477", + "community": 226, + "norm_label": "task 4: resultcache \u2014 sha256-keyed computed results", + "id": "plans_2026_07_16_prometheus_harness_master_task_4_resultcache_sha256_keyed_computed_results" }, { - "label": "test_streamMessage_premium_creates_sandbox_on_execute_code()", - "file_type": "code", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L93", - "community": 24, - "norm_label": "test_streammessage_premium_creates_sandbox_on_execute_code()", - "id": "tests_test_agent_sandbox_integration_test_streammessage_premium_creates_sandbox_on_execute_code" + "label": "code:python (import pytest)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L491", + "community": 226, + "norm_label": "code:python (import pytest)", + "id": "plans_2026_07_16_prometheus_harness_master_codeblock_12" }, { - "label": "test_streamMessage_non_premium_blocks_sandbox()", - "file_type": "code", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L150", - "community": 24, - "norm_label": "test_streammessage_non_premium_blocks_sandbox()", - "id": "tests_test_agent_sandbox_integration_test_streammessage_non_premium_blocks_sandbox" + "label": "code:python (import hashlib)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L542", + "community": 226, + "norm_label": "code:python (import hashlib)", + "id": "plans_2026_07_16_prometheus_harness_master_codeblock_13" }, { - "label": "streamMessage should create a HarnessState and pass it to buildSystemPrompt.", - "file_type": "rationale", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L85", - "community": 355, - "norm_label": "streammessage should create a harnessstate and pass it to buildsystemprompt.", - "id": "tests_test_agent_state_integration_rationale_85" + "label": "code:bash (git add main/app/prometheus/cache.py tests/test_cache.py)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L600", + "community": 226, + "norm_label": "code:bash (git add main/app/prometheus/cache.py tests/test_cache.py)", + "id": "plans_2026_07_16_prometheus_harness_master_codeblock_14" }, { - "label": "streamMessage should pass state to dispatchToolCall.", - "file_type": "rationale", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L125", - "community": 356, - "norm_label": "streammessage should pass state to dispatchtoolcall.", - "id": "tests_test_agent_state_integration_rationale_125" + "label": "Phase 4: ToolContext (Replace God Function)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L607", + "community": 228, + "norm_label": "phase 4: toolcontext (replace god function)", + "id": "plans_2026_07_16_prometheus_harness_master_phase_4_toolcontext_replace_god_function" }, { - "label": "System prompt should instruct LLM about harness state usage.", - "file_type": "rationale", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L185", - "community": 93, - "norm_label": "system prompt should instruct llm about harness state usage.", - "id": "tests_test_agent_state_integration_rationale_185" + "label": "Task 5: ToolContext \u2014 Single Dispatch Object", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L609", + "community": 228, + "norm_label": "task 5: toolcontext \u2014 single dispatch object", + "id": "plans_2026_07_16_prometheus_harness_master_task_5_toolcontext_single_dispatch_object" }, { - "label": "System prompt should instruct LLM about memory vs state.", - "file_type": "rationale", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L194", - "community": 93, - "norm_label": "system prompt should instruct llm about memory vs state.", - "id": "tests_test_agent_state_integration_rationale_194" + "label": "code:python (import pytest)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L623", + "community": 228, + "norm_label": "code:python (import pytest)", + "id": "plans_2026_07_16_prometheus_harness_master_codeblock_15" }, { - "label": "context.py", - "file_type": "code", - "source_file": "main/app/prometheus/context.py", - "source_location": "L1", - "community": 32, - "norm_label": "context.py", - "id": "main_app_prometheus_context_py" + "label": "code:python (import logging)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L673", + "community": 228, + "norm_label": "code:python (import logging)", + "id": "plans_2026_07_16_prometheus_harness_master_codeblock_16" }, { - "label": "ToolContext", - "file_type": "code", - "source_file": "main/app/prometheus/context.py", - "source_location": "L13", - "community": 32, - "norm_label": "toolcontext", - "id": "prometheus_context_toolcontext" + "label": "code:bash (git add main/app/prometheus/context.py tests/test_context.py)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L847", + "community": 228, + "norm_label": "code:bash (git add main/app/prometheus/context.py tests/test_context.py)", + "id": "plans_2026_07_16_prometheus_harness_master_codeblock_17" }, { - "label": ".__post_init__()", - "file_type": "code", - "source_file": "main/app/prometheus/context.py", - "source_location": "L22", - "community": 32, - "norm_label": ".__post_init__()", - "id": "prometheus_context_toolcontext_post_init" + "label": "Phase 5: Observable Loop (Batched)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L854", + "community": 200, + "norm_label": "phase 5: observable loop (batched)", + "id": "plans_2026_07_16_prometheus_harness_master_phase_5_observable_loop_batched" }, { - "label": "test_context.py", - "file_type": "code", - "source_file": "tests/test_context.py", - "source_location": "L1", - "community": 32, - "norm_label": "test_context.py", - "id": "tests_test_context_py" + "label": "Task 6: LoopEvent Model + LoopLogger", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L856", + "community": 200, + "norm_label": "task 6: loopevent model + looplogger", + "id": "plans_2026_07_16_prometheus_harness_master_task_6_loopevent_model_looplogger" }, { - "label": "TestToolContextCreation", - "file_type": "code", - "source_file": "tests/test_context.py", - "source_location": "L9", - "community": 32, - "norm_label": "testtoolcontextcreation", - "id": "tests_test_context_testtoolcontextcreation" + "label": "code:python (import pytest)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L871", + "community": 200, + "norm_label": "code:python (import pytest)", + "id": "plans_2026_07_16_prometheus_harness_master_codeblock_18" }, { - "label": ".test_empty_context()", - "file_type": "code", - "source_file": "tests/test_context.py", - "source_location": "L10", - "community": 32, - "norm_label": ".test_empty_context()", - "id": "tests_test_context_testtoolcontextcreation_test_empty_context" + "label": "code:python (from datetime import datetime, timezone)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L934", + "community": 200, + "norm_label": "code:python (from datetime import datetime, timezone)", + "id": "plans_2026_07_16_prometheus_harness_master_codeblock_19" }, { - "label": ".test_full_context()", - "file_type": "code", - "source_file": "tests/test_context.py", - "source_location": "L20", - "community": 32, - "norm_label": ".test_full_context()", - "id": "tests_test_context_testtoolcontextcreation_test_full_context" + "label": "code:python (import logging)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L964", + "community": 200, + "norm_label": "code:python (import logging)", + "id": "plans_2026_07_16_prometheus_harness_master_codeblock_20" }, { - "label": ".test_extracts_user_id_from_user_dict()", - "file_type": "code", - "source_file": "tests/test_context.py", - "source_location": "L44", - "community": 32, - "norm_label": ".test_extracts_user_id_from_user_dict()", - "id": "tests_test_context_testtoolcontextcreation_test_extracts_user_id_from_user_dict" + "label": "code:bash (git add main/models/harness.py main/app/prometheus/events.py)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L1021", + "community": 200, + "norm_label": "code:bash (git add main/models/harness.py main/app/prometheus/events.py)", + "id": "plans_2026_07_16_prometheus_harness_master_codeblock_21" }, { - "label": ".test_user_id_override()", - "file_type": "code", - "source_file": "tests/test_context.py", - "source_location": "L49", - "community": 32, - "norm_label": ".test_user_id_override()", - "id": "tests_test_context_testtoolcontextcreation_test_user_id_override" + "label": "Phase 6: Agent Integration (All Layers)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L1028", + "community": 133, + "norm_label": "phase 6: agent integration (all layers)", + "id": "plans_2026_07_16_prometheus_harness_master_phase_6_agent_integration_all_layers" }, { - "label": ".test_user_id_none_when_no_user()", - "file_type": "code", - "source_file": "tests/test_context.py", - "source_location": "L55", - "community": 32, - "norm_label": ".test_user_id_none_when_no_user()", - "id": "tests_test_context_testtoolcontextcreation_test_user_id_none_when_no_user" + "label": "Task 7: Tool Definitions \u2014 State + Sandbox + Cache Tools", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L1030", + "community": 133, + "norm_label": "task 7: tool definitions \u2014 state + sandbox + cache tools", + "id": "plans_2026_07_16_prometheus_harness_master_task_7_tool_definitions_state_sandbox_cache_tools" }, { - "label": ".test_user_id_none_when_user_has_no_id()", - "file_type": "code", - "source_file": "tests/test_context.py", - "source_location": "L59", - "community": 32, - "norm_label": ".test_user_id_none_when_user_has_no_id()", - "id": "tests_test_context_testtoolcontextcreation_test_user_id_none_when_user_has_no_id" + "label": "code:python (import inspect)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L1043", + "community": 133, + "norm_label": "code:python (import inspect)", + "id": "plans_2026_07_16_prometheus_harness_master_codeblock_22" }, { - "label": "TestToolContextStateAccess", - "file_type": "code", - "source_file": "tests/test_context.py", - "source_location": "L64", - "community": 32, - "norm_label": "testtoolcontextstateaccess", - "id": "tests_test_context_testtoolcontextstateaccess" + "label": "code:python (from main.app.prometheus.state import HarnessState)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L1090", + "community": 133, + "norm_label": "code:python (from main.app.prometheus.state import harnessstate)", + "id": "plans_2026_07_16_prometheus_harness_master_codeblock_23" }, { - "label": ".test_state_get()", - "file_type": "code", - "source_file": "tests/test_context.py", - "source_location": "L65", - "community": 32, - "norm_label": ".test_state_get()", - "id": "tests_test_context_testtoolcontextstateaccess_test_state_get" + "label": "code:bash (git add main/app/prometheus/tools.py tests/test_tools.py)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L1144", + "community": 133, + "norm_label": "code:bash (git add main/app/prometheus/tools.py tests/test_tools.py)", + "id": "plans_2026_07_16_prometheus_harness_master_codeblock_24" }, { - "label": ".test_state_set()", - "file_type": "code", - "source_file": "tests/test_context.py", - "source_location": "L71", - "community": 32, - "norm_label": ".test_state_set()", - "id": "tests_test_context_testtoolcontextstateaccess_test_state_set" + "label": "Task 8: Agent Integration \u2014 Wire Everything Together", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L1151", + "community": 173, + "norm_label": "task 8: agent integration \u2014 wire everything together", + "id": "plans_2026_07_16_prometheus_harness_master_task_8_agent_integration_wire_everything_together" }, { - "label": ".test_state_toDict()", - "file_type": "code", - "source_file": "tests/test_context.py", - "source_location": "L77", - "community": 32, - "norm_label": ".test_state_todict()", - "id": "tests_test_context_testtoolcontextstateaccess_test_state_toDict" + "label": "code:python (import pytest)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L1164", + "community": 173, + "norm_label": "code:python (import pytest)", + "id": "plans_2026_07_16_prometheus_harness_master_codeblock_25" }, { - "label": "TestToolContextMcpClients", - "file_type": "code", - "source_file": "tests/test_context.py", - "source_location": "L85", - "community": 32, - "norm_label": "testtoolcontextmcpclients", - "id": "tests_test_context_testtoolcontextmcpclients" + "label": "code:python (from main.app.prometheus.tools import MEMORY_TOOLS, STATE_TO)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L1203", + "community": 173, + "norm_label": "code:python (from main.app.prometheus.tools import memory_tools, state_to)", + "id": "plans_2026_07_16_prometheus_harness_master_codeblock_26" }, { - "label": ".test_mcp_clients_isolation()", - "file_type": "code", - "source_file": "tests/test_context.py", - "source_location": "L86", - "community": 32, - "norm_label": ".test_mcp_clients_isolation()", - "id": "tests_test_context_testtoolcontextmcpclients_test_mcp_clients_isolation" + "label": "code:python (@classmethod)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L1214", + "community": 173, + "norm_label": "code:python (@classmethod)", + "id": "plans_2026_07_16_prometheus_harness_master_codeblock_27" }, { - "label": ".test_mcp_clients_passed_through()", - "file_type": "code", - "source_file": "tests/test_context.py", - "source_location": "L93", - "community": 32, - "norm_label": ".test_mcp_clients_passed_through()", - "id": "tests_test_context_testtoolcontextmcpclients_test_mcp_clients_passed_through" + "label": "code:python (def makeChat(self, sessions, history, *, system_prompt=None,)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L1242", + "community": 173, + "norm_label": "code:python (def makechat(self, sessions, history, *, system_prompt=none,)", + "id": "plans_2026_07_16_prometheus_harness_master_codeblock_28" }, { - "label": "TestToolContextDataclass", - "file_type": "code", - "source_file": "tests/test_context.py", - "source_location": "L99", - "community": 32, - "norm_label": "testtoolcontextdataclass", - "id": "tests_test_context_testtoolcontextdataclass" + "label": "code:python (async def streamMessage()", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L1262", + "community": 173, + "norm_label": "code:python (async def streammessage()", + "id": "plans_2026_07_16_prometheus_harness_master_codeblock_29" }, { - "label": ".test_is_dataclass()", - "file_type": "code", - "source_file": "tests/test_context.py", - "source_location": "L100", - "community": 32, - "norm_label": ".test_is_dataclass()", - "id": "tests_test_context_testtoolcontextdataclass_test_is_dataclass" + "label": "code:python (async def sendMessage()", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L1361", + "community": 173, + "norm_label": "code:python (async def sendmessage()", + "id": "plans_2026_07_16_prometheus_harness_master_codeblock_30" }, { - "label": ".test_equality()", - "file_type": "code", - "source_file": "tests/test_context.py", - "source_location": "L114", - "community": 32, - "norm_label": ".test_equality()", - "id": "tests_test_context_testtoolcontextdataclass_test_equality" + "label": "code:bash (git add main/app/prometheus/agent.py tests/test_agent_integr)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L1403", + "community": 173, + "norm_label": "code:bash (git add main/app/prometheus/agent.py tests/test_agent_integr)", + "id": "plans_2026_07_16_prometheus_harness_master_codeblock_31" }, { - "label": "Unit tests for ToolContext dataclass.", - "file_type": "rationale", - "source_file": "tests/test_context.py", - "source_location": "L1", - "community": 32, - "norm_label": "unit tests for toolcontext dataclass.", - "id": "tests_test_context_rationale_1" + "label": "Task 9: System Prompt \u2014 Teach LLM About State, Sandbox, and Cache", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L1410", + "community": 133, + "norm_label": "task 9: system prompt \u2014 teach llm about state, sandbox, and cache", + "id": "plans_2026_07_16_prometheus_harness_master_task_9_system_prompt_teach_llm_about_state_sandbox_and_cache" }, { - "label": "Explicit userId takes precedence over user dict.", - "file_type": "rationale", - "source_file": "tests/test_context.py", - "source_location": "L50", - "community": 32, - "norm_label": "explicit userid takes precedence over user dict.", - "id": "tests_test_context_rationale_50" + "label": "code:python (SYSTEM_PROMPT = \"\"\")", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L1423", + "community": 133, + "norm_label": "code:python (system_prompt = \"\"\")", + "id": "plans_2026_07_16_prometheus_harness_master_codeblock_32" }, { - "label": "Two contexts share no mutable defaults.", - "file_type": "rationale", - "source_file": "tests/test_context.py", - "source_location": "L87", - "community": 32, - "norm_label": "two contexts share no mutable defaults.", - "id": "tests_test_context_rationale_87" + "label": "code:bash (git add main/app/prometheus/agent.py)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L1471", + "community": 133, + "norm_label": "code:bash (git add main/app/prometheus/agent.py)", + "id": "plans_2026_07_16_prometheus_harness_master_codeblock_33" }, { - "label": "Dataclass equality works out of the box.", - "file_type": "rationale", - "source_file": "tests/test_context.py", - "source_location": "L115", - "community": 32, - "norm_label": "dataclass equality works out of the box.", - "id": "tests_test_context_rationale_115" + "label": "Task 10: Docker \u2014 CubeSandbox Template", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L1478", + "community": 133, + "norm_label": "task 10: docker \u2014 cubesandbox template", + "id": "plans_2026_07_16_prometheus_harness_master_task_10_docker_cubesandbox_template" }, { - "label": "._cache_path()", - "file_type": "code", - "source_file": "main/app/prometheus/cache.py", - "source_location": "L19", - "community": 110, - "norm_label": "._cache_path()", - "id": "prometheus_cache_resultcache_cache_path" + "label": "code:dockerfile (FROM python:3.11-slim)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L1489", + "community": 133, + "norm_label": "code:dockerfile (from python:3.11-slim)", + "id": "plans_2026_07_16_prometheus_harness_master_codeblock_34" }, { - "label": "ResultCache \u2014 SHA256-keyed file-based cache for computed results.", - "file_type": "rationale", - "source_file": "main/app/prometheus/cache.py", - "source_location": "L1", - "community": 110, - "norm_label": "resultcache \u2014 sha256-keyed file-based cache for computed results.", - "id": "prometheus_cache_rationale_1" + "label": "code:bash (git add Dockerfile.sandbox)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L1507", + "community": 133, + "norm_label": "code:bash (git add dockerfile.sandbox)", + "id": "plans_2026_07_16_prometheus_harness_master_codeblock_35" }, { - "label": "File-based cache keyed by SHA256 of code. Stores results as JSON under:", - "file_type": "rationale", - "source_file": "main/app/prometheus/cache.py", - "source_location": "L10", - "community": 110, - "norm_label": "file-based cache keyed by sha256 of code. stores results as json under:", - "id": "prometheus_cache_rationale_10" + "label": "Summary", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L1514", + "community": 144, + "norm_label": "summary", + "id": "plans_2026_07_16_prometheus_harness_master_summary" }, { - "label": "Return cached result dict or None if miss.", - "file_type": "rationale", - "source_file": "main/app/prometheus/cache.py", - "source_location": "L24", - "community": 110, - "norm_label": "return cached result dict or none if miss.", - "id": "prometheus_cache_rationale_24" + "label": "What This Enables", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L1533", + "community": 144, + "norm_label": "what this enables", + "id": "plans_2026_07_16_prometheus_harness_master_what_this_enables" }, { - "label": "Store result with timestamp.", - "file_type": "rationale", - "source_file": "main/app/prometheus/cache.py", - "source_location": "L31", - "community": 110, - "norm_label": "store result with timestamp.", - "id": "prometheus_cache_rationale_31" + "label": "What This Does NOT Do (By Design)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L1542", + "community": 144, + "norm_label": "what this does not do (by design)", + "id": "plans_2026_07_16_prometheus_harness_master_what_this_does_not_do_by_design" }, { - "label": "Delete all cached results for a session.", - "file_type": "rationale", - "source_file": "main/app/prometheus/cache.py", - "source_location": "L42", - "community": 110, - "norm_label": "delete all cached results for a session.", - "id": "prometheus_cache_rationale_42" + "label": "Relationship to Existing Systems", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master.md", + "source_location": "L1550", + "community": 144, + "norm_label": "relationship to existing systems", + "id": "plans_2026_07_16_prometheus_harness_master_relationship_to_existing_systems" }, { - "label": "Check if a result exists for the given code.", - "file_type": "rationale", - "source_file": "main/app/prometheus/cache.py", - "source_location": "L50", - "community": 110, - "norm_label": "check if a result exists for the given code.", - "id": "prometheus_cache_rationale_50" + "label": "2026-07-16-prometheus-harness-state.md", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", + "source_location": "L1", + "community": 30, + "norm_label": "2026-07-16-prometheus-harness-state.md", + "id": "docs_superpowers_plans_2026_07_16_prometheus_harness_state_md" }, { - "label": "ToolContext \u2014 bundles all dependencies for tool execution. Replace passing user", - "file_type": "rationale", - "source_file": "main/app/prometheus/context.py", + "label": "Prometheus Harness State \u2014 In-Memory Agent Scratchpad", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", "source_location": "L1", - "community": 32, - "norm_label": "toolcontext \u2014 bundles all dependencies for tool execution. replace passing user", - "id": "prometheus_context_rationale_1" + "community": 30, + "norm_label": "prometheus harness state \u2014 in-memory agent scratchpad", + "id": "plans_2026_07_16_prometheus_harness_state_prometheus_harness_state_in_memory_agent_scratchpad" }, { - "label": "Single dependency bundle for tool execution. Created once per request in ag", - "file_type": "rationale", - "source_file": "main/app/prometheus/context.py", - "source_location": "L22", - "community": 32, - "norm_label": "single dependency bundle for tool execution. created once per request in ag", - "id": "prometheus_context_rationale_22" + "label": "Global Constraints", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", + "source_location": "L11", + "community": 30, + "norm_label": "global constraints", + "id": "plans_2026_07_16_prometheus_harness_state_global_constraints" }, { - "label": "Extract userId from user dict if not explicitly set.", - "file_type": "rationale", - "source_file": "main/app/prometheus/context.py", - "source_location": "L38", - "community": 32, - "norm_label": "extract userid from user dict if not explicitly set.", - "id": "prometheus_context_rationale_38" + "label": "Architecture", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", + "source_location": "L23", + "community": 30, + "norm_label": "architecture", + "id": "plans_2026_07_16_prometheus_harness_state_architecture" }, { - "label": ".log()", - "file_type": "code", - "source_file": "main/app/prometheus/events.py", - "source_location": "L16", - "community": 12, - "norm_label": ".log()", - "id": "prometheus_events_looplogger_log" + "label": "code:block1 (User: \"Analyze PETR4 vs VALE3 correlation\")", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", + "source_location": "L25", + "community": 30, + "norm_label": "code:block1 (user: \"analyze petr4 vs vale3 correlation\")", + "id": "plans_2026_07_16_prometheus_harness_state_codeblock_1" }, { - "label": "LoopLogger \u2014 batched event logging for observable agent loops.", - "file_type": "rationale", - "source_file": "main/app/prometheus/events.py", - "source_location": "L1", - "community": 12, - "norm_label": "looplogger \u2014 batched event logging for observable agent loops.", - "id": "prometheus_events_rationale_1" + "label": "File Map", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", + "source_location": "L67", + "community": 30, + "norm_label": "file map", + "id": "plans_2026_07_16_prometheus_harness_state_file_map" }, { - "label": "Queue events during a loop, flush to DB at end.", - "file_type": "rationale", - "source_file": "main/app/prometheus/events.py", - "source_location": "L10", - "community": 12, - "norm_label": "queue events during a loop, flush to db at end.", - "id": "prometheus_events_rationale_10" + "label": "Task 1: HarnessState Class", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", + "source_location": "L80", + "community": 30, + "norm_label": "task 1: harnessstate class", + "id": "plans_2026_07_16_prometheus_harness_state_task_1_harnessstate_class" }, { - "label": "Log a generic event with optional metadata.", - "file_type": "rationale", - "source_file": "main/app/prometheus/events.py", - "source_location": "L38", - "community": 12, - "norm_label": "log a generic event with optional metadata.", - "id": "prometheus_events_rationale_38" + "label": "code:python (import pytest)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", + "source_location": "L94", + "community": 30, + "norm_label": "code:python (import pytest)", + "id": "plans_2026_07_16_prometheus_harness_state_codeblock_2" }, { - "label": "Log a tool invocation.", - "file_type": "rationale", - "source_file": "main/app/prometheus/events.py", - "source_location": "L44", - "community": 12, - "norm_label": "log a tool invocation.", - "id": "prometheus_events_rationale_44" + "label": "code:python (import logging)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", + "source_location": "L167", + "community": 30, + "norm_label": "code:python (import logging)", + "id": "plans_2026_07_16_prometheus_harness_state_codeblock_3" }, { - "label": "Log end of a turn with timing.", - "file_type": "rationale", - "source_file": "main/app/prometheus/events.py", - "source_location": "L52", - "community": 12, - "norm_label": "log end of a turn with timing.", - "id": "prometheus_events_rationale_52" + "label": "code:bash (git add main/app/prometheus/state.py tests/test_harness_stat)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", + "source_location": "L226", + "community": 30, + "norm_label": "code:bash (git add main/app/prometheus/state.py tests/test_harness_stat)", + "id": "plans_2026_07_16_prometheus_harness_state_codeblock_4" }, { - "label": "_base_url()", - "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L19", - "community": 69, - "norm_label": "_base_url()", - "id": "prometheus_sandbox_base_url" + "label": "Task 2: State Tools \u2014 Function Definitions + Dispatch", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", + "source_location": "L233", + "community": 30, + "norm_label": "task 2: state tools \u2014 function definitions + dispatch", + "id": "plans_2026_07_16_prometheus_harness_state_task_2_state_tools_function_definitions_dispatch" }, { - "label": "SandboxManager \u2014 on-demand CubeSandbox (E2B-compatible) microVM manager. Lifecy", - "file_type": "rationale", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L1", - "community": 69, - "norm_label": "sandboxmanager \u2014 on-demand cubesandbox (e2b-compatible) microvm manager. lifecy", - "id": "prometheus_sandbox_rationale_1" + "label": "code:python (import inspect)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", + "source_location": "L247", + "community": 30, + "norm_label": "code:python (import inspect)", + "id": "plans_2026_07_16_prometheus_harness_state_codeblock_5" }, { - "label": "Thin async wrapper around the CubeSandbox/E2B HTTP API. All methods are sta", - "file_type": "rationale", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L24", - "community": 2, - "norm_label": "thin async wrapper around the cubesandbox/e2b http api. all methods are sta", - "id": "prometheus_sandbox_rationale_24" + "label": "code:python (from main.app.prometheus.state import HarnessState)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", + "source_location": "L344", + "community": 30, + "norm_label": "code:python (from main.app.prometheus.state import harnessstate)", + "id": "plans_2026_07_16_prometheus_harness_state_codeblock_6" }, { - "label": "Create a sandbox and return its ID.", - "file_type": "rationale", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L31", - "community": 357, - "norm_label": "create a sandbox and return its id.", - "id": "prometheus_sandbox_rationale_31" + "label": "code:python (async def dispatchToolCall(functionCall, mcpClients, user=No)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", + "source_location": "L391", + "community": 30, + "norm_label": "code:python (async def dispatchtoolcall(functioncall, mcpclients, user=no)", + "id": "plans_2026_07_16_prometheus_harness_state_codeblock_7" }, { - "label": "Execute Python code inside the sandbox. Returns {stdout, stderr}.", - "file_type": "rationale", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L50", - "community": 358, - "norm_label": "execute python code inside the sandbox. returns {stdout, stderr}.", - "id": "prometheus_sandbox_rationale_50" + "label": "code:bash (git add main/app/prometheus/tools.py tests/test_state_tools.)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", + "source_location": "L427", + "community": 30, + "norm_label": "code:bash (git add main/app/prometheus/tools.py tests/test_state_tools.)", + "id": "plans_2026_07_16_prometheus_harness_state_codeblock_8" }, { - "label": "Snapshot sandbox state via CubeCoW. Returns checkpoint ID.", - "file_type": "rationale", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L58", - "community": 359, - "norm_label": "snapshot sandbox state via cubecow. returns checkpoint id.", - "id": "prometheus_sandbox_rationale_58" + "label": "Task 3: Agent Integration \u2014 State Lifecycle in Stream Loop", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", + "source_location": "L434", + "community": 30, + "norm_label": "task 3: agent integration \u2014 state lifecycle in stream loop", + "id": "plans_2026_07_16_prometheus_harness_state_task_3_agent_integration_state_lifecycle_in_stream_loop" }, { - "label": "Restore a sandbox from a checkpoint. Returns new sandbox ID.", - "file_type": "rationale", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L71", - "community": 360, - "norm_label": "restore a sandbox from a checkpoint. returns new sandbox id.", - "id": "prometheus_sandbox_rationale_71" + "label": "code:python (import pytest)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", + "source_location": "L448", + "community": 30, + "norm_label": "code:python (import pytest)", + "id": "plans_2026_07_16_prometheus_harness_state_codeblock_9" }, { - "label": "Upload a file into the sandbox filesystem.", - "file_type": "rationale", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L80", - "community": 361, - "norm_label": "upload a file into the sandbox filesystem.", - "id": "prometheus_sandbox_rationale_80" + "label": "code:python (from main.app.prometheus.tools import MEMORY_TOOLS, STATE_TO)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", + "source_location": "L498", + "community": 30, + "norm_label": "code:python (from main.app.prometheus.tools import memory_tools, state_to)", + "id": "plans_2026_07_16_prometheus_harness_state_codeblock_10" }, { - "label": "Read a file from the sandbox filesystem.", - "file_type": "rationale", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L90", - "community": 362, - "norm_label": "read a file from the sandbox filesystem.", - "id": "prometheus_sandbox_rationale_90" + "label": "code:python (@classmethod)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", + "source_location": "L505", + "community": 30, + "norm_label": "code:python (@classmethod)", + "id": "plans_2026_07_16_prometheus_harness_state_codeblock_11" }, { - "label": "harness.py", - "file_type": "code", - "source_file": "main/models/harness.py", - "source_location": "L1", - "community": 12, - "norm_label": "harness.py", - "id": "main_models_harness_py" + "label": "code:python (def makeChat(self, sessions, history, *, system_prompt=None,)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", + "source_location": "L533", + "community": 30, + "norm_label": "code:python (def makechat(self, sessions, history, *, system_prompt=none,)", + "id": "plans_2026_07_16_prometheus_harness_state_codeblock_12" }, { - "label": "LoopEvent", - "file_type": "code", - "source_file": "main/models/harness.py", - "source_location": "L7", - "community": 12, - "norm_label": "loopevent", - "id": "models_harness_loopevent" + "label": "code:python (async def sendMessage()", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", + "source_location": "L553", + "community": 30, + "norm_label": "code:python (async def sendmessage()", + "id": "plans_2026_07_16_prometheus_harness_state_codeblock_13" }, { - "label": "LoopEvent model for observable agent loops.", - "file_type": "rationale", - "source_file": "main/models/harness.py", - "source_location": "L1", - "community": 12, - "norm_label": "loopevent model for observable agent loops.", - "id": "models_harness_rationale_1" + "label": "code:python (async def streamMessage()", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", + "source_location": "L574", + "community": 30, + "norm_label": "code:python (async def streammessage()", + "id": "plans_2026_07_16_prometheus_harness_state_codeblock_14" }, { - "label": "TestLoopEventModel", - "file_type": "code", - "source_file": "tests/test_events.py", - "source_location": "L7", - "community": 12, - "norm_label": "testloopeventmodel", - "id": "tests_test_events_testloopeventmodel" + "label": "code:bash (git add main/app/prometheus/agent.py tests/test_agent_state_)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", + "source_location": "L649", + "community": 30, + "norm_label": "code:bash (git add main/app/prometheus/agent.py tests/test_agent_state_)", + "id": "plans_2026_07_16_prometheus_harness_state_codeblock_15" }, { - "label": ".test_create_event()", - "file_type": "code", - "source_file": "tests/test_events.py", - "source_location": "L8", - "community": 12, - "norm_label": ".test_create_event()", - "id": "tests_test_events_testloopeventmodel_test_create_event" + "label": "Task 4: System Prompt \u2014 Teach LLM About State Management", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", + "source_location": "L656", + "community": 30, + "norm_label": "task 4: system prompt \u2014 teach llm about state management", + "id": "plans_2026_07_16_prometheus_harness_state_task_4_system_prompt_teach_llm_about_state_management" }, { - "label": ".test_event_fields()", - "file_type": "code", - "source_file": "tests/test_events.py", - "source_location": "L14", - "community": 12, - "norm_label": ".test_event_fields()", - "id": "tests_test_events_testloopeventmodel_test_event_fields" + "label": "code:python (SYSTEM_PROMPT = \"\"\")", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", + "source_location": "L669", + "community": 30, + "norm_label": "code:python (system_prompt = \"\"\")", + "id": "plans_2026_07_16_prometheus_harness_state_codeblock_16" }, { - "label": ".test_nullable_fields()", - "file_type": "code", - "source_file": "tests/test_events.py", - "source_location": "L33", - "community": 12, - "norm_label": ".test_nullable_fields()", - "id": "tests_test_events_testloopeventmodel_test_nullable_fields" + "label": "code:bash (git add main/app/prometheus/agent.py)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", + "source_location": "L700", + "community": 30, + "norm_label": "code:bash (git add main/app/prometheus/agent.py)", + "id": "plans_2026_07_16_prometheus_harness_state_codeblock_17" }, { - "label": ".test_created_at_auto()", - "file_type": "code", - "source_file": "tests/test_events.py", - "source_location": "L43", - "community": 12, - "norm_label": ".test_created_at_auto()", - "id": "tests_test_events_testloopeventmodel_test_created_at_auto" + "label": "Summary", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", + "source_location": "L707", + "community": 30, + "norm_label": "summary", + "id": "plans_2026_07_16_prometheus_harness_state_summary" }, { - "label": ".test_session_id_indexed()", - "file_type": "code", - "source_file": "tests/test_events.py", - "source_location": "L50", - "community": 12, - "norm_label": ".test_session_id_indexed()", - "id": "tests_test_events_testloopeventmodel_test_session_id_indexed" + "label": "What This Enables", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", + "source_location": "L720", + "community": 30, + "norm_label": "what this enables", + "id": "plans_2026_07_16_prometheus_harness_state_what_this_enables" }, { - "label": ".test_log_queues_event()", - "file_type": "code", - "source_file": "tests/test_events.py", - "source_location": "L56", - "community": 12, - "norm_label": ".test_log_queues_event()", - "id": "tests_test_events_testlooplogger_test_log_queues_event" + "label": "What This Does NOT Do (By Design)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", + "source_location": "L728", + "community": 30, + "norm_label": "what this does not do (by design)", + "id": "plans_2026_07_16_prometheus_harness_state_what_this_does_not_do_by_design" }, { - "label": ".test_flush_inserts_all()", - "file_type": "code", - "source_file": "tests/test_events.py", - "source_location": "L62", - "community": 12, - "norm_label": ".test_flush_inserts_all()", - "id": "tests_test_events_testlooplogger_test_flush_inserts_all" + "label": "Relationship to Other Plans", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-state.md", + "source_location": "L735", + "community": 30, + "norm_label": "relationship to other plans", + "id": "plans_2026_07_16_prometheus_harness_state_relationship_to_other_plans" }, { - "label": ".test_flush_empty()", - "file_type": "code", - "source_file": "tests/test_events.py", - "source_location": "L71", - "community": 12, - "norm_label": ".test_flush_empty()", - "id": "tests_test_events_testlooplogger_test_flush_empty" + "label": "2026-07-16-prometheus-sandbox-agent.md", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", + "source_location": "L1", + "community": 19, + "norm_label": "2026-07-16-prometheus-sandbox-agent.md", + "id": "docs_superpowers_plans_2026_07_16_prometheus_sandbox_agent_md" }, { - "label": ".test_flush_preserves_order()", - "file_type": "code", - "source_file": "tests/test_events.py", - "source_location": "L76", - "community": 12, - "norm_label": ".test_flush_preserves_order()", - "id": "tests_test_events_testlooplogger_test_flush_preserves_order" + "label": "Prometheus Sandbox Code Interpreter \u2014 Implementation Plan", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", + "source_location": "L1", + "community": 19, + "norm_label": "prometheus sandbox code interpreter \u2014 implementation plan", + "id": "plans_2026_07_16_prometheus_sandbox_agent_prometheus_sandbox_code_interpreter_implementation_plan" }, { - "label": ".test_multiple_flushes()", - "file_type": "code", - "source_file": "tests/test_events.py", - "source_location": "L87", - "community": 12, - "norm_label": ".test_multiple_flushes()", - "id": "tests_test_events_testlooplogger_test_multiple_flushes" + "label": "Global Constraints", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", + "source_location": "L11", + "community": 19, + "norm_label": "global constraints", + "id": "plans_2026_07_16_prometheus_sandbox_agent_global_constraints" }, { - "label": ".test_log_with_all_params()", - "file_type": "code", - "source_file": "tests/test_events.py", - "source_location": "L95", - "community": 12, - "norm_label": ".test_log_with_all_params()", - "id": "tests_test_events_testlooplogger_test_log_with_all_params" + "label": "File Map", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", + "source_location": "L23", + "community": 19, + "norm_label": "file map", + "id": "plans_2026_07_16_prometheus_sandbox_agent_file_map" }, { - "label": ".test_flush_failure_logged_not_raised()", - "file_type": "code", - "source_file": "tests/test_events.py", - "source_location": "L113", - "community": 12, - "norm_label": ".test_flush_failure_logged_not_raised()", - "id": "tests_test_events_testlooplogger_test_flush_failure_logged_not_raised" + "label": "Task 1: Config \u2014 Add Sandbox Settings", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", + "source_location": "L37", + "community": 19, + "norm_label": "task 1: config \u2014 add sandbox settings", + "id": "plans_2026_07_16_prometheus_sandbox_agent_task_1_config_add_sandbox_settings" }, { - "label": "If DB insert fails, flush should log error, not raise.", - "file_type": "rationale", - "source_file": "tests/test_events.py", - "source_location": "L114", - "community": 12, - "norm_label": "if db insert fails, flush should log error, not raise.", - "id": "tests_test_events_rationale_114" + "label": "code:python (class PrometheusSettings(BaseMansaSettings):)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", + "source_location": "L50", + "community": 19, + "norm_label": "code:python (class prometheussettings(basemansasettings):)", + "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_1" }, { - "label": "test_system_prompt_includes_sandbox_instructions()", - "file_type": "code", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L31", - "community": 24, - "norm_label": "test_system_prompt_includes_sandbox_instructions()", - "id": "tests_test_agent_sandbox_integration_test_system_prompt_includes_sandbox_instructions" + "label": "code:yaml (environment:)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", + "source_location": "L71", + "community": 19, + "norm_label": "code:yaml (environment:)", + "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_2" }, { - "label": "test_system_prompt_includes_cache_instructions()", - "file_type": "code", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L36", - "community": 24, - "norm_label": "test_system_prompt_includes_cache_instructions()", - "id": "tests_test_agent_sandbox_integration_test_system_prompt_includes_cache_instructions" + "label": "code:bash (git add config.py docker-compose.yml)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", + "source_location": "L81", + "community": 19, + "norm_label": "code:bash (git add config.py docker-compose.yml)", + "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_3" }, { - "label": "Retrieve values from the harness state. Use this to recall intermediate results,", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L77", - "community": 8, - "norm_label": "retrieve values from the harness state. use this to recall intermediate results,", - "id": "prometheus_tools_rationale_77" + "label": "Task 2: Sandbox Manager \u2014 Core HTTP Client", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", + "source_location": "L88", + "community": 19, + "norm_label": "task 2: sandbox manager \u2014 core http client", + "id": "plans_2026_07_16_prometheus_sandbox_agent_task_2_sandbox_manager_core_http_client" }, { - "label": "Phase 4: ToolContext (Replace God Function)", + "label": "code:python (import pytest)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L725", - "community": 185, - "norm_label": "phase 4: toolcontext (replace god function)", - "id": "plans_2026_07_16_prometheus_harness_master_v2_phase_4_toolcontext_replace_god_function" + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", + "source_location": "L101", + "community": 19, + "norm_label": "code:python (import pytest)", + "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_4" }, { - "label": "Task 5: ToolContext \u2014 Single Dispatch Object", + "label": "code:python (import base64)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L727", - "community": 185, - "norm_label": "task 5: toolcontext \u2014 single dispatch object", - "id": "plans_2026_07_16_prometheus_harness_master_v2_task_5_toolcontext_single_dispatch_object" + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", + "source_location": "L192", + "community": 19, + "norm_label": "code:python (import base64)", + "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_5" }, { - "label": "Task 7: Tool Definitions \u2014 State + Sandbox + Cache Tools", + "label": "code:bash (git add main/app/prometheus/sandbox.py tests/test_sandbox.py)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", - "source_location": "L1148", - "community": 121, - "norm_label": "task 7: tool definitions \u2014 state + sandbox + cache tools", - "id": "plans_2026_07_16_prometheus_harness_master_v2_task_7_tool_definitions_state_sandbox_cache_tools" + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", + "source_location": "L269", + "community": 19, + "norm_label": "code:bash (git add main/app/prometheus/sandbox.py tests/test_sandbox.py)", + "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_6" }, { - "label": "sendMessage should create a HarnessState and pass it to buildSystemPrompt.", - "file_type": "rationale", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L50", - "community": 363, - "norm_label": "sendmessage should create a harnessstate and pass it to buildsystemprompt.", - "id": "tests_test_agent_state_integration_rationale_50" + "label": "Task 3: Sandbox Tools \u2014 Gemini Function Declarations + Dispatch", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", + "source_location": "L276", + "community": 19, + "norm_label": "task 3: sandbox tools \u2014 gemini function declarations + dispatch", + "id": "plans_2026_07_16_prometheus_sandbox_agent_task_3_sandbox_tools_gemini_function_declarations_dispatch" }, { - "label": "streamMessage should create a HarnessState and pass it to buildSystemPrompt.", - "file_type": "rationale", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L83", - "community": 364, - "norm_label": "streammessage should create a harnessstate and pass it to buildsystemprompt.", - "id": "tests_test_agent_state_integration_rationale_83" + "label": "code:python (from main.app.prometheus.tools import SANDBOX_TOOLS, SANDBOX)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", + "source_location": "L289", + "community": 19, + "norm_label": "code:python (from main.app.prometheus.tools import sandbox_tools, sandbox)", + "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_7" }, { - "label": "System prompt should instruct LLM about memory vs state.", - "file_type": "rationale", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L191", - "community": 93, - "norm_label": "system prompt should instruct llm about memory vs state.", - "id": "tests_test_agent_state_integration_rationale_191" + "label": "code:python (import base64)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", + "source_location": "L331", + "community": 19, + "norm_label": "code:python (import base64)", + "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_8" }, { - "label": "executeStateTool()", - "file_type": "code", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L104", - "community": 8, - "norm_label": "executestatetool()", - "id": "prometheus_tools_executestatetool" + "label": "code:bash (git add main/app/prometheus/tools.py tests/test_sandbox.py)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", + "source_location": "L537", + "community": 19, + "norm_label": "code:bash (git add main/app/prometheus/tools.py tests/test_sandbox.py)", + "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_9" }, { - "label": "Search user's saved memories, preferences, and past analysis context. Use t", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L13", - "community": 152, - "norm_label": "search user's saved memories, preferences, and past analysis context. use t", - "id": "prometheus_tools_rationale_13" + "label": "Task 4: Agent \u2014 Sandbox Lifecycle in Stream Loop", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", + "source_location": "L544", + "community": 19, + "norm_label": "task 4: agent \u2014 sandbox lifecycle in stream loop", + "id": "plans_2026_07_16_prometheus_sandbox_agent_task_4_agent_sandbox_lifecycle_in_stream_loop" }, { - "label": "Store a memory about the user's preferences, analysis results, or feedback.", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L39", - "community": 208, - "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", - "id": "prometheus_tools_rationale_39" + "label": "code:python (from main.app.prometheus.agent import Prometheus)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", + "source_location": "L557", + "community": 19, + "norm_label": "code:python (from main.app.prometheus.agent import prometheus)", + "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_10" }, { - "label": ".test_state_tools_is_list_of_callables()", - "file_type": "code", - "source_file": "tests/test_state_tools.py", - "source_location": "L44", - "community": 148, - "norm_label": ".test_state_tools_is_list_of_callables()", - "id": "tests_test_state_tools_teststatetoolfunctions_test_state_tools_is_list_of_callables" + "label": "code:python (from main.app.prometheus.sandbox import SandboxManager)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", + "source_location": "L596", + "community": 19, + "norm_label": "code:python (from main.app.prometheus.sandbox import sandboxmanager)", + "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_11" }, { - "label": ".test_state_tool_names()", - "file_type": "code", - "source_file": "tests/test_state_tools.py", - "source_location": "L50", - "community": 148, - "norm_label": ".test_state_tool_names()", - "id": "tests_test_state_tools_teststatetoolfunctions_test_state_tool_names" + "label": "code:python (def makeChat(self, sessions, history, *, system_prompt=None,)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", + "source_location": "L603", + "community": 19, + "norm_label": "code:python (def makechat(self, sessions, history, *, system_prompt=none,)", + "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_12" }, { - "label": "TestExecuteStateTool", - "file_type": "code", - "source_file": "tests/test_state_tools.py", - "source_location": "L54", - "community": 8, - "norm_label": "testexecutestatetool", - "id": "tests_test_state_tools_testexecutestatetool" + "label": "code:python (async def sendMessage(self, query=None, sessionId=None, db=N)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", + "source_location": "L611", + "community": 19, + "norm_label": "code:python (async def sendmessage(self, query=none, sessionid=none, db=n)", + "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_13" }, { - "label": "test_unknown_tool()", - "file_type": "code", - "source_file": "tests/test_state_tools.py", - "source_location": "L84", - "community": 8, - "norm_label": "test_unknown_tool()", - "id": "tests_test_state_tools_test_unknown_tool" + "label": "code:python (async def streamMessage(self, query=None, sessionId=None, db)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", + "source_location": "L631", + "community": 19, + "norm_label": "code:python (async def streammessage(self, query=none, sessionid=none, db)", + "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_14" }, { - "label": "In-memory state dict that persists across loop iterations within a single reques", - "file_type": "rationale", - "source_file": "main/app/prometheus/state.py", - "source_location": "L7", - "community": 8, - "norm_label": "in-memory state dict that persists across loop iterations within a single reques", - "id": "prometheus_state_rationale_7" + "label": "code:bash (git add main/app/prometheus/agent.py)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", + "source_location": "L694", + "community": 19, + "norm_label": "code:bash (git add main/app/prometheus/agent.py)", + "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_15" }, { - "label": "Retrieve a value from state. Returns default if key not found.", - "file_type": "rationale", - "source_file": "main/app/prometheus/state.py", - "source_location": "L18", - "community": 8, - "norm_label": "retrieve a value from state. returns default if key not found.", - "id": "prometheus_state_rationale_18" + "label": "Task 5: Docker \u2014 CubeSandbox Template + Compose Service", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", + "source_location": "L701", + "community": 19, + "norm_label": "task 5: docker \u2014 cubesandbox template + compose service", + "id": "plans_2026_07_16_prometheus_sandbox_agent_task_5_docker_cubesandbox_template_compose_service" }, { - "label": "Store a value in state. Marks state as changed for context injection.", - "file_type": "rationale", - "source_file": "main/app/prometheus/state.py", - "source_location": "L22", - "community": 215, - "norm_label": "store a value in state. marks state as changed for context injection.", - "id": "prometheus_state_rationale_22" + "label": "code:dockerfile (FROM python:3.11-slim)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", + "source_location": "L713", + "community": 19, + "norm_label": "code:dockerfile (from python:3.11-slim)", + "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_16" }, { - "label": "Return a copy of the current state.", - "file_type": "rationale", - "source_file": "main/app/prometheus/state.py", - "source_location": "L27", - "community": 8, - "norm_label": "return a copy of the current state.", - "id": "prometheus_state_rationale_27" + "label": "code:yaml (services:)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", + "source_location": "L733", + "community": 19, + "norm_label": "code:yaml (services:)", + "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_17" }, { - "label": "Format state as a string for injection into the LLM context.", - "file_type": "rationale", - "source_file": "main/app/prometheus/state.py", - "source_location": "L31", - "community": 8, - "norm_label": "format state as a string for injection into the llm context.", - "id": "prometheus_state_rationale_31" + "label": "code:block18 (SANDBOX_HOST=localhost)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", + "source_location": "L797", + "community": 19, + "norm_label": "code:block18 (sandbox_host=localhost)", + "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_18" }, { - "label": "Check if state changed since last reset.", - "file_type": "rationale", - "source_file": "main/app/prometheus/state.py", - "source_location": "L37", - "community": 8, - "norm_label": "check if state changed since last reset.", - "id": "prometheus_state_rationale_37" + "label": "code:bash (git add Dockerfile.sandbox docker-compose.yml)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", + "source_location": "L804", + "community": 19, + "norm_label": "code:bash (git add dockerfile.sandbox docker-compose.yml)", + "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_19" }, { - "label": "Reset the changed flag. Returns the previous state.", - "file_type": "rationale", - "source_file": "main/app/prometheus/state.py", - "source_location": "L41", - "community": 8, - "norm_label": "reset the changed flag. returns the previous state.", - "id": "prometheus_state_rationale_41" + "label": "Task 6: Frontend \u2014 SandboxArtifact Component", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", + "source_location": "L811", + "community": 19, + "norm_label": "task 6: frontend \u2014 sandboxartifact component", + "id": "plans_2026_07_16_prometheus_sandbox_agent_task_6_frontend_sandboxartifact_component" }, { - "label": "Clear all state data.", - "file_type": "rationale", - "source_file": "main/app/prometheus/state.py", - "source_location": "L47", - "community": 8, - "norm_label": "clear all state data.", - "id": "prometheus_state_rationale_47" + "label": "code:tsx (// frontend/src/components/SandboxArtifact.tsx)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", + "source_location": "L822", + "community": 19, + "norm_label": "code:tsx (// frontend/src/components/sandboxartifact.tsx)", + "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_20" }, { - "label": "Search user's saved memories, preferences, and past analysis context. Use t", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L12", - "community": 152, - "norm_label": "search user's saved memories, preferences, and past analysis context. use t", - "id": "prometheus_tools_rationale_12" + "label": "code:tsx (// In your chat message component, after rendering text:)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", + "source_location": "L886", + "community": 19, + "norm_label": "code:tsx (// in your chat message component, after rendering text:)", + "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_21" }, { - "label": "Store a memory about the user's preferences, analysis results, or feedback.", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L38", - "community": 208, - "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", - "id": "prometheus_tools_rationale_38" + "label": "code:bash (git add frontend/src/components/SandboxArtifact.tsx)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", + "source_location": "L898", + "community": 19, + "norm_label": "code:bash (git add frontend/src/components/sandboxartifact.tsx)", + "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_22" }, { - "label": "memory_types.py", - "file_type": "code", - "source_file": "main/models/memory_types.py", - "source_location": "L1", - "community": 51, - "norm_label": "memory_types.py", - "id": "main_models_memory_types_py" + "label": "Task 7: System Prompt \u2014 Teach LLM About Sandbox", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", + "source_location": "L905", + "community": 19, + "norm_label": "task 7: system prompt \u2014 teach llm about sandbox", + "id": "plans_2026_07_16_prometheus_sandbox_agent_task_7_system_prompt_teach_llm_about_sandbox" }, { - "label": "VectorType", - "file_type": "code", - "source_file": "main/models/memory_types.py", - "source_location": "L5", - "community": 51, - "norm_label": "vectortype", - "id": "models_memory_types_vectortype" + "label": "code:python (SYSTEM_PROMPT = \"\"\")", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", + "source_location": "L918", + "community": 19, + "norm_label": "code:python (system_prompt = \"\"\")", + "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_23" }, { - "label": ".__init__()", - "file_type": "code", - "source_file": "main/models/memory_types.py", - "source_location": "L9", - "community": 51, - "norm_label": ".__init__()", - "id": "models_memory_types_vectortype_init" + "label": "code:bash (git add main/app/prometheus/agent.py)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", + "source_location": "L947", + "community": 19, + "norm_label": "code:bash (git add main/app/prometheus/agent.py)", + "id": "plans_2026_07_16_prometheus_sandbox_agent_codeblock_24" }, { - "label": ".process_bind_param()", + "label": "Summary", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-sandbox-agent.md", + "source_location": "L954", + "community": 19, + "norm_label": "summary", + "id": "plans_2026_07_16_prometheus_sandbox_agent_summary" + }, + { + "label": "test_get_state_no_state_returns_error()", "file_type": "code", - "source_file": "main/models/memory_types.py", - "source_location": "L13", - "community": 51, - "norm_label": ".process_bind_param()", - "id": "models_memory_types_vectortype_process_bind_param" - }, - { - "label": ".process_result_value()", - "file_type": "code", - "source_file": "main/models/memory_types.py", - "source_location": "L21", - "community": 51, - "norm_label": ".process_result_value()", - "id": "models_memory_types_vectortype_process_result_value" + "source_file": "tests/test_prometheus_tools.py", + "source_location": "L114", + "community": 100, + "norm_label": "test_get_state_no_state_returns_error()", + "id": "tests_test_prometheus_tools_test_get_state_no_state_returns_error" }, { - "label": "executeMemoryTool()", + "label": "test_set_state_no_state_returns_error()", "file_type": "code", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L46", - "community": 84, - "norm_label": "executememorytool()", - "id": "prometheus_tools_executememorytool" + "source_file": "tests/test_prometheus_tools.py", + "source_location": "L119", + "community": 487, + "norm_label": "test_set_state_no_state_returns_error()", + "id": "tests_test_prometheus_tools_test_set_state_no_state_returns_error" }, { - "label": "Store a memory about the user's preferences, analysis results, or feedback.", + "label": "Assert a tool function has only Gemini-compatible parameter types.", "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L29", - "community": 208, - "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", - "id": "prometheus_tools_rationale_29" + "source_file": "tests/test_prometheus_tools.py", + "source_location": "L21", + "community": 100, + "norm_label": "assert a tool function has only gemini-compatible parameter types.", + "id": "tests_test_prometheus_tools_rationale_21" }, { - "label": "Keys with low similarity should not merge.", + "label": "Every function in TOOL_REGISTRY must have Gemini-safe signatures. Custom cl", "file_type": "rationale", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L52", - "community": 67, - "norm_label": "keys with low similarity should not merge.", - "id": "tests_test_memory_dedup_rationale_52" + "source_file": "tests/test_prometheus_tools.py", + "source_location": "L128", + "community": 100, + "norm_label": "every function in tool_registry must have gemini-safe signatures. custom cl", + "id": "tests_test_prometheus_tools_rationale_128" }, { - "label": "Keys with Jaccard <= 0.8 should not merge.", + "label": "Regression: HarnessState must never leak into tool signatures.", "file_type": "rationale", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L85", - "community": 67, - "norm_label": "keys with jaccard <= 0.8 should not merge.", - "id": "tests_test_memory_dedup_rationale_85" + "source_file": "tests/test_prometheus_tools.py", + "source_location": "L137", + "community": 100, + "norm_label": "regression: harnessstate must never leak into tool signatures.", + "id": "tests_test_prometheus_tools_rationale_137" }, { - "label": "TestMemoryToolsDefinition", + "label": "cache.py", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L20", - "community": 151, - "norm_label": "testmemorytoolsdefinition", - "id": "tests_test_memory_tools_wiring_testmemorytoolsdefinition" + "source_file": "main/app/prometheus/cache.py", + "source_location": "L1", + "community": 110, + "norm_label": "cache.py", + "id": "main_app_prometheus_cache_py" }, { - "label": ".test_memory_tools_is_nonempty_list()", + "label": "ResultCache", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L23", - "community": 151, - "norm_label": ".test_memory_tools_is_nonempty_list()", - "id": "tests_test_memory_tools_wiring_testmemorytoolsdefinition_test_memory_tools_is_nonempty_list" + "source_file": "main/app/prometheus/cache.py", + "source_location": "L7", + "community": 110, + "norm_label": "resultcache", + "id": "prometheus_cache_resultcache" }, { - "label": ".test_memory_tools_are_callables()", + "label": ".__init__()", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L27", - "community": 151, - "norm_label": ".test_memory_tools_are_callables()", - "id": "tests_test_memory_tools_wiring_testmemorytoolsdefinition_test_memory_tools_are_callables" + "source_file": "main/app/prometheus/cache.py", + "source_location": "L8", + "community": 110, + "norm_label": ".__init__()", + "id": "prometheus_cache_resultcache_init" }, { - "label": ".test_memory_tool_names_match()", + "label": ".cachePath()", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L31", - "community": 151, - "norm_label": ".test_memory_tool_names_match()", - "id": "tests_test_memory_tools_wiring_testmemorytoolsdefinition_test_memory_tool_names_match" + "source_file": "main/app/prometheus/cache.py", + "source_location": "L11", + "community": 110, + "norm_label": ".cachepath()", + "id": "prometheus_cache_resultcache_cachepath" }, { - "label": ".test_memory_tool_names_constant_matches()", + "label": ".get()", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L35", - "community": 151, - "norm_label": ".test_memory_tool_names_constant_matches()", - "id": "tests_test_memory_tools_wiring_testmemorytoolsdefinition_test_memory_tool_names_constant_matches" + "source_file": "main/app/prometheus/cache.py", + "source_location": "L15", + "community": 110, + "norm_label": ".get()", + "id": "prometheus_cache_resultcache_get" }, { - "label": ".test_search_memory_has_query_param()", + "label": ".set()", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L38", - "community": 151, - "norm_label": ".test_search_memory_has_query_param()", - "id": "tests_test_memory_tools_wiring_testmemorytoolsdefinition_test_search_memory_has_query_param" + "source_file": "main/app/prometheus/cache.py", + "source_location": "L21", + "community": 110, + "norm_label": ".set()", + "id": "prometheus_cache_resultcache_set" }, { - "label": ".test_save_memory_has_required_params()", + "label": ".invalidate()", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L43", - "community": 151, - "norm_label": ".test_save_memory_has_required_params()", - "id": "tests_test_memory_tools_wiring_testmemorytoolsdefinition_test_save_memory_has_required_params" + "source_file": "main/app/prometheus/cache.py", + "source_location": "L31", + "community": 110, + "norm_label": ".invalidate()", + "id": "prometheus_cache_resultcache_invalidate" }, { - "label": "test_search_memory_routed_to_executeMemoryTool()", + "label": ".exists()", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L92", - "community": 49, - "norm_label": "test_search_memory_routed_to_executememorytool()", - "id": "tests_test_memory_tools_wiring_test_search_memory_routed_to_executememorytool" + "source_file": "main/app/prometheus/cache.py", + "source_location": "L38", + "community": 110, + "norm_label": ".exists()", + "id": "prometheus_cache_resultcache_exists" }, { - "label": "test_save_memory_routed_to_executeMemoryTool()", + "label": "baseUrl()", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L105", - "community": 49, - "norm_label": "test_save_memory_routed_to_executememorytool()", - "id": "tests_test_memory_tools_wiring_test_save_memory_routed_to_executememorytool" + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L12", + "community": 69, + "norm_label": "baseurl()", + "id": "prometheus_sandbox_baseurl" }, { - "label": "test_memory_tool_skipped_without_user()", + "label": "checkpoint()", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L122", - "community": 49, - "norm_label": "test_memory_tool_skipped_without_user()", - "id": "tests_test_memory_tools_wiring_test_memory_tool_skipped_without_user" + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L43", + "community": 69, + "norm_label": "checkpoint()", + "id": "prometheus_sandbox_checkpoint" }, { - "label": "test_non_memory_tool_not_routed_to_executeMemoryTool()", + "label": "restore()", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L131", - "community": 49, - "norm_label": "test_non_memory_tool_not_routed_to_executememorytool()", - "id": "tests_test_memory_tools_wiring_test_non_memory_tool_not_routed_to_executememorytool" + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L55", + "community": 69, + "norm_label": "restore()", + "id": "prometheus_sandbox_restore" }, { - "label": "MEMORY_TOOLS must be a list of callables with proper signatures.", - "file_type": "rationale", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L21", - "community": 151, - "norm_label": "memory_tools must be a list of callables with proper signatures.", - "id": "tests_test_memory_tools_wiring_rationale_21" + "label": "upload_file()", + "file_type": "code", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L63", + "community": 69, + "norm_label": "upload_file()", + "id": "prometheus_sandbox_upload_file" }, { - "label": "makeChat must include MEMORY_TOOLS alongside MCP sessions.", - "file_type": "rationale", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L52", - "community": 49, - "norm_label": "makechat must include memory_tools alongside mcp sessions.", - "id": "tests_test_memory_tools_wiring_rationale_52" + "label": "read_sandbox_file()", + "file_type": "code", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L139", + "community": 523, + "norm_label": "read_sandbox_file()", + "id": "prometheus_tools_read_sandbox_file" }, { - "label": "dispatchToolCall must route memory tool names to executeMemoryTool.", - "file_type": "rationale", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L89", - "community": 49, - "norm_label": "dispatchtoolcall must route memory tool names to executememorytool.", - "id": "tests_test_memory_tools_wiring_rationale_89" + "label": "upload_to_sandbox()", + "file_type": "code", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L151", + "community": 523, + "norm_label": "upload_to_sandbox()", + "id": "prometheus_tools_upload_to_sandbox" }, { - "label": ".test_memory_tools_wrapped_in_tool()", + "label": "check_cache()", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L25", - "community": 151, - "norm_label": ".test_memory_tools_wrapped_in_tool()", - "id": "tests_test_memory_tools_wiring_testmemorytoolsdefinition_test_memory_tools_wrapped_in_tool" + "source_file": "main/app/prometheus/tools.py", + "source_location": "L165", + "community": 523, + "norm_label": "check_cache()", + "id": "prometheus_tools_check_cache" }, { - "label": "MEMORY_TOOLS must be defined as a Tool wrapping FunctionDeclarations.", + "label": "Search user's saved memories, preferences, and past analysis context. Use", "file_type": "rationale", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L19", - "community": 151, - "norm_label": "memory_tools must be defined as a tool wrapping functiondeclarations.", - "id": "tests_test_memory_tools_wiring_rationale_19" + "source_file": "main/app/prometheus/tools.py", + "source_location": "L17", + "community": 152, + "norm_label": "search user's saved memories, preferences, and past analysis context. use", + "id": "prometheus_tools_rationale_17" }, { - "label": "makeChat must include MEMORY_TOOLS alongside MCP sessions.", + "label": "Execute Python code in an isolated sandbox. Use for quantitative analysis,", "file_type": "rationale", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L57", - "community": 49, - "norm_label": "makechat must include memory_tools alongside mcp sessions.", - "id": "tests_test_memory_tools_wiring_rationale_57" + "source_file": "main/app/prometheus/tools.py", + "source_location": "L109", + "community": 487, + "norm_label": "execute python code in an isolated sandbox. use for quantitative analysis,", + "id": "prometheus_tools_rationale_109" }, { - "label": "dispatchToolCall must route memory tool names to executeMemoryTool.", + "label": "Read a file from the sandbox filesystem. Args: path: Absolute pa", "file_type": "rationale", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L92", - "community": 49, - "norm_label": "dispatchtoolcall must route memory tool names to executememorytool.", - "id": "tests_test_memory_tools_wiring_rationale_92" - }, - { - "label": "_normalize_key()", - "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L17", - "community": 53, - "norm_label": "_normalize_key()", - "id": "prometheus_memory_normalize_key" + "source_file": "main/app/prometheus/tools.py", + "source_location": "L140", + "community": 523, + "norm_label": "read a file from the sandbox filesystem. args: path: absolute pa", + "id": "prometheus_tools_rationale_140" }, { - "label": "Helper to create memories with controlled baseScore, lastAccessedAt, accessCount", + "label": "Upload a file to the sandbox filesystem. Use this to push data files (CSV,", "file_type": "rationale", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L23", - "community": 518, - "norm_label": "helper to create memories with controlled basescore, lastaccessedat, accesscount", - "id": "tests_test_memory_maintenance_rationale_23" + "source_file": "main/app/prometheus/tools.py", + "source_location": "L152", + "community": 523, + "norm_label": "upload a file to the sandbox filesystem. use this to push data files (csv,", + "id": "prometheus_tools_rationale_152" }, { - "label": "Decay applies to ALL active memories, not just accessed ones.", + "label": "Check if a computed result exists in the cache. Use before executing expens", "file_type": "rationale", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L54", - "community": 518, - "norm_label": "decay applies to all active memories, not just accessed ones.", - "id": "tests_test_memory_maintenance_rationale_54" + "source_file": "main/app/prometheus/tools.py", + "source_location": "L166", + "community": 523, + "norm_label": "check if a computed result exists in the cache. use before executing expens", + "id": "prometheus_tools_rationale_166" }, { - "label": "baseScore should never reach exactly 0 from decay alone.", - "file_type": "rationale", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L67", - "community": 518, - "norm_label": "basescore should never reach exactly 0 from decay alone.", - "id": "tests_test_memory_maintenance_rationale_67" + "label": ".test_build_system_prompt_no_state()", + "file_type": "code", + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L9", + "community": 522, + "norm_label": ".test_build_system_prompt_no_state()", + "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_build_system_prompt_no_state" }, { - "label": "Score below threshold + accessCount=0 + 90+ days \u2192 archived.", - "file_type": "rationale", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L85", - "community": 518, - "norm_label": "score below threshold + accesscount=0 + 90+ days \u2192 archived.", - "id": "tests_test_memory_maintenance_rationale_85" + "label": ".test_build_system_prompt_empty_state()", + "file_type": "code", + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L20", + "community": 522, + "norm_label": ".test_build_system_prompt_empty_state()", + "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_build_system_prompt_empty_state" }, { - "label": "Low score but accessed recently \u2192 not archived.", - "file_type": "rationale", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L92", - "community": 518, - "norm_label": "low score but accessed recently \u2192 not archived.", - "id": "tests_test_memory_maintenance_rationale_92" + "label": ".test_system_prompt_includes_state_instructions()", + "file_type": "code", + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L25", + "community": 522, + "norm_label": ".test_system_prompt_includes_state_instructions()", + "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_system_prompt_includes_state_instructions" }, { - "label": "Zero access but score still above threshold \u2192 not archived.", - "file_type": "rationale", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L99", - "community": 518, - "norm_label": "zero access but score still above threshold \u2192 not archived.", - "id": "tests_test_memory_maintenance_rationale_99" + "label": ".test_system_prompt_includes_sandbox_instructions()", + "file_type": "code", + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L30", + "community": 522, + "norm_label": ".test_system_prompt_includes_sandbox_instructions()", + "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_system_prompt_includes_sandbox_instructions" }, { - "label": "Even with low score, if accessed \u2192 not archived.", - "file_type": "rationale", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L106", - "community": 518, - "norm_label": "even with low score, if accessed \u2192 not archived.", - "id": "tests_test_memory_maintenance_rationale_106" + "label": ".test_system_prompt_includes_cache_instructions()", + "file_type": "code", + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L34", + "community": 522, + "norm_label": ".test_system_prompt_includes_cache_instructions()", + "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_system_prompt_includes_cache_instructions" }, { - "label": "Already archived memories are skipped.", - "file_type": "rationale", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L113", - "community": 518, - "norm_label": "already archived memories are skipped.", - "id": "tests_test_memory_maintenance_rationale_113" + "label": ".test_makeChat_uses_tool_registry()", + "file_type": "code", + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L38", + "community": 522, + "norm_label": ".test_makechat_uses_tool_registry()", + "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_makechat_uses_tool_registry" }, { - "label": "Decay happens first, then archive check with new scores.", - "file_type": "rationale", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L134", - "community": 518, - "norm_label": "decay happens first, then archive check with new scores.", - "id": "tests_test_memory_maintenance_rationale_134" + "label": "test_streamMessage_creates_loop_logger_and_cache()", + "file_type": "code", + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L48", + "community": 24, + "norm_label": "test_streammessage_creates_loop_logger_and_cache()", + "id": "tests_test_agent_sandbox_integration_test_streammessage_creates_loop_logger_and_cache" }, { - "label": "Score that decays to >= threshold stays alive. 0.11 * 0.95 = 0.1045 >= 0.1.", - "file_type": "rationale", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L143", - "community": 518, - "norm_label": "score that decays to >= threshold stays alive. 0.11 * 0.95 = 0.1045 >= 0.1.", - "id": "tests_test_memory_maintenance_rationale_143" + "label": "test_streamMessage_sandbox_creation_failure_falls_back()", + "file_type": "code", + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L150", + "community": 24, + "norm_label": "test_streammessage_sandbox_creation_failure_falls_back()", + "id": "tests_test_agent_sandbox_integration_test_streammessage_sandbox_creation_failure_falls_back" }, { - "label": "89 days with low score \u2192 not archived (need > 90).", + "label": "When sandbox creation fails, agent falls back to chat-only mode.", "file_type": "rationale", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L156", - "community": 518, - "norm_label": "89 days with low score \u2192 not archived (need > 90).", - "id": "tests_test_memory_maintenance_rationale_156" + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L151", + "community": 354, + "norm_label": "when sandbox creation fails, agent falls back to chat-only mode.", + "id": "tests_test_agent_sandbox_integration_rationale_151" }, { - "label": "embed()", + "label": "test_cache.py", "file_type": "code", - "source_file": "main/utils/models/loader.py", - "source_location": "L23", - "community": 84, - "norm_label": "embed()", - "id": "models_loader_embed" + "source_file": "tests/test_cache.py", + "source_location": "L1", + "community": 135, + "norm_label": "test_cache.py", + "id": "tests_test_cache_py" }, { - "label": "Overall Score: 58/100", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L9", - "community": 160, - "norm_label": "overall score: 58/100", - "id": "server_code_review_report_overall_score_58_100" + "label": "cache()", + "file_type": "code", + "source_file": "tests/test_cache.py", + "source_location": "L11", + "community": 135, + "norm_label": "cache()", + "id": "tests_test_cache_cache" }, { - "label": "P0 \u2014 Must Fix (Critical)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L21", - "community": 206, - "norm_label": "p0 \u2014 must fix (critical)", - "id": "server_code_review_report_p0_must_fix_critical" + "label": "TestResultCache", + "file_type": "code", + "source_file": "tests/test_cache.py", + "source_location": "L15", + "community": 135, + "norm_label": "testresultcache", + "id": "tests_test_cache_testresultcache" }, { - "label": "Security (5)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L23", - "community": 206, - "norm_label": "security (5)", - "id": "server_code_review_report_security_5" + "label": ".test_set_and_get()", + "file_type": "code", + "source_file": "tests/test_cache.py", + "source_location": "L16", + "community": 135, + "norm_label": ".test_set_and_get()", + "id": "tests_test_cache_testresultcache_test_set_and_get" }, { - "label": "Architecture (7)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L35", - "community": 206, - "norm_label": "architecture (7)", - "id": "server_code_review_report_architecture_7" + "label": ".test_get_miss()", + "file_type": "code", + "source_file": "tests/test_cache.py", + "source_location": "L24", + "community": 135, + "norm_label": ".test_get_miss()", + "id": "tests_test_cache_testresultcache_test_get_miss" }, { - "label": "Testing (5)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L51", - "community": 206, - "norm_label": "testing (5)", - "id": "server_code_review_report_testing_5" + "label": ".test_exists()", + "file_type": "code", + "source_file": "tests/test_cache.py", + "source_location": "L27", + "community": 135, + "norm_label": ".test_exists()", + "id": "tests_test_cache_testresultcache_test_exists" }, { - "label": "API Design (3)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L63", - "community": 206, - "norm_label": "api design (3)", - "id": "server_code_review_report_api_design_3" + "label": ".test_different_codes_different_hashes()", + "file_type": "code", + "source_file": "tests/test_cache.py", + "source_location": "L32", + "community": 135, + "norm_label": ".test_different_codes_different_hashes()", + "id": "tests_test_cache_testresultcache_test_different_codes_different_hashes" }, { - "label": "Frontend (4)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L71", - "community": 206, - "norm_label": "frontend (4)", - "id": "server_code_review_report_frontend_4" + "label": ".test_invalidate()", + "file_type": "code", + "source_file": "tests/test_cache.py", + "source_location": "L38", + "community": 135, + "norm_label": ".test_invalidate()", + "id": "tests_test_cache_testresultcache_test_invalidate" }, { - "label": "P1 \u2014 Should Fix", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L83", - "community": 207, - "norm_label": "p1 \u2014 should fix", - "id": "server_code_review_report_p1_should_fix" + "label": ".test_invalidate_does_not_affect_other_sessions()", + "file_type": "code", + "source_file": "tests/test_cache.py", + "source_location": "L45", + "community": 135, + "norm_label": ".test_invalidate_does_not_affect_other_sessions()", + "id": "tests_test_cache_testresultcache_test_invalidate_does_not_affect_other_sessions" }, { - "label": "Architecture (8)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L85", - "community": 207, - "norm_label": "architecture (8)", - "id": "server_code_review_report_architecture_8" + "label": ".test_invalidate_does_not_affect_other_users()", + "file_type": "code", + "source_file": "tests/test_cache.py", + "source_location": "L52", + "community": 135, + "norm_label": ".test_invalidate_does_not_affect_other_users()", + "id": "tests_test_cache_testresultcache_test_invalidate_does_not_affect_other_users" }, { - "label": "Security (6)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L103", - "community": 207, - "norm_label": "security (6)", - "id": "server_code_review_report_security_6" + "label": ".test_set_creates_directories()", + "file_type": "code", + "source_file": "tests/test_cache.py", + "source_location": "L59", + "community": 135, + "norm_label": ".test_set_creates_directories()", + "id": "tests_test_cache_testresultcache_test_set_creates_directories" }, { - "label": "Testing (4)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L117", - "community": 207, - "norm_label": "testing (4)", - "id": "server_code_review_report_testing_4" + "label": ".test_overwrite_same_code()", + "file_type": "code", + "source_file": "tests/test_cache.py", + "source_location": "L66", + "community": 135, + "norm_label": ".test_overwrite_same_code()", + "id": "tests_test_cache_testresultcache_test_overwrite_same_code" }, { - "label": "API Design (6)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L127", - "community": 207, - "norm_label": "api design (6)", - "id": "server_code_review_report_api_design_6" + "label": ".test_invalidate_empty_session()", + "file_type": "code", + "source_file": "tests/test_cache.py", + "source_location": "L72", + "community": 135, + "norm_label": ".test_invalidate_empty_session()", + "id": "tests_test_cache_testresultcache_test_invalidate_empty_session" }, { - "label": "Frontend (7)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L141", - "community": 207, - "norm_label": "frontend (7)", - "id": "server_code_review_report_frontend_7" + "label": ".test_json_roundtrip()", + "file_type": "code", + "source_file": "tests/test_cache.py", + "source_location": "L76", + "community": 135, + "norm_label": ".test_json_roundtrip()", + "id": "tests_test_cache_testresultcache_test_json_roundtrip" }, { - "label": "P2 \u2014 Nice to Have (27 items)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L159", - "community": 160, - "norm_label": "p2 \u2014 nice to have (27 items)", - "id": "server_code_review_report_p2_nice_to_have_27_items" + "label": "Tests for ResultCache.", + "file_type": "rationale", + "source_file": "tests/test_cache.py", + "source_location": "L1", + "community": 135, + "norm_label": "tests for resultcache.", + "id": "tests_test_cache_rationale_1" }, { - "label": "Priority Matrix", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L173", - "community": 534, - "norm_label": "priority matrix", - "id": "server_code_review_report_priority_matrix" + "label": "test_config_sandbox.py", + "file_type": "code", + "source_file": "tests/test_config_sandbox.py", + "source_location": "L1", + "community": 251, + "norm_label": "test_config_sandbox.py", + "id": "tests_test_config_sandbox_py" }, { - "label": "NOW (P0 \u2014 fix before next release)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L175", - "community": 534, - "norm_label": "now (p0 \u2014 fix before next release)", - "id": "server_code_review_report_now_p0_fix_before_next_release" + "label": "TestSandboxConfig", + "file_type": "code", + "source_file": "tests/test_config_sandbox.py", + "source_location": "L5", + "community": 102, + "norm_label": "testsandboxconfig", + "id": "tests_test_config_sandbox_testsandboxconfig" }, { - "label": "SOON (P1 \u2014 fix within 2 weeks)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L185", - "community": 534, - "norm_label": "soon (p1 \u2014 fix within 2 weeks)", - "id": "server_code_review_report_soon_p1_fix_within_2_weeks" + "label": ".test_sandbox_defaults()", + "file_type": "code", + "source_file": "tests/test_config_sandbox.py", + "source_location": "L6", + "community": 102, + "norm_label": ".test_sandbox_defaults()", + "id": "tests_test_config_sandbox_testsandboxconfig_test_sandbox_defaults" }, { - "label": "LATER (P2 \u2014 when touching these files)", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L195", - "community": 534, - "norm_label": "later (p2 \u2014 when touching these files)", - "id": "server_code_review_report_later_p2_when_touching_these_files" + "label": ".test_sandbox_fields_exist()", + "file_type": "code", + "source_file": "tests/test_config_sandbox.py", + "source_location": "L13", + "community": 102, + "norm_label": ".test_sandbox_fields_exist()", + "id": "tests_test_config_sandbox_testsandboxconfig_test_sandbox_fields_exist" }, { - "label": "What Works Well", - "file_type": "document", - "source_file": "CODE_REVIEW_REPORT.md", - "source_location": "L206", - "community": 160, - "norm_label": "what works well", - "id": "server_code_review_report_what_works_well" + "label": ".test_sandbox_types()", + "file_type": "code", + "source_file": "tests/test_config_sandbox.py", + "source_location": "L21", + "community": 102, + "norm_label": ".test_sandbox_types()", + "id": "tests_test_config_sandbox_testsandboxconfig_test_sandbox_types" }, { - "label": "_downloadModel()", + "label": "_FakeClient", "file_type": "code", - "source_file": "main/utils/models/loader.py", - "source_location": "L11", - "community": 84, - "norm_label": "_downloadmodel()", - "id": "models_loader_downloadmodel" + "source_file": "tests/test_sandbox.py", + "source_location": "L9", + "community": 96, + "norm_label": "_fakeclient", + "id": "tests_test_sandbox_fakeclient" }, { - "label": "getCookie()", + "label": ".__init__()", "file_type": "code", - "source_file": "frontend/src/api.js", - "source_location": "L10", - "community": 5, - "norm_label": "getcookie()", - "id": "src_api_getcookie" + "source_file": "tests/test_sandbox.py", + "source_location": "L12", + "community": 96, + "norm_label": ".__init__()", + "id": "tests_test_sandbox_fakeclient_init" }, { - "label": ".isQuotaExceeded()", + "label": ".set_response()", "file_type": "code", - "source_file": "main/models/stocksapi_key.py", - "source_location": "L21", - "community": 37, - "norm_label": ".isquotaexceeded()", - "id": "models_stocksapi_key_stocksapikey_isquotaexceeded" + "source_file": "tests/test_sandbox.py", + "source_location": "L16", + "community": 96, + "norm_label": ".set_response()", + "id": "tests_test_sandbox_fakeclient_set_response" }, { - "label": ".needsReset()", + "label": ".post()", "file_type": "code", - "source_file": "main/models/stocksapi_key.py", - "source_location": "L24", - "community": 37, - "norm_label": ".needsreset()", - "id": "models_stocksapi_key_stocksapikey_needsreset" + "source_file": "tests/test_sandbox.py", + "source_location": "L19", + "community": 96, + "norm_label": ".post()", + "id": "tests_test_sandbox_fakeclient_post" }, { - "label": ".resetQuota()", + "label": ".get()", "file_type": "code", - "source_file": "main/models/stocksapi_key.py", - "source_location": "L36", - "community": 37, - "norm_label": ".resetquota()", - "id": "models_stocksapi_key_stocksapikey_resetquota" + "source_file": "tests/test_sandbox.py", + "source_location": "L23", + "community": 96, + "norm_label": ".get()", + "id": "tests_test_sandbox_fakeclient_get" }, { - "label": ".incrementUsage()", + "label": ".put()", "file_type": "code", - "source_file": "main/models/stocksapi_key.py", - "source_location": "L40", - "community": 37, - "norm_label": ".incrementusage()", - "id": "models_stocksapi_key_stocksapikey_incrementusage" + "source_file": "tests/test_sandbox.py", + "source_location": "L27", + "community": 96, + "norm_label": ".put()", + "id": "tests_test_sandbox_fakeclient_put" }, { - "label": ".getRemainingQuota()", + "label": ".delete()", "file_type": "code", - "source_file": "main/models/stocksapi_key.py", - "source_location": "L43", - "community": 37, - "norm_label": ".getremainingquota()", - "id": "models_stocksapi_key_stocksapikey_getremainingquota" + "source_file": "tests/test_sandbox.py", + "source_location": "L31", + "community": 96, + "norm_label": ".delete()", + "id": "tests_test_sandbox_fakeclient_delete" }, { - "label": ".toDict()", + "label": ".__aenter__()", "file_type": "code", - "source_file": "main/models/stocksapi_key.py", - "source_location": "L46", - "community": 37, - "norm_label": ".todict()", - "id": "models_stocksapi_key_stocksapikey_todict" + "source_file": "tests/test_sandbox.py", + "source_location": "L35", + "community": 96, + "norm_label": ".__aenter__()", + "id": "tests_test_sandbox_fakeclient_aenter" }, { - "label": ".getRolesList()", + "label": ".__aexit__()", "file_type": "code", - "source_file": "main/models/user.py", - "source_location": "L19", - "community": 61, - "norm_label": ".getroleslist()", - "id": "models_user_user_getroleslist" + "source_file": "tests/test_sandbox.py", + "source_location": "L38", + "community": 96, + "norm_label": ".__aexit__()", + "id": "tests_test_sandbox_fakeclient_aexit" }, { - "label": ".addRole()", + "label": "_ok_response()", "file_type": "code", - "source_file": "main/models/user.py", - "source_location": "L24", - "community": 61, - "norm_label": ".addrole()", - "id": "models_user_user_addrole" + "source_file": "tests/test_sandbox.py", + "source_location": "L42", + "community": 96, + "norm_label": "_ok_response()", + "id": "tests_test_sandbox_ok_response" }, { - "label": ".hasRole()", + "label": "TestSandboxCreate", "file_type": "code", - "source_file": "main/models/user.py", - "source_location": "L32", - "community": 61, - "norm_label": ".hasrole()", - "id": "models_user_user_hasrole" + "source_file": "tests/test_sandbox.py", + "source_location": "L50", + "community": 2, + "norm_label": "testsandboxcreate", + "id": "tests_test_sandbox_testsandboxcreate" }, { - "label": ".toDict()", + "label": "test_create_fallback_id_on_empty_response()", "file_type": "code", - "source_file": "main/models/user.py", - "source_location": "L37", - "community": 61, - "norm_label": ".todict()", - "id": "models_user_user_todict" + "source_file": "tests/test_sandbox.py", + "source_location": "L60", + "community": 96, + "norm_label": "test_create_fallback_id_on_empty_response()", + "id": "tests_test_sandbox_test_create_fallback_id_on_empty_response" }, { - "label": ".getDeviceName()", + "label": "TestSandboxExecute", "file_type": "code", - "source_file": "main/models/user_session.py", - "source_location": "L23", - "community": 44, - "norm_label": ".getdevicename()", - "id": "models_user_session_usersession_getdevicename" + "source_file": "tests/test_sandbox.py", + "source_location": "L68", + "community": 2, + "norm_label": "testsandboxexecute", + "id": "tests_test_sandbox_testsandboxexecute" }, { - "label": "Covers lines 19-20: user not found raises 404.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1258", - "community": 528, - "norm_label": "covers lines 19-20: user not found raises 404.", - "id": "tests_test_controllers_coverage_rationale_1258" + "label": "test_execute_returns_stdout_stderr()", + "file_type": "code", + "source_file": "tests/test_sandbox.py", + "source_location": "L70", + "community": 96, + "norm_label": "test_execute_returns_stdout_stderr()", + "id": "tests_test_sandbox_test_execute_returns_stdout_stderr" }, { - "label": "Covers lines 34, 36-38, 40-44, 46, 48-49, 51, 58-59, 61, 63-67: UserManager.getC", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1270", - "community": 493, - "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_1270" + "label": "test_execute_sends_code_in_body()", + "file_type": "code", + "source_file": "tests/test_sandbox.py", + "source_location": "L79", + "community": 96, + "norm_label": "test_execute_sends_code_in_body()", + "id": "tests_test_sandbox_test_execute_sends_code_in_body" }, { - "label": "Covers lines 36-38, 40-44, 46, 48-49, 51, 58-59, 61: successful user retrieval.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1277", - "community": 493, - "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" + "label": "TestSandboxCheckpoint", + "file_type": "code", + "source_file": "tests/test_sandbox.py", + "source_location": "L87", + "community": 2, + "norm_label": "testsandboxcheckpoint", + "id": "tests_test_sandbox_testsandboxcheckpoint" }, { - "label": "Covers lines 42-44: session validation fails.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1302", - "community": 560, - "norm_label": "covers lines 42-44: session validation fails.", - "id": "tests_test_controllers_coverage_rationale_1302" + "label": "test_checkpoint_returns_checkpoint_id()", + "file_type": "code", + "source_file": "tests/test_sandbox.py", + "source_location": "L89", + "community": 96, + "norm_label": "test_checkpoint_returns_checkpoint_id()", + "id": "tests_test_sandbox_test_checkpoint_returns_checkpoint_id" }, { - "label": "Covers lines 48-49: user not in DB.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1318", - "community": 493, - "norm_label": "covers lines 48-49: user not in db.", - "id": "tests_test_controllers_coverage_rationale_1318" + "label": "TestSandboxRestore", + "file_type": "code", + "source_file": "tests/test_sandbox.py", + "source_location": "L97", + "community": 2, + "norm_label": "testsandboxrestore", + "id": "tests_test_sandbox_testsandboxrestore" }, { - "label": "Covers lines 65-67: unexpected exception.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1335", - "community": 493, - "norm_label": "covers lines 65-67: unexpected exception.", - "id": "tests_test_controllers_coverage_rationale_1335" + "label": "test_restore_returns_new_sandbox_id()", + "file_type": "code", + "source_file": "tests/test_sandbox.py", + "source_location": "L99", + "community": 96, + "norm_label": "test_restore_returns_new_sandbox_id()", + "id": "tests_test_sandbox_test_restore_returns_new_sandbox_id" }, { - "label": "Covers lines 37-38, 46, 51, 58 (sessionId is None): skips session validation.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1352", - "community": 493, - "norm_label": "covers lines 37-38, 46, 51, 58 (sessionid is none): skips session validation.", - "id": "tests_test_controllers_coverage_rationale_1352" + "label": "TestSandboxUploadFile", + "file_type": "code", + "source_file": "tests/test_sandbox.py", + "source_location": "L107", + "community": 2, + "norm_label": "testsandboxuploadfile", + "id": "tests_test_sandbox_testsandboxuploadfile" }, { - "label": "Covers line 16: empty password raises ValueError.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1376", - "community": 524, - "norm_label": "covers line 16: empty password raises valueerror.", - "id": "tests_test_controllers_coverage_rationale_1376" + "label": "test_upload_file_returns_true_on_success()", + "file_type": "code", + "source_file": "tests/test_sandbox.py", + "source_location": "L109", + "community": 96, + "norm_label": "test_upload_file_returns_true_on_success()", + "id": "tests_test_sandbox_test_upload_file_returns_true_on_success" }, { - "label": "Covers lines 45-51: verifyAccessToken with expired and invalid tokens.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1386", - "community": 524, - "norm_label": "covers lines 45-51: verifyaccesstoken with expired and invalid tokens.", - "id": "tests_test_controllers_coverage_rationale_1386" + "label": "test_upload_file_returns_false_on_error()", + "file_type": "code", + "source_file": "tests/test_sandbox.py", + "source_location": "L117", + "community": 96, + "norm_label": "test_upload_file_returns_false_on_error()", + "id": "tests_test_sandbox_test_upload_file_returns_false_on_error" }, { - "label": "Covers lines 48-49: jwt.ExpiredSignatureError.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1389", - "community": 493, - "norm_label": "covers lines 48-49: jwt.expiredsignatureerror.", - "id": "tests_test_controllers_coverage_rationale_1389" + "label": "TestSandboxReadFile", + "file_type": "code", + "source_file": "tests/test_sandbox.py", + "source_location": "L125", + "community": 2, + "norm_label": "testsandboxreadfile", + "id": "tests_test_sandbox_testsandboxreadfile" }, { - "label": "Covers lines 50-51: jwt.InvalidTokenError.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1405", - "community": 544, - "norm_label": "covers lines 50-51: jwt.invalidtokenerror.", - "id": "tests_test_controllers_coverage_rationale_1405" + "label": "test_read_file_returns_content()", + "file_type": "code", + "source_file": "tests/test_sandbox.py", + "source_location": "L127", + "community": 96, + "norm_label": "test_read_file_returns_content()", + "id": "tests_test_sandbox_test_read_file_returns_content" }, { - "label": "Covers line 67: extractTokenPayload re-raises HTTPException from verifyAccessTok", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1417", - "community": 498, - "norm_label": "covers line 67: extracttokenpayload re-raises httpexception from verifyaccesstok", - "id": "tests_test_controllers_coverage_rationale_1417" + "label": "TestSandboxDestroy", + "file_type": "code", + "source_file": "tests/test_sandbox.py", + "source_location": "L135", + "community": 2, + "norm_label": "testsandboxdestroy", + "id": "tests_test_sandbox_testsandboxdestroy" }, { - "label": "Covers line 67: HTTPException raised by verifyAccessToken is re-raised.", + "label": "test_destroy_calls_delete()", + "file_type": "code", + "source_file": "tests/test_sandbox.py", + "source_location": "L137", + "community": 96, + "norm_label": "test_destroy_calls_delete()", + "id": "tests_test_sandbox_test_destroy_calls_delete" + }, + { + "label": "Unit tests for SandboxManager \u2014 HTTP calls mocked via a fake client class.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1420", - "community": 114, - "norm_label": "covers line 67: httpexception raised by verifyaccesstoken is re-raised.", - "id": "tests_test_controllers_coverage_rationale_1420" + "source_file": "tests/test_sandbox.py", + "source_location": "L1", + "community": 2, + "norm_label": "unit tests for sandboxmanager \u2014 http calls mocked via a fake client class.", + "id": "tests_test_sandbox_rationale_1" }, { - "label": "Covers line 13: UserManager.__init__.", + "label": "Fake httpx.AsyncClient that records calls and returns pre-set responses.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1436", - "community": 498, - "norm_label": "covers line 13: usermanager.__init__.", - "id": "tests_test_controllers_coverage_rationale_1436" + "source_file": "tests/test_sandbox.py", + "source_location": "L10", + "community": 96, + "norm_label": "fake httpx.asyncclient that records calls and returns pre-set responses.", + "id": "tests_test_sandbox_rationale_10" }, { - "label": "test_callback_sets_readable_cookie_for_frontend()", + "label": ".test_read_sandbox_file_in_registry()", "file_type": "code", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L131", - "community": 40, - "norm_label": "test_callback_sets_readable_cookie_for_frontend()", - "id": "tests_test_oauth_cookie_security_test_callback_sets_readable_cookie_for_frontend" + "source_file": "tests/test_sandbox_tools.py", + "source_location": "L12", + "community": 222, + "norm_label": ".test_read_sandbox_file_in_registry()", + "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_read_sandbox_file_in_registry" }, { - "label": "test_frontend_can_read_token_from_cookie()", + "label": ".test_check_cache_in_registry()", "file_type": "code", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L216", - "community": 40, - "norm_label": "test_frontend_can_read_token_from_cookie()", - "id": "tests_test_oauth_cookie_security_test_frontend_can_read_token_from_cookie" + "source_file": "tests/test_sandbox_tools.py", + "source_location": "L15", + "community": 222, + "norm_label": ".test_check_cache_in_registry()", + "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_check_cache_in_registry" }, { - "label": "Return (client, app, mock_session) for testing Google callback.", - "file_type": "rationale", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L19", - "community": 40, - "norm_label": "return (client, app, mock_session) for testing google callback.", - "id": "tests_test_oauth_cookie_security_rationale_19" + "label": ".test_read_sandbox_file_has_docstring()", + "file_type": "code", + "source_file": "tests/test_sandbox_tools.py", + "source_location": "L23", + "community": 222, + "norm_label": ".test_read_sandbox_file_has_docstring()", + "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_read_sandbox_file_has_docstring" }, { - "label": "Helper to setup common mock values for callback tests.", - "file_type": "rationale", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L34", - "community": 40, - "norm_label": "helper to setup common mock values for callback tests.", - "id": "tests_test_oauth_cookie_security_rationale_34" + "label": ".test_check_cache_has_docstring()", + "file_type": "code", + "source_file": "tests/test_sandbox_tools.py", + "source_location": "L28", + "community": 222, + "norm_label": ".test_check_cache_has_docstring()", + "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_check_cache_has_docstring" }, { - "label": "Verify JWT token is NOT leaked in redirect URL after OAuth callback.", - "file_type": "rationale", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L58", - "community": 40, - "norm_label": "verify jwt token is not leaked in redirect url after oauth callback.", - "id": "tests_test_oauth_cookie_security_rationale_58" + "label": "TestCheckCache", + "file_type": "code", + "source_file": "tests/test_sandbox_tools.py", + "source_location": "L34", + "community": 49, + "norm_label": "testcheckcache", + "id": "tests_test_sandbox_tools_testcheckcache" }, { - "label": "RED TEST: Token should NOT appear in redirect URL query parameters.", - "file_type": "rationale", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L67", - "community": 365, - "norm_label": "red test: token should not appear in redirect url query parameters.", - "id": "tests_test_oauth_cookie_security_rationale_67" + "label": "test_check_cache_hit()", + "file_type": "code", + "source_file": "tests/test_sandbox_tools.py", + "source_location": "L36", + "community": 49, + "norm_label": "test_check_cache_hit()", + "id": "tests_test_sandbox_tools_test_check_cache_hit" }, { - "label": "Cookie must be httponly (not accessible via JavaScript).", - "file_type": "rationale", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L102", - "community": 366, - "norm_label": "cookie must be httponly (not accessible via javascript).", - "id": "tests_test_oauth_cookie_security_rationale_102" + "label": "test_check_cache_miss()", + "file_type": "code", + "source_file": "tests/test_sandbox_tools.py", + "source_location": "L44", + "community": 49, + "norm_label": "test_check_cache_miss()", + "id": "tests_test_sandbox_tools_test_check_cache_miss" }, { - "label": "A readable cookie must be set for frontend JavaScript to access.", - "file_type": "rationale", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L134", - "community": 367, - "norm_label": "a readable cookie must be set for frontend javascript to access.", - "id": "tests_test_oauth_cookie_security_rationale_134" + "label": "test_check_cache_no_cache()", + "file_type": "code", + "source_file": "tests/test_sandbox_tools.py", + "source_location": "L51", + "community": 49, + "norm_label": "test_check_cache_no_cache()", + "id": "tests_test_sandbox_tools_test_check_cache_no_cache" }, { - "label": "Both cookies should have secure flag (HTTPS only).", - "file_type": "rationale", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L158", - "community": 368, - "norm_label": "both cookies should have secure flag (https only).", - "id": "tests_test_oauth_cookie_security_rationale_158" + "label": "test_dispatch_execute_code_routes_to_registry()", + "file_type": "code", + "source_file": "tests/test_sandbox_tools.py", + "source_location": "L59", + "community": 49, + "norm_label": "test_dispatch_execute_code_routes_to_registry()", + "id": "tests_test_sandbox_tools_test_dispatch_execute_code_routes_to_registry" }, { - "label": "When no state param, return JSON response (not redirect).", - "file_type": "rationale", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L190", - "community": 369, - "norm_label": "when no state param, return json response (not redirect).", - "id": "tests_test_oauth_cookie_security_rationale_190" + "label": "test_streamMessage_premium_creates_sandbox_on_execute_code()", + "file_type": "code", + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L93", + "community": 24, + "norm_label": "test_streammessage_premium_creates_sandbox_on_execute_code()", + "id": "tests_test_agent_sandbox_integration_test_streammessage_premium_creates_sandbox_on_execute_code" }, { - "label": "Verify frontend can still get token after OAuth redirect.", - "file_type": "rationale", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L210", - "community": 40, - "norm_label": "verify frontend can still get token after oauth redirect.", - "id": "tests_test_oauth_cookie_security_rationale_210" + "label": "test_streamMessage_non_premium_blocks_sandbox()", + "file_type": "code", + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L150", + "community": 24, + "norm_label": "test_streammessage_non_premium_blocks_sandbox()", + "id": "tests_test_agent_sandbox_integration_test_streammessage_non_premium_blocks_sandbox" }, { - "label": "Frontend JavaScript should be able to read token from readable cookie.", + "label": "streamMessage should create a HarnessState and pass it to buildSystemPrompt.", "file_type": "rationale", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L219", - "community": 40, - "norm_label": "frontend javascript should be able to read token from readable cookie.", - "id": "tests_test_oauth_cookie_security_rationale_219" + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L85", + "community": 355, + "norm_label": "streammessage should create a harnessstate and pass it to buildsystemprompt.", + "id": "tests_test_agent_state_integration_rationale_85" }, { - "label": "Verify /auth/google passes redirect URL as state parameter.", + "label": "streamMessage should pass state to dispatchToolCall.", "file_type": "rationale", - "source_file": "tests/test_sso_state_cookie.py", - "source_location": "L43", - "community": 18, - "norm_label": "verify /auth/google passes redirect url as state parameter.", - "id": "tests_test_sso_state_cookie_rationale_43" + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L125", + "community": 356, + "norm_label": "streammessage should pass state to dispatchtoolcall.", + "id": "tests_test_agent_state_integration_rationale_125" }, { - "label": "State should be the redirect URL directly.", + "label": "System prompt should instruct LLM about harness state usage.", "file_type": "rationale", - "source_file": "tests/test_sso_state_cookie.py", - "source_location": "L46", - "community": 18, - "norm_label": "state should be the redirect url directly.", - "id": "tests_test_sso_state_cookie_rationale_46" + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L185", + "community": 93, + "norm_label": "system prompt should instruct llm about harness state usage.", + "id": "tests_test_agent_state_integration_rationale_185" }, { - "label": "Without redirect_url, state should be None.", + "label": "System prompt should instruct LLM about memory vs state.", "file_type": "rationale", - "source_file": "tests/test_sso_state_cookie.py", - "source_location": "L69", - "community": 18, - "norm_label": "without redirect_url, state should be none.", - "id": "tests_test_sso_state_cookie_rationale_69" + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L194", + "community": 93, + "norm_label": "system prompt should instruct llm about memory vs state.", + "id": "tests_test_agent_state_integration_rationale_194" }, { - "label": "The /google endpoint should NOT set sso_redirect cookie.", - "file_type": "rationale", - "source_file": "tests/test_sso_state_cookie.py", - "source_location": "L89", - "community": 18, - "norm_label": "the /google endpoint should not set sso_redirect cookie.", - "id": "tests_test_sso_state_cookie_rationale_89" + "label": "context.py", + "file_type": "code", + "source_file": "main/app/prometheus/context.py", + "source_location": "L1", + "community": 32, + "norm_label": "context.py", + "id": "main_app_prometheus_context_py" }, { - "label": "Verify callback uses state param directly as redirect URL.", - "file_type": "rationale", - "source_file": "tests/test_sso_state_cookie.py", - "source_location": "L115", - "community": 18, - "norm_label": "verify callback uses state param directly as redirect url.", - "id": "tests_test_sso_state_cookie_rationale_115" + "label": "ToolContext", + "file_type": "code", + "source_file": "main/app/prometheus/context.py", + "source_location": "L13", + "community": 32, + "norm_label": "toolcontext", + "id": "prometheus_context_toolcontext" }, { - "label": "On success, redirect to URL from state param.", - "file_type": "rationale", - "source_file": "tests/test_sso_state_cookie.py", - "source_location": "L118", - "community": 18, - "norm_label": "on success, redirect to url from state param.", - "id": "tests_test_sso_state_cookie_rationale_118" + "label": ".__post_init__()", + "file_type": "code", + "source_file": "main/app/prometheus/context.py", + "source_location": "L22", + "community": 32, + "norm_label": ".__post_init__()", + "id": "prometheus_context_toolcontext_post_init" }, { - "label": "When state has no URL, return JSON.", - "file_type": "rationale", - "source_file": "tests/test_sso_state_cookie.py", - "source_location": "L162", - "community": 18, - "norm_label": "when state has no url, return json.", - "id": "tests_test_sso_state_cookie_rationale_162" + "label": "test_context.py", + "file_type": "code", + "source_file": "tests/test_context.py", + "source_location": "L1", + "community": 32, + "norm_label": "test_context.py", + "id": "tests_test_context_py" }, { - "label": "Verify SSOLoginError returns 401, not 500.", - "file_type": "rationale", - "source_file": "tests/test_sso_state_cookie.py", - "source_location": "L205", - "community": 18, - "norm_label": "verify ssologinerror returns 401, not 500.", - "id": "tests_test_sso_state_cookie_rationale_205" + "label": "TestToolContextCreation", + "file_type": "code", + "source_file": "tests/test_context.py", + "source_location": "L9", + "community": 32, + "norm_label": "testtoolcontextcreation", + "id": "tests_test_context_testtoolcontextcreation" }, { - "label": "Stale sso_state cookie must produce 401, not 500.", - "file_type": "rationale", - "source_file": "tests/test_sso_state_cookie.py", - "source_location": "L208", - "community": 18, - "norm_label": "stale sso_state cookie must produce 401, not 500.", - "id": "tests_test_sso_state_cookie_rationale_208" + "label": ".test_empty_context()", + "file_type": "code", + "source_file": "tests/test_context.py", + "source_location": "L10", + "community": 32, + "norm_label": ".test_empty_context()", + "id": "tests_test_context_testtoolcontextcreation_test_empty_context" }, { - "label": "Verify state parameter survives URL encoding round-trip.", - "file_type": "rationale", - "source_file": "tests/test_sso_state_cookie.py", - "source_location": "L239", - "community": 18, - "norm_label": "verify state parameter survives url encoding round-trip.", - "id": "tests_test_sso_state_cookie_rationale_239" + "label": ".test_full_context()", + "file_type": "code", + "source_file": "tests/test_context.py", + "source_location": "L20", + "community": 32, + "norm_label": ".test_full_context()", + "id": "tests_test_context_testtoolcontextcreation_test_full_context" }, { - "label": "State with URL characters should survive round-trip through OAuth URL.", - "file_type": "rationale", - "source_file": "tests/test_sso_state_cookie.py", - "source_location": "L242", - "community": 18, - "norm_label": "state with url characters should survive round-trip through oauth url.", - "id": "tests_test_sso_state_cookie_rationale_242" + "label": ".test_extracts_user_id_from_user_dict()", + "file_type": "code", + "source_file": "tests/test_context.py", + "source_location": "L44", + "community": 32, + "norm_label": ".test_extracts_user_id_from_user_dict()", + "id": "tests_test_context_testtoolcontextcreation_test_extracts_user_id_from_user_dict" }, { - "label": "archiveDead()", + "label": ".test_user_id_override()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L197", - "community": 53, - "norm_label": "archivedead()", - "id": "prometheus_memory_archivedead" + "source_file": "tests/test_context.py", + "source_location": "L49", + "community": 32, + "norm_label": ".test_user_id_override()", + "id": "tests_test_context_testtoolcontextcreation_test_user_id_override" }, { - "label": "makeChat must include MEMORY_TOOLS alongside MCP sessions.", - "file_type": "rationale", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L56", - "community": 49, - "norm_label": "makechat must include memory_tools alongside mcp sessions.", - "id": "tests_test_memory_tools_wiring_rationale_56" + "label": ".test_user_id_none_when_no_user()", + "file_type": "code", + "source_file": "tests/test_context.py", + "source_location": "L55", + "community": 32, + "norm_label": ".test_user_id_none_when_no_user()", + "id": "tests_test_context_testtoolcontextcreation_test_user_id_none_when_no_user" }, { - "label": "dispatchToolCall must route memory tool names to executeMemoryTool.", - "file_type": "rationale", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L91", - "community": 49, - "norm_label": "dispatchtoolcall must route memory tool names to executememorytool.", - "id": "tests_test_memory_tools_wiring_rationale_91" + "label": ".test_user_id_none_when_user_has_no_id()", + "file_type": "code", + "source_file": "tests/test_context.py", + "source_location": "L59", + "community": 32, + "norm_label": ".test_user_id_none_when_user_has_no_id()", + "id": "tests_test_context_testtoolcontextcreation_test_user_id_none_when_user_has_no_id" }, { - "label": "vector.py", + "label": "TestToolContextStateAccess", "file_type": "code", - "source_file": "main/utils/vector.py", - "source_location": "L1", - "community": 131, - "norm_label": "vector.py", - "id": "main_utils_vector_py" + "source_file": "tests/test_context.py", + "source_location": "L64", + "community": 32, + "norm_label": "testtoolcontextstateaccess", + "id": "tests_test_context_testtoolcontextstateaccess" }, { - "label": "batchCosineSimilarity()", + "label": ".test_state_get()", "file_type": "code", - "source_file": "main/utils/vector.py", - "source_location": "L8", - "community": 13, - "norm_label": "batchcosinesimilarity()", - "id": "utils_vector_batchcosinesimilarity" + "source_file": "tests/test_context.py", + "source_location": "L65", + "community": 32, + "norm_label": ".test_state_get()", + "id": "tests_test_context_testtoolcontextstateaccess_test_state_get" }, { - "label": "contentHash()", + "label": ".test_state_set()", "file_type": "code", - "source_file": "main/utils/vector.py", - "source_location": "L20", - "community": 131, - "norm_label": "contenthash()", - "id": "utils_vector_contenthash" + "source_file": "tests/test_context.py", + "source_location": "L71", + "community": 32, + "norm_label": ".test_state_set()", + "id": "tests_test_context_testtoolcontextstateaccess_test_state_set" }, { - "label": "getRelevanceScore()", + "label": ".test_state_toDict()", "file_type": "code", - "source_file": "main/utils/vector.py", - "source_location": "L24", - "community": 27, - "norm_label": "getrelevancescore()", - "id": "utils_vector_getrelevancescore" + "source_file": "tests/test_context.py", + "source_location": "L77", + "community": 32, + "norm_label": ".test_state_todict()", + "id": "tests_test_context_testtoolcontextstateaccess_test_state_toDict" }, { - "label": "Compute relevance as baseScore * timeDecay(lastAccessedAt). Logarithmic dec", - "file_type": "rationale", - "source_file": "main/utils/vector.py", - "source_location": "L25", - "community": 27, - "norm_label": "compute relevance as basescore * timedecay(lastaccessedat). logarithmic dec", - "id": "utils_vector_rationale_25" + "label": "TestToolContextMcpClients", + "file_type": "code", + "source_file": "tests/test_context.py", + "source_location": "L85", + "community": 32, + "norm_label": "testtoolcontextmcpclients", + "id": "tests_test_context_testtoolcontextmcpclients" }, { - "label": "memory-system-pandas-plan.md", - "file_type": "document", - "source_file": "PLANS/memory-system-pandas-plan.md", - "source_location": "L1", - "community": 66, - "norm_label": "memory-system-pandas-plan.md", - "id": "plans_memory_system_pandas_plan_md" + "label": ".test_mcp_clients_isolation()", + "file_type": "code", + "source_file": "tests/test_context.py", + "source_location": "L86", + "community": 32, + "norm_label": ".test_mcp_clients_isolation()", + "id": "tests_test_context_testtoolcontextmcpclients_test_mcp_clients_isolation" }, { - "label": "Plan: Memory System with Pandas-First Vector Search", - "file_type": "document", - "source_file": "PLANS/memory-system-pandas-plan.md", - "source_location": "L1", - "community": 66, - "norm_label": "plan: memory system with pandas-first vector search", - "id": "plans_memory_system_pandas_plan_plan_memory_system_with_pandas_first_vector_search" + "label": ".test_mcp_clients_passed_through()", + "file_type": "code", + "source_file": "tests/test_context.py", + "source_location": "L93", + "community": 32, + "norm_label": ".test_mcp_clients_passed_through()", + "id": "tests_test_context_testtoolcontextmcpclients_test_mcp_clients_passed_through" }, { - "label": "Goal", - "file_type": "document", - "source_file": "PLANS/memory-system-pandas-plan.md", - "source_location": "L3", - "community": 66, - "norm_label": "goal", - "id": "plans_memory_system_pandas_plan_goal" + "label": "TestToolContextDataclass", + "file_type": "code", + "source_file": "tests/test_context.py", + "source_location": "L99", + "community": 32, + "norm_label": "testtoolcontextdataclass", + "id": "tests_test_context_testtoolcontextdataclass" }, { - "label": "Subagent Research Summary", - "file_type": "document", - "source_file": "PLANS/memory-system-pandas-plan.md", - "source_location": "L7", - "community": 66, - "norm_label": "subagent research summary", - "id": "plans_memory_system_pandas_plan_subagent_research_summary" + "label": ".test_is_dataclass()", + "file_type": "code", + "source_file": "tests/test_context.py", + "source_location": "L100", + "community": 32, + "norm_label": ".test_is_dataclass()", + "id": "tests_test_context_testtoolcontextdataclass_test_is_dataclass" }, { - "label": "1. Explore Agent \u2014 Prometheus Architecture", - "file_type": "document", - "source_file": "PLANS/memory-system-pandas-plan.md", - "source_location": "L9", - "community": 66, - "norm_label": "1. explore agent \u2014 prometheus architecture", - "id": "plans_memory_system_pandas_plan_1_explore_agent_prometheus_architecture" + "label": ".test_equality()", + "file_type": "code", + "source_file": "tests/test_context.py", + "source_location": "L114", + "community": 32, + "norm_label": ".test_equality()", + "id": "tests_test_context_testtoolcontextdataclass_test_equality" }, { - "label": "2. MySQL Vector Storage (Researcher)", - "file_type": "document", - "source_file": "PLANS/memory-system-pandas-plan.md", - "source_location": "L16", - "community": 66, - "norm_label": "2. mysql vector storage (researcher)", - "id": "plans_memory_system_pandas_plan_2_mysql_vector_storage_researcher" + "label": "Unit tests for ToolContext dataclass.", + "file_type": "rationale", + "source_file": "tests/test_context.py", + "source_location": "L1", + "community": 32, + "norm_label": "unit tests for toolcontext dataclass.", + "id": "tests_test_context_rationale_1" }, { - "label": "3. Memory Patterns (Researcher)", - "file_type": "document", - "source_file": "PLANS/memory-system-pandas-plan.md", - "source_location": "L25", - "community": 66, - "norm_label": "3. memory patterns (researcher)", - "id": "plans_memory_system_pandas_plan_3_memory_patterns_researcher" + "label": "Explicit userId takes precedence over user dict.", + "file_type": "rationale", + "source_file": "tests/test_context.py", + "source_location": "L50", + "community": 32, + "norm_label": "explicit userid takes precedence over user dict.", + "id": "tests_test_context_rationale_50" }, { - "label": "Current State", - "file_type": "document", - "source_file": "PLANS/memory-system-pandas-plan.md", - "source_location": "L32", - "community": 66, - "norm_label": "current state", - "id": "plans_memory_system_pandas_plan_current_state" + "label": "Two contexts share no mutable defaults.", + "file_type": "rationale", + "source_file": "tests/test_context.py", + "source_location": "L87", + "community": 32, + "norm_label": "two contexts share no mutable defaults.", + "id": "tests_test_context_rationale_87" }, { - "label": "What's Missing / Needs Change", - "file_type": "document", - "source_file": "PLANS/memory-system-pandas-plan.md", - "source_location": "L43", - "community": 66, - "norm_label": "what's missing / needs change", - "id": "plans_memory_system_pandas_plan_what_s_missing_needs_change" + "label": "Dataclass equality works out of the box.", + "file_type": "rationale", + "source_file": "tests/test_context.py", + "source_location": "L115", + "community": 32, + "norm_label": "dataclass equality works out of the box.", + "id": "tests_test_context_rationale_115" }, { - "label": "A. Vector Embedding Integration", - "file_type": "document", - "source_file": "PLANS/memory-system-pandas-plan.md", - "source_location": "L45", - "community": 66, - "norm_label": "a. vector embedding integration", - "id": "plans_memory_system_pandas_plan_a_vector_embedding_integration" + "label": "._cache_path()", + "file_type": "code", + "source_file": "main/app/prometheus/cache.py", + "source_location": "L19", + "community": 110, + "norm_label": "._cache_path()", + "id": "prometheus_cache_resultcache_cache_path" }, { - "label": "B. Pandas-First Vector Cache", - "file_type": "document", - "source_file": "PLANS/memory-system-pandas-plan.md", - "source_location": "L54", - "community": 66, - "norm_label": "b. pandas-first vector cache", - "id": "plans_memory_system_pandas_plan_b_pandas_first_vector_cache" + "label": "ResultCache \u2014 SHA256-keyed file-based cache for computed results.", + "file_type": "rationale", + "source_file": "main/app/prometheus/cache.py", + "source_location": "L1", + "community": 110, + "norm_label": "resultcache \u2014 sha256-keyed file-based cache for computed results.", + "id": "prometheus_cache_rationale_1" }, { - "label": "code:python (class MemoryCache:)", - "file_type": "document", - "source_file": "PLANS/memory-system-pandas-plan.md", - "source_location": "L60", - "community": 66, - "norm_label": "code:python (class memorycache:)", - "id": "plans_memory_system_pandas_plan_codeblock_1" + "label": "File-based cache keyed by SHA256 of code. Stores results as JSON under:", + "file_type": "rationale", + "source_file": "main/app/prometheus/cache.py", + "source_location": "L10", + "community": 110, + "norm_label": "file-based cache keyed by sha256 of code. stores results as json under:", + "id": "prometheus_cache_rationale_10" }, { - "label": "C. Search Upgrade", - "file_type": "document", - "source_file": "PLANS/memory-system-pandas-plan.md", - "source_location": "L123", - "community": 66, - "norm_label": "c. search upgrade", - "id": "plans_memory_system_pandas_plan_c_search_upgrade" + "label": "Return cached result dict or None if miss.", + "file_type": "rationale", + "source_file": "main/app/prometheus/cache.py", + "source_location": "L24", + "community": 110, + "norm_label": "return cached result dict or none if miss.", + "id": "prometheus_cache_rationale_24" }, { - "label": "code:python (def searchMemories(cls, db, userId, query, embedding=None, l)", - "file_type": "document", - "source_file": "PLANS/memory-system-pandas-plan.md", - "source_location": "L131", - "community": 66, - "norm_label": "code:python (def searchmemories(cls, db, userid, query, embedding=none, l)", - "id": "plans_memory_system_pandas_plan_codeblock_2" + "label": "Store result with timestamp.", + "file_type": "rationale", + "source_file": "main/app/prometheus/cache.py", + "source_location": "L31", + "community": 110, + "norm_label": "store result with timestamp.", + "id": "prometheus_cache_rationale_31" }, { - "label": "D. Memory Extraction", - "file_type": "document", - "source_file": "PLANS/memory-system-pandas-plan.md", - "source_location": "L151", - "community": 66, - "norm_label": "d. memory extraction", - "id": "plans_memory_system_pandas_plan_d_memory_extraction" + "label": "Delete all cached results for a session.", + "file_type": "rationale", + "source_file": "main/app/prometheus/cache.py", + "source_location": "L42", + "community": 110, + "norm_label": "delete all cached results for a session.", + "id": "prometheus_cache_rationale_42" }, { - "label": "E. System Prompt Injection", - "file_type": "document", - "source_file": "PLANS/memory-system-pandas-plan.md", - "source_location": "L160", - "community": 66, - "norm_label": "e. system prompt injection", - "id": "plans_memory_system_pandas_plan_e_system_prompt_injection" + "label": "Check if a result exists for the given code.", + "file_type": "rationale", + "source_file": "main/app/prometheus/cache.py", + "source_location": "L50", + "community": 110, + "norm_label": "check if a result exists for the given code.", + "id": "prometheus_cache_rationale_50" }, { - "label": "Implementation Order", - "file_type": "document", - "source_file": "PLANS/memory-system-pandas-plan.md", - "source_location": "L166", - "community": 66, - "norm_label": "implementation order", - "id": "plans_memory_system_pandas_plan_implementation_order" + "label": "ToolContext \u2014 bundles all dependencies for tool execution. Replace passing user", + "file_type": "rationale", + "source_file": "main/app/prometheus/context.py", + "source_location": "L1", + "community": 32, + "norm_label": "toolcontext \u2014 bundles all dependencies for tool execution. replace passing user", + "id": "prometheus_context_rationale_1" }, { - "label": "Files to Create/Modify", - "file_type": "document", - "source_file": "PLANS/memory-system-pandas-plan.md", - "source_location": "L182", - "community": 66, - "norm_label": "files to create/modify", - "id": "plans_memory_system_pandas_plan_files_to_create_modify" + "label": "Single dependency bundle for tool execution. Created once per request in ag", + "file_type": "rationale", + "source_file": "main/app/prometheus/context.py", + "source_location": "L22", + "community": 32, + "norm_label": "single dependency bundle for tool execution. created once per request in ag", + "id": "prometheus_context_rationale_22" }, { - "label": "Key Risks", - "file_type": "document", - "source_file": "PLANS/memory-system-pandas-plan.md", - "source_location": "L194", - "community": 66, - "norm_label": "key risks", - "id": "plans_memory_system_pandas_plan_key_risks" + "label": "Extract userId from user dict if not explicitly set.", + "file_type": "rationale", + "source_file": "main/app/prometheus/context.py", + "source_location": "L38", + "community": 32, + "norm_label": "extract userid from user dict if not explicitly set.", + "id": "prometheus_context_rationale_38" }, { - "label": "Success Criteria", - "file_type": "document", - "source_file": "PLANS/memory-system-pandas-plan.md", - "source_location": "L201", - "community": 66, - "norm_label": "success criteria", - "id": "plans_memory_system_pandas_plan_success_criteria" + "label": ".log()", + "file_type": "code", + "source_file": "main/app/prometheus/events.py", + "source_location": "L16", + "community": 12, + "norm_label": ".log()", + "id": "prometheus_events_looplogger_log" }, { - "label": "remove-memory-endpoints.md", - "file_type": "document", - "source_file": "PLANS/remove-memory-endpoints.md", + "label": "LoopLogger \u2014 batched event logging for observable agent loops.", + "file_type": "rationale", + "source_file": "main/app/prometheus/events.py", "source_location": "L1", - "community": 159, - "norm_label": "remove-memory-endpoints.md", - "id": "plans_remove_memory_endpoints_md" + "community": 12, + "norm_label": "looplogger \u2014 batched event logging for observable agent loops.", + "id": "prometheus_events_rationale_1" }, { - "label": "Plan: Remove /memories Endpoints \u2014 Memory via Agent Tools Only", - "file_type": "document", - "source_file": "PLANS/remove-memory-endpoints.md", - "source_location": "L1", - "community": 159, - "norm_label": "plan: remove /memories endpoints \u2014 memory via agent tools only", - "id": "plans_remove_memory_endpoints_plan_remove_memories_endpoints_memory_via_agent_tools_only" + "label": "Queue events during a loop, flush to DB at end.", + "file_type": "rationale", + "source_file": "main/app/prometheus/events.py", + "source_location": "L10", + "community": 12, + "norm_label": "queue events during a loop, flush to db at end.", + "id": "prometheus_events_rationale_10" }, { - "label": "Current state", - "file_type": "document", - "source_file": "PLANS/remove-memory-endpoints.md", - "source_location": "L3", - "community": 159, - "norm_label": "current state", - "id": "plans_remove_memory_endpoints_current_state" + "label": "Log a generic event with optional metadata.", + "file_type": "rationale", + "source_file": "main/app/prometheus/events.py", + "source_location": "L38", + "community": 12, + "norm_label": "log a generic event with optional metadata.", + "id": "prometheus_events_rationale_38" }, { - "label": "What to remove", - "file_type": "document", - "source_file": "PLANS/remove-memory-endpoints.md", - "source_location": "L14", - "community": 159, - "norm_label": "what to remove", - "id": "plans_remove_memory_endpoints_what_to_remove" + "label": "Log a tool invocation.", + "file_type": "rationale", + "source_file": "main/app/prometheus/events.py", + "source_location": "L44", + "community": 12, + "norm_label": "log a tool invocation.", + "id": "prometheus_events_rationale_44" }, { - "label": "What stays", - "file_type": "document", - "source_file": "PLANS/remove-memory-endpoints.md", - "source_location": "L22", - "community": 159, - "norm_label": "what stays", - "id": "plans_remove_memory_endpoints_what_stays" + "label": "Log end of a turn with timing.", + "file_type": "rationale", + "source_file": "main/app/prometheus/events.py", + "source_location": "L52", + "community": 12, + "norm_label": "log end of a turn with timing.", + "id": "prometheus_events_rationale_52" }, { - "label": "Security benefits", - "file_type": "document", - "source_file": "PLANS/remove-memory-endpoints.md", - "source_location": "L33", - "community": 159, - "norm_label": "security benefits", - "id": "plans_remove_memory_endpoints_security_benefits" + "label": "_base_url()", + "file_type": "code", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L19", + "community": 69, + "norm_label": "_base_url()", + "id": "prometheus_sandbox_base_url" }, { - "label": "Changes", - "file_type": "document", - "source_file": "PLANS/remove-memory-endpoints.md", - "source_location": "L43", - "community": 159, - "norm_label": "changes", - "id": "plans_remove_memory_endpoints_changes" + "label": "SandboxManager \u2014 on-demand CubeSandbox (E2B-compatible) microVM manager. Lifecy", + "file_type": "rationale", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L1", + "community": 69, + "norm_label": "sandboxmanager \u2014 on-demand cubesandbox (e2b-compatible) microvm manager. lifecy", + "id": "prometheus_sandbox_rationale_1" }, { - "label": "Implementation", - "file_type": "document", - "source_file": "PLANS/remove-memory-endpoints.md", - "source_location": "L49", - "community": 159, - "norm_label": "implementation", - "id": "plans_remove_memory_endpoints_implementation" + "label": "Thin async wrapper around the CubeSandbox/E2B HTTP API. All methods are sta", + "file_type": "rationale", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L24", + "community": 2, + "norm_label": "thin async wrapper around the cubesandbox/e2b http api. all methods are sta", + "id": "prometheus_sandbox_rationale_24" }, { - "label": "Total: ~15 min", - "file_type": "document", - "source_file": "PLANS/remove-memory-endpoints.md", - "source_location": "L55", - "community": 159, - "norm_label": "total: ~15 min", - "id": "plans_remove_memory_endpoints_total_15_min" + "label": "Create a sandbox and return its ID.", + "file_type": "rationale", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L31", + "community": 357, + "norm_label": "create a sandbox and return its id.", + "id": "prometheus_sandbox_rationale_31" }, { - "label": "_now()", - "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L16", - "community": 53, - "norm_label": "_now()", - "id": "prometheus_memory_now" + "label": "Execute Python code inside the sandbox. Returns {stdout, stderr}.", + "file_type": "rationale", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L50", + "community": 358, + "norm_label": "execute python code inside the sandbox. returns {stdout, stderr}.", + "id": "prometheus_sandbox_rationale_50" }, { - "label": "makeChat must include MEMORY_TOOLS alongside MCP sessions.", + "label": "Snapshot sandbox state via CubeCoW. Returns checkpoint ID.", "file_type": "rationale", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L48", - "community": 49, - "norm_label": "makechat must include memory_tools alongside mcp sessions.", - "id": "tests_test_memory_tools_wiring_rationale_48" + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L58", + "community": 359, + "norm_label": "snapshot sandbox state via cubecow. returns checkpoint id.", + "id": "prometheus_sandbox_rationale_58" }, { - "label": "dispatchToolCall must route memory tool names to executeMemoryTool.", + "label": "Restore a sandbox from a checkpoint. Returns new sandbox ID.", "file_type": "rationale", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L76", - "community": 49, - "norm_label": "dispatchtoolcall must route memory tool names to executememorytool.", - "id": "tests_test_memory_tools_wiring_rationale_76" + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L71", + "community": 360, + "norm_label": "restore a sandbox from a checkpoint. returns new sandbox id.", + "id": "prometheus_sandbox_rationale_71" }, { - "label": "d4e5f6a7b8c9_rename_relevance_to_base_score.py", - "file_type": "code", - "source_file": "migrations/versions/d4e5f6a7b8c9_rename_relevance_to_base_score.py", - "source_location": "L1", - "community": 244, - "norm_label": "d4e5f6a7b8c9_rename_relevance_to_base_score.py", - "id": "migrations_versions_d4e5f6a7b8c9_rename_relevance_to_base_score_py" + "label": "Upload a file into the sandbox filesystem.", + "file_type": "rationale", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L80", + "community": 361, + "norm_label": "upload a file into the sandbox filesystem.", + "id": "prometheus_sandbox_rationale_80" }, { - "label": "upgrade()", + "label": "Read a file from the sandbox filesystem.", + "file_type": "rationale", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L90", + "community": 362, + "norm_label": "read a file from the sandbox filesystem.", + "id": "prometheus_sandbox_rationale_90" + }, + { + "label": "harness.py", "file_type": "code", - "source_file": "migrations/versions/d4e5f6a7b8c9_rename_relevance_to_base_score.py", - "source_location": "L18", - "community": 244, - "norm_label": "upgrade()", - "id": "versions_d4e5f6a7b8c9_rename_relevance_to_base_score_upgrade" + "source_file": "main/models/harness.py", + "source_location": "L1", + "community": 12, + "norm_label": "harness.py", + "id": "main_models_harness_py" }, { - "label": "downgrade()", + "label": "LoopEvent", "file_type": "code", - "source_file": "migrations/versions/d4e5f6a7b8c9_rename_relevance_to_base_score.py", - "source_location": "L22", - "community": 244, - "norm_label": "downgrade()", - "id": "versions_d4e5f6a7b8c9_rename_relevance_to_base_score_downgrade" + "source_file": "main/models/harness.py", + "source_location": "L7", + "community": 12, + "norm_label": "loopevent", + "id": "models_harness_loopevent" }, { - "label": "rename relevanceScore to baseScore Revision ID: d4e5f6a7b8c9 Revises: b1c2d3e4f", + "label": "LoopEvent model for observable agent loops.", "file_type": "rationale", - "source_file": "migrations/versions/d4e5f6a7b8c9_rename_relevance_to_base_score.py", + "source_file": "main/models/harness.py", "source_location": "L1", - "community": 244, - "norm_label": "rename relevancescore to basescore revision id: d4e5f6a7b8c9 revises: b1c2d3e4f", - "id": "versions_d4e5f6a7b8c9_rename_relevance_to_base_score_rationale_1" + "community": 12, + "norm_label": "loopevent model for observable agent loops.", + "id": "models_harness_rationale_1" }, { - "label": "decayScores()", + "label": "TestLoopEventModel", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L192", - "community": 53, - "norm_label": "decayscores()", - "id": "prometheus_memory_decayscores" + "source_file": "tests/test_events.py", + "source_location": "L7", + "community": 12, + "norm_label": "testloopeventmodel", + "id": "tests_test_events_testloopeventmodel" }, { - "label": "executeMemoryTool()", + "label": ".test_create_event()", "file_type": "code", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L91", - "community": 116, - "norm_label": "executememorytool()", - "id": "prometheus_agent_executememorytool" + "source_file": "tests/test_events.py", + "source_location": "L8", + "community": 12, + "norm_label": ".test_create_event()", + "id": "tests_test_events_testloopeventmodel_test_create_event" }, { - "label": ".executeToolCall()", + "label": ".test_event_fields()", "file_type": "code", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L226", - "community": 116, - "norm_label": ".executetoolcall()", - "id": "prometheus_agent_prometheus_executetoolcall" + "source_file": "tests/test_events.py", + "source_location": "L14", + "community": 12, + "norm_label": ".test_event_fields()", + "id": "tests_test_events_testloopeventmodel_test_event_fields" }, { - "label": "MemoryManager", + "label": ".test_nullable_fields()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L20", - "community": 140, - "norm_label": "memorymanager", - "id": "prometheus_memory_memorymanager" + "source_file": "tests/test_events.py", + "source_location": "L33", + "community": 12, + "norm_label": ".test_nullable_fields()", + "id": "tests_test_events_testloopeventmodel_test_nullable_fields" }, { - "label": "getMemories()", + "label": ".test_created_at_auto()", "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L163", - "community": 84, - "norm_label": "getmemories()", - "id": "controller_prometheus_controller_getmemories" - }, - { - "label": "createMemory()", - "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L177", - "community": 84, - "norm_label": "creatememory()", - "id": "controller_prometheus_controller_creatememory" - }, - { - "label": "deleteMemory()", - "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L207", - "community": 84, - "norm_label": "deletememory()", - "id": "controller_prometheus_controller_deletememory" + "source_file": "tests/test_events.py", + "source_location": "L43", + "community": 12, + "norm_label": ".test_created_at_auto()", + "id": "tests_test_events_testloopeventmodel_test_created_at_auto" }, { - "label": "test_memory_controller.py", + "label": ".test_session_id_indexed()", "file_type": "code", - "source_file": "tests/test_memory_controller.py", - "source_location": "L1", - "community": 86, - "norm_label": "test_memory_controller.py", - "id": "tests_test_memory_controller_py" + "source_file": "tests/test_events.py", + "source_location": "L50", + "community": 12, + "norm_label": ".test_session_id_indexed()", + "id": "tests_test_events_testloopeventmodel_test_session_id_indexed" }, { - "label": "TestMemoryControllerRoutes", + "label": ".test_log_queues_event()", "file_type": "code", - "source_file": "tests/test_memory_controller.py", - "source_location": "L10", - "community": 86, - "norm_label": "testmemorycontrollerroutes", - "id": "tests_test_memory_controller_testmemorycontrollerroutes" + "source_file": "tests/test_events.py", + "source_location": "L56", + "community": 12, + "norm_label": ".test_log_queues_event()", + "id": "tests_test_events_testlooplogger_test_log_queues_event" }, { - "label": ".test_get_memories_endpoint_exists()", + "label": ".test_flush_inserts_all()", "file_type": "code", - "source_file": "tests/test_memory_controller.py", - "source_location": "L11", - "community": 86, - "norm_label": ".test_get_memories_endpoint_exists()", - "id": "tests_test_memory_controller_testmemorycontrollerroutes_test_get_memories_endpoint_exists" + "source_file": "tests/test_events.py", + "source_location": "L62", + "community": 12, + "norm_label": ".test_flush_inserts_all()", + "id": "tests_test_events_testlooplogger_test_flush_inserts_all" }, { - "label": ".test_post_memories_endpoint_exists()", + "label": ".test_flush_empty()", "file_type": "code", - "source_file": "tests/test_memory_controller.py", - "source_location": "L15", - "community": 86, - "norm_label": ".test_post_memories_endpoint_exists()", - "id": "tests_test_memory_controller_testmemorycontrollerroutes_test_post_memories_endpoint_exists" + "source_file": "tests/test_events.py", + "source_location": "L71", + "community": 12, + "norm_label": ".test_flush_empty()", + "id": "tests_test_events_testlooplogger_test_flush_empty" }, { - "label": ".test_delete_memories_endpoint_exists()", + "label": ".test_flush_preserves_order()", "file_type": "code", - "source_file": "tests/test_memory_controller.py", - "source_location": "L19", - "community": 86, - "norm_label": ".test_delete_memories_endpoint_exists()", - "id": "tests_test_memory_controller_testmemorycontrollerroutes_test_delete_memories_endpoint_exists" + "source_file": "tests/test_events.py", + "source_location": "L76", + "community": 12, + "norm_label": ".test_flush_preserves_order()", + "id": "tests_test_events_testlooplogger_test_flush_preserves_order" }, { - "label": ".test_get_memories_rejects_unauthenticated()", + "label": ".test_multiple_flushes()", "file_type": "code", - "source_file": "tests/test_memory_controller.py", - "source_location": "L23", - "community": 86, - "norm_label": ".test_get_memories_rejects_unauthenticated()", - "id": "tests_test_memory_controller_testmemorycontrollerroutes_test_get_memories_rejects_unauthenticated" + "source_file": "tests/test_events.py", + "source_location": "L87", + "community": 12, + "norm_label": ".test_multiple_flushes()", + "id": "tests_test_events_testlooplogger_test_multiple_flushes" }, { - "label": ".test_get_memories_rejects_basic_user()", + "label": ".test_log_with_all_params()", "file_type": "code", - "source_file": "tests/test_memory_controller.py", - "source_location": "L38", - "community": 86, - "norm_label": ".test_get_memories_rejects_basic_user()", - "id": "tests_test_memory_controller_testmemorycontrollerroutes_test_get_memories_rejects_basic_user" + "source_file": "tests/test_events.py", + "source_location": "L95", + "community": 12, + "norm_label": ".test_log_with_all_params()", + "id": "tests_test_events_testlooplogger_test_log_with_all_params" }, { - "label": "TestMemoryEndpointsIntegration", + "label": ".test_flush_failure_logged_not_raised()", "file_type": "code", - "source_file": "tests/test_memory_controller.py", - "source_location": "L65", - "community": 86, - "norm_label": "testmemoryendpointsintegration", - "id": "tests_test_memory_controller_testmemoryendpointsintegration" + "source_file": "tests/test_events.py", + "source_location": "L113", + "community": 12, + "norm_label": ".test_flush_failure_logged_not_raised()", + "id": "tests_test_events_testlooplogger_test_flush_failure_logged_not_raised" }, { - "label": "test_get_memories_calls_manager()", - "file_type": "code", - "source_file": "tests/test_memory_controller.py", - "source_location": "L67", - "community": 86, - "norm_label": "test_get_memories_calls_manager()", - "id": "tests_test_memory_controller_test_get_memories_calls_manager" + "label": "If DB insert fails, flush should log error, not raise.", + "file_type": "rationale", + "source_file": "tests/test_events.py", + "source_location": "L114", + "community": 12, + "norm_label": "if db insert fails, flush should log error, not raise.", + "id": "tests_test_events_rationale_114" }, { - "label": "test_create_memory_calls_manager()", + "label": "test_system_prompt_includes_sandbox_instructions()", "file_type": "code", - "source_file": "tests/test_memory_controller.py", - "source_location": "L90", - "community": 86, - "norm_label": "test_create_memory_calls_manager()", - "id": "tests_test_memory_controller_test_create_memory_calls_manager" + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L31", + "community": 24, + "norm_label": "test_system_prompt_includes_sandbox_instructions()", + "id": "tests_test_agent_sandbox_integration_test_system_prompt_includes_sandbox_instructions" }, { - "label": "test_create_memory_limit_reached()", + "label": "test_system_prompt_includes_cache_instructions()", "file_type": "code", - "source_file": "tests/test_memory_controller.py", - "source_location": "L111", - "community": 86, - "norm_label": "test_create_memory_limit_reached()", - "id": "tests_test_memory_controller_test_create_memory_limit_reached" + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L36", + "community": 24, + "norm_label": "test_system_prompt_includes_cache_instructions()", + "id": "tests_test_agent_sandbox_integration_test_system_prompt_includes_cache_instructions" }, { - "label": "test_delete_memory_calls_manager()", - "file_type": "code", - "source_file": "tests/test_memory_controller.py", - "source_location": "L126", - "community": 86, - "norm_label": "test_delete_memory_calls_manager()", - "id": "tests_test_memory_controller_test_delete_memory_calls_manager" + "label": "Retrieve values from the harness state. Use this to recall intermediate results,", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L77", + "community": 162, + "norm_label": "retrieve values from the harness state. use this to recall intermediate results,", + "id": "prometheus_tools_rationale_77" }, { - "label": "test_delete_memory_not_found()", - "file_type": "code", - "source_file": "tests/test_memory_controller.py", - "source_location": "L135", - "community": 86, - "norm_label": "test_delete_memory_not_found()", - "id": "tests_test_memory_controller_test_delete_memory_not_found" + "label": "Phase 4: ToolContext (Replace God Function)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L725", + "community": 185, + "norm_label": "phase 4: toolcontext (replace god function)", + "id": "plans_2026_07_16_prometheus_harness_master_v2_phase_4_toolcontext_replace_god_function" }, { - "label": ".test_create_memory_missing_key()", - "file_type": "code", - "source_file": "tests/test_memory_controller.py", - "source_location": "L141", - "community": 86, - "norm_label": ".test_create_memory_missing_key()", - "id": "tests_test_memory_controller_testmemoryendpointsintegration_test_create_memory_missing_key" + "label": "Task 5: ToolContext \u2014 Single Dispatch Object", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L727", + "community": 185, + "norm_label": "task 5: toolcontext \u2014 single dispatch object", + "id": "plans_2026_07_16_prometheus_harness_master_v2_task_5_toolcontext_single_dispatch_object" }, { - "label": ".test_create_memory_missing_value()", - "file_type": "code", - "source_file": "tests/test_memory_controller.py", - "source_location": "L145", - "community": 86, - "norm_label": ".test_create_memory_missing_value()", - "id": "tests_test_memory_controller_testmemoryendpointsintegration_test_create_memory_missing_value" + "label": "Task 7: Tool Definitions \u2014 State + Sandbox + Cache Tools", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-07-16-prometheus-harness-master-v2.md", + "source_location": "L1148", + "community": 121, + "norm_label": "task 7: tool definitions \u2014 state + sandbox + cache tools", + "id": "plans_2026_07_16_prometheus_harness_master_v2_task_7_tool_definitions_state_sandbox_cache_tools" }, { - "label": "Custom SQLAlchemy type for storing float32 embeddings as MySQL BLOB.", + "label": "sendMessage should create a HarnessState and pass it to buildSystemPrompt.", "file_type": "rationale", - "source_file": "main/models/memory_types.py", - "source_location": "L6", - "community": 51, - "norm_label": "custom sqlalchemy type for storing float32 embeddings as mysql blob.", - "id": "models_memory_types_rationale_6" + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L50", + "community": 363, + "norm_label": "sendmessage should create a harnessstate and pass it to buildsystemprompt.", + "id": "tests_test_agent_state_integration_rationale_50" }, { - "label": "Vectorized cosine similarity: one query against N embeddings.", + "label": "streamMessage should create a HarnessState and pass it to buildSystemPrompt.", "file_type": "rationale", - "source_file": "main/utils/vector.py", - "source_location": "L6", - "community": 131, - "norm_label": "vectorized cosine similarity: one query against n embeddings.", - "id": "utils_vector_rationale_6" + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L83", + "community": 364, + "norm_label": "streammessage should create a harnessstate and pass it to buildsystemprompt.", + "id": "tests_test_agent_state_integration_rationale_83" }, { - "label": "MD5 hash for change detection.", + "label": "System prompt should instruct LLM about memory vs state.", "file_type": "rationale", - "source_file": "main/utils/vector.py", - "source_location": "L19", - "community": 131, - "norm_label": "md5 hash for change detection.", - "id": "utils_vector_rationale_19" + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L191", + "community": 93, + "norm_label": "system prompt should instruct llm about memory vs state.", + "id": "tests_test_agent_state_integration_rationale_191" }, { - "label": "memory-system-plan.md", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L1", - "community": 6, - "norm_label": "memory-system-plan.md", - "id": "plans_memory_system_plan_md" + "label": "executeStateTool()", + "file_type": "code", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L104", + "community": 162, + "norm_label": "executestatetool()", + "id": "prometheus_tools_executestatetool" }, { - "label": "Mansa Memory System \u2014 Implementation Plan (v2)", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L1", - "community": 6, - "norm_label": "mansa memory system \u2014 implementation plan (v2)", - "id": "plans_memory_system_plan_mansa_memory_system_implementation_plan_v2" + "label": "Search user's saved memories, preferences, and past analysis context. Use t", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L13", + "community": 152, + "norm_label": "search user's saved memories, preferences, and past analysis context. use t", + "id": "prometheus_tools_rationale_13" }, { - "label": "Goal", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L3", - "community": 6, - "norm_label": "goal", - "id": "plans_memory_system_plan_goal" + "label": "Store a memory about the user's preferences, analysis results, or feedback.", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L39", + "community": 126, + "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", + "id": "prometheus_tools_rationale_39" }, { - "label": "1. Permission System", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L9", - "community": 6, - "norm_label": "1. permission system", - "id": "plans_memory_system_plan_1_permission_system" + "label": ".test_state_tools_is_list_of_callables()", + "file_type": "code", + "source_file": "tests/test_state_tools.py", + "source_location": "L44", + "community": 148, + "norm_label": ".test_state_tools_is_list_of_callables()", + "id": "tests_test_state_tools_teststatetoolfunctions_test_state_tools_is_list_of_callables" }, { - "label": "Current state (`main/utils/roles.py`)", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L11", - "community": 6, - "norm_label": "current state (`main/utils/roles.py`)", - "id": "plans_memory_system_plan_current_state_main_utils_roles_py" + "label": ".test_state_tool_names()", + "file_type": "code", + "source_file": "tests/test_state_tools.py", + "source_location": "L50", + "community": 148, + "norm_label": ".test_state_tool_names()", + "id": "tests_test_state_tools_teststatetoolfunctions_test_state_tool_names" }, { - "label": "code:python (class Permission(IntFlag):)", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L15", - "community": 6, - "norm_label": "code:python (class permission(intflag):)", - "id": "plans_memory_system_plan_codeblock_1" + "label": "TestExecuteStateTool", + "file_type": "code", + "source_file": "tests/test_state_tools.py", + "source_location": "L54", + "community": 162, + "norm_label": "testexecutestatetool", + "id": "tests_test_state_tools_testexecutestatetool" }, { - "label": "New permission", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L26", - "community": 6, - "norm_label": "new permission", - "id": "plans_memory_system_plan_new_permission" + "label": "test_unknown_tool()", + "file_type": "code", + "source_file": "tests/test_state_tools.py", + "source_location": "L84", + "community": 162, + "norm_label": "test_unknown_tool()", + "id": "tests_test_state_tools_test_unknown_tool" }, { - "label": "code:python (PROMETHEUS_EXTENDED_MEMORIES = auto() # 50 memories (vs 5 f)", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L28", - "community": 6, - "norm_label": "code:python (prometheus_extended_memories = auto() # 50 memories (vs 5 f)", - "id": "plans_memory_system_plan_codeblock_2" + "label": "In-memory state dict that persists across loop iterations within a single reques", + "file_type": "rationale", + "source_file": "main/app/prometheus/state.py", + "source_location": "L7", + "community": 8, + "norm_label": "in-memory state dict that persists across loop iterations within a single reques", + "id": "prometheus_state_rationale_7" }, { - "label": "code:python (PREMIUM = USER | USE_PROMETHEUS | USE_OGUM | PROMETHEUS_EXTE)", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L34", - "community": 6, - "norm_label": "code:python (premium = user | use_prometheus | use_ogum | prometheus_exte)", - "id": "plans_memory_system_plan_codeblock_3" + "label": "Retrieve a value from state. Returns default if key not found.", + "file_type": "rationale", + "source_file": "main/app/prometheus/state.py", + "source_location": "L18", + "community": 8, + "norm_label": "retrieve a value from state. returns default if key not found.", + "id": "prometheus_state_rationale_18" }, { - "label": "Memory limit logic", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L38", - "community": 6, - "norm_label": "memory limit logic", - "id": "plans_memory_system_plan_memory_limit_logic" + "label": "Store a value in state. Marks state as changed for context injection.", + "file_type": "rationale", + "source_file": "main/app/prometheus/state.py", + "source_location": "L22", + "community": 215, + "norm_label": "store a value in state. marks state as changed for context injection.", + "id": "prometheus_state_rationale_22" }, { - "label": "code:python (def get_memory_limit(user_roles: list[str]) -> int:)", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L40", - "community": 6, - "norm_label": "code:python (def get_memory_limit(user_roles: list[str]) -> int:)", - "id": "plans_memory_system_plan_codeblock_4" + "label": "Return a copy of the current state.", + "file_type": "rationale", + "source_file": "main/app/prometheus/state.py", + "source_location": "L27", + "community": 8, + "norm_label": "return a copy of the current state.", + "id": "prometheus_state_rationale_27" }, { - "label": "Rolling out to free users", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L48", - "community": 6, - "norm_label": "rolling out to free users", - "id": "plans_memory_system_plan_rolling_out_to_free_users" + "label": "Format state as a string for injection into the LLM context.", + "file_type": "rationale", + "source_file": "main/app/prometheus/state.py", + "source_location": "L31", + "community": 8, + "norm_label": "format state as a string for injection into the llm context.", + "id": "prometheus_state_rationale_31" }, { - "label": "2. Database Schema", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L57", - "community": 6, - "norm_label": "2. database schema", - "id": "plans_memory_system_plan_2_database_schema" + "label": "Check if state changed since last reset.", + "file_type": "rationale", + "source_file": "main/app/prometheus/state.py", + "source_location": "L37", + "community": 8, + "norm_label": "check if state changed since last reset.", + "id": "prometheus_state_rationale_37" }, { - "label": "New table: `prometheus_memories`", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L59", - "community": 6, - "norm_label": "new table: `prometheus_memories`", - "id": "plans_memory_system_plan_new_table_prometheus_memories" + "label": "Reset the changed flag. Returns the previous state.", + "file_type": "rationale", + "source_file": "main/app/prometheus/state.py", + "source_location": "L41", + "community": 8, + "norm_label": "reset the changed flag. returns the previous state.", + "id": "prometheus_state_rationale_41" }, { - "label": "code:sql (CREATE TABLE prometheus_memories ()", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L61", - "community": 6, - "norm_label": "code:sql (create table prometheus_memories ()", - "id": "plans_memory_system_plan_codeblock_5" + "label": "Clear all state data.", + "file_type": "rationale", + "source_file": "main/app/prometheus/state.py", + "source_location": "L47", + "community": 8, + "norm_label": "clear all state data.", + "id": "prometheus_state_rationale_47" }, { - "label": "Alembic migration", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L89", - "community": 6, - "norm_label": "alembic migration", - "id": "plans_memory_system_plan_alembic_migration" + "label": "Search user's saved memories, preferences, and past analysis context. Use t", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L12", + "community": 152, + "norm_label": "search user's saved memories, preferences, and past analysis context. use t", + "id": "prometheus_tools_rationale_12" }, { - "label": "3. SQLAlchemy Models", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L95", - "community": 6, - "norm_label": "3. sqlalchemy models", - "id": "plans_memory_system_plan_3_sqlalchemy_models" + "label": "Store a memory about the user's preferences, analysis results, or feedback.", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L38", + "community": 126, + "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", + "id": "prometheus_tools_rationale_38" }, { - "label": "`main/models/memory.py` \u2014 New file", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L97", - "community": 6, - "norm_label": "`main/models/memory.py` \u2014 new file", - "id": "plans_memory_system_plan_main_models_memory_py_new_file" + "label": "memory_types.py", + "file_type": "code", + "source_file": "main/models/memory_types.py", + "source_location": "L1", + "community": 51, + "norm_label": "memory_types.py", + "id": "main_models_memory_types_py" }, { - "label": "code:python (from sqlalchemy import Column, Integer, String, Text, Float,)", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L99", - "community": 6, - "norm_label": "code:python (from sqlalchemy import column, integer, string, text, float,)", - "id": "plans_memory_system_plan_codeblock_6" + "label": "VectorType", + "file_type": "code", + "source_file": "main/models/memory_types.py", + "source_location": "L5", + "community": 51, + "norm_label": "vectortype", + "id": "models_memory_types_vectortype" }, { - "label": "`VectorType` \u2014 Custom TypeDecorator", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L136", - "community": 6, - "norm_label": "`vectortype` \u2014 custom typedecorator", - "id": "plans_memory_system_plan_vectortype_custom_typedecorator" + "label": ".__init__()", + "file_type": "code", + "source_file": "main/models/memory_types.py", + "source_location": "L9", + "community": 51, + "norm_label": ".__init__()", + "id": "models_memory_types_vectortype_init" }, { - "label": "code:python (# main/models/memory_types.py)", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L138", - "community": 6, - "norm_label": "code:python (# main/models/memory_types.py)", - "id": "plans_memory_system_plan_codeblock_7" + "label": ".process_bind_param()", + "file_type": "code", + "source_file": "main/models/memory_types.py", + "source_location": "L13", + "community": 51, + "norm_label": ".process_bind_param()", + "id": "models_memory_types_vectortype_process_bind_param" }, { - "label": "4. Vector Utilities", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L167", - "community": 6, - "norm_label": "4. vector utilities", - "id": "plans_memory_system_plan_4_vector_utilities" + "label": ".process_result_value()", + "file_type": "code", + "source_file": "main/models/memory_types.py", + "source_location": "L21", + "community": 51, + "norm_label": ".process_result_value()", + "id": "models_memory_types_vectortype_process_result_value" }, { - "label": "`main/utils/vector.py` \u2014 New file", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L169", - "community": 6, - "norm_label": "`main/utils/vector.py` \u2014 new file", - "id": "plans_memory_system_plan_main_utils_vector_py_new_file" + "label": "executeMemoryTool()", + "file_type": "code", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L46", + "community": 130, + "norm_label": "executememorytool()", + "id": "prometheus_tools_executememorytool" }, { - "label": "code:python (import hashlib)", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L171", - "community": 6, - "norm_label": "code:python (import hashlib)", - "id": "plans_memory_system_plan_codeblock_8" + "label": "Store a memory about the user's preferences, analysis results, or feedback.", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L29", + "community": 126, + "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", + "id": "prometheus_tools_rationale_29" }, { - "label": "5. Memory Manager (Service Layer)", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L214", - "community": 6, - "norm_label": "5. memory manager (service layer)", - "id": "plans_memory_system_plan_5_memory_manager_service_layer" + "label": "Keys with low similarity should not merge.", + "file_type": "rationale", + "source_file": "tests/test_memory_dedup.py", + "source_location": "L52", + "community": 140, + "norm_label": "keys with low similarity should not merge.", + "id": "tests_test_memory_dedup_rationale_52" }, { - "label": "`main/app/prometheus/memory.py` \u2014 New file", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L216", - "community": 6, - "norm_label": "`main/app/prometheus/memory.py` \u2014 new file", - "id": "plans_memory_system_plan_main_app_prometheus_memory_py_new_file" + "label": "Keys with Jaccard <= 0.8 should not merge.", + "file_type": "rationale", + "source_file": "tests/test_memory_dedup.py", + "source_location": "L85", + "community": 140, + "norm_label": "keys with jaccard <= 0.8 should not merge.", + "id": "tests_test_memory_dedup_rationale_85" }, { - "label": "code:python (from datetime import datetime, timedelta)", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L220", - "community": 6, - "norm_label": "code:python (from datetime import datetime, timedelta)", - "id": "plans_memory_system_plan_codeblock_9" + "label": "TestMemoryToolsDefinition", + "file_type": "code", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L20", + "community": 151, + "norm_label": "testmemorytoolsdefinition", + "id": "tests_test_memory_tools_wiring_testmemorytoolsdefinition" }, { - "label": "6. Tool Integration (Gemini)", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L468", - "community": 6, - "norm_label": "6. tool integration (gemini)", - "id": "plans_memory_system_plan_6_tool_integration_gemini" + "label": ".test_memory_tools_is_nonempty_list()", + "file_type": "code", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L23", + "community": 151, + "norm_label": ".test_memory_tools_is_nonempty_list()", + "id": "tests_test_memory_tools_wiring_testmemorytoolsdefinition_test_memory_tools_is_nonempty_list" }, { - "label": "Native Gemini tools (not MCP)", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L470", - "community": 6, - "norm_label": "native gemini tools (not mcp)", - "id": "plans_memory_system_plan_native_gemini_tools_not_mcp" + "label": ".test_memory_tools_are_callables()", + "file_type": "code", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L27", + "community": 151, + "norm_label": ".test_memory_tools_are_callables()", + "id": "tests_test_memory_tools_wiring_testmemorytoolsdefinition_test_memory_tools_are_callables" }, { - "label": "Changes to `agent.py`", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L474", - "community": 6, - "norm_label": "changes to `agent.py`", - "id": "plans_memory_system_plan_changes_to_agent_py" + "label": ".test_memory_tool_names_match()", + "file_type": "code", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L31", + "community": 151, + "norm_label": ".test_memory_tool_names_match()", + "id": "tests_test_memory_tools_wiring_testmemorytoolsdefinition_test_memory_tool_names_match" }, { - "label": "code:python (# In openMCPClients(), add memory tools alongside MCP sessio)", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L476", - "community": 6, - "norm_label": "code:python (# in openmcpclients(), add memory tools alongside mcp sessio)", - "id": "plans_memory_system_plan_codeblock_10" + "label": ".test_memory_tool_names_constant_matches()", + "file_type": "code", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L35", + "community": 151, + "norm_label": ".test_memory_tool_names_constant_matches()", + "id": "tests_test_memory_tools_wiring_testmemorytoolsdefinition_test_memory_tool_names_constant_matches" }, { - "label": "7. System Prompt Injection", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L550", - "community": 6, - "norm_label": "7. system prompt injection", - "id": "plans_memory_system_plan_7_system_prompt_injection" + "label": ".test_search_memory_has_query_param()", + "file_type": "code", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L38", + "community": 151, + "norm_label": ".test_search_memory_has_query_param()", + "id": "tests_test_memory_tools_wiring_testmemorytoolsdefinition_test_search_memory_has_query_param" }, { - "label": "Dynamic prompt with memories", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L552", - "community": 6, - "norm_label": "dynamic prompt with memories", - "id": "plans_memory_system_plan_dynamic_prompt_with_memories" + "label": ".test_save_memory_has_required_params()", + "file_type": "code", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L43", + "community": 151, + "norm_label": ".test_save_memory_has_required_params()", + "id": "tests_test_memory_tools_wiring_testmemorytoolsdefinition_test_save_memory_has_required_params" }, { - "label": "code:python (def _build_system_prompt(user_id: int, db: Session) -> str:)", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L556", - "community": 6, - "norm_label": "code:python (def _build_system_prompt(user_id: int, db: session) -> str:)", - "id": "plans_memory_system_plan_codeblock_11" + "label": "test_search_memory_routed_to_executeMemoryTool()", + "file_type": "code", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L92", + "community": 49, + "norm_label": "test_search_memory_routed_to_executememorytool()", + "id": "tests_test_memory_tools_wiring_test_search_memory_routed_to_executememorytool" }, { - "label": "Changes to `chat()` method", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L585", - "community": 6, - "norm_label": "changes to `chat()` method", - "id": "plans_memory_system_plan_changes_to_chat_method" + "label": "test_save_memory_routed_to_executeMemoryTool()", + "file_type": "code", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L105", + "community": 49, + "norm_label": "test_save_memory_routed_to_executememorytool()", + "id": "tests_test_memory_tools_wiring_test_save_memory_routed_to_executememorytool" }, { - "label": "code:python (# In chat() method, replace static prompt:)", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L587", - "community": 6, - "norm_label": "code:python (# in chat() method, replace static prompt:)", - "id": "plans_memory_system_plan_codeblock_12" + "label": "test_memory_tool_skipped_without_user()", + "file_type": "code", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L122", + "community": 49, + "norm_label": "test_memory_tool_skipped_without_user()", + "id": "tests_test_memory_tools_wiring_test_memory_tool_skipped_without_user" }, { - "label": "8. Controller Endpoints", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L597", - "community": 6, - "norm_label": "8. controller endpoints", - "id": "plans_memory_system_plan_8_controller_endpoints" + "label": "test_non_memory_tool_not_routed_to_executeMemoryTool()", + "file_type": "code", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L131", + "community": 49, + "norm_label": "test_non_memory_tool_not_routed_to_executememorytool()", + "id": "tests_test_memory_tools_wiring_test_non_memory_tool_not_routed_to_executememorytool" }, { - "label": "`prometheus_controller.py` additions", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L599", - "community": 6, - "norm_label": "`prometheus_controller.py` additions", - "id": "plans_memory_system_plan_prometheus_controller_py_additions" + "label": "MEMORY_TOOLS must be a list of callables with proper signatures.", + "file_type": "rationale", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L21", + "community": 151, + "norm_label": "memory_tools must be a list of callables with proper signatures.", + "id": "tests_test_memory_tools_wiring_rationale_21" }, { - "label": "code:python (# GET /memories \u2014 list user's memories)", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L603", - "community": 6, - "norm_label": "code:python (# get /memories \u2014 list user's memories)", - "id": "plans_memory_system_plan_codeblock_13" + "label": "makeChat must include MEMORY_TOOLS alongside MCP sessions.", + "file_type": "rationale", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L52", + "community": 49, + "norm_label": "makechat must include memory_tools alongside mcp sessions.", + "id": "tests_test_memory_tools_wiring_rationale_52" }, { - "label": "9. Memory Decay (Background Job)", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L658", - "community": 6, - "norm_label": "9. memory decay (background job)", - "id": "plans_memory_system_plan_9_memory_decay_background_job" + "label": "dispatchToolCall must route memory tool names to executeMemoryTool.", + "file_type": "rationale", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L89", + "community": 575, + "norm_label": "dispatchtoolcall must route memory tool names to executememorytool.", + "id": "tests_test_memory_tools_wiring_rationale_89" }, { - "label": "code:python (# Daily at 3 AM)", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L660", - "community": 6, - "norm_label": "code:python (# daily at 3 am)", - "id": "plans_memory_system_plan_codeblock_14" + "label": ".test_memory_tools_wrapped_in_tool()", + "file_type": "code", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L25", + "community": 151, + "norm_label": ".test_memory_tools_wrapped_in_tool()", + "id": "tests_test_memory_tools_wiring_testmemorytoolsdefinition_test_memory_tools_wrapped_in_tool" }, { - "label": "10. File Changes Summary", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L671", - "community": 6, - "norm_label": "10. file changes summary", - "id": "plans_memory_system_plan_10_file_changes_summary" + "label": "MEMORY_TOOLS must be defined as a Tool wrapping FunctionDeclarations.", + "file_type": "rationale", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L19", + "community": 151, + "norm_label": "memory_tools must be defined as a tool wrapping functiondeclarations.", + "id": "tests_test_memory_tools_wiring_rationale_19" }, { - "label": "11. Implementation Order", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L686", - "community": 6, - "norm_label": "11. implementation order", - "id": "plans_memory_system_plan_11_implementation_order" + "label": "makeChat must include MEMORY_TOOLS alongside MCP sessions.", + "file_type": "rationale", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L57", + "community": 49, + "norm_label": "makechat must include memory_tools alongside mcp sessions.", + "id": "tests_test_memory_tools_wiring_rationale_57" }, { - "label": "12. Key Design Decisions", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L704", - "community": 6, - "norm_label": "12. key design decisions", - "id": "plans_memory_system_plan_12_key_design_decisions" + "label": "dispatchToolCall must route memory tool names to executeMemoryTool.", + "file_type": "rationale", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L92", + "community": 575, + "norm_label": "dispatchtoolcall must route memory tool names to executememorytool.", + "id": "tests_test_memory_tools_wiring_rationale_92" }, { - "label": "13. Risks & Mitigations", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L720", - "community": 6, - "norm_label": "13. risks & mitigations", - "id": "plans_memory_system_plan_13_risks_mitigations" + "label": "_normalize_key()", + "file_type": "code", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L17", + "community": 53, + "norm_label": "_normalize_key()", + "id": "prometheus_memory_normalize_key" }, { - "label": "14. Future Enhancements (v2+)", - "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L732", - "community": 6, - "norm_label": "14. future enhancements (v2+)", - "id": "plans_memory_system_plan_14_future_enhancements_v2" + "label": "Helper to create memories with controlled baseScore, lastAccessedAt, accessCount", + "file_type": "rationale", + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L23", + "community": 518, + "norm_label": "helper to create memories with controlled basescore, lastaccessedat, accesscount", + "id": "tests_test_memory_maintenance_rationale_23" }, { - "label": "All memory operations. Stateless class methods.", + "label": "Decay applies to ALL active memories, not just accessed ones.", "file_type": "rationale", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L14", - "community": 140, - "norm_label": "all memory operations. stateless class methods.", - "id": "prometheus_memory_rationale_14" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L54", + "community": 518, + "norm_label": "decay applies to all active memories, not just accessed ones.", + "id": "tests_test_memory_maintenance_rationale_54" }, { - "label": "_build_system_prompt()", - "file_type": "code", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L27", - "community": 116, - "norm_label": "_build_system_prompt()", - "id": "prometheus_agent_build_system_prompt" + "label": "baseScore should never reach exactly 0 from decay alone.", + "file_type": "rationale", + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L67", + "community": 518, + "norm_label": "basescore should never reach exactly 0 from decay alone.", + "id": "tests_test_memory_maintenance_rationale_67" }, { - "label": "_get_memory_tools()", - "file_type": "code", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L57", - "community": 116, - "norm_label": "_get_memory_tools()", - "id": "prometheus_agent_get_memory_tools" + "label": "Score below threshold + accessCount=0 + 90+ days \u2192 archived.", + "file_type": "rationale", + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L85", + "community": 544, + "norm_label": "score below threshold + accesscount=0 + 90+ days \u2192 archived.", + "id": "tests_test_memory_maintenance_rationale_85" }, { - "label": "_execute_memory_tool()", - "file_type": "code", - "source_file": "main/app/prometheus/agent.py", + "label": "Low score but accessed recently \u2192 not archived.", + "file_type": "rationale", + "source_file": "tests/test_memory_maintenance.py", "source_location": "L92", - "community": 116, - "norm_label": "_execute_memory_tool()", - "id": "prometheus_agent_execute_memory_tool" + "community": 570, + "norm_label": "low score but accessed recently \u2192 not archived.", + "id": "tests_test_memory_maintenance_rationale_92" }, { - "label": "Build system prompt with user memories injected.", + "label": "Zero access but score still above threshold \u2192 not archived.", "file_type": "rationale", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L28", - "community": 116, - "norm_label": "build system prompt with user memories injected.", - "id": "prometheus_agent_rationale_28" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L99", + "community": 539, + "norm_label": "zero access but score still above threshold \u2192 not archived.", + "id": "tests_test_memory_maintenance_rationale_99" }, { - "label": "Native Gemini function declarations for memory operations.", + "label": "Even with low score, if accessed \u2192 not archived.", "file_type": "rationale", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L58", - "community": 116, - "norm_label": "native gemini function declarations for memory operations.", - "id": "prometheus_agent_rationale_58" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L106", + "community": 570, + "norm_label": "even with low score, if accessed \u2192 not archived.", + "id": "tests_test_memory_maintenance_rationale_106" }, { - "label": "Handle memory tool calls from Gemini.", + "label": "Already archived memories are skipped.", "file_type": "rationale", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L93", - "community": 116, - "norm_label": "handle memory tool calls from gemini.", - "id": "prometheus_agent_rationale_93" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L113", + "community": 574, + "norm_label": "already archived memories are skipped.", + "id": "tests_test_memory_maintenance_rationale_113" }, { - "label": "get_memory_limit()", - "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L17", - "community": 53, - "norm_label": "get_memory_limit()", - "id": "prometheus_memory_get_memory_limit" + "label": "Decay happens first, then archive check with new scores.", + "file_type": "rationale", + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L134", + "community": 518, + "norm_label": "decay happens first, then archive check with new scores.", + "id": "tests_test_memory_maintenance_rationale_134" }, { - "label": "count_memories()", - "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L24", - "community": 53, - "norm_label": "count_memories()", - "id": "prometheus_memory_count_memories" + "label": "Score that decays to >= threshold stays alive. 0.11 * 0.95 = 0.1045 >= 0.1.", + "file_type": "rationale", + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L143", + "community": 518, + "norm_label": "score that decays to >= threshold stays alive. 0.11 * 0.95 = 0.1045 >= 0.1.", + "id": "tests_test_memory_maintenance_rationale_143" }, { - "label": "upsert_memory()", - "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L34", - "community": 53, - "norm_label": "upsert_memory()", - "id": "prometheus_memory_upsert_memory" + "label": "89 days with low score \u2192 not archived (need > 90).", + "file_type": "rationale", + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L156", + "community": 518, + "norm_label": "89 days with low score \u2192 not archived (need > 90).", + "id": "tests_test_memory_maintenance_rationale_156" }, { - "label": "_fulltext_search()", + "label": "embed()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L138", - "community": 126, - "norm_label": "_fulltext_search()", - "id": "prometheus_memory_fulltext_search" + "source_file": "main/utils/models/loader.py", + "source_location": "L23", + "community": 130, + "norm_label": "embed()", + "id": "models_loader_embed" }, { - "label": "get_user_memories()", - "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L168", - "community": 53, - "norm_label": "get_user_memories()", - "id": "prometheus_memory_get_user_memories" + "label": "Overall Score: 58/100", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L9", + "community": 160, + "norm_label": "overall score: 58/100", + "id": "server_code_review_report_overall_score_58_100" }, { - "label": "delete_memory()", - "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L195", - "community": 53, - "norm_label": "delete_memory()", - "id": "prometheus_memory_delete_memory" + "label": "P0 \u2014 Must Fix (Critical)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L21", + "community": 206, + "norm_label": "p0 \u2014 must fix (critical)", + "id": "server_code_review_report_p0_must_fix_critical" }, { - "label": "decay_scores()", - "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L209", - "community": 53, - "norm_label": "decay_scores()", - "id": "prometheus_memory_decay_scores" + "label": "Security (5)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L23", + "community": 206, + "norm_label": "security (5)", + "id": "server_code_review_report_security_5" }, { - "label": "archive_dead()", - "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L223", - "community": 53, - "norm_label": "archive_dead()", - "id": "prometheus_memory_archive_dead" + "label": "Architecture (7)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L35", + "community": 206, + "norm_label": "architecture (7)", + "id": "server_code_review_report_architecture_7" }, { - "label": "Determine max memories based on user permissions.", - "file_type": "rationale", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L18", - "community": 370, - "norm_label": "determine max memories based on user permissions.", - "id": "prometheus_memory_rationale_18" + "label": "Testing (5)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L51", + "community": 206, + "norm_label": "testing (5)", + "id": "server_code_review_report_testing_5" }, { - "label": "Count active memories for a user.", - "file_type": "rationale", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L25", - "community": 371, - "norm_label": "count active memories for a user.", - "id": "prometheus_memory_rationale_25" + "label": "API Design (3)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L63", + "community": 206, + "norm_label": "api design (3)", + "id": "server_code_review_report_api_design_3" }, { - "label": "Insert or update a memory. Checks limit before insert.", - "file_type": "rationale", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L45", - "community": 372, - "norm_label": "insert or update a memory. checks limit before insert.", - "id": "prometheus_memory_rationale_45" + "label": "Frontend (4)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L71", + "community": 206, + "norm_label": "frontend (4)", + "id": "server_code_review_report_frontend_4" }, { - "label": "Search user memories. Vector cosine \u2192 FULLTEXT fallback.", - "file_type": "rationale", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L97", - "community": 373, - "norm_label": "search user memories. vector cosine \u2192 fulltext fallback.", - "id": "prometheus_memory_rationale_97" + "label": "P1 \u2014 Should Fix", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L83", + "community": 207, + "norm_label": "p1 \u2014 should fix", + "id": "server_code_review_report_p1_should_fix" }, { - "label": "List user's memories (paginated).", - "file_type": "rationale", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L171", - "community": 374, - "norm_label": "list user's memories (paginated).", - "id": "prometheus_memory_rationale_171" + "label": "Architecture (8)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L85", + "community": 207, + "norm_label": "architecture (8)", + "id": "server_code_review_report_architecture_8" }, { - "label": "Soft-delete a memory.", - "file_type": "rationale", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L196", - "community": 375, - "norm_label": "soft-delete a memory.", - "id": "prometheus_memory_rationale_196" + "label": "Security (6)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L103", + "community": 207, + "norm_label": "security (6)", + "id": "server_code_review_report_security_6" }, { - "label": "Background job: decay relevanceScore for old memories.", - "file_type": "rationale", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L210", - "community": 376, - "norm_label": "background job: decay relevancescore for old memories.", - "id": "prometheus_memory_rationale_210" + "label": "Testing (4)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L117", + "community": 207, + "norm_label": "testing (4)", + "id": "server_code_review_report_testing_4" }, { - "label": "Archive memories with very low score and no access.", - "file_type": "rationale", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L224", - "community": 377, - "norm_label": "archive memories with very low score and no access.", - "id": "prometheus_memory_rationale_224" + "label": "API Design (6)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L127", + "community": 207, + "norm_label": "api design (6)", + "id": "server_code_review_report_api_design_6" }, { - "label": "get_memories()", + "label": "Frontend (7)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L141", + "community": 207, + "norm_label": "frontend (7)", + "id": "server_code_review_report_frontend_7" + }, + { + "label": "P2 \u2014 Nice to Have (27 items)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L159", + "community": 160, + "norm_label": "p2 \u2014 nice to have (27 items)", + "id": "server_code_review_report_p2_nice_to_have_27_items" + }, + { + "label": "Priority Matrix", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L173", + "community": 534, + "norm_label": "priority matrix", + "id": "server_code_review_report_priority_matrix" + }, + { + "label": "NOW (P0 \u2014 fix before next release)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L175", + "community": 534, + "norm_label": "now (p0 \u2014 fix before next release)", + "id": "server_code_review_report_now_p0_fix_before_next_release" + }, + { + "label": "SOON (P1 \u2014 fix within 2 weeks)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L185", + "community": 534, + "norm_label": "soon (p1 \u2014 fix within 2 weeks)", + "id": "server_code_review_report_soon_p1_fix_within_2_weeks" + }, + { + "label": "LATER (P2 \u2014 when touching these files)", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L195", + "community": 534, + "norm_label": "later (p2 \u2014 when touching these files)", + "id": "server_code_review_report_later_p2_when_touching_these_files" + }, + { + "label": "What Works Well", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT.md", + "source_location": "L206", + "community": 160, + "norm_label": "what works well", + "id": "server_code_review_report_what_works_well" + }, + { + "label": "_downloadModel()", "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L163", - "community": 84, - "norm_label": "get_memories()", - "id": "controller_prometheus_controller_get_memories" + "source_file": "main/utils/models/loader.py", + "source_location": "L11", + "community": 130, + "norm_label": "_downloadmodel()", + "id": "models_loader_downloadmodel" }, { - "label": "create_memory()", + "label": "getCookie()", "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L177", - "community": 84, - "norm_label": "create_memory()", - "id": "controller_prometheus_controller_create_memory" + "source_file": "frontend/src/api.js", + "source_location": "L10", + "community": 5, + "norm_label": "getcookie()", + "id": "src_api_getcookie" }, { - "label": "delete_memory()", + "label": ".isQuotaExceeded()", "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L201", - "community": 84, - "norm_label": "delete_memory()", - "id": "controller_prometheus_controller_delete_memory" + "source_file": "main/models/stocksapi_key.py", + "source_location": "L21", + "community": 37, + "norm_label": ".isquotaexceeded()", + "id": "models_stocksapi_key_stocksapikey_isquotaexceeded" }, { - "label": "pack_vector()", + "label": ".needsReset()", "file_type": "code", - "source_file": "main/utils/vector.py", - "source_location": "L5", - "community": 131, - "norm_label": "pack_vector()", - "id": "utils_vector_pack_vector" + "source_file": "main/models/stocksapi_key.py", + "source_location": "L24", + "community": 37, + "norm_label": ".needsreset()", + "id": "models_stocksapi_key_stocksapikey_needsreset" }, { - "label": "unpack_vector()", + "label": ".resetQuota()", "file_type": "code", - "source_file": "main/utils/vector.py", - "source_location": "L11", - "community": 131, - "norm_label": "unpack_vector()", - "id": "utils_vector_unpack_vector" + "source_file": "main/models/stocksapi_key.py", + "source_location": "L36", + "community": 37, + "norm_label": ".resetquota()", + "id": "models_stocksapi_key_stocksapikey_resetquota" }, { - "label": "cosine_similarity()", + "label": ".incrementUsage()", "file_type": "code", - "source_file": "main/utils/vector.py", - "source_location": "L16", - "community": 76, - "norm_label": "cosine_similarity()", - "id": "utils_vector_cosine_similarity" + "source_file": "main/models/stocksapi_key.py", + "source_location": "L40", + "community": 37, + "norm_label": ".incrementusage()", + "id": "models_stocksapi_key_stocksapikey_incrementusage" }, { - "label": "batch_cosine_similarity()", + "label": ".getRemainingQuota()", "file_type": "code", - "source_file": "main/utils/vector.py", - "source_location": "L28", - "community": 13, - "norm_label": "batch_cosine_similarity()", - "id": "utils_vector_batch_cosine_similarity" + "source_file": "main/models/stocksapi_key.py", + "source_location": "L43", + "community": 37, + "norm_label": ".getremainingquota()", + "id": "models_stocksapi_key_stocksapikey_getremainingquota" }, { - "label": "content_hash()", + "label": ".toDict()", "file_type": "code", - "source_file": "main/utils/vector.py", - "source_location": "L41", - "community": 131, - "norm_label": "content_hash()", - "id": "utils_vector_content_hash" + "source_file": "main/models/stocksapi_key.py", + "source_location": "L46", + "community": 37, + "norm_label": ".todict()", + "id": "models_stocksapi_key_stocksapikey_todict" }, { - "label": "Unpack MySQL BLOB to float list.", - "file_type": "rationale", - "source_file": "main/utils/vector.py", - "source_location": "L12", - "community": 131, - "norm_label": "unpack mysql blob to float list.", - "id": "utils_vector_rationale_12" + "label": ".getRolesList()", + "file_type": "code", + "source_file": "main/models/user.py", + "source_location": "L19", + "community": 61, + "norm_label": ".getroleslist()", + "id": "models_user_user_getroleslist" }, { - "label": "Single-pair cosine similarity.", - "file_type": "rationale", - "source_file": "main/utils/vector.py", - "source_location": "L17", - "community": 76, - "norm_label": "single-pair cosine similarity.", - "id": "utils_vector_rationale_17" + "label": ".addRole()", + "file_type": "code", + "source_file": "main/models/user.py", + "source_location": "L24", + "community": 61, + "norm_label": ".addrole()", + "id": "models_user_user_addrole" }, { - "label": "Vectorized cosine similarity: one query against N embeddings.", - "file_type": "rationale", - "source_file": "main/utils/vector.py", - "source_location": "L29", - "community": 13, - "norm_label": "vectorized cosine similarity: one query against n embeddings.", - "id": "utils_vector_rationale_29" + "label": ".hasRole()", + "file_type": "code", + "source_file": "main/models/user.py", + "source_location": "L32", + "community": 61, + "norm_label": ".hasrole()", + "id": "models_user_user_hasrole" }, { - "label": "MD5 hash for change detection.", - "file_type": "rationale", - "source_file": "main/utils/vector.py", - "source_location": "L42", - "community": 131, - "norm_label": "md5 hash for change detection.", - "id": "utils_vector_rationale_42" + "label": ".toDict()", + "file_type": "code", + "source_file": "main/models/user.py", + "source_location": "L37", + "community": 61, + "norm_label": ".todict()", + "id": "models_user_user_todict" }, { - "label": "Verify memory endpoints exist and are wired correctly.", - "file_type": "rationale", - "source_file": "tests/test_memory_controller.py", - "source_location": "L11", - "community": 86, - "norm_label": "verify memory endpoints exist and are wired correctly.", - "id": "tests_test_memory_controller_rationale_11" + "label": ".getDeviceName()", + "file_type": "code", + "source_file": "main/models/user_session.py", + "source_location": "L23", + "community": 44, + "norm_label": ".getdevicename()", + "id": "models_user_session_usersession_getdevicename" }, { - "label": "GET /prometheus/memories exists.", + "label": "Covers lines 19-20: user not found raises 404.", "file_type": "rationale", - "source_file": "tests/test_memory_controller.py", - "source_location": "L14", - "community": 86, - "norm_label": "get /prometheus/memories exists.", - "id": "tests_test_memory_controller_rationale_14" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1258", + "community": 528, + "norm_label": "covers lines 19-20: user not found raises 404.", + "id": "tests_test_controllers_coverage_rationale_1258" }, { - "label": "POST /prometheus/memories exists.", + "label": "Covers lines 34, 36-38, 40-44, 46, 48-49, 51, 58-59, 61, 63-67: UserManager.getC", "file_type": "rationale", - "source_file": "tests/test_memory_controller.py", - "source_location": "L20", - "community": 86, - "norm_label": "post /prometheus/memories exists.", - "id": "tests_test_memory_controller_rationale_20" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1270", + "community": 493, + "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_1270" }, { - "label": "DELETE /prometheus/memories/{id} exists.", + "label": "Covers lines 36-38, 40-44, 46, 48-49, 51, 58-59, 61: successful user retrieval.", "file_type": "rationale", - "source_file": "tests/test_memory_controller.py", - "source_location": "L25", - "community": 86, - "norm_label": "delete /prometheus/memories/{id} exists.", - "id": "tests_test_memory_controller_rationale_25" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1277", + "community": 563, + "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" }, { - "label": "GET /memories requires authentication.", + "label": "Covers lines 42-44: session validation fails.", "file_type": "rationale", - "source_file": "tests/test_memory_controller.py", - "source_location": "L30", - "community": 86, - "norm_label": "get /memories requires authentication.", - "id": "tests_test_memory_controller_rationale_30" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1302", + "community": 569, + "norm_label": "covers lines 42-44: session validation fails.", + "id": "tests_test_controllers_coverage_rationale_1302" }, { - "label": "GET /memories requires USE_PROMETHEUS (basic USER role denied).", + "label": "Covers lines 48-49: user not in DB.", "file_type": "rationale", - "source_file": "tests/test_memory_controller.py", - "source_location": "L47", - "community": 86, - "norm_label": "get /memories requires use_prometheus (basic user role denied).", - "id": "tests_test_memory_controller_rationale_47" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1318", + "community": 546, + "norm_label": "covers lines 48-49: user not in db.", + "id": "tests_test_controllers_coverage_rationale_1318" }, { - "label": "Full integration tests using mocked MemoryManager.", + "label": "Covers lines 65-67: unexpected exception.", "file_type": "rationale", - "source_file": "tests/test_memory_controller.py", - "source_location": "L75", - "community": 86, - "norm_label": "full integration tests using mocked memorymanager.", - "id": "tests_test_memory_controller_rationale_75" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1335", + "community": 560, + "norm_label": "covers lines 65-67: unexpected exception.", + "id": "tests_test_controllers_coverage_rationale_1335" }, { - "label": "GET /memories delegates to MemoryManager.", + "label": "Covers lines 37-38, 46, 51, 58 (sessionId is None): skips session validation.", "file_type": "rationale", - "source_file": "tests/test_memory_controller.py", - "source_location": "L79", - "community": 378, - "norm_label": "get /memories delegates to memorymanager.", - "id": "tests_test_memory_controller_rationale_79" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1352", + "community": 561, + "norm_label": "covers lines 37-38, 46, 51, 58 (sessionid is none): skips session validation.", + "id": "tests_test_controllers_coverage_rationale_1352" }, { - "label": "POST /memories delegates to MemoryManager.", + "label": "Covers line 16: empty password raises ValueError.", "file_type": "rationale", - "source_file": "tests/test_memory_controller.py", - "source_location": "L96", - "community": 379, - "norm_label": "post /memories delegates to memorymanager.", - "id": "tests_test_memory_controller_rationale_96" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1376", + "community": 45, + "norm_label": "covers line 16: empty password raises valueerror.", + "id": "tests_test_controllers_coverage_rationale_1376" }, { - "label": "POST /memories returns 403 when limit reached.", + "label": "Covers lines 45-51: verifyAccessToken with expired and invalid tokens.", "file_type": "rationale", - "source_file": "tests/test_memory_controller.py", - "source_location": "L113", - "community": 380, - "norm_label": "post /memories returns 403 when limit reached.", - "id": "tests_test_memory_controller_rationale_113" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1386", + "community": 524, + "norm_label": "covers lines 45-51: verifyaccesstoken with expired and invalid tokens.", + "id": "tests_test_controllers_coverage_rationale_1386" }, { - "label": "DELETE /memories/{id} delegates to MemoryManager.", + "label": "Covers lines 48-49: jwt.ExpiredSignatureError.", "file_type": "rationale", - "source_file": "tests/test_memory_controller.py", - "source_location": "L124", - "community": 381, - "norm_label": "delete /memories/{id} delegates to memorymanager.", - "id": "tests_test_memory_controller_rationale_124" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1389", + "community": 560, + "norm_label": "covers lines 48-49: jwt.expiredsignatureerror.", + "id": "tests_test_controllers_coverage_rationale_1389" }, { - "label": "DELETE /memories/{id} returns 404 when not found.", + "label": "Covers lines 50-51: jwt.InvalidTokenError.", "file_type": "rationale", - "source_file": "tests/test_memory_controller.py", - "source_location": "L134", - "community": 382, - "norm_label": "delete /memories/{id} returns 404 when not found.", - "id": "tests_test_memory_controller_rationale_134" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1405", + "community": 524, + "norm_label": "covers lines 50-51: jwt.invalidtokenerror.", + "id": "tests_test_controllers_coverage_rationale_1405" }, { - "label": "POST /memories rejects missing key.", + "label": "Covers line 67: extractTokenPayload re-raises HTTPException from verifyAccessTok", "file_type": "rationale", - "source_file": "tests/test_memory_controller.py", - "source_location": "L141", - "community": 86, - "norm_label": "post /memories rejects missing key.", - "id": "tests_test_memory_controller_rationale_141" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1417", + "community": 114, + "norm_label": "covers line 67: extracttokenpayload re-raises httpexception from verifyaccesstok", + "id": "tests_test_controllers_coverage_rationale_1417" }, { - "label": "POST /memories rejects missing value.", + "label": "Covers line 67: HTTPException raised by verifyAccessToken is re-raised.", "file_type": "rationale", - "source_file": "tests/test_memory_controller.py", - "source_location": "L146", - "community": 86, - "norm_label": "post /memories rejects missing value.", - "id": "tests_test_memory_controller_rationale_146" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1420", + "community": 114, + "norm_label": "covers line 67: httpexception raised by verifyaccesstoken is re-raised.", + "id": "tests_test_controllers_coverage_rationale_1420" }, { - "label": "Non-extended role gets basic limit.", + "label": "Covers line 13: UserManager.__init__.", "file_type": "rationale", - "source_file": "tests/test_memory_manager.py", - "source_location": "L11", - "community": 576, - "norm_label": "non-extended role gets basic limit.", - "id": "tests_test_memory_manager_rationale_11" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1436", + "community": 498, + "norm_label": "covers line 13: usermanager.__init__.", + "id": "tests_test_controllers_coverage_rationale_1436" }, { - "label": "Premium user gets extended limit.", - "file_type": "rationale", - "source_file": "tests/test_memory_manager.py", - "source_location": "L15", - "community": 140, - "norm_label": "premium user gets extended limit.", - "id": "tests_test_memory_manager_rationale_15" + "label": "test_callback_sets_readable_cookie_for_frontend()", + "file_type": "code", + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L131", + "community": 40, + "norm_label": "test_callback_sets_readable_cookie_for_frontend()", + "id": "tests_test_oauth_cookie_security_test_callback_sets_readable_cookie_for_frontend" }, { - "label": "Admin gets extended limit (has all permissions).", + "label": "test_frontend_can_read_token_from_cookie()", + "file_type": "code", + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L216", + "community": 40, + "norm_label": "test_frontend_can_read_token_from_cookie()", + "id": "tests_test_oauth_cookie_security_test_frontend_can_read_token_from_cookie" + }, + { + "label": "Return (client, app, mock_session) for testing Google callback.", "file_type": "rationale", - "source_file": "tests/test_memory_manager.py", + "source_file": "tests/test_oauth_cookie_security.py", "source_location": "L19", - "community": 581, - "norm_label": "admin gets extended limit (has all permissions).", - "id": "tests_test_memory_manager_rationale_19" + "community": 40, + "norm_label": "return (client, app, mock_session) for testing google callback.", + "id": "tests_test_oauth_cookie_security_rationale_19" }, { - "label": "Creates a new memory.", + "label": "Helper to setup common mock values for callback tests.", "file_type": "rationale", - "source_file": "tests/test_memory_manager.py", - "source_location": "L25", - "community": 140, - "norm_label": "creates a new memory.", - "id": "tests_test_memory_manager_rationale_25" + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L34", + "community": 40, + "norm_label": "helper to setup common mock values for callback tests.", + "id": "tests_test_oauth_cookie_security_rationale_34" }, { - "label": "Updates existing memory when value changes.", + "label": "Verify JWT token is NOT leaked in redirect URL after OAuth callback.", "file_type": "rationale", - "source_file": "tests/test_memory_manager.py", - "source_location": "L35", - "community": 140, - "norm_label": "updates existing memory when value changes.", - "id": "tests_test_memory_manager_rationale_35" + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L58", + "community": 40, + "norm_label": "verify jwt token is not leaked in redirect url after oauth callback.", + "id": "tests_test_oauth_cookie_security_rationale_58" }, { - "label": "Returns unchanged when value is identical.", + "label": "RED TEST: Token should NOT appear in redirect URL query parameters.", "file_type": "rationale", - "source_file": "tests/test_memory_manager.py", - "source_location": "L43", - "community": 582, - "norm_label": "returns unchanged when value is identical.", - "id": "tests_test_memory_manager_rationale_43" + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L67", + "community": 365, + "norm_label": "red test: token should not appear in redirect url query parameters.", + "id": "tests_test_oauth_cookie_security_rationale_67" }, { - "label": "Rejects new memory when limit reached.", + "label": "Cookie must be httponly (not accessible via JavaScript).", "file_type": "rationale", - "source_file": "tests/test_memory_manager.py", - "source_location": "L49", - "community": 583, - "norm_label": "rejects new memory when limit reached.", - "id": "tests_test_memory_manager_rationale_49" + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L102", + "community": 366, + "norm_label": "cookie must be httponly (not accessible via javascript).", + "id": "tests_test_oauth_cookie_security_rationale_102" }, { - "label": "No role check when user_roles not provided.", + "label": "A readable cookie must be set for frontend JavaScript to access.", "file_type": "rationale", - "source_file": "tests/test_memory_manager.py", - "source_location": "L61", - "community": 584, - "norm_label": "no role check when user_roles not provided.", - "id": "tests_test_memory_manager_rationale_61" + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L134", + "community": 367, + "norm_label": "a readable cookie must be set for frontend javascript to access.", + "id": "tests_test_oauth_cookie_security_rationale_134" }, { - "label": "Stores embedding alongside memory.", + "label": "Both cookies should have secure flag (HTTPS only).", "file_type": "rationale", - "source_file": "tests/test_memory_manager.py", - "source_location": "L69", - "community": 585, - "norm_label": "stores embedding alongside memory.", - "id": "tests_test_memory_manager_rationale_69" + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L158", + "community": 368, + "norm_label": "both cookies should have secure flag (https only).", + "id": "tests_test_oauth_cookie_security_rationale_158" }, { - "label": "Counts only non-archived memories.", + "label": "When no state param, return JSON response (not redirect).", "file_type": "rationale", - "source_file": "tests/test_memory_manager.py", - "source_location": "L82", - "community": 140, - "norm_label": "counts only non-archived memories.", - "id": "tests_test_memory_manager_rationale_82" + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L190", + "community": 369, + "norm_label": "when no state param, return json response (not redirect).", + "id": "tests_test_oauth_cookie_security_rationale_190" }, { - "label": "Archived memories not counted.", + "label": "Verify frontend can still get token after OAuth redirect.", "file_type": "rationale", - "source_file": "tests/test_memory_manager.py", - "source_location": "L88", - "community": 140, - "norm_label": "archived memories not counted.", - "id": "tests_test_memory_manager_rationale_88" + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L210", + "community": 40, + "norm_label": "verify frontend can still get token after oauth redirect.", + "id": "tests_test_oauth_cookie_security_rationale_210" }, { - "label": "Returns paginated memories.", + "label": "Frontend JavaScript should be able to read token from readable cookie.", "file_type": "rationale", - "source_file": "tests/test_memory_manager.py", - "source_location": "L107", - "community": 575, - "norm_label": "returns paginated memories.", - "id": "tests_test_memory_manager_rationale_107" + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L219", + "community": 40, + "norm_label": "frontend javascript should be able to read token from readable cookie.", + "id": "tests_test_oauth_cookie_security_rationale_219" }, { - "label": "Offset and limit work.", + "label": "Verify /auth/google passes redirect URL as state parameter.", "file_type": "rationale", - "source_file": "tests/test_memory_manager.py", - "source_location": "L115", - "community": 578, - "norm_label": "offset and limit work.", - "id": "tests_test_memory_manager_rationale_115" + "source_file": "tests/test_sso_state_cookie.py", + "source_location": "L43", + "community": 18, + "norm_label": "verify /auth/google passes redirect url as state parameter.", + "id": "tests_test_sso_state_cookie_rationale_43" }, { - "label": "Archived memories excluded.", + "label": "State should be the redirect URL directly.", "file_type": "rationale", - "source_file": "tests/test_memory_manager.py", - "source_location": "L122", - "community": 579, - "norm_label": "archived memories excluded.", - "id": "tests_test_memory_manager_rationale_122" + "source_file": "tests/test_sso_state_cookie.py", + "source_location": "L46", + "community": 18, + "norm_label": "state should be the redirect url directly.", + "id": "tests_test_sso_state_cookie_rationale_46" }, { - "label": "Soft-deletes a memory.", + "label": "Without redirect_url, state should be None.", "file_type": "rationale", - "source_file": "tests/test_memory_manager.py", - "source_location": "L135", - "community": 580, - "norm_label": "soft-deletes a memory.", - "id": "tests_test_memory_manager_rationale_135" + "source_file": "tests/test_sso_state_cookie.py", + "source_location": "L69", + "community": 18, + "norm_label": "without redirect_url, state should be none.", + "id": "tests_test_sso_state_cookie_rationale_69" }, { - "label": "Returns False for non-existent memory.", + "label": "The /google endpoint should NOT set sso_redirect cookie.", "file_type": "rationale", - "source_file": "tests/test_memory_manager.py", - "source_location": "L142", - "community": 140, - "norm_label": "returns false for non-existent memory.", - "id": "tests_test_memory_manager_rationale_142" + "source_file": "tests/test_sso_state_cookie.py", + "source_location": "L89", + "community": 18, + "norm_label": "the /google endpoint should not set sso_redirect cookie.", + "id": "tests_test_sso_state_cookie_rationale_89" }, { - "label": "Cannot delete another user's memory.", + "label": "Verify callback uses state param directly as redirect URL.", "file_type": "rationale", - "source_file": "tests/test_memory_manager.py", - "source_location": "L146", - "community": 140, - "norm_label": "cannot delete another user's memory.", - "id": "tests_test_memory_manager_rationale_146" + "source_file": "tests/test_sso_state_cookie.py", + "source_location": "L115", + "community": 18, + "norm_label": "verify callback uses state param directly as redirect url.", + "id": "tests_test_sso_state_cookie_rationale_115" }, { - "label": "FULLTEXT search finds matching memories (MySQL only).", + "label": "On success, redirect to URL from state param.", "file_type": "rationale", - "source_file": "tests/test_memory_manager.py", - "source_location": "L155", - "community": 140, - "norm_label": "fulltext search finds matching memories (mysql only).", - "id": "tests_test_memory_manager_rationale_155" + "source_file": "tests/test_sso_state_cookie.py", + "source_location": "L118", + "community": 18, + "norm_label": "on success, redirect to url from state param.", + "id": "tests_test_sso_state_cookie_rationale_118" }, { - "label": "TestPackUnpack", - "file_type": "code", - "source_file": "tests/test_vector_utils.py", - "source_location": "L11", - "community": 131, - "norm_label": "testpackunpack", - "id": "tests_test_vector_utils_testpackunpack" + "label": "When state has no URL, return JSON.", + "file_type": "rationale", + "source_file": "tests/test_sso_state_cookie.py", + "source_location": "L162", + "community": 18, + "norm_label": "when state has no url, return json.", + "id": "tests_test_sso_state_cookie_rationale_162" }, { - "label": ".test_roundtrip()", - "file_type": "code", - "source_file": "tests/test_vector_utils.py", - "source_location": "L12", - "community": 131, - "norm_label": ".test_roundtrip()", - "id": "tests_test_vector_utils_testpackunpack_test_roundtrip" + "label": "Verify SSOLoginError returns 401, not 500.", + "file_type": "rationale", + "source_file": "tests/test_sso_state_cookie.py", + "source_location": "L205", + "community": 18, + "norm_label": "verify ssologinerror returns 401, not 500.", + "id": "tests_test_sso_state_cookie_rationale_205" }, { - "label": ".test_empty()", - "file_type": "code", - "source_file": "tests/test_vector_utils.py", - "source_location": "L20", - "community": 131, - "norm_label": ".test_empty()", - "id": "tests_test_vector_utils_testpackunpack_test_empty" + "label": "Stale sso_state cookie must produce 401, not 500.", + "file_type": "rationale", + "source_file": "tests/test_sso_state_cookie.py", + "source_location": "L208", + "community": 18, + "norm_label": "stale sso_state cookie must produce 401, not 500.", + "id": "tests_test_sso_state_cookie_rationale_208" }, { - "label": ".test_384_dims()", - "file_type": "code", - "source_file": "tests/test_vector_utils.py", - "source_location": "L26", - "community": 131, - "norm_label": ".test_384_dims()", - "id": "tests_test_vector_utils_testpackunpack_test_384_dims" + "label": "Verify state parameter survives URL encoding round-trip.", + "file_type": "rationale", + "source_file": "tests/test_sso_state_cookie.py", + "source_location": "L239", + "community": 18, + "norm_label": "verify state parameter survives url encoding round-trip.", + "id": "tests_test_sso_state_cookie_rationale_239" }, { - "label": "TestCosineSimilarity", - "file_type": "code", - "source_file": "tests/test_vector_utils.py", - "source_location": "L33", - "community": 76, - "norm_label": "testcosinesimilarity", - "id": "tests_test_vector_utils_testcosinesimilarity" + "label": "State with URL characters should survive round-trip through OAuth URL.", + "file_type": "rationale", + "source_file": "tests/test_sso_state_cookie.py", + "source_location": "L242", + "community": 18, + "norm_label": "state with url characters should survive round-trip through oauth url.", + "id": "tests_test_sso_state_cookie_rationale_242" }, { - "label": ".test_identical()", + "label": "archiveDead()", "file_type": "code", - "source_file": "tests/test_vector_utils.py", - "source_location": "L34", - "community": 76, - "norm_label": ".test_identical()", - "id": "tests_test_vector_utils_testcosinesimilarity_test_identical" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L197", + "community": 53, + "norm_label": "archivedead()", + "id": "prometheus_memory_archivedead" }, { - "label": ".test_orthogonal()", - "file_type": "code", - "source_file": "tests/test_vector_utils.py", - "source_location": "L39", - "community": 76, - "norm_label": ".test_orthogonal()", - "id": "tests_test_vector_utils_testcosinesimilarity_test_orthogonal" + "label": "makeChat must include MEMORY_TOOLS alongside MCP sessions.", + "file_type": "rationale", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L56", + "community": 49, + "norm_label": "makechat must include memory_tools alongside mcp sessions.", + "id": "tests_test_memory_tools_wiring_rationale_56" }, { - "label": ".test_opposite()", - "file_type": "code", - "source_file": "tests/test_vector_utils.py", - "source_location": "L45", - "community": 76, - "norm_label": ".test_opposite()", - "id": "tests_test_vector_utils_testcosinesimilarity_test_opposite" + "label": "dispatchToolCall must route memory tool names to executeMemoryTool.", + "file_type": "rationale", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L91", + "community": 575, + "norm_label": "dispatchtoolcall must route memory tool names to executememorytool.", + "id": "tests_test_memory_tools_wiring_rationale_91" }, { - "label": ".test_zero_vector()", + "label": "vector.py", "file_type": "code", - "source_file": "tests/test_vector_utils.py", - "source_location": "L51", - "community": 76, - "norm_label": ".test_zero_vector()", - "id": "tests_test_vector_utils_testcosinesimilarity_test_zero_vector" + "source_file": "main/utils/vector.py", + "source_location": "L1", + "community": 131, + "norm_label": "vector.py", + "id": "main_utils_vector_py" }, { - "label": ".test_partial_overlap()", + "label": "batchCosineSimilarity()", "file_type": "code", - "source_file": "tests/test_vector_utils.py", - "source_location": "L55", - "community": 76, - "norm_label": ".test_partial_overlap()", - "id": "tests_test_vector_utils_testcosinesimilarity_test_partial_overlap" + "source_file": "main/utils/vector.py", + "source_location": "L8", + "community": 13, + "norm_label": "batchcosinesimilarity()", + "id": "utils_vector_batchcosinesimilarity" }, { - "label": "pack \u2192 unpack preserves values.", - "file_type": "rationale", - "source_file": "tests/test_vector_utils.py", - "source_location": "L13", + "label": "contentHash()", + "file_type": "code", + "source_file": "main/utils/vector.py", + "source_location": "L20", "community": 131, - "norm_label": "pack \u2192 unpack preserves values.", - "id": "tests_test_vector_utils_rationale_13" + "norm_label": "contenthash()", + "id": "utils_vector_contenthash" }, { - "label": "Empty list roundtrips.", - "file_type": "rationale", - "source_file": "tests/test_vector_utils.py", - "source_location": "L21", - "community": 131, - "norm_label": "empty list roundtrips.", - "id": "tests_test_vector_utils_rationale_21" + "label": "getRelevanceScore()", + "file_type": "code", + "source_file": "main/utils/vector.py", + "source_location": "L24", + "community": 27, + "norm_label": "getrelevancescore()", + "id": "utils_vector_getrelevancescore" }, { - "label": "384-dim vector packs to 1536 bytes.", + "label": "Compute relevance as baseScore * timeDecay(lastAccessedAt). Logarithmic dec", "file_type": "rationale", - "source_file": "tests/test_vector_utils.py", - "source_location": "L27", - "community": 131, - "norm_label": "384-dim vector packs to 1536 bytes.", - "id": "tests_test_vector_utils_rationale_27" + "source_file": "main/utils/vector.py", + "source_location": "L25", + "community": 27, + "norm_label": "compute relevance as basescore * timedecay(lastaccessedat). logarithmic dec", + "id": "utils_vector_rationale_25" }, { - "label": "Identical vectors \u2192 score 1.0.", - "file_type": "rationale", - "source_file": "tests/test_vector_utils.py", - "source_location": "L35", - "community": 76, - "norm_label": "identical vectors \u2192 score 1.0.", - "id": "tests_test_vector_utils_rationale_35" + "label": "memory-system-pandas-plan.md", + "file_type": "document", + "source_file": "PLANS/memory-system-pandas-plan.md", + "source_location": "L1", + "community": 66, + "norm_label": "memory-system-pandas-plan.md", + "id": "plans_memory_system_pandas_plan_md" }, { - "label": "Orthogonal vectors \u2192 score 0.0.", - "file_type": "rationale", - "source_file": "tests/test_vector_utils.py", - "source_location": "L40", - "community": 76, - "norm_label": "orthogonal vectors \u2192 score 0.0.", - "id": "tests_test_vector_utils_rationale_40" + "label": "Plan: Memory System with Pandas-First Vector Search", + "file_type": "document", + "source_file": "PLANS/memory-system-pandas-plan.md", + "source_location": "L1", + "community": 66, + "norm_label": "plan: memory system with pandas-first vector search", + "id": "plans_memory_system_pandas_plan_plan_memory_system_with_pandas_first_vector_search" }, { - "label": "Opposite vectors \u2192 score -1.0.", - "file_type": "rationale", - "source_file": "tests/test_vector_utils.py", - "source_location": "L46", - "community": 76, - "norm_label": "opposite vectors \u2192 score -1.0.", - "id": "tests_test_vector_utils_rationale_46" + "label": "Goal", + "file_type": "document", + "source_file": "PLANS/memory-system-pandas-plan.md", + "source_location": "L3", + "community": 66, + "norm_label": "goal", + "id": "plans_memory_system_pandas_plan_goal" }, { - "label": "Zero vector \u2192 score 0.0.", - "file_type": "rationale", - "source_file": "tests/test_vector_utils.py", - "source_location": "L52", - "community": 76, - "norm_label": "zero vector \u2192 score 0.0.", - "id": "tests_test_vector_utils_rationale_52" + "label": "Subagent Research Summary", + "file_type": "document", + "source_file": "PLANS/memory-system-pandas-plan.md", + "source_location": "L7", + "community": 66, + "norm_label": "subagent research summary", + "id": "plans_memory_system_pandas_plan_subagent_research_summary" }, { - "label": "Partially overlapping vectors.", - "file_type": "rationale", - "source_file": "tests/test_vector_utils.py", - "source_location": "L56", - "community": 76, - "norm_label": "partially overlapping vectors.", - "id": "tests_test_vector_utils_rationale_56" + "label": "1. Explore Agent \u2014 Prometheus Architecture", + "file_type": "document", + "source_file": "PLANS/memory-system-pandas-plan.md", + "source_location": "L9", + "community": 66, + "norm_label": "1. explore agent \u2014 prometheus architecture", + "id": "plans_memory_system_pandas_plan_1_explore_agent_prometheus_architecture" }, { - "label": "Empty matrix \u2192 empty array.", - "file_type": "rationale", - "source_file": "tests/test_vector_utils.py", - "source_location": "L68", - "community": 13, - "norm_label": "empty matrix \u2192 empty array.", - "id": "tests_test_vector_utils_rationale_68" + "label": "2. MySQL Vector Storage (Researcher)", + "file_type": "document", + "source_file": "PLANS/memory-system-pandas-plan.md", + "source_location": "L16", + "community": 66, + "norm_label": "2. mysql vector storage (researcher)", + "id": "plans_memory_system_pandas_plan_2_mysql_vector_storage_researcher" }, { - "label": "Single row matches cosine_similarity.", - "file_type": "rationale", - "source_file": "tests/test_vector_utils.py", - "source_location": "L73", - "community": 13, - "norm_label": "single row matches cosine_similarity.", - "id": "tests_test_vector_utils_rationale_73" + "label": "3. Memory Patterns (Researcher)", + "file_type": "document", + "source_file": "PLANS/memory-system-pandas-plan.md", + "source_location": "L25", + "community": 66, + "norm_label": "3. memory patterns (researcher)", + "id": "plans_memory_system_pandas_plan_3_memory_patterns_researcher" }, { - "label": "Multiple rows ranked correctly.", - "file_type": "rationale", - "source_file": "tests/test_vector_utils.py", - "source_location": "L80", - "community": 13, - "norm_label": "multiple rows ranked correctly.", - "id": "tests_test_vector_utils_rationale_80" + "label": "Current State", + "file_type": "document", + "source_file": "PLANS/memory-system-pandas-plan.md", + "source_location": "L32", + "community": 66, + "norm_label": "current state", + "id": "plans_memory_system_pandas_plan_current_state" }, { - "label": "Zero query \u2192 all zeros.", - "file_type": "rationale", - "source_file": "tests/test_vector_utils.py", - "source_location": "L93", - "community": 13, - "norm_label": "zero query \u2192 all zeros.", - "id": "tests_test_vector_utils_rationale_93" + "label": "What's Missing / Needs Change", + "file_type": "document", + "source_file": "PLANS/memory-system-pandas-plan.md", + "source_location": "L43", + "community": 66, + "norm_label": "what's missing / needs change", + "id": "plans_memory_system_pandas_plan_what_s_missing_needs_change" }, { - "label": "Same input \u2192 same hash.", - "file_type": "rationale", - "source_file": "tests/test_vector_utils.py", - "source_location": "L101", - "community": 131, - "norm_label": "same input \u2192 same hash.", - "id": "tests_test_vector_utils_rationale_101" + "label": "A. Vector Embedding Integration", + "file_type": "document", + "source_file": "PLANS/memory-system-pandas-plan.md", + "source_location": "L45", + "community": 66, + "norm_label": "a. vector embedding integration", + "id": "plans_memory_system_pandas_plan_a_vector_embedding_integration" }, { - "label": "Different inputs \u2192 different hashes.", - "file_type": "rationale", - "source_file": "tests/test_vector_utils.py", - "source_location": "L105", - "community": 131, - "norm_label": "different inputs \u2192 different hashes.", - "id": "tests_test_vector_utils_rationale_105" + "label": "B. Pandas-First Vector Cache", + "file_type": "document", + "source_file": "PLANS/memory-system-pandas-plan.md", + "source_location": "L54", + "community": 66, + "norm_label": "b. pandas-first vector cache", + "id": "plans_memory_system_pandas_plan_b_pandas_first_vector_cache" }, { - "label": "Returns 32-char hex string.", - "file_type": "rationale", - "source_file": "tests/test_vector_utils.py", - "source_location": "L109", - "community": 131, - "norm_label": "returns 32-char hex string.", - "id": "tests_test_vector_utils_rationale_109" + "label": "code:python (class MemoryCache:)", + "file_type": "document", + "source_file": "PLANS/memory-system-pandas-plan.md", + "source_location": "L60", + "community": 66, + "norm_label": "code:python (class memorycache:)", + "id": "plans_memory_system_pandas_plan_codeblock_1" }, { - "label": "save_memory()", - "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L3", - "community": 53, - "norm_label": "save_memory()", - "id": "prometheus_memory_save_memory" + "label": "C. Search Upgrade", + "file_type": "document", + "source_file": "PLANS/memory-system-pandas-plan.md", + "source_location": "L123", + "community": 66, + "norm_label": "c. search upgrade", + "id": "plans_memory_system_pandas_plan_c_search_upgrade" }, { - "label": "search_memory()", - "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L6", - "community": 53, - "norm_label": "search_memory()", - "id": "prometheus_memory_search_memory" + "label": "code:python (def searchMemories(cls, db, userId, query, embedding=None, l)", + "file_type": "document", + "source_file": "PLANS/memory-system-pandas-plan.md", + "source_location": "L131", + "community": 66, + "norm_label": "code:python (def searchmemories(cls, db, userid, query, embedding=none, l)", + "id": "plans_memory_system_pandas_plan_codeblock_2" }, { - "label": "New table: `user_memory`", + "label": "D. Memory Extraction", "file_type": "document", - "source_file": "PLANS/memory-system-plan.md", - "source_location": "L59", - "community": 6, - "norm_label": "new table: `user_memory`", - "id": "plans_memory_system_plan_new_table_user_memory" + "source_file": "PLANS/memory-system-pandas-plan.md", + "source_location": "L151", + "community": 66, + "norm_label": "d. memory extraction", + "id": "plans_memory_system_pandas_plan_d_memory_extraction" }, { - "label": "train_script.py", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/train_script.py", + "label": "E. System Prompt Injection", + "file_type": "document", + "source_file": "PLANS/memory-system-pandas-plan.md", + "source_location": "L160", + "community": 66, + "norm_label": "e. system prompt injection", + "id": "plans_memory_system_pandas_plan_e_system_prompt_injection" + }, + { + "label": "Implementation Order", + "file_type": "document", + "source_file": "PLANS/memory-system-pandas-plan.md", + "source_location": "L166", + "community": 66, + "norm_label": "implementation order", + "id": "plans_memory_system_pandas_plan_implementation_order" + }, + { + "label": "Files to Create/Modify", + "file_type": "document", + "source_file": "PLANS/memory-system-pandas-plan.md", + "source_location": "L182", + "community": 66, + "norm_label": "files to create/modify", + "id": "plans_memory_system_pandas_plan_files_to_create_modify" + }, + { + "label": "Key Risks", + "file_type": "document", + "source_file": "PLANS/memory-system-pandas-plan.md", + "source_location": "L194", + "community": 66, + "norm_label": "key risks", + "id": "plans_memory_system_pandas_plan_key_risks" + }, + { + "label": "Success Criteria", + "file_type": "document", + "source_file": "PLANS/memory-system-pandas-plan.md", + "source_location": "L201", + "community": 66, + "norm_label": "success criteria", + "id": "plans_memory_system_pandas_plan_success_criteria" + }, + { + "label": "remove-memory-endpoints.md", + "file_type": "document", + "source_file": "PLANS/remove-memory-endpoints.md", "source_location": "L1", - "community": 139, - "norm_label": "train_script.py", - "id": "main_utils_models_all_minilm_l6_v2_train_script_py" + "community": 159, + "norm_label": "remove-memory-endpoints.md", + "id": "plans_remove_memory_endpoints_md" }, { - "label": "AutoModelForSentenceEmbedding", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/train_script.py", - "source_location": "L40", - "community": 180, - "norm_label": "automodelforsentenceembedding", - "id": "all_minilm_l6_v2_train_script_automodelforsentenceembedding" + "label": "Plan: Remove /memories Endpoints \u2014 Memory via Agent Tools Only", + "file_type": "document", + "source_file": "PLANS/remove-memory-endpoints.md", + "source_location": "L1", + "community": 159, + "norm_label": "plan: remove /memories endpoints \u2014 memory via agent tools only", + "id": "plans_remove_memory_endpoints_plan_remove_memories_endpoints_memory_via_agent_tools_only" }, { - "label": ".__init__()", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/train_script.py", - "source_location": "L41", - "community": 180, - "norm_label": ".__init__()", - "id": "all_minilm_l6_v2_train_script_automodelforsentenceembedding_init" + "label": "Current state", + "file_type": "document", + "source_file": "PLANS/remove-memory-endpoints.md", + "source_location": "L3", + "community": 159, + "norm_label": "current state", + "id": "plans_remove_memory_endpoints_current_state" }, { - "label": ".forward()", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/train_script.py", - "source_location": "L48", - "community": 180, - "norm_label": ".forward()", - "id": "all_minilm_l6_v2_train_script_automodelforsentenceembedding_forward" + "label": "What to remove", + "file_type": "document", + "source_file": "PLANS/remove-memory-endpoints.md", + "source_location": "L14", + "community": 159, + "norm_label": "what to remove", + "id": "plans_remove_memory_endpoints_what_to_remove" }, { - "label": ".mean_pooling()", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/train_script.py", - "source_location": "L56", - "community": 180, - "norm_label": ".mean_pooling()", - "id": "all_minilm_l6_v2_train_script_automodelforsentenceembedding_mean_pooling" + "label": "What stays", + "file_type": "document", + "source_file": "PLANS/remove-memory-endpoints.md", + "source_location": "L22", + "community": 159, + "norm_label": "what stays", + "id": "plans_remove_memory_endpoints_what_stays" }, { - "label": ".save_pretrained()", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/train_script.py", - "source_location": "L61", - "community": 180, - "norm_label": ".save_pretrained()", - "id": "all_minilm_l6_v2_train_script_automodelforsentenceembedding_save_pretrained" + "label": "Security benefits", + "file_type": "document", + "source_file": "PLANS/remove-memory-endpoints.md", + "source_location": "L33", + "community": 159, + "norm_label": "security benefits", + "id": "plans_remove_memory_endpoints_security_benefits" }, { - "label": "train_function()", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/train_script.py", - "source_location": "L71", - "community": 180, - "norm_label": "train_function()", - "id": "all_minilm_l6_v2_train_script_train_function" + "label": "Changes", + "file_type": "document", + "source_file": "PLANS/remove-memory-endpoints.md", + "source_location": "L43", + "community": 159, + "norm_label": "changes", + "id": "plans_remove_memory_endpoints_changes" }, { - "label": "produce_data()", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/train_script.py", - "source_location": "L168", - "community": 139, - "norm_label": "produce_data()", - "id": "all_minilm_l6_v2_train_script_produce_data" + "label": "Implementation", + "file_type": "document", + "source_file": "PLANS/remove-memory-endpoints.md", + "source_location": "L49", + "community": 159, + "norm_label": "implementation", + "id": "plans_remove_memory_endpoints_implementation" }, { - "label": "RedditDataset", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/train_script.py", - "source_location": "L223", - "community": 139, - "norm_label": "redditdataset", - "id": "all_minilm_l6_v2_train_script_redditdataset" + "label": "Total: ~15 min", + "file_type": "document", + "source_file": "PLANS/remove-memory-endpoints.md", + "source_location": "L55", + "community": 159, + "norm_label": "total: ~15 min", + "id": "plans_remove_memory_endpoints_total_15_min" }, { - "label": ".__init__()", + "label": "_now()", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/train_script.py", - "source_location": "L227", - "community": 139, - "norm_label": ".__init__()", - "id": "all_minilm_l6_v2_train_script_redditdataset_init" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L16", + "community": 53, + "norm_label": "_now()", + "id": "prometheus_memory_now" }, { - "label": ".__iter__()", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/train_script.py", - "source_location": "L230", - "community": 139, - "norm_label": ".__iter__()", - "id": "all_minilm_l6_v2_train_script_redditdataset_iter" + "label": "makeChat must include MEMORY_TOOLS alongside MCP sessions.", + "file_type": "rationale", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L48", + "community": 49, + "norm_label": "makechat must include memory_tools alongside mcp sessions.", + "id": "tests_test_memory_tools_wiring_rationale_48" }, { - "label": "Dataset", + "label": "dispatchToolCall must route memory tool names to executeMemoryTool.", + "file_type": "rationale", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L76", + "community": 575, + "norm_label": "dispatchtoolcall must route memory tool names to executememorytool.", + "id": "tests_test_memory_tools_wiring_rationale_76" + }, + { + "label": "d4e5f6a7b8c9_rename_relevance_to_base_score.py", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/train_script.py", - "source_location": "L239", - "community": 139, - "norm_label": "dataset", - "id": "all_minilm_l6_v2_train_script_dataset" + "source_file": "migrations/versions/d4e5f6a7b8c9_rename_relevance_to_base_score.py", + "source_location": "L1", + "community": 244, + "norm_label": "d4e5f6a7b8c9_rename_relevance_to_base_score.py", + "id": "migrations_versions_d4e5f6a7b8c9_rename_relevance_to_base_score_py" }, { - "label": ".__init__()", + "label": "upgrade()", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/train_script.py", - "source_location": "L243", - "community": 180, - "norm_label": ".__init__()", - "id": "all_minilm_l6_v2_train_script_dataset_init" + "source_file": "migrations/versions/d4e5f6a7b8c9_rename_relevance_to_base_score.py", + "source_location": "L18", + "community": 244, + "norm_label": "upgrade()", + "id": "versions_d4e5f6a7b8c9_rename_relevance_to_base_score_upgrade" }, { - "label": ".__iter__()", + "label": "downgrade()", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/train_script.py", - "source_location": "L246", - "community": 139, - "norm_label": ".__iter__()", - "id": "all_minilm_l6_v2_train_script_dataset_iter" + "source_file": "migrations/versions/d4e5f6a7b8c9_rename_relevance_to_base_score.py", + "source_location": "L22", + "community": 244, + "norm_label": "downgrade()", + "id": "versions_d4e5f6a7b8c9_rename_relevance_to_base_score_downgrade" }, { - "label": "Train script for a single file Need to set the TPU address first: export XRT_TP", + "label": "rename relevanceScore to baseScore Revision ID: d4e5f6a7b8c9 Revises: b1c2d3e4f", "file_type": "rationale", - "source_file": "main/utils/models/all-MiniLM-L6-v2/train_script.py", + "source_file": "migrations/versions/d4e5f6a7b8c9_rename_relevance_to_base_score.py", "source_location": "L1", - "community": 139, - "norm_label": "train script for a single file need to set the tpu address first: export xrt_tp", - "id": "all_minilm_l6_v2_train_script_rationale_1" + "community": 244, + "norm_label": "rename relevancescore to basescore revision id: d4e5f6a7b8c9 revises: b1c2d3e4f", + "id": "versions_d4e5f6a7b8c9_rename_relevance_to_base_score_rationale_1" }, { - "label": "A class that handles the reddit data files", - "file_type": "rationale", - "source_file": "main/utils/models/all-MiniLM-L6-v2/train_script.py", - "source_location": "L224", - "community": 139, - "norm_label": "a class that handles the reddit data files", - "id": "all_minilm_l6_v2_train_script_rationale_224" + "label": "decayScores()", + "file_type": "code", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L192", + "community": 53, + "norm_label": "decayscores()", + "id": "prometheus_memory_decayscores" }, { - "label": "A class that handles one dataset", - "file_type": "rationale", - "source_file": "main/utils/models/all-MiniLM-L6-v2/train_script.py", - "source_location": "L240", - "community": 139, - "norm_label": "a class that handles one dataset", - "id": "all_minilm_l6_v2_train_script_rationale_240" + "label": "executeMemoryTool()", + "file_type": "code", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L91", + "community": 116, + "norm_label": "executememorytool()", + "id": "prometheus_agent_executememorytool" }, { - "label": "benchmark_embeddings.py", + "label": ".executeToolCall()", "file_type": "code", - "source_file": "scripts/benchmark_embeddings.py", - "source_location": "L1", - "community": 176, - "norm_label": "benchmark_embeddings.py", - "id": "scripts_benchmark_embeddings_py" + "source_file": "main/app/prometheus/agent.py", + "source_location": "L226", + "community": 116, + "norm_label": ".executetoolcall()", + "id": "prometheus_agent_prometheus_executetoolcall" }, { - "label": "benchmark_st()", + "label": "MemoryManager", "file_type": "code", - "source_file": "scripts/benchmark_embeddings.py", - "source_location": "L17", - "community": 176, - "norm_label": "benchmark_st()", - "id": "scripts_benchmark_embeddings_benchmark_st" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L20", + "community": 140, + "norm_label": "memorymanager", + "id": "prometheus_memory_memorymanager" }, { - "label": "benchmark_onnx()", + "label": "getMemories()", "file_type": "code", - "source_file": "scripts/benchmark_embeddings.py", - "source_location": "L53", - "community": 176, - "norm_label": "benchmark_onnx()", - "id": "scripts_benchmark_embeddings_benchmark_onnx" + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L163", + "community": 84, + "norm_label": "getmemories()", + "id": "controller_prometheus_controller_getmemories" }, { - "label": "benchmark_onnx_direct()", + "label": "createMemory()", "file_type": "code", - "source_file": "scripts/benchmark_embeddings.py", - "source_location": "L102", - "community": 176, - "norm_label": "benchmark_onnx_direct()", - "id": "scripts_benchmark_embeddings_benchmark_onnx_direct" + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L177", + "community": 130, + "norm_label": "creatememory()", + "id": "controller_prometheus_controller_creatememory" }, { - "label": "Fast embedding benchmark \u2014 run locally where model is cached. Compares: 1. sent", - "file_type": "rationale", - "source_file": "scripts/benchmark_embeddings.py", + "label": "deleteMemory()", + "file_type": "code", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L207", + "community": 84, + "norm_label": "deletememory()", + "id": "controller_prometheus_controller_deletememory" + }, + { + "label": "test_memory_controller.py", + "file_type": "code", + "source_file": "tests/test_memory_controller.py", "source_location": "L1", - "community": 176, - "norm_label": "fast embedding benchmark \u2014 run locally where model is cached. compares: 1. sent", - "id": "scripts_benchmark_embeddings_rationale_1" + "community": 67, + "norm_label": "test_memory_controller.py", + "id": "tests_test_memory_controller_py" }, { - "label": "Benchmark sentence-transformers (PyTorch).", - "file_type": "rationale", - "source_file": "scripts/benchmark_embeddings.py", - "source_location": "L18", - "community": 176, - "norm_label": "benchmark sentence-transformers (pytorch).", - "id": "scripts_benchmark_embeddings_rationale_18" + "label": "TestMemoryControllerRoutes", + "file_type": "code", + "source_file": "tests/test_memory_controller.py", + "source_location": "L10", + "community": 67, + "norm_label": "testmemorycontrollerroutes", + "id": "tests_test_memory_controller_testmemorycontrollerroutes" }, { - "label": "Benchmark ONNX Runtime \u2014 fastest path.", - "file_type": "rationale", - "source_file": "scripts/benchmark_embeddings.py", - "source_location": "L54", - "community": 176, - "norm_label": "benchmark onnx runtime \u2014 fastest path.", - "id": "scripts_benchmark_embeddings_rationale_54" + "label": ".test_get_memories_endpoint_exists()", + "file_type": "code", + "source_file": "tests/test_memory_controller.py", + "source_location": "L11", + "community": 67, + "norm_label": ".test_get_memories_endpoint_exists()", + "id": "tests_test_memory_controller_testmemorycontrollerroutes_test_get_memories_endpoint_exists" }, { - "label": "Benchmark ONNX Runtime directly \u2014 export model first, then run.", - "file_type": "rationale", - "source_file": "scripts/benchmark_embeddings.py", - "source_location": "L103", - "community": 176, - "norm_label": "benchmark onnx runtime directly \u2014 export model first, then run.", - "id": "scripts_benchmark_embeddings_rationale_103" + "label": ".test_post_memories_endpoint_exists()", + "file_type": "code", + "source_file": "tests/test_memory_controller.py", + "source_location": "L15", + "community": 67, + "norm_label": ".test_post_memories_endpoint_exists()", + "id": "tests_test_memory_controller_testmemorycontrollerroutes_test_post_memories_endpoint_exists" }, { - "label": "streamMessage must handle function_calls as a list (not dict).", - "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L203", - "community": 383, - "norm_label": "streammessage must handle function_calls as a list (not dict).", - "id": "tests_test_prometheus_auth_coverage_rationale_203" + "label": ".test_delete_memories_endpoint_exists()", + "file_type": "code", + "source_file": "tests/test_memory_controller.py", + "source_location": "L19", + "community": 67, + "norm_label": ".test_delete_memories_endpoint_exists()", + "id": "tests_test_memory_controller_testmemorycontrollerroutes_test_delete_memories_endpoint_exists" }, { - "label": "Cover all methods in chat.py (lines 11-120).", - "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L268", - "community": 52, - "norm_label": "cover all methods in chat.py (lines 11-120).", - "id": "tests_test_prometheus_auth_coverage_rationale_268" + "label": ".test_get_memories_rejects_unauthenticated()", + "file_type": "code", + "source_file": "tests/test_memory_controller.py", + "source_location": "L23", + "community": 67, + "norm_label": ".test_get_memories_rejects_unauthenticated()", + "id": "tests_test_memory_controller_testmemorycontrollerroutes_test_get_memories_rejects_unauthenticated" }, { - "label": "Cover all methods in authentication.py (lines 13-75).", - "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L492", - "community": 88, - "norm_label": "cover all methods in authentication.py (lines 13-75).", - "id": "tests_test_prometheus_auth_coverage_rationale_492" + "label": ".test_get_memories_rejects_basic_user()", + "file_type": "code", + "source_file": "tests/test_memory_controller.py", + "source_location": "L38", + "community": 67, + "norm_label": ".test_get_memories_rejects_basic_user()", + "id": "tests_test_memory_controller_testmemorycontrollerroutes_test_get_memories_rejects_basic_user" }, { - "label": "Cover all methods in session.py (lines 14-154).", - "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L669", - "community": 60, - "norm_label": "cover all methods in session.py (lines 14-154).", - "id": "tests_test_prometheus_auth_coverage_rationale_669" + "label": "TestMemoryEndpointsIntegration", + "file_type": "code", + "source_file": "tests/test_memory_controller.py", + "source_location": "L65", + "community": 67, + "norm_label": "testmemoryendpointsintegration", + "id": "tests_test_memory_controller_testmemoryendpointsintegration" }, { - "label": "Exercises the tzinfo-is-None branch (line 144-148).", - "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L904", - "community": 190, - "norm_label": "exercises the tzinfo-is-none branch (line 144-148).", - "id": "tests_test_prometheus_auth_coverage_rationale_904" + "label": "test_get_memories_calls_manager()", + "file_type": "code", + "source_file": "tests/test_memory_controller.py", + "source_location": "L67", + "community": 67, + "norm_label": "test_get_memories_calls_manager()", + "id": "tests_test_memory_controller_test_get_memories_calls_manager" }, { - "label": "Exercises the expiresAt-is-None branch (line 143).", - "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L918", - "community": 165, - "norm_label": "exercises the expiresat-is-none branch (line 143).", - "id": "tests_test_prometheus_auth_coverage_rationale_918" + "label": "test_create_memory_calls_manager()", + "file_type": "code", + "source_file": "tests/test_memory_controller.py", + "source_location": "L90", + "community": 67, + "norm_label": "test_create_memory_calls_manager()", + "id": "tests_test_memory_controller_test_create_memory_calls_manager" }, { - "label": "Cover getGoogleSSO (lines 6-14).", - "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L937", - "community": 68, - "norm_label": "cover getgooglesso (lines 6-14).", - "id": "tests_test_prometheus_auth_coverage_rationale_937" + "label": "test_create_memory_limit_reached()", + "file_type": "code", + "source_file": "tests/test_memory_controller.py", + "source_location": "L111", + "community": 67, + "norm_label": "test_create_memory_limit_reached()", + "id": "tests_test_memory_controller_test_create_memory_limit_reached" }, { - "label": "streamMessage inlines MCP setup \u2014 chatSession no longer exists.", - "file_type": "rationale", - "source_file": "tests/test_streammessage_no_chatsession.py", - "source_location": "L24", - "community": 138, - "norm_label": "streammessage inlines mcp setup \u2014 chatsession no longer exists.", - "id": "tests_test_streammessage_no_chatsession_rationale_24" + "label": "test_delete_memory_calls_manager()", + "file_type": "code", + "source_file": "tests/test_memory_controller.py", + "source_location": "L126", + "community": 67, + "norm_label": "test_delete_memory_calls_manager()", + "id": "tests_test_memory_controller_test_delete_memory_calls_manager" }, { - "label": "streamMessage yields text chunks via inlined MCP setup.", + "label": "test_delete_memory_not_found()", + "file_type": "code", + "source_file": "tests/test_memory_controller.py", + "source_location": "L135", + "community": 67, + "norm_label": "test_delete_memory_not_found()", + "id": "tests_test_memory_controller_test_delete_memory_not_found" + }, + { + "label": ".test_create_memory_missing_key()", + "file_type": "code", + "source_file": "tests/test_memory_controller.py", + "source_location": "L141", + "community": 67, + "norm_label": ".test_create_memory_missing_key()", + "id": "tests_test_memory_controller_testmemoryendpointsintegration_test_create_memory_missing_key" + }, + { + "label": ".test_create_memory_missing_value()", + "file_type": "code", + "source_file": "tests/test_memory_controller.py", + "source_location": "L145", + "community": 67, + "norm_label": ".test_create_memory_missing_value()", + "id": "tests_test_memory_controller_testmemoryendpointsintegration_test_create_memory_missing_value" + }, + { + "label": "Custom SQLAlchemy type for storing float32 embeddings as MySQL BLOB.", "file_type": "rationale", - "source_file": "tests/test_streammessage_no_chatsession.py", - "source_location": "L34", - "community": 384, - "norm_label": "streammessage yields text chunks via inlined mcp setup.", - "id": "tests_test_streammessage_no_chatsession_rationale_34" + "source_file": "main/models/memory_types.py", + "source_location": "L6", + "community": 51, + "norm_label": "custom sqlalchemy type for storing float32 embeddings as mysql blob.", + "id": "models_memory_types_rationale_6" }, { - "label": "chatSession attribute must not exist \u2014 MCP setup is inlined.", + "label": "Vectorized cosine similarity: one query against N embeddings.", "file_type": "rationale", - "source_file": "tests/test_streammessage_no_chatsession.py", - "source_location": "L82", - "community": 385, - "norm_label": "chatsession attribute must not exist \u2014 mcp setup is inlined.", - "id": "tests_test_streammessage_no_chatsession_rationale_82" + "source_file": "main/utils/vector.py", + "source_location": "L6", + "community": 131, + "norm_label": "vectorized cosine similarity: one query against n embeddings.", + "id": "utils_vector_rationale_6" }, { - "label": "streamMessage handles function call loops via inlined MCP setup.", + "label": "MD5 hash for change detection.", "file_type": "rationale", - "source_file": "tests/test_streammessage_no_chatsession.py", - "source_location": "L105", - "community": 386, - "norm_label": "streammessage handles function call loops via inlined mcp setup.", - "id": "tests_test_streammessage_no_chatsession_rationale_105" + "source_file": "main/utils/vector.py", + "source_location": "L19", + "community": 131, + "norm_label": "md5 hash for change detection.", + "id": "utils_vector_rationale_19" }, { - "label": "PROMETHEUS_PLAN.md", + "label": "memory-system-plan.md", "file_type": "document", - "source_file": "PROMETHEUS_PLAN.md", + "source_file": "PLANS/memory-system-plan.md", "source_location": "L1", - "community": 77, - "norm_label": "prometheus_plan.md", - "id": "prometheus_plan_md" + "community": 6, + "norm_label": "memory-system-plan.md", + "id": "plans_memory_system_plan_md" }, { - "label": "Prometheus Roadmap \u2014 4 Features", + "label": "Mansa Memory System \u2014 Implementation Plan (v2)", "file_type": "document", - "source_file": "PROMETHEUS_PLAN.md", + "source_file": "PLANS/memory-system-plan.md", "source_location": "L1", - "community": 77, - "norm_label": "prometheus roadmap \u2014 4 features", - "id": "server_prometheus_plan_prometheus_roadmap_4_features" + "community": 6, + "norm_label": "mansa memory system \u2014 implementation plan (v2)", + "id": "plans_memory_system_plan_mansa_memory_system_implementation_plan_v2" }, { - "label": "Phase 1: Code Sandbox (Docker MicroVMs)", + "label": "Goal", "file_type": "document", - "source_file": "PROMETHEUS_PLAN.md", + "source_file": "PLANS/memory-system-plan.md", "source_location": "L3", - "community": 77, - "norm_label": "phase 1: code sandbox (docker microvms)", - "id": "server_prometheus_plan_phase_1_code_sandbox_docker_microvms" + "community": 6, + "norm_label": "goal", + "id": "plans_memory_system_plan_goal" }, { - "label": "Architecture", + "label": "1. Permission System", "file_type": "document", - "source_file": "PROMETHEUS_PLAN.md", - "source_location": "L5", - "community": 77, - "norm_label": "architecture", - "id": "server_prometheus_plan_architecture" + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L9", + "community": 6, + "norm_label": "1. permission system", + "id": "plans_memory_system_plan_1_permission_system" }, { - "label": "code:block1 (Agent calls tools (StocksAPI, etc.) \u2192 gets data \u2192 agent deci)", + "label": "Current state (`main/utils/roles.py`)", "file_type": "document", - "source_file": "PROMETHEUS_PLAN.md", - "source_location": "L19", - "community": 77, - "norm_label": "code:block1 (agent calls tools (stocksapi, etc.) \u2192 gets data \u2192 agent deci)", - "id": "server_prometheus_plan_codeblock_1" + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L11", + "community": 6, + "norm_label": "current state (`main/utils/roles.py`)", + "id": "plans_memory_system_plan_current_state_main_utils_roles_py" }, { - "label": "code:python (import sys, io, base64, json, matplotlib)", + "label": "code:python (class Permission(IntFlag):)", "file_type": "document", - "source_file": "PROMETHEUS_PLAN.md", - "source_location": "L44", - "community": 77, - "norm_label": "code:python (import sys, io, base64, json, matplotlib)", - "id": "server_prometheus_plan_codeblock_2" + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L15", + "community": 6, + "norm_label": "code:python (class permission(intflag):)", + "id": "plans_memory_system_plan_codeblock_1" }, { - "label": "code:json ({\"type\": \"sandbox_start\", \"stream\": \"system\"})", + "label": "New permission", "file_type": "document", - "source_file": "PROMETHEUS_PLAN.md", - "source_location": "L75", - "community": 77, - "norm_label": "code:json ({\"type\": \"sandbox_start\", \"stream\": \"system\"})", - "id": "server_prometheus_plan_codeblock_3" + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L26", + "community": 6, + "norm_label": "new permission", + "id": "plans_memory_system_plan_new_permission" }, { - "label": "Implementation steps", + "label": "code:python (PROMETHEUS_EXTENDED_MEMORIES = auto() # 50 memories (vs 5 f)", "file_type": "document", - "source_file": "PROMETHEUS_PLAN.md", - "source_location": "L83", - "community": 77, - "norm_label": "implementation steps", - "id": "server_prometheus_plan_implementation_steps" + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L28", + "community": 6, + "norm_label": "code:python (prometheus_extended_memories = auto() # 50 memories (vs 5 f)", + "id": "plans_memory_system_plan_codeblock_2" }, { - "label": "Phase 2: Per-Session Vector Memory", + "label": "code:python (PREMIUM = USER | USE_PROMETHEUS | USE_OGUM | PROMETHEUS_EXTE)", "file_type": "document", - "source_file": "PROMETHEUS_PLAN.md", - "source_location": "L94", - "community": 77, - "norm_label": "phase 2: per-session vector memory", - "id": "server_prometheus_plan_phase_2_per_session_vector_memory" + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L34", + "community": 6, + "norm_label": "code:python (premium = user | use_prometheus | use_ogum | prometheus_exte)", + "id": "plans_memory_system_plan_codeblock_3" }, { - "label": "Architecture", + "label": "Memory limit logic", "file_type": "document", - "source_file": "PROMETHEUS_PLAN.md", - "source_location": "L96", - "community": 77, - "norm_label": "architecture", - "id": "server_prometheus_plan_architecture_96" + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L38", + "community": 6, + "norm_label": "memory limit logic", + "id": "plans_memory_system_plan_memory_limit_logic" }, { - "label": "code:json ({)", + "label": "code:python (def get_memory_limit(user_roles: list[str]) -> int:)", "file_type": "document", - "source_file": "PROMETHEUS_PLAN.md", - "source_location": "L102", - "community": 77, - "norm_label": "code:json ({)", - "id": "server_prometheus_plan_codeblock_4" + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L40", + "community": 6, + "norm_label": "code:python (def get_memory_limit(user_roles: list[str]) -> int:)", + "id": "plans_memory_system_plan_codeblock_4" }, { - "label": "code:python (class MemoryManager:)", + "label": "Rolling out to free users", "file_type": "document", - "source_file": "PROMETHEUS_PLAN.md", - "source_location": "L120", - "community": 77, - "norm_label": "code:python (class memorymanager:)", - "id": "server_prometheus_plan_codeblock_5" + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L48", + "community": 6, + "norm_label": "rolling out to free users", + "id": "plans_memory_system_plan_rolling_out_to_free_users" }, { - "label": "Implementation steps", + "label": "2. Database Schema", "file_type": "document", - "source_file": "PROMETHEUS_PLAN.md", - "source_location": "L132", - "community": 77, - "norm_label": "implementation steps", - "id": "server_prometheus_plan_implementation_steps_132" + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L57", + "community": 6, + "norm_label": "2. database schema", + "id": "plans_memory_system_plan_2_database_schema" }, { - "label": "Phase 3: Multi-Session Memory with Ranking", + "label": "New table: `prometheus_memories`", "file_type": "document", - "source_file": "PROMETHEUS_PLAN.md", - "source_location": "L141", - "community": 77, - "norm_label": "phase 3: multi-session memory with ranking", - "id": "server_prometheus_plan_phase_3_multi_session_memory_with_ranking" + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L59", + "community": 6, + "norm_label": "new table: `prometheus_memories`", + "id": "plans_memory_system_plan_new_table_prometheus_memories" }, { - "label": "Architecture", + "label": "code:sql (CREATE TABLE prometheus_memories ()", "file_type": "document", - "source_file": "PROMETHEUS_PLAN.md", - "source_location": "L143", - "community": 77, - "norm_label": "architecture", - "id": "server_prometheus_plan_architecture_143" + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L61", + "community": 6, + "norm_label": "code:sql (create table prometheus_memories ()", + "id": "plans_memory_system_plan_codeblock_5" }, { - "label": "code:sql (CREATE TABLE prometheus_memory ()", + "label": "Alembic migration", "file_type": "document", - "source_file": "PROMETHEUS_PLAN.md", - "source_location": "L147", - "community": 77, - "norm_label": "code:sql (create table prometheus_memory ()", - "id": "server_prometheus_plan_codeblock_6" + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L89", + "community": 6, + "norm_label": "alembic migration", + "id": "plans_memory_system_plan_alembic_migration" }, { - "label": "code:python (def recency_weight(days_since: float, half_life: float = 70.)", + "label": "3. SQLAlchemy Models", "file_type": "document", - "source_file": "PROMETHEUS_PLAN.md", - "source_location": "L178", - "community": 77, - "norm_label": "code:python (def recency_weight(days_since: float, half_life: float = 70.)", - "id": "server_prometheus_plan_codeblock_7" + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L95", + "community": 6, + "norm_label": "3. sqlalchemy models", + "id": "plans_memory_system_plan_3_sqlalchemy_models" }, { - "label": "Implementation steps", + "label": "`main/models/memory.py` \u2014 New file", "file_type": "document", - "source_file": "PROMETHEUS_PLAN.md", - "source_location": "L198", - "community": 77, - "norm_label": "implementation steps", - "id": "server_prometheus_plan_implementation_steps_198" + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L97", + "community": 6, + "norm_label": "`main/models/memory.py` \u2014 new file", + "id": "plans_memory_system_plan_main_models_memory_py_new_file" }, { - "label": ".updateDates()", - "file_type": "code", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L33", - "community": 116, - "norm_label": ".updatedates()", - "id": "prometheus_agent_prometheus_updatedates" + "label": "code:python (from sqlalchemy import Column, Integer, String, Text, Float,)", + "file_type": "document", + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L99", + "community": 6, + "norm_label": "code:python (from sqlalchemy import column, integer, string, text, float,)", + "id": "plans_memory_system_plan_codeblock_6" }, { - "label": "chatSession()", - "file_type": "code", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L47", - "community": 116, - "norm_label": "chatsession()", - "id": "prometheus_agent_chatsession" + "label": "`VectorType` \u2014 Custom TypeDecorator", + "file_type": "document", + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L136", + "community": 6, + "norm_label": "`vectortype` \u2014 custom typedecorator", + "id": "plans_memory_system_plan_vectortype_custom_typedecorator" }, { - "label": "test_init_creates_client_and_updates_dates_debug()", - "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L31", - "community": 29, - "norm_label": "test_init_creates_client_and_updates_dates_debug()", - "id": "tests_test_prometheus_auth_coverage_test_init_creates_client_and_updates_dates_debug" + "label": "code:python (# main/models/memory_types.py)", + "file_type": "document", + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L138", + "community": 6, + "norm_label": "code:python (# main/models/memory_types.py)", + "id": "plans_memory_system_plan_codeblock_7" }, { - "label": "test_init_creates_client_and_updates_dates_prod()", - "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L46", - "community": 29, - "norm_label": "test_init_creates_client_and_updates_dates_prod()", - "id": "tests_test_prometheus_auth_coverage_test_init_creates_client_and_updates_dates_prod" + "label": "4. Vector Utilities", + "file_type": "document", + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L167", + "community": 6, + "norm_label": "4. vector utilities", + "id": "plans_memory_system_plan_4_vector_utilities" }, { - "label": "Cover __init__ and updateDates.", - "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L27", - "community": 68, - "norm_label": "cover __init__ and updatedates.", - "id": "tests_test_prometheus_auth_coverage_rationale_27" + "label": "`main/utils/vector.py` \u2014 New file", + "file_type": "document", + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L169", + "community": 6, + "norm_label": "`main/utils/vector.py` \u2014 new file", + "id": "plans_memory_system_plan_main_utils_vector_py_new_file" }, { - "label": "Cover sendMessage and streamMessage in agent.py.", - "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L58", - "community": 68, - "norm_label": "cover sendmessage and streammessage in agent.py.", - "id": "tests_test_prometheus_auth_coverage_rationale_58" + "label": "code:python (import hashlib)", + "file_type": "document", + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L171", + "community": 6, + "norm_label": "code:python (import hashlib)", + "id": "plans_memory_system_plan_codeblock_8" }, { - "label": "Cover all methods in chat.py (lines 11-120).", - "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L174", - "community": 52, - "norm_label": "cover all methods in chat.py (lines 11-120).", - "id": "tests_test_prometheus_auth_coverage_rationale_174" + "label": "5. Memory Manager (Service Layer)", + "file_type": "document", + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L214", + "community": 6, + "norm_label": "5. memory manager (service layer)", + "id": "plans_memory_system_plan_5_memory_manager_service_layer" }, { - "label": "Cover all methods in authentication.py (lines 13-75).", - "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L398", - "community": 88, - "norm_label": "cover all methods in authentication.py (lines 13-75).", - "id": "tests_test_prometheus_auth_coverage_rationale_398" + "label": "`main/app/prometheus/memory.py` \u2014 New file", + "file_type": "document", + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L216", + "community": 6, + "norm_label": "`main/app/prometheus/memory.py` \u2014 new file", + "id": "plans_memory_system_plan_main_app_prometheus_memory_py_new_file" }, { - "label": "Cover all methods in session.py (lines 14-154).", - "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L575", - "community": 60, - "norm_label": "cover all methods in session.py (lines 14-154).", - "id": "tests_test_prometheus_auth_coverage_rationale_575" - }, - { - "label": "Exercises the tzinfo-is-None branch (line 144-148).", - "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L810", - "community": 190, - "norm_label": "exercises the tzinfo-is-none branch (line 144-148).", - "id": "tests_test_prometheus_auth_coverage_rationale_810" + "label": "code:python (from datetime import datetime, timedelta)", + "file_type": "document", + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L220", + "community": 6, + "norm_label": "code:python (from datetime import datetime, timedelta)", + "id": "plans_memory_system_plan_codeblock_9" }, { - "label": "Exercises the expiresAt-is-None branch (line 143).", - "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L824", - "community": 165, - "norm_label": "exercises the expiresat-is-none branch (line 143).", - "id": "tests_test_prometheus_auth_coverage_rationale_824" + "label": "6. Tool Integration (Gemini)", + "file_type": "document", + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L468", + "community": 6, + "norm_label": "6. tool integration (gemini)", + "id": "plans_memory_system_plan_6_tool_integration_gemini" }, { - "label": "Cover getGoogleSSO (lines 6-14).", - "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L843", - "community": 68, - "norm_label": "cover getgooglesso (lines 6-14).", - "id": "tests_test_prometheus_auth_coverage_rationale_843" + "label": "Native Gemini tools (not MCP)", + "file_type": "document", + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L470", + "community": 6, + "norm_label": "native gemini tools (not mcp)", + "id": "plans_memory_system_plan_native_gemini_tools_not_mcp" }, { - "label": "TestPrometheusGeneratorInit", - "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L26", - "community": 68, - "norm_label": "testprometheusgeneratorinit", - "id": "tests_test_prometheus_auth_coverage_testprometheusgeneratorinit" + "label": "Changes to `agent.py`", + "file_type": "document", + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L474", + "community": 6, + "norm_label": "changes to `agent.py`", + "id": "plans_memory_system_plan_changes_to_agent_py" }, { - "label": "TestPrometheusGeneratorExecuteWorkflow", - "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L57", - "community": 68, - "norm_label": "testprometheusgeneratorexecuteworkflow", - "id": "tests_test_prometheus_auth_coverage_testprometheusgeneratorexecuteworkflow" + "label": "code:python (# In openMCPClients(), add memory tools alongside MCP sessio)", + "file_type": "document", + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L476", + "community": 6, + "norm_label": "code:python (# in openmcpclients(), add memory tools alongside mcp sessio)", + "id": "plans_memory_system_plan_codeblock_10" }, { - "label": "_make_generator()", - "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L62", - "community": 29, - "norm_label": "_make_generator()", - "id": "tests_test_prometheus_auth_coverage_make_generator" + "label": "7. System Prompt Injection", + "file_type": "document", + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L550", + "community": 6, + "norm_label": "7. system prompt injection", + "id": "plans_memory_system_plan_7_system_prompt_injection" }, { - "label": "test_execute_workflow_basic_no_history()", - "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L72", - "community": 29, - "norm_label": "test_execute_workflow_basic_no_history()", - "id": "tests_test_prometheus_auth_coverage_test_execute_workflow_basic_no_history" + "label": "Dynamic prompt with memories", + "file_type": "document", + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L552", + "community": 6, + "norm_label": "dynamic prompt with memories", + "id": "plans_memory_system_plan_dynamic_prompt_with_memories" }, { - "label": "test_execute_workflow_with_history()", - "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L117", - "community": 29, - "norm_label": "test_execute_workflow_with_history()", - "id": "tests_test_prometheus_auth_coverage_test_execute_workflow_with_history" + "label": "code:python (def _build_system_prompt(user_id: int, db: Session) -> str:)", + "file_type": "document", + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L556", + "community": 6, + "norm_label": "code:python (def _build_system_prompt(user_id: int, db: session) -> str:)", + "id": "plans_memory_system_plan_codeblock_11" }, { - "label": "test_execute_workflow_with_session_summary()", - "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L144", - "community": 29, - "norm_label": "test_execute_workflow_with_session_summary()", - "id": "tests_test_prometheus_auth_coverage_test_execute_workflow_with_session_summary" + "label": "Changes to `chat()` method", + "file_type": "document", + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L585", + "community": 6, + "norm_label": "changes to `chat()` method", + "id": "plans_memory_system_plan_changes_to_chat_method" }, { - "label": "test_execute_workflow_session_db_exception()", - "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L175", - "community": 29, - "norm_label": "test_execute_workflow_session_db_exception()", - "id": "tests_test_prometheus_auth_coverage_test_execute_workflow_session_db_exception" + "label": "code:python (# In chat() method, replace static prompt:)", + "file_type": "document", + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L587", + "community": 6, + "norm_label": "code:python (# in chat() method, replace static prompt:)", + "id": "plans_memory_system_plan_codeblock_12" }, { - "label": "test_execute_workflow_global_request_with_api_key()", - "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L202", - "community": 29, - "norm_label": "test_execute_workflow_global_request_with_api_key()", - "id": "tests_test_prometheus_auth_coverage_test_execute_workflow_global_request_with_api_key" + "label": "8. Controller Endpoints", + "file_type": "document", + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L597", + "community": 6, + "norm_label": "8. controller endpoints", + "id": "plans_memory_system_plan_8_controller_endpoints" }, { - "label": "test_execute_workflow_global_request_api_error()", - "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L251", - "community": 29, - "norm_label": "test_execute_workflow_global_request_api_error()", - "id": "tests_test_prometheus_auth_coverage_test_execute_workflow_global_request_api_error" + "label": "`prometheus_controller.py` additions", + "file_type": "document", + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L599", + "community": 6, + "norm_label": "`prometheus_controller.py` additions", + "id": "plans_memory_system_plan_prometheus_controller_py_additions" }, { - "label": "test_fetch_stock_data_exception()", - "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L289", - "community": 29, - "norm_label": "test_fetch_stock_data_exception()", - "id": "tests_test_prometheus_auth_coverage_test_fetch_stock_data_exception" + "label": "code:python (# GET /memories \u2014 list user's memories)", + "file_type": "document", + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L603", + "community": 6, + "norm_label": "code:python (# get /memories \u2014 list user's memories)", + "id": "plans_memory_system_plan_codeblock_13" }, { - "label": "test_fetch_stock_data_non_200()", - "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L325", - "community": 29, - "norm_label": "test_fetch_stock_data_non_200()", - "id": "tests_test_prometheus_auth_coverage_test_fetch_stock_data_non_200" + "label": "9. Memory Decay (Background Job)", + "file_type": "document", + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L658", + "community": 6, + "norm_label": "9. memory decay (background job)", + "id": "plans_memory_system_plan_9_memory_decay_background_job" }, { - "label": "test_execute_workflow_stage4_summary_update()", - "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L364", - "community": 29, - "norm_label": "test_execute_workflow_stage4_summary_update()", - "id": "tests_test_prometheus_auth_coverage_test_execute_workflow_stage4_summary_update" + "label": "code:python (# Daily at 3 AM)", + "file_type": "document", + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L660", + "community": 6, + "norm_label": "code:python (# daily at 3 am)", + "id": "plans_memory_system_plan_codeblock_14" }, { - "label": "test_execute_workflow_global_request_status_not_200()", - "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L396", - "community": 29, - "norm_label": "test_execute_workflow_global_request_status_not_200()", - "id": "tests_test_prometheus_auth_coverage_test_execute_workflow_global_request_status_not_200" + "label": "10. File Changes Summary", + "file_type": "document", + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L671", + "community": 6, + "norm_label": "10. file changes summary", + "id": "plans_memory_system_plan_10_file_changes_summary" }, { - "label": "Stage 1 + Stage 2 + Stage 3, no history, no sessionId.", - "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L73", - "community": 387, - "norm_label": "stage 1 + stage 2 + stage 3, no history, no sessionid.", - "id": "tests_test_prometheus_auth_coverage_rationale_73" + "label": "11. Implementation Order", + "file_type": "document", + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L686", + "community": 6, + "norm_label": "11. implementation order", + "id": "plans_memory_system_plan_11_implementation_order" }, { - "label": "Test history formatting (lines 48-49, 159-162).", - "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L118", - "community": 388, - "norm_label": "test history formatting (lines 48-49, 159-162).", - "id": "tests_test_prometheus_auth_coverage_rationale_118" + "label": "12. Key Design Decisions", + "file_type": "document", + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L704", + "community": 6, + "norm_label": "12. key design decisions", + "id": "plans_memory_system_plan_12_key_design_decisions" }, { - "label": "Stage 0: sessionId+db summary loading (lines 55-62).", - "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L145", - "community": 389, - "norm_label": "stage 0: sessionid+db summary loading (lines 55-62).", - "id": "tests_test_prometheus_auth_coverage_rationale_145" + "label": "13. Risks & Mitigations", + "file_type": "document", + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L720", + "community": 6, + "norm_label": "13. risks & mitigations", + "id": "plans_memory_system_plan_13_risks_mitigations" }, { - "label": "Global request API error (lines 208-209).", - "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L252", - "community": 390, - "norm_label": "global request api error (lines 208-209).", - "id": "tests_test_prometheus_auth_coverage_rationale_252" + "label": "14. Future Enhancements (v2+)", + "file_type": "document", + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L732", + "community": 6, + "norm_label": "14. future enhancements (v2+)", + "id": "plans_memory_system_plan_14_future_enhancements_v2" }, { - "label": "fetchStockData exception path (lines 223-225).", + "label": "All memory operations. Stateless class methods.", "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L290", - "community": 391, - "norm_label": "fetchstockdata exception path (lines 223-225).", - "id": "tests_test_prometheus_auth_coverage_rationale_290" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L14", + "community": 140, + "norm_label": "all memory operations. stateless class methods.", + "id": "prometheus_memory_rationale_14" }, { - "label": "fetchStockData non-200 status (line 222).", - "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L326", - "community": 392, - "norm_label": "fetchstockdata non-200 status (line 222).", - "id": "tests_test_prometheus_auth_coverage_rationale_326" + "label": "_build_system_prompt()", + "file_type": "code", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L27", + "community": 116, + "norm_label": "_build_system_prompt()", + "id": "prometheus_agent_build_system_prompt" }, { - "label": "Stage 4: summary update when len(history) % 10 == 0 (lines 325-363).", - "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L365", - "community": 393, - "norm_label": "stage 4: summary update when len(history) % 10 == 0 (lines 325-363).", - "id": "tests_test_prometheus_auth_coverage_rationale_365" + "label": "_get_memory_tools()", + "file_type": "code", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L57", + "community": 116, + "norm_label": "_get_memory_tools()", + "id": "prometheus_agent_get_memory_tools" }, { - "label": "Global request with non-200 status (line 201-203 skipped).", - "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L397", - "community": 394, - "norm_label": "global request with non-200 status (line 201-203 skipped).", - "id": "tests_test_prometheus_auth_coverage_rationale_397" + "label": "_execute_memory_tool()", + "file_type": "code", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L92", + "community": 116, + "norm_label": "_execute_memory_tool()", + "id": "prometheus_agent_execute_memory_tool" }, { - "label": "Cover all methods in chat.py (lines 11-120).", + "label": "Build system prompt with user memories injected.", "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L440", - "community": 52, - "norm_label": "cover all methods in chat.py (lines 11-120).", - "id": "tests_test_prometheus_auth_coverage_rationale_440" + "source_file": "main/app/prometheus/agent.py", + "source_location": "L28", + "community": 116, + "norm_label": "build system prompt with user memories injected.", + "id": "prometheus_agent_rationale_28" }, { - "label": "Cover all methods in authentication.py (lines 13-75).", + "label": "Native Gemini function declarations for memory operations.", "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L664", - "community": 88, - "norm_label": "cover all methods in authentication.py (lines 13-75).", - "id": "tests_test_prometheus_auth_coverage_rationale_664" + "source_file": "main/app/prometheus/agent.py", + "source_location": "L58", + "community": 116, + "norm_label": "native gemini function declarations for memory operations.", + "id": "prometheus_agent_rationale_58" }, { - "label": "Cover all methods in session.py (lines 14-154).", + "label": "Handle memory tool calls from Gemini.", "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L841", - "community": 60, - "norm_label": "cover all methods in session.py (lines 14-154).", - "id": "tests_test_prometheus_auth_coverage_rationale_841" + "source_file": "main/app/prometheus/agent.py", + "source_location": "L93", + "community": 116, + "norm_label": "handle memory tool calls from gemini.", + "id": "prometheus_agent_rationale_93" }, { - "label": "Exercises the tzinfo-is-None branch (line 144-148).", - "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L1076", - "community": 190, - "norm_label": "exercises the tzinfo-is-none branch (line 144-148).", - "id": "tests_test_prometheus_auth_coverage_rationale_1076" + "label": "get_memory_limit()", + "file_type": "code", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L17", + "community": 53, + "norm_label": "get_memory_limit()", + "id": "prometheus_memory_get_memory_limit" }, { - "label": "Exercises the expiresAt-is-None branch (line 143).", - "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L1090", - "community": 165, - "norm_label": "exercises the expiresat-is-none branch (line 143).", - "id": "tests_test_prometheus_auth_coverage_rationale_1090" + "label": "count_memories()", + "file_type": "code", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L24", + "community": 53, + "norm_label": "count_memories()", + "id": "prometheus_memory_count_memories" }, { - "label": "Cover getGoogleSSO (lines 6-14).", - "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L1109", - "community": 68, - "norm_label": "cover getgooglesso (lines 6-14).", - "id": "tests_test_prometheus_auth_coverage_rationale_1109" + "label": "upsert_memory()", + "file_type": "code", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L34", + "community": 53, + "norm_label": "upsert_memory()", + "id": "prometheus_memory_upsert_memory" }, { - "label": "generation.py", + "label": "_fulltext_search()", "file_type": "code", - "source_file": "main/app/prometheus/generation.py", - "source_location": "L1", - "community": 162, - "norm_label": "generation.py", - "id": "main_app_prometheus_generation_py" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L138", + "community": 53, + "norm_label": "_fulltext_search()", + "id": "prometheus_memory_fulltext_search" }, { - "label": "PrometheusGenerator", + "label": "get_user_memories()", "file_type": "code", - "source_file": "main/app/prometheus/generation.py", - "source_location": "L18", - "community": 29, - "norm_label": "prometheusgenerator", - "id": "prometheus_generation_prometheusgenerator" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L168", + "community": 53, + "norm_label": "get_user_memories()", + "id": "prometheus_memory_get_user_memories" }, { - "label": ".__init__()", + "label": "delete_memory()", "file_type": "code", - "source_file": "main/app/prometheus/generation.py", - "source_location": "L19", - "community": 29, - "norm_label": ".__init__()", - "id": "prometheus_generation_prometheusgenerator_init" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L195", + "community": 53, + "norm_label": "delete_memory()", + "id": "prometheus_memory_delete_memory" }, { - "label": ".updateDates()", + "label": "decay_scores()", "file_type": "code", - "source_file": "main/app/prometheus/generation.py", - "source_location": "L23", - "community": 29, - "norm_label": ".updatedates()", - "id": "prometheus_generation_prometheusgenerator_updatedates" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L209", + "community": 53, + "norm_label": "decay_scores()", + "id": "prometheus_memory_decay_scores" }, { - "label": ".executeWorkflow()", + "label": "archive_dead()", "file_type": "code", - "source_file": "main/app/prometheus/generation.py", - "source_location": "L36", - "community": 162, - "norm_label": ".executeworkflow()", - "id": "prometheus_generation_prometheusgenerator_executeworkflow" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L223", + "community": 53, + "norm_label": "archive_dead()", + "id": "prometheus_memory_archive_dead" }, { - "label": "Get year-based historical financial data for Brazilian B3 stocks. Returns", + "label": "Determine max memories based on user permissions.", "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L65", - "community": 197, - "norm_label": "get year-based historical financial data for brazilian b3 stocks. returns", - "id": "controller_stocksapi_controller_rationale_65" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L18", + "community": 370, + "norm_label": "determine max memories based on user permissions.", + "id": "prometheus_memory_rationale_18" }, { - "label": "Get point-in-time fundamental/valuation data for Brazilian B3 stocks. Ret", + "label": "Count active memories for a user.", "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L123", - "community": 157, - "norm_label": "get point-in-time fundamental/valuation data for brazilian b3 stocks. ret", - "id": "controller_stocksapi_controller_rationale_123" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L25", + "community": 371, + "norm_label": "count active memories for a user.", + "id": "prometheus_memory_rationale_25" }, { - "label": "Get 10-year daily price history (cotation) for Brazilian B3 stocks. Retur", + "label": "Insert or update a memory. Checks limit before insert.", "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L184", - "community": 169, - "norm_label": "get 10-year daily price history (cotation) for brazilian b3 stocks. retur", - "id": "controller_stocksapi_controller_rationale_184" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L45", + "community": 372, + "norm_label": "insert or update a memory. checks limit before insert.", + "id": "prometheus_memory_rationale_45" }, { - "label": "Get real-time price quotation for a single Brazilian B3 stock. Returns th", + "label": "Search user memories. Vector cosine \u2192 FULLTEXT fallback.", "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L232", - "community": 81, - "norm_label": "get real-time price quotation for a single brazilian b3 stock. returns th", - "id": "controller_stocksapi_controller_rationale_232" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L97", + "community": 373, + "norm_label": "search user memories. vector cosine \u2192 fulltext fallback.", + "id": "prometheus_memory_rationale_97" }, { - "label": "Both cookies should have secure flag (HTTPS only).", + "label": "List user's memories (paginated).", "file_type": "rationale", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L167", - "community": 395, - "norm_label": "both cookies should have secure flag (https only).", - "id": "tests_test_oauth_cookie_security_rationale_167" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L171", + "community": 374, + "norm_label": "list user's memories (paginated).", + "id": "prometheus_memory_rationale_171" }, { - "label": "When no state param, return JSON response (not redirect).", + "label": "Soft-delete a memory.", "file_type": "rationale", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L199", - "community": 396, - "norm_label": "when no state param, return json response (not redirect).", - "id": "tests_test_oauth_cookie_security_rationale_199" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L196", + "community": 375, + "norm_label": "soft-delete a memory.", + "id": "prometheus_memory_rationale_196" }, { - "label": "Frontend JavaScript should be able to read token from readable cookie.", + "label": "Background job: decay relevanceScore for old memories.", "file_type": "rationale", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L228", - "community": 397, - "norm_label": "frontend javascript should be able to read token from readable cookie.", - "id": "tests_test_oauth_cookie_security_rationale_228" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L210", + "community": 376, + "norm_label": "background job: decay relevancescore for old memories.", + "id": "prometheus_memory_rationale_210" }, { - "label": "Set required env vars before test collection. config.py eagerly instantia", + "label": "Archive memories with very low score and no access.", "file_type": "rationale", - "source_file": "tests/conftest.py", - "source_location": "L13", - "community": 251, - "norm_label": "set required env vars before test collection. config.py eagerly instantia", - "id": "tests_conftest_rationale_13" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L224", + "community": 377, + "norm_label": "archive memories with very low score and no access.", + "id": "prometheus_memory_rationale_224" }, { - "label": "TestClient with stocks router + verifyAPIKey + getCurrentUser overrides.", - "file_type": "rationale", - "source_file": "tests/conftest.py", - "source_location": "L74", - "community": 539, - "norm_label": "testclient with stocks router + verifyapikey + getcurrentuser overrides.", - "id": "tests_conftest_rationale_74" + "label": "get_memories()", + "file_type": "code", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L163", + "community": 84, + "norm_label": "get_memories()", + "id": "controller_prometheus_controller_get_memories" }, { - "label": "TestClient with all routers mounted \u2014 no lifespan (no DB/service init). O", - "file_type": "rationale", - "source_file": "tests/conftest.py", - "source_location": "L99", - "community": 539, - "norm_label": "testclient with all routers mounted \u2014 no lifespan (no db/service init). o", - "id": "tests_conftest_rationale_99" + "label": "create_memory()", + "file_type": "code", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L177", + "community": 130, + "norm_label": "create_memory()", + "id": "controller_prometheus_controller_create_memory" }, { - "label": "Covers lines 202-204: generic Exception in callback.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L507", - "community": 398, - "norm_label": "covers lines 202-204: generic exception in callback.", - "id": "tests_test_controllers_coverage_rationale_507" + "label": "delete_memory()", + "file_type": "code", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L201", + "community": 84, + "norm_label": "delete_memory()", + "id": "controller_prometheus_controller_delete_memory" }, { - "label": "Covers line 19: GET /user/health.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L524", - "community": 498, - "norm_label": "covers line 19: get /user/health.", - "id": "tests_test_controllers_coverage_rationale_524" + "label": "pack_vector()", + "file_type": "code", + "source_file": "main/utils/vector.py", + "source_location": "L5", + "community": 131, + "norm_label": "pack_vector()", + "id": "utils_vector_pack_vector" }, { - "label": "Covers line 24: GET /user/me returns currentUser.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L538", - "community": 47, - "norm_label": "covers line 24: get /user/me returns currentuser.", - "id": "tests_test_controllers_coverage_rationale_538" + "label": "unpack_vector()", + "file_type": "code", + "source_file": "main/utils/vector.py", + "source_location": "L11", + "community": 131, + "norm_label": "unpack_vector()", + "id": "utils_vector_unpack_vector" }, { - "label": "Covers lines 31-32, 36, 43-44, 48: upgrade developer starter/enterprise.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L552", - "community": 47, - "norm_label": "covers lines 31-32, 36, 43-44, 48: upgrade developer starter/enterprise.", - "id": "tests_test_controllers_coverage_rationale_552" + "label": "cosine_similarity()", + "file_type": "code", + "source_file": "main/utils/vector.py", + "source_location": "L16", + "community": 76, + "norm_label": "cosine_similarity()", + "id": "utils_vector_cosine_similarity" }, { - "label": "Covers lines 53-54, 56: admin access granted / denied.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L592", - "community": 47, - "norm_label": "covers lines 53-54, 56: admin access granted / denied.", - "id": "tests_test_controllers_coverage_rationale_592" + "label": "batch_cosine_similarity()", + "file_type": "code", + "source_file": "main/utils/vector.py", + "source_location": "L28", + "community": 13, + "norm_label": "batch_cosine_similarity()", + "id": "utils_vector_batch_cosine_similarity" }, { - "label": "Covers lines 66, 68-72, 74: GET /user/sessions.", + "label": "content_hash()", + "file_type": "code", + "source_file": "main/utils/vector.py", + "source_location": "L41", + "community": 131, + "norm_label": "content_hash()", + "id": "utils_vector_content_hash" + }, + { + "label": "Unpack MySQL BLOB to float list.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L611", - "community": 178, - "norm_label": "covers lines 66, 68-72, 74: get /user/sessions.", - "id": "tests_test_controllers_coverage_rationale_611" + "source_file": "main/utils/vector.py", + "source_location": "L12", + "community": 131, + "norm_label": "unpack mysql blob to float list.", + "id": "utils_vector_rationale_12" }, { - "label": "Covers lines 66, 68-72, 74: full sessions listing.", + "label": "Single-pair cosine similarity.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L614", - "community": 178, - "norm_label": "covers lines 66, 68-72, 74: full sessions listing.", - "id": "tests_test_controllers_coverage_rationale_614" + "source_file": "main/utils/vector.py", + "source_location": "L17", + "community": 76, + "norm_label": "single-pair cosine similarity.", + "id": "utils_vector_rationale_17" }, { - "label": "Covers lines 100-104, 106: GET /user/sessions/current.", + "label": "Vectorized cosine similarity: one query against N embeddings.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L665", - "community": 107, - "norm_label": "covers lines 100-104, 106: get /user/sessions/current.", - "id": "tests_test_controllers_coverage_rationale_665" + "source_file": "main/utils/vector.py", + "source_location": "L29", + "community": 13, + "norm_label": "vectorized cosine similarity: one query against n embeddings.", + "id": "utils_vector_rationale_29" }, { - "label": "Covers lines 100-104, 106: session found.", + "label": "MD5 hash for change detection.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L668", - "community": 107, - "norm_label": "covers lines 100-104, 106: session found.", - "id": "tests_test_controllers_coverage_rationale_668" + "source_file": "main/utils/vector.py", + "source_location": "L42", + "community": 131, + "norm_label": "md5 hash for change detection.", + "id": "utils_vector_rationale_42" }, { - "label": "Covers line 104: session not found.", + "label": "Verify memory endpoints exist and are wired correctly.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L701", - "community": 107, - "norm_label": "covers line 104: session not found.", - "id": "tests_test_controllers_coverage_rationale_701" + "source_file": "tests/test_memory_controller.py", + "source_location": "L11", + "community": 67, + "norm_label": "verify memory endpoints exist and are wired correctly.", + "id": "tests_test_memory_controller_rationale_11" }, { - "label": "Covers lines 126-136: DELETE /user/sessions/{sessionId}.", + "label": "GET /prometheus/memories exists.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L724", - "community": 104, - "norm_label": "covers lines 126-136: delete /user/sessions/{sessionid}.", - "id": "tests_test_controllers_coverage_rationale_724" + "source_file": "tests/test_memory_controller.py", + "source_location": "L14", + "community": 67, + "norm_label": "get /prometheus/memories exists.", + "id": "tests_test_memory_controller_rationale_14" }, { - "label": "Covers lines 126, 131, 135-136.", + "label": "POST /prometheus/memories exists.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L727", - "community": 104, - "norm_label": "covers lines 126, 131, 135-136.", - "id": "tests_test_controllers_coverage_rationale_727" + "source_file": "tests/test_memory_controller.py", + "source_location": "L20", + "community": 67, + "norm_label": "post /prometheus/memories exists.", + "id": "tests_test_memory_controller_rationale_20" }, { - "label": "Covers lines 127-129: session not found.", + "label": "DELETE /prometheus/memories/{id} exists.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L754", - "community": 104, - "norm_label": "covers lines 127-129: session not found.", - "id": "tests_test_controllers_coverage_rationale_754" + "source_file": "tests/test_memory_controller.py", + "source_location": "L25", + "community": 67, + "norm_label": "delete /prometheus/memories/{id} exists.", + "id": "tests_test_memory_controller_rationale_25" }, { - "label": "Covers lines 132-133: revokeSession returns False.", + "label": "GET /memories requires authentication.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L776", - "community": 104, - "norm_label": "covers lines 132-133: revokesession returns false.", - "id": "tests_test_controllers_coverage_rationale_776" + "source_file": "tests/test_memory_controller.py", + "source_location": "L30", + "community": 67, + "norm_label": "get /memories requires authentication.", + "id": "tests_test_memory_controller_rationale_30" }, { - "label": "Covers lines 143, 145, 147-148: POST /user/sessions/revoke-all.", + "label": "GET /memories requires USE_PROMETHEUS (basic USER role denied).", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L802", - "community": 221, - "norm_label": "covers lines 143, 145, 147-148: post /user/sessions/revoke-all.", - "id": "tests_test_controllers_coverage_rationale_802" + "source_file": "tests/test_memory_controller.py", + "source_location": "L47", + "community": 67, + "norm_label": "get /memories requires use_prometheus (basic user role denied).", + "id": "tests_test_memory_controller_rationale_47" }, { - "label": "Covers lines 143, 145, 147-148.", + "label": "Full integration tests using mocked MemoryManager.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L805", - "community": 221, - "norm_label": "covers lines 143, 145, 147-148.", - "id": "tests_test_controllers_coverage_rationale_805" + "source_file": "tests/test_memory_controller.py", + "source_location": "L75", + "community": 67, + "norm_label": "full integration tests using mocked memorymanager.", + "id": "tests_test_memory_controller_rationale_75" }, { - "label": "Covers line 24: GET /prometheus/health.", + "label": "GET /memories delegates to MemoryManager.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L832", - "community": 498, - "norm_label": "covers line 24: get /prometheus/health.", - "id": "tests_test_controllers_coverage_rationale_832" + "source_file": "tests/test_memory_controller.py", + "source_location": "L79", + "community": 378, + "norm_label": "get /memories delegates to memorymanager.", + "id": "tests_test_memory_controller_rationale_79" }, { - "label": "Covers lines 33-36: GET /prometheus/sessions.", + "label": "POST /memories delegates to MemoryManager.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L846", - "community": 16, - "norm_label": "covers lines 33-36: get /prometheus/sessions.", - "id": "tests_test_controllers_coverage_rationale_846" + "source_file": "tests/test_memory_controller.py", + "source_location": "L96", + "community": 379, + "norm_label": "post /memories delegates to memorymanager.", + "id": "tests_test_memory_controller_rationale_96" }, { - "label": "Covers line 52: POST /prometheus/sessions.", + "label": "POST /memories returns 403 when limit reached.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L864", - "community": 16, - "norm_label": "covers line 52: post /prometheus/sessions.", - "id": "tests_test_controllers_coverage_rationale_864" + "source_file": "tests/test_memory_controller.py", + "source_location": "L113", + "community": 380, + "norm_label": "post /memories returns 403 when limit reached.", + "id": "tests_test_memory_controller_rationale_113" }, { - "label": "Covers lines 62-63, 65-68: PUT /prometheus/sessions/{sessionId}.", + "label": "DELETE /memories/{id} delegates to MemoryManager.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L878", - "community": 99, - "norm_label": "covers lines 62-63, 65-68: put /prometheus/sessions/{sessionid}.", - "id": "tests_test_controllers_coverage_rationale_878" + "source_file": "tests/test_memory_controller.py", + "source_location": "L124", + "community": 381, + "norm_label": "delete /memories/{id} delegates to memorymanager.", + "id": "tests_test_memory_controller_rationale_124" }, { - "label": "Covers lines 65-68: title updated successfully.", + "label": "DELETE /memories/{id} returns 404 when not found.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L881", - "community": 99, - "norm_label": "covers lines 65-68: title updated successfully.", - "id": "tests_test_controllers_coverage_rationale_881" + "source_file": "tests/test_memory_controller.py", + "source_location": "L134", + "community": 382, + "norm_label": "delete /memories/{id} returns 404 when not found.", + "id": "tests_test_memory_controller_rationale_134" }, { - "label": "Covers lines 62-63: not the session owner.", + "label": "POST /memories rejects missing key.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L892", - "community": 99, - "norm_label": "covers lines 62-63: not the session owner.", - "id": "tests_test_controllers_coverage_rationale_892" + "source_file": "tests/test_memory_controller.py", + "source_location": "L141", + "community": 67, + "norm_label": "post /memories rejects missing key.", + "id": "tests_test_memory_controller_rationale_141" }, { - "label": "Covers lines 66-67: session not found.", + "label": "POST /memories rejects missing value.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L901", - "community": 99, - "norm_label": "covers lines 66-67: session not found.", - "id": "tests_test_controllers_coverage_rationale_901" + "source_file": "tests/test_memory_controller.py", + "source_location": "L146", + "community": 67, + "norm_label": "post /memories rejects missing value.", + "id": "tests_test_memory_controller_rationale_146" }, { - "label": "Covers lines 77, 83-84, 86: GET /prometheus/history/{sessionId}.", + "label": "Non-extended role gets basic limit.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L912", - "community": 136, - "norm_label": "covers lines 77, 83-84, 86: get /prometheus/history/{sessionid}.", - "id": "tests_test_controllers_coverage_rationale_912" + "source_file": "tests/test_memory_manager.py", + "source_location": "L11", + "community": 140, + "norm_label": "non-extended role gets basic limit.", + "id": "tests_test_memory_manager_rationale_11" }, { - "label": "Covers lines 77, 86: session found with history.", + "label": "Premium user gets extended limit.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L915", - "community": 136, - "norm_label": "covers lines 77, 86: session found with history.", - "id": "tests_test_controllers_coverage_rationale_915" + "source_file": "tests/test_memory_manager.py", + "source_location": "L15", + "community": 140, + "norm_label": "premium user gets extended limit.", + "id": "tests_test_memory_manager_rationale_15" }, { - "label": "Covers lines 83-84: session not found.", + "label": "Admin gets extended limit (has all permissions).", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L959", - "community": 136, - "norm_label": "covers lines 83-84: session not found.", - "id": "tests_test_controllers_coverage_rationale_959" + "source_file": "tests/test_memory_manager.py", + "source_location": "L19", + "community": 140, + "norm_label": "admin gets extended limit (has all permissions).", + "id": "tests_test_memory_manager_rationale_19" }, { - "label": "Covers lines 95-98: DELETE /prometheus/sessions/{sessionId}.", + "label": "Creates a new memory.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L994", - "community": 231, - "norm_label": "covers lines 95-98: delete /prometheus/sessions/{sessionid}.", - "id": "tests_test_controllers_coverage_rationale_994" + "source_file": "tests/test_memory_manager.py", + "source_location": "L25", + "community": 140, + "norm_label": "creates a new memory.", + "id": "tests_test_memory_manager_rationale_25" }, { - "label": "Covers lines 95-98: session deleted.", + "label": "Updates existing memory when value changes.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L997", - "community": 231, - "norm_label": "covers lines 95-98: session deleted.", - "id": "tests_test_controllers_coverage_rationale_997" + "source_file": "tests/test_memory_manager.py", + "source_location": "L35", + "community": 140, + "norm_label": "updates existing memory when value changes.", + "id": "tests_test_memory_manager_rationale_35" }, { - "label": "Covers lines 96-97: session not found.", + "label": "Returns unchanged when value is identical.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1007", - "community": 231, - "norm_label": "covers lines 96-97: session not found.", - "id": "tests_test_controllers_coverage_rationale_1007" + "source_file": "tests/test_memory_manager.py", + "source_location": "L43", + "community": 140, + "norm_label": "returns unchanged when value is identical.", + "id": "tests_test_memory_manager_rationale_43" }, { - "label": "Covers lines 114-115, 117-120, 122, 125: POST /prometheus/chat.", + "label": "Rejects new memory when limit reached.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1017", - "community": 16, - "norm_label": "covers lines 114-115, 117-120, 122, 125: post /prometheus/chat.", - "id": "tests_test_controllers_coverage_rationale_1017" + "source_file": "tests/test_memory_manager.py", + "source_location": "L49", + "community": 140, + "norm_label": "rejects new memory when limit reached.", + "id": "tests_test_memory_manager_rationale_49" }, { - "label": "Covers lines 111-112: sessionId is None, new session created.", + "label": "No role check when user_roles not provided.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1020", - "community": 16, - "norm_label": "covers lines 111-112: sessionid is none, new session created.", - "id": "tests_test_controllers_coverage_rationale_1020" + "source_file": "tests/test_memory_manager.py", + "source_location": "L61", + "community": 140, + "norm_label": "no role check when user_roles not provided.", + "id": "tests_test_memory_manager_rationale_61" }, { - "label": "Covers lines 114-115, 117-120, 122: existing session with verified ownership.", + "label": "Stores embedding alongside memory.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1038", - "community": 16, - "norm_label": "covers lines 114-115, 117-120, 122: existing session with verified ownership.", - "id": "tests_test_controllers_coverage_rationale_1038" + "source_file": "tests/test_memory_manager.py", + "source_location": "L69", + "community": 140, + "norm_label": "stores embedding alongside memory.", + "id": "tests_test_memory_manager_rationale_69" }, { - "label": "Covers lines 114-115: session ownership check fails.", + "label": "Counts only non-archived memories.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1079", - "community": 104, - "norm_label": "covers lines 114-115: session ownership check fails.", - "id": "tests_test_controllers_coverage_rationale_1079" + "source_file": "tests/test_memory_manager.py", + "source_location": "L82", + "community": 140, + "norm_label": "counts only non-archived memories.", + "id": "tests_test_memory_manager_rationale_82" }, { - "label": "Generic Exception in chat propagates to FastAPI's default 500 handler.", + "label": "Archived memories not counted.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1116", - "community": 16, - "norm_label": "generic exception in chat propagates to fastapi's default 500 handler.", - "id": "tests_test_controllers_coverage_rationale_1116" + "source_file": "tests/test_memory_manager.py", + "source_location": "L88", + "community": 140, + "norm_label": "archived memories not counted.", + "id": "tests_test_memory_manager_rationale_88" }, { - "label": "Covers line 18: GET /stocks/health.", + "label": "Returns paginated memories.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1134", - "community": 498, - "norm_label": "covers line 18: get /stocks/health.", - "id": "tests_test_controllers_coverage_rationale_1134" + "source_file": "tests/test_memory_manager.py", + "source_location": "L107", + "community": 140, + "norm_label": "returns paginated memories.", + "id": "tests_test_memory_manager_rationale_107" }, { - "label": "Covers line 35: GET /stocks/historical.", + "label": "Offset and limit work.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1148", - "community": 14, - "norm_label": "covers line 35: get /stocks/historical.", - "id": "tests_test_controllers_coverage_rationale_1148" + "source_file": "tests/test_memory_manager.py", + "source_location": "L115", + "community": 140, + "norm_label": "offset and limit work.", + "id": "tests_test_memory_manager_rationale_115" }, { - "label": "Covers line 47: GET /stocks/fundamental.", + "label": "Archived memories excluded.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1162", - "community": 14, - "norm_label": "covers line 47: get /stocks/fundamental.", - "id": "tests_test_controllers_coverage_rationale_1162" + "source_file": "tests/test_memory_manager.py", + "source_location": "L122", + "community": 140, + "norm_label": "archived memories excluded.", + "id": "tests_test_memory_manager_rationale_122" }, { - "label": "Covers lines 52-53, 57-63: GET /stocks/key/generate. NOTE: stocksapi_cont", + "label": "Soft-deletes a memory.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1176", - "community": 14, - "norm_label": "covers lines 52-53, 57-63: get /stocks/key/generate. note: stocksapi_cont", - "id": "tests_test_controllers_coverage_rationale_1176" + "source_file": "tests/test_memory_manager.py", + "source_location": "L135", + "community": 140, + "norm_label": "soft-deletes a memory.", + "id": "tests_test_memory_manager_rationale_135" }, { - "label": "Covers lines 52-53: user without GENERATE_API_KEYS permission gets 403.", + "label": "Returns False for non-existent memory.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1184", - "community": 14, - "norm_label": "covers lines 52-53: user without generate_api_keys permission gets 403.", - "id": "tests_test_controllers_coverage_rationale_1184" + "source_file": "tests/test_memory_manager.py", + "source_location": "L142", + "community": 140, + "norm_label": "returns false for non-existent memory.", + "id": "tests_test_memory_manager_rationale_142" }, { - "label": "Covers lines 57-60: admin bypasses permission check and generates key.", + "label": "Cannot delete another user's memory.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1192", - "community": 14, - "norm_label": "covers lines 57-60: admin bypasses permission check and generates key.", - "id": "tests_test_controllers_coverage_rationale_1192" + "source_file": "tests/test_memory_manager.py", + "source_location": "L146", + "community": 140, + "norm_label": "cannot delete another user's memory.", + "id": "tests_test_memory_manager_rationale_146" }, { - "label": "Covers lines 61-63: exception during key generation (admin path).", + "label": "FULLTEXT search finds matching memories (MySQL only).", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1204", - "community": 14, - "norm_label": "covers lines 61-63: exception during key generation (admin path).", - "id": "tests_test_controllers_coverage_rationale_1204" + "source_file": "tests/test_memory_manager.py", + "source_location": "L155", + "community": 140, + "norm_label": "fulltext search finds matching memories (mysql only).", + "id": "tests_test_memory_manager_rationale_155" }, { - "label": "Covers lines 13, 17, 19-20, 22-27: UserManager.addRoleToUser.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1219", - "community": 560, - "norm_label": "covers lines 13, 17, 19-20, 22-27: usermanager.addroletouser.", - "id": "tests_test_controllers_coverage_rationale_1219" + "label": "TestPackUnpack", + "file_type": "code", + "source_file": "tests/test_vector_utils.py", + "source_location": "L11", + "community": 131, + "norm_label": "testpackunpack", + "id": "tests_test_vector_utils_testpackunpack" }, { - "label": "Covers lines 17, 22-27: user found, role not present, role added.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1222", - "community": 560, - "norm_label": "covers lines 17, 22-27: user found, role not present, role added.", - "id": "tests_test_controllers_coverage_rationale_1222" + "label": ".test_roundtrip()", + "file_type": "code", + "source_file": "tests/test_vector_utils.py", + "source_location": "L12", + "community": 131, + "norm_label": ".test_roundtrip()", + "id": "tests_test_vector_utils_testpackunpack_test_roundtrip" }, { - "label": "Covers line 27: user already has the role.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1239", - "community": 560, - "norm_label": "covers line 27: user already has the role.", - "id": "tests_test_controllers_coverage_rationale_1239" + "label": ".test_empty()", + "file_type": "code", + "source_file": "tests/test_vector_utils.py", + "source_location": "L20", + "community": 131, + "norm_label": ".test_empty()", + "id": "tests_test_vector_utils_testpackunpack_test_empty" }, { - "label": "Covers lines 19-20: user not found raises 404.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1254", - "community": 528, - "norm_label": "covers lines 19-20: user not found raises 404.", - "id": "tests_test_controllers_coverage_rationale_1254" + "label": ".test_384_dims()", + "file_type": "code", + "source_file": "tests/test_vector_utils.py", + "source_location": "L26", + "community": 131, + "norm_label": ".test_384_dims()", + "id": "tests_test_vector_utils_testpackunpack_test_384_dims" }, { - "label": "Covers lines 34, 36-38, 40-44, 46, 48-49, 51, 58-59, 61, 63-67: UserManager.getC", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1266", - "community": 493, - "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_1266" + "label": "TestCosineSimilarity", + "file_type": "code", + "source_file": "tests/test_vector_utils.py", + "source_location": "L33", + "community": 76, + "norm_label": "testcosinesimilarity", + "id": "tests_test_vector_utils_testcosinesimilarity" }, { - "label": "Covers lines 36-38, 40-44, 46, 48-49, 51, 58-59, 61: successful user retrieval.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1273", - "community": 493, - "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" + "label": ".test_identical()", + "file_type": "code", + "source_file": "tests/test_vector_utils.py", + "source_location": "L34", + "community": 76, + "norm_label": ".test_identical()", + "id": "tests_test_vector_utils_testcosinesimilarity_test_identical" }, { - "label": "Covers lines 42-44: session validation fails.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1298", - "community": 560, - "norm_label": "covers lines 42-44: session validation fails.", - "id": "tests_test_controllers_coverage_rationale_1298" + "label": ".test_orthogonal()", + "file_type": "code", + "source_file": "tests/test_vector_utils.py", + "source_location": "L39", + "community": 76, + "norm_label": ".test_orthogonal()", + "id": "tests_test_vector_utils_testcosinesimilarity_test_orthogonal" }, { - "label": "Covers lines 48-49: user not in DB.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1314", - "community": 493, - "norm_label": "covers lines 48-49: user not in db.", - "id": "tests_test_controllers_coverage_rationale_1314" + "label": ".test_opposite()", + "file_type": "code", + "source_file": "tests/test_vector_utils.py", + "source_location": "L45", + "community": 76, + "norm_label": ".test_opposite()", + "id": "tests_test_vector_utils_testcosinesimilarity_test_opposite" }, { - "label": "Covers lines 65-67: unexpected exception.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1331", - "community": 493, - "norm_label": "covers lines 65-67: unexpected exception.", - "id": "tests_test_controllers_coverage_rationale_1331" + "label": ".test_zero_vector()", + "file_type": "code", + "source_file": "tests/test_vector_utils.py", + "source_location": "L51", + "community": 76, + "norm_label": ".test_zero_vector()", + "id": "tests_test_vector_utils_testcosinesimilarity_test_zero_vector" }, { - "label": "Covers lines 37-38, 46, 51, 58 (sessionId is None): skips session validation.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1348", - "community": 493, - "norm_label": "covers lines 37-38, 46, 51, 58 (sessionid is none): skips session validation.", - "id": "tests_test_controllers_coverage_rationale_1348" + "label": ".test_partial_overlap()", + "file_type": "code", + "source_file": "tests/test_vector_utils.py", + "source_location": "L55", + "community": 76, + "norm_label": ".test_partial_overlap()", + "id": "tests_test_vector_utils_testcosinesimilarity_test_partial_overlap" }, { - "label": "Covers line 16: empty password raises ValueError.", + "label": "pack \u2192 unpack preserves values.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1372", - "community": 493, - "norm_label": "covers line 16: empty password raises valueerror.", - "id": "tests_test_controllers_coverage_rationale_1372" + "source_file": "tests/test_vector_utils.py", + "source_location": "L13", + "community": 131, + "norm_label": "pack \u2192 unpack preserves values.", + "id": "tests_test_vector_utils_rationale_13" }, { - "label": "Covers lines 50-51: jwt.InvalidTokenError.", + "label": "Empty list roundtrips.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1401", - "community": 544, - "norm_label": "covers lines 50-51: jwt.invalidtokenerror.", - "id": "tests_test_controllers_coverage_rationale_1401" + "source_file": "tests/test_vector_utils.py", + "source_location": "L21", + "community": 131, + "norm_label": "empty list roundtrips.", + "id": "tests_test_vector_utils_rationale_21" }, { - "label": "Covers line 67: extractTokenPayload re-raises HTTPException from verifyAccessTok", + "label": "384-dim vector packs to 1536 bytes.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1413", - "community": 498, - "norm_label": "covers line 67: extracttokenpayload re-raises httpexception from verifyaccesstok", - "id": "tests_test_controllers_coverage_rationale_1413" + "source_file": "tests/test_vector_utils.py", + "source_location": "L27", + "community": 131, + "norm_label": "384-dim vector packs to 1536 bytes.", + "id": "tests_test_vector_utils_rationale_27" }, { - "label": "Covers line 13: UserManager.__init__.", + "label": "Identical vectors \u2192 score 1.0.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1432", - "community": 498, - "norm_label": "covers line 13: usermanager.__init__.", - "id": "tests_test_controllers_coverage_rationale_1432" + "source_file": "tests/test_vector_utils.py", + "source_location": "L35", + "community": 76, + "norm_label": "identical vectors \u2192 score 1.0.", + "id": "tests_test_vector_utils_rationale_35" }, { - "label": "Return (client, app, mock_session) for testing Google callback.", + "label": "Orthogonal vectors \u2192 score 0.0.", "file_type": "rationale", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L22", - "community": 40, - "norm_label": "return (client, app, mock_session) for testing google callback.", - "id": "tests_test_oauth_cookie_security_rationale_22" + "source_file": "tests/test_vector_utils.py", + "source_location": "L40", + "community": 76, + "norm_label": "orthogonal vectors \u2192 score 0.0.", + "id": "tests_test_vector_utils_rationale_40" }, { - "label": "Helper to setup common mock values for callback tests.", + "label": "Opposite vectors \u2192 score -1.0.", "file_type": "rationale", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L37", - "community": 40, - "norm_label": "helper to setup common mock values for callback tests.", - "id": "tests_test_oauth_cookie_security_rationale_37" + "source_file": "tests/test_vector_utils.py", + "source_location": "L46", + "community": 76, + "norm_label": "opposite vectors \u2192 score -1.0.", + "id": "tests_test_vector_utils_rationale_46" }, { - "label": "Verify JWT token is NOT leaked in redirect URL after OAuth callback.", + "label": "Zero vector \u2192 score 0.0.", "file_type": "rationale", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L61", - "community": 40, - "norm_label": "verify jwt token is not leaked in redirect url after oauth callback.", - "id": "tests_test_oauth_cookie_security_rationale_61" + "source_file": "tests/test_vector_utils.py", + "source_location": "L52", + "community": 76, + "norm_label": "zero vector \u2192 score 0.0.", + "id": "tests_test_vector_utils_rationale_52" }, { - "label": "RED TEST: Token should NOT appear in redirect URL query parameters.", + "label": "Partially overlapping vectors.", "file_type": "rationale", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L70", - "community": 399, - "norm_label": "red test: token should not appear in redirect url query parameters.", - "id": "tests_test_oauth_cookie_security_rationale_70" + "source_file": "tests/test_vector_utils.py", + "source_location": "L56", + "community": 76, + "norm_label": "partially overlapping vectors.", + "id": "tests_test_vector_utils_rationale_56" }, { - "label": "Cookie must be httponly (not accessible via JavaScript).", + "label": "Empty matrix \u2192 empty array.", "file_type": "rationale", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L99", - "community": 400, - "norm_label": "cookie must be httponly (not accessible via javascript).", - "id": "tests_test_oauth_cookie_security_rationale_99" + "source_file": "tests/test_vector_utils.py", + "source_location": "L68", + "community": 13, + "norm_label": "empty matrix \u2192 empty array.", + "id": "tests_test_vector_utils_rationale_68" }, { - "label": "A readable cookie must be set for frontend JavaScript to access.", + "label": "Single row matches cosine_similarity.", "file_type": "rationale", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L131", - "community": 401, - "norm_label": "a readable cookie must be set for frontend javascript to access.", - "id": "tests_test_oauth_cookie_security_rationale_131" + "source_file": "tests/test_vector_utils.py", + "source_location": "L73", + "community": 13, + "norm_label": "single row matches cosine_similarity.", + "id": "tests_test_vector_utils_rationale_73" }, { - "label": "Both cookies should have secure flag (HTTPS only).", + "label": "Multiple rows ranked correctly.", "file_type": "rationale", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L164", - "community": 402, - "norm_label": "both cookies should have secure flag (https only).", - "id": "tests_test_oauth_cookie_security_rationale_164" + "source_file": "tests/test_vector_utils.py", + "source_location": "L80", + "community": 13, + "norm_label": "multiple rows ranked correctly.", + "id": "tests_test_vector_utils_rationale_80" }, { - "label": "When no state param, return JSON response (not redirect).", + "label": "Zero query \u2192 all zeros.", "file_type": "rationale", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L196", - "community": 403, - "norm_label": "when no state param, return json response (not redirect).", - "id": "tests_test_oauth_cookie_security_rationale_196" + "source_file": "tests/test_vector_utils.py", + "source_location": "L93", + "community": 13, + "norm_label": "zero query \u2192 all zeros.", + "id": "tests_test_vector_utils_rationale_93" }, { - "label": "Verify frontend can still get token after OAuth redirect.", + "label": "Same input \u2192 same hash.", "file_type": "rationale", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L216", - "community": 40, - "norm_label": "verify frontend can still get token after oauth redirect.", - "id": "tests_test_oauth_cookie_security_rationale_216" + "source_file": "tests/test_vector_utils.py", + "source_location": "L101", + "community": 131, + "norm_label": "same input \u2192 same hash.", + "id": "tests_test_vector_utils_rationale_101" }, { - "label": "Frontend JavaScript should be able to read token from readable cookie.", + "label": "Different inputs \u2192 different hashes.", "file_type": "rationale", - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L225", - "community": 404, - "norm_label": "frontend javascript should be able to read token from readable cookie.", - "id": "tests_test_oauth_cookie_security_rationale_225" + "source_file": "tests/test_vector_utils.py", + "source_location": "L105", + "community": 131, + "norm_label": "different inputs \u2192 different hashes.", + "id": "tests_test_vector_utils_rationale_105" }, { - "label": "Covers lines 164, 171-173: existing Google user, no new account created.", + "label": "Returns 32-char hex string.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L433", - "community": 405, - "norm_label": "covers lines 164, 171-173: existing google user, no new account created.", - "id": "tests_test_controllers_coverage_rationale_433" + "source_file": "tests/test_vector_utils.py", + "source_location": "L109", + "community": 131, + "norm_label": "returns 32-char hex string.", + "id": "tests_test_vector_utils_rationale_109" }, { - "label": "Covers line 165: verify_and_process returns None.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L459", - "community": 406, - "norm_label": "covers line 165: verify_and_process returns none.", - "id": "tests_test_controllers_coverage_rationale_459" + "label": "save_memory()", + "file_type": "code", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L3", + "community": 53, + "norm_label": "save_memory()", + "id": "prometheus_memory_save_memory" }, { - "label": "Covers lines 190-195: state param triggers RedirectResponse.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L476", - "community": 407, - "norm_label": "covers lines 190-195: state param triggers redirectresponse.", - "id": "tests_test_controllers_coverage_rationale_476" + "label": "search_memory()", + "file_type": "code", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L6", + "community": 53, + "norm_label": "search_memory()", + "id": "prometheus_memory_search_memory" }, { - "label": "Covers lines 202-204: generic Exception in callback.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L505", - "community": 408, - "norm_label": "covers lines 202-204: generic exception in callback.", - "id": "tests_test_controllers_coverage_rationale_505" + "label": "New table: `user_memory`", + "file_type": "document", + "source_file": "PLANS/memory-system-plan.md", + "source_location": "L59", + "community": 6, + "norm_label": "new table: `user_memory`", + "id": "plans_memory_system_plan_new_table_user_memory" }, { - "label": "Covers line 19: GET /user/health.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L522", - "community": 498, - "norm_label": "covers line 19: get /user/health.", - "id": "tests_test_controllers_coverage_rationale_522" + "label": "train_script.py", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/train_script.py", + "source_location": "L1", + "community": 139, + "norm_label": "train_script.py", + "id": "main_utils_models_all_minilm_l6_v2_train_script_py" }, { - "label": "Covers line 24: GET /user/me returns currentUser.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L536", - "community": 47, - "norm_label": "covers line 24: get /user/me returns currentuser.", - "id": "tests_test_controllers_coverage_rationale_536" + "label": "AutoModelForSentenceEmbedding", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/train_script.py", + "source_location": "L40", + "community": 180, + "norm_label": "automodelforsentenceembedding", + "id": "all_minilm_l6_v2_train_script_automodelforsentenceembedding" }, { - "label": "Covers lines 31-32, 36, 43-44, 48: upgrade developer starter/enterprise.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L550", - "community": 47, - "norm_label": "covers lines 31-32, 36, 43-44, 48: upgrade developer starter/enterprise.", - "id": "tests_test_controllers_coverage_rationale_550" + "label": ".__init__()", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/train_script.py", + "source_location": "L41", + "community": 180, + "norm_label": ".__init__()", + "id": "all_minilm_l6_v2_train_script_automodelforsentenceembedding_init" }, { - "label": "Covers lines 53-54, 56: admin access granted / denied.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L590", - "community": 47, - "norm_label": "covers lines 53-54, 56: admin access granted / denied.", - "id": "tests_test_controllers_coverage_rationale_590" + "label": ".forward()", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/train_script.py", + "source_location": "L48", + "community": 180, + "norm_label": ".forward()", + "id": "all_minilm_l6_v2_train_script_automodelforsentenceembedding_forward" }, { - "label": "Covers lines 66, 68-72, 74: GET /user/sessions.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L609", - "community": 178, - "norm_label": "covers lines 66, 68-72, 74: get /user/sessions.", - "id": "tests_test_controllers_coverage_rationale_609" + "label": ".mean_pooling()", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/train_script.py", + "source_location": "L56", + "community": 180, + "norm_label": ".mean_pooling()", + "id": "all_minilm_l6_v2_train_script_automodelforsentenceembedding_mean_pooling" }, { - "label": "Covers lines 66, 68-72, 74: full sessions listing.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L612", - "community": 178, - "norm_label": "covers lines 66, 68-72, 74: full sessions listing.", - "id": "tests_test_controllers_coverage_rationale_612" + "label": ".save_pretrained()", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/train_script.py", + "source_location": "L61", + "community": 180, + "norm_label": ".save_pretrained()", + "id": "all_minilm_l6_v2_train_script_automodelforsentenceembedding_save_pretrained" }, { - "label": "Covers lines 100-104, 106: GET /user/sessions/current.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L663", - "community": 107, - "norm_label": "covers lines 100-104, 106: get /user/sessions/current.", - "id": "tests_test_controllers_coverage_rationale_663" + "label": "train_function()", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/train_script.py", + "source_location": "L71", + "community": 180, + "norm_label": "train_function()", + "id": "all_minilm_l6_v2_train_script_train_function" }, { - "label": "Covers lines 100-104, 106: session found.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L666", - "community": 107, - "norm_label": "covers lines 100-104, 106: session found.", - "id": "tests_test_controllers_coverage_rationale_666" + "label": "produce_data()", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/train_script.py", + "source_location": "L168", + "community": 139, + "norm_label": "produce_data()", + "id": "all_minilm_l6_v2_train_script_produce_data" }, { - "label": "Covers line 104: session not found.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L699", - "community": 107, - "norm_label": "covers line 104: session not found.", - "id": "tests_test_controllers_coverage_rationale_699" + "label": "RedditDataset", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/train_script.py", + "source_location": "L223", + "community": 139, + "norm_label": "redditdataset", + "id": "all_minilm_l6_v2_train_script_redditdataset" }, { - "label": "Covers lines 126-136: DELETE /user/sessions/{sessionId}.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L722", - "community": 104, - "norm_label": "covers lines 126-136: delete /user/sessions/{sessionid}.", - "id": "tests_test_controllers_coverage_rationale_722" + "label": ".__init__()", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/train_script.py", + "source_location": "L227", + "community": 139, + "norm_label": ".__init__()", + "id": "all_minilm_l6_v2_train_script_redditdataset_init" }, { - "label": "Covers lines 126, 131, 135-136.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L725", - "community": 104, - "norm_label": "covers lines 126, 131, 135-136.", - "id": "tests_test_controllers_coverage_rationale_725" + "label": ".__iter__()", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/train_script.py", + "source_location": "L230", + "community": 139, + "norm_label": ".__iter__()", + "id": "all_minilm_l6_v2_train_script_redditdataset_iter" }, { - "label": "Covers lines 127-129: session not found.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L752", - "community": 104, - "norm_label": "covers lines 127-129: session not found.", - "id": "tests_test_controllers_coverage_rationale_752" + "label": "Dataset", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/train_script.py", + "source_location": "L239", + "community": 139, + "norm_label": "dataset", + "id": "all_minilm_l6_v2_train_script_dataset" }, { - "label": "Covers lines 132-133: revokeSession returns False.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L774", - "community": 104, - "norm_label": "covers lines 132-133: revokesession returns false.", - "id": "tests_test_controllers_coverage_rationale_774" + "label": ".__init__()", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/train_script.py", + "source_location": "L243", + "community": 180, + "norm_label": ".__init__()", + "id": "all_minilm_l6_v2_train_script_dataset_init" }, { - "label": "Covers lines 143, 145, 147-148: POST /user/sessions/revoke-all.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L800", - "community": 221, - "norm_label": "covers lines 143, 145, 147-148: post /user/sessions/revoke-all.", - "id": "tests_test_controllers_coverage_rationale_800" + "label": ".__iter__()", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/train_script.py", + "source_location": "L246", + "community": 139, + "norm_label": ".__iter__()", + "id": "all_minilm_l6_v2_train_script_dataset_iter" }, { - "label": "Covers lines 143, 145, 147-148.", + "label": "Train script for a single file Need to set the TPU address first: export XRT_TP", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L803", - "community": 221, - "norm_label": "covers lines 143, 145, 147-148.", - "id": "tests_test_controllers_coverage_rationale_803" + "source_file": "main/utils/models/all-MiniLM-L6-v2/train_script.py", + "source_location": "L1", + "community": 139, + "norm_label": "train script for a single file need to set the tpu address first: export xrt_tp", + "id": "all_minilm_l6_v2_train_script_rationale_1" }, { - "label": "Covers line 24: GET /prometheus/health.", + "label": "A class that handles the reddit data files", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L830", - "community": 498, - "norm_label": "covers line 24: get /prometheus/health.", - "id": "tests_test_controllers_coverage_rationale_830" + "source_file": "main/utils/models/all-MiniLM-L6-v2/train_script.py", + "source_location": "L224", + "community": 139, + "norm_label": "a class that handles the reddit data files", + "id": "all_minilm_l6_v2_train_script_rationale_224" }, { - "label": "Covers lines 33-36: GET /prometheus/sessions.", + "label": "A class that handles one dataset", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L844", - "community": 16, - "norm_label": "covers lines 33-36: get /prometheus/sessions.", - "id": "tests_test_controllers_coverage_rationale_844" + "source_file": "main/utils/models/all-MiniLM-L6-v2/train_script.py", + "source_location": "L240", + "community": 139, + "norm_label": "a class that handles one dataset", + "id": "all_minilm_l6_v2_train_script_rationale_240" }, { - "label": "Covers line 52: POST /prometheus/sessions.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L862", - "community": 16, - "norm_label": "covers line 52: post /prometheus/sessions.", - "id": "tests_test_controllers_coverage_rationale_862" + "label": "benchmark_embeddings.py", + "file_type": "code", + "source_file": "scripts/benchmark_embeddings.py", + "source_location": "L1", + "community": 176, + "norm_label": "benchmark_embeddings.py", + "id": "scripts_benchmark_embeddings_py" }, { - "label": "Covers lines 62-63, 65-68: PUT /prometheus/sessions/{sessionId}.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L876", - "community": 99, - "norm_label": "covers lines 62-63, 65-68: put /prometheus/sessions/{sessionid}.", - "id": "tests_test_controllers_coverage_rationale_876" + "label": "benchmark_st()", + "file_type": "code", + "source_file": "scripts/benchmark_embeddings.py", + "source_location": "L17", + "community": 176, + "norm_label": "benchmark_st()", + "id": "scripts_benchmark_embeddings_benchmark_st" }, { - "label": "Covers lines 65-68: title updated successfully.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L879", - "community": 99, - "norm_label": "covers lines 65-68: title updated successfully.", - "id": "tests_test_controllers_coverage_rationale_879" + "label": "benchmark_onnx()", + "file_type": "code", + "source_file": "scripts/benchmark_embeddings.py", + "source_location": "L53", + "community": 176, + "norm_label": "benchmark_onnx()", + "id": "scripts_benchmark_embeddings_benchmark_onnx" }, { - "label": "Covers lines 62-63: not the session owner.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L890", - "community": 99, - "norm_label": "covers lines 62-63: not the session owner.", - "id": "tests_test_controllers_coverage_rationale_890" + "label": "benchmark_onnx_direct()", + "file_type": "code", + "source_file": "scripts/benchmark_embeddings.py", + "source_location": "L102", + "community": 176, + "norm_label": "benchmark_onnx_direct()", + "id": "scripts_benchmark_embeddings_benchmark_onnx_direct" }, { - "label": "Covers lines 66-67: session not found.", + "label": "Fast embedding benchmark \u2014 run locally where model is cached. Compares: 1. sent", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L899", - "community": 99, - "norm_label": "covers lines 66-67: session not found.", - "id": "tests_test_controllers_coverage_rationale_899" + "source_file": "scripts/benchmark_embeddings.py", + "source_location": "L1", + "community": 176, + "norm_label": "fast embedding benchmark \u2014 run locally where model is cached. compares: 1. sent", + "id": "scripts_benchmark_embeddings_rationale_1" }, { - "label": "Covers lines 77, 83-84, 86: GET /prometheus/history/{sessionId}.", + "label": "Benchmark sentence-transformers (PyTorch).", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L910", - "community": 136, - "norm_label": "covers lines 77, 83-84, 86: get /prometheus/history/{sessionid}.", - "id": "tests_test_controllers_coverage_rationale_910" + "source_file": "scripts/benchmark_embeddings.py", + "source_location": "L18", + "community": 176, + "norm_label": "benchmark sentence-transformers (pytorch).", + "id": "scripts_benchmark_embeddings_rationale_18" }, { - "label": "Covers lines 77, 86: session found with history.", + "label": "Benchmark ONNX Runtime \u2014 fastest path.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L913", - "community": 136, - "norm_label": "covers lines 77, 86: session found with history.", - "id": "tests_test_controllers_coverage_rationale_913" + "source_file": "scripts/benchmark_embeddings.py", + "source_location": "L54", + "community": 176, + "norm_label": "benchmark onnx runtime \u2014 fastest path.", + "id": "scripts_benchmark_embeddings_rationale_54" }, { - "label": "Covers lines 83-84: session not found.", + "label": "Benchmark ONNX Runtime directly \u2014 export model first, then run.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L957", - "community": 136, - "norm_label": "covers lines 83-84: session not found.", - "id": "tests_test_controllers_coverage_rationale_957" + "source_file": "scripts/benchmark_embeddings.py", + "source_location": "L103", + "community": 176, + "norm_label": "benchmark onnx runtime directly \u2014 export model first, then run.", + "id": "scripts_benchmark_embeddings_rationale_103" }, { - "label": "Covers lines 95-98: DELETE /prometheus/sessions/{sessionId}.", + "label": "streamMessage must handle function_calls as a list (not dict).", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L992", - "community": 231, - "norm_label": "covers lines 95-98: delete /prometheus/sessions/{sessionid}.", - "id": "tests_test_controllers_coverage_rationale_992" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L203", + "community": 383, + "norm_label": "streammessage must handle function_calls as a list (not dict).", + "id": "tests_test_prometheus_auth_coverage_rationale_203" }, { - "label": "Covers lines 95-98: session deleted.", + "label": "Cover all methods in chat.py (lines 11-120).", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L995", - "community": 231, - "norm_label": "covers lines 95-98: session deleted.", - "id": "tests_test_controllers_coverage_rationale_995" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L268", + "community": 52, + "norm_label": "cover all methods in chat.py (lines 11-120).", + "id": "tests_test_prometheus_auth_coverage_rationale_268" }, { - "label": "Covers lines 96-97: session not found.", + "label": "Cover all methods in authentication.py (lines 13-75).", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1005", - "community": 231, - "norm_label": "covers lines 96-97: session not found.", - "id": "tests_test_controllers_coverage_rationale_1005" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L492", + "community": 88, + "norm_label": "cover all methods in authentication.py (lines 13-75).", + "id": "tests_test_prometheus_auth_coverage_rationale_492" }, { - "label": "Covers lines 114-115, 117-120, 122, 125: POST /prometheus/chat.", + "label": "Cover all methods in session.py (lines 14-154).", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1015", - "community": 16, - "norm_label": "covers lines 114-115, 117-120, 122, 125: post /prometheus/chat.", - "id": "tests_test_controllers_coverage_rationale_1015" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L669", + "community": 60, + "norm_label": "cover all methods in session.py (lines 14-154).", + "id": "tests_test_prometheus_auth_coverage_rationale_669" }, { - "label": "Covers lines 111-112: sessionId is None, new session created.", + "label": "Exercises the tzinfo-is-None branch (line 144-148).", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1018", - "community": 16, - "norm_label": "covers lines 111-112: sessionid is none, new session created.", - "id": "tests_test_controllers_coverage_rationale_1018" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L904", + "community": 190, + "norm_label": "exercises the tzinfo-is-none branch (line 144-148).", + "id": "tests_test_prometheus_auth_coverage_rationale_904" }, { - "label": "Covers lines 114-115, 117-120, 122: existing session with verified ownership.", + "label": "Exercises the expiresAt-is-None branch (line 143).", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1036", - "community": 16, - "norm_label": "covers lines 114-115, 117-120, 122: existing session with verified ownership.", - "id": "tests_test_controllers_coverage_rationale_1036" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L918", + "community": 165, + "norm_label": "exercises the expiresat-is-none branch (line 143).", + "id": "tests_test_prometheus_auth_coverage_rationale_918" }, { - "label": "Covers lines 114-115: session ownership check fails.", + "label": "Cover getGoogleSSO (lines 6-14).", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1078", - "community": 104, - "norm_label": "covers lines 114-115: session ownership check fails.", - "id": "tests_test_controllers_coverage_rationale_1078" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L937", + "community": 68, + "norm_label": "cover getgooglesso (lines 6-14).", + "id": "tests_test_prometheus_auth_coverage_rationale_937" }, { - "label": "Generic Exception in chat propagates to FastAPI's default 500 handler.", + "label": "streamMessage inlines MCP setup \u2014 chatSession no longer exists.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1115", - "community": 16, - "norm_label": "generic exception in chat propagates to fastapi's default 500 handler.", - "id": "tests_test_controllers_coverage_rationale_1115" + "source_file": "tests/test_streammessage_no_chatsession.py", + "source_location": "L24", + "community": 138, + "norm_label": "streammessage inlines mcp setup \u2014 chatsession no longer exists.", + "id": "tests_test_streammessage_no_chatsession_rationale_24" }, { - "label": "Covers line 18: GET /stocks/health.", + "label": "streamMessage yields text chunks via inlined MCP setup.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1133", - "community": 498, - "norm_label": "covers line 18: get /stocks/health.", - "id": "tests_test_controllers_coverage_rationale_1133" + "source_file": "tests/test_streammessage_no_chatsession.py", + "source_location": "L34", + "community": 384, + "norm_label": "streammessage yields text chunks via inlined mcp setup.", + "id": "tests_test_streammessage_no_chatsession_rationale_34" }, { - "label": "Covers line 35: GET /stocks/historical.", + "label": "chatSession attribute must not exist \u2014 MCP setup is inlined.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1147", - "community": 14, - "norm_label": "covers line 35: get /stocks/historical.", - "id": "tests_test_controllers_coverage_rationale_1147" + "source_file": "tests/test_streammessage_no_chatsession.py", + "source_location": "L82", + "community": 385, + "norm_label": "chatsession attribute must not exist \u2014 mcp setup is inlined.", + "id": "tests_test_streammessage_no_chatsession_rationale_82" }, { - "label": "Covers line 47: GET /stocks/fundamental.", + "label": "streamMessage handles function call loops via inlined MCP setup.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1161", - "community": 14, - "norm_label": "covers line 47: get /stocks/fundamental.", - "id": "tests_test_controllers_coverage_rationale_1161" + "source_file": "tests/test_streammessage_no_chatsession.py", + "source_location": "L105", + "community": 386, + "norm_label": "streammessage handles function call loops via inlined mcp setup.", + "id": "tests_test_streammessage_no_chatsession_rationale_105" }, { - "label": "Covers lines 52-53, 57-63: GET /stocks/key/generate. NOTE: stocksapi_cont", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1175", - "community": 14, - "norm_label": "covers lines 52-53, 57-63: get /stocks/key/generate. note: stocksapi_cont", - "id": "tests_test_controllers_coverage_rationale_1175" + "label": "PROMETHEUS_PLAN.md", + "file_type": "document", + "source_file": "PROMETHEUS_PLAN.md", + "source_location": "L1", + "community": 77, + "norm_label": "prometheus_plan.md", + "id": "prometheus_plan_md" }, { - "label": "Covers lines 52-53: user without GENERATE_API_KEYS permission gets 403.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1183", - "community": 14, - "norm_label": "covers lines 52-53: user without generate_api_keys permission gets 403.", - "id": "tests_test_controllers_coverage_rationale_1183" + "label": "Prometheus Roadmap \u2014 4 Features", + "file_type": "document", + "source_file": "PROMETHEUS_PLAN.md", + "source_location": "L1", + "community": 77, + "norm_label": "prometheus roadmap \u2014 4 features", + "id": "server_prometheus_plan_prometheus_roadmap_4_features" }, { - "label": "Covers lines 57-60: admin bypasses permission check and generates key.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1191", - "community": 14, - "norm_label": "covers lines 57-60: admin bypasses permission check and generates key.", - "id": "tests_test_controllers_coverage_rationale_1191" + "label": "Phase 1: Code Sandbox (Docker MicroVMs)", + "file_type": "document", + "source_file": "PROMETHEUS_PLAN.md", + "source_location": "L3", + "community": 77, + "norm_label": "phase 1: code sandbox (docker microvms)", + "id": "server_prometheus_plan_phase_1_code_sandbox_docker_microvms" }, { - "label": "Covers lines 13, 17, 19-20, 22-27: UserManager.addRoleToUser.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1218", - "community": 560, - "norm_label": "covers lines 13, 17, 19-20, 22-27: usermanager.addroletouser.", - "id": "tests_test_controllers_coverage_rationale_1218" + "label": "Architecture", + "file_type": "document", + "source_file": "PROMETHEUS_PLAN.md", + "source_location": "L5", + "community": 77, + "norm_label": "architecture", + "id": "server_prometheus_plan_architecture" }, { - "label": "Covers lines 17, 22-27: user found, role not present, role added.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1221", - "community": 560, - "norm_label": "covers lines 17, 22-27: user found, role not present, role added.", - "id": "tests_test_controllers_coverage_rationale_1221" + "label": "code:block1 (Agent calls tools (StocksAPI, etc.) \u2192 gets data \u2192 agent deci)", + "file_type": "document", + "source_file": "PROMETHEUS_PLAN.md", + "source_location": "L19", + "community": 77, + "norm_label": "code:block1 (agent calls tools (stocksapi, etc.) \u2192 gets data \u2192 agent deci)", + "id": "server_prometheus_plan_codeblock_1" }, { - "label": "Covers line 27: user already has the role.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1238", - "community": 560, - "norm_label": "covers line 27: user already has the role.", - "id": "tests_test_controllers_coverage_rationale_1238" + "label": "code:python (import sys, io, base64, json, matplotlib)", + "file_type": "document", + "source_file": "PROMETHEUS_PLAN.md", + "source_location": "L44", + "community": 77, + "norm_label": "code:python (import sys, io, base64, json, matplotlib)", + "id": "server_prometheus_plan_codeblock_2" }, { - "label": "Covers lines 19-20: user not found raises 404.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1253", - "community": 528, - "norm_label": "covers lines 19-20: user not found raises 404.", - "id": "tests_test_controllers_coverage_rationale_1253" + "label": "code:json ({\"type\": \"sandbox_start\", \"stream\": \"system\"})", + "file_type": "document", + "source_file": "PROMETHEUS_PLAN.md", + "source_location": "L75", + "community": 77, + "norm_label": "code:json ({\"type\": \"sandbox_start\", \"stream\": \"system\"})", + "id": "server_prometheus_plan_codeblock_3" }, { - "label": "Covers lines 34, 36-38, 40-44, 46, 48-49, 51, 58-59, 61, 63-67: UserManager.getC", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1265", - "community": 493, - "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_1265" + "label": "Implementation steps", + "file_type": "document", + "source_file": "PROMETHEUS_PLAN.md", + "source_location": "L83", + "community": 77, + "norm_label": "implementation steps", + "id": "server_prometheus_plan_implementation_steps" }, { - "label": "Covers lines 36-38, 40-44, 46, 48-49, 51, 58-59, 61: successful user retrieval.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1272", - "community": 493, - "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" + "label": "Phase 2: Per-Session Vector Memory", + "file_type": "document", + "source_file": "PROMETHEUS_PLAN.md", + "source_location": "L94", + "community": 77, + "norm_label": "phase 2: per-session vector memory", + "id": "server_prometheus_plan_phase_2_per_session_vector_memory" }, { - "label": "Covers lines 42-44: session validation fails.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1297", - "community": 560, - "norm_label": "covers lines 42-44: session validation fails.", - "id": "tests_test_controllers_coverage_rationale_1297" + "label": "Architecture", + "file_type": "document", + "source_file": "PROMETHEUS_PLAN.md", + "source_location": "L96", + "community": 77, + "norm_label": "architecture", + "id": "server_prometheus_plan_architecture_96" }, { - "label": "Covers lines 48-49: user not in DB.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1313", - "community": 493, - "norm_label": "covers lines 48-49: user not in db.", - "id": "tests_test_controllers_coverage_rationale_1313" + "label": "code:json ({)", + "file_type": "document", + "source_file": "PROMETHEUS_PLAN.md", + "source_location": "L102", + "community": 77, + "norm_label": "code:json ({)", + "id": "server_prometheus_plan_codeblock_4" }, { - "label": "Covers lines 65-67: unexpected exception.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1330", - "community": 493, - "norm_label": "covers lines 65-67: unexpected exception.", - "id": "tests_test_controllers_coverage_rationale_1330" + "label": "code:python (class MemoryManager:)", + "file_type": "document", + "source_file": "PROMETHEUS_PLAN.md", + "source_location": "L120", + "community": 77, + "norm_label": "code:python (class memorymanager:)", + "id": "server_prometheus_plan_codeblock_5" }, { - "label": "Covers lines 37-38, 46, 51, 58 (sessionId is None): skips session validation.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1347", - "community": 493, - "norm_label": "covers lines 37-38, 46, 51, 58 (sessionid is none): skips session validation.", - "id": "tests_test_controllers_coverage_rationale_1347" + "label": "Implementation steps", + "file_type": "document", + "source_file": "PROMETHEUS_PLAN.md", + "source_location": "L132", + "community": 77, + "norm_label": "implementation steps", + "id": "server_prometheus_plan_implementation_steps_132" }, { - "label": "Covers line 16: empty password raises ValueError.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1371", - "community": 524, - "norm_label": "covers line 16: empty password raises valueerror.", - "id": "tests_test_controllers_coverage_rationale_1371" + "label": "Phase 3: Multi-Session Memory with Ranking", + "file_type": "document", + "source_file": "PROMETHEUS_PLAN.md", + "source_location": "L141", + "community": 77, + "norm_label": "phase 3: multi-session memory with ranking", + "id": "server_prometheus_plan_phase_3_multi_session_memory_with_ranking" }, { - "label": "Covers lines 45-51: verifyAccessToken with expired and invalid tokens.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1381", - "community": 524, - "norm_label": "covers lines 45-51: verifyaccesstoken with expired and invalid tokens.", - "id": "tests_test_controllers_coverage_rationale_1381" + "label": "Architecture", + "file_type": "document", + "source_file": "PROMETHEUS_PLAN.md", + "source_location": "L143", + "community": 77, + "norm_label": "architecture", + "id": "server_prometheus_plan_architecture_143" }, { - "label": "Covers lines 48-49: jwt.ExpiredSignatureError.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1384", - "community": 524, - "norm_label": "covers lines 48-49: jwt.expiredsignatureerror.", - "id": "tests_test_controllers_coverage_rationale_1384" + "label": "code:sql (CREATE TABLE prometheus_memory ()", + "file_type": "document", + "source_file": "PROMETHEUS_PLAN.md", + "source_location": "L147", + "community": 77, + "norm_label": "code:sql (create table prometheus_memory ()", + "id": "server_prometheus_plan_codeblock_6" }, { - "label": "Covers lines 50-51: jwt.InvalidTokenError.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1400", - "community": 544, - "norm_label": "covers lines 50-51: jwt.invalidtokenerror.", - "id": "tests_test_controllers_coverage_rationale_1400" + "label": "code:python (def recency_weight(days_since: float, half_life: float = 70.)", + "file_type": "document", + "source_file": "PROMETHEUS_PLAN.md", + "source_location": "L178", + "community": 77, + "norm_label": "code:python (def recency_weight(days_since: float, half_life: float = 70.)", + "id": "server_prometheus_plan_codeblock_7" }, { - "label": "Covers line 67: extractTokenPayload re-raises HTTPException from verifyAccessTok", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1412", - "community": 498, - "norm_label": "covers line 67: extracttokenpayload re-raises httpexception from verifyaccesstok", - "id": "tests_test_controllers_coverage_rationale_1412" + "label": "Implementation steps", + "file_type": "document", + "source_file": "PROMETHEUS_PLAN.md", + "source_location": "L198", + "community": 77, + "norm_label": "implementation steps", + "id": "server_prometheus_plan_implementation_steps_198" }, { - "label": "Covers line 67: HTTPException raised by verifyAccessToken is re-raised.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1415", - "community": 114, - "norm_label": "covers line 67: httpexception raised by verifyaccesstoken is re-raised.", - "id": "tests_test_controllers_coverage_rationale_1415" + "label": ".updateDates()", + "file_type": "code", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L33", + "community": 116, + "norm_label": ".updatedates()", + "id": "prometheus_agent_prometheus_updatedates" }, { - "label": "Covers line 13: UserManager.__init__.", + "label": "chatSession()", + "file_type": "code", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L47", + "community": 116, + "norm_label": "chatsession()", + "id": "prometheus_agent_chatsession" + }, + { + "label": "test_init_creates_client_and_updates_dates_debug()", + "file_type": "code", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L31", + "community": 29, + "norm_label": "test_init_creates_client_and_updates_dates_debug()", + "id": "tests_test_prometheus_auth_coverage_test_init_creates_client_and_updates_dates_debug" + }, + { + "label": "test_init_creates_client_and_updates_dates_prod()", + "file_type": "code", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L46", + "community": 29, + "norm_label": "test_init_creates_client_and_updates_dates_prod()", + "id": "tests_test_prometheus_auth_coverage_test_init_creates_client_and_updates_dates_prod" + }, + { + "label": "Cover __init__ and updateDates.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1431", - "community": 498, - "norm_label": "covers line 13: usermanager.__init__.", - "id": "tests_test_controllers_coverage_rationale_1431" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L27", + "community": 68, + "norm_label": "cover __init__ and updatedates.", + "id": "tests_test_prometheus_auth_coverage_rationale_27" }, { - "label": "GET /fundamental?fields=P/L must not return 422 (validation error).", + "label": "Cover sendMessage and streamMessage in agent.py.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L56", - "community": 129, - "norm_label": "get /fundamental?fields=p/l must not return 422 (validation error).", - "id": "tests_test_stocks_api_fields_rationale_56" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L58", + "community": 68, + "norm_label": "cover sendmessage and streammessage in agent.py.", + "id": "tests_test_prometheus_auth_coverage_rationale_58" }, { - "label": "GET /fundamental?fields=MARG. LIQUIDA must not return 422.", + "label": "Cover all methods in chat.py (lines 11-120).", "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L61", - "community": 167, - "norm_label": "get /fundamental?fields=marg. liquida must not return 422.", - "id": "tests_test_stocks_api_fields_rationale_61" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L174", + "community": 52, + "norm_label": "cover all methods in chat.py (lines 11-120).", + "id": "tests_test_prometheus_auth_coverage_rationale_174" }, { - "label": "GET /fundamental?fields=P/L,ROE,DY must not return 422.", + "label": "Cover all methods in authentication.py (lines 13-75).", "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L66", - "community": 166, - "norm_label": "get /fundamental?fields=p/l,roe,dy must not return 422.", - "id": "tests_test_stocks_api_fields_rationale_66" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L398", + "community": 88, + "norm_label": "cover all methods in authentication.py (lines 13-75).", + "id": "tests_test_prometheus_auth_coverage_rationale_398" }, { - "label": "GET /historical?fields=P/L must not return 422.", + "label": "Cover all methods in session.py (lines 14-154).", "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L75", - "community": 129, - "norm_label": "get /historical?fields=p/l must not return 422.", - "id": "tests_test_stocks_api_fields_rationale_75" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L575", + "community": 60, + "norm_label": "cover all methods in session.py (lines 14-154).", + "id": "tests_test_prometheus_auth_coverage_rationale_575" }, { - "label": "GET /historical?fields=MARG. LIQUIDA must not return 422.", + "label": "Exercises the tzinfo-is-None branch (line 144-148).", "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L80", - "community": 167, - "norm_label": "get /historical?fields=marg. liquida must not return 422.", - "id": "tests_test_stocks_api_fields_rationale_80" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L810", + "community": 190, + "norm_label": "exercises the tzinfo-is-none branch (line 144-148).", + "id": "tests_test_prometheus_auth_coverage_rationale_810" }, { - "label": "GET /historical?fields=LUCRO LIQUIDO,P/L must not return 422.", + "label": "Exercises the expiresAt-is-None branch (line 143).", "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L85", - "community": 166, - "norm_label": "get /historical?fields=lucro liquido,p/l must not return 422.", - "id": "tests_test_stocks_api_fields_rationale_85" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L824", + "community": 165, + "norm_label": "exercises the expiresat-is-none branch (line 143).", + "id": "tests_test_prometheus_auth_coverage_rationale_824" }, { - "label": "When tickers have different date coverage, each should get its closest snapshot.", + "label": "Cover getGoogleSSO (lines 6-14).", "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L94", - "community": 191, - "norm_label": "when tickers have different date coverage, each should get its closest snapshot.", - "id": "tests_test_stocks_api_fields_rationale_94" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L843", + "community": 68, + "norm_label": "cover getgooglesso (lines 6-14).", + "id": "tests_test_prometheus_auth_coverage_rationale_843" }, { - "label": ".putCache()", + "label": "TestPrometheusGeneratorInit", "file_type": "code", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L101", - "community": 82, - "norm_label": ".putcache()", - "id": "stocks_api_cache_stockscachemanager_putcache" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L26", + "community": 68, + "norm_label": "testprometheusgeneratorinit", + "id": "tests_test_prometheus_auth_coverage_testprometheusgeneratorinit" }, { - "label": ".clearQueryCache()", + "label": "TestPrometheusGeneratorExecuteWorkflow", "file_type": "code", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L107", - "community": 42, - "norm_label": ".clearquerycache()", - "id": "stocks_api_cache_stockscachemanager_clearquerycache" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L57", + "community": 68, + "norm_label": "testprometheusgeneratorexecuteworkflow", + "id": "tests_test_prometheus_auth_coverage_testprometheusgeneratorexecuteworkflow" }, { - "label": "parseCotationDates()", + "label": "_make_generator()", "file_type": "code", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L42", - "community": 517, - "norm_label": "parsecotationdates()", - "id": "stocks_api_query_parsecotationdates" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L62", + "community": 29, + "norm_label": "_make_generator()", + "id": "tests_test_prometheus_auth_coverage_make_generator" }, { - "label": "TestCacheLRUEviction", + "label": "test_execute_workflow_basic_no_history()", "file_type": "code", - "source_file": "tests/test_cache.py", - "source_location": "L14", - "community": 95, - "norm_label": "testcachelrueviction", - "id": "tests_test_cache_testcachelrueviction" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L72", + "community": 29, + "norm_label": "test_execute_workflow_basic_no_history()", + "id": "tests_test_prometheus_auth_coverage_test_execute_workflow_basic_no_history" }, { - "label": "._make_manager()", + "label": "test_execute_workflow_with_history()", "file_type": "code", - "source_file": "tests/test_cache.py", - "source_location": "L17", - "community": 95, - "norm_label": "._make_manager()", - "id": "tests_test_cache_testcachelrueviction_make_manager" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L117", + "community": 29, + "norm_label": "test_execute_workflow_with_history()", + "id": "tests_test_prometheus_auth_coverage_test_execute_workflow_with_history" }, { - "label": ".test_query_cache_starts_empty()", + "label": "test_execute_workflow_with_session_summary()", "file_type": "code", - "source_file": "tests/test_cache.py", - "source_location": "L22", - "community": 95, - "norm_label": ".test_query_cache_starts_empty()", - "id": "tests_test_cache_testcachelrueviction_test_query_cache_starts_empty" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L144", + "community": 29, + "norm_label": "test_execute_workflow_with_session_summary()", + "id": "tests_test_prometheus_auth_coverage_test_execute_workflow_with_session_summary" }, { - "label": ".test_query_cache_max_size_constant()", + "label": "test_execute_workflow_session_db_exception()", "file_type": "code", - "source_file": "tests/test_cache.py", - "source_location": "L26", - "community": 95, - "norm_label": ".test_query_cache_max_size_constant()", - "id": "tests_test_cache_testcachelrueviction_test_query_cache_max_size_constant" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L175", + "community": 29, + "norm_label": "test_execute_workflow_session_db_exception()", + "id": "tests_test_prometheus_auth_coverage_test_execute_workflow_session_db_exception" }, { - "label": ".test_lru_eviction_when_over_limit()", + "label": "test_execute_workflow_global_request_with_api_key()", "file_type": "code", - "source_file": "tests/test_cache.py", - "source_location": "L29", - "community": 95, - "norm_label": ".test_lru_eviction_when_over_limit()", - "id": "tests_test_cache_testcachelrueviction_test_lru_eviction_when_over_limit" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L202", + "community": 29, + "norm_label": "test_execute_workflow_global_request_with_api_key()", + "id": "tests_test_prometheus_auth_coverage_test_execute_workflow_global_request_with_api_key" }, { - "label": ".test_move_to_end_on_cache_hit()", + "label": "test_execute_workflow_global_request_api_error()", "file_type": "code", - "source_file": "tests/test_cache.py", - "source_location": "L50", - "community": 95, - "norm_label": ".test_move_to_end_on_cache_hit()", - "id": "tests_test_cache_testcachelrueviction_test_move_to_end_on_cache_hit" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L251", + "community": 29, + "norm_label": "test_execute_workflow_global_request_api_error()", + "id": "tests_test_prometheus_auth_coverage_test_execute_workflow_global_request_api_error" }, { - "label": ".test_clear_query_cache()", + "label": "test_fetch_stock_data_exception()", "file_type": "code", - "source_file": "tests/test_cache.py", - "source_location": "L68", - "community": 95, - "norm_label": ".test_clear_query_cache()", - "id": "tests_test_cache_testcachelrueviction_test_clear_query_cache" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L289", + "community": 29, + "norm_label": "test_fetch_stock_data_exception()", + "id": "tests_test_prometheus_auth_coverage_test_fetch_stock_data_exception" }, { - "label": ".test_none_columns_key_is_none()", + "label": "test_fetch_stock_data_non_200()", "file_type": "code", - "source_file": "tests/test_cache.py", - "source_location": "L77", - "community": 95, - "norm_label": ".test_none_columns_key_is_none()", - "id": "tests_test_cache_testcachelrueviction_test_none_columns_key_is_none" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L325", + "community": 29, + "norm_label": "test_fetch_stock_data_non_200()", + "id": "tests_test_prometheus_auth_coverage_test_fetch_stock_data_non_200" }, { - "label": ".test_columns_key_is_tuple()", + "label": "test_execute_workflow_stage4_summary_update()", "file_type": "code", - "source_file": "tests/test_cache.py", - "source_location": "L83", - "community": 95, - "norm_label": ".test_columns_key_is_tuple()", - "id": "tests_test_cache_testcachelrueviction_test_columns_key_is_tuple" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L364", + "community": 29, + "norm_label": "test_execute_workflow_stage4_summary_update()", + "id": "tests_test_prometheus_auth_coverage_test_execute_workflow_stage4_summary_update" }, { - "label": "TestColumnValidator", + "label": "test_execute_workflow_global_request_status_not_200()", "file_type": "code", - "source_file": "tests/test_cache.py", - "source_location": "L89", - "community": 135, - "norm_label": "testcolumnvalidator", - "id": "tests_test_cache_testcolumnvalidator" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L396", + "community": 29, + "norm_label": "test_execute_workflow_global_request_status_not_200()", + "id": "tests_test_prometheus_auth_coverage_test_execute_workflow_global_request_status_not_200" }, { - "label": ".test_valid_column_names()", - "file_type": "code", - "source_file": "tests/test_cache.py", - "source_location": "L90", - "community": 135, - "norm_label": ".test_valid_column_names()", - "id": "tests_test_cache_testcolumnvalidator_test_valid_column_names" + "label": "Stage 1 + Stage 2 + Stage 3, no history, no sessionId.", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L73", + "community": 387, + "norm_label": "stage 1 + stage 2 + stage 3, no history, no sessionid.", + "id": "tests_test_prometheus_auth_coverage_rationale_73" }, { - "label": ".test_invalid_column_names()", - "file_type": "code", - "source_file": "tests/test_cache.py", - "source_location": "L97", - "community": 135, - "norm_label": ".test_invalid_column_names()", - "id": "tests_test_cache_testcolumnvalidator_test_invalid_column_names" + "label": "Test history formatting (lines 48-49, 159-162).", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L118", + "community": 388, + "norm_label": "test history formatting (lines 48-49, 159-162).", + "id": "tests_test_prometheus_auth_coverage_rationale_118" }, { - "label": ".test_empty_string()", - "file_type": "code", - "source_file": "tests/test_cache.py", - "source_location": "L103", - "community": 135, - "norm_label": ".test_empty_string()", - "id": "tests_test_cache_testcolumnvalidator_test_empty_string" + "label": "Stage 0: sessionId+db summary loading (lines 55-62).", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L145", + "community": 389, + "norm_label": "stage 0: sessionid+db summary loading (lines 55-62).", + "id": "tests_test_prometheus_auth_coverage_rationale_145" }, { - "label": "TestCacheTTLLogic", - "file_type": "code", - "source_file": "tests/test_cache.py", - "source_location": "L107", - "community": 95, - "norm_label": "testcachettllogic", - "id": "tests_test_cache_testcachettllogic" + "label": "Global request API error (lines 208-209).", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L252", + "community": 390, + "norm_label": "global request api error (lines 208-209).", + "id": "tests_test_prometheus_auth_coverage_rationale_252" }, { - "label": "._make_manager()", - "file_type": "code", - "source_file": "tests/test_cache.py", - "source_location": "L108", - "community": 95, - "norm_label": "._make_manager()", - "id": "tests_test_cache_testcachettllogic_make_manager" + "label": "fetchStockData exception path (lines 223-225).", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L290", + "community": 391, + "norm_label": "fetchstockdata exception path (lines 223-225).", + "id": "tests_test_prometheus_auth_coverage_rationale_290" }, { - "label": ".test_expired_entry_detected()", - "file_type": "code", - "source_file": "tests/test_cache.py", - "source_location": "L112", - "community": 95, - "norm_label": ".test_expired_entry_detected()", - "id": "tests_test_cache_testcachettllogic_test_expired_entry_detected" + "label": "fetchStockData non-200 status (line 222).", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L326", + "community": 392, + "norm_label": "fetchstockdata non-200 status (line 222).", + "id": "tests_test_prometheus_auth_coverage_rationale_326" }, { - "label": ".test_fresh_entry_detected()", - "file_type": "code", - "source_file": "tests/test_cache.py", - "source_location": "L123", - "community": 95, - "norm_label": ".test_fresh_entry_detected()", - "id": "tests_test_cache_testcachettllogic_test_fresh_entry_detected" + "label": "Stage 4: summary update when len(history) % 10 == 0 (lines 325-363).", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L365", + "community": 393, + "norm_label": "stage 4: summary update when len(history) % 10 == 0 (lines 325-363).", + "id": "tests_test_prometheus_auth_coverage_rationale_365" }, { - "label": "Tests for StocksCacheManager queryCache LRU eviction.", + "label": "Global request with non-200 status (line 201-203 skipped).", "file_type": "rationale", - "source_file": "tests/test_cache.py", - "source_location": "L15", - "community": 95, - "norm_label": "tests for stockscachemanager querycache lru eviction.", - "id": "tests_test_cache_rationale_15" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L397", + "community": 394, + "norm_label": "global request with non-200 status (line 201-203 skipped).", + "id": "tests_test_prometheus_auth_coverage_rationale_397" }, { - "label": "Create a StocksCacheManager with a mock DB engine.", + "label": "Cover all methods in chat.py (lines 11-120).", "file_type": "rationale", - "source_file": "tests/test_cache.py", - "source_location": "L18", - "community": 95, - "norm_label": "create a stockscachemanager with a mock db engine.", - "id": "tests_test_cache_rationale_18" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L440", + "community": 52, + "norm_label": "cover all methods in chat.py (lines 11-120).", + "id": "tests_test_prometheus_auth_coverage_rationale_440" }, { - "label": "When columns is None, cache key should be None.", + "label": "Cover all methods in authentication.py (lines 13-75).", "file_type": "rationale", - "source_file": "tests/test_cache.py", - "source_location": "L78", - "community": 95, - "norm_label": "when columns is none, cache key should be none.", - "id": "tests_test_cache_rationale_78" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L664", + "community": 88, + "norm_label": "cover all methods in authentication.py (lines 13-75).", + "id": "tests_test_prometheus_auth_coverage_rationale_664" }, { - "label": ".test_putCache_adds_entry_and_evicts_when_full()", - "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L70", - "community": 3, - "norm_label": ".test_putcache_adds_entry_and_evicts_when_full()", - "id": "tests_test_stocks_api_coverage_teststockscachemanager_test_putcache_adds_entry_and_evicts_when_full" + "label": "Cover all methods in session.py (lines 14-154).", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L841", + "community": 60, + "norm_label": "cover all methods in session.py (lines 14-154).", + "id": "tests_test_prometheus_auth_coverage_rationale_841" }, { - "label": ".test_clearQueryCache_empties_cache()", - "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L89", - "community": 3, - "norm_label": ".test_clearquerycache_empties_cache()", - "id": "tests_test_stocks_api_coverage_teststockscachemanager_test_clearquerycache_empties_cache" + "label": "Exercises the tzinfo-is-None branch (line 144-148).", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L1076", + "community": 190, + "norm_label": "exercises the tzinfo-is-none branch (line 144-148).", + "id": "tests_test_prometheus_auth_coverage_rationale_1076" }, { - "label": ".test_getCachedStocks_cache_hit()", + "label": "Exercises the expiresAt-is-None branch (line 143).", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L1090", + "community": 165, + "norm_label": "exercises the expiresat-is-none branch (line 143).", + "id": "tests_test_prometheus_auth_coverage_rationale_1090" + }, + { + "label": "Cover getGoogleSSO (lines 6-14).", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L1109", + "community": 68, + "norm_label": "cover getgooglesso (lines 6-14).", + "id": "tests_test_prometheus_auth_coverage_rationale_1109" + }, + { + "label": "generation.py", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L97", - "community": 3, - "norm_label": ".test_getcachedstocks_cache_hit()", - "id": "tests_test_stocks_api_coverage_teststockscachemanager_test_getcachedstocks_cache_hit" + "source_file": "main/app/prometheus/generation.py", + "source_location": "L1", + "community": 29, + "norm_label": "generation.py", + "id": "main_app_prometheus_generation_py" }, { - "label": ".test_getCachedStocks_cache_hit_expired()", + "label": "PrometheusGenerator", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L107", - "community": 3, - "norm_label": ".test_getcachedstocks_cache_hit_expired()", - "id": "tests_test_stocks_api_coverage_teststockscachemanager_test_getcachedstocks_cache_hit_expired" + "source_file": "main/app/prometheus/generation.py", + "source_location": "L18", + "community": 29, + "norm_label": "prometheusgenerator", + "id": "prometheus_generation_prometheusgenerator" }, { - "label": ".test_getCachedStocks_force_refresh()", + "label": ".__init__()", "file_type": "code", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L127", - "community": 3, - "norm_label": ".test_getcachedstocks_force_refresh()", - "id": "tests_test_stocks_api_coverage_teststockscachemanager_test_getcachedstocks_force_refresh" + "source_file": "main/app/prometheus/generation.py", + "source_location": "L19", + "community": 29, + "norm_label": ".__init__()", + "id": "prometheus_generation_prometheusgenerator_init" }, { - "label": "Tests covering key.py lines 15-40. Uses asyncio.run() since pytest-asyncio", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L229", - "community": 567, - "norm_label": "tests covering key.py lines 15-40. uses asyncio.run() since pytest-asyncio", - "id": "tests_test_stocks_api_coverage_rationale_229" + "label": ".updateDates()", + "file_type": "code", + "source_file": "main/app/prometheus/generation.py", + "source_location": "L23", + "community": 29, + "norm_label": ".updatedates()", + "id": "prometheus_generation_prometheusgenerator_updatedates" }, { - "label": "When KEY.SYSTEM is falsy, return None (line 16).", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L234", - "community": 409, - "norm_label": "when key.system is falsy, return none (line 16).", - "id": "tests_test_stocks_api_coverage_rationale_234" + "label": ".executeWorkflow()", + "file_type": "code", + "source_file": "main/app/prometheus/generation.py", + "source_location": "L36", + "community": 29, + "norm_label": ".executeworkflow()", + "id": "prometheus_generation_prometheusgenerator_executeworkflow" }, { - "label": "When key is required but not provided (line 19).", + "label": "Get year-based historical financial data for Brazilian B3 stocks. Returns", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L245", - "community": 410, - "norm_label": "when key is required but not provided (line 19).", - "id": "tests_test_stocks_api_coverage_rationale_245" + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L65", + "community": 197, + "norm_label": "get year-based historical financial data for brazilian b3 stocks. returns", + "id": "controller_stocksapi_controller_rationale_65" }, { - "label": "When atomic UPDATE returns 0 rows and query finds no key -> 401.", + "label": "Get point-in-time fundamental/valuation data for Brazilian B3 stocks. Ret", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L258", - "community": 411, - "norm_label": "when atomic update returns 0 rows and query finds no key -> 401.", - "id": "tests_test_stocks_api_coverage_rationale_258" + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L123", + "community": 157, + "norm_label": "get point-in-time fundamental/valuation data for brazilian b3 stocks. ret", + "id": "controller_stocksapi_controller_rationale_123" }, { - "label": "When atomic UPDATE returns 0 rows and query finds key at limit -> 429.", + "label": "Get 10-year daily price history (cotation) for Brazilian B3 stocks. Retur", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L275", - "community": 412, - "norm_label": "when atomic update returns 0 rows and query finds key at limit -> 429.", - "id": "tests_test_stocks_api_coverage_rationale_275" + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L184", + "community": 169, + "norm_label": "get 10-year daily price history (cotation) for brazilian b3 stocks. retur", + "id": "controller_stocksapi_controller_rationale_184" }, { - "label": "Happy path: atomic UPDATE succeeds, returns key (lines 22-33).", + "label": "Get real-time price quotation for a single Brazilian B3 stock. Returns th", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L293", - "community": 413, - "norm_label": "happy path: atomic update succeeds, returns key (lines 22-33).", - "id": "tests_test_stocks_api_coverage_rationale_293" + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L232", + "community": 81, + "norm_label": "get real-time price quotation for a single brazilian b3 stock. returns th", + "id": "controller_stocksapi_controller_rationale_232" }, { - "label": "Generic DB exception should rollback and raise 500 (lines 38-40).", + "label": "Both cookies should have secure flag (HTTPS only).", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L326", - "community": 414, - "norm_label": "generic db exception should rollback and raise 500 (lines 38-40).", - "id": "tests_test_stocks_api_coverage_rationale_326" + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L167", + "community": 395, + "norm_label": "both cookies should have secure flag (https only).", + "id": "tests_test_oauth_cookie_security_rationale_167" }, { - "label": "Tests covering key.py line 44.", + "label": "When no state param, return JSON response (not redirect).", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L341", - "community": 141, - "norm_label": "tests covering key.py line 44.", - "id": "tests_test_stocks_api_coverage_rationale_341" + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L199", + "community": 396, + "norm_label": "when no state param, return json response (not redirect).", + "id": "tests_test_oauth_cookie_security_rationale_199" }, { - "label": "Tests covering key.py lines 48-66.", + "label": "Frontend JavaScript should be able to read token from readable cookie.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L364", - "community": 565, - "norm_label": "tests covering key.py lines 48-66.", - "id": "tests_test_stocks_api_coverage_rationale_364" + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L228", + "community": 397, + "norm_label": "frontend javascript should be able to read token from readable cookie.", + "id": "tests_test_oauth_cookie_security_rationale_228" }, { - "label": "New key created when no existing key for user (lines 57-59).", + "label": "Set required env vars before test collection. config.py eagerly instantia", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L368", - "community": 415, - "norm_label": "new key created when no existing key for user (lines 57-59).", - "id": "tests_test_stocks_api_coverage_rationale_368" + "source_file": "tests/conftest.py", + "source_location": "L13", + "community": 251, + "norm_label": "set required env vars before test collection. config.py eagerly instantia", + "id": "tests_conftest_rationale_13" }, { - "label": "Existing key is updated (lines 54-56).", + "label": "TestClient with stocks router + verifyAPIKey + getCurrentUser overrides.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L383", - "community": 416, - "norm_label": "existing key is updated (lines 54-56).", - "id": "tests_test_stocks_api_coverage_rationale_383" + "source_file": "tests/conftest.py", + "source_location": "L74", + "community": 105, + "norm_label": "testclient with stocks router + verifyapikey + getcurrentuser overrides.", + "id": "tests_conftest_rationale_74" }, { - "label": "Exception during creation triggers rollback and 500 (lines 64-66).", + "label": "TestClient with all routers mounted \u2014 no lifespan (no DB/service init). O", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L400", - "community": 417, - "norm_label": "exception during creation triggers rollback and 500 (lines 64-66).", - "id": "tests_test_stocks_api_coverage_rationale_400" + "source_file": "tests/conftest.py", + "source_location": "L99", + "community": 105, + "norm_label": "testclient with all routers mounted \u2014 no lifespan (no db/service init). o", + "id": "tests_conftest_rationale_99" }, { - "label": "Tests covering query.py lines 22-48.", + "label": "Covers lines 202-204: generic Exception in callback.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L418", - "community": 3, - "norm_label": "tests covering query.py lines 22-48.", - "id": "tests_test_stocks_api_coverage_rationale_418" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L507", + "community": 398, + "norm_label": "covers lines 202-204: generic exception in callback.", + "id": "tests_test_controllers_coverage_rationale_507" }, { - "label": "replaceNan handles direct float NaN values (line 34).", + "label": "Covers line 19: GET /user/health.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L496", - "community": 520, - "norm_label": "replacenan handles direct float nan values (line 34).", - "id": "tests_test_stocks_api_coverage_rationale_496" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L524", + "community": 498, + "norm_label": "covers line 19: get /user/health.", + "id": "tests_test_controllers_coverage_rationale_524" }, { - "label": "Non-JSON-dict/list string is left as-is.", + "label": "Covers line 24: GET /user/me returns currentUser.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L510", - "community": 566, - "norm_label": "non-json-dict/list string is left as-is.", - "id": "tests_test_stocks_api_coverage_rationale_510" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L538", + "community": 47, + "norm_label": "covers line 24: get /user/me returns currentuser.", + "id": "tests_test_controllers_coverage_rationale_538" }, { - "label": "pd.NA is not a string, so lambda returns it unchanged.", + "label": "Covers lines 31-32, 36, 43-44, 48: upgrade developer starter/enterprise.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L519", - "community": 520, - "norm_label": "pd.na is not a string, so lambda returns it unchanged.", - "id": "tests_test_stocks_api_coverage_rationale_519" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L552", + "community": 47, + "norm_label": "covers lines 31-32, 36, 43-44, 48: upgrade developer starter/enterprise.", + "id": "tests_test_controllers_coverage_rationale_552" }, { - "label": "Regression: is_string_dtype fails when column has strings + None (pandas 2.x).", + "label": "Covers lines 53-54, 56: admin access granted / denied.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L528", - "community": 3, - "norm_label": "regression: is_string_dtype fails when column has strings + none (pandas 2.x).", - "id": "tests_test_stocks_api_coverage_rationale_528" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L592", + "community": 47, + "norm_label": "covers lines 53-54, 56: admin access granted / denied.", + "id": "tests_test_controllers_coverage_rationale_592" }, { - "label": "All four SPECIAL_COLS should parse correctly when mixed with None.", + "label": "Covers lines 66, 68-72, 74: GET /user/sessions.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L550", - "community": 3, - "norm_label": "all four special_cols should parse correctly when mixed with none.", - "id": "tests_test_stocks_api_coverage_rationale_550" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L611", + "community": 178, + "norm_label": "covers lines 66, 68-72, 74: get /user/sessions.", + "id": "tests_test_controllers_coverage_rationale_611" }, { - "label": "Tests covering query.py lines 50-67.", + "label": "Covers lines 66, 68-72, 74: full sessions listing.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L575", - "community": 3, - "norm_label": "tests covering query.py lines 50-67.", - "id": "tests_test_stocks_api_coverage_rationale_575" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L614", + "community": 178, + "norm_label": "covers lines 66, 68-72, 74: full sessions listing.", + "id": "tests_test_controllers_coverage_rationale_614" }, { - "label": "Tests covering query.py lines 77-132.", + "label": "Covers lines 100-104, 106: GET /user/sessions/current.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L630", - "community": 112, - "norm_label": "tests covering query.py lines 77-132.", - "id": "tests_test_stocks_api_coverage_rationale_630" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L665", + "community": 107, + "norm_label": "covers lines 100-104, 106: get /user/sessions/current.", + "id": "tests_test_controllers_coverage_rationale_665" }, { - "label": "Pass field name WITHOUT year (how categorizeColumns returns them).", + "label": "Covers lines 100-104, 106: session found.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", + "source_file": "tests/test_controllers_coverage.py", "source_location": "L668", - "community": 28, - "norm_label": "pass field name without year (how categorizecolumns returns them).", - "id": "tests_test_stocks_api_coverage_rationale_668" + "community": 107, + "norm_label": "covers lines 100-104, 106: session found.", + "id": "tests_test_controllers_coverage_rationale_668" }, { - "label": "If an unexpected exception occurs in queryHistorical.", + "label": "Covers line 104: session not found.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L719", - "community": 28, - "norm_label": "if an unexpected exception occurs in queryhistorical.", - "id": "tests_test_stocks_api_coverage_rationale_719" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L701", + "community": 107, + "norm_label": "covers line 104: session not found.", + "id": "tests_test_controllers_coverage_rationale_701" }, { - "label": "Invalid date format raises exception (line 132).", + "label": "Covers lines 126-136: DELETE /user/sessions/{sessionId}.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L737", - "community": 543, - "norm_label": "invalid date format raises exception (line 132).", - "id": "tests_test_stocks_api_coverage_rationale_737" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L724", + "community": 104, + "norm_label": "covers lines 126-136: delete /user/sessions/{sessionid}.", + "id": "tests_test_controllers_coverage_rationale_724" }, { - "label": "No historical columns at all -> inner 400 caught by outer except -> 500.", + "label": "Covers lines 126, 131, 135-136.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L753", - "community": 127, - "norm_label": "no historical columns at all -> inner 400 caught by outer except -> 500.", - "id": "tests_test_stocks_api_coverage_rationale_753" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L727", + "community": 104, + "norm_label": "covers lines 126, 131, 135-136.", + "id": "tests_test_controllers_coverage_rationale_727" }, { - "label": "Historical query with a year range.", + "label": "Covers lines 127-129: session not found.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L763", - "community": 28, - "norm_label": "historical query with a year range.", - "id": "tests_test_stocks_api_coverage_rationale_763" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L754", + "community": 104, + "norm_label": "covers lines 127-129: session not found.", + "id": "tests_test_controllers_coverage_rationale_754" }, { - "label": "Multiple search terms, all found in tickerIndex.", + "label": "Covers lines 132-133: revokeSession returns False.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L770", - "community": 28, - "norm_label": "multiple search terms, all found in tickerindex.", - "id": "tests_test_stocks_api_coverage_rationale_770" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L776", + "community": 104, + "norm_label": "covers lines 132-133: revokesession returns false.", + "id": "tests_test_controllers_coverage_rationale_776" }, { - "label": "Calling with all None returns 400.", + "label": "Covers lines 143, 145, 147-148: POST /user/sessions/revoke-all.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L778", - "community": 112, - "norm_label": "calling with all none returns 400.", - "id": "tests_test_stocks_api_coverage_rationale_778" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L802", + "community": 221, + "norm_label": "covers lines 143, 145, 147-148: post /user/sessions/revoke-all.", + "id": "tests_test_controllers_coverage_rationale_802" }, { - "label": "Tests covering query.py lines 142-202.", + "label": "Covers lines 143, 145, 147-148.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L789", - "community": 112, - "norm_label": "tests covering query.py lines 142-202.", - "id": "tests_test_stocks_api_coverage_rationale_789" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L805", + "community": 221, + "norm_label": "covers lines 143, 145, 147-148.", + "id": "tests_test_controllers_coverage_rationale_805" }, { - "label": "Invalid date -> inner 400 passes through (not wrapped as 500).", + "label": "Covers line 24: GET /prometheus/health.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L843", - "community": 497, - "norm_label": "invalid date -> inner 400 passes through (not wrapped as 500).", - "id": "tests_test_stocks_api_coverage_rationale_843" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L832", + "community": 498, + "norm_label": "covers line 24: get /prometheus/health.", + "id": "tests_test_controllers_coverage_rationale_832" }, { - "label": "search.strip() == '' should still dedup (line 181).", + "label": "Covers lines 33-36: GET /prometheus/sessions.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L896", - "community": 39, - "norm_label": "search.strip() == '' should still dedup (line 181).", - "id": "tests_test_stocks_api_coverage_rationale_896" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L846", + "community": 99, + "norm_label": "covers lines 33-36: get /prometheus/sessions.", + "id": "tests_test_controllers_coverage_rationale_846" }, { - "label": "DataFrame without TIME column.", + "label": "Covers line 52: POST /prometheus/sessions.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L905", - "community": 17, - "norm_label": "dataframe without time column.", - "id": "tests_test_stocks_api_coverage_rationale_905" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L864", + "community": 99, + "norm_label": "covers line 52: post /prometheus/sessions.", + "id": "tests_test_controllers_coverage_rationale_864" }, { - "label": "Two dates in the range, both valid.", + "label": "Covers lines 62-63, 65-68: PUT /prometheus/sessions/{sessionId}.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L918", - "community": 39, - "norm_label": "two dates in the range, both valid.", - "id": "tests_test_stocks_api_coverage_rationale_918" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L878", + "community": 99, + "norm_label": "covers lines 62-63, 65-68: put /prometheus/sessions/{sessionid}.", + "id": "tests_test_controllers_coverage_rationale_878" }, { - "label": "Single invalid date -> inner 400 passes through.", + "label": "Covers lines 65-68: title updated successfully.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L932", - "community": 46, - "norm_label": "single invalid date -> inner 400 passes through.", - "id": "tests_test_stocks_api_coverage_rationale_932" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L881", + "community": 99, + "norm_label": "covers lines 65-68: title updated successfully.", + "id": "tests_test_controllers_coverage_rationale_881" }, { - "label": "Invalid fields now raise 400 with actionable error message.", + "label": "Covers lines 62-63: not the session owner.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L942", - "community": 46, - "norm_label": "invalid fields now raise 400 with actionable error message.", - "id": "tests_test_stocks_api_coverage_rationale_942" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L892", + "community": 99, + "norm_label": "covers lines 62-63: not the session owner.", + "id": "tests_test_controllers_coverage_rationale_892" }, { - "label": "Multiple search terms with tickerIndex.", + "label": "Covers lines 66-67: session not found.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L959", - "community": 17, - "norm_label": "multiple search terms with tickerindex.", - "id": "tests_test_stocks_api_coverage_rationale_959" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L901", + "community": 99, + "norm_label": "covers lines 66-67: session not found.", + "id": "tests_test_controllers_coverage_rationale_901" }, { - "label": "Search with no index match falls back to string startswith.", + "label": "Covers lines 77, 83-84, 86: GET /prometheus/history/{sessionId}.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L967", - "community": 39, - "norm_label": "search with no index match falls back to string startswith.", - "id": "tests_test_stocks_api_coverage_rationale_967" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L912", + "community": 104, + "norm_label": "covers lines 77, 83-84, 86: get /prometheus/history/{sessionid}.", + "id": "tests_test_controllers_coverage_rationale_912" }, { - "label": "len(dateRange) == 1 -> per-ticker closest snapshot.", + "label": "Covers lines 77, 86: session found with history.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L975", - "community": 39, - "norm_label": "len(daterange) == 1 -> per-ticker closest snapshot.", - "id": "tests_test_stocks_api_coverage_rationale_975" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L915", + "community": 104, + "norm_label": "covers lines 77, 86: session found with history.", + "id": "tests_test_controllers_coverage_rationale_915" }, { - "label": "COTACAO 10Y PADRAO and COTACAO 10Y AJUSTADA belong to /cotations, not /fundament", + "label": "Covers lines 83-84: session not found.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L990", - "community": 570, - "norm_label": "cotacao 10y padrao and cotacao 10y ajustada belong to /cotations, not /fundament", - "id": "tests_test_stocks_api_coverage_rationale_990" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L959", + "community": 104, + "norm_label": "covers lines 83-84: session not found.", + "id": "tests_test_controllers_coverage_rationale_959" }, { - "label": "Regression: queryFundamental must not mutate the shared cache TIME column.", + "label": "Covers lines 95-98: DELETE /prometheus/sessions/{sessionId}.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1017", - "community": 101, - "norm_label": "regression: queryfundamental must not mutate the shared cache time column.", - "id": "tests_test_stocks_api_coverage_rationale_1017" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L994", + "community": 231, + "norm_label": "covers lines 95-98: delete /prometheus/sessions/{sessionid}.", + "id": "tests_test_controllers_coverage_rationale_994" }, { - "label": "Tests for queryCotations and /stocks/cotations.", + "label": "Covers lines 95-98: session deleted.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1060", - "community": 10, - "norm_label": "tests for querycotations and /stocks/cotations.", - "id": "tests_test_stocks_api_coverage_rationale_1060" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L997", + "community": 231, + "norm_label": "covers lines 95-98: session deleted.", + "id": "tests_test_controllers_coverage_rationale_997" }, { - "label": "2 tickers x 2 rows. Rows 0,2 are 2024-01-15; rows 1,3 are 2024-06-15. M", + "label": "Covers lines 96-97: session not found.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1072", - "community": 10, - "norm_label": "2 tickers x 2 rows. rows 0,2 are 2024-01-15; rows 1,3 are 2024-06-15. m", - "id": "tests_test_stocks_api_coverage_rationale_1072" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1007", + "community": 231, + "norm_label": "covers lines 96-97: session not found.", + "id": "tests_test_controllers_coverage_rationale_1007" }, { - "label": "4 rows for 2 tickers -> 2 results, one per ticker, both with latest TIME.", + "label": "Covers lines 114-115, 117-120, 122, 125: POST /prometheus/chat.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1118", - "community": 10, - "norm_label": "4 rows for 2 tickers -> 2 results, one per ticker, both with latest time.", - "id": "tests_test_stocks_api_coverage_rationale_1118" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1017", + "community": 16, + "norm_label": "covers lines 114-115, 117-120, 122, 125: post /prometheus/chat.", + "id": "tests_test_controllers_coverage_rationale_1017" }, { - "label": "dates=\"2016-12-02\" should keep only the 02-12-2016 entry in each JSON list.", + "label": "Covers lines 111-112: sessionId is None, new session created.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1130", - "community": 10, - "norm_label": "dates=\"2016-12-02\" should keep only the 02-12-2016 entry in each json list.", - "id": "tests_test_stocks_api_coverage_rationale_1130" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1020", + "community": 16, + "norm_label": "covers lines 111-112: sessionid is none, new session created.", + "id": "tests_test_controllers_coverage_rationale_1020" }, { - "label": "Hit the actual /stocks/cotations HTTP endpoint with adjusted=false.", + "label": "Covers lines 114-115, 117-120, 122: existing session with verified ownership.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1216", - "community": 521, - "norm_label": "hit the actual /stocks/cotations http endpoint with adjusted=false.", - "id": "tests_test_stocks_api_coverage_rationale_1216" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1038", + "community": 16, + "norm_label": "covers lines 114-115, 117-120, 122: existing session with verified ownership.", + "id": "tests_test_controllers_coverage_rationale_1038" }, { - "label": "Tests for queryLiveCotation and /stocks/cotations/live.", + "label": "Covers lines 114-115: session ownership check fails.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1243", - "community": 22, - "norm_label": "tests for querylivecotation and /stocks/cotations/live.", - "id": "tests_test_stocks_api_coverage_rationale_1243" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1079", + "community": 16, + "norm_label": "covers lines 114-115: session ownership check fails.", + "id": "tests_test_controllers_coverage_rationale_1079" }, { - "label": "GET /stocks/realtime-cotation without search returns 422.", + "label": "Generic Exception in chat propagates to FastAPI's default 500 handler.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1342", - "community": 234, - "norm_label": "get /stocks/realtime-cotation without search returns 422.", - "id": "tests_test_stocks_api_coverage_rationale_1342" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1116", + "community": 16, + "norm_label": "generic exception in chat propagates to fastapi's default 500 handler.", + "id": "tests_test_controllers_coverage_rationale_1116" }, { - "label": "GET /cotations without search returns 422.", + "label": "Covers line 18: GET /stocks/health.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1392", - "community": 568, - "norm_label": "get /cotations without search returns 422.", - "id": "tests_test_stocks_api_coverage_rationale_1392" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1134", + "community": 498, + "norm_label": "covers line 18: get /stocks/health.", + "id": "tests_test_controllers_coverage_rationale_1134" }, { - "label": "stocks_client()", - "file_type": "code", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L52", - "community": 129, - "norm_label": "stocks_client()", - "id": "tests_test_stocks_api_fields_stocks_client" + "label": "Covers line 35: GET /stocks/historical.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1148", + "community": 14, + "norm_label": "covers line 35: get /stocks/historical.", + "id": "tests_test_controllers_coverage_rationale_1148" }, { - "label": "Direct tests on the regex pattern used for the `fields` query param.", + "label": "Covers line 47: GET /stocks/fundamental.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L18", - "community": 128, - "norm_label": "direct tests on the regex pattern used for the `fields` query param.", - "id": "tests_test_stocks_api_fields_rationale_18" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1162", + "community": 14, + "norm_label": "covers line 47: get /stocks/fundamental.", + "id": "tests_test_controllers_coverage_rationale_1162" }, { - "label": "P/L must be accepted \u2014 it's a standard valuation metric.", + "label": "Covers lines 52-53, 57-63: GET /stocks/key/generate. NOTE: stocksapi_cont", "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L21", - "community": 128, - "norm_label": "p/l must be accepted \u2014 it's a standard valuation metric.", - "id": "tests_test_stocks_api_fields_rationale_21" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1176", + "community": 14, + "norm_label": "covers lines 52-53, 57-63: get /stocks/key/generate. note: stocksapi_cont", + "id": "tests_test_controllers_coverage_rationale_1176" }, { - "label": "MARG. LIQUIDA must be accepted \u2014 returned by /stocks/fields.", + "label": "Covers lines 52-53: user without GENERATE_API_KEYS permission gets 403.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L25", - "community": 254, - "norm_label": "marg. liquida must be accepted \u2014 returned by /stocks/fields.", - "id": "tests_test_stocks_api_fields_rationale_25" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1184", + "community": 14, + "norm_label": "covers lines 52-53: user without generate_api_keys permission gets 403.", + "id": "tests_test_controllers_coverage_rationale_1184" }, { - "label": "P/VP and similar combos must be accepted.", + "label": "Covers lines 57-60: admin bypasses permission check and generates key.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L29", - "community": 128, - "norm_label": "p/vp and similar combos must be accepted.", - "id": "tests_test_stocks_api_fields_rationale_29" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1192", + "community": 14, + "norm_label": "covers lines 57-60: admin bypasses permission check and generates key.", + "id": "tests_test_controllers_coverage_rationale_1192" }, { - "label": "Basic fields like ROE must still pass.", + "label": "Covers lines 61-63: exception during key generation (admin path).", "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L33", - "community": 255, - "norm_label": "basic fields like roe must still pass.", - "id": "tests_test_stocks_api_fields_rationale_33" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1204", + "community": 14, + "norm_label": "covers lines 61-63: exception during key generation (admin path).", + "id": "tests_test_controllers_coverage_rationale_1204" }, { - "label": "Comma-separated list containing slash fields must pass.", + "label": "Covers lines 13, 17, 19-20, 22-27: UserManager.addRoleToUser.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L37", - "community": 252, - "norm_label": "comma-separated list containing slash fields must pass.", - "id": "tests_test_stocks_api_fields_rationale_37" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1219", + "community": 563, + "norm_label": "covers lines 13, 17, 19-20, 22-27: usermanager.addroletouser.", + "id": "tests_test_controllers_coverage_rationale_1219" }, { - "label": "Pattern must reject potential injection \u2014 no angle brackets.", + "label": "Covers lines 17, 22-27: user found, role not present, role added.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L41", - "community": 253, - "norm_label": "pattern must reject potential injection \u2014 no angle brackets.", - "id": "tests_test_stocks_api_fields_rationale_41" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1222", + "community": 564, + "norm_label": "covers lines 17, 22-27: user found, role not present, role added.", + "id": "tests_test_controllers_coverage_rationale_1222" }, { - "label": "GET /historical?fields=MARG. LIQUIDA must not return 422.", + "label": "Covers line 27: user already has the role.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L99", - "community": 167, - "norm_label": "get /historical?fields=marg. liquida must not return 422.", - "id": "tests_test_stocks_api_fields_rationale_99" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1239", + "community": 568, + "norm_label": "covers line 27: user already has the role.", + "id": "tests_test_controllers_coverage_rationale_1239" }, { - "label": "GET /historical?fields=LUCRO LIQUIDO,P/L must not return 422.", + "label": "Covers lines 19-20: user not found raises 404.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L104", - "community": 166, - "norm_label": "get /historical?fields=lucro liquido,p/l must not return 422.", - "id": "tests_test_stocks_api_fields_rationale_104" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1254", + "community": 528, + "norm_label": "covers lines 19-20: user not found raises 404.", + "id": "tests_test_controllers_coverage_rationale_1254" }, { - "label": "Integration: /stocks/fundamental date filter should work per-ticker.", + "label": "Covers lines 34, 36-38, 40-44, 46, 48-49, 51, 58-59, 61, 63-67: UserManager.getC", "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L110", - "community": 179, - "norm_label": "integration: /stocks/fundamental date filter should work per-ticker.", - "id": "tests_test_stocks_api_fields_rationale_110" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1266", + "community": 493, + "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_1266" }, { - "label": "When tickers have different date coverage, each should get its closest snapshot.", + "label": "Covers lines 36-38, 40-44, 46, 48-49, 51, 58-59, 61: successful user retrieval.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L113", - "community": 179, - "norm_label": "when tickers have different date coverage, each should get its closest snapshot.", - "id": "tests_test_stocks_api_fields_rationale_113" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1273", + "community": 493, + "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" }, { - "label": "Tests for queryLiveCotation and /stocks/cotations/live.", + "label": "Covers lines 42-44: session validation fails.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1245", - "community": 22, - "norm_label": "tests for querylivecotation and /stocks/cotations/live.", - "id": "tests_test_stocks_api_coverage_rationale_1245" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1298", + "community": 569, + "norm_label": "covers lines 42-44: session validation fails.", + "id": "tests_test_controllers_coverage_rationale_1298" }, { - "label": "GET /stocks/realtime-cotation without search returns 422.", + "label": "Covers lines 48-49: user not in DB.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1344", - "community": 234, - "norm_label": "get /stocks/realtime-cotation without search returns 422.", - "id": "tests_test_stocks_api_coverage_rationale_1344" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1314", + "community": 546, + "norm_label": "covers lines 48-49: user not in db.", + "id": "tests_test_controllers_coverage_rationale_1314" }, { - "label": "GET /cotations without search returns 422.", + "label": "Covers lines 65-67: unexpected exception.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1394", - "community": 568, - "norm_label": "get /cotations without search returns 422.", - "id": "tests_test_stocks_api_coverage_rationale_1394" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1331", + "community": 560, + "norm_label": "covers lines 65-67: unexpected exception.", + "id": "tests_test_controllers_coverage_rationale_1331" }, { - "label": "Direct tests on the regex pattern used for the `fields` query param.", + "label": "Covers lines 37-38, 46, 51, 58 (sessionId is None): skips session validation.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L17", - "community": 128, - "norm_label": "direct tests on the regex pattern used for the `fields` query param.", - "id": "tests_test_stocks_api_fields_rationale_17" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1348", + "community": 561, + "norm_label": "covers lines 37-38, 46, 51, 58 (sessionid is none): skips session validation.", + "id": "tests_test_controllers_coverage_rationale_1348" }, { - "label": "P/L must be accepted \u2014 it's a standard valuation metric.", + "label": "Covers line 16: empty password raises ValueError.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L20", - "community": 128, - "norm_label": "p/l must be accepted \u2014 it's a standard valuation metric.", - "id": "tests_test_stocks_api_fields_rationale_20" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1372", + "community": 546, + "norm_label": "covers line 16: empty password raises valueerror.", + "id": "tests_test_controllers_coverage_rationale_1372" }, { - "label": "MARG. LIQUIDA must be accepted \u2014 returned by /stocks/fields.", + "label": "Covers lines 50-51: jwt.InvalidTokenError.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L24", - "community": 254, - "norm_label": "marg. liquida must be accepted \u2014 returned by /stocks/fields.", - "id": "tests_test_stocks_api_fields_rationale_24" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1401", + "community": 524, + "norm_label": "covers lines 50-51: jwt.invalidtokenerror.", + "id": "tests_test_controllers_coverage_rationale_1401" }, { - "label": "P/VP and similar combos must be accepted.", + "label": "Covers line 67: extractTokenPayload re-raises HTTPException from verifyAccessTok", "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L28", - "community": 128, - "norm_label": "p/vp and similar combos must be accepted.", - "id": "tests_test_stocks_api_fields_rationale_28" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1413", + "community": 114, + "norm_label": "covers line 67: extracttokenpayload re-raises httpexception from verifyaccesstok", + "id": "tests_test_controllers_coverage_rationale_1413" }, { - "label": "Basic fields like ROE must still pass.", + "label": "Covers line 13: UserManager.__init__.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L32", - "community": 255, - "norm_label": "basic fields like roe must still pass.", - "id": "tests_test_stocks_api_fields_rationale_32" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1432", + "community": 498, + "norm_label": "covers line 13: usermanager.__init__.", + "id": "tests_test_controllers_coverage_rationale_1432" }, { - "label": "Comma-separated list containing slash fields must pass.", + "label": "Return (client, app, mock_session) for testing Google callback.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L36", - "community": 252, - "norm_label": "comma-separated list containing slash fields must pass.", - "id": "tests_test_stocks_api_fields_rationale_36" + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L22", + "community": 40, + "norm_label": "return (client, app, mock_session) for testing google callback.", + "id": "tests_test_oauth_cookie_security_rationale_22" }, { - "label": "Pattern must reject potential injection \u2014 no angle brackets.", + "label": "Helper to setup common mock values for callback tests.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L40", - "community": 253, - "norm_label": "pattern must reject potential injection \u2014 no angle brackets.", - "id": "tests_test_stocks_api_fields_rationale_40" + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L37", + "community": 40, + "norm_label": "helper to setup common mock values for callback tests.", + "id": "tests_test_oauth_cookie_security_rationale_37" }, { - "label": "Minimal TestClient with just the stocks router for validation tests.", + "label": "Verify JWT token is NOT leaked in redirect URL after OAuth callback.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L51", - "community": 129, - "norm_label": "minimal testclient with just the stocks router for validation tests.", - "id": "tests_test_stocks_api_fields_rationale_51" + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L61", + "community": 40, + "norm_label": "verify jwt token is not leaked in redirect url after oauth callback.", + "id": "tests_test_oauth_cookie_security_rationale_61" }, { - "label": "Integration: /stocks/fundamental must accept slash and dot fields.", + "label": "RED TEST: Token should NOT appear in redirect URL query parameters.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", + "source_file": "tests/test_oauth_cookie_security.py", "source_location": "L70", - "community": 129, - "norm_label": "integration: /stocks/fundamental must accept slash and dot fields.", - "id": "tests_test_stocks_api_fields_rationale_70" + "community": 399, + "norm_label": "red test: token should not appear in redirect url query parameters.", + "id": "tests_test_oauth_cookie_security_rationale_70" }, { - "label": "GET /fundamental?fields=P/L must not return 422 (validation error).", + "label": "Cookie must be httponly (not accessible via JavaScript).", "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L73", - "community": 129, - "norm_label": "get /fundamental?fields=p/l must not return 422 (validation error).", - "id": "tests_test_stocks_api_fields_rationale_73" + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L99", + "community": 400, + "norm_label": "cookie must be httponly (not accessible via javascript).", + "id": "tests_test_oauth_cookie_security_rationale_99" }, { - "label": "GET /fundamental?fields=MARG. LIQUIDA must not return 422.", + "label": "A readable cookie must be set for frontend JavaScript to access.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L78", - "community": 167, - "norm_label": "get /fundamental?fields=marg. liquida must not return 422.", - "id": "tests_test_stocks_api_fields_rationale_78" + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L131", + "community": 401, + "norm_label": "a readable cookie must be set for frontend javascript to access.", + "id": "tests_test_oauth_cookie_security_rationale_131" }, { - "label": "GET /fundamental?fields=P/L,ROE,DY must not return 422.", + "label": "Both cookies should have secure flag (HTTPS only).", "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L83", - "community": 166, - "norm_label": "get /fundamental?fields=p/l,roe,dy must not return 422.", - "id": "tests_test_stocks_api_fields_rationale_83" + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L164", + "community": 402, + "norm_label": "both cookies should have secure flag (https only).", + "id": "tests_test_oauth_cookie_security_rationale_164" }, { - "label": "Integration: /stocks/historical must accept slash and dot fields.", + "label": "When no state param, return JSON response (not redirect).", "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L89", - "community": 191, - "norm_label": "integration: /stocks/historical must accept slash and dot fields.", - "id": "tests_test_stocks_api_fields_rationale_89" + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L196", + "community": 403, + "norm_label": "when no state param, return json response (not redirect).", + "id": "tests_test_oauth_cookie_security_rationale_196" }, { - "label": "GET /historical?fields=P/L must not return 422.", + "label": "Verify frontend can still get token after OAuth redirect.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L92", - "community": 191, - "norm_label": "get /historical?fields=p/l must not return 422.", - "id": "tests_test_stocks_api_fields_rationale_92" + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L216", + "community": 40, + "norm_label": "verify frontend can still get token after oauth redirect.", + "id": "tests_test_oauth_cookie_security_rationale_216" }, { - "label": "GET /historical?fields=MARG. LIQUIDA must not return 422.", + "label": "Frontend JavaScript should be able to read token from readable cookie.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L97", - "community": 167, - "norm_label": "get /historical?fields=marg. liquida must not return 422.", - "id": "tests_test_stocks_api_fields_rationale_97" + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L225", + "community": 404, + "norm_label": "frontend javascript should be able to read token from readable cookie.", + "id": "tests_test_oauth_cookie_security_rationale_225" }, { - "label": "GET /historical?fields=LUCRO LIQUIDO,P/L must not return 422.", + "label": "Covers lines 164, 171-173: existing Google user, no new account created.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L102", - "community": 166, - "norm_label": "get /historical?fields=lucro liquido,p/l must not return 422.", - "id": "tests_test_stocks_api_fields_rationale_102" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L433", + "community": 405, + "norm_label": "covers lines 164, 171-173: existing google user, no new account created.", + "id": "tests_test_controllers_coverage_rationale_433" }, { - "label": "Integration: /stocks/fundamental date filter should work per-ticker.", + "label": "Covers line 165: verify_and_process returns None.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L108", - "community": 179, - "norm_label": "integration: /stocks/fundamental date filter should work per-ticker.", - "id": "tests_test_stocks_api_fields_rationale_108" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L459", + "community": 406, + "norm_label": "covers line 165: verify_and_process returns none.", + "id": "tests_test_controllers_coverage_rationale_459" }, { - "label": "When tickers have different date coverage, each should get its closest snapshot.", + "label": "Covers lines 190-195: state param triggers RedirectResponse.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_fields.py", - "source_location": "L111", - "community": 179, - "norm_label": "when tickers have different date coverage, each should get its closest snapshot.", - "id": "tests_test_stocks_api_fields_rationale_111" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L476", + "community": 407, + "norm_label": "covers lines 190-195: state param triggers redirectresponse.", + "id": "tests_test_controllers_coverage_rationale_476" }, { - "label": "Tests for queryLiveCotation and /stocks/cotations/live.", + "label": "Covers lines 202-204: generic Exception in callback.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1261", - "community": 22, - "norm_label": "tests for querylivecotation and /stocks/cotations/live.", - "id": "tests_test_stocks_api_coverage_rationale_1261" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L505", + "community": 408, + "norm_label": "covers lines 202-204: generic exception in callback.", + "id": "tests_test_controllers_coverage_rationale_505" }, { - "label": "GET /stocks/realtime-cotation without search returns 422.", + "label": "Covers line 19: GET /user/health.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1400", - "community": 234, - "norm_label": "get /stocks/realtime-cotation without search returns 422.", - "id": "tests_test_stocks_api_coverage_rationale_1400" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L522", + "community": 498, + "norm_label": "covers line 19: get /user/health.", + "id": "tests_test_controllers_coverage_rationale_522" }, { - "label": "GET /cotations without search returns 422.", + "label": "Covers line 24: GET /user/me returns currentUser.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1468", - "community": 568, - "norm_label": "get /cotations without search returns 422.", - "id": "tests_test_stocks_api_coverage_rationale_1468" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L536", + "community": 47, + "norm_label": "covers line 24: get /user/me returns currentuser.", + "id": "tests_test_controllers_coverage_rationale_536" }, { - "label": "Return a small DataFrame with the columns the query module expects.", + "label": "Covers lines 31-32, 36, 43-44, 48: upgrade developer starter/enterprise.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L23", - "community": 112, - "norm_label": "return a small dataframe with the columns the query module expects.", - "id": "tests_test_stocks_api_coverage_rationale_23" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L550", + "community": 47, + "norm_label": "covers lines 31-32, 36, 43-44, 48: upgrade developer starter/enterprise.", + "id": "tests_test_controllers_coverage_rationale_550" }, { - "label": "Tests covering cache.py lines 28-76.", + "label": "Covers lines 53-54, 56: admin access granted / denied.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L43", - "community": 3, - "norm_label": "tests covering cache.py lines 28-76.", - "id": "tests_test_stocks_api_coverage_rationale_43" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L590", + "community": 47, + "norm_label": "covers lines 53-54, 56: admin access granted / denied.", + "id": "tests_test_controllers_coverage_rationale_590" }, { - "label": "Tests covering key.py lines 15-40. Uses asyncio.run() since pytest-asyncio", + "label": "Covers lines 66, 68-72, 74: GET /user/sessions.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L228", - "community": 567, - "norm_label": "tests covering key.py lines 15-40. uses asyncio.run() since pytest-asyncio", - "id": "tests_test_stocks_api_coverage_rationale_228" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L609", + "community": 178, + "norm_label": "covers lines 66, 68-72, 74: get /user/sessions.", + "id": "tests_test_controllers_coverage_rationale_609" }, { - "label": "When KEY.SYSTEM is falsy, return None (line 16).", + "label": "Covers lines 66, 68-72, 74: full sessions listing.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L233", - "community": 418, - "norm_label": "when key.system is falsy, return none (line 16).", - "id": "tests_test_stocks_api_coverage_rationale_233" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L612", + "community": 178, + "norm_label": "covers lines 66, 68-72, 74: full sessions listing.", + "id": "tests_test_controllers_coverage_rationale_612" }, { - "label": "When key is required but not provided (line 19).", + "label": "Covers lines 100-104, 106: GET /user/sessions/current.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L244", - "community": 419, - "norm_label": "when key is required but not provided (line 19).", - "id": "tests_test_stocks_api_coverage_rationale_244" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L663", + "community": 107, + "norm_label": "covers lines 100-104, 106: get /user/sessions/current.", + "id": "tests_test_controllers_coverage_rationale_663" }, { - "label": "When atomic UPDATE returns 0 rows and query finds no key -> 401.", + "label": "Covers lines 100-104, 106: session found.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L257", - "community": 420, - "norm_label": "when atomic update returns 0 rows and query finds no key -> 401.", - "id": "tests_test_stocks_api_coverage_rationale_257" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L666", + "community": 107, + "norm_label": "covers lines 100-104, 106: session found.", + "id": "tests_test_controllers_coverage_rationale_666" }, { - "label": "When atomic UPDATE returns 0 rows and query finds key at limit -> 429.", + "label": "Covers line 104: session not found.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L274", - "community": 421, - "norm_label": "when atomic update returns 0 rows and query finds key at limit -> 429.", - "id": "tests_test_stocks_api_coverage_rationale_274" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L699", + "community": 107, + "norm_label": "covers line 104: session not found.", + "id": "tests_test_controllers_coverage_rationale_699" }, { - "label": "HTTPException should cause rollback then re-raise (lines 35-37).", + "label": "Covers lines 126-136: DELETE /user/sessions/{sessionId}.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L306", - "community": 422, - "norm_label": "httpexception should cause rollback then re-raise (lines 35-37).", - "id": "tests_test_stocks_api_coverage_rationale_306" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L722", + "community": 104, + "norm_label": "covers lines 126-136: delete /user/sessions/{sessionid}.", + "id": "tests_test_controllers_coverage_rationale_722" }, { - "label": "Generic DB exception should rollback and raise 500 (lines 38-40).", + "label": "Covers lines 126, 131, 135-136.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L325", - "community": 423, - "norm_label": "generic db exception should rollback and raise 500 (lines 38-40).", - "id": "tests_test_stocks_api_coverage_rationale_325" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L725", + "community": 104, + "norm_label": "covers lines 126, 131, 135-136.", + "id": "tests_test_controllers_coverage_rationale_725" }, { - "label": "Tests covering key.py line 44.", + "label": "Covers lines 127-129: session not found.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L340", - "community": 141, - "norm_label": "tests covering key.py line 44.", - "id": "tests_test_stocks_api_coverage_rationale_340" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L752", + "community": 104, + "norm_label": "covers lines 127-129: session not found.", + "id": "tests_test_controllers_coverage_rationale_752" }, { - "label": "Tests covering key.py lines 48-66.", + "label": "Covers lines 132-133: revokeSession returns False.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L363", - "community": 565, - "norm_label": "tests covering key.py lines 48-66.", - "id": "tests_test_stocks_api_coverage_rationale_363" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L774", + "community": 104, + "norm_label": "covers lines 132-133: revokesession returns false.", + "id": "tests_test_controllers_coverage_rationale_774" }, { - "label": "New key created when no existing key for user (lines 57-59).", + "label": "Covers lines 143, 145, 147-148: POST /user/sessions/revoke-all.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L367", - "community": 424, - "norm_label": "new key created when no existing key for user (lines 57-59).", - "id": "tests_test_stocks_api_coverage_rationale_367" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L800", + "community": 221, + "norm_label": "covers lines 143, 145, 147-148: post /user/sessions/revoke-all.", + "id": "tests_test_controllers_coverage_rationale_800" }, { - "label": "Existing key is updated (lines 54-56).", + "label": "Covers lines 143, 145, 147-148.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L382", - "community": 425, - "norm_label": "existing key is updated (lines 54-56).", - "id": "tests_test_stocks_api_coverage_rationale_382" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L803", + "community": 221, + "norm_label": "covers lines 143, 145, 147-148.", + "id": "tests_test_controllers_coverage_rationale_803" }, { - "label": "Exception during creation triggers rollback and 500 (lines 64-66).", + "label": "Covers line 24: GET /prometheus/health.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L399", - "community": 426, - "norm_label": "exception during creation triggers rollback and 500 (lines 64-66).", - "id": "tests_test_stocks_api_coverage_rationale_399" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L830", + "community": 498, + "norm_label": "covers line 24: get /prometheus/health.", + "id": "tests_test_controllers_coverage_rationale_830" }, { - "label": "Tests covering query.py lines 22-48.", + "label": "Covers lines 33-36: GET /prometheus/sessions.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L417", - "community": 3, - "norm_label": "tests covering query.py lines 22-48.", - "id": "tests_test_stocks_api_coverage_rationale_417" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L844", + "community": 99, + "norm_label": "covers lines 33-36: get /prometheus/sessions.", + "id": "tests_test_controllers_coverage_rationale_844" }, { - "label": "replaceNan handles direct float NaN values (line 34).", + "label": "Covers line 52: POST /prometheus/sessions.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L495", - "community": 520, - "norm_label": "replacenan handles direct float nan values (line 34).", - "id": "tests_test_stocks_api_coverage_rationale_495" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L862", + "community": 99, + "norm_label": "covers line 52: post /prometheus/sessions.", + "id": "tests_test_controllers_coverage_rationale_862" }, { - "label": "Non-JSON-dict/list string is left as-is.", + "label": "Covers lines 62-63, 65-68: PUT /prometheus/sessions/{sessionId}.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L509", - "community": 566, - "norm_label": "non-json-dict/list string is left as-is.", - "id": "tests_test_stocks_api_coverage_rationale_509" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L876", + "community": 99, + "norm_label": "covers lines 62-63, 65-68: put /prometheus/sessions/{sessionid}.", + "id": "tests_test_controllers_coverage_rationale_876" }, { - "label": "pd.NA is not a string, so lambda returns it unchanged.", + "label": "Covers lines 65-68: title updated successfully.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L518", - "community": 520, - "norm_label": "pd.na is not a string, so lambda returns it unchanged.", - "id": "tests_test_stocks_api_coverage_rationale_518" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L879", + "community": 99, + "norm_label": "covers lines 65-68: title updated successfully.", + "id": "tests_test_controllers_coverage_rationale_879" }, { - "label": "Regression: is_string_dtype fails when column has strings + None (pandas 2.x).", + "label": "Covers lines 62-63: not the session owner.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L527", - "community": 3, - "norm_label": "regression: is_string_dtype fails when column has strings + none (pandas 2.x).", - "id": "tests_test_stocks_api_coverage_rationale_527" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L890", + "community": 99, + "norm_label": "covers lines 62-63: not the session owner.", + "id": "tests_test_controllers_coverage_rationale_890" }, { - "label": "All four SPECIAL_COLS should parse correctly when mixed with None.", + "label": "Covers lines 66-67: session not found.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L549", - "community": 3, - "norm_label": "all four special_cols should parse correctly when mixed with none.", - "id": "tests_test_stocks_api_coverage_rationale_549" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L899", + "community": 99, + "norm_label": "covers lines 66-67: session not found.", + "id": "tests_test_controllers_coverage_rationale_899" }, { - "label": "Tests covering query.py lines 50-67.", + "label": "Covers lines 77, 83-84, 86: GET /prometheus/history/{sessionId}.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L574", - "community": 3, - "norm_label": "tests covering query.py lines 50-67.", - "id": "tests_test_stocks_api_coverage_rationale_574" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L910", + "community": 104, + "norm_label": "covers lines 77, 83-84, 86: get /prometheus/history/{sessionid}.", + "id": "tests_test_controllers_coverage_rationale_910" }, { - "label": "Tests covering query.py lines 77-132.", + "label": "Covers lines 77, 86: session found with history.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L629", - "community": 112, - "norm_label": "tests covering query.py lines 77-132.", - "id": "tests_test_stocks_api_coverage_rationale_629" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L913", + "community": 104, + "norm_label": "covers lines 77, 86: session found with history.", + "id": "tests_test_controllers_coverage_rationale_913" }, { - "label": "Pass field name WITHOUT year (how categorizeColumns returns them).", + "label": "Covers lines 83-84: session not found.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L667", - "community": 28, - "norm_label": "pass field name without year (how categorizecolumns returns them).", - "id": "tests_test_stocks_api_coverage_rationale_667" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L957", + "community": 104, + "norm_label": "covers lines 83-84: session not found.", + "id": "tests_test_controllers_coverage_rationale_957" }, { - "label": "No historical data columns -> inner 400 caught by outer except -> 500.", + "label": "Covers lines 95-98: DELETE /prometheus/sessions/{sessionId}.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L693", - "community": 28, - "norm_label": "no historical data columns -> inner 400 caught by outer except -> 500.", - "id": "tests_test_stocks_api_coverage_rationale_693" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L992", + "community": 231, + "norm_label": "covers lines 95-98: delete /prometheus/sessions/{sessionid}.", + "id": "tests_test_controllers_coverage_rationale_992" }, { - "label": "If an unexpected exception occurs in queryHistorical.", + "label": "Covers lines 95-98: session deleted.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L718", - "community": 28, - "norm_label": "if an unexpected exception occurs in queryhistorical.", - "id": "tests_test_stocks_api_coverage_rationale_718" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L995", + "community": 231, + "norm_label": "covers lines 95-98: session deleted.", + "id": "tests_test_controllers_coverage_rationale_995" }, { - "label": "Invalid date format raises exception (line 132).", + "label": "Covers lines 96-97: session not found.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L736", - "community": 543, - "norm_label": "invalid date format raises exception (line 132).", - "id": "tests_test_stocks_api_coverage_rationale_736" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1005", + "community": 231, + "norm_label": "covers lines 96-97: session not found.", + "id": "tests_test_controllers_coverage_rationale_1005" }, { - "label": "No historical columns at all -> inner 400 caught by outer except -> 500.", + "label": "Covers lines 114-115, 117-120, 122, 125: POST /prometheus/chat.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L752", - "community": 127, - "norm_label": "no historical columns at all -> inner 400 caught by outer except -> 500.", - "id": "tests_test_stocks_api_coverage_rationale_752" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1015", + "community": 16, + "norm_label": "covers lines 114-115, 117-120, 122, 125: post /prometheus/chat.", + "id": "tests_test_controllers_coverage_rationale_1015" }, { - "label": "Historical query with a year range.", + "label": "Covers lines 111-112: sessionId is None, new session created.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L762", - "community": 562, - "norm_label": "historical query with a year range.", - "id": "tests_test_stocks_api_coverage_rationale_762" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1018", + "community": 16, + "norm_label": "covers lines 111-112: sessionid is none, new session created.", + "id": "tests_test_controllers_coverage_rationale_1018" }, { - "label": "Multiple search terms, all found in tickerIndex.", + "label": "Covers lines 114-115, 117-120, 122: existing session with verified ownership.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L769", - "community": 28, - "norm_label": "multiple search terms, all found in tickerindex.", - "id": "tests_test_stocks_api_coverage_rationale_769" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1036", + "community": 16, + "norm_label": "covers lines 114-115, 117-120, 122: existing session with verified ownership.", + "id": "tests_test_controllers_coverage_rationale_1036" }, { - "label": "Calling with all None returns 400.", + "label": "Covers lines 114-115: session ownership check fails.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L777", - "community": 112, - "norm_label": "calling with all none returns 400.", - "id": "tests_test_stocks_api_coverage_rationale_777" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1078", + "community": 16, + "norm_label": "covers lines 114-115: session ownership check fails.", + "id": "tests_test_controllers_coverage_rationale_1078" }, { - "label": "Tests covering query.py lines 142-202.", + "label": "Generic Exception in chat propagates to FastAPI's default 500 handler.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L788", - "community": 112, - "norm_label": "tests covering query.py lines 142-202.", - "id": "tests_test_stocks_api_coverage_rationale_788" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1115", + "community": 16, + "norm_label": "generic exception in chat propagates to fastapi's default 500 handler.", + "id": "tests_test_controllers_coverage_rationale_1115" }, { - "label": "search.strip() == '' should still dedup (line 181).", + "label": "Covers line 18: GET /stocks/health.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L895", - "community": 17, - "norm_label": "search.strip() == '' should still dedup (line 181).", - "id": "tests_test_stocks_api_coverage_rationale_895" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1133", + "community": 498, + "norm_label": "covers line 18: get /stocks/health.", + "id": "tests_test_controllers_coverage_rationale_1133" }, { - "label": "DataFrame without TIME column.", + "label": "Covers line 35: GET /stocks/historical.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L904", - "community": 17, - "norm_label": "dataframe without time column.", - "id": "tests_test_stocks_api_coverage_rationale_904" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1147", + "community": 14, + "norm_label": "covers line 35: get /stocks/historical.", + "id": "tests_test_controllers_coverage_rationale_1147" }, { - "label": "Two dates in the range, both valid.", + "label": "Covers line 47: GET /stocks/fundamental.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1161", + "community": 14, + "norm_label": "covers line 47: get /stocks/fundamental.", + "id": "tests_test_controllers_coverage_rationale_1161" + }, + { + "label": "Covers lines 52-53, 57-63: GET /stocks/key/generate. NOTE: stocksapi_cont", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1175", + "community": 14, + "norm_label": "covers lines 52-53, 57-63: get /stocks/key/generate. note: stocksapi_cont", + "id": "tests_test_controllers_coverage_rationale_1175" + }, + { + "label": "Covers lines 52-53: user without GENERATE_API_KEYS permission gets 403.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1183", + "community": 14, + "norm_label": "covers lines 52-53: user without generate_api_keys permission gets 403.", + "id": "tests_test_controllers_coverage_rationale_1183" + }, + { + "label": "Covers lines 57-60: admin bypasses permission check and generates key.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1191", + "community": 14, + "norm_label": "covers lines 57-60: admin bypasses permission check and generates key.", + "id": "tests_test_controllers_coverage_rationale_1191" + }, + { + "label": "Covers lines 13, 17, 19-20, 22-27: UserManager.addRoleToUser.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1218", + "community": 563, + "norm_label": "covers lines 13, 17, 19-20, 22-27: usermanager.addroletouser.", + "id": "tests_test_controllers_coverage_rationale_1218" + }, + { + "label": "Covers lines 17, 22-27: user found, role not present, role added.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1221", + "community": 564, + "norm_label": "covers lines 17, 22-27: user found, role not present, role added.", + "id": "tests_test_controllers_coverage_rationale_1221" + }, + { + "label": "Covers line 27: user already has the role.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1238", + "community": 568, + "norm_label": "covers line 27: user already has the role.", + "id": "tests_test_controllers_coverage_rationale_1238" + }, + { + "label": "Covers lines 19-20: user not found raises 404.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1253", + "community": 528, + "norm_label": "covers lines 19-20: user not found raises 404.", + "id": "tests_test_controllers_coverage_rationale_1253" + }, + { + "label": "Covers lines 34, 36-38, 40-44, 46, 48-49, 51, 58-59, 61, 63-67: UserManager.getC", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1265", + "community": 493, + "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_1265" + }, + { + "label": "Covers lines 36-38, 40-44, 46, 48-49, 51, 58-59, 61: successful user retrieval.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1272", + "community": 493, + "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" + }, + { + "label": "Covers lines 42-44: session validation fails.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1297", + "community": 568, + "norm_label": "covers lines 42-44: session validation fails.", + "id": "tests_test_controllers_coverage_rationale_1297" + }, + { + "label": "Covers lines 48-49: user not in DB.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1313", + "community": 546, + "norm_label": "covers lines 48-49: user not in db.", + "id": "tests_test_controllers_coverage_rationale_1313" + }, + { + "label": "Covers lines 65-67: unexpected exception.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1330", + "community": 560, + "norm_label": "covers lines 65-67: unexpected exception.", + "id": "tests_test_controllers_coverage_rationale_1330" + }, + { + "label": "Covers lines 37-38, 46, 51, 58 (sessionId is None): skips session validation.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1347", + "community": 561, + "norm_label": "covers lines 37-38, 46, 51, 58 (sessionid is none): skips session validation.", + "id": "tests_test_controllers_coverage_rationale_1347" + }, + { + "label": "Covers line 16: empty password raises ValueError.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1371", + "community": 45, + "norm_label": "covers line 16: empty password raises valueerror.", + "id": "tests_test_controllers_coverage_rationale_1371" + }, + { + "label": "Covers lines 45-51: verifyAccessToken with expired and invalid tokens.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1381", + "community": 524, + "norm_label": "covers lines 45-51: verifyaccesstoken with expired and invalid tokens.", + "id": "tests_test_controllers_coverage_rationale_1381" + }, + { + "label": "Covers lines 48-49: jwt.ExpiredSignatureError.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1384", + "community": 524, + "norm_label": "covers lines 48-49: jwt.expiredsignatureerror.", + "id": "tests_test_controllers_coverage_rationale_1384" + }, + { + "label": "Covers lines 50-51: jwt.InvalidTokenError.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1400", + "community": 524, + "norm_label": "covers lines 50-51: jwt.invalidtokenerror.", + "id": "tests_test_controllers_coverage_rationale_1400" + }, + { + "label": "Covers line 67: extractTokenPayload re-raises HTTPException from verifyAccessTok", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1412", + "community": 114, + "norm_label": "covers line 67: extracttokenpayload re-raises httpexception from verifyaccesstok", + "id": "tests_test_controllers_coverage_rationale_1412" + }, + { + "label": "Covers line 67: HTTPException raised by verifyAccessToken is re-raised.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1415", + "community": 114, + "norm_label": "covers line 67: httpexception raised by verifyaccesstoken is re-raised.", + "id": "tests_test_controllers_coverage_rationale_1415" + }, + { + "label": "Covers line 13: UserManager.__init__.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1431", + "community": 498, + "norm_label": "covers line 13: usermanager.__init__.", + "id": "tests_test_controllers_coverage_rationale_1431" + }, + { + "label": "GET /fundamental?fields=P/L must not return 422 (validation error).", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L56", + "community": 129, + "norm_label": "get /fundamental?fields=p/l must not return 422 (validation error).", + "id": "tests_test_stocks_api_fields_rationale_56" + }, + { + "label": "GET /fundamental?fields=MARG. LIQUIDA must not return 422.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L61", + "community": 167, + "norm_label": "get /fundamental?fields=marg. liquida must not return 422.", + "id": "tests_test_stocks_api_fields_rationale_61" + }, + { + "label": "GET /fundamental?fields=P/L,ROE,DY must not return 422.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L66", + "community": 166, + "norm_label": "get /fundamental?fields=p/l,roe,dy must not return 422.", + "id": "tests_test_stocks_api_fields_rationale_66" + }, + { + "label": "GET /historical?fields=P/L must not return 422.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L75", + "community": 129, + "norm_label": "get /historical?fields=p/l must not return 422.", + "id": "tests_test_stocks_api_fields_rationale_75" + }, + { + "label": "GET /historical?fields=MARG. LIQUIDA must not return 422.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L80", + "community": 167, + "norm_label": "get /historical?fields=marg. liquida must not return 422.", + "id": "tests_test_stocks_api_fields_rationale_80" + }, + { + "label": "GET /historical?fields=LUCRO LIQUIDO,P/L must not return 422.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L85", + "community": 166, + "norm_label": "get /historical?fields=lucro liquido,p/l must not return 422.", + "id": "tests_test_stocks_api_fields_rationale_85" + }, + { + "label": "When tickers have different date coverage, each should get its closest snapshot.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L94", + "community": 191, + "norm_label": "when tickers have different date coverage, each should get its closest snapshot.", + "id": "tests_test_stocks_api_fields_rationale_94" + }, + { + "label": ".putCache()", + "file_type": "code", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L101", + "community": 82, + "norm_label": ".putcache()", + "id": "stocks_api_cache_stockscachemanager_putcache" + }, + { + "label": ".clearQueryCache()", + "file_type": "code", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L107", + "community": 42, + "norm_label": ".clearquerycache()", + "id": "stocks_api_cache_stockscachemanager_clearquerycache" + }, + { + "label": "parseCotationDates()", + "file_type": "code", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L42", + "community": 517, + "norm_label": "parsecotationdates()", + "id": "stocks_api_query_parsecotationdates" + }, + { + "label": "TestCacheLRUEviction", + "file_type": "code", + "source_file": "tests/test_cache.py", + "source_location": "L14", + "community": 95, + "norm_label": "testcachelrueviction", + "id": "tests_test_cache_testcachelrueviction" + }, + { + "label": "._make_manager()", + "file_type": "code", + "source_file": "tests/test_cache.py", + "source_location": "L17", + "community": 95, + "norm_label": "._make_manager()", + "id": "tests_test_cache_testcachelrueviction_make_manager" + }, + { + "label": ".test_query_cache_starts_empty()", + "file_type": "code", + "source_file": "tests/test_cache.py", + "source_location": "L22", + "community": 95, + "norm_label": ".test_query_cache_starts_empty()", + "id": "tests_test_cache_testcachelrueviction_test_query_cache_starts_empty" + }, + { + "label": ".test_query_cache_max_size_constant()", + "file_type": "code", + "source_file": "tests/test_cache.py", + "source_location": "L26", + "community": 95, + "norm_label": ".test_query_cache_max_size_constant()", + "id": "tests_test_cache_testcachelrueviction_test_query_cache_max_size_constant" + }, + { + "label": ".test_lru_eviction_when_over_limit()", + "file_type": "code", + "source_file": "tests/test_cache.py", + "source_location": "L29", + "community": 95, + "norm_label": ".test_lru_eviction_when_over_limit()", + "id": "tests_test_cache_testcachelrueviction_test_lru_eviction_when_over_limit" + }, + { + "label": ".test_move_to_end_on_cache_hit()", + "file_type": "code", + "source_file": "tests/test_cache.py", + "source_location": "L50", + "community": 95, + "norm_label": ".test_move_to_end_on_cache_hit()", + "id": "tests_test_cache_testcachelrueviction_test_move_to_end_on_cache_hit" + }, + { + "label": ".test_clear_query_cache()", + "file_type": "code", + "source_file": "tests/test_cache.py", + "source_location": "L68", + "community": 95, + "norm_label": ".test_clear_query_cache()", + "id": "tests_test_cache_testcachelrueviction_test_clear_query_cache" + }, + { + "label": ".test_none_columns_key_is_none()", + "file_type": "code", + "source_file": "tests/test_cache.py", + "source_location": "L77", + "community": 95, + "norm_label": ".test_none_columns_key_is_none()", + "id": "tests_test_cache_testcachelrueviction_test_none_columns_key_is_none" + }, + { + "label": ".test_columns_key_is_tuple()", + "file_type": "code", + "source_file": "tests/test_cache.py", + "source_location": "L83", + "community": 95, + "norm_label": ".test_columns_key_is_tuple()", + "id": "tests_test_cache_testcachelrueviction_test_columns_key_is_tuple" + }, + { + "label": "TestColumnValidator", + "file_type": "code", + "source_file": "tests/test_cache.py", + "source_location": "L89", + "community": 135, + "norm_label": "testcolumnvalidator", + "id": "tests_test_cache_testcolumnvalidator" + }, + { + "label": ".test_valid_column_names()", + "file_type": "code", + "source_file": "tests/test_cache.py", + "source_location": "L90", + "community": 135, + "norm_label": ".test_valid_column_names()", + "id": "tests_test_cache_testcolumnvalidator_test_valid_column_names" + }, + { + "label": ".test_invalid_column_names()", + "file_type": "code", + "source_file": "tests/test_cache.py", + "source_location": "L97", + "community": 135, + "norm_label": ".test_invalid_column_names()", + "id": "tests_test_cache_testcolumnvalidator_test_invalid_column_names" + }, + { + "label": ".test_empty_string()", + "file_type": "code", + "source_file": "tests/test_cache.py", + "source_location": "L103", + "community": 135, + "norm_label": ".test_empty_string()", + "id": "tests_test_cache_testcolumnvalidator_test_empty_string" + }, + { + "label": "TestCacheTTLLogic", + "file_type": "code", + "source_file": "tests/test_cache.py", + "source_location": "L107", + "community": 95, + "norm_label": "testcachettllogic", + "id": "tests_test_cache_testcachettllogic" + }, + { + "label": "._make_manager()", + "file_type": "code", + "source_file": "tests/test_cache.py", + "source_location": "L108", + "community": 95, + "norm_label": "._make_manager()", + "id": "tests_test_cache_testcachettllogic_make_manager" + }, + { + "label": ".test_expired_entry_detected()", + "file_type": "code", + "source_file": "tests/test_cache.py", + "source_location": "L112", + "community": 95, + "norm_label": ".test_expired_entry_detected()", + "id": "tests_test_cache_testcachettllogic_test_expired_entry_detected" + }, + { + "label": ".test_fresh_entry_detected()", + "file_type": "code", + "source_file": "tests/test_cache.py", + "source_location": "L123", + "community": 95, + "norm_label": ".test_fresh_entry_detected()", + "id": "tests_test_cache_testcachettllogic_test_fresh_entry_detected" + }, + { + "label": "Tests for StocksCacheManager queryCache LRU eviction.", + "file_type": "rationale", + "source_file": "tests/test_cache.py", + "source_location": "L15", + "community": 95, + "norm_label": "tests for stockscachemanager querycache lru eviction.", + "id": "tests_test_cache_rationale_15" + }, + { + "label": "Create a StocksCacheManager with a mock DB engine.", "file_type": "rationale", + "source_file": "tests/test_cache.py", + "source_location": "L18", + "community": 95, + "norm_label": "create a stockscachemanager with a mock db engine.", + "id": "tests_test_cache_rationale_18" + }, + { + "label": "When columns is None, cache key should be None.", + "file_type": "rationale", + "source_file": "tests/test_cache.py", + "source_location": "L78", + "community": 95, + "norm_label": "when columns is none, cache key should be none.", + "id": "tests_test_cache_rationale_78" + }, + { + "label": ".test_putCache_adds_entry_and_evicts_when_full()", + "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L917", - "community": 39, - "norm_label": "two dates in the range, both valid.", - "id": "tests_test_stocks_api_coverage_rationale_917" + "source_location": "L70", + "community": 3, + "norm_label": ".test_putcache_adds_entry_and_evicts_when_full()", + "id": "tests_test_stocks_api_coverage_teststockscachemanager_test_putcache_adds_entry_and_evicts_when_full" }, { - "label": "Single invalid date -> inner 400 caught by outer except -> 500.", + "label": ".test_clearQueryCache_empties_cache()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L89", + "community": 3, + "norm_label": ".test_clearquerycache_empties_cache()", + "id": "tests_test_stocks_api_coverage_teststockscachemanager_test_clearquerycache_empties_cache" + }, + { + "label": ".test_getCachedStocks_cache_hit()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L97", + "community": 3, + "norm_label": ".test_getcachedstocks_cache_hit()", + "id": "tests_test_stocks_api_coverage_teststockscachemanager_test_getcachedstocks_cache_hit" + }, + { + "label": ".test_getCachedStocks_cache_hit_expired()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L107", + "community": 3, + "norm_label": ".test_getcachedstocks_cache_hit_expired()", + "id": "tests_test_stocks_api_coverage_teststockscachemanager_test_getcachedstocks_cache_hit_expired" + }, + { + "label": ".test_getCachedStocks_force_refresh()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L127", + "community": 3, + "norm_label": ".test_getcachedstocks_force_refresh()", + "id": "tests_test_stocks_api_coverage_teststockscachemanager_test_getcachedstocks_force_refresh" + }, + { + "label": "Tests covering key.py lines 15-40. Uses asyncio.run() since pytest-asyncio", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L931", - "community": 46, - "norm_label": "single invalid date -> inner 400 caught by outer except -> 500.", - "id": "tests_test_stocks_api_coverage_rationale_931" + "source_location": "L229", + "community": 571, + "norm_label": "tests covering key.py lines 15-40. uses asyncio.run() since pytest-asyncio", + "id": "tests_test_stocks_api_coverage_rationale_229" }, { - "label": "Multiple search terms with tickerIndex.", + "label": "When KEY.SYSTEM is falsy, return None (line 16).", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L956", - "community": 17, - "norm_label": "multiple search terms with tickerindex.", - "id": "tests_test_stocks_api_coverage_rationale_956" + "source_location": "L234", + "community": 409, + "norm_label": "when key.system is falsy, return none (line 16).", + "id": "tests_test_stocks_api_coverage_rationale_234" }, { - "label": "Search with no index match falls back to string startswith.", + "label": "When key is required but not provided (line 19).", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L964", - "community": 39, - "norm_label": "search with no index match falls back to string startswith.", - "id": "tests_test_stocks_api_coverage_rationale_964" + "source_location": "L245", + "community": 410, + "norm_label": "when key is required but not provided (line 19).", + "id": "tests_test_stocks_api_coverage_rationale_245" }, { - "label": "len(dateRange) == 1 -> single date filter.", + "label": "When atomic UPDATE returns 0 rows and query finds no key -> 401.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L972", - "community": 39, - "norm_label": "len(daterange) == 1 -> single date filter.", - "id": "tests_test_stocks_api_coverage_rationale_972" + "source_location": "L258", + "community": 411, + "norm_label": "when atomic update returns 0 rows and query finds no key -> 401.", + "id": "tests_test_stocks_api_coverage_rationale_258" }, { - "label": "COTACAO 10Y PADRAO and COTACAO 10Y AJUSTADA belong to /cotations, not /fundament", + "label": "When atomic UPDATE returns 0 rows and query finds key at limit -> 429.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L986", - "community": 570, - "norm_label": "cotacao 10y padrao and cotacao 10y ajustada belong to /cotations, not /fundament", - "id": "tests_test_stocks_api_coverage_rationale_986" + "source_location": "L275", + "community": 412, + "norm_label": "when atomic update returns 0 rows and query finds key at limit -> 429.", + "id": "tests_test_stocks_api_coverage_rationale_275" }, { - "label": "Regression: queryFundamental must not mutate the shared cache TIME column.", + "label": "Happy path: atomic UPDATE succeeds, returns key (lines 22-33).", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1013", - "community": 101, - "norm_label": "regression: queryfundamental must not mutate the shared cache time column.", - "id": "tests_test_stocks_api_coverage_rationale_1013" + "source_location": "L293", + "community": 413, + "norm_label": "happy path: atomic update succeeds, returns key (lines 22-33).", + "id": "tests_test_stocks_api_coverage_rationale_293" }, { - "label": "Tests for queryCotations and /stocks/cotations.", + "label": "Generic DB exception should rollback and raise 500 (lines 38-40).", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1056", - "community": 10, - "norm_label": "tests for querycotations and /stocks/cotations.", - "id": "tests_test_stocks_api_coverage_rationale_1056" + "source_location": "L326", + "community": 414, + "norm_label": "generic db exception should rollback and raise 500 (lines 38-40).", + "id": "tests_test_stocks_api_coverage_rationale_326" }, { - "label": "2 tickers x 2 rows. Rows 0,2 are 2024-01-15; rows 1,3 are 2024-06-15. M", + "label": "Tests covering key.py line 44.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1068", - "community": 10, - "norm_label": "2 tickers x 2 rows. rows 0,2 are 2024-01-15; rows 1,3 are 2024-06-15. m", - "id": "tests_test_stocks_api_coverage_rationale_1068" + "source_location": "L341", + "community": 141, + "norm_label": "tests covering key.py line 44.", + "id": "tests_test_stocks_api_coverage_rationale_341" }, { - "label": "4 rows for 2 tickers -> 2 results, one per ticker, both with latest TIME.", + "label": "Tests covering key.py lines 48-66.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1114", - "community": 10, - "norm_label": "4 rows for 2 tickers -> 2 results, one per ticker, both with latest time.", - "id": "tests_test_stocks_api_coverage_rationale_1114" + "source_location": "L364", + "community": 565, + "norm_label": "tests covering key.py lines 48-66.", + "id": "tests_test_stocks_api_coverage_rationale_364" }, { - "label": "dates=\"2016-12-02\" should keep only the 02-12-2016 entry in each JSON list.", + "label": "New key created when no existing key for user (lines 57-59).", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1126", - "community": 10, - "norm_label": "dates=\"2016-12-02\" should keep only the 02-12-2016 entry in each json list.", - "id": "tests_test_stocks_api_coverage_rationale_1126" + "source_location": "L368", + "community": 415, + "norm_label": "new key created when no existing key for user (lines 57-59).", + "id": "tests_test_stocks_api_coverage_rationale_368" }, { - "label": "Hit the actual /stocks/cotations HTTP endpoint with adjusted=false.", + "label": "Existing key is updated (lines 54-56).", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1212", - "community": 521, - "norm_label": "hit the actual /stocks/cotations http endpoint with adjusted=false.", - "id": "tests_test_stocks_api_coverage_rationale_1212" + "source_location": "L383", + "community": 416, + "norm_label": "existing key is updated (lines 54-56).", + "id": "tests_test_stocks_api_coverage_rationale_383" }, { - "label": "Tests for queryLiveCotation and /stocks/cotations/live.", + "label": "Exception during creation triggers rollback and 500 (lines 64-66).", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1257", - "community": 22, - "norm_label": "tests for querylivecotation and /stocks/cotations/live.", - "id": "tests_test_stocks_api_coverage_rationale_1257" + "source_location": "L400", + "community": 417, + "norm_label": "exception during creation triggers rollback and 500 (lines 64-66).", + "id": "tests_test_stocks_api_coverage_rationale_400" }, { - "label": "GET /stocks/realtime-cotation without search returns 422.", + "label": "Tests covering query.py lines 22-48.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1396", - "community": 234, - "norm_label": "get /stocks/realtime-cotation without search returns 422.", - "id": "tests_test_stocks_api_coverage_rationale_1396" + "source_location": "L418", + "community": 3, + "norm_label": "tests covering query.py lines 22-48.", + "id": "tests_test_stocks_api_coverage_rationale_418" }, { - "label": "GET /cotations without search returns 422.", + "label": "replaceNan handles direct float NaN values (line 34).", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1464", - "community": 568, - "norm_label": "get /cotations without search returns 422.", - "id": "tests_test_stocks_api_coverage_rationale_1464" + "source_location": "L496", + "community": 577, + "norm_label": "replacenan handles direct float nan values (line 34).", + "id": "tests_test_stocks_api_coverage_rationale_496" }, { - "label": "cotations.py", - "file_type": "code", - "source_file": "cotations.py", - "source_location": "L1", - "community": 267, - "norm_label": "cotations.py", - "id": "cotations_py" + "label": "Non-JSON-dict/list string is left as-is.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L510", + "community": 566, + "norm_label": "non-json-dict/list string is left as-is.", + "id": "tests_test_stocks_api_coverage_rationale_510" }, { - "label": "queryLiveCotations()", - "file_type": "code", - "source_file": "cotations.py", - "source_location": "L5", - "community": 267, - "norm_label": "querylivecotations()", - "id": "server_cotations_querylivecotations" + "label": "pd.NA is not a string, so lambda returns it unchanged.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L519", + "community": 520, + "norm_label": "pd.na is not a string, so lambda returns it unchanged.", + "id": "tests_test_stocks_api_coverage_rationale_519" }, { - "label": "GET /stocks/realtime-cotation without search returns 422.", + "label": "Regression: is_string_dtype fails when column has strings + None (pandas 2.x).", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1388", - "community": 234, - "norm_label": "get /stocks/realtime-cotation without search returns 422.", - "id": "tests_test_stocks_api_coverage_rationale_1388" + "source_location": "L528", + "community": 86, + "norm_label": "regression: is_string_dtype fails when column has strings + none (pandas 2.x).", + "id": "tests_test_stocks_api_coverage_rationale_528" }, { - "label": "GET /cotations without search returns 422.", + "label": "All four SPECIAL_COLS should parse correctly when mixed with None.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1456", - "community": 568, - "norm_label": "get /cotations without search returns 422.", - "id": "tests_test_stocks_api_coverage_rationale_1456" + "source_location": "L550", + "community": 520, + "norm_label": "all four special_cols should parse correctly when mixed with none.", + "id": "tests_test_stocks_api_coverage_rationale_550" }, { - "label": ".test_cotations_filter_cotation_column_filters_by_date()", - "file_type": "code", + "label": "Tests covering query.py lines 50-67.", + "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1253", - "community": 22, - "norm_label": ".test_cotations_filter_cotation_column_filters_by_date()", - "id": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_filter_cotation_column_filters_by_date" + "source_location": "L575", + "community": 86, + "norm_label": "tests covering query.py lines 50-67.", + "id": "tests_test_stocks_api_coverage_rationale_575" }, { - "label": ".test_cotations_filter_cotation_column_range()", - "file_type": "code", + "label": "Tests covering query.py lines 77-132.", + "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1269", - "community": 22, - "norm_label": ".test_cotations_filter_cotation_column_range()", - "id": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_filter_cotation_column_range" + "source_location": "L630", + "community": 28, + "norm_label": "tests covering query.py lines 77-132.", + "id": "tests_test_stocks_api_coverage_rationale_630" }, { - "label": ".test_cotations_filter_cotation_column_handles_non_list()", - "file_type": "code", + "label": "Pass field name WITHOUT year (how categorizeColumns returns them).", + "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1286", - "community": 22, - "norm_label": ".test_cotations_filter_cotation_column_handles_non_list()", - "id": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_filter_cotation_column_handles_non_list" + "source_location": "L668", + "community": 28, + "norm_label": "pass field name without year (how categorizecolumns returns them).", + "id": "tests_test_stocks_api_coverage_rationale_668" }, { - "label": ".test_cotations_search_required()", - "file_type": "code", + "label": "If an unexpected exception occurs in queryHistorical.", + "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1297", - "community": 120, - "norm_label": ".test_cotations_search_required()", - "id": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_search_required" + "source_location": "L719", + "community": 28, + "norm_label": "if an unexpected exception occurs in queryhistorical.", + "id": "tests_test_stocks_api_coverage_rationale_719" }, { - "label": "GET /cotations without search returns 422.", + "label": "Invalid date format raises exception (line 132).", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1298", - "community": 120, - "norm_label": "get /cotations without search returns 422.", - "id": "tests_test_stocks_api_coverage_rationale_1298" + "source_location": "L737", + "community": 543, + "norm_label": "invalid date format raises exception (line 132).", + "id": "tests_test_stocks_api_coverage_rationale_737" }, { - "label": "2 tickers x 2 rows. Rows 0,2 are 2024-01-15; rows 1,3 are 2024-06-15. M", + "label": "No historical columns at all -> inner 400 caught by outer except -> 500.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1066", - "community": 10, - "norm_label": "2 tickers x 2 rows. rows 0,2 are 2024-01-15; rows 1,3 are 2024-06-15. m", - "id": "tests_test_stocks_api_coverage_rationale_1066" + "source_location": "L753", + "community": 127, + "norm_label": "no historical columns at all -> inner 400 caught by outer except -> 500.", + "id": "tests_test_stocks_api_coverage_rationale_753" }, { - "label": "4 rows for 2 tickers -> 2 results, one per ticker, both with latest TIME.", + "label": "Historical query with a year range.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1112", - "community": 10, - "norm_label": "4 rows for 2 tickers -> 2 results, one per ticker, both with latest time.", - "id": "tests_test_stocks_api_coverage_rationale_1112" + "source_location": "L763", + "community": 28, + "norm_label": "historical query with a year range.", + "id": "tests_test_stocks_api_coverage_rationale_763" }, { - "label": "dates=\"2016-12-02\" should keep only the 02-12-2016 entry in each JSON list.", + "label": "Multiple search terms, all found in tickerIndex.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1124", - "community": 10, - "norm_label": "dates=\"2016-12-02\" should keep only the 02-12-2016 entry in each json list.", - "id": "tests_test_stocks_api_coverage_rationale_1124" + "source_location": "L770", + "community": 28, + "norm_label": "multiple search terms, all found in tickerindex.", + "id": "tests_test_stocks_api_coverage_rationale_770" }, { - "label": "Hit the actual /stocks/cotations HTTP endpoint with adjusted=false.", + "label": "Calling with all None returns 400.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1210", - "community": 521, - "norm_label": "hit the actual /stocks/cotations http endpoint with adjusted=false.", - "id": "tests_test_stocks_api_coverage_rationale_1210" + "source_location": "L778", + "community": 112, + "norm_label": "calling with all none returns 400.", + "id": "tests_test_stocks_api_coverage_rationale_778" }, { - "label": "GET /cotations without search returns 422.", + "label": "Tests covering query.py lines 142-202.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1288", - "community": 120, - "norm_label": "get /cotations without search returns 422.", - "id": "tests_test_stocks_api_coverage_rationale_1288" + "source_location": "L789", + "community": 112, + "norm_label": "tests covering query.py lines 142-202.", + "id": "tests_test_stocks_api_coverage_rationale_789" }, { - "label": "Invalid date -> inner 400 caught by outer except -> 500.", + "label": "Invalid date -> inner 400 passes through (not wrapped as 500).", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L832", - "community": 17, - "norm_label": "invalid date -> inner 400 caught by outer except -> 500.", - "id": "tests_test_stocks_api_coverage_rationale_832" + "source_location": "L843", + "community": 39, + "norm_label": "invalid date -> inner 400 passes through (not wrapped as 500).", + "id": "tests_test_stocks_api_coverage_rationale_843" }, { "label": "search.strip() == '' should still dedup (line 181).", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L885", + "source_location": "L896", "community": 17, "norm_label": "search.strip() == '' should still dedup (line 181).", - "id": "tests_test_stocks_api_coverage_rationale_885" + "id": "tests_test_stocks_api_coverage_rationale_896" }, { "label": "DataFrame without TIME column.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L894", + "source_location": "L905", "community": 17, "norm_label": "dataframe without time column.", - "id": "tests_test_stocks_api_coverage_rationale_894" + "id": "tests_test_stocks_api_coverage_rationale_905" }, { "label": "Two dates in the range, both valid.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L907", - "community": 39, + "source_location": "L918", + "community": 17, "norm_label": "two dates in the range, both valid.", - "id": "tests_test_stocks_api_coverage_rationale_907" + "id": "tests_test_stocks_api_coverage_rationale_918" }, { - "label": "Single invalid date -> inner 400 caught by outer except -> 500.", + "label": "Single invalid date -> inner 400 passes through.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L921", + "source_location": "L932", "community": 46, - "norm_label": "single invalid date -> inner 400 caught by outer except -> 500.", - "id": "tests_test_stocks_api_coverage_rationale_921" + "norm_label": "single invalid date -> inner 400 passes through.", + "id": "tests_test_stocks_api_coverage_rationale_932" + }, + { + "label": "Invalid fields now raise 400 with actionable error message.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L942", + "community": 46, + "norm_label": "invalid fields now raise 400 with actionable error message.", + "id": "tests_test_stocks_api_coverage_rationale_942" }, { "label": "Multiple search terms with tickerIndex.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L946", - "community": 17, + "source_location": "L959", + "community": 39, "norm_label": "multiple search terms with tickerindex.", - "id": "tests_test_stocks_api_coverage_rationale_946" + "id": "tests_test_stocks_api_coverage_rationale_959" }, { "label": "Search with no index match falls back to string startswith.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L954", - "community": 39, + "source_location": "L967", + "community": 17, "norm_label": "search with no index match falls back to string startswith.", - "id": "tests_test_stocks_api_coverage_rationale_954" + "id": "tests_test_stocks_api_coverage_rationale_967" }, { - "label": "len(dateRange) == 1 -> single date filter.", + "label": "len(dateRange) == 1 -> per-ticker closest snapshot.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L962", - "community": 39, - "norm_label": "len(daterange) == 1 -> single date filter.", - "id": "tests_test_stocks_api_coverage_rationale_962" + "source_location": "L975", + "community": 17, + "norm_label": "len(daterange) == 1 -> per-ticker closest snapshot.", + "id": "tests_test_stocks_api_coverage_rationale_975" }, { "label": "COTACAO 10Y PADRAO and COTACAO 10Y AJUSTADA belong to /cotations, not /fundament", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L976", - "community": 570, + "source_location": "L990", + "community": 112, "norm_label": "cotacao 10y padrao and cotacao 10y ajustada belong to /cotations, not /fundament", - "id": "tests_test_stocks_api_coverage_rationale_976" + "id": "tests_test_stocks_api_coverage_rationale_990" }, { "label": "Regression: queryFundamental must not mutate the shared cache TIME column.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1003", - "community": 101, + "source_location": "L1017", + "community": 46, "norm_label": "regression: queryfundamental must not mutate the shared cache time column.", - "id": "tests_test_stocks_api_coverage_rationale_1003" + "id": "tests_test_stocks_api_coverage_rationale_1017" }, { "label": "Tests for queryCotations and /stocks/cotations.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1035", + "source_location": "L1060", "community": 10, "norm_label": "tests for querycotations and /stocks/cotations.", - "id": "tests_test_stocks_api_coverage_rationale_1035" + "id": "tests_test_stocks_api_coverage_rationale_1060" }, { "label": "2 tickers x 2 rows. Rows 0,2 are 2024-01-15; rows 1,3 are 2024-06-15. M", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1047", + "source_location": "L1072", "community": 10, "norm_label": "2 tickers x 2 rows. rows 0,2 are 2024-01-15; rows 1,3 are 2024-06-15. m", - "id": "tests_test_stocks_api_coverage_rationale_1047" + "id": "tests_test_stocks_api_coverage_rationale_1072" }, { "label": "4 rows for 2 tickers -> 2 results, one per ticker, both with latest TIME.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1093", + "source_location": "L1118", "community": 10, "norm_label": "4 rows for 2 tickers -> 2 results, one per ticker, both with latest time.", - "id": "tests_test_stocks_api_coverage_rationale_1093" + "id": "tests_test_stocks_api_coverage_rationale_1118" }, { "label": "dates=\"2016-12-02\" should keep only the 02-12-2016 entry in each JSON list.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1105", + "source_location": "L1130", "community": 10, "norm_label": "dates=\"2016-12-02\" should keep only the 02-12-2016 entry in each json list.", - "id": "tests_test_stocks_api_coverage_rationale_1105" + "id": "tests_test_stocks_api_coverage_rationale_1130" }, { "label": "Hit the actual /stocks/cotations HTTP endpoint with adjusted=false.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1191", - "community": 521, + "source_location": "L1216", + "community": 10, "norm_label": "hit the actual /stocks/cotations http endpoint with adjusted=false.", - "id": "tests_test_stocks_api_coverage_rationale_1191" - }, - { - "label": "2026-06-22-sandbox-mcp-design.md", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L1", - "community": 103, - "norm_label": "2026-06-22-sandbox-mcp-design.md", - "id": "docs_superpowers_specs_2026_06_22_sandbox_mcp_design_md" + "id": "tests_test_stocks_api_coverage_rationale_1216" }, { - "label": "Mansa Prometheus \u2014 MCP Tool Calling + Sandbox Pool Design", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L1", - "community": 103, - "norm_label": "mansa prometheus \u2014 mcp tool calling + sandbox pool design", - "id": "specs_2026_06_22_sandbox_mcp_design_mansa_prometheus_mcp_tool_calling_sandbox_pool_design" + "label": "Tests for queryLiveCotation and /stocks/cotations/live.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1243", + "community": 22, + "norm_label": "tests for querylivecotation and /stocks/cotations/live.", + "id": "tests_test_stocks_api_coverage_rationale_1243" }, { - "label": "1. Executive Summary", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L9", - "community": 103, - "norm_label": "1. executive summary", - "id": "specs_2026_06_22_sandbox_mcp_design_1_executive_summary" + "label": "GET /stocks/realtime-cotation without search returns 422.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1342", + "community": 587, + "norm_label": "get /stocks/realtime-cotation without search returns 422.", + "id": "tests_test_stocks_api_coverage_rationale_1342" }, { - "label": "2. Context & Motivation", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L17", - "community": 103, - "norm_label": "2. context & motivation", - "id": "specs_2026_06_22_sandbox_mcp_design_2_context_motivation" + "label": "GET /cotations without search returns 422.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1392", + "community": 22, + "norm_label": "get /cotations without search returns 422.", + "id": "tests_test_stocks_api_coverage_rationale_1392" }, { - "label": "3. Goals & Non-Goals", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L32", - "community": 261, - "norm_label": "3. goals & non-goals", - "id": "specs_2026_06_22_sandbox_mcp_design_3_goals_non_goals" + "label": "stocks_client()", + "file_type": "code", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L52", + "community": 129, + "norm_label": "stocks_client()", + "id": "tests_test_stocks_api_fields_stocks_client" }, { - "label": "Goals", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L34", - "community": 261, - "norm_label": "goals", - "id": "specs_2026_06_22_sandbox_mcp_design_goals" + "label": "Direct tests on the regex pattern used for the `fields` query param.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L18", + "community": 128, + "norm_label": "direct tests on the regex pattern used for the `fields` query param.", + "id": "tests_test_stocks_api_fields_rationale_18" }, { - "label": "Non-Goals (YAGNI)", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L42", - "community": 261, - "norm_label": "non-goals (yagni)", - "id": "specs_2026_06_22_sandbox_mcp_design_non_goals_yagni" + "label": "P/L must be accepted \u2014 it's a standard valuation metric.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L21", + "community": 128, + "norm_label": "p/l must be accepted \u2014 it's a standard valuation metric.", + "id": "tests_test_stocks_api_fields_rationale_21" }, { - "label": "4. Background Research", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L53", - "community": 209, - "norm_label": "4. background research", - "id": "specs_2026_06_22_sandbox_mcp_design_4_background_research" + "label": "MARG. LIQUIDA must be accepted \u2014 returned by /stocks/fields.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L25", + "community": 254, + "norm_label": "marg. liquida must be accepted \u2014 returned by /stocks/fields.", + "id": "tests_test_stocks_api_fields_rationale_25" }, { - "label": "4.1 Sandbox Technology Landscape", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L55", - "community": 209, - "norm_label": "4.1 sandbox technology landscape", - "id": "specs_2026_06_22_sandbox_mcp_design_4_1_sandbox_technology_landscape" + "label": "P/VP and similar combos must be accepted.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L29", + "community": 128, + "norm_label": "p/vp and similar combos must be accepted.", + "id": "tests_test_stocks_api_fields_rationale_29" }, { - "label": "4.2 Instant Startup Patterns", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L66", - "community": 209, - "norm_label": "4.2 instant startup patterns", - "id": "specs_2026_06_22_sandbox_mcp_design_4_2_instant_startup_patterns" + "label": "Basic fields like ROE must still pass.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L33", + "community": 255, + "norm_label": "basic fields like roe must still pass.", + "id": "tests_test_stocks_api_fields_rationale_33" }, { - "label": "4.3 Cost & Scaling Math", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L79", - "community": 209, - "norm_label": "4.3 cost & scaling math", - "id": "specs_2026_06_22_sandbox_mcp_design_4_3_cost_scaling_math" + "label": "Comma-separated list containing slash fields must pass.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L37", + "community": 252, + "norm_label": "comma-separated list containing slash fields must pass.", + "id": "tests_test_stocks_api_fields_rationale_37" }, { - "label": "4.4 Anthropic Containment Patterns", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L92", - "community": 209, - "norm_label": "4.4 anthropic containment patterns", - "id": "specs_2026_06_22_sandbox_mcp_design_4_4_anthropic_containment_patterns" + "label": "Pattern must reject potential injection \u2014 no angle brackets.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L41", + "community": 253, + "norm_label": "pattern must reject potential injection \u2014 no angle brackets.", + "id": "tests_test_stocks_api_fields_rationale_41" }, { - "label": "4.5 Hybrid Library Policy", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "label": "GET /historical?fields=MARG. LIQUIDA must not return 422.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L99", + "community": 167, + "norm_label": "get /historical?fields=marg. liquida must not return 422.", + "id": "tests_test_stocks_api_fields_rationale_99" + }, + { + "label": "GET /historical?fields=LUCRO LIQUIDO,P/L must not return 422.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", "source_location": "L104", - "community": 209, - "norm_label": "4.5 hybrid library policy", - "id": "specs_2026_06_22_sandbox_mcp_design_4_5_hybrid_library_policy" + "community": 166, + "norm_label": "get /historical?fields=lucro liquido,p/l must not return 422.", + "id": "tests_test_stocks_api_fields_rationale_104" }, { - "label": "5. Architecture Decision", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "label": "Integration: /stocks/fundamental date filter should work per-ticker.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", "source_location": "L110", - "community": 103, - "norm_label": "5. architecture decision", - "id": "specs_2026_06_22_sandbox_mcp_design_5_architecture_decision" + "community": 179, + "norm_label": "integration: /stocks/fundamental date filter should work per-ticker.", + "id": "tests_test_stocks_api_fields_rationale_110" }, { - "label": "6. Component Design", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L122", - "community": 117, - "norm_label": "6. component design", - "id": "specs_2026_06_22_sandbox_mcp_design_6_component_design" + "label": "When tickers have different date coverage, each should get its closest snapshot.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L113", + "community": 179, + "norm_label": "when tickers have different date coverage, each should get its closest snapshot.", + "id": "tests_test_stocks_api_fields_rationale_113" }, { - "label": "6.1 NEW: `sandbox-pool` Compose service", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L124", - "community": 117, - "norm_label": "6.1 new: `sandbox-pool` compose service", - "id": "specs_2026_06_22_sandbox_mcp_design_6_1_new_sandbox_pool_compose_service" + "label": "Tests for queryLiveCotation and /stocks/cotations/live.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1245", + "community": 22, + "norm_label": "tests for querylivecotation and /stocks/cotations/live.", + "id": "tests_test_stocks_api_coverage_rationale_1245" }, { - "label": "6.2 NEW: Sandbox executor image", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L131", - "community": 117, - "norm_label": "6.2 new: sandbox executor image", - "id": "specs_2026_06_22_sandbox_mcp_design_6_2_new_sandbox_executor_image" + "label": "GET /stocks/realtime-cotation without search returns 422.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1344", + "community": 587, + "norm_label": "get /stocks/realtime-cotation without search returns 422.", + "id": "tests_test_stocks_api_coverage_rationale_1344" }, { - "label": "6.3 NEW: `SandboxPoolSettings` in `config.py`", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L137", - "community": 117, - "norm_label": "6.3 new: `sandboxpoolsettings` in `config.py`", - "id": "specs_2026_06_22_sandbox_mcp_design_6_3_new_sandboxpoolsettings_in_config_py" + "label": "GET /cotations without search returns 422.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1394", + "community": 22, + "norm_label": "get /cotations without search returns 422.", + "id": "tests_test_stocks_api_coverage_rationale_1394" }, { - "label": "code:python (class SandboxPoolSettings(BaseMansaSettings):)", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L139", - "community": 117, - "norm_label": "code:python (class sandboxpoolsettings(basemansasettings):)", - "id": "specs_2026_06_22_sandbox_mcp_design_codeblock_1" + "label": "Direct tests on the regex pattern used for the `fields` query param.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L17", + "community": 128, + "norm_label": "direct tests on the regex pattern used for the `fields` query param.", + "id": "tests_test_stocks_api_fields_rationale_17" }, { - "label": "6.4 NEW: `sandbox_client.py` in `main/app/prometheus/`", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L155", - "community": 117, - "norm_label": "6.4 new: `sandbox_client.py` in `main/app/prometheus/`", - "id": "specs_2026_06_22_sandbox_mcp_design_6_4_new_sandbox_client_py_in_main_app_prometheus" + "label": "P/L must be accepted \u2014 it's a standard valuation metric.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L20", + "community": 128, + "norm_label": "p/l must be accepted \u2014 it's a standard valuation metric.", + "id": "tests_test_stocks_api_fields_rationale_20" }, { - "label": "code:python (class SandboxClient:)", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L158", - "community": 117, - "norm_label": "code:python (class sandboxclient:)", - "id": "specs_2026_06_22_sandbox_mcp_design_codeblock_2" + "label": "MARG. LIQUIDA must be accepted \u2014 returned by /stocks/fields.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L24", + "community": 254, + "norm_label": "marg. liquida must be accepted \u2014 returned by /stocks/fields.", + "id": "tests_test_stocks_api_fields_rationale_24" }, { - "label": "6.5 MODIFIED: `main/service/stocksapi_service.py` (add fastapi-mcp)", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L173", - "community": 117, - "norm_label": "6.5 modified: `main/service/stocksapi_service.py` (add fastapi-mcp)", - "id": "specs_2026_06_22_sandbox_mcp_design_6_5_modified_main_service_stocksapi_service_py_add_fastapi_mcp" + "label": "P/VP and similar combos must be accepted.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L28", + "community": 128, + "norm_label": "p/vp and similar combos must be accepted.", + "id": "tests_test_stocks_api_fields_rationale_28" }, { - "label": "code:python (from fastapi_mcp import FastApiMCP)", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L175", - "community": 117, - "norm_label": "code:python (from fastapi_mcp import fastapimcp)", - "id": "specs_2026_06_22_sandbox_mcp_design_codeblock_3" + "label": "Basic fields like ROE must still pass.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L32", + "community": 255, + "norm_label": "basic fields like roe must still pass.", + "id": "tests_test_stocks_api_fields_rationale_32" }, { - "label": "6.6 MODIFIED: `main/app/prometheus/generation.py` (the big refactor)", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L183", - "community": 117, - "norm_label": "6.6 modified: `main/app/prometheus/generation.py` (the big refactor)", - "id": "specs_2026_06_22_sandbox_mcp_design_6_6_modified_main_app_prometheus_generation_py_the_big_refactor" + "label": "Comma-separated list containing slash fields must pass.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L36", + "community": 252, + "norm_label": "comma-separated list containing slash fields must pass.", + "id": "tests_test_stocks_api_fields_rationale_36" }, { - "label": "6.7 MODIFIED: `docker-compose.yml`", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L194", - "community": 117, - "norm_label": "6.7 modified: `docker-compose.yml`", - "id": "specs_2026_06_22_sandbox_mcp_design_6_7_modified_docker_compose_yml" + "label": "Pattern must reject potential injection \u2014 no angle brackets.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L40", + "community": 253, + "norm_label": "pattern must reject potential injection \u2014 no angle brackets.", + "id": "tests_test_stocks_api_fields_rationale_40" }, { - "label": "code:yaml (services:)", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L195", - "community": 117, - "norm_label": "code:yaml (services:)", - "id": "specs_2026_06_22_sandbox_mcp_design_codeblock_4" + "label": "Minimal TestClient with just the stocks router for validation tests.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L51", + "community": 129, + "norm_label": "minimal testclient with just the stocks router for validation tests.", + "id": "tests_test_stocks_api_fields_rationale_51" }, { - "label": "6.8 MODIFIED: `requirements.txt`", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L215", - "community": 117, - "norm_label": "6.8 modified: `requirements.txt`", - "id": "specs_2026_06_22_sandbox_mcp_design_6_8_modified_requirements_txt" + "label": "Integration: /stocks/fundamental must accept slash and dot fields.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L70", + "community": 129, + "norm_label": "integration: /stocks/fundamental must accept slash and dot fields.", + "id": "tests_test_stocks_api_fields_rationale_70" }, { - "label": "7. Data Flow \u2014 One Real Query", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L220", - "community": 103, - "norm_label": "7. data flow \u2014 one real query", - "id": "specs_2026_06_22_sandbox_mcp_design_7_data_flow_one_real_query" + "label": "GET /fundamental?fields=P/L must not return 422 (validation error).", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L73", + "community": 129, + "norm_label": "get /fundamental?fields=p/l must not return 422 (validation error).", + "id": "tests_test_stocks_api_fields_rationale_73" }, { - "label": "code:block5 (User: \"Show me the correlation between PETR4 and the oil sec)", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L222", - "community": 103, - "norm_label": "code:block5 (user: \"show me the correlation between petr4 and the oil sec)", - "id": "specs_2026_06_22_sandbox_mcp_design_codeblock_5" + "label": "GET /fundamental?fields=MARG. LIQUIDA must not return 422.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L78", + "community": 167, + "norm_label": "get /fundamental?fields=marg. liquida must not return 422.", + "id": "tests_test_stocks_api_fields_rationale_78" }, { - "label": "8. Build Sequence (4 phases, each independently shippable)", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L244", - "community": 233, - "norm_label": "8. build sequence (4 phases, each independently shippable)", - "id": "specs_2026_06_22_sandbox_mcp_design_8_build_sequence_4_phases_each_independently_shippable" + "label": "GET /fundamental?fields=P/L,ROE,DY must not return 422.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L83", + "community": 166, + "norm_label": "get /fundamental?fields=p/l,roe,dy must not return 422.", + "id": "tests_test_stocks_api_fields_rationale_83" }, { - "label": "Phase 0 \u2014 Sandbox foundation (1-2 days, no user-facing change)", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L246", - "community": 233, - "norm_label": "phase 0 \u2014 sandbox foundation (1-2 days, no user-facing change)", - "id": "specs_2026_06_22_sandbox_mcp_design_phase_0_sandbox_foundation_1_2_days_no_user_facing_change" + "label": "Integration: /stocks/historical must accept slash and dot fields.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L89", + "community": 191, + "norm_label": "integration: /stocks/historical must accept slash and dot fields.", + "id": "tests_test_stocks_api_fields_rationale_89" }, { - "label": "Phase 1 \u2014 MCP exposure of STOCKS_API (1 day)", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L258", - "community": 233, - "norm_label": "phase 1 \u2014 mcp exposure of stocks_api (1 day)", - "id": "specs_2026_06_22_sandbox_mcp_design_phase_1_mcp_exposure_of_stocks_api_1_day" + "label": "GET /historical?fields=P/L must not return 422.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L92", + "community": 191, + "norm_label": "get /historical?fields=p/l must not return 422.", + "id": "tests_test_stocks_api_fields_rationale_92" }, { - "label": "Phase 2 \u2014 Refactor PROMETHEUS to agentic (3-5 days, the big one)", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L264", - "community": 233, - "norm_label": "phase 2 \u2014 refactor prometheus to agentic (3-5 days, the big one)", - "id": "specs_2026_06_22_sandbox_mcp_design_phase_2_refactor_prometheus_to_agentic_3_5_days_the_big_one" + "label": "GET /historical?fields=MARG. LIQUIDA must not return 422.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L97", + "community": 167, + "norm_label": "get /historical?fields=marg. liquida must not return 422.", + "id": "tests_test_stocks_api_fields_rationale_97" }, { - "label": "Phase 3 \u2014 Hardening (1-2 days, can ship incrementally)", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L276", - "community": 233, - "norm_label": "phase 3 \u2014 hardening (1-2 days, can ship incrementally)", - "id": "specs_2026_06_22_sandbox_mcp_design_phase_3_hardening_1_2_days_can_ship_incrementally" + "label": "GET /historical?fields=LUCRO LIQUIDO,P/L must not return 422.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L102", + "community": 166, + "norm_label": "get /historical?fields=lucro liquido,p/l must not return 422.", + "id": "tests_test_stocks_api_fields_rationale_102" }, { - "label": "9. Security", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L285", - "community": 103, - "norm_label": "9. security", - "id": "specs_2026_06_22_sandbox_mcp_design_9_security" + "label": "Integration: /stocks/fundamental date filter should work per-ticker.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L108", + "community": 179, + "norm_label": "integration: /stocks/fundamental date filter should work per-ticker.", + "id": "tests_test_stocks_api_fields_rationale_108" }, { - "label": "10. Performance", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L308", - "community": 103, - "norm_label": "10. performance", - "id": "specs_2026_06_22_sandbox_mcp_design_10_performance" + "label": "When tickers have different date coverage, each should get its closest snapshot.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_fields.py", + "source_location": "L111", + "community": 179, + "norm_label": "when tickers have different date coverage, each should get its closest snapshot.", + "id": "tests_test_stocks_api_fields_rationale_111" }, { - "label": "11. Testing", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L324", - "community": 103, - "norm_label": "11. testing", - "id": "specs_2026_06_22_sandbox_mcp_design_11_testing" + "label": "Tests for queryLiveCotation and /stocks/cotations/live.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1261", + "community": 22, + "norm_label": "tests for querylivecotation and /stocks/cotations/live.", + "id": "tests_test_stocks_api_coverage_rationale_1261" }, { - "label": "12. Risks", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L337", - "community": 103, - "norm_label": "12. risks", - "id": "specs_2026_06_22_sandbox_mcp_design_12_risks" + "label": "GET /stocks/realtime-cotation without search returns 422.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1400", + "community": 587, + "norm_label": "get /stocks/realtime-cotation without search returns 422.", + "id": "tests_test_stocks_api_coverage_rationale_1400" }, { - "label": "13. Out of Scope (YAGNI)", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L351", - "community": 103, - "norm_label": "13. out of scope (yagni)", - "id": "specs_2026_06_22_sandbox_mcp_design_13_out_of_scope_yagni" + "label": "GET /cotations without search returns 422.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1468", + "community": 22, + "norm_label": "get /cotations without search returns 422.", + "id": "tests_test_stocks_api_coverage_rationale_1468" }, { - "label": "14. Open Questions", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L364", - "community": 103, - "norm_label": "14. open questions", - "id": "specs_2026_06_22_sandbox_mcp_design_14_open_questions" + "label": "Return a small DataFrame with the columns the query module expects.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L23", + "community": 3, + "norm_label": "return a small dataframe with the columns the query module expects.", + "id": "tests_test_stocks_api_coverage_rationale_23" }, { - "label": "Appendix A: Codebase Findings", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L374", - "community": 123, - "norm_label": "appendix a: codebase findings", - "id": "specs_2026_06_22_sandbox_mcp_design_appendix_a_codebase_findings" + "label": "Tests covering cache.py lines 28-76.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L43", + "community": 3, + "norm_label": "tests covering cache.py lines 28-76.", + "id": "tests_test_stocks_api_coverage_rationale_43" }, { - "label": "Critical path correction", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L376", - "community": 123, - "norm_label": "critical path correction", - "id": "specs_2026_06_22_sandbox_mcp_design_critical_path_correction" + "label": "Tests covering key.py lines 15-40. Uses asyncio.run() since pytest-asyncio", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L228", + "community": 571, + "norm_label": "tests covering key.py lines 15-40. uses asyncio.run() since pytest-asyncio", + "id": "tests_test_stocks_api_coverage_rationale_228" }, { - "label": "Project structure (key files only)", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L380", - "community": 123, - "norm_label": "project structure (key files only)", - "id": "specs_2026_06_22_sandbox_mcp_design_project_structure_key_files_only" + "label": "When KEY.SYSTEM is falsy, return None (line 16).", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L233", + "community": 418, + "norm_label": "when key.system is falsy, return none (line 16).", + "id": "tests_test_stocks_api_coverage_rationale_233" }, { - "label": "code:block6 (D:\\Repositories\\server\\)", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L381", - "community": 123, - "norm_label": "code:block6 (d:\\repositories\\server\\)", - "id": "specs_2026_06_22_sandbox_mcp_design_codeblock_6" + "label": "When key is required but not provided (line 19).", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L244", + "community": 419, + "norm_label": "when key is required but not provided (line 19).", + "id": "tests_test_stocks_api_coverage_rationale_244" }, { - "label": "STOCKS_API \u2014 endpoints (MCP candidates)", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L413", - "community": 123, - "norm_label": "stocks_api \u2014 endpoints (mcp candidates)", - "id": "specs_2026_06_22_sandbox_mcp_design_stocks_api_endpoints_mcp_candidates" + "label": "When atomic UPDATE returns 0 rows and query finds no key -> 401.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L257", + "community": 420, + "norm_label": "when atomic update returns 0 rows and query finds no key -> 401.", + "id": "tests_test_stocks_api_coverage_rationale_257" }, { - "label": "Prometheus controller \u2014 endpoints (existing)", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L424", - "community": 123, - "norm_label": "prometheus controller \u2014 endpoints (existing)", - "id": "specs_2026_06_22_sandbox_mcp_design_prometheus_controller_endpoints_existing" + "label": "When atomic UPDATE returns 0 rows and query finds key at limit -> 429.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L274", + "community": 421, + "norm_label": "when atomic update returns 0 rows and query finds key at limit -> 429.", + "id": "tests_test_stocks_api_coverage_rationale_274" }, { - "label": "The 4-stage pipeline (current `generation.py`)", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L436", - "community": 123, - "norm_label": "the 4-stage pipeline (current `generation.py`)", - "id": "specs_2026_06_22_sandbox_mcp_design_the_4_stage_pipeline_current_generation_py" + "label": "HTTPException should cause rollback then re-raise (lines 35-37).", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L306", + "community": 422, + "norm_label": "httpexception should cause rollback then re-raise (lines 35-37).", + "id": "tests_test_stocks_api_coverage_rationale_306" }, { - "label": "Key config patterns", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L448", - "community": 123, - "norm_label": "key config patterns", - "id": "specs_2026_06_22_sandbox_mcp_design_key_config_patterns" + "label": "Generic DB exception should rollback and raise 500 (lines 38-40).", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L325", + "community": 423, + "norm_label": "generic db exception should rollback and raise 500 (lines 38-40).", + "id": "tests_test_stocks_api_coverage_rationale_325" }, { - "label": "Two MySQL engines", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L454", - "community": 123, - "norm_label": "two mysql engines", - "id": "specs_2026_06_22_sandbox_mcp_design_two_mysql_engines" + "label": "Tests covering key.py line 44.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L340", + "community": 141, + "norm_label": "tests covering key.py line 44.", + "id": "tests_test_stocks_api_coverage_rationale_340" }, { - "label": "code:python (engine = create_engine(...) # user_db (mansa_db))", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L456", - "community": 123, - "norm_label": "code:python (engine = create_engine(...) # user_db (mansa_db))", - "id": "specs_2026_06_22_sandbox_mcp_design_codeblock_7" + "label": "Tests covering key.py lines 48-66.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L363", + "community": 565, + "norm_label": "tests covering key.py lines 48-66.", + "id": "tests_test_stocks_api_coverage_rationale_363" }, { - "label": "Port collision in current setup", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L466", - "community": 123, - "norm_label": "port collision in current setup", - "id": "specs_2026_06_22_sandbox_mcp_design_port_collision_in_current_setup" + "label": "New key created when no existing key for user (lines 57-59).", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L367", + "community": 424, + "norm_label": "new key created when no existing key for user (lines 57-59).", + "id": "tests_test_stocks_api_coverage_rationale_367" }, { - "label": "Existing dependencies (from `requirements.txt`)", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L470", - "community": 123, - "norm_label": "existing dependencies (from `requirements.txt`)", - "id": "specs_2026_06_22_sandbox_mcp_design_existing_dependencies_from_requirements_txt" + "label": "Existing key is updated (lines 54-56).", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L382", + "community": 425, + "norm_label": "existing key is updated (lines 54-56).", + "id": "tests_test_stocks_api_coverage_rationale_382" }, { - "label": "Appendix B: Research References", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L479", - "community": 103, - "norm_label": "appendix b: research references", - "id": "specs_2026_06_22_sandbox_mcp_design_appendix_b_research_references" + "label": "Exception during creation triggers rollback and 500 (lines 64-66).", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L399", + "community": 426, + "norm_label": "exception during creation triggers rollback and 500 (lines 64-66).", + "id": "tests_test_stocks_api_coverage_rationale_399" }, { - "label": "Status", - "file_type": "document", - "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", - "source_location": "L489", - "community": 103, - "norm_label": "status", - "id": "specs_2026_06_22_sandbox_mcp_design_status" + "label": "Tests covering query.py lines 22-48.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L417", + "community": 3, + "norm_label": "tests covering query.py lines 22-48.", + "id": "tests_test_stocks_api_coverage_rationale_417" }, { - "label": "filterCotationData()", - "file_type": "code", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L49", - "community": 517, - "norm_label": "filtercotationdata()", - "id": "stocks_api_query_filtercotationdata" + "label": "replaceNan handles direct float NaN values (line 34).", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L495", + "community": 577, + "norm_label": "replacenan handles direct float nan values (line 34).", + "id": "tests_test_stocks_api_coverage_rationale_495" }, { - "label": "Tests for queryCotations and /stocks/cotations.", + "label": "Non-JSON-dict/list string is left as-is.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1014", - "community": 10, - "norm_label": "tests for querycotations and /stocks/cotations.", - "id": "tests_test_stocks_api_coverage_rationale_1014" + "source_location": "L509", + "community": 566, + "norm_label": "non-json-dict/list string is left as-is.", + "id": "tests_test_stocks_api_coverage_rationale_509" }, { - "label": "2 tickers x 2 rows. Rows 0,2 are 2024-01-15; rows 1,3 are 2024-06-15. M", + "label": "pd.NA is not a string, so lambda returns it unchanged.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1026", - "community": 10, - "norm_label": "2 tickers x 2 rows. rows 0,2 are 2024-01-15; rows 1,3 are 2024-06-15. m", - "id": "tests_test_stocks_api_coverage_rationale_1026" + "source_location": "L518", + "community": 520, + "norm_label": "pd.na is not a string, so lambda returns it unchanged.", + "id": "tests_test_stocks_api_coverage_rationale_518" }, { - "label": "dates=\"2016-12-02\" should keep only the 02-12-2016 entry in each JSON list.", + "label": "Regression: is_string_dtype fails when column has strings + None (pandas 2.x).", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1084", - "community": 10, - "norm_label": "dates=\"2016-12-02\" should keep only the 02-12-2016 entry in each json list.", - "id": "tests_test_stocks_api_coverage_rationale_1084" + "source_location": "L527", + "community": 86, + "norm_label": "regression: is_string_dtype fails when column has strings + none (pandas 2.x).", + "id": "tests_test_stocks_api_coverage_rationale_527" }, { - "label": "Hit the actual /stocks/cotations HTTP endpoint with adjusted=false.", + "label": "All four SPECIAL_COLS should parse correctly when mixed with None.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1170", - "community": 521, - "norm_label": "hit the actual /stocks/cotations http endpoint with adjusted=false.", - "id": "tests_test_stocks_api_coverage_rationale_1170" + "source_location": "L549", + "community": 520, + "norm_label": "all four special_cols should parse correctly when mixed with none.", + "id": "tests_test_stocks_api_coverage_rationale_549" }, { - "label": "Tests for queryCotations and /stocks/cotations.", + "label": "Tests covering query.py lines 50-67.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L985", - "community": 10, - "norm_label": "tests for querycotations and /stocks/cotations.", - "id": "tests_test_stocks_api_coverage_rationale_985" + "source_location": "L574", + "community": 86, + "norm_label": "tests covering query.py lines 50-67.", + "id": "tests_test_stocks_api_coverage_rationale_574" }, { - "label": "2 tickers x 2 rows. Rows 0,2 are 2024-01-15; rows 1,3 are 2024-06-15. M", + "label": "Tests covering query.py lines 77-132.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L997", - "community": 10, - "norm_label": "2 tickers x 2 rows. rows 0,2 are 2024-01-15; rows 1,3 are 2024-06-15. m", - "id": "tests_test_stocks_api_coverage_rationale_997" + "source_location": "L629", + "community": 28, + "norm_label": "tests covering query.py lines 77-132.", + "id": "tests_test_stocks_api_coverage_rationale_629" }, { - "label": "4 rows for 2 tickers -> 2 results, one per ticker, both with latest TIME.", + "label": "Pass field name WITHOUT year (how categorizeColumns returns them).", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1043", - "community": 10, - "norm_label": "4 rows for 2 tickers -> 2 results, one per ticker, both with latest time.", - "id": "tests_test_stocks_api_coverage_rationale_1043" + "source_location": "L667", + "community": 28, + "norm_label": "pass field name without year (how categorizecolumns returns them).", + "id": "tests_test_stocks_api_coverage_rationale_667" }, { - "label": "dates=\"2016-12-02\" should keep only the 02-12-2016 entry in each JSON list.", + "label": "No historical data columns -> inner 400 caught by outer except -> 500.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1055", - "community": 10, - "norm_label": "dates=\"2016-12-02\" should keep only the 02-12-2016 entry in each json list.", - "id": "tests_test_stocks_api_coverage_rationale_1055" + "source_location": "L693", + "community": 28, + "norm_label": "no historical data columns -> inner 400 caught by outer except -> 500.", + "id": "tests_test_stocks_api_coverage_rationale_693" }, { - "label": "Hit the actual /stocks/cotations HTTP endpoint with adjusted=false.", + "label": "If an unexpected exception occurs in queryHistorical.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1141", - "community": 521, - "norm_label": "hit the actual /stocks/cotations http endpoint with adjusted=false.", - "id": "tests_test_stocks_api_coverage_rationale_1141" + "source_location": "L718", + "community": 28, + "norm_label": "if an unexpected exception occurs in queryhistorical.", + "id": "tests_test_stocks_api_coverage_rationale_718" }, { - "label": "_parseCotationDate()", - "file_type": "code", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L45", - "community": 517, - "norm_label": "_parsecotationdate()", - "id": "stocks_api_query_parsecotationdate" + "label": "Invalid date format raises exception (line 132).", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L736", + "community": 543, + "norm_label": "invalid date format raises exception (line 132).", + "id": "tests_test_stocks_api_coverage_rationale_736" }, { - "label": "_filterCotationByDate()", - "file_type": "code", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L55", - "community": 517, - "norm_label": "_filtercotationbydate()", - "id": "stocks_api_query_filtercotationbydate" + "label": "No historical columns at all -> inner 400 caught by outer except -> 500.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L752", + "community": 127, + "norm_label": "no historical columns at all -> inner 400 caught by outer except -> 500.", + "id": "tests_test_stocks_api_coverage_rationale_752" }, { - "label": ".queryRealtimeCotation()", - "file_type": "code", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L344", - "community": 101, - "norm_label": ".queryrealtimecotation()", - "id": "stocks_api_query_stocksquerymanager_queryrealtimecotation" + "label": "Historical query with a year range.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L762", + "community": 28, + "norm_label": "historical query with a year range.", + "id": "tests_test_stocks_api_coverage_rationale_762" }, { - "label": "Parse DD-MM-YYYY from COTACAO 10Y JSON DATA field. ponytail: stdlib datetime onl", + "label": "Multiple search terms, all found in tickerIndex.", "file_type": "rationale", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L46", - "community": 517, - "norm_label": "parse dd-mm-yyyy from cotacao 10y json data field. ponytail: stdlib datetime onl", - "id": "stocks_api_query_rationale_46" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L769", + "community": 28, + "norm_label": "multiple search terms, all found in tickerindex.", + "id": "tests_test_stocks_api_coverage_rationale_769" }, { - "label": "Filter COTACAO 10Y JSON entries by their inner DATA field (DD-MM-YYYY).", + "label": "Calling with all None returns 400.", "file_type": "rationale", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L56", - "community": 517, - "norm_label": "filter cotacao 10y json entries by their inner data field (dd-mm-yyyy).", - "id": "stocks_api_query_rationale_56" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L777", + "community": 112, + "norm_label": "calling with all none returns 400.", + "id": "tests_test_stocks_api_coverage_rationale_777" }, { - "label": "Fetch live prices for B3 tickers via yfinance. B3 tickers must match", + "label": "Tests covering query.py lines 142-202.", "file_type": "rationale", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L345", - "community": 101, - "norm_label": "fetch live prices for b3 tickers via yfinance. b3 tickers must match", - "id": "stocks_api_query_rationale_345" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L788", + "community": 112, + "norm_label": "tests covering query.py lines 142-202.", + "id": "tests_test_stocks_api_coverage_rationale_788" }, { - "label": "getRealtimeCotation()", - "file_type": "code", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L63", - "community": 197, - "norm_label": "getrealtimecotation()", - "id": "controller_stocksapi_controller_getrealtimecotation" + "label": "search.strip() == '' should still dedup (line 181).", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L895", + "community": 39, + "norm_label": "search.strip() == '' should still dedup (line 181).", + "id": "tests_test_stocks_api_coverage_rationale_895" }, { - "label": ".test_cotations_with_limit()", - "file_type": "code", + "label": "DataFrame without TIME column.", + "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1122", - "community": 10, - "norm_label": ".test_cotations_with_limit()", - "id": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_with_limit" + "source_location": "L904", + "community": 39, + "norm_label": "dataframe without time column.", + "id": "tests_test_stocks_api_coverage_rationale_904" }, { - "label": "Hit the actual /stocks/cotations HTTP endpoint with adjusted=false.", + "label": "Two dates in the range, both valid.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1148", - "community": 521, - "norm_label": "hit the actual /stocks/cotations http endpoint with adjusted=false.", - "id": "tests_test_stocks_api_coverage_rationale_1148" + "source_location": "L917", + "community": 17, + "norm_label": "two dates in the range, both valid.", + "id": "tests_test_stocks_api_coverage_rationale_917" }, { - "label": ".__getitem__()", - "file_type": "code", - "source_file": "config.py", - "source_location": "L47", - "community": 102, - "norm_label": ".__getitem__()", - "id": "server_config_mysqlsettings_getitem" + "label": "Single invalid date -> inner 400 caught by outer except -> 500.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L931", + "community": 46, + "norm_label": "single invalid date -> inner 400 caught by outer except -> 500.", + "id": "tests_test_stocks_api_coverage_rationale_931" }, { - "label": "test_cache_load.py", - "file_type": "code", - "source_file": "test_cache_load.py", - "source_location": "L1", - "community": 427, - "norm_label": "test_cache_load.py", - "id": "test_cache_load_py" + "label": "Multiple search terms with tickerIndex.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L956", + "community": 39, + "norm_label": "multiple search terms with tickerindex.", + "id": "tests_test_stocks_api_coverage_rationale_956" }, { - "label": ".__init__()", - "file_type": "code", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L14", - "community": 68, - "norm_label": ".__init__()", - "id": "prometheus_chat_prometheuschatmanager_init" + "label": "Search with no index match falls back to string startswith.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L964", + "community": 17, + "norm_label": "search with no index match falls back to string startswith.", + "id": "tests_test_stocks_api_coverage_rationale_964" }, { - "label": "SessionProxy", - "file_type": "code", - "source_file": "main/app/prometheus/generation.py", - "source_location": "L19", - "community": 162, - "norm_label": "sessionproxy", - "id": "prometheus_generation_sessionproxy" + "label": "len(dateRange) == 1 -> single date filter.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L972", + "community": 17, + "norm_label": "len(daterange) == 1 -> single date filter.", + "id": "tests_test_stocks_api_coverage_rationale_972" }, { - "label": ".get()", - "file_type": "code", - "source_file": "main/app/prometheus/generation.py", - "source_location": "L20", - "community": 162, - "norm_label": ".get()", - "id": "prometheus_generation_sessionproxy_get" + "label": "COTACAO 10Y PADRAO and COTACAO 10Y AJUSTADA belong to /cotations, not /fundament", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L986", + "community": 112, + "norm_label": "cotacao 10y padrao and cotacao 10y ajustada belong to /cotations, not /fundament", + "id": "tests_test_stocks_api_coverage_rationale_986" }, { - "label": ".post()", - "file_type": "code", - "source_file": "main/app/prometheus/generation.py", - "source_location": "L23", - "community": 162, - "norm_label": ".post()", - "id": "prometheus_generation_sessionproxy_post" + "label": "Regression: queryFundamental must not mutate the shared cache TIME column.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1013", + "community": 46, + "norm_label": "regression: queryfundamental must not mutate the shared cache time column.", + "id": "tests_test_stocks_api_coverage_rationale_1013" }, { - "label": "normalizeColumns()", - "file_type": "code", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L27", - "community": 477, - "norm_label": "normalizecolumns()", - "id": "stocks_api_util_normalizecolumns" + "label": "Tests for queryCotations and /stocks/cotations.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1056", + "community": 10, + "norm_label": "tests for querycotations and /stocks/cotations.", + "id": "tests_test_stocks_api_coverage_rationale_1056" }, { - "label": "_verify_session_ownership()", - "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L22", - "community": 84, - "norm_label": "_verify_session_ownership()", - "id": "controller_prometheus_controller_verify_session_ownership" + "label": "2 tickers x 2 rows. Rows 0,2 are 2024-01-15; rows 1,3 are 2024-06-15. M", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1068", + "community": 10, + "norm_label": "2 tickers x 2 rows. rows 0,2 are 2024-01-15; rows 1,3 are 2024-06-15. m", + "id": "tests_test_stocks_api_coverage_rationale_1068" }, { - "label": "Verify the user owns the session, raise 403 otherwise.", + "label": "4 rows for 2 tickers -> 2 results, one per ticker, both with latest TIME.", "file_type": "rationale", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L23", - "community": 84, - "norm_label": "verify the user owns the session, raise 403 otherwise.", - "id": "controller_prometheus_controller_rationale_23" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1114", + "community": 10, + "norm_label": "4 rows for 2 tickers -> 2 results, one per ticker, both with latest time.", + "id": "tests_test_stocks_api_coverage_rationale_1114" }, { - "label": "apiKeyTest()", - "file_type": "code", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L23", - "community": 197, - "norm_label": "apikeytest()", - "id": "controller_stocksapi_controller_apikeytest" + "label": "dates=\"2016-12-02\" should keep only the 02-12-2016 entry in each JSON list.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1126", + "community": 10, + "norm_label": "dates=\"2016-12-02\" should keep only the 02-12-2016 entry in each json list.", + "id": "tests_test_stocks_api_coverage_rationale_1126" }, { - "label": ".__repr__()", - "file_type": "code", - "source_file": "main/models/stocksapi_key.py", - "source_location": "L21", - "community": 37, - "norm_label": ".__repr__()", - "id": "models_stocksapi_key_stocksapikey_repr" + "label": "Hit the actual /stocks/cotations HTTP endpoint with adjusted=false.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1212", + "community": 10, + "norm_label": "hit the actual /stocks/cotations http endpoint with adjusted=false.", + "id": "tests_test_stocks_api_coverage_rationale_1212" }, { - "label": ".__repr__()", - "file_type": "code", - "source_file": "main/models/user.py", - "source_location": "L20", - "community": 61, - "norm_label": ".__repr__()", - "id": "models_user_user_repr" + "label": "Tests for queryLiveCotation and /stocks/cotations/live.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1257", + "community": 22, + "norm_label": "tests for querylivecotation and /stocks/cotations/live.", + "id": "tests_test_stocks_api_coverage_rationale_1257" }, { - "label": ".removeRole()", - "file_type": "code", - "source_file": "main/models/user.py", - "source_location": "L36", - "community": 61, - "norm_label": ".removerole()", - "id": "models_user_user_removerole" - }, - { - "label": ".__repr__()", - "file_type": "code", - "source_file": "main/models/user_session.py", - "source_location": "L23", - "community": 44, - "norm_label": ".__repr__()", - "id": "models_user_session_usersession_repr" - }, - { - "label": ".toDict()", - "file_type": "code", - "source_file": "main/models/user_session.py", - "source_location": "L26", - "community": 44, - "norm_label": ".todict()", - "id": "models_user_session_usersession_todict" + "label": "GET /stocks/realtime-cotation without search returns 422.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1396", + "community": 587, + "norm_label": "get /stocks/realtime-cotation without search returns 422.", + "id": "tests_test_stocks_api_coverage_rationale_1396" }, { - "label": "cleanup()", - "file_type": "code", - "source_file": "main/utils/http_session.py", - "source_location": "L18", - "community": 564, - "norm_label": "cleanup()", - "id": "utils_http_session_cleanup" + "label": "GET /cotations without search returns 422.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1464", + "community": 22, + "norm_label": "get /cotations without search returns 422.", + "id": "tests_test_stocks_api_coverage_rationale_1464" }, { - "label": "pagination.py", + "label": "cotations.py", "file_type": "code", - "source_file": "main/utils/pagination.py", + "source_file": "cotations.py", "source_location": "L1", - "community": 500, - "norm_label": "pagination.py", - "id": "main_utils_pagination_py" - }, - { - "label": "PaginationParams", - "file_type": "code", - "source_file": "main/utils/pagination.py", - "source_location": "L4", - "community": 500, - "norm_label": "paginationparams", - "id": "utils_pagination_paginationparams" + "community": 267, + "norm_label": "cotations.py", + "id": "cotations_py" }, { - "label": ".__init__()", + "label": "queryLiveCotations()", "file_type": "code", - "source_file": "main/utils/pagination.py", + "source_file": "cotations.py", "source_location": "L5", - "community": 500, - "norm_label": ".__init__()", - "id": "utils_pagination_paginationparams_init" + "community": 267, + "norm_label": "querylivecotations()", + "id": "server_cotations_querylivecotations" }, { - "label": "Set required env vars before test collection. config.py eagerly instantia", + "label": "GET /stocks/realtime-cotation without search returns 422.", "file_type": "rationale", - "source_file": "tests/conftest.py", - "source_location": "L9", - "community": 251, - "norm_label": "set required env vars before test collection. config.py eagerly instantia", - "id": "tests_conftest_rationale_9" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1388", + "community": 587, + "norm_label": "get /stocks/realtime-cotation without search returns 422.", + "id": "tests_test_stocks_api_coverage_rationale_1388" }, { - "label": "TestClient with all routers mounted \u2014 no lifespan (no DB/service init). O", + "label": "GET /cotations without search returns 422.", "file_type": "rationale", - "source_file": "tests/conftest.py", - "source_location": "L75", - "community": 539, - "norm_label": "testclient with all routers mounted \u2014 no lifespan (no db/service init). o", - "id": "tests_conftest_rationale_75" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1456", + "community": 22, + "norm_label": "get /cotations without search returns 422.", + "id": "tests_test_stocks_api_coverage_rationale_1456" }, { - "label": "dbSession()", + "label": ".test_cotations_filter_cotation_column_filters_by_date()", "file_type": "code", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L20", - "community": 546, - "norm_label": "dbsession()", - "id": "tests_test_api_key_quota_atomic_dbsession" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1253", + "community": 22, + "norm_label": ".test_cotations_filter_cotation_column_filters_by_date()", + "id": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_filter_cotation_column_filters_by_date" }, { - "label": "Create an in-memory SQLite database for testing.", - "file_type": "rationale", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L21", - "community": 546, - "norm_label": "create an in-memory sqlite database for testing.", - "id": "tests_test_api_key_quota_atomic_rationale_21" + "label": ".test_cotations_filter_cotation_column_range()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1269", + "community": 22, + "norm_label": ".test_cotations_filter_cotation_column_range()", + "id": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_filter_cotation_column_range" }, { - "label": "Sample API key data for tests.", - "file_type": "rationale", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L34", - "community": 546, - "norm_label": "sample api key data for tests.", - "id": "tests_test_api_key_quota_atomic_rationale_34" + "label": ".test_cotations_filter_cotation_column_handles_non_list()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1286", + "community": 22, + "norm_label": ".test_cotations_filter_cotation_column_handles_non_list()", + "id": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_filter_cotation_column_handles_non_list" }, { - "label": "Test that atomic increment prevents race conditions.", - "file_type": "rationale", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L39", - "community": 26, - "norm_label": "test that atomic increment prevents race conditions.", - "id": "tests_test_api_key_quota_atomic_rationale_39" + "label": ".test_cotations_search_required()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1297", + "community": 120, + "norm_label": ".test_cotations_search_required()", + "id": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_search_required" }, { - "label": "Test that normal quota check still works with atomic increment.", + "label": "GET /cotations without search returns 422.", "file_type": "rationale", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L42", - "community": 26, - "norm_label": "test that normal quota check still works with atomic increment.", - "id": "tests_test_api_key_quota_atomic_rationale_42" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1298", + "community": 120, + "norm_label": "get /cotations without search returns 422.", + "id": "tests_test_stocks_api_coverage_rationale_1298" }, { - "label": "Test that atomic increment prevents quota overuse.", + "label": "2 tickers x 2 rows. Rows 0,2 are 2024-01-15; rows 1,3 are 2024-06-15. M", "file_type": "rationale", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L68", - "community": 26, - "norm_label": "test that atomic increment prevents quota overuse.", - "id": "tests_test_api_key_quota_atomic_rationale_68" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1066", + "community": 10, + "norm_label": "2 tickers x 2 rows. rows 0,2 are 2024-01-15; rows 1,3 are 2024-06-15. m", + "id": "tests_test_stocks_api_coverage_rationale_1066" }, { - "label": "Test that concurrent requests are properly serialized at DB level. Th", + "label": "4 rows for 2 tickers -> 2 results, one per ticker, both with latest TIME.", "file_type": "rationale", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L104", - "community": 26, - "norm_label": "test that concurrent requests are properly serialized at db level. th", - "id": "tests_test_api_key_quota_atomic_rationale_104" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1112", + "community": 10, + "norm_label": "4 rows for 2 tickers -> 2 results, one per ticker, both with latest time.", + "id": "tests_test_stocks_api_coverage_rationale_1112" }, { - "label": "Test edge case: request exactly at quota limit.", + "label": "dates=\"2016-12-02\" should keep only the 02-12-2016 entry in each JSON list.", "file_type": "rationale", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L143", - "community": 26, - "norm_label": "test edge case: request exactly at quota limit.", - "id": "tests_test_api_key_quota_atomic_rationale_143" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1124", + "community": 10, + "norm_label": "dates=\"2016-12-02\" should keep only the 02-12-2016 entry in each json list.", + "id": "tests_test_stocks_api_coverage_rationale_1124" }, { - "label": "Test that invalid API key returns zero rows affected.", + "label": "Hit the actual /stocks/cotations HTTP endpoint with adjusted=false.", "file_type": "rationale", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L166", - "community": 26, - "norm_label": "test that invalid api key returns zero rows affected.", - "id": "tests_test_api_key_quota_atomic_rationale_166" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1210", + "community": 10, + "norm_label": "hit the actual /stocks/cotations http endpoint with adjusted=false.", + "id": "tests_test_stocks_api_coverage_rationale_1210" }, { - "label": "Test that multiple API keys have independent quotas.", + "label": "GET /cotations without search returns 422.", "file_type": "rationale", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L180", - "community": 561, - "norm_label": "test that multiple api keys have independent quotas.", - "id": "tests_test_api_key_quota_atomic_rationale_180" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1288", + "community": 120, + "norm_label": "get /cotations without search returns 422.", + "id": "tests_test_stocks_api_coverage_rationale_1288" }, { - "label": "Test that increment works from zero usage.", + "label": "Invalid date -> inner 400 caught by outer except -> 500.", "file_type": "rationale", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L215", - "community": 26, - "norm_label": "test that increment works from zero usage.", - "id": "tests_test_api_key_quota_atomic_rationale_215" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L832", + "community": 39, + "norm_label": "invalid date -> inner 400 caught by outer except -> 500.", + "id": "tests_test_stocks_api_coverage_rationale_832" }, { - "label": "Integration tests for the verifyAPIKey function.", + "label": "search.strip() == '' should still dedup (line 181).", "file_type": "rationale", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L236", - "community": 535, - "norm_label": "integration tests for the verifyapikey function.", - "id": "tests_test_api_key_quota_atomic_rationale_236" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L885", + "community": 39, + "norm_label": "search.strip() == '' should still dedup (line 181).", + "id": "tests_test_stocks_api_coverage_rationale_885" }, { - "label": "Test API key verification with invalid key.", + "label": "DataFrame without TIME column.", "file_type": "rationale", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L269", - "community": 535, - "norm_label": "test api key verification with invalid key.", - "id": "tests_test_api_key_quota_atomic_rationale_269" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L894", + "community": 39, + "norm_label": "dataframe without time column.", + "id": "tests_test_stocks_api_coverage_rationale_894" }, { - "label": "Test API key verification with missing key.", + "label": "Two dates in the range, both valid.", "file_type": "rationale", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L280", - "community": 535, - "norm_label": "test api key verification with missing key.", - "id": "tests_test_api_key_quota_atomic_rationale_280" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L907", + "community": 17, + "norm_label": "two dates in the range, both valid.", + "id": "tests_test_stocks_api_coverage_rationale_907" }, { - "label": "Test that API key system can be disabled.", + "label": "Single invalid date -> inner 400 caught by outer except -> 500.", "file_type": "rationale", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L291", - "community": 535, - "norm_label": "test that api key system can be disabled.", - "id": "tests_test_api_key_quota_atomic_rationale_291" - }, - { - "label": "._make_register_client()", - "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L150", - "community": 120, - "norm_label": "._make_register_client()", - "id": "tests_test_controllers_coverage_testregisterendpoint_make_register_client" - }, - { - "label": "._make_login_client()", - "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L230", - "community": 120, - "norm_label": "._make_login_client()", - "id": "tests_test_controllers_coverage_testloginendpoint_make_login_client" - }, - { - "label": "._make_logout_client()", - "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L283", - "community": 120, - "norm_label": "._make_logout_client()", - "id": "tests_test_controllers_coverage_testlogoutendpoint_make_logout_client" - }, - { - "label": "._make_callback_client()", - "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L427", - "community": 120, - "norm_label": "._make_callback_client()", - "id": "tests_test_controllers_coverage_testgooglecallback_make_callback_client" - }, - { - "label": "TestStocksApiKeyTest", - "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1194", - "community": 14, - "norm_label": "teststocksapikeytest", - "id": "tests_test_controllers_coverage_teststocksapikeytest" - }, - { - "label": ".test_api_key_valid()", - "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1197", - "community": 14, - "norm_label": ".test_api_key_valid()", - "id": "tests_test_controllers_coverage_teststocksapikeytest_test_api_key_valid" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L921", + "community": 46, + "norm_label": "single invalid date -> inner 400 caught by outer except -> 500.", + "id": "tests_test_stocks_api_coverage_rationale_921" }, { - "label": "Return (client, app) with stocks router and mocked deps.", + "label": "Multiple search terms with tickerIndex.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L80", - "community": 14, - "norm_label": "return (client, app) with stocks router and mocked deps.", - "id": "tests_test_controllers_coverage_rationale_80" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L946", + "community": 39, + "norm_label": "multiple search terms with tickerindex.", + "id": "tests_test_stocks_api_coverage_rationale_946" }, { - "label": "Covers line 23: isSecureScheme helper.", + "label": "Search with no index match falls back to string startswith.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L107", - "community": 58, - "norm_label": "covers line 23: issecurescheme helper.", - "id": "tests_test_controllers_coverage_rationale_107" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L954", + "community": 17, + "norm_label": "search with no index match falls back to string startswith.", + "id": "tests_test_stocks_api_coverage_rationale_954" }, { - "label": "Covers line 28: GET /auth/health.", + "label": "len(dateRange) == 1 -> single date filter.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L132", - "community": 498, - "norm_label": "covers line 28: get /auth/health.", - "id": "tests_test_controllers_coverage_rationale_132" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L962", + "community": 17, + "norm_label": "len(daterange) == 1 -> single date filter.", + "id": "tests_test_stocks_api_coverage_rationale_962" }, { - "label": "Covers lines 44-54, 63, 66-71: register success, ValueError, generic Exception.", + "label": "COTACAO 10Y PADRAO and COTACAO 10Y AJUSTADA belong to /cotations, not /fundament", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L148", - "community": 498, - "norm_label": "covers lines 44-54, 63, 66-71: register success, valueerror, generic exception.", - "id": "tests_test_controllers_coverage_rationale_148" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L976", + "community": 112, + "norm_label": "cotacao 10y padrao and cotacao 10y ajustada belong to /cotations, not /fundament", + "id": "tests_test_stocks_api_coverage_rationale_976" }, { - "label": "Covers lines 44-54, 63: successful registration + auto-login.", + "label": "Regression: queryFundamental must not mutate the shared cache TIME column.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L165", - "community": 428, - "norm_label": "covers lines 44-54, 63: successful registration + auto-login.", - "id": "tests_test_controllers_coverage_rationale_165" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1003", + "community": 46, + "norm_label": "regression: queryfundamental must not mutate the shared cache time column.", + "id": "tests_test_stocks_api_coverage_rationale_1003" }, { - "label": "Covers line 46: auto-login fails after registration.", + "label": "Tests for queryCotations and /stocks/cotations.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L191", - "community": 429, - "norm_label": "covers line 46: auto-login fails after registration.", - "id": "tests_test_controllers_coverage_rationale_191" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1035", + "community": 10, + "norm_label": "tests for querycotations and /stocks/cotations.", + "id": "tests_test_stocks_api_coverage_rationale_1035" }, { - "label": "Covers lines 87-93, 102: login success and failure paths.", + "label": "2 tickers x 2 rows. Rows 0,2 are 2024-01-15; rows 1,3 are 2024-06-15. M", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L228", - "community": 498, - "norm_label": "covers lines 87-93, 102: login success and failure paths.", - "id": "tests_test_controllers_coverage_rationale_228" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1047", + "community": 10, + "norm_label": "2 tickers x 2 rows. rows 0,2 are 2024-01-15; rows 1,3 are 2024-06-15. m", + "id": "tests_test_stocks_api_coverage_rationale_1047" }, { - "label": "Covers lines 87-93, 102: successful login.", + "label": "4 rows for 2 tickers -> 2 results, one per ticker, both with latest TIME.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L245", - "community": 430, - "norm_label": "covers lines 87-93, 102: successful login.", - "id": "tests_test_controllers_coverage_rationale_245" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1093", + "community": 10, + "norm_label": "4 rows for 2 tickers -> 2 results, one per ticker, both with latest time.", + "id": "tests_test_stocks_api_coverage_rationale_1093" }, { - "label": "Covers line 85: authenticateUser returns None.", + "label": "dates=\"2016-12-02\" should keep only the 02-12-2016 entry in each JSON list.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L267", - "community": 431, - "norm_label": "covers line 85: authenticateuser returns none.", - "id": "tests_test_controllers_coverage_rationale_267" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1105", + "community": 10, + "norm_label": "dates=\"2016-12-02\" should keep only the 02-12-2016 entry in each json list.", + "id": "tests_test_stocks_api_coverage_rationale_1105" }, { - "label": "Covers lines 109, 115-125: logout with X-Access-Token header.", + "label": "Hit the actual /stocks/cotations HTTP endpoint with adjusted=false.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L298", - "community": 432, - "norm_label": "covers lines 109, 115-125: logout with x-access-token header.", - "id": "tests_test_controllers_coverage_rationale_298" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1191", + "community": 10, + "norm_label": "hit the actual /stocks/cotations http endpoint with adjusted=false.", + "id": "tests_test_stocks_api_coverage_rationale_1191" }, { - "label": "Covers lines 111-113: token extracted from Authorization Bearer header.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L315", - "community": 433, - "norm_label": "covers lines 111-113: token extracted from authorization bearer header.", - "id": "tests_test_controllers_coverage_rationale_315" + "label": "2026-06-22-sandbox-mcp-design.md", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L1", + "community": 103, + "norm_label": "2026-06-22-sandbox-mcp-design.md", + "id": "docs_superpowers_specs_2026_06_22_sandbox_mcp_design_md" }, { - "label": "Covers lines 122-124: sessionId is not a valid int, ValueError caught.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L330", - "community": 434, - "norm_label": "covers lines 122-124: sessionid is not a valid int, valueerror caught.", - "id": "tests_test_controllers_coverage_rationale_330" + "label": "Mansa Prometheus \u2014 MCP Tool Calling + Sandbox Pool Design", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L1", + "community": 103, + "norm_label": "mansa prometheus \u2014 mcp tool calling + sandbox pool design", + "id": "specs_2026_06_22_sandbox_mcp_design_mansa_prometheus_mcp_tool_calling_sandbox_pool_design" }, { - "label": "Covers lines 126-128: verifyAccessToken raises Exception.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L344", - "community": 435, - "norm_label": "covers lines 126-128: verifyaccesstoken raises exception.", - "id": "tests_test_controllers_coverage_rationale_344" + "label": "1. Executive Summary", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L9", + "community": 103, + "norm_label": "1. executive summary", + "id": "specs_2026_06_22_sandbox_mcp_design_1_executive_summary" }, { - "label": "Covers lines 109-113: no token provided at all.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L356", - "community": 436, - "norm_label": "covers lines 109-113: no token provided at all.", - "id": "tests_test_controllers_coverage_rationale_356" + "label": "2. Context & Motivation", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L17", + "community": 103, + "norm_label": "2. context & motivation", + "id": "specs_2026_06_22_sandbox_mcp_design_2_context_motivation" }, { - "label": "Covers line 120: userId or sessionId missing from payload.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L367", - "community": 437, - "norm_label": "covers line 120: userid or sessionid missing from payload.", - "id": "tests_test_controllers_coverage_rationale_367" + "label": "3. Goals & Non-Goals", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L32", + "community": 261, + "norm_label": "3. goals & non-goals", + "id": "specs_2026_06_22_sandbox_mcp_design_3_goals_non_goals" }, { - "label": "Covers lines 139, 141-149: googleLogin endpoint.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L379", - "community": 498, - "norm_label": "covers lines 139, 141-149: googlelogin endpoint.", - "id": "tests_test_controllers_coverage_rationale_379" + "label": "Goals", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L34", + "community": 261, + "norm_label": "goals", + "id": "specs_2026_06_22_sandbox_mcp_design_goals" }, { - "label": "Covers lines 139, 141-149: Google login with redirect_url query param.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L383", - "community": 438, - "norm_label": "covers lines 139, 141-149: google login with redirect_url query param.", - "id": "tests_test_controllers_coverage_rationale_383" + "label": "Non-Goals (YAGNI)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L42", + "community": 261, + "norm_label": "non-goals (yagni)", + "id": "specs_2026_06_22_sandbox_mcp_design_non_goals_yagni" }, { - "label": "Covers line 143: redirect_url falls back to referer header.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L403", - "community": 439, - "norm_label": "covers line 143: redirect_url falls back to referer header.", - "id": "tests_test_controllers_coverage_rationale_403" + "label": "4. Background Research", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L53", + "community": 209, + "norm_label": "4. background research", + "id": "specs_2026_06_22_sandbox_mcp_design_4_background_research" }, { - "label": "Covers lines 155-156, 158, 160-168, 170-177, 179-184, 186, 190-204: googleCallba", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L425", - "community": 498, - "norm_label": "covers lines 155-156, 158, 160-168, 170-177, 179-184, 186, 190-204: googlecallba", - "id": "tests_test_controllers_coverage_rationale_425" + "label": "4.1 Sandbox Technology Landscape", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L55", + "community": 209, + "norm_label": "4.1 sandbox technology landscape", + "id": "specs_2026_06_22_sandbox_mcp_design_4_1_sandbox_technology_landscape" }, { - "label": "Covers lines 160-168, 170-177, 179-184, 186, 197-198: new Google user.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L443", - "community": 440, - "norm_label": "covers lines 160-168, 170-177, 179-184, 186, 197-198: new google user.", - "id": "tests_test_controllers_coverage_rationale_443" + "label": "4.2 Instant Startup Patterns", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L66", + "community": 209, + "norm_label": "4.2 instant startup patterns", + "id": "specs_2026_06_22_sandbox_mcp_design_4_2_instant_startup_patterns" }, { - "label": "Covers line 165: verify_and_process returns None.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L504", - "community": 441, - "norm_label": "covers line 165: verify_and_process returns none.", - "id": "tests_test_controllers_coverage_rationale_504" + "label": "4.3 Cost & Scaling Math", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L79", + "community": 209, + "norm_label": "4.3 cost & scaling math", + "id": "specs_2026_06_22_sandbox_mcp_design_4_3_cost_scaling_math" }, { - "label": "Covers lines 190-195: state param triggers RedirectResponse.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L521", - "community": 442, - "norm_label": "covers lines 190-195: state param triggers redirectresponse.", - "id": "tests_test_controllers_coverage_rationale_521" + "label": "4.4 Anthropic Containment Patterns", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L92", + "community": 209, + "norm_label": "4.4 anthropic containment patterns", + "id": "specs_2026_06_22_sandbox_mcp_design_4_4_anthropic_containment_patterns" }, { - "label": "Covers line 19: GET /user/health.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L567", - "community": 498, - "norm_label": "covers line 19: get /user/health.", - "id": "tests_test_controllers_coverage_rationale_567" + "label": "4.5 Hybrid Library Policy", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L104", + "community": 209, + "norm_label": "4.5 hybrid library policy", + "id": "specs_2026_06_22_sandbox_mcp_design_4_5_hybrid_library_policy" }, { - "label": "Covers line 24: GET /user/me returns currentUser.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L581", - "community": 47, - "norm_label": "covers line 24: get /user/me returns currentuser.", - "id": "tests_test_controllers_coverage_rationale_581" + "label": "5. Architecture Decision", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L110", + "community": 103, + "norm_label": "5. architecture decision", + "id": "specs_2026_06_22_sandbox_mcp_design_5_architecture_decision" }, { - "label": "Covers lines 31-32, 36, 43-44, 48: upgrade developer starter/enterprise.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L595", - "community": 47, - "norm_label": "covers lines 31-32, 36, 43-44, 48: upgrade developer starter/enterprise.", - "id": "tests_test_controllers_coverage_rationale_595" + "label": "6. Component Design", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L122", + "community": 117, + "norm_label": "6. component design", + "id": "specs_2026_06_22_sandbox_mcp_design_6_component_design" }, { - "label": "Covers lines 53-54, 56: admin access granted / denied.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L635", - "community": 47, - "norm_label": "covers lines 53-54, 56: admin access granted / denied.", - "id": "tests_test_controllers_coverage_rationale_635" + "label": "6.1 NEW: `sandbox-pool` Compose service", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L124", + "community": 117, + "norm_label": "6.1 new: `sandbox-pool` compose service", + "id": "specs_2026_06_22_sandbox_mcp_design_6_1_new_sandbox_pool_compose_service" }, { - "label": "Covers lines 66, 68-72, 74: GET /user/sessions.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L654", - "community": 178, - "norm_label": "covers lines 66, 68-72, 74: get /user/sessions.", - "id": "tests_test_controllers_coverage_rationale_654" + "label": "6.2 NEW: Sandbox executor image", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L131", + "community": 117, + "norm_label": "6.2 new: sandbox executor image", + "id": "specs_2026_06_22_sandbox_mcp_design_6_2_new_sandbox_executor_image" }, { - "label": "Covers lines 66, 68-72, 74: full sessions listing.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L657", - "community": 178, - "norm_label": "covers lines 66, 68-72, 74: full sessions listing.", - "id": "tests_test_controllers_coverage_rationale_657" + "label": "6.3 NEW: `SandboxPoolSettings` in `config.py`", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L137", + "community": 117, + "norm_label": "6.3 new: `sandboxpoolsettings` in `config.py`", + "id": "specs_2026_06_22_sandbox_mcp_design_6_3_new_sandboxpoolsettings_in_config_py" }, { - "label": "Covers lines 100-104, 106: GET /user/sessions/current.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L708", - "community": 107, - "norm_label": "covers lines 100-104, 106: get /user/sessions/current.", - "id": "tests_test_controllers_coverage_rationale_708" + "label": "code:python (class SandboxPoolSettings(BaseMansaSettings):)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L139", + "community": 117, + "norm_label": "code:python (class sandboxpoolsettings(basemansasettings):)", + "id": "specs_2026_06_22_sandbox_mcp_design_codeblock_1" }, { - "label": "Covers lines 100-104, 106: session found.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L711", - "community": 107, - "norm_label": "covers lines 100-104, 106: session found.", - "id": "tests_test_controllers_coverage_rationale_711" + "label": "6.4 NEW: `sandbox_client.py` in `main/app/prometheus/`", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L155", + "community": 117, + "norm_label": "6.4 new: `sandbox_client.py` in `main/app/prometheus/`", + "id": "specs_2026_06_22_sandbox_mcp_design_6_4_new_sandbox_client_py_in_main_app_prometheus" }, { - "label": "Covers line 104: session not found.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L744", - "community": 107, - "norm_label": "covers line 104: session not found.", - "id": "tests_test_controllers_coverage_rationale_744" + "label": "code:python (class SandboxClient:)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L158", + "community": 117, + "norm_label": "code:python (class sandboxclient:)", + "id": "specs_2026_06_22_sandbox_mcp_design_codeblock_2" }, { - "label": "Covers lines 126-136: DELETE /user/sessions/{sessionId}.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L767", - "community": 104, - "norm_label": "covers lines 126-136: delete /user/sessions/{sessionid}.", - "id": "tests_test_controllers_coverage_rationale_767" + "label": "6.5 MODIFIED: `main/service/stocksapi_service.py` (add fastapi-mcp)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L173", + "community": 117, + "norm_label": "6.5 modified: `main/service/stocksapi_service.py` (add fastapi-mcp)", + "id": "specs_2026_06_22_sandbox_mcp_design_6_5_modified_main_service_stocksapi_service_py_add_fastapi_mcp" }, { - "label": "Covers lines 126, 131, 135-136.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L770", - "community": 104, - "norm_label": "covers lines 126, 131, 135-136.", - "id": "tests_test_controllers_coverage_rationale_770" + "label": "code:python (from fastapi_mcp import FastApiMCP)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L175", + "community": 117, + "norm_label": "code:python (from fastapi_mcp import fastapimcp)", + "id": "specs_2026_06_22_sandbox_mcp_design_codeblock_3" }, { - "label": "Covers lines 127-129: session not found.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L797", - "community": 104, - "norm_label": "covers lines 127-129: session not found.", - "id": "tests_test_controllers_coverage_rationale_797" + "label": "6.6 MODIFIED: `main/app/prometheus/generation.py` (the big refactor)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L183", + "community": 117, + "norm_label": "6.6 modified: `main/app/prometheus/generation.py` (the big refactor)", + "id": "specs_2026_06_22_sandbox_mcp_design_6_6_modified_main_app_prometheus_generation_py_the_big_refactor" }, { - "label": "Covers lines 132-133: revokeSession returns False.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L819", - "community": 104, - "norm_label": "covers lines 132-133: revokesession returns false.", - "id": "tests_test_controllers_coverage_rationale_819" + "label": "6.7 MODIFIED: `docker-compose.yml`", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L194", + "community": 117, + "norm_label": "6.7 modified: `docker-compose.yml`", + "id": "specs_2026_06_22_sandbox_mcp_design_6_7_modified_docker_compose_yml" }, { - "label": "Covers lines 143, 145, 147-148: POST /user/sessions/revoke-all.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L845", - "community": 221, - "norm_label": "covers lines 143, 145, 147-148: post /user/sessions/revoke-all.", - "id": "tests_test_controllers_coverage_rationale_845" + "label": "code:yaml (services:)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L195", + "community": 117, + "norm_label": "code:yaml (services:)", + "id": "specs_2026_06_22_sandbox_mcp_design_codeblock_4" }, { - "label": "Covers lines 143, 145, 147-148.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L848", - "community": 221, - "norm_label": "covers lines 143, 145, 147-148.", - "id": "tests_test_controllers_coverage_rationale_848" + "label": "6.8 MODIFIED: `requirements.txt`", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L215", + "community": 117, + "norm_label": "6.8 modified: `requirements.txt`", + "id": "specs_2026_06_22_sandbox_mcp_design_6_8_modified_requirements_txt" }, { - "label": "Covers line 24: GET /prometheus/health.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L875", - "community": 498, - "norm_label": "covers line 24: get /prometheus/health.", - "id": "tests_test_controllers_coverage_rationale_875" + "label": "7. Data Flow \u2014 One Real Query", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L220", + "community": 103, + "norm_label": "7. data flow \u2014 one real query", + "id": "specs_2026_06_22_sandbox_mcp_design_7_data_flow_one_real_query" }, { - "label": "Covers lines 33-36: GET /prometheus/sessions.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L889", - "community": 16, - "norm_label": "covers lines 33-36: get /prometheus/sessions.", - "id": "tests_test_controllers_coverage_rationale_889" + "label": "code:block5 (User: \"Show me the correlation between PETR4 and the oil sec)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L222", + "community": 103, + "norm_label": "code:block5 (user: \"show me the correlation between petr4 and the oil sec)", + "id": "specs_2026_06_22_sandbox_mcp_design_codeblock_5" }, { - "label": "Covers line 52: POST /prometheus/sessions.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L907", - "community": 16, - "norm_label": "covers line 52: post /prometheus/sessions.", - "id": "tests_test_controllers_coverage_rationale_907" + "label": "8. Build Sequence (4 phases, each independently shippable)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L244", + "community": 233, + "norm_label": "8. build sequence (4 phases, each independently shippable)", + "id": "specs_2026_06_22_sandbox_mcp_design_8_build_sequence_4_phases_each_independently_shippable" }, { - "label": "Covers lines 62-63, 65-68: PUT /prometheus/sessions/{sessionId}.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L921", - "community": 99, - "norm_label": "covers lines 62-63, 65-68: put /prometheus/sessions/{sessionid}.", - "id": "tests_test_controllers_coverage_rationale_921" + "label": "Phase 0 \u2014 Sandbox foundation (1-2 days, no user-facing change)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L246", + "community": 233, + "norm_label": "phase 0 \u2014 sandbox foundation (1-2 days, no user-facing change)", + "id": "specs_2026_06_22_sandbox_mcp_design_phase_0_sandbox_foundation_1_2_days_no_user_facing_change" }, { - "label": "Covers lines 65-68: title updated successfully.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L924", - "community": 99, - "norm_label": "covers lines 65-68: title updated successfully.", - "id": "tests_test_controllers_coverage_rationale_924" + "label": "Phase 1 \u2014 MCP exposure of STOCKS_API (1 day)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L258", + "community": 233, + "norm_label": "phase 1 \u2014 mcp exposure of stocks_api (1 day)", + "id": "specs_2026_06_22_sandbox_mcp_design_phase_1_mcp_exposure_of_stocks_api_1_day" }, { - "label": "Covers lines 62-63: not the session owner.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L935", - "community": 99, - "norm_label": "covers lines 62-63: not the session owner.", - "id": "tests_test_controllers_coverage_rationale_935" + "label": "Phase 2 \u2014 Refactor PROMETHEUS to agentic (3-5 days, the big one)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L264", + "community": 233, + "norm_label": "phase 2 \u2014 refactor prometheus to agentic (3-5 days, the big one)", + "id": "specs_2026_06_22_sandbox_mcp_design_phase_2_refactor_prometheus_to_agentic_3_5_days_the_big_one" }, { - "label": "Covers lines 66-67: session not found.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L944", - "community": 99, - "norm_label": "covers lines 66-67: session not found.", - "id": "tests_test_controllers_coverage_rationale_944" + "label": "Phase 3 \u2014 Hardening (1-2 days, can ship incrementally)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L276", + "community": 233, + "norm_label": "phase 3 \u2014 hardening (1-2 days, can ship incrementally)", + "id": "specs_2026_06_22_sandbox_mcp_design_phase_3_hardening_1_2_days_can_ship_incrementally" }, { - "label": "Covers lines 77, 83-84, 86: GET /prometheus/history/{sessionId}.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L955", - "community": 136, - "norm_label": "covers lines 77, 83-84, 86: get /prometheus/history/{sessionid}.", - "id": "tests_test_controllers_coverage_rationale_955" + "label": "9. Security", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L285", + "community": 103, + "norm_label": "9. security", + "id": "specs_2026_06_22_sandbox_mcp_design_9_security" }, { - "label": "Covers lines 77, 86: session found with history.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L958", - "community": 136, - "norm_label": "covers lines 77, 86: session found with history.", - "id": "tests_test_controllers_coverage_rationale_958" + "label": "10. Performance", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L308", + "community": 103, + "norm_label": "10. performance", + "id": "specs_2026_06_22_sandbox_mcp_design_10_performance" }, { - "label": "Covers lines 83-84: session not found.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1002", - "community": 136, - "norm_label": "covers lines 83-84: session not found.", - "id": "tests_test_controllers_coverage_rationale_1002" + "label": "11. Testing", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L324", + "community": 103, + "norm_label": "11. testing", + "id": "specs_2026_06_22_sandbox_mcp_design_11_testing" }, { - "label": "Covers lines 95-98: DELETE /prometheus/sessions/{sessionId}.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1037", - "community": 231, - "norm_label": "covers lines 95-98: delete /prometheus/sessions/{sessionid}.", - "id": "tests_test_controllers_coverage_rationale_1037" + "label": "12. Risks", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L337", + "community": 103, + "norm_label": "12. risks", + "id": "specs_2026_06_22_sandbox_mcp_design_12_risks" }, { - "label": "Covers lines 95-98: session deleted.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1040", - "community": 231, - "norm_label": "covers lines 95-98: session deleted.", - "id": "tests_test_controllers_coverage_rationale_1040" + "label": "13. Out of Scope (YAGNI)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L351", + "community": 103, + "norm_label": "13. out of scope (yagni)", + "id": "specs_2026_06_22_sandbox_mcp_design_13_out_of_scope_yagni" }, { - "label": "Covers lines 96-97: session not found.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1050", - "community": 231, - "norm_label": "covers lines 96-97: session not found.", - "id": "tests_test_controllers_coverage_rationale_1050" + "label": "14. Open Questions", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L364", + "community": 103, + "norm_label": "14. open questions", + "id": "specs_2026_06_22_sandbox_mcp_design_14_open_questions" }, { - "label": "Covers lines 114-115, 117-120, 122, 125: POST /prometheus/chat.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1060", - "community": 16, - "norm_label": "covers lines 114-115, 117-120, 122, 125: post /prometheus/chat.", - "id": "tests_test_controllers_coverage_rationale_1060" + "label": "Appendix A: Codebase Findings", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L374", + "community": 123, + "norm_label": "appendix a: codebase findings", + "id": "specs_2026_06_22_sandbox_mcp_design_appendix_a_codebase_findings" }, { - "label": "Covers lines 111-112: sessionId is None, new session created.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1063", - "community": 16, - "norm_label": "covers lines 111-112: sessionid is none, new session created.", - "id": "tests_test_controllers_coverage_rationale_1063" + "label": "Critical path correction", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L376", + "community": 123, + "norm_label": "critical path correction", + "id": "specs_2026_06_22_sandbox_mcp_design_critical_path_correction" }, { - "label": "Covers lines 114-115, 117-120, 122: existing session with verified ownership.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1081", - "community": 16, - "norm_label": "covers lines 114-115, 117-120, 122: existing session with verified ownership.", - "id": "tests_test_controllers_coverage_rationale_1081" + "label": "Project structure (key files only)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L380", + "community": 123, + "norm_label": "project structure (key files only)", + "id": "specs_2026_06_22_sandbox_mcp_design_project_structure_key_files_only" }, { - "label": "Covers lines 114-115: session ownership check fails.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1123", - "community": 104, - "norm_label": "covers lines 114-115: session ownership check fails.", - "id": "tests_test_controllers_coverage_rationale_1123" + "label": "code:block6 (D:\\Repositories\\server\\)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L381", + "community": 123, + "norm_label": "code:block6 (d:\\repositories\\server\\)", + "id": "specs_2026_06_22_sandbox_mcp_design_codeblock_6" }, { - "label": "Covers line 125, 126-128: generic Exception in chat.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1160", - "community": 16, - "norm_label": "covers line 125, 126-128: generic exception in chat.", - "id": "tests_test_controllers_coverage_rationale_1160" + "label": "STOCKS_API \u2014 endpoints (MCP candidates)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L413", + "community": 123, + "norm_label": "stocks_api \u2014 endpoints (mcp candidates)", + "id": "specs_2026_06_22_sandbox_mcp_design_stocks_api_endpoints_mcp_candidates" }, { - "label": "Covers line 18: GET /stocks/health.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1181", - "community": 498, - "norm_label": "covers line 18: get /stocks/health.", - "id": "tests_test_controllers_coverage_rationale_1181" + "label": "Prometheus controller \u2014 endpoints (existing)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L424", + "community": 123, + "norm_label": "prometheus controller \u2014 endpoints (existing)", + "id": "specs_2026_06_22_sandbox_mcp_design_prometheus_controller_endpoints_existing" }, { - "label": "Covers line 23: valid API key returns secured=True.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1198", - "community": 14, - "norm_label": "covers line 23: valid api key returns secured=true.", - "id": "tests_test_controllers_coverage_rationale_1198" + "label": "The 4-stage pipeline (current `generation.py`)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L436", + "community": 123, + "norm_label": "the 4-stage pipeline (current `generation.py`)", + "id": "specs_2026_06_22_sandbox_mcp_design_the_4_stage_pipeline_current_generation_py" }, { - "label": "Covers line 35: GET /stocks/historical.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1206", - "community": 14, - "norm_label": "covers line 35: get /stocks/historical.", - "id": "tests_test_controllers_coverage_rationale_1206" + "label": "Key config patterns", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L448", + "community": 123, + "norm_label": "key config patterns", + "id": "specs_2026_06_22_sandbox_mcp_design_key_config_patterns" }, { - "label": "Covers line 47: GET /stocks/fundamental.", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1220", - "community": 14, - "norm_label": "covers line 47: get /stocks/fundamental.", - "id": "tests_test_controllers_coverage_rationale_1220" + "label": "Two MySQL engines", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L454", + "community": 123, + "norm_label": "two mysql engines", + "id": "specs_2026_06_22_sandbox_mcp_design_two_mysql_engines" }, { - "label": "Covers lines 52-53, 57-63: GET /stocks/key/generate. NOTE: stocksapi_cont", - "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1234", - "community": 14, - "norm_label": "covers lines 52-53, 57-63: get /stocks/key/generate. note: stocksapi_cont", - "id": "tests_test_controllers_coverage_rationale_1234" + "label": "code:python (engine = create_engine(...) # user_db (mansa_db))", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L456", + "community": 123, + "norm_label": "code:python (engine = create_engine(...) # user_db (mansa_db))", + "id": "specs_2026_06_22_sandbox_mcp_design_codeblock_7" }, { - "label": "Covers lines 52-53: user without GENERATE_API_KEYS permission gets 403.", + "label": "Port collision in current setup", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L466", + "community": 123, + "norm_label": "port collision in current setup", + "id": "specs_2026_06_22_sandbox_mcp_design_port_collision_in_current_setup" + }, + { + "label": "Existing dependencies (from `requirements.txt`)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L470", + "community": 123, + "norm_label": "existing dependencies (from `requirements.txt`)", + "id": "specs_2026_06_22_sandbox_mcp_design_existing_dependencies_from_requirements_txt" + }, + { + "label": "Appendix B: Research References", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L479", + "community": 103, + "norm_label": "appendix b: research references", + "id": "specs_2026_06_22_sandbox_mcp_design_appendix_b_research_references" + }, + { + "label": "Status", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-06-22-sandbox-mcp-design.md", + "source_location": "L489", + "community": 103, + "norm_label": "status", + "id": "specs_2026_06_22_sandbox_mcp_design_status" + }, + { + "label": "filterCotationData()", + "file_type": "code", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L49", + "community": 517, + "norm_label": "filtercotationdata()", + "id": "stocks_api_query_filtercotationdata" + }, + { + "label": "Tests for queryCotations and /stocks/cotations.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1242", - "community": 14, - "norm_label": "covers lines 52-53: user without generate_api_keys permission gets 403.", - "id": "tests_test_controllers_coverage_rationale_1242" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1014", + "community": 10, + "norm_label": "tests for querycotations and /stocks/cotations.", + "id": "tests_test_stocks_api_coverage_rationale_1014" }, { - "label": "Covers lines 61-63: exception during key generation (admin path).", + "label": "2 tickers x 2 rows. Rows 0,2 are 2024-01-15; rows 1,3 are 2024-06-15. M", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1262", - "community": 14, - "norm_label": "covers lines 61-63: exception during key generation (admin path).", - "id": "tests_test_controllers_coverage_rationale_1262" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1026", + "community": 10, + "norm_label": "2 tickers x 2 rows. rows 0,2 are 2024-01-15; rows 1,3 are 2024-06-15. m", + "id": "tests_test_stocks_api_coverage_rationale_1026" }, { - "label": "Covers lines 17, 22-27: user found, role not present, role added.", + "label": "dates=\"2016-12-02\" should keep only the 02-12-2016 entry in each JSON list.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1280", - "community": 560, - "norm_label": "covers lines 17, 22-27: user found, role not present, role added.", - "id": "tests_test_controllers_coverage_rationale_1280" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1084", + "community": 10, + "norm_label": "dates=\"2016-12-02\" should keep only the 02-12-2016 entry in each json list.", + "id": "tests_test_stocks_api_coverage_rationale_1084" }, { - "label": "Covers lines 19-20: user not found raises 404.", + "label": "Hit the actual /stocks/cotations HTTP endpoint with adjusted=false.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1312", - "community": 528, - "norm_label": "covers lines 19-20: user not found raises 404.", - "id": "tests_test_controllers_coverage_rationale_1312" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1170", + "community": 10, + "norm_label": "hit the actual /stocks/cotations http endpoint with adjusted=false.", + "id": "tests_test_stocks_api_coverage_rationale_1170" }, { - "label": "Covers lines 42-44: session validation fails.", + "label": "Tests for queryCotations and /stocks/cotations.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1356", - "community": 560, - "norm_label": "covers lines 42-44: session validation fails.", - "id": "tests_test_controllers_coverage_rationale_1356" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L985", + "community": 10, + "norm_label": "tests for querycotations and /stocks/cotations.", + "id": "tests_test_stocks_api_coverage_rationale_985" }, { - "label": "Covers lines 37-38, 46, 51, 58 (sessionId is None): skips session validation.", + "label": "2 tickers x 2 rows. Rows 0,2 are 2024-01-15; rows 1,3 are 2024-06-15. M", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1406", - "community": 493, - "norm_label": "covers lines 37-38, 46, 51, 58 (sessionid is none): skips session validation.", - "id": "tests_test_controllers_coverage_rationale_1406" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L997", + "community": 10, + "norm_label": "2 tickers x 2 rows. rows 0,2 are 2024-01-15; rows 1,3 are 2024-06-15. m", + "id": "tests_test_stocks_api_coverage_rationale_997" }, { - "label": "Covers line 16: empty password raises ValueError.", + "label": "4 rows for 2 tickers -> 2 results, one per ticker, both with latest TIME.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1430", - "community": 524, - "norm_label": "covers line 16: empty password raises valueerror.", - "id": "tests_test_controllers_coverage_rationale_1430" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1043", + "community": 10, + "norm_label": "4 rows for 2 tickers -> 2 results, one per ticker, both with latest time.", + "id": "tests_test_stocks_api_coverage_rationale_1043" }, { - "label": "Covers lines 45-51: verifyAccessToken with expired and invalid tokens.", + "label": "dates=\"2016-12-02\" should keep only the 02-12-2016 entry in each JSON list.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1440", - "community": 524, - "norm_label": "covers lines 45-51: verifyaccesstoken with expired and invalid tokens.", - "id": "tests_test_controllers_coverage_rationale_1440" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1055", + "community": 10, + "norm_label": "dates=\"2016-12-02\" should keep only the 02-12-2016 entry in each json list.", + "id": "tests_test_stocks_api_coverage_rationale_1055" }, { - "label": "Covers lines 48-49: jwt.ExpiredSignatureError.", + "label": "Hit the actual /stocks/cotations HTTP endpoint with adjusted=false.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1443", - "community": 524, - "norm_label": "covers lines 48-49: jwt.expiredsignatureerror.", - "id": "tests_test_controllers_coverage_rationale_1443" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1141", + "community": 10, + "norm_label": "hit the actual /stocks/cotations http endpoint with adjusted=false.", + "id": "tests_test_stocks_api_coverage_rationale_1141" }, { - "label": "Covers lines 50-51: jwt.InvalidTokenError.", + "label": "_parseCotationDate()", + "file_type": "code", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L45", + "community": 517, + "norm_label": "_parsecotationdate()", + "id": "stocks_api_query_parsecotationdate" + }, + { + "label": "_filterCotationByDate()", + "file_type": "code", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L55", + "community": 517, + "norm_label": "_filtercotationbydate()", + "id": "stocks_api_query_filtercotationbydate" + }, + { + "label": ".queryRealtimeCotation()", + "file_type": "code", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L344", + "community": 63, + "norm_label": ".queryrealtimecotation()", + "id": "stocks_api_query_stocksquerymanager_queryrealtimecotation" + }, + { + "label": "Parse DD-MM-YYYY from COTACAO 10Y JSON DATA field. ponytail: stdlib datetime onl", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1459", - "community": 544, - "norm_label": "covers lines 50-51: jwt.invalidtokenerror.", - "id": "tests_test_controllers_coverage_rationale_1459" + "source_file": "main/app/stocks_api/query.py", + "source_location": "L46", + "community": 517, + "norm_label": "parse dd-mm-yyyy from cotacao 10y json data field. ponytail: stdlib datetime onl", + "id": "stocks_api_query_rationale_46" }, { - "label": "Covers line 67: extractTokenPayload re-raises HTTPException from verifyAccessTok", + "label": "Filter COTACAO 10Y JSON entries by their inner DATA field (DD-MM-YYYY).", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1471", - "community": 498, - "norm_label": "covers line 67: extracttokenpayload re-raises httpexception from verifyaccesstok", - "id": "tests_test_controllers_coverage_rationale_1471" + "source_file": "main/app/stocks_api/query.py", + "source_location": "L56", + "community": 517, + "norm_label": "filter cotacao 10y json entries by their inner data field (dd-mm-yyyy).", + "id": "stocks_api_query_rationale_56" }, { - "label": "Covers line 67: HTTPException raised by verifyAccessToken is re-raised.", + "label": "Fetch live prices for B3 tickers via yfinance. B3 tickers must match", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1474", - "community": 114, - "norm_label": "covers line 67: httpexception raised by verifyaccesstoken is re-raised.", - "id": "tests_test_controllers_coverage_rationale_1474" + "source_file": "main/app/stocks_api/query.py", + "source_location": "L345", + "community": 63, + "norm_label": "fetch live prices for b3 tickers via yfinance. b3 tickers must match", + "id": "stocks_api_query_rationale_345" }, { - "label": "Covers line 13: UserManager.__init__.", + "label": "getRealtimeCotation()", + "file_type": "code", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L63", + "community": 169, + "norm_label": "getrealtimecotation()", + "id": "controller_stocksapi_controller_getrealtimecotation" + }, + { + "label": ".test_cotations_with_limit()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1122", + "community": 10, + "norm_label": ".test_cotations_with_limit()", + "id": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_with_limit" + }, + { + "label": "Hit the actual /stocks/cotations HTTP endpoint with adjusted=false.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1490", - "community": 498, - "norm_label": "covers line 13: usermanager.__init__.", - "id": "tests_test_controllers_coverage_rationale_1490" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1148", + "community": 10, + "norm_label": "hit the actual /stocks/cotations http endpoint with adjusted=false.", + "id": "tests_test_stocks_api_coverage_rationale_1148" }, { - "label": ".test_creates_new_session()", + "label": ".__getitem__()", "file_type": "code", - "source_file": "tests/test_http_session_coverage.py", - "source_location": "L9", - "community": 186, - "norm_label": ".test_creates_new_session()", - "id": "tests_test_http_session_coverage_testgetsession_test_creates_new_session" + "source_file": "config.py", + "source_location": "L47", + "community": 102, + "norm_label": ".__getitem__()", + "id": "server_config_mysqlsettings_getitem" }, { - "label": "TestCleanup", + "label": "test_cache_load.py", "file_type": "code", - "source_file": "tests/test_http_session_coverage.py", - "source_location": "L28", - "community": 564, - "norm_label": "testcleanup", - "id": "tests_test_http_session_coverage_testcleanup" + "source_file": "test_cache_load.py", + "source_location": "L1", + "community": 427, + "norm_label": "test_cache_load.py", + "id": "test_cache_load_py" }, { - "label": ".test_cleanup_closes_session()", + "label": ".__init__()", "file_type": "code", - "source_file": "tests/test_http_session_coverage.py", - "source_location": "L29", - "community": 564, - "norm_label": ".test_cleanup_closes_session()", - "id": "tests_test_http_session_coverage_testcleanup_test_cleanup_closes_session" + "source_file": "main/app/prometheus/chat.py", + "source_location": "L14", + "community": 68, + "norm_label": ".__init__()", + "id": "prometheus_chat_prometheuschatmanager_init" }, { - "label": ".test_cleanup_no_session()", + "label": "SessionProxy", "file_type": "code", - "source_file": "tests/test_http_session_coverage.py", - "source_location": "L37", - "community": 564, - "norm_label": ".test_cleanup_no_session()", - "id": "tests_test_http_session_coverage_testcleanup_test_cleanup_no_session" + "source_file": "main/app/prometheus/generation.py", + "source_location": "L19", + "community": 29, + "norm_label": "sessionproxy", + "id": "prometheus_generation_sessionproxy" }, { - "label": ".test_cleanup_exception_during_close()", + "label": ".get()", "file_type": "code", - "source_file": "tests/test_http_session_coverage.py", - "source_location": "L46", - "community": 564, - "norm_label": ".test_cleanup_exception_during_close()", - "id": "tests_test_http_session_coverage_testcleanup_test_cleanup_exception_during_close" + "source_file": "main/app/prometheus/generation.py", + "source_location": "L20", + "community": 29, + "norm_label": ".get()", + "id": "prometheus_generation_sessionproxy_get" }, { - "label": ".test_remove_role_existing()", + "label": ".post()", "file_type": "code", - "source_file": "tests/test_models.py", - "source_location": "L50", - "community": 61, - "norm_label": ".test_remove_role_existing()", - "id": "tests_test_models_testusermodel_test_remove_role_existing" + "source_file": "main/app/prometheus/generation.py", + "source_location": "L23", + "community": 29, + "norm_label": ".post()", + "id": "prometheus_generation_sessionproxy_post" }, { - "label": ".test_remove_role_last_role()", + "label": "normalizeColumns()", "file_type": "code", - "source_file": "tests/test_models.py", - "source_location": "L57", - "community": 61, - "norm_label": ".test_remove_role_last_role()", - "id": "tests_test_models_testusermodel_test_remove_role_last_role" + "source_file": "main/app/stocks_api/util.py", + "source_location": "L27", + "community": 477, + "norm_label": "normalizecolumns()", + "id": "stocks_api_util_normalizecolumns" }, { - "label": "TestPaginationParams", + "label": "_verify_session_ownership()", "file_type": "code", - "source_file": "tests/test_pagination.py", - "source_location": "L37", - "community": 482, - "norm_label": "testpaginationparams", - "id": "tests_test_pagination_testpaginationparams" + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L22", + "community": 84, + "norm_label": "_verify_session_ownership()", + "id": "controller_prometheus_controller_verify_session_ownership" }, { - "label": ".test_defaults()", + "label": "Verify the user owns the session, raise 403 otherwise.", + "file_type": "rationale", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L23", + "community": 84, + "norm_label": "verify the user owns the session, raise 403 otherwise.", + "id": "controller_prometheus_controller_rationale_23" + }, + { + "label": "apiKeyTest()", "file_type": "code", - "source_file": "tests/test_pagination.py", - "source_location": "L38", - "community": 482, - "norm_label": ".test_defaults()", - "id": "tests_test_pagination_testpaginationparams_test_defaults" + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L23", + "community": 169, + "norm_label": "apikeytest()", + "id": "controller_stocksapi_controller_apikeytest" }, { - "label": ".test_custom_limit()", + "label": ".__repr__()", "file_type": "code", - "source_file": "tests/test_pagination.py", - "source_location": "L46", - "community": 482, - "norm_label": ".test_custom_limit()", - "id": "tests_test_pagination_testpaginationparams_test_custom_limit" + "source_file": "main/models/stocksapi_key.py", + "source_location": "L21", + "community": 37, + "norm_label": ".__repr__()", + "id": "models_stocksapi_key_stocksapikey_repr" }, { - "label": ".test_custom_offset()", + "label": ".__repr__()", "file_type": "code", - "source_file": "tests/test_pagination.py", - "source_location": "L52", - "community": 482, - "norm_label": ".test_custom_offset()", - "id": "tests_test_pagination_testpaginationparams_test_custom_offset" + "source_file": "main/models/user.py", + "source_location": "L20", + "community": 61, + "norm_label": ".__repr__()", + "id": "models_user_user_repr" }, { - "label": ".test_limit_and_offset()", + "label": ".removeRole()", "file_type": "code", - "source_file": "tests/test_pagination.py", - "source_location": "L59", - "community": 482, - "norm_label": ".test_limit_and_offset()", - "id": "tests_test_pagination_testpaginationparams_test_limit_and_offset" + "source_file": "main/models/user.py", + "source_location": "L36", + "community": 61, + "norm_label": ".removerole()", + "id": "models_user_user_removerole" }, { - "label": ".test_limit_exceeds_max_rejected()", + "label": ".__repr__()", "file_type": "code", - "source_file": "tests/test_pagination.py", - "source_location": "L67", - "community": 482, - "norm_label": ".test_limit_exceeds_max_rejected()", - "id": "tests_test_pagination_testpaginationparams_test_limit_exceeds_max_rejected" + "source_file": "main/models/user_session.py", + "source_location": "L23", + "community": 44, + "norm_label": ".__repr__()", + "id": "models_user_session_usersession_repr" }, { - "label": ".test_limit_zero_rejected()", + "label": ".toDict()", "file_type": "code", - "source_file": "tests/test_pagination.py", - "source_location": "L71", - "community": 482, - "norm_label": ".test_limit_zero_rejected()", - "id": "tests_test_pagination_testpaginationparams_test_limit_zero_rejected" + "source_file": "main/models/user_session.py", + "source_location": "L26", + "community": 44, + "norm_label": ".todict()", + "id": "models_user_session_usersession_todict" }, { - "label": ".test_negative_offset_rejected()", + "label": "cleanup()", "file_type": "code", - "source_file": "tests/test_pagination.py", - "source_location": "L75", - "community": 482, - "norm_label": ".test_negative_offset_rejected()", - "id": "tests_test_pagination_testpaginationparams_test_negative_offset_rejected" + "source_file": "main/utils/http_session.py", + "source_location": "L18", + "community": 512, + "norm_label": "cleanup()", + "id": "utils_http_session_cleanup" }, { - "label": ".test_offset_beyond_total()", + "label": "pagination.py", "file_type": "code", - "source_file": "tests/test_pagination.py", - "source_location": "L79", + "source_file": "main/utils/pagination.py", + "source_location": "L1", "community": 482, - "norm_label": ".test_offset_beyond_total()", - "id": "tests_test_pagination_testpaginationparams_test_offset_beyond_total" + "norm_label": "pagination.py", + "id": "main_utils_pagination_py" }, { - "label": ".test_limit_equals_max()", + "label": "PaginationParams", "file_type": "code", - "source_file": "tests/test_pagination.py", - "source_location": "L84", + "source_file": "main/utils/pagination.py", + "source_location": "L4", "community": 482, - "norm_label": ".test_limit_equals_max()", - "id": "tests_test_pagination_testpaginationparams_test_limit_equals_max" + "norm_label": "paginationparams", + "id": "utils_pagination_paginationparams" }, { - "label": "Cover __init__ and updateDates (lines 22-37).", - "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L28", - "community": 68, - "norm_label": "cover __init__ and updatedates (lines 22-37).", - "id": "tests_test_prometheus_auth_coverage_rationale_28" + "label": ".__init__()", + "file_type": "code", + "source_file": "main/utils/pagination.py", + "source_location": "L5", + "community": 482, + "norm_label": ".__init__()", + "id": "utils_pagination_paginationparams_init" }, { - "label": "Cover executeWorkflow (lines 39-363).", + "label": "Set required env vars before test collection. config.py eagerly instantia", "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L59", - "community": 68, - "norm_label": "cover executeworkflow (lines 39-363).", - "id": "tests_test_prometheus_auth_coverage_rationale_59" + "source_file": "tests/conftest.py", + "source_location": "L9", + "community": 251, + "norm_label": "set required env vars before test collection. config.py eagerly instantia", + "id": "tests_conftest_rationale_9" }, { - "label": "Stage 1 + Stage 2 + Stage 3, no history, no sessionId.", + "label": "TestClient with all routers mounted \u2014 no lifespan (no DB/service init). O", "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L74", - "community": 443, - "norm_label": "stage 1 + stage 2 + stage 3, no history, no sessionid.", - "id": "tests_test_prometheus_auth_coverage_rationale_74" + "source_file": "tests/conftest.py", + "source_location": "L75", + "community": 105, + "norm_label": "testclient with all routers mounted \u2014 no lifespan (no db/service init). o", + "id": "tests_conftest_rationale_75" }, { - "label": "Test history formatting (lines 48-49, 159-162).", - "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L119", - "community": 444, - "norm_label": "test history formatting (lines 48-49, 159-162).", - "id": "tests_test_prometheus_auth_coverage_rationale_119" + "label": "dbSession()", + "file_type": "code", + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L20", + "community": 26, + "norm_label": "dbsession()", + "id": "tests_test_api_key_quota_atomic_dbsession" }, { - "label": "Stage 0: sessionId+db summary loading (lines 55-62).", + "label": "Create an in-memory SQLite database for testing.", "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L146", - "community": 445, - "norm_label": "stage 0: sessionid+db summary loading (lines 55-62).", - "id": "tests_test_prometheus_auth_coverage_rationale_146" + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L21", + "community": 26, + "norm_label": "create an in-memory sqlite database for testing.", + "id": "tests_test_api_key_quota_atomic_rationale_21" }, { - "label": "Stage 0: exception loading session (line 62).", + "label": "Sample API key data for tests.", "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L177", - "community": 446, - "norm_label": "stage 0: exception loading session (line 62).", - "id": "tests_test_prometheus_auth_coverage_rationale_177" + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L34", + "community": 26, + "norm_label": "sample api key data for tests.", + "id": "tests_test_api_key_quota_atomic_rationale_34" }, { - "label": "Global request resolution with KEY_SYSTEM=True (lines 180-209).", + "label": "Test that atomic increment prevents race conditions.", "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L204", - "community": 447, - "norm_label": "global request resolution with key_system=true (lines 180-209).", - "id": "tests_test_prometheus_auth_coverage_rationale_204" + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L39", + "community": 26, + "norm_label": "test that atomic increment prevents race conditions.", + "id": "tests_test_api_key_quota_atomic_rationale_39" }, { - "label": "Global request API error (lines 208-209).", + "label": "Test that normal quota check still works with atomic increment.", "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L253", - "community": 448, - "norm_label": "global request api error (lines 208-209).", - "id": "tests_test_prometheus_auth_coverage_rationale_253" + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L42", + "community": 26, + "norm_label": "test that normal quota check still works with atomic increment.", + "id": "tests_test_api_key_quota_atomic_rationale_42" }, { - "label": "fetchStockData exception path (lines 223-225).", + "label": "Test that atomic increment prevents quota overuse.", "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L291", - "community": 449, - "norm_label": "fetchstockdata exception path (lines 223-225).", - "id": "tests_test_prometheus_auth_coverage_rationale_291" + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L68", + "community": 26, + "norm_label": "test that atomic increment prevents quota overuse.", + "id": "tests_test_api_key_quota_atomic_rationale_68" }, { - "label": "fetchStockData non-200 status (line 222).", + "label": "Test that concurrent requests are properly serialized at DB level. Th", "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L327", - "community": 450, - "norm_label": "fetchstockdata non-200 status (line 222).", - "id": "tests_test_prometheus_auth_coverage_rationale_327" + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L104", + "community": 26, + "norm_label": "test that concurrent requests are properly serialized at db level. th", + "id": "tests_test_api_key_quota_atomic_rationale_104" }, { - "label": "Stage 4: summary update when len(history) % 10 == 0 (lines 325-363).", + "label": "Test edge case: request exactly at quota limit.", "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L366", - "community": 451, - "norm_label": "stage 4: summary update when len(history) % 10 == 0 (lines 325-363).", - "id": "tests_test_prometheus_auth_coverage_rationale_366" + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L143", + "community": 26, + "norm_label": "test edge case: request exactly at quota limit.", + "id": "tests_test_api_key_quota_atomic_rationale_143" }, { - "label": "Cover all methods in chat.py (lines 11-120).", + "label": "Test that invalid API key returns zero rows affected.", "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L441", - "community": 52, - "norm_label": "cover all methods in chat.py (lines 11-120).", - "id": "tests_test_prometheus_auth_coverage_rationale_441" + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L166", + "community": 26, + "norm_label": "test that invalid api key returns zero rows affected.", + "id": "tests_test_api_key_quota_atomic_rationale_166" }, { - "label": "Cover all methods in authentication.py (lines 13-75).", + "label": "Test that multiple API keys have independent quotas.", "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L665", - "community": 88, - "norm_label": "cover all methods in authentication.py (lines 13-75).", - "id": "tests_test_prometheus_auth_coverage_rationale_665" + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L180", + "community": 26, + "norm_label": "test that multiple api keys have independent quotas.", + "id": "tests_test_api_key_quota_atomic_rationale_180" }, { - "label": "Cover all methods in session.py (lines 14-154).", + "label": "Test that increment works from zero usage.", "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L842", - "community": 60, - "norm_label": "cover all methods in session.py (lines 14-154).", - "id": "tests_test_prometheus_auth_coverage_rationale_842" + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L215", + "community": 26, + "norm_label": "test that increment works from zero usage.", + "id": "tests_test_api_key_quota_atomic_rationale_215" }, { - "label": "Exercises the tzinfo-is-None branch (line 144-148).", + "label": "Integration tests for the verifyAPIKey function.", "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L1077", - "community": 190, - "norm_label": "exercises the tzinfo-is-none branch (line 144-148).", - "id": "tests_test_prometheus_auth_coverage_rationale_1077" + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L236", + "community": 567, + "norm_label": "integration tests for the verifyapikey function.", + "id": "tests_test_api_key_quota_atomic_rationale_236" }, { - "label": "Exercises the expiresAt-is-None branch (line 143).", + "label": "Test API key verification with invalid key.", "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L1091", - "community": 165, - "norm_label": "exercises the expiresat-is-none branch (line 143).", - "id": "tests_test_prometheus_auth_coverage_rationale_1091" + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L269", + "community": 567, + "norm_label": "test api key verification with invalid key.", + "id": "tests_test_api_key_quota_atomic_rationale_269" }, { - "label": "Cover getGoogleSSO (lines 6-14).", + "label": "Test API key verification with missing key.", "file_type": "rationale", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L1110", - "community": 68, - "norm_label": "cover getgooglesso (lines 6-14).", - "id": "tests_test_prometheus_auth_coverage_rationale_1110" + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L280", + "community": 567, + "norm_label": "test api key verification with missing key.", + "id": "tests_test_api_key_quota_atomic_rationale_280" }, { - "label": ".test_repr()", - "file_type": "code", - "source_file": "tests/test_sessions.py", - "source_location": "L13", - "community": 44, - "norm_label": ".test_repr()", - "id": "tests_test_sessions_testusersessionmodel_test_repr" + "label": "Test that API key system can be disabled.", + "file_type": "rationale", + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L291", + "community": 567, + "norm_label": "test that api key system can be disabled.", + "id": "tests_test_api_key_quota_atomic_rationale_291" }, { - "label": ".test_toDict_basic()", + "label": "._make_register_client()", "file_type": "code", - "source_file": "tests/test_sessions.py", - "source_location": "L18", - "community": 44, - "norm_label": ".test_todict_basic()", - "id": "tests_test_sessions_testusersessionmodel_test_toDict_basic" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L150", + "community": 120, + "norm_label": "._make_register_client()", + "id": "tests_test_controllers_coverage_testregisterendpoint_make_register_client" }, { - "label": ".test_toDict_with_sensitive()", + "label": "._make_login_client()", "file_type": "code", - "source_file": "tests/test_sessions.py", - "source_location": "L35", - "community": 44, - "norm_label": ".test_todict_with_sensitive()", - "id": "tests_test_sessions_testusersessionmodel_test_toDict_with_sensitive" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L230", + "community": 120, + "norm_label": "._make_login_client()", + "id": "tests_test_controllers_coverage_testloginendpoint_make_login_client" }, { - "label": ".test_toDict_hides_userAgent()", + "label": "._make_logout_client()", "file_type": "code", - "source_file": "tests/test_sessions.py", - "source_location": "L46", - "community": 44, - "norm_label": ".test_todict_hides_useragent()", - "id": "tests_test_sessions_testusersessionmodel_test_toDict_hides_useragent" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L283", + "community": 120, + "norm_label": "._make_logout_client()", + "id": "tests_test_controllers_coverage_testlogoutendpoint_make_logout_client" }, { - "label": ".test_toDict_with_timestamps()", + "label": "._make_callback_client()", "file_type": "code", - "source_file": "tests/test_sessions.py", - "source_location": "L117", - "community": 44, - "norm_label": ".test_todict_with_timestamps()", - "id": "tests_test_sessions_testusersessionmodel_test_todict_with_timestamps" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L427", + "community": 120, + "norm_label": "._make_callback_client()", + "id": "tests_test_controllers_coverage_testgooglecallback_make_callback_client" }, { - "label": ".test_toDict_without_timestamps()", + "label": "TestStocksApiKeyTest", "file_type": "code", - "source_file": "tests/test_sessions.py", - "source_location": "L133", - "community": 44, - "norm_label": ".test_todict_without_timestamps()", - "id": "tests_test_sessions_testusersessionmodel_test_todict_without_timestamps" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1194", + "community": 45, + "norm_label": "teststocksapikeytest", + "id": "tests_test_controllers_coverage_teststocksapikeytest" }, { - "label": "TestNormalizeColumns", + "label": ".test_api_key_valid()", "file_type": "code", - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L86", - "community": 477, - "norm_label": "testnormalizecolumns", - "id": "tests_test_stocks_api_util_coverage_testnormalizecolumns" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1197", + "community": 14, + "norm_label": ".test_api_key_valid()", + "id": "tests_test_controllers_coverage_teststocksapikeytest_test_api_key_valid" }, { - "label": ".test_reorder_columns()", - "file_type": "code", - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L87", - "community": 477, - "norm_label": ".test_reorder_columns()", - "id": "tests_test_stocks_api_util_coverage_testnormalizecolumns_test_reorder_columns" + "label": "Return (client, app) with stocks router and mocked deps.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L80", + "community": 14, + "norm_label": "return (client, app) with stocks router and mocked deps.", + "id": "tests_test_controllers_coverage_rationale_80" }, { - "label": ".test_partial_order()", - "file_type": "code", - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L92", - "community": 477, - "norm_label": ".test_partial_order()", - "id": "tests_test_stocks_api_util_coverage_testnormalizecolumns_test_partial_order" + "label": "Covers line 23: isSecureScheme helper.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L107", + "community": 58, + "norm_label": "covers line 23: issecurescheme helper.", + "id": "tests_test_controllers_coverage_rationale_107" }, { - "label": ".test_missing_columns_ignored()", - "file_type": "code", - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L97", - "community": 477, - "norm_label": ".test_missing_columns_ignored()", - "id": "tests_test_stocks_api_util_coverage_testnormalizecolumns_test_missing_columns_ignored" + "label": "Covers line 28: GET /auth/health.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L132", + "community": 45, + "norm_label": "covers line 28: get /auth/health.", + "id": "tests_test_controllers_coverage_rationale_132" }, { - "label": ".test_empty_order()", - "file_type": "code", - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L102", - "community": 477, - "norm_label": ".test_empty_order()", - "id": "tests_test_stocks_api_util_coverage_testnormalizecolumns_test_empty_order" + "label": "Covers lines 44-54, 63, 66-71: register success, ValueError, generic Exception.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L148", + "community": 120, + "norm_label": "covers lines 44-54, 63, 66-71: register success, valueerror, generic exception.", + "id": "tests_test_controllers_coverage_rationale_148" }, { - "label": ".test_remaining_sorted()", - "file_type": "code", - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L107", - "community": 477, - "norm_label": ".test_remaining_sorted()", - "id": "tests_test_stocks_api_util_coverage_testnormalizecolumns_test_remaining_sorted" + "label": "Covers lines 44-54, 63: successful registration + auto-login.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L165", + "community": 428, + "norm_label": "covers lines 44-54, 63: successful registration + auto-login.", + "id": "tests_test_controllers_coverage_rationale_165" }, { - "label": "TestConcurrentHttpProxy", - "file_type": "code", - "source_file": "tests/test_thread_safety.py", - "source_location": "L175", - "community": 172, - "norm_label": "testconcurrenthttpproxy", - "id": "tests_test_thread_safety_testconcurrenthttpproxy" + "label": "Covers line 46: auto-login fails after registration.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L191", + "community": 429, + "norm_label": "covers line 46: auto-login fails after registration.", + "id": "tests_test_controllers_coverage_rationale_191" }, { - "label": ".test_proxy_returns_thread_local_sessions()", - "file_type": "code", - "source_file": "tests/test_thread_safety.py", - "source_location": "L178", - "community": 172, - "norm_label": ".test_proxy_returns_thread_local_sessions()", - "id": "tests_test_thread_safety_testconcurrenthttpproxy_test_proxy_returns_thread_local_sessions" + "label": "Covers lines 87-93, 102: login success and failure paths.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L228", + "community": 120, + "norm_label": "covers lines 87-93, 102: login success and failure paths.", + "id": "tests_test_controllers_coverage_rationale_228" }, { - "label": ".test_connectivity_uses_getSession()", - "file_type": "code", - "source_file": "tests/test_thread_safety.py", - "source_location": "L203", - "community": 172, - "norm_label": ".test_connectivity_uses_getsession()", - "id": "tests_test_thread_safety_testconcurrenthttpproxy_test_connectivity_uses_getsession" + "label": "Covers lines 87-93, 102: successful login.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L245", + "community": 430, + "norm_label": "covers lines 87-93, 102: successful login.", + "id": "tests_test_controllers_coverage_rationale_245" }, { - "label": "connectivity.checkServiceConnection must call getSession(), not use a global Ses", + "label": "Covers line 85: authenticateUser returns None.", "file_type": "rationale", - "source_file": "tests/test_thread_safety.py", - "source_location": "L204", - "community": 172, - "norm_label": "connectivity.checkserviceconnection must call getsession(), not use a global ses", - "id": "tests_test_thread_safety_rationale_204" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L267", + "community": 431, + "norm_label": "covers line 85: authenticateuser returns none.", + "id": "tests_test_controllers_coverage_rationale_267" }, { - "label": "Tests covering key.py lines 15-40. Uses asyncio.run() since pytest-asyncio", + "label": "Covers lines 109, 115-125: logout with X-Access-Token header.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L227", - "community": 567, - "norm_label": "tests covering key.py lines 15-40. uses asyncio.run() since pytest-asyncio", - "id": "tests_test_stocks_api_coverage_rationale_227" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L298", + "community": 432, + "norm_label": "covers lines 109, 115-125: logout with x-access-token header.", + "id": "tests_test_controllers_coverage_rationale_298" }, { - "label": "When KEY.SYSTEM is falsy, return None (line 16).", + "label": "Covers lines 111-113: token extracted from Authorization Bearer header.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L232", - "community": 452, - "norm_label": "when key.system is falsy, return none (line 16).", - "id": "tests_test_stocks_api_coverage_rationale_232" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L315", + "community": 433, + "norm_label": "covers lines 111-113: token extracted from authorization bearer header.", + "id": "tests_test_controllers_coverage_rationale_315" }, { - "label": "When key is required but not provided (line 19).", + "label": "Covers lines 122-124: sessionId is not a valid int, ValueError caught.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L243", - "community": 453, - "norm_label": "when key is required but not provided (line 19).", - "id": "tests_test_stocks_api_coverage_rationale_243" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L330", + "community": 434, + "norm_label": "covers lines 122-124: sessionid is not a valid int, valueerror caught.", + "id": "tests_test_controllers_coverage_rationale_330" }, { - "label": "When atomic UPDATE returns 0 rows and query finds no key -> 401.", + "label": "Covers lines 126-128: verifyAccessToken raises Exception.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L256", - "community": 454, - "norm_label": "when atomic update returns 0 rows and query finds no key -> 401.", - "id": "tests_test_stocks_api_coverage_rationale_256" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L344", + "community": 435, + "norm_label": "covers lines 126-128: verifyaccesstoken raises exception.", + "id": "tests_test_controllers_coverage_rationale_344" }, { - "label": "When atomic UPDATE returns 0 rows and query finds key at limit -> 429.", + "label": "Covers lines 109-113: no token provided at all.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L273", - "community": 455, - "norm_label": "when atomic update returns 0 rows and query finds key at limit -> 429.", - "id": "tests_test_stocks_api_coverage_rationale_273" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L356", + "community": 436, + "norm_label": "covers lines 109-113: no token provided at all.", + "id": "tests_test_controllers_coverage_rationale_356" }, { - "label": "Happy path: atomic UPDATE succeeds, returns key (lines 22-33).", + "label": "Covers line 120: userId or sessionId missing from payload.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L291", - "community": 456, - "norm_label": "happy path: atomic update succeeds, returns key (lines 22-33).", - "id": "tests_test_stocks_api_coverage_rationale_291" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L367", + "community": 437, + "norm_label": "covers line 120: userid or sessionid missing from payload.", + "id": "tests_test_controllers_coverage_rationale_367" }, { - "label": "HTTPException should cause rollback then re-raise (lines 35-37).", + "label": "Covers lines 139, 141-149: googleLogin endpoint.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L305", - "community": 457, - "norm_label": "httpexception should cause rollback then re-raise (lines 35-37).", - "id": "tests_test_stocks_api_coverage_rationale_305" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L379", + "community": 45, + "norm_label": "covers lines 139, 141-149: googlelogin endpoint.", + "id": "tests_test_controllers_coverage_rationale_379" }, { - "label": "Tests covering key.py line 44.", + "label": "Covers lines 139, 141-149: Google login with redirect_url query param.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L339", - "community": 141, - "norm_label": "tests covering key.py line 44.", - "id": "tests_test_stocks_api_coverage_rationale_339" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L383", + "community": 438, + "norm_label": "covers lines 139, 141-149: google login with redirect_url query param.", + "id": "tests_test_controllers_coverage_rationale_383" }, { - "label": "Tests covering key.py lines 48-66.", + "label": "Covers line 143: redirect_url falls back to referer header.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L362", - "community": 565, - "norm_label": "tests covering key.py lines 48-66.", - "id": "tests_test_stocks_api_coverage_rationale_362" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L403", + "community": 439, + "norm_label": "covers line 143: redirect_url falls back to referer header.", + "id": "tests_test_controllers_coverage_rationale_403" }, { - "label": "New key created when no existing key for user (lines 57-59).", + "label": "Covers lines 155-156, 158, 160-168, 170-177, 179-184, 186, 190-204: googleCallba", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L366", - "community": 458, - "norm_label": "new key created when no existing key for user (lines 57-59).", - "id": "tests_test_stocks_api_coverage_rationale_366" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L425", + "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" }, { - "label": "Existing key is updated (lines 54-56).", + "label": "Covers lines 160-168, 170-177, 179-184, 186, 197-198: new Google user.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L381", - "community": 459, - "norm_label": "existing key is updated (lines 54-56).", - "id": "tests_test_stocks_api_coverage_rationale_381" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L443", + "community": 440, + "norm_label": "covers lines 160-168, 170-177, 179-184, 186, 197-198: new google user.", + "id": "tests_test_controllers_coverage_rationale_443" }, { - "label": "Exception during creation triggers rollback and 500 (lines 64-66).", + "label": "Covers line 165: verify_and_process returns None.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L398", - "community": 460, - "norm_label": "exception during creation triggers rollback and 500 (lines 64-66).", - "id": "tests_test_stocks_api_coverage_rationale_398" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L504", + "community": 441, + "norm_label": "covers line 165: verify_and_process returns none.", + "id": "tests_test_controllers_coverage_rationale_504" }, { - "label": "Tests covering query.py lines 22-48.", + "label": "Covers lines 190-195: state param triggers RedirectResponse.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L416", - "community": 3, - "norm_label": "tests covering query.py lines 22-48.", - "id": "tests_test_stocks_api_coverage_rationale_416" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L521", + "community": 442, + "norm_label": "covers lines 190-195: state param triggers redirectresponse.", + "id": "tests_test_controllers_coverage_rationale_521" }, { - "label": "replaceNan handles direct float NaN values (line 34).", + "label": "Covers line 19: GET /user/health.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L494", - "community": 520, - "norm_label": "replacenan handles direct float nan values (line 34).", - "id": "tests_test_stocks_api_coverage_rationale_494" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L567", + "community": 498, + "norm_label": "covers line 19: get /user/health.", + "id": "tests_test_controllers_coverage_rationale_567" }, { - "label": "Non-JSON-dict/list string is left as-is.", + "label": "Covers line 24: GET /user/me returns currentUser.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L508", - "community": 566, - "norm_label": "non-json-dict/list string is left as-is.", - "id": "tests_test_stocks_api_coverage_rationale_508" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L581", + "community": 47, + "norm_label": "covers line 24: get /user/me returns currentuser.", + "id": "tests_test_controllers_coverage_rationale_581" }, { - "label": "pd.NA is not a string, so lambda returns it unchanged.", + "label": "Covers lines 31-32, 36, 43-44, 48: upgrade developer starter/enterprise.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L517", - "community": 520, - "norm_label": "pd.na is not a string, so lambda returns it unchanged.", - "id": "tests_test_stocks_api_coverage_rationale_517" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L595", + "community": 47, + "norm_label": "covers lines 31-32, 36, 43-44, 48: upgrade developer starter/enterprise.", + "id": "tests_test_controllers_coverage_rationale_595" }, { - "label": "Regression: is_string_dtype fails when column has strings + None (pandas 2.x).", + "label": "Covers lines 53-54, 56: admin access granted / denied.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L526", - "community": 3, - "norm_label": "regression: is_string_dtype fails when column has strings + none (pandas 2.x).", - "id": "tests_test_stocks_api_coverage_rationale_526" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L635", + "community": 47, + "norm_label": "covers lines 53-54, 56: admin access granted / denied.", + "id": "tests_test_controllers_coverage_rationale_635" }, { - "label": "All four SPECIAL_COLS should parse correctly when mixed with None.", + "label": "Covers lines 66, 68-72, 74: GET /user/sessions.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L548", - "community": 3, - "norm_label": "all four special_cols should parse correctly when mixed with none.", - "id": "tests_test_stocks_api_coverage_rationale_548" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L654", + "community": 178, + "norm_label": "covers lines 66, 68-72, 74: get /user/sessions.", + "id": "tests_test_controllers_coverage_rationale_654" }, { - "label": "Tests covering query.py lines 50-67.", + "label": "Covers lines 66, 68-72, 74: full sessions listing.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L573", - "community": 3, - "norm_label": "tests covering query.py lines 50-67.", - "id": "tests_test_stocks_api_coverage_rationale_573" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L657", + "community": 178, + "norm_label": "covers lines 66, 68-72, 74: full sessions listing.", + "id": "tests_test_controllers_coverage_rationale_657" }, { - "label": "Tests covering query.py lines 77-132.", + "label": "Covers lines 100-104, 106: GET /user/sessions/current.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L628", - "community": 112, - "norm_label": "tests covering query.py lines 77-132.", - "id": "tests_test_stocks_api_coverage_rationale_628" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L708", + "community": 107, + "norm_label": "covers lines 100-104, 106: get /user/sessions/current.", + "id": "tests_test_controllers_coverage_rationale_708" }, { - "label": "Pass field name WITHOUT year (how categorizeColumns returns them).", + "label": "Covers lines 100-104, 106: session found.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L666", - "community": 28, - "norm_label": "pass field name without year (how categorizecolumns returns them).", - "id": "tests_test_stocks_api_coverage_rationale_666" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L711", + "community": 107, + "norm_label": "covers lines 100-104, 106: session found.", + "id": "tests_test_controllers_coverage_rationale_711" }, { - "label": "No historical data columns -> inner 400 caught by outer except -> 500.", + "label": "Covers line 104: session not found.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L692", - "community": 28, - "norm_label": "no historical data columns -> inner 400 caught by outer except -> 500.", - "id": "tests_test_stocks_api_coverage_rationale_692" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L744", + "community": 107, + "norm_label": "covers line 104: session not found.", + "id": "tests_test_controllers_coverage_rationale_744" }, { - "label": "If an unexpected exception occurs in queryHistorical.", + "label": "Covers lines 126-136: DELETE /user/sessions/{sessionId}.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L717", - "community": 28, - "norm_label": "if an unexpected exception occurs in queryhistorical.", - "id": "tests_test_stocks_api_coverage_rationale_717" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L767", + "community": 104, + "norm_label": "covers lines 126-136: delete /user/sessions/{sessionid}.", + "id": "tests_test_controllers_coverage_rationale_767" }, { - "label": "Invalid date format raises exception (line 132).", + "label": "Covers lines 126, 131, 135-136.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L735", - "community": 543, - "norm_label": "invalid date format raises exception (line 132).", - "id": "tests_test_stocks_api_coverage_rationale_735" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L770", + "community": 104, + "norm_label": "covers lines 126, 131, 135-136.", + "id": "tests_test_controllers_coverage_rationale_770" }, { - "label": "No historical columns at all -> inner 400 caught by outer except -> 500.", + "label": "Covers lines 127-129: session not found.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L751", - "community": 127, - "norm_label": "no historical columns at all -> inner 400 caught by outer except -> 500.", - "id": "tests_test_stocks_api_coverage_rationale_751" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L797", + "community": 104, + "norm_label": "covers lines 127-129: session not found.", + "id": "tests_test_controllers_coverage_rationale_797" }, { - "label": "Historical query with a year range.", + "label": "Covers lines 132-133: revokeSession returns False.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L761", - "community": 562, - "norm_label": "historical query with a year range.", - "id": "tests_test_stocks_api_coverage_rationale_761" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L819", + "community": 104, + "norm_label": "covers lines 132-133: revokesession returns false.", + "id": "tests_test_controllers_coverage_rationale_819" }, { - "label": "Multiple search terms, all found in tickerIndex.", + "label": "Covers lines 143, 145, 147-148: POST /user/sessions/revoke-all.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L768", - "community": 28, - "norm_label": "multiple search terms, all found in tickerindex.", - "id": "tests_test_stocks_api_coverage_rationale_768" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L845", + "community": 221, + "norm_label": "covers lines 143, 145, 147-148: post /user/sessions/revoke-all.", + "id": "tests_test_controllers_coverage_rationale_845" }, { - "label": "Invalid date -> inner 400 caught by outer except -> 500.", + "label": "Covers lines 143, 145, 147-148.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L831", - "community": 497, - "norm_label": "invalid date -> inner 400 caught by outer except -> 500.", - "id": "tests_test_stocks_api_coverage_rationale_831" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L848", + "community": 221, + "norm_label": "covers lines 143, 145, 147-148.", + "id": "tests_test_controllers_coverage_rationale_848" }, { - "label": "search.strip() == '' should still dedup (line 181).", + "label": "Covers line 24: GET /prometheus/health.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L884", - "community": 17, - "norm_label": "search.strip() == '' should still dedup (line 181).", - "id": "tests_test_stocks_api_coverage_rationale_884" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L875", + "community": 498, + "norm_label": "covers line 24: get /prometheus/health.", + "id": "tests_test_controllers_coverage_rationale_875" }, { - "label": "DataFrame without TIME column.", + "label": "Covers lines 33-36: GET /prometheus/sessions.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L893", - "community": 17, - "norm_label": "dataframe without time column.", - "id": "tests_test_stocks_api_coverage_rationale_893" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L889", + "community": 99, + "norm_label": "covers lines 33-36: get /prometheus/sessions.", + "id": "tests_test_controllers_coverage_rationale_889" }, { - "label": "Two dates in the range, both valid.", + "label": "Covers line 52: POST /prometheus/sessions.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L906", - "community": 39, - "norm_label": "two dates in the range, both valid.", - "id": "tests_test_stocks_api_coverage_rationale_906" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L907", + "community": 99, + "norm_label": "covers line 52: post /prometheus/sessions.", + "id": "tests_test_controllers_coverage_rationale_907" }, { - "label": "Single invalid date -> inner 400 caught by outer except -> 500.", + "label": "Covers lines 62-63, 65-68: PUT /prometheus/sessions/{sessionId}.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L920", - "community": 46, - "norm_label": "single invalid date -> inner 400 caught by outer except -> 500.", - "id": "tests_test_stocks_api_coverage_rationale_920" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L921", + "community": 99, + "norm_label": "covers lines 62-63, 65-68: put /prometheus/sessions/{sessionid}.", + "id": "tests_test_controllers_coverage_rationale_921" }, { - "label": "Fields that don't exist in the dataframe are filtered out.", + "label": "Covers lines 65-68: title updated successfully.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L930", - "community": 46, - "norm_label": "fields that don't exist in the dataframe are filtered out.", - "id": "tests_test_stocks_api_coverage_rationale_930" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L924", + "community": 99, + "norm_label": "covers lines 65-68: title updated successfully.", + "id": "tests_test_controllers_coverage_rationale_924" }, { - "label": "Multiple search terms with tickerIndex.", + "label": "Covers lines 62-63: not the session owner.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L945", - "community": 17, - "norm_label": "multiple search terms with tickerindex.", - "id": "tests_test_stocks_api_coverage_rationale_945" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L935", + "community": 99, + "norm_label": "covers lines 62-63: not the session owner.", + "id": "tests_test_controllers_coverage_rationale_935" }, { - "label": "Search with no index match falls back to string startswith.", + "label": "Covers lines 66-67: session not found.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L953", - "community": 39, - "norm_label": "search with no index match falls back to string startswith.", - "id": "tests_test_stocks_api_coverage_rationale_953" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L944", + "community": 99, + "norm_label": "covers lines 66-67: session not found.", + "id": "tests_test_controllers_coverage_rationale_944" }, { - "label": "len(dateRange) == 1 -> single date filter.", + "label": "Covers lines 77, 83-84, 86: GET /prometheus/history/{sessionId}.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L961", - "community": 39, - "norm_label": "len(daterange) == 1 -> single date filter.", - "id": "tests_test_stocks_api_coverage_rationale_961" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L955", + "community": 104, + "norm_label": "covers lines 77, 83-84, 86: get /prometheus/history/{sessionid}.", + "id": "tests_test_controllers_coverage_rationale_955" }, { - "label": "parseYearInput()", - "file_type": "code", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L23", - "community": 106, - "norm_label": "parseyearinput()", - "id": "stocks_api_util_parseyearinput" + "label": "Covers lines 77, 86: session found with history.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L958", + "community": 104, + "norm_label": "covers lines 77, 86: session found with history.", + "id": "tests_test_controllers_coverage_rationale_958" }, { - "label": "TestParseYearInput", - "file_type": "code", - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L43", - "community": 106, - "norm_label": "testparseyearinput", - "id": "tests_test_stocks_api_util_coverage_testparseyearinput" + "label": "Covers lines 83-84: session not found.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1002", + "community": 104, + "norm_label": "covers lines 83-84: session not found.", + "id": "tests_test_controllers_coverage_rationale_1002" }, { - "label": ".test_empty_string()", - "file_type": "code", - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L44", - "community": 106, - "norm_label": ".test_empty_string()", - "id": "tests_test_stocks_api_util_coverage_testparseyearinput_test_empty_string" + "label": "Covers lines 95-98: DELETE /prometheus/sessions/{sessionId}.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1037", + "community": 231, + "norm_label": "covers lines 95-98: delete /prometheus/sessions/{sessionid}.", + "id": "tests_test_controllers_coverage_rationale_1037" }, { - "label": ".test_none()", - "file_type": "code", - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L47", - "community": 106, - "norm_label": ".test_none()", - "id": "tests_test_stocks_api_util_coverage_testparseyearinput_test_none" + "label": "Covers lines 95-98: session deleted.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1040", + "community": 231, + "norm_label": "covers lines 95-98: session deleted.", + "id": "tests_test_controllers_coverage_rationale_1040" }, { - "label": ".test_single_year()", - "file_type": "code", - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L50", - "community": 106, - "norm_label": ".test_single_year()", - "id": "tests_test_stocks_api_util_coverage_testparseyearinput_test_single_year" + "label": "Covers lines 96-97: session not found.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1050", + "community": 231, + "norm_label": "covers lines 96-97: session not found.", + "id": "tests_test_controllers_coverage_rationale_1050" }, { - "label": ".test_year_range()", - "file_type": "code", - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L53", - "community": 106, - "norm_label": ".test_year_range()", - "id": "tests_test_stocks_api_util_coverage_testparseyearinput_test_year_range" + "label": "Covers lines 114-115, 117-120, 122, 125: POST /prometheus/chat.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1060", + "community": 16, + "norm_label": "covers lines 114-115, 117-120, 122, 125: post /prometheus/chat.", + "id": "tests_test_controllers_coverage_rationale_1060" }, { - "label": ".test_spaces()", - "file_type": "code", - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L56", - "community": 106, - "norm_label": ".test_spaces()", - "id": "tests_test_stocks_api_util_coverage_testparseyearinput_test_spaces" + "label": "Covers lines 111-112: sessionId is None, new session created.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1063", + "community": 16, + "norm_label": "covers lines 111-112: sessionid is none, new session created.", + "id": "tests_test_controllers_coverage_rationale_1063" }, { - "label": ".test_three_years_raises()", - "file_type": "code", - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L59", - "community": 106, - "norm_label": ".test_three_years_raises()", - "id": "tests_test_stocks_api_util_coverage_testparseyearinput_test_three_years_raises" + "label": "Covers lines 114-115, 117-120, 122: existing session with verified ownership.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1081", + "community": 16, + "norm_label": "covers lines 114-115, 117-120, 122: existing session with verified ownership.", + "id": "tests_test_controllers_coverage_rationale_1081" }, { - "label": "TestParseYearInput", - "file_type": "code", - "source_file": "tests/test_stocks_util.py", - "source_location": "L53", - "community": 106, - "norm_label": "testparseyearinput", - "id": "tests_test_stocks_util_testparseyearinput" + "label": "Covers lines 114-115: session ownership check fails.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1123", + "community": 16, + "norm_label": "covers lines 114-115: session ownership check fails.", + "id": "tests_test_controllers_coverage_rationale_1123" }, { - "label": ".test_parse_year_single()", - "file_type": "code", - "source_file": "tests/test_stocks_util.py", - "source_location": "L54", - "community": 106, - "norm_label": ".test_parse_year_single()", - "id": "tests_test_stocks_util_testparseyearinput_test_parse_year_single" + "label": "Covers line 125, 126-128: generic Exception in chat.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1160", + "community": 16, + "norm_label": "covers line 125, 126-128: generic exception in chat.", + "id": "tests_test_controllers_coverage_rationale_1160" }, { - "label": ".test_parse_year_range()", - "file_type": "code", - "source_file": "tests/test_stocks_util.py", - "source_location": "L59", - "community": 106, - "norm_label": ".test_parse_year_range()", - "id": "tests_test_stocks_util_testparseyearinput_test_parse_year_range" + "label": "Covers line 18: GET /stocks/health.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1181", + "community": 498, + "norm_label": "covers line 18: get /stocks/health.", + "id": "tests_test_controllers_coverage_rationale_1181" }, { - "label": ".test_parse_year_none()", - "file_type": "code", - "source_file": "tests/test_stocks_util.py", - "source_location": "L64", - "community": 106, - "norm_label": ".test_parse_year_none()", - "id": "tests_test_stocks_util_testparseyearinput_test_parse_year_none" + "label": "Covers line 23: valid API key returns secured=True.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1198", + "community": 14, + "norm_label": "covers line 23: valid api key returns secured=true.", + "id": "tests_test_controllers_coverage_rationale_1198" }, { - "label": ".test_parse_year_empty_string()", - "file_type": "code", - "source_file": "tests/test_stocks_util.py", - "source_location": "L69", - "community": 106, - "norm_label": ".test_parse_year_empty_string()", - "id": "tests_test_stocks_util_testparseyearinput_test_parse_year_empty_string" + "label": "Covers line 35: GET /stocks/historical.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1206", + "community": 14, + "norm_label": "covers line 35: get /stocks/historical.", + "id": "tests_test_controllers_coverage_rationale_1206" }, { - "label": ".test_parse_year_with_spaces()", - "file_type": "code", - "source_file": "tests/test_stocks_util.py", - "source_location": "L74", - "community": 106, - "norm_label": ".test_parse_year_with_spaces()", - "id": "tests_test_stocks_util_testparseyearinput_test_parse_year_with_spaces" + "label": "Covers line 47: GET /stocks/fundamental.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1220", + "community": 14, + "norm_label": "covers line 47: get /stocks/fundamental.", + "id": "tests_test_controllers_coverage_rationale_1220" }, { - "label": ".test_parse_year_invalid_format()", - "file_type": "code", - "source_file": "tests/test_stocks_util.py", - "source_location": "L79", - "community": 106, - "norm_label": ".test_parse_year_invalid_format()", - "id": "tests_test_stocks_util_testparseyearinput_test_parse_year_invalid_format" + "label": "Covers lines 52-53, 57-63: GET /stocks/key/generate. NOTE: stocksapi_cont", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1234", + "community": 14, + "norm_label": "covers lines 52-53, 57-63: get /stocks/key/generate. note: stocksapi_cont", + "id": "tests_test_controllers_coverage_rationale_1234" }, { - "label": ".test_parse_year_invalid_non_digit()", - "file_type": "code", - "source_file": "tests/test_stocks_util.py", - "source_location": "L84", - "community": 106, - "norm_label": ".test_parse_year_invalid_non_digit()", - "id": "tests_test_stocks_util_testparseyearinput_test_parse_year_invalid_non_digit" + "label": "Covers lines 52-53: user without GENERATE_API_KEYS permission gets 403.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1242", + "community": 14, + "norm_label": "covers lines 52-53: user without generate_api_keys permission gets 403.", + "id": "tests_test_controllers_coverage_rationale_1242" }, { - "label": "Invalid date format raises exception (line 132).", + "label": "Covers lines 61-63: exception during key generation (admin path).", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L731", - "community": 543, - "norm_label": "invalid date format raises exception (line 132).", - "id": "tests_test_stocks_api_coverage_rationale_731" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1262", + "community": 14, + "norm_label": "covers lines 61-63: exception during key generation (admin path).", + "id": "tests_test_controllers_coverage_rationale_1262" }, { - "label": "No historical columns at all -> inner 400 caught by outer except -> 500.", + "label": "Covers lines 17, 22-27: user found, role not present, role added.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L747", - "community": 127, - "norm_label": "no historical columns at all -> inner 400 caught by outer except -> 500.", - "id": "tests_test_stocks_api_coverage_rationale_747" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1280", + "community": 564, + "norm_label": "covers lines 17, 22-27: user found, role not present, role added.", + "id": "tests_test_controllers_coverage_rationale_1280" }, { - "label": "Historical query with a year range.", + "label": "Covers lines 19-20: user not found raises 404.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L757", - "community": 562, - "norm_label": "historical query with a year range.", - "id": "tests_test_stocks_api_coverage_rationale_757" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1312", + "community": 528, + "norm_label": "covers lines 19-20: user not found raises 404.", + "id": "tests_test_controllers_coverage_rationale_1312" }, { - "label": "Multiple search terms, all found in tickerIndex.", + "label": "Covers lines 42-44: session validation fails.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L764", - "community": 28, - "norm_label": "multiple search terms, all found in tickerindex.", - "id": "tests_test_stocks_api_coverage_rationale_764" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1356", + "community": 569, + "norm_label": "covers lines 42-44: session validation fails.", + "id": "tests_test_controllers_coverage_rationale_1356" }, { - "label": "Tests covering query.py lines 142-202.", + "label": "Covers lines 37-38, 46, 51, 58 (sessionId is None): skips session validation.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L773", - "community": 112, - "norm_label": "tests covering query.py lines 142-202.", - "id": "tests_test_stocks_api_coverage_rationale_773" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1406", + "community": 561, + "norm_label": "covers lines 37-38, 46, 51, 58 (sessionid is none): skips session validation.", + "id": "tests_test_controllers_coverage_rationale_1406" }, { - "label": "Invalid date -> inner 400 caught by outer except -> 500.", + "label": "Covers line 16: empty password raises ValueError.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L827", - "community": 497, - "norm_label": "invalid date -> inner 400 caught by outer except -> 500.", - "id": "tests_test_stocks_api_coverage_rationale_827" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1430", + "community": 45, + "norm_label": "covers line 16: empty password raises valueerror.", + "id": "tests_test_controllers_coverage_rationale_1430" }, { - "label": "search.strip() == '' should still dedup (line 181).", + "label": "Covers lines 45-51: verifyAccessToken with expired and invalid tokens.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L876", - "community": 17, - "norm_label": "search.strip() == '' should still dedup (line 181).", - "id": "tests_test_stocks_api_coverage_rationale_876" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1440", + "community": 524, + "norm_label": "covers lines 45-51: verifyaccesstoken with expired and invalid tokens.", + "id": "tests_test_controllers_coverage_rationale_1440" }, { - "label": "Two dates in the range, both valid.", + "label": "Covers lines 48-49: jwt.ExpiredSignatureError.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L898", - "community": 39, - "norm_label": "two dates in the range, both valid.", - "id": "tests_test_stocks_api_coverage_rationale_898" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1443", + "community": 524, + "norm_label": "covers lines 48-49: jwt.expiredsignatureerror.", + "id": "tests_test_controllers_coverage_rationale_1443" }, { - "label": "Single invalid date -> inner 400 caught by outer except -> 500.", + "label": "Covers lines 50-51: jwt.InvalidTokenError.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L912", - "community": 46, - "norm_label": "single invalid date -> inner 400 caught by outer except -> 500.", - "id": "tests_test_stocks_api_coverage_rationale_912" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1459", + "community": 524, + "norm_label": "covers lines 50-51: jwt.invalidtokenerror.", + "id": "tests_test_controllers_coverage_rationale_1459" }, { - "label": "Fields that don't exist in the dataframe are filtered out.", + "label": "Covers line 67: extractTokenPayload re-raises HTTPException from verifyAccessTok", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L922", - "community": 46, - "norm_label": "fields that don't exist in the dataframe are filtered out.", - "id": "tests_test_stocks_api_coverage_rationale_922" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1471", + "community": 114, + "norm_label": "covers line 67: extracttokenpayload re-raises httpexception from verifyaccesstok", + "id": "tests_test_controllers_coverage_rationale_1471" }, { - "label": "Multiple search terms with tickerIndex.", + "label": "Covers line 67: HTTPException raised by verifyAccessToken is re-raised.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L937", - "community": 17, - "norm_label": "multiple search terms with tickerindex.", - "id": "tests_test_stocks_api_coverage_rationale_937" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1474", + "community": 114, + "norm_label": "covers line 67: httpexception raised by verifyaccesstoken is re-raised.", + "id": "tests_test_controllers_coverage_rationale_1474" }, { - "label": "Invalid date format raises exception (line 132).", + "label": "Covers line 13: UserManager.__init__.", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L730", - "community": 543, - "norm_label": "invalid date format raises exception (line 132).", - "id": "tests_test_stocks_api_coverage_rationale_730" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1490", + "community": 498, + "norm_label": "covers line 13: usermanager.__init__.", + "id": "tests_test_controllers_coverage_rationale_1490" }, { - "label": "No historical columns at all -> inner 400 caught by outer except -> 500.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L746", - "community": 127, - "norm_label": "no historical columns at all -> inner 400 caught by outer except -> 500.", - "id": "tests_test_stocks_api_coverage_rationale_746" + "label": ".test_creates_new_session()", + "file_type": "code", + "source_file": "tests/test_http_session_coverage.py", + "source_location": "L9", + "community": 186, + "norm_label": ".test_creates_new_session()", + "id": "tests_test_http_session_coverage_testgetsession_test_creates_new_session" }, { - "label": "Historical query with a year range.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L756", - "community": 562, - "norm_label": "historical query with a year range.", - "id": "tests_test_stocks_api_coverage_rationale_756" + "label": "TestCleanup", + "file_type": "code", + "source_file": "tests/test_http_session_coverage.py", + "source_location": "L28", + "community": 512, + "norm_label": "testcleanup", + "id": "tests_test_http_session_coverage_testcleanup" }, { - "label": "Tests covering query.py lines 142-202.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L772", - "community": 112, - "norm_label": "tests covering query.py lines 142-202.", - "id": "tests_test_stocks_api_coverage_rationale_772" + "label": ".test_cleanup_closes_session()", + "file_type": "code", + "source_file": "tests/test_http_session_coverage.py", + "source_location": "L29", + "community": 512, + "norm_label": ".test_cleanup_closes_session()", + "id": "tests_test_http_session_coverage_testcleanup_test_cleanup_closes_session" }, { - "label": "Invalid date -> inner 400 caught by outer except -> 500.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L826", - "community": 497, - "norm_label": "invalid date -> inner 400 caught by outer except -> 500.", - "id": "tests_test_stocks_api_coverage_rationale_826" + "label": ".test_cleanup_no_session()", + "file_type": "code", + "source_file": "tests/test_http_session_coverage.py", + "source_location": "L37", + "community": 512, + "norm_label": ".test_cleanup_no_session()", + "id": "tests_test_http_session_coverage_testcleanup_test_cleanup_no_session" }, { - "label": "search.strip() == '' should still dedup (line 181).", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L874", - "community": 46, - "norm_label": "search.strip() == '' should still dedup (line 181).", - "id": "tests_test_stocks_api_coverage_rationale_874" + "label": ".test_cleanup_exception_during_close()", + "file_type": "code", + "source_file": "tests/test_http_session_coverage.py", + "source_location": "L46", + "community": 512, + "norm_label": ".test_cleanup_exception_during_close()", + "id": "tests_test_http_session_coverage_testcleanup_test_cleanup_exception_during_close" }, { - "label": "Single invalid date -> inner 400 caught by outer except -> 500.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L910", - "community": 46, - "norm_label": "single invalid date -> inner 400 caught by outer except -> 500.", - "id": "tests_test_stocks_api_coverage_rationale_910" + "label": ".test_remove_role_existing()", + "file_type": "code", + "source_file": "tests/test_models.py", + "source_location": "L50", + "community": 61, + "norm_label": ".test_remove_role_existing()", + "id": "tests_test_models_testusermodel_test_remove_role_existing" }, { - "label": "Multiple search terms with tickerIndex.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L935", - "community": 17, - "norm_label": "multiple search terms with tickerindex.", - "id": "tests_test_stocks_api_coverage_rationale_935" + "label": ".test_remove_role_last_role()", + "file_type": "code", + "source_file": "tests/test_models.py", + "source_location": "L57", + "community": 61, + "norm_label": ".test_remove_role_last_role()", + "id": "tests_test_models_testusermodel_test_remove_role_last_role" }, { - "label": "Search with no index match falls back to string startswith.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L943", - "community": 39, - "norm_label": "search with no index match falls back to string startswith.", - "id": "tests_test_stocks_api_coverage_rationale_943" + "label": "TestPaginationParams", + "file_type": "code", + "source_file": "tests/test_pagination.py", + "source_location": "L37", + "community": 482, + "norm_label": "testpaginationparams", + "id": "tests_test_pagination_testpaginationparams" }, { - "label": "len(dateRange) == 1 -> single date filter.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L951", - "community": 39, - "norm_label": "len(daterange) == 1 -> single date filter.", - "id": "tests_test_stocks_api_coverage_rationale_951" + "label": ".test_defaults()", + "file_type": "code", + "source_file": "tests/test_pagination.py", + "source_location": "L38", + "community": 482, + "norm_label": ".test_defaults()", + "id": "tests_test_pagination_testpaginationparams_test_defaults" }, { - "label": "Thread-safe proxy that delegates to per-thread sessions.", - "file_type": "rationale", - "source_file": "main/app/prometheus/generation.py", - "source_location": "L20", - "community": 162, - "norm_label": "thread-safe proxy that delegates to per-thread sessions.", - "id": "prometheus_generation_rationale_20" + "label": ".test_custom_limit()", + "file_type": "code", + "source_file": "tests/test_pagination.py", + "source_location": "L46", + "community": 482, + "norm_label": ".test_custom_limit()", + "id": "tests_test_pagination_testpaginationparams_test_custom_limit" }, { - "label": "Tests covering query.py lines 77-132.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L582", - "community": 112, - "norm_label": "tests covering query.py lines 77-132.", - "id": "tests_test_stocks_api_coverage_rationale_582" + "label": ".test_custom_offset()", + "file_type": "code", + "source_file": "tests/test_pagination.py", + "source_location": "L52", + "community": 482, + "norm_label": ".test_custom_offset()", + "id": "tests_test_pagination_testpaginationparams_test_custom_offset" }, { - "label": "Pass field name WITHOUT year (how categorizeColumns returns them).", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L620", - "community": 28, - "norm_label": "pass field name without year (how categorizecolumns returns them).", - "id": "tests_test_stocks_api_coverage_rationale_620" + "label": ".test_limit_and_offset()", + "file_type": "code", + "source_file": "tests/test_pagination.py", + "source_location": "L59", + "community": 482, + "norm_label": ".test_limit_and_offset()", + "id": "tests_test_pagination_testpaginationparams_test_limit_and_offset" }, { - "label": "No historical data columns -> inner 400 caught by outer except -> 500.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L646", - "community": 28, - "norm_label": "no historical data columns -> inner 400 caught by outer except -> 500.", - "id": "tests_test_stocks_api_coverage_rationale_646" + "label": ".test_limit_exceeds_max_rejected()", + "file_type": "code", + "source_file": "tests/test_pagination.py", + "source_location": "L67", + "community": 482, + "norm_label": ".test_limit_exceeds_max_rejected()", + "id": "tests_test_pagination_testpaginationparams_test_limit_exceeds_max_rejected" }, { - "label": "If an unexpected exception occurs (line 132).", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L671", - "community": 28, - "norm_label": "if an unexpected exception occurs (line 132).", - "id": "tests_test_stocks_api_coverage_rationale_671" + "label": ".test_limit_zero_rejected()", + "file_type": "code", + "source_file": "tests/test_pagination.py", + "source_location": "L71", + "community": 482, + "norm_label": ".test_limit_zero_rejected()", + "id": "tests_test_pagination_testpaginationparams_test_limit_zero_rejected" }, { - "label": "Invalid date format raises exception (line 132).", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L684", - "community": 543, - "norm_label": "invalid date format raises exception (line 132).", - "id": "tests_test_stocks_api_coverage_rationale_684" + "label": ".test_negative_offset_rejected()", + "file_type": "code", + "source_file": "tests/test_pagination.py", + "source_location": "L75", + "community": 482, + "norm_label": ".test_negative_offset_rejected()", + "id": "tests_test_pagination_testpaginationparams_test_negative_offset_rejected" }, { - "label": "No historical columns at all -> inner 400 caught by outer except -> 500.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L700", - "community": 127, - "norm_label": "no historical columns at all -> inner 400 caught by outer except -> 500.", - "id": "tests_test_stocks_api_coverage_rationale_700" + "label": ".test_offset_beyond_total()", + "file_type": "code", + "source_file": "tests/test_pagination.py", + "source_location": "L79", + "community": 482, + "norm_label": ".test_offset_beyond_total()", + "id": "tests_test_pagination_testpaginationparams_test_offset_beyond_total" }, { - "label": "Historical query with a year range.", - "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L710", - "community": 562, - "norm_label": "historical query with a year range.", - "id": "tests_test_stocks_api_coverage_rationale_710" + "label": ".test_limit_equals_max()", + "file_type": "code", + "source_file": "tests/test_pagination.py", + "source_location": "L84", + "community": 482, + "norm_label": ".test_limit_equals_max()", + "id": "tests_test_pagination_testpaginationparams_test_limit_equals_max" }, { - "label": "Tests covering query.py lines 142-202.", + "label": "Cover __init__ and updateDates (lines 22-37).", "file_type": "rationale", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L726", - "community": 112, - "norm_label": "tests covering query.py lines 142-202.", - "id": "tests_test_stocks_api_coverage_rationale_726" + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L28", + "community": 68, + "norm_label": "cover __init__ and updatedates (lines 22-37).", + "id": "tests_test_prometheus_auth_coverage_rationale_28" }, { - "label": "Invalid date -> inner 400 caught by outer except -> 500.", + "label": "Cover executeWorkflow (lines 39-363).", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L59", + "community": 68, + "norm_label": "cover executeworkflow (lines 39-363).", + "id": "tests_test_prometheus_auth_coverage_rationale_59" + }, + { + "label": "Stage 1 + Stage 2 + Stage 3, no history, no sessionId.", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L74", + "community": 443, + "norm_label": "stage 1 + stage 2 + stage 3, no history, no sessionid.", + "id": "tests_test_prometheus_auth_coverage_rationale_74" + }, + { + "label": "Test history formatting (lines 48-49, 159-162).", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L119", + "community": 444, + "norm_label": "test history formatting (lines 48-49, 159-162).", + "id": "tests_test_prometheus_auth_coverage_rationale_119" + }, + { + "label": "Stage 0: sessionId+db summary loading (lines 55-62).", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L146", + "community": 445, + "norm_label": "stage 0: sessionid+db summary loading (lines 55-62).", + "id": "tests_test_prometheus_auth_coverage_rationale_146" + }, + { + "label": "Stage 0: exception loading session (line 62).", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L177", + "community": 446, + "norm_label": "stage 0: exception loading session (line 62).", + "id": "tests_test_prometheus_auth_coverage_rationale_177" + }, + { + "label": "Global request resolution with KEY_SYSTEM=True (lines 180-209).", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L204", + "community": 447, + "norm_label": "global request resolution with key_system=true (lines 180-209).", + "id": "tests_test_prometheus_auth_coverage_rationale_204" + }, + { + "label": "Global request API error (lines 208-209).", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L253", + "community": 448, + "norm_label": "global request api error (lines 208-209).", + "id": "tests_test_prometheus_auth_coverage_rationale_253" + }, + { + "label": "fetchStockData exception path (lines 223-225).", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L291", + "community": 449, + "norm_label": "fetchstockdata exception path (lines 223-225).", + "id": "tests_test_prometheus_auth_coverage_rationale_291" + }, + { + "label": "fetchStockData non-200 status (line 222).", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L327", + "community": 450, + "norm_label": "fetchstockdata non-200 status (line 222).", + "id": "tests_test_prometheus_auth_coverage_rationale_327" + }, + { + "label": "Stage 4: summary update when len(history) % 10 == 0 (lines 325-363).", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L366", + "community": 451, + "norm_label": "stage 4: summary update when len(history) % 10 == 0 (lines 325-363).", + "id": "tests_test_prometheus_auth_coverage_rationale_366" + }, + { + "label": "Cover all methods in chat.py (lines 11-120).", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L441", + "community": 52, + "norm_label": "cover all methods in chat.py (lines 11-120).", + "id": "tests_test_prometheus_auth_coverage_rationale_441" + }, + { + "label": "Cover all methods in authentication.py (lines 13-75).", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L665", + "community": 88, + "norm_label": "cover all methods in authentication.py (lines 13-75).", + "id": "tests_test_prometheus_auth_coverage_rationale_665" + }, + { + "label": "Cover all methods in session.py (lines 14-154).", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L842", + "community": 60, + "norm_label": "cover all methods in session.py (lines 14-154).", + "id": "tests_test_prometheus_auth_coverage_rationale_842" + }, + { + "label": "Exercises the tzinfo-is-None branch (line 144-148).", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L1077", + "community": 190, + "norm_label": "exercises the tzinfo-is-none branch (line 144-148).", + "id": "tests_test_prometheus_auth_coverage_rationale_1077" + }, + { + "label": "Exercises the expiresAt-is-None branch (line 143).", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L1091", + "community": 165, + "norm_label": "exercises the expiresat-is-none branch (line 143).", + "id": "tests_test_prometheus_auth_coverage_rationale_1091" + }, + { + "label": "Cover getGoogleSSO (lines 6-14).", + "file_type": "rationale", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L1110", + "community": 68, + "norm_label": "cover getgooglesso (lines 6-14).", + "id": "tests_test_prometheus_auth_coverage_rationale_1110" + }, + { + "label": ".test_repr()", + "file_type": "code", + "source_file": "tests/test_sessions.py", + "source_location": "L13", + "community": 44, + "norm_label": ".test_repr()", + "id": "tests_test_sessions_testusersessionmodel_test_repr" + }, + { + "label": ".test_toDict_basic()", + "file_type": "code", + "source_file": "tests/test_sessions.py", + "source_location": "L18", + "community": 44, + "norm_label": ".test_todict_basic()", + "id": "tests_test_sessions_testusersessionmodel_test_toDict_basic" + }, + { + "label": ".test_toDict_with_sensitive()", + "file_type": "code", + "source_file": "tests/test_sessions.py", + "source_location": "L35", + "community": 44, + "norm_label": ".test_todict_with_sensitive()", + "id": "tests_test_sessions_testusersessionmodel_test_toDict_with_sensitive" + }, + { + "label": ".test_toDict_hides_userAgent()", + "file_type": "code", + "source_file": "tests/test_sessions.py", + "source_location": "L46", + "community": 44, + "norm_label": ".test_todict_hides_useragent()", + "id": "tests_test_sessions_testusersessionmodel_test_toDict_hides_useragent" + }, + { + "label": ".test_toDict_with_timestamps()", + "file_type": "code", + "source_file": "tests/test_sessions.py", + "source_location": "L117", + "community": 44, + "norm_label": ".test_todict_with_timestamps()", + "id": "tests_test_sessions_testusersessionmodel_test_todict_with_timestamps" + }, + { + "label": ".test_toDict_without_timestamps()", + "file_type": "code", + "source_file": "tests/test_sessions.py", + "source_location": "L133", + "community": 44, + "norm_label": ".test_todict_without_timestamps()", + "id": "tests_test_sessions_testusersessionmodel_test_todict_without_timestamps" + }, + { + "label": "TestNormalizeColumns", + "file_type": "code", + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L86", + "community": 477, + "norm_label": "testnormalizecolumns", + "id": "tests_test_stocks_api_util_coverage_testnormalizecolumns" + }, + { + "label": ".test_reorder_columns()", + "file_type": "code", + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L87", + "community": 477, + "norm_label": ".test_reorder_columns()", + "id": "tests_test_stocks_api_util_coverage_testnormalizecolumns_test_reorder_columns" + }, + { + "label": ".test_partial_order()", + "file_type": "code", + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L92", + "community": 477, + "norm_label": ".test_partial_order()", + "id": "tests_test_stocks_api_util_coverage_testnormalizecolumns_test_partial_order" + }, + { + "label": ".test_missing_columns_ignored()", + "file_type": "code", + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L97", + "community": 477, + "norm_label": ".test_missing_columns_ignored()", + "id": "tests_test_stocks_api_util_coverage_testnormalizecolumns_test_missing_columns_ignored" + }, + { + "label": ".test_empty_order()", + "file_type": "code", + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L102", + "community": 477, + "norm_label": ".test_empty_order()", + "id": "tests_test_stocks_api_util_coverage_testnormalizecolumns_test_empty_order" + }, + { + "label": ".test_remaining_sorted()", + "file_type": "code", + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L107", + "community": 477, + "norm_label": ".test_remaining_sorted()", + "id": "tests_test_stocks_api_util_coverage_testnormalizecolumns_test_remaining_sorted" + }, + { + "label": "TestConcurrentHttpProxy", + "file_type": "code", + "source_file": "tests/test_thread_safety.py", + "source_location": "L175", + "community": 172, + "norm_label": "testconcurrenthttpproxy", + "id": "tests_test_thread_safety_testconcurrenthttpproxy" + }, + { + "label": ".test_proxy_returns_thread_local_sessions()", + "file_type": "code", + "source_file": "tests/test_thread_safety.py", + "source_location": "L178", + "community": 172, + "norm_label": ".test_proxy_returns_thread_local_sessions()", + "id": "tests_test_thread_safety_testconcurrenthttpproxy_test_proxy_returns_thread_local_sessions" + }, + { + "label": ".test_connectivity_uses_getSession()", + "file_type": "code", + "source_file": "tests/test_thread_safety.py", + "source_location": "L203", + "community": 172, + "norm_label": ".test_connectivity_uses_getsession()", + "id": "tests_test_thread_safety_testconcurrenthttpproxy_test_connectivity_uses_getsession" + }, + { + "label": "connectivity.checkServiceConnection must call getSession(), not use a global Ses", + "file_type": "rationale", + "source_file": "tests/test_thread_safety.py", + "source_location": "L204", + "community": 172, + "norm_label": "connectivity.checkserviceconnection must call getsession(), not use a global ses", + "id": "tests_test_thread_safety_rationale_204" + }, + { + "label": "Tests covering key.py lines 15-40. Uses asyncio.run() since pytest-asyncio", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L780", - "community": 497, - "norm_label": "invalid date -> inner 400 caught by outer except -> 500.", - "id": "tests_test_stocks_api_coverage_rationale_780" + "source_location": "L227", + "community": 571, + "norm_label": "tests covering key.py lines 15-40. uses asyncio.run() since pytest-asyncio", + "id": "tests_test_stocks_api_coverage_rationale_227" }, { - "label": "search.strip() == '' should still dedup (line 181).", + "label": "When KEY.SYSTEM is falsy, return None (line 16).", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L828", - "community": 17, - "norm_label": "search.strip() == '' should still dedup (line 181).", - "id": "tests_test_stocks_api_coverage_rationale_828" + "source_location": "L232", + "community": 452, + "norm_label": "when key.system is falsy, return none (line 16).", + "id": "tests_test_stocks_api_coverage_rationale_232" }, { - "label": "DataFrame without TIME column.", + "label": "When key is required but not provided (line 19).", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L837", - "community": 17, - "norm_label": "dataframe without time column.", - "id": "tests_test_stocks_api_coverage_rationale_837" + "source_location": "L243", + "community": 453, + "norm_label": "when key is required but not provided (line 19).", + "id": "tests_test_stocks_api_coverage_rationale_243" }, { - "label": "Two dates in the range, both valid.", + "label": "When atomic UPDATE returns 0 rows and query finds no key -> 401.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L850", - "community": 39, - "norm_label": "two dates in the range, both valid.", - "id": "tests_test_stocks_api_coverage_rationale_850" + "source_location": "L256", + "community": 454, + "norm_label": "when atomic update returns 0 rows and query finds no key -> 401.", + "id": "tests_test_stocks_api_coverage_rationale_256" }, { - "label": "Single invalid date -> inner 400 caught by outer except -> 500.", + "label": "When atomic UPDATE returns 0 rows and query finds key at limit -> 429.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L864", - "community": 46, - "norm_label": "single invalid date -> inner 400 caught by outer except -> 500.", - "id": "tests_test_stocks_api_coverage_rationale_864" + "source_location": "L273", + "community": 455, + "norm_label": "when atomic update returns 0 rows and query finds key at limit -> 429.", + "id": "tests_test_stocks_api_coverage_rationale_273" }, { - "label": "Multiple search terms with tickerIndex.", + "label": "Happy path: atomic UPDATE succeeds, returns key (lines 22-33).", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L889", - "community": 17, - "norm_label": "multiple search terms with tickerindex.", - "id": "tests_test_stocks_api_coverage_rationale_889" + "source_location": "L291", + "community": 456, + "norm_label": "happy path: atomic update succeeds, returns key (lines 22-33).", + "id": "tests_test_stocks_api_coverage_rationale_291" }, { - "label": "Search with no index match falls back to string startswith.", + "label": "HTTPException should cause rollback then re-raise (lines 35-37).", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L897", - "community": 39, - "norm_label": "search with no index match falls back to string startswith.", - "id": "tests_test_stocks_api_coverage_rationale_897" + "source_location": "L305", + "community": 457, + "norm_label": "httpexception should cause rollback then re-raise (lines 35-37).", + "id": "tests_test_stocks_api_coverage_rationale_305" }, { - "label": "checkMySqlConnection \u2014 success, errors, engine=None paths.", + "label": "Tests covering key.py line 44.", "file_type": "rationale", - "source_file": "tests/test_connectivity_coverage.py", - "source_location": "L8", - "community": 574, - "norm_label": "checkmysqlconnection \u2014 success, errors, engine=none paths.", - "id": "tests_test_connectivity_coverage_rationale_8" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L339", + "community": 141, + "norm_label": "tests covering key.py line 44.", + "id": "tests_test_stocks_api_coverage_rationale_339" }, { - "label": "checkServiceConnection \u2014 success, not found, errors.", + "label": "Tests covering key.py lines 48-66.", "file_type": "rationale", - "source_file": "tests/test_connectivity_coverage.py", - "source_location": "L105", - "community": 573, - "norm_label": "checkserviceconnection \u2014 success, not found, errors.", - "id": "tests_test_connectivity_coverage_rationale_105" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L362", + "community": 565, + "norm_label": "tests covering key.py lines 48-66.", + "id": "tests_test_stocks_api_coverage_rationale_362" }, { - "label": "Create a test client for the status endpoint without running lifespan.", + "label": "New key created when no existing key for user (lines 57-59).", "file_type": "rationale", - "source_file": "tests/test_status_endpoint.py", - "source_location": "L9", - "community": 184, - "norm_label": "create a test client for the status endpoint without running lifespan.", - "id": "tests_test_status_endpoint_rationale_9" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L366", + "community": 458, + "norm_label": "new key created when no existing key for user (lines 57-59).", + "id": "tests_test_stocks_api_coverage_rationale_366" }, { - "label": "test_cache_scheduler_starts_daemon_thread()", - "file_type": "code", + "label": "Existing key is updated (lines 54-56).", + "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L54", - "community": 567, - "norm_label": "test_cache_scheduler_starts_daemon_thread()", - "id": "tests_test_stocks_api_coverage_test_cache_scheduler_starts_daemon_thread" + "source_location": "L381", + "community": 459, + "norm_label": "existing key is updated (lines 54-56).", + "id": "tests_test_stocks_api_coverage_rationale_381" + }, + { + "label": "Exception during creation triggers rollback and 500 (lines 64-66).", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L398", + "community": 460, + "norm_label": "exception during creation triggers rollback and 500 (lines 64-66).", + "id": "tests_test_stocks_api_coverage_rationale_398" + }, + { + "label": "Tests covering query.py lines 22-48.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L416", + "community": 3, + "norm_label": "tests covering query.py lines 22-48.", + "id": "tests_test_stocks_api_coverage_rationale_416" + }, + { + "label": "replaceNan handles direct float NaN values (line 34).", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L494", + "community": 577, + "norm_label": "replacenan handles direct float nan values (line 34).", + "id": "tests_test_stocks_api_coverage_rationale_494" + }, + { + "label": "Non-JSON-dict/list string is left as-is.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L508", + "community": 566, + "norm_label": "non-json-dict/list string is left as-is.", + "id": "tests_test_stocks_api_coverage_rationale_508" + }, + { + "label": "pd.NA is not a string, so lambda returns it unchanged.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L517", + "community": 520, + "norm_label": "pd.na is not a string, so lambda returns it unchanged.", + "id": "tests_test_stocks_api_coverage_rationale_517" + }, + { + "label": "Regression: is_string_dtype fails when column has strings + None (pandas 2.x).", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L526", + "community": 86, + "norm_label": "regression: is_string_dtype fails when column has strings + none (pandas 2.x).", + "id": "tests_test_stocks_api_coverage_rationale_526" + }, + { + "label": "All four SPECIAL_COLS should parse correctly when mixed with None.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L548", + "community": 520, + "norm_label": "all four special_cols should parse correctly when mixed with none.", + "id": "tests_test_stocks_api_coverage_rationale_548" + }, + { + "label": "Tests covering query.py lines 50-67.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L573", + "community": 86, + "norm_label": "tests covering query.py lines 50-67.", + "id": "tests_test_stocks_api_coverage_rationale_573" }, { "label": "Tests covering query.py lines 77-132.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L583", - "community": 112, + "source_location": "L628", + "community": 28, "norm_label": "tests covering query.py lines 77-132.", - "id": "tests_test_stocks_api_coverage_rationale_583" + "id": "tests_test_stocks_api_coverage_rationale_628" }, { "label": "Pass field name WITHOUT year (how categorizeColumns returns them).", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L621", + "source_location": "L666", "community": 28, "norm_label": "pass field name without year (how categorizecolumns returns them).", - "id": "tests_test_stocks_api_coverage_rationale_621" + "id": "tests_test_stocks_api_coverage_rationale_666" }, { "label": "No historical data columns -> inner 400 caught by outer except -> 500.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L647", + "source_location": "L692", "community": 28, "norm_label": "no historical data columns -> inner 400 caught by outer except -> 500.", - "id": "tests_test_stocks_api_coverage_rationale_647" + "id": "tests_test_stocks_api_coverage_rationale_692" }, { - "label": "If an unexpected exception occurs (line 132).", + "label": "If an unexpected exception occurs in queryHistorical.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L672", + "source_location": "L717", "community": 28, - "norm_label": "if an unexpected exception occurs (line 132).", - "id": "tests_test_stocks_api_coverage_rationale_672" + "norm_label": "if an unexpected exception occurs in queryhistorical.", + "id": "tests_test_stocks_api_coverage_rationale_717" }, { "label": "Invalid date format raises exception (line 132).", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L685", + "source_location": "L735", "community": 543, "norm_label": "invalid date format raises exception (line 132).", - "id": "tests_test_stocks_api_coverage_rationale_685" + "id": "tests_test_stocks_api_coverage_rationale_735" }, { "label": "No historical columns at all -> inner 400 caught by outer except -> 500.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L701", + "source_location": "L751", "community": 127, "norm_label": "no historical columns at all -> inner 400 caught by outer except -> 500.", - "id": "tests_test_stocks_api_coverage_rationale_701" + "id": "tests_test_stocks_api_coverage_rationale_751" }, { "label": "Historical query with a year range.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L711", - "community": 562, + "source_location": "L761", + "community": 28, "norm_label": "historical query with a year range.", - "id": "tests_test_stocks_api_coverage_rationale_711" + "id": "tests_test_stocks_api_coverage_rationale_761" }, { - "label": "Tests covering query.py lines 142-202.", + "label": "Multiple search terms, all found in tickerIndex.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L727", - "community": 112, - "norm_label": "tests covering query.py lines 142-202.", - "id": "tests_test_stocks_api_coverage_rationale_727" + "source_location": "L768", + "community": 28, + "norm_label": "multiple search terms, all found in tickerindex.", + "id": "tests_test_stocks_api_coverage_rationale_768" }, { "label": "Invalid date -> inner 400 caught by outer except -> 500.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L781", - "community": 497, + "source_location": "L831", + "community": 39, "norm_label": "invalid date -> inner 400 caught by outer except -> 500.", - "id": "tests_test_stocks_api_coverage_rationale_781" + "id": "tests_test_stocks_api_coverage_rationale_831" + }, + { + "label": "search.strip() == '' should still dedup (line 181).", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L884", + "community": 39, + "norm_label": "search.strip() == '' should still dedup (line 181).", + "id": "tests_test_stocks_api_coverage_rationale_884" }, { "label": "DataFrame without TIME column.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L838", - "community": 17, + "source_location": "L893", + "community": 39, "norm_label": "dataframe without time column.", - "id": "tests_test_stocks_api_coverage_rationale_838" + "id": "tests_test_stocks_api_coverage_rationale_893" }, { "label": "Two dates in the range, both valid.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L851", - "community": 39, + "source_location": "L906", + "community": 17, "norm_label": "two dates in the range, both valid.", - "id": "tests_test_stocks_api_coverage_rationale_851" + "id": "tests_test_stocks_api_coverage_rationale_906" }, { "label": "Single invalid date -> inner 400 caught by outer except -> 500.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L865", + "source_location": "L920", "community": 46, "norm_label": "single invalid date -> inner 400 caught by outer except -> 500.", - "id": "tests_test_stocks_api_coverage_rationale_865" + "id": "tests_test_stocks_api_coverage_rationale_920" }, { "label": "Fields that don't exist in the dataframe are filtered out.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L875", + "source_location": "L930", "community": 46, "norm_label": "fields that don't exist in the dataframe are filtered out.", - "id": "tests_test_stocks_api_coverage_rationale_875" + "id": "tests_test_stocks_api_coverage_rationale_930" }, { "label": "Multiple search terms with tickerIndex.", "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L890", - "community": 17, + "source_location": "L945", + "community": 39, "norm_label": "multiple search terms with tickerindex.", - "id": "tests_test_stocks_api_coverage_rationale_890" + "id": "tests_test_stocks_api_coverage_rationale_945" }, { - "label": "_hash_key()", - "file_type": "code", - "source_file": "main/app/stocks_api/key.py", - "source_location": "L16", - "community": 26, - "norm_label": "_hash_key()", - "id": "stocks_api_key_hash_key" + "label": "Search with no index match falls back to string startswith.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L953", + "community": 17, + "norm_label": "search with no index match falls back to string startswith.", + "id": "tests_test_stocks_api_coverage_rationale_953" }, { - "label": "Return SHA-256 hex digest of the given key.", + "label": "len(dateRange) == 1 -> single date filter.", "file_type": "rationale", - "source_file": "main/app/stocks_api/key.py", - "source_location": "L17", - "community": 26, - "norm_label": "return sha-256 hex digest of the given key.", - "id": "stocks_api_key_rationale_17" + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L961", + "community": 17, + "norm_label": "len(daterange) == 1 -> single date filter.", + "id": "tests_test_stocks_api_coverage_rationale_961" }, { - "label": "_build_error_response()", + "label": "parseYearInput()", "file_type": "code", - "source_file": "main/utils/errors.py", - "source_location": "L27", - "community": 530, - "norm_label": "_build_error_response()", - "id": "utils_errors_build_error_response" + "source_file": "main/app/stocks_api/util.py", + "source_location": "L23", + "community": 106, + "norm_label": "parseyearinput()", + "id": "stocks_api_util_parseyearinput" }, { - "label": "http_exception_handler()", + "label": "TestParseYearInput", "file_type": "code", - "source_file": "main/utils/errors.py", - "source_location": "L37", - "community": 530, - "norm_label": "http_exception_handler()", - "id": "utils_errors_http_exception_handler" + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L43", + "community": 106, + "norm_label": "testparseyearinput", + "id": "tests_test_stocks_api_util_coverage_testparseyearinput" }, { - "label": "validation_exception_handler()", + "label": ".test_empty_string()", "file_type": "code", - "source_file": "main/utils/errors.py", + "source_file": "tests/test_stocks_api_util_coverage.py", "source_location": "L44", - "community": 530, - "norm_label": "validation_exception_handler()", - "id": "utils_errors_validation_exception_handler" + "community": 106, + "norm_label": ".test_empty_string()", + "id": "tests_test_stocks_api_util_coverage_testparseyearinput_test_empty_string" }, { - "label": "generic_exception_handler()", + "label": ".test_none()", "file_type": "code", - "source_file": "main/utils/errors.py", - "source_location": "L56", - "community": 530, - "norm_label": "generic_exception_handler()", - "id": "utils_errors_generic_exception_handler" + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L47", + "community": 106, + "norm_label": ".test_none()", + "id": "tests_test_stocks_api_util_coverage_testparseyearinput_test_none" }, { - "label": "register_error_handlers()", + "label": ".test_single_year()", "file_type": "code", - "source_file": "main/utils/errors.py", - "source_location": "L65", - "community": 104, - "norm_label": "register_error_handlers()", - "id": "utils_errors_register_error_handlers" + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L50", + "community": 106, + "norm_label": ".test_single_year()", + "id": "tests_test_stocks_api_util_coverage_testparseyearinput_test_single_year" }, { - "label": "get_session()", + "label": ".test_year_range()", "file_type": "code", - "source_file": "main/utils/http_session.py", - "source_location": "L9", - "community": 137, - "norm_label": "get_session()", - "id": "utils_http_session_get_session" + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L53", + "community": 106, + "norm_label": ".test_year_range()", + "id": "tests_test_stocks_api_util_coverage_testparseyearinput_test_year_range" }, { - "label": "Return a requests.Session for the current thread. Sessions are created la", - "file_type": "rationale", - "source_file": "main/utils/http_session.py", - "source_location": "L10", - "community": 137, - "norm_label": "return a requests.session for the current thread. sessions are created la", - "id": "utils_http_session_rationale_10" + "label": ".test_spaces()", + "file_type": "code", + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L56", + "community": 106, + "norm_label": ".test_spaces()", + "id": "tests_test_stocks_api_util_coverage_testparseyearinput_test_spaces" }, { - "label": "Close the main thread's session at interpreter shutdown.", - "file_type": "rationale", - "source_file": "main/utils/http_session.py", - "source_location": "L23", - "community": 564, - "norm_label": "close the main thread's session at interpreter shutdown.", - "id": "utils_http_session_rationale_23" + "label": ".test_three_years_raises()", + "file_type": "code", + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L59", + "community": 106, + "norm_label": ".test_three_years_raises()", + "id": "tests_test_stocks_api_util_coverage_testparseyearinput_test_three_years_raises" }, { - "label": ".test_connectivity_uses_get_session()", + "label": "TestParseYearInput", "file_type": "code", - "source_file": "tests/test_thread_safety.py", - "source_location": "L203", - "community": 172, - "norm_label": ".test_connectivity_uses_get_session()", - "id": "tests_test_thread_safety_testconcurrenthttpproxy_test_connectivity_uses_get_session" + "source_file": "tests/test_stocks_util.py", + "source_location": "L53", + "community": 106, + "norm_label": "testparseyearinput", + "id": "tests_test_stocks_util_testparseyearinput" }, { - "label": "CODE_REVIEW_FINAL.md", - "file_type": "document", - "source_file": "CODE_REVIEW_FINAL.md", - "source_location": "L1", - "community": 11, - "norm_label": "code_review_final.md", - "id": "code_review_final_md" + "label": ".test_parse_year_single()", + "file_type": "code", + "source_file": "tests/test_stocks_util.py", + "source_location": "L54", + "community": 106, + "norm_label": ".test_parse_year_single()", + "id": "tests_test_stocks_util_testparseyearinput_test_parse_year_single" }, { - "label": "Code Review Report \u2014 Final", - "file_type": "document", - "source_file": "CODE_REVIEW_FINAL.md", - "source_location": "L1", - "community": 11, - "norm_label": "code review report \u2014 final", - "id": "server_code_review_final_code_review_report_final" + "label": ".test_parse_year_range()", + "file_type": "code", + "source_file": "tests/test_stocks_util.py", + "source_location": "L59", + "community": 106, + "norm_label": ".test_parse_year_range()", + "id": "tests_test_stocks_util_testparseyearinput_test_parse_year_range" }, { - "label": "Summary", - "file_type": "document", - "source_file": "CODE_REVIEW_FINAL.md", - "source_location": "L10", - "community": 11, - "norm_label": "summary", - "id": "server_code_review_final_summary" + "label": ".test_parse_year_none()", + "file_type": "code", + "source_file": "tests/test_stocks_util.py", + "source_location": "L64", + "community": 106, + "norm_label": ".test_parse_year_none()", + "id": "tests_test_stocks_util_testparseyearinput_test_parse_year_none" }, { - "label": "HIGH Priority Findings", - "file_type": "document", - "source_file": "CODE_REVIEW_FINAL.md", - "source_location": "L24", - "community": 11, - "norm_label": "high priority findings", - "id": "server_code_review_final_high_priority_findings" + "label": ".test_parse_year_empty_string()", + "file_type": "code", + "source_file": "tests/test_stocks_util.py", + "source_location": "L69", + "community": 106, + "norm_label": ".test_parse_year_empty_string()", + "id": "tests_test_stocks_util_testparseyearinput_test_parse_year_empty_string" }, { - "label": "H1. Session Cookies Over HTTP", - "file_type": "document", - "source_file": "CODE_REVIEW_FINAL.md", - "source_location": "L26", - "community": 11, - "norm_label": "h1. session cookies over http", - "id": "server_code_review_final_h1_session_cookies_over_http" + "label": ".test_parse_year_with_spaces()", + "file_type": "code", + "source_file": "tests/test_stocks_util.py", + "source_location": "L74", + "community": 106, + "norm_label": ".test_parse_year_with_spaces()", + "id": "tests_test_stocks_util_testparseyearinput_test_parse_year_with_spaces" }, { - "label": "H2. Service \u2192 Controller Layer Violations", - "file_type": "document", - "source_file": "CODE_REVIEW_FINAL.md", - "source_location": "L32", - "community": 11, - "norm_label": "h2. service \u2192 controller layer violations", - "id": "server_code_review_final_h2_service_controller_layer_violations" + "label": ".test_parse_year_invalid_format()", + "file_type": "code", + "source_file": "tests/test_stocks_util.py", + "source_location": "L79", + "community": 106, + "norm_label": ".test_parse_year_invalid_format()", + "id": "tests_test_stocks_util_testparseyearinput_test_parse_year_invalid_format" }, { - "label": "H3. Bare `except:` Blocks in Scraper", - "file_type": "document", - "source_file": "CODE_REVIEW_FINAL.md", - "source_location": "L38", - "community": 11, - "norm_label": "h3. bare `except:` blocks in scraper", - "id": "server_code_review_final_h3_bare_except_blocks_in_scraper" + "label": ".test_parse_year_invalid_non_digit()", + "file_type": "code", + "source_file": "tests/test_stocks_util.py", + "source_location": "L84", + "community": 106, + "norm_label": ".test_parse_year_invalid_non_digit()", + "id": "tests_test_stocks_util_testparseyearinput_test_parse_year_invalid_non_digit" }, { - "label": "H4. Full DataFrame Copy Per Request", - "file_type": "document", - "source_file": "CODE_REVIEW_FINAL.md", - "source_location": "L44", - "community": 11, - "norm_label": "h4. full dataframe copy per request", - "id": "server_code_review_final_h4_full_dataframe_copy_per_request" + "label": "Invalid date format raises exception (line 132).", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L731", + "community": 543, + "norm_label": "invalid date format raises exception (line 132).", + "id": "tests_test_stocks_api_coverage_rationale_731" }, { - "label": "H5. Missing Database Indexes", - "file_type": "document", - "source_file": "CODE_REVIEW_FINAL.md", - "source_location": "L50", - "community": 11, - "norm_label": "h5. missing database indexes", - "id": "server_code_review_final_h5_missing_database_indexes" + "label": "No historical columns at all -> inner 400 caught by outer except -> 500.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L747", + "community": 127, + "norm_label": "no historical columns at all -> inner 400 caught by outer except -> 500.", + "id": "tests_test_stocks_api_coverage_rationale_747" }, { - "label": "H6. Scraper N+1 HTTP Pattern", - "file_type": "document", - "source_file": "CODE_REVIEW_FINAL.md", - "source_location": "L56", - "community": 11, - "norm_label": "h6. scraper n+1 http pattern", - "id": "server_code_review_final_h6_scraper_n_1_http_pattern" + "label": "Historical query with a year range.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L757", + "community": 28, + "norm_label": "historical query with a year range.", + "id": "tests_test_stocks_api_coverage_rationale_757" }, { - "label": "H7. Raw `SessionLocal()` Bypassing DI", - "file_type": "document", - "source_file": "CODE_REVIEW_FINAL.md", - "source_location": "L62", - "community": 11, - "norm_label": "h7. raw `sessionlocal()` bypassing di", - "id": "server_code_review_final_h7_raw_sessionlocal_bypassing_di" + "label": "Multiple search terms, all found in tickerIndex.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L764", + "community": 28, + "norm_label": "multiple search terms, all found in tickerindex.", + "id": "tests_test_stocks_api_coverage_rationale_764" }, { - "label": "MEDIUM Priority Findings", - "file_type": "document", - "source_file": "CODE_REVIEW_FINAL.md", - "source_location": "L70", - "community": 11, - "norm_label": "medium priority findings", - "id": "server_code_review_final_medium_priority_findings" + "label": "Tests covering query.py lines 142-202.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L773", + "community": 112, + "norm_label": "tests covering query.py lines 142-202.", + "id": "tests_test_stocks_api_coverage_rationale_773" }, { - "label": "M1. SQL Injection in Scraper", - "file_type": "document", - "source_file": "CODE_REVIEW_FINAL.md", - "source_location": "L72", - "community": 11, - "norm_label": "m1. sql injection in scraper", - "id": "server_code_review_final_m1_sql_injection_in_scraper" + "label": "Invalid date -> inner 400 caught by outer except -> 500.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L827", + "community": 39, + "norm_label": "invalid date -> inner 400 caught by outer except -> 500.", + "id": "tests_test_stocks_api_coverage_rationale_827" }, { - "label": "M2. Error Messages Leak Internal Details", - "file_type": "document", - "source_file": "CODE_REVIEW_FINAL.md", - "source_location": "L77", - "community": 11, - "norm_label": "m2. error messages leak internal details", - "id": "server_code_review_final_m2_error_messages_leak_internal_details" + "label": "search.strip() == '' should still dedup (line 181).", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L876", + "community": 39, + "norm_label": "search.strip() == '' should still dedup (line 181).", + "id": "tests_test_stocks_api_coverage_rationale_876" }, { - "label": "M3. CORS Allow Headers Wildcard", - "file_type": "document", - "source_file": "CODE_REVIEW_FINAL.md", - "source_location": "L82", - "community": 11, - "norm_label": "m3. cors allow headers wildcard", - "id": "server_code_review_final_m3_cors_allow_headers_wildcard" + "label": "Two dates in the range, both valid.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L898", + "community": 17, + "norm_label": "two dates in the range, both valid.", + "id": "tests_test_stocks_api_coverage_rationale_898" }, { - "label": "M4. API Key Stored in Plaintext", - "file_type": "document", - "source_file": "CODE_REVIEW_FINAL.md", - "source_location": "L87", - "community": 11, - "norm_label": "m4. api key stored in plaintext", - "id": "server_code_review_final_m4_api_key_stored_in_plaintext" + "label": "Single invalid date -> inner 400 caught by outer except -> 500.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L912", + "community": 46, + "norm_label": "single invalid date -> inner 400 caught by outer except -> 500.", + "id": "tests_test_stocks_api_coverage_rationale_912" }, { - "label": "M5. Cookie `secure` Flag Conditional", - "file_type": "document", - "source_file": "CODE_REVIEW_FINAL.md", - "source_location": "L92", - "community": 11, - "norm_label": "m5. cookie `secure` flag conditional", - "id": "server_code_review_final_m5_cookie_secure_flag_conditional" + "label": "Fields that don't exist in the dataframe are filtered out.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L922", + "community": 46, + "norm_label": "fields that don't exist in the dataframe are filtered out.", + "id": "tests_test_stocks_api_coverage_rationale_922" }, { - "label": "M6. No `pool_recycle` on SQLAlchemy Engines", - "file_type": "document", - "source_file": "CODE_REVIEW_FINAL.md", - "source_location": "L97", - "community": 11, - "norm_label": "m6. no `pool_recycle` on sqlalchemy engines", - "id": "server_code_review_final_m6_no_pool_recycle_on_sqlalchemy_engines" + "label": "Multiple search terms with tickerIndex.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L937", + "community": 39, + "norm_label": "multiple search terms with tickerindex.", + "id": "tests_test_stocks_api_coverage_rationale_937" }, { - "label": "Synchronous Blocking in Async Endpoint", - "file_type": "document", - "source_file": "CODE_REVIEW_FINAL.md", - "source_location": "L102", - "community": 11, - "norm_label": "synchronous blocking in async endpoint", - "id": "server_code_review_final_synchronous_blocking_in_async_endpoint" + "label": "Invalid date format raises exception (line 132).", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L730", + "community": 543, + "norm_label": "invalid date format raises exception (line 132).", + "id": "tests_test_stocks_api_coverage_rationale_730" }, { - "label": "M8. Scattered Manual commit/rollback", - "file_type": "document", - "source_file": "CODE_REVIEW_FINAL.md", - "source_location": "L107", - "community": 11, - "norm_label": "m8. scattered manual commit/rollback", - "id": "server_code_review_final_m8_scattered_manual_commit_rollback" + "label": "No historical columns at all -> inner 400 caught by outer except -> 500.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L746", + "community": 127, + "norm_label": "no historical columns at all -> inner 400 caught by outer except -> 500.", + "id": "tests_test_stocks_api_coverage_rationale_746" }, { - "label": "M9. Circular Module Dependencies", - "file_type": "document", - "source_file": "CODE_REVIEW_FINAL.md", - "source_location": "L112", - "community": 11, - "norm_label": "m9. circular module dependencies", - "id": "server_code_review_final_m9_circular_module_dependencies" + "label": "Historical query with a year range.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L756", + "community": 28, + "norm_label": "historical query with a year range.", + "id": "tests_test_stocks_api_coverage_rationale_756" }, { - "label": "M10. Code Duplication in query.py", - "file_type": "document", - "source_file": "CODE_REVIEW_FINAL.md", - "source_location": "L116", - "community": 11, - "norm_label": "m10. code duplication in query.py", - "id": "server_code_review_final_m10_code_duplication_in_query_py" + "label": "Tests covering query.py lines 142-202.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L772", + "community": 112, + "norm_label": "tests covering query.py lines 142-202.", + "id": "tests_test_stocks_api_coverage_rationale_772" }, { - "label": "M11. Ownership Check Duplication", - "file_type": "document", - "source_file": "CODE_REVIEW_FINAL.md", - "source_location": "L121", - "community": 11, - "norm_label": "m11. ownership check duplication", - "id": "server_code_review_final_m11_ownership_check_duplication" + "label": "Invalid date -> inner 400 caught by outer except -> 500.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L826", + "community": 39, + "norm_label": "invalid date -> inner 400 caught by outer except -> 500.", + "id": "tests_test_stocks_api_coverage_rationale_826" }, { - "label": "M12. Recursive NaN Replace on Deserialization", + "label": "search.strip() == '' should still dedup (line 181).", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L874", + "community": 46, + "norm_label": "search.strip() == '' should still dedup (line 181).", + "id": "tests_test_stocks_api_coverage_rationale_874" + }, + { + "label": "Single invalid date -> inner 400 caught by outer except -> 500.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L910", + "community": 46, + "norm_label": "single invalid date -> inner 400 caught by outer except -> 500.", + "id": "tests_test_stocks_api_coverage_rationale_910" + }, + { + "label": "Multiple search terms with tickerIndex.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L935", + "community": 39, + "norm_label": "multiple search terms with tickerindex.", + "id": "tests_test_stocks_api_coverage_rationale_935" + }, + { + "label": "Search with no index match falls back to string startswith.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L943", + "community": 17, + "norm_label": "search with no index match falls back to string startswith.", + "id": "tests_test_stocks_api_coverage_rationale_943" + }, + { + "label": "len(dateRange) == 1 -> single date filter.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L951", + "community": 17, + "norm_label": "len(daterange) == 1 -> single date filter.", + "id": "tests_test_stocks_api_coverage_rationale_951" + }, + { + "label": "Thread-safe proxy that delegates to per-thread sessions.", + "file_type": "rationale", + "source_file": "main/app/prometheus/generation.py", + "source_location": "L20", + "community": 29, + "norm_label": "thread-safe proxy that delegates to per-thread sessions.", + "id": "prometheus_generation_rationale_20" + }, + { + "label": "Tests covering query.py lines 77-132.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L582", + "community": 28, + "norm_label": "tests covering query.py lines 77-132.", + "id": "tests_test_stocks_api_coverage_rationale_582" + }, + { + "label": "Pass field name WITHOUT year (how categorizeColumns returns them).", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L620", + "community": 28, + "norm_label": "pass field name without year (how categorizecolumns returns them).", + "id": "tests_test_stocks_api_coverage_rationale_620" + }, + { + "label": "No historical data columns -> inner 400 caught by outer except -> 500.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L646", + "community": 28, + "norm_label": "no historical data columns -> inner 400 caught by outer except -> 500.", + "id": "tests_test_stocks_api_coverage_rationale_646" + }, + { + "label": "If an unexpected exception occurs (line 132).", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L671", + "community": 28, + "norm_label": "if an unexpected exception occurs (line 132).", + "id": "tests_test_stocks_api_coverage_rationale_671" + }, + { + "label": "Invalid date format raises exception (line 132).", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L684", + "community": 543, + "norm_label": "invalid date format raises exception (line 132).", + "id": "tests_test_stocks_api_coverage_rationale_684" + }, + { + "label": "No historical columns at all -> inner 400 caught by outer except -> 500.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L700", + "community": 127, + "norm_label": "no historical columns at all -> inner 400 caught by outer except -> 500.", + "id": "tests_test_stocks_api_coverage_rationale_700" + }, + { + "label": "Historical query with a year range.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L710", + "community": 28, + "norm_label": "historical query with a year range.", + "id": "tests_test_stocks_api_coverage_rationale_710" + }, + { + "label": "Tests covering query.py lines 142-202.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L726", + "community": 112, + "norm_label": "tests covering query.py lines 142-202.", + "id": "tests_test_stocks_api_coverage_rationale_726" + }, + { + "label": "Invalid date -> inner 400 caught by outer except -> 500.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L780", + "community": 39, + "norm_label": "invalid date -> inner 400 caught by outer except -> 500.", + "id": "tests_test_stocks_api_coverage_rationale_780" + }, + { + "label": "search.strip() == '' should still dedup (line 181).", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L828", + "community": 39, + "norm_label": "search.strip() == '' should still dedup (line 181).", + "id": "tests_test_stocks_api_coverage_rationale_828" + }, + { + "label": "DataFrame without TIME column.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L837", + "community": 39, + "norm_label": "dataframe without time column.", + "id": "tests_test_stocks_api_coverage_rationale_837" + }, + { + "label": "Two dates in the range, both valid.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L850", + "community": 17, + "norm_label": "two dates in the range, both valid.", + "id": "tests_test_stocks_api_coverage_rationale_850" + }, + { + "label": "Single invalid date -> inner 400 caught by outer except -> 500.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L864", + "community": 46, + "norm_label": "single invalid date -> inner 400 caught by outer except -> 500.", + "id": "tests_test_stocks_api_coverage_rationale_864" + }, + { + "label": "Multiple search terms with tickerIndex.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L889", + "community": 39, + "norm_label": "multiple search terms with tickerindex.", + "id": "tests_test_stocks_api_coverage_rationale_889" + }, + { + "label": "Search with no index match falls back to string startswith.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L897", + "community": 17, + "norm_label": "search with no index match falls back to string startswith.", + "id": "tests_test_stocks_api_coverage_rationale_897" + }, + { + "label": "checkMySqlConnection \u2014 success, errors, engine=None paths.", + "file_type": "rationale", + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L8", + "community": 596, + "norm_label": "checkmysqlconnection \u2014 success, errors, engine=none paths.", + "id": "tests_test_connectivity_coverage_rationale_8" + }, + { + "label": "checkServiceConnection \u2014 success, not found, errors.", + "file_type": "rationale", + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L105", + "community": 595, + "norm_label": "checkserviceconnection \u2014 success, not found, errors.", + "id": "tests_test_connectivity_coverage_rationale_105" + }, + { + "label": "Create a test client for the status endpoint without running lifespan.", + "file_type": "rationale", + "source_file": "tests/test_status_endpoint.py", + "source_location": "L9", + "community": 184, + "norm_label": "create a test client for the status endpoint without running lifespan.", + "id": "tests_test_status_endpoint_rationale_9" + }, + { + "label": "test_cache_scheduler_starts_daemon_thread()", + "file_type": "code", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L54", + "community": 500, + "norm_label": "test_cache_scheduler_starts_daemon_thread()", + "id": "tests_test_stocks_api_coverage_test_cache_scheduler_starts_daemon_thread" + }, + { + "label": "Tests covering query.py lines 77-132.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L583", + "community": 28, + "norm_label": "tests covering query.py lines 77-132.", + "id": "tests_test_stocks_api_coverage_rationale_583" + }, + { + "label": "Pass field name WITHOUT year (how categorizeColumns returns them).", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L621", + "community": 28, + "norm_label": "pass field name without year (how categorizecolumns returns them).", + "id": "tests_test_stocks_api_coverage_rationale_621" + }, + { + "label": "No historical data columns -> inner 400 caught by outer except -> 500.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L647", + "community": 28, + "norm_label": "no historical data columns -> inner 400 caught by outer except -> 500.", + "id": "tests_test_stocks_api_coverage_rationale_647" + }, + { + "label": "If an unexpected exception occurs (line 132).", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L672", + "community": 28, + "norm_label": "if an unexpected exception occurs (line 132).", + "id": "tests_test_stocks_api_coverage_rationale_672" + }, + { + "label": "Invalid date format raises exception (line 132).", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L685", + "community": 543, + "norm_label": "invalid date format raises exception (line 132).", + "id": "tests_test_stocks_api_coverage_rationale_685" + }, + { + "label": "No historical columns at all -> inner 400 caught by outer except -> 500.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L701", + "community": 127, + "norm_label": "no historical columns at all -> inner 400 caught by outer except -> 500.", + "id": "tests_test_stocks_api_coverage_rationale_701" + }, + { + "label": "Historical query with a year range.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L711", + "community": 28, + "norm_label": "historical query with a year range.", + "id": "tests_test_stocks_api_coverage_rationale_711" + }, + { + "label": "Tests covering query.py lines 142-202.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L727", + "community": 112, + "norm_label": "tests covering query.py lines 142-202.", + "id": "tests_test_stocks_api_coverage_rationale_727" + }, + { + "label": "Invalid date -> inner 400 caught by outer except -> 500.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L781", + "community": 39, + "norm_label": "invalid date -> inner 400 caught by outer except -> 500.", + "id": "tests_test_stocks_api_coverage_rationale_781" + }, + { + "label": "DataFrame without TIME column.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L838", + "community": 39, + "norm_label": "dataframe without time column.", + "id": "tests_test_stocks_api_coverage_rationale_838" + }, + { + "label": "Two dates in the range, both valid.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L851", + "community": 17, + "norm_label": "two dates in the range, both valid.", + "id": "tests_test_stocks_api_coverage_rationale_851" + }, + { + "label": "Single invalid date -> inner 400 caught by outer except -> 500.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L865", + "community": 46, + "norm_label": "single invalid date -> inner 400 caught by outer except -> 500.", + "id": "tests_test_stocks_api_coverage_rationale_865" + }, + { + "label": "Fields that don't exist in the dataframe are filtered out.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L875", + "community": 46, + "norm_label": "fields that don't exist in the dataframe are filtered out.", + "id": "tests_test_stocks_api_coverage_rationale_875" + }, + { + "label": "Multiple search terms with tickerIndex.", + "file_type": "rationale", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L890", + "community": 39, + "norm_label": "multiple search terms with tickerindex.", + "id": "tests_test_stocks_api_coverage_rationale_890" + }, + { + "label": "_hash_key()", + "file_type": "code", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L16", + "community": 26, + "norm_label": "_hash_key()", + "id": "stocks_api_key_hash_key" + }, + { + "label": "Return SHA-256 hex digest of the given key.", + "file_type": "rationale", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L17", + "community": 26, + "norm_label": "return sha-256 hex digest of the given key.", + "id": "stocks_api_key_rationale_17" + }, + { + "label": "_build_error_response()", + "file_type": "code", + "source_file": "main/utils/errors.py", + "source_location": "L27", + "community": 530, + "norm_label": "_build_error_response()", + "id": "utils_errors_build_error_response" + }, + { + "label": "http_exception_handler()", + "file_type": "code", + "source_file": "main/utils/errors.py", + "source_location": "L37", + "community": 530, + "norm_label": "http_exception_handler()", + "id": "utils_errors_http_exception_handler" + }, + { + "label": "validation_exception_handler()", + "file_type": "code", + "source_file": "main/utils/errors.py", + "source_location": "L44", + "community": 530, + "norm_label": "validation_exception_handler()", + "id": "utils_errors_validation_exception_handler" + }, + { + "label": "generic_exception_handler()", + "file_type": "code", + "source_file": "main/utils/errors.py", + "source_location": "L56", + "community": 530, + "norm_label": "generic_exception_handler()", + "id": "utils_errors_generic_exception_handler" + }, + { + "label": "register_error_handlers()", + "file_type": "code", + "source_file": "main/utils/errors.py", + "source_location": "L65", + "community": 104, + "norm_label": "register_error_handlers()", + "id": "utils_errors_register_error_handlers" + }, + { + "label": "get_session()", + "file_type": "code", + "source_file": "main/utils/http_session.py", + "source_location": "L9", + "community": 580, + "norm_label": "get_session()", + "id": "utils_http_session_get_session" + }, + { + "label": "Return a requests.Session for the current thread. Sessions are created la", + "file_type": "rationale", + "source_file": "main/utils/http_session.py", + "source_location": "L10", + "community": 580, + "norm_label": "return a requests.session for the current thread. sessions are created la", + "id": "utils_http_session_rationale_10" + }, + { + "label": "Close the main thread's session at interpreter shutdown.", + "file_type": "rationale", + "source_file": "main/utils/http_session.py", + "source_location": "L23", + "community": 512, + "norm_label": "close the main thread's session at interpreter shutdown.", + "id": "utils_http_session_rationale_23" + }, + { + "label": ".test_connectivity_uses_get_session()", + "file_type": "code", + "source_file": "tests/test_thread_safety.py", + "source_location": "L203", + "community": 172, + "norm_label": ".test_connectivity_uses_get_session()", + "id": "tests_test_thread_safety_testconcurrenthttpproxy_test_connectivity_uses_get_session" + }, + { + "label": "CODE_REVIEW_FINAL.md", + "file_type": "document", + "source_file": "CODE_REVIEW_FINAL.md", + "source_location": "L1", + "community": 11, + "norm_label": "code_review_final.md", + "id": "code_review_final_md" + }, + { + "label": "Code Review Report \u2014 Final", + "file_type": "document", + "source_file": "CODE_REVIEW_FINAL.md", + "source_location": "L1", + "community": 11, + "norm_label": "code review report \u2014 final", + "id": "server_code_review_final_code_review_report_final" + }, + { + "label": "Summary", + "file_type": "document", + "source_file": "CODE_REVIEW_FINAL.md", + "source_location": "L10", + "community": 11, + "norm_label": "summary", + "id": "server_code_review_final_summary" + }, + { + "label": "HIGH Priority Findings", + "file_type": "document", + "source_file": "CODE_REVIEW_FINAL.md", + "source_location": "L24", + "community": 11, + "norm_label": "high priority findings", + "id": "server_code_review_final_high_priority_findings" + }, + { + "label": "H1. Session Cookies Over HTTP", + "file_type": "document", + "source_file": "CODE_REVIEW_FINAL.md", + "source_location": "L26", + "community": 11, + "norm_label": "h1. session cookies over http", + "id": "server_code_review_final_h1_session_cookies_over_http" + }, + { + "label": "H2. Service \u2192 Controller Layer Violations", + "file_type": "document", + "source_file": "CODE_REVIEW_FINAL.md", + "source_location": "L32", + "community": 11, + "norm_label": "h2. service \u2192 controller layer violations", + "id": "server_code_review_final_h2_service_controller_layer_violations" + }, + { + "label": "H3. Bare `except:` Blocks in Scraper", + "file_type": "document", + "source_file": "CODE_REVIEW_FINAL.md", + "source_location": "L38", + "community": 11, + "norm_label": "h3. bare `except:` blocks in scraper", + "id": "server_code_review_final_h3_bare_except_blocks_in_scraper" + }, + { + "label": "H4. Full DataFrame Copy Per Request", + "file_type": "document", + "source_file": "CODE_REVIEW_FINAL.md", + "source_location": "L44", + "community": 11, + "norm_label": "h4. full dataframe copy per request", + "id": "server_code_review_final_h4_full_dataframe_copy_per_request" + }, + { + "label": "H5. Missing Database Indexes", + "file_type": "document", + "source_file": "CODE_REVIEW_FINAL.md", + "source_location": "L50", + "community": 11, + "norm_label": "h5. missing database indexes", + "id": "server_code_review_final_h5_missing_database_indexes" + }, + { + "label": "H6. Scraper N+1 HTTP Pattern", + "file_type": "document", + "source_file": "CODE_REVIEW_FINAL.md", + "source_location": "L56", + "community": 11, + "norm_label": "h6. scraper n+1 http pattern", + "id": "server_code_review_final_h6_scraper_n_1_http_pattern" + }, + { + "label": "H7. Raw `SessionLocal()` Bypassing DI", + "file_type": "document", + "source_file": "CODE_REVIEW_FINAL.md", + "source_location": "L62", + "community": 11, + "norm_label": "h7. raw `sessionlocal()` bypassing di", + "id": "server_code_review_final_h7_raw_sessionlocal_bypassing_di" + }, + { + "label": "MEDIUM Priority Findings", + "file_type": "document", + "source_file": "CODE_REVIEW_FINAL.md", + "source_location": "L70", + "community": 11, + "norm_label": "medium priority findings", + "id": "server_code_review_final_medium_priority_findings" + }, + { + "label": "M1. SQL Injection in Scraper", + "file_type": "document", + "source_file": "CODE_REVIEW_FINAL.md", + "source_location": "L72", + "community": 11, + "norm_label": "m1. sql injection in scraper", + "id": "server_code_review_final_m1_sql_injection_in_scraper" + }, + { + "label": "M2. Error Messages Leak Internal Details", + "file_type": "document", + "source_file": "CODE_REVIEW_FINAL.md", + "source_location": "L77", + "community": 11, + "norm_label": "m2. error messages leak internal details", + "id": "server_code_review_final_m2_error_messages_leak_internal_details" + }, + { + "label": "M3. CORS Allow Headers Wildcard", + "file_type": "document", + "source_file": "CODE_REVIEW_FINAL.md", + "source_location": "L82", + "community": 11, + "norm_label": "m3. cors allow headers wildcard", + "id": "server_code_review_final_m3_cors_allow_headers_wildcard" + }, + { + "label": "M4. API Key Stored in Plaintext", + "file_type": "document", + "source_file": "CODE_REVIEW_FINAL.md", + "source_location": "L87", + "community": 11, + "norm_label": "m4. api key stored in plaintext", + "id": "server_code_review_final_m4_api_key_stored_in_plaintext" + }, + { + "label": "M5. Cookie `secure` Flag Conditional", + "file_type": "document", + "source_file": "CODE_REVIEW_FINAL.md", + "source_location": "L92", + "community": 11, + "norm_label": "m5. cookie `secure` flag conditional", + "id": "server_code_review_final_m5_cookie_secure_flag_conditional" + }, + { + "label": "M6. No `pool_recycle` on SQLAlchemy Engines", + "file_type": "document", + "source_file": "CODE_REVIEW_FINAL.md", + "source_location": "L97", + "community": 11, + "norm_label": "m6. no `pool_recycle` on sqlalchemy engines", + "id": "server_code_review_final_m6_no_pool_recycle_on_sqlalchemy_engines" + }, + { + "label": "Synchronous Blocking in Async Endpoint", + "file_type": "document", + "source_file": "CODE_REVIEW_FINAL.md", + "source_location": "L102", + "community": 11, + "norm_label": "synchronous blocking in async endpoint", + "id": "server_code_review_final_synchronous_blocking_in_async_endpoint" + }, + { + "label": "M8. Scattered Manual commit/rollback", + "file_type": "document", + "source_file": "CODE_REVIEW_FINAL.md", + "source_location": "L107", + "community": 11, + "norm_label": "m8. scattered manual commit/rollback", + "id": "server_code_review_final_m8_scattered_manual_commit_rollback" + }, + { + "label": "M9. Circular Module Dependencies", + "file_type": "document", + "source_file": "CODE_REVIEW_FINAL.md", + "source_location": "L112", + "community": 11, + "norm_label": "m9. circular module dependencies", + "id": "server_code_review_final_m9_circular_module_dependencies" + }, + { + "label": "M10. Code Duplication in query.py", + "file_type": "document", + "source_file": "CODE_REVIEW_FINAL.md", + "source_location": "L116", + "community": 11, + "norm_label": "m10. code duplication in query.py", + "id": "server_code_review_final_m10_code_duplication_in_query_py" + }, + { + "label": "M11. Ownership Check Duplication", + "file_type": "document", + "source_file": "CODE_REVIEW_FINAL.md", + "source_location": "L121", + "community": 11, + "norm_label": "m11. ownership check duplication", + "id": "server_code_review_final_m11_ownership_check_duplication" + }, + { + "label": "M12. Recursive NaN Replace on Deserialization", "file_type": "document", "source_file": "CODE_REVIEW_FINAL.md", "source_location": "L126", @@ -51689,7 +53399,7 @@ "file_type": "rationale", "source_file": "main/utils/http_session.py", "source_location": "L9", - "community": 137, + "community": 580, "norm_label": "return a requests.session for the current thread. sessions are created la", "id": "utils_http_session_rationale_9" }, @@ -52157,7 +53867,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L489", - "community": 520, + "community": 577, "norm_label": "replacenan handles direct float nan values (line 34).", "id": "tests_test_stocks_api_coverage_rationale_489" }, @@ -52184,7 +53894,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L522", - "community": 3, + "community": 86, "norm_label": "tests covering query.py lines 50-67.", "id": "tests_test_stocks_api_coverage_rationale_522" }, @@ -52193,7 +53903,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L577", - "community": 112, + "community": 28, "norm_label": "tests covering query.py lines 77-132.", "id": "tests_test_stocks_api_coverage_rationale_577" }, @@ -52238,7 +53948,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L705", - "community": 562, + "community": 28, "norm_label": "historical query with a year range.", "id": "tests_test_stocks_api_coverage_rationale_705" }, @@ -52265,7 +53975,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L775", - "community": 497, + "community": 39, "norm_label": "invalid date -> inner 400 caught by outer except -> 500.", "id": "tests_test_stocks_api_coverage_rationale_775" }, @@ -52274,7 +53984,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L823", - "community": 17, + "community": 39, "norm_label": "search.strip() == '' should still dedup (line 181).", "id": "tests_test_stocks_api_coverage_rationale_823" }, @@ -52283,7 +53993,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" }, @@ -52310,7 +54020,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L892", - "community": 39, + "community": 17, "norm_label": "search with no index match falls back to string startswith.", "id": "tests_test_stocks_api_coverage_rationale_892" }, @@ -52319,7 +54029,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" }, @@ -52328,7 +54038,7 @@ "file_type": "rationale", "source_file": "tests/conftest.py", "source_location": "L62", - "community": 539, + "community": 105, "norm_label": "testclient with all routers mounted \u2014 no lifespan (no db/service init). o", "id": "tests_conftest_rationale_62" }, @@ -52337,7 +54047,7 @@ "file_type": "rationale", "source_file": "tests/conftest.py", "source_location": "L61", - "community": 539, + "community": 105, "norm_label": "testclient with all routers mounted \u2014 no lifespan (no db/service init). o", "id": "tests_conftest_rationale_61" }, @@ -52346,7 +54056,7 @@ "file_type": "rationale", "source_file": "tests/conftest.py", "source_location": "L57", - "community": 539, + "community": 105, "norm_label": "testclient with all routers mounted \u2014 no lifespan (no db/service init). o", "id": "tests_conftest_rationale_57" }, @@ -52355,7 +54065,7 @@ "file_type": "rationale", "source_file": "tests/conftest.py", "source_location": "L49", - "community": 539, + "community": 105, "norm_label": "testclient with all routers mounted \u2014 no lifespan (no db/service init). o", "id": "tests_conftest_rationale_49" }, @@ -52895,7 +54605,7 @@ "file_type": "code", "source_file": "tests/test_stocks_cache.py", "source_location": "L135", - "community": 522, + "community": 590, "norm_label": "testqueryoptimization", "id": "tests_test_stocks_cache_testqueryoptimization" }, @@ -52904,7 +54614,7 @@ "file_type": "code", "source_file": "tests/test_stocks_cache.py", "source_location": "L138", - "community": 522, + "community": 590, "norm_label": ".test_all_optimizations_present()", "id": "tests_test_stocks_cache_testqueryoptimization_test_all_optimizations_present" }, @@ -52913,7 +54623,7 @@ "file_type": "code", "source_file": "tests/test_stocks_cache.py", "source_location": "L153", - "community": 522, + "community": 590, "norm_label": ".test_query_filter_uses_optimization()", "id": "tests_test_stocks_cache_testqueryoptimization_test_query_filter_uses_optimization" }, @@ -53165,7 +54875,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L136", - "community": 522, + "community": 590, "norm_label": "integration tests for all query optimizations", "id": "tests_test_stocks_cache_rationale_136" }, @@ -53174,7 +54884,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L139", - "community": 522, + "community": 590, "norm_label": "all optimizations should be implemented", "id": "tests_test_stocks_cache_rationale_139" }, @@ -53183,7 +54893,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L154", - "community": 522, + "community": 590, "norm_label": "query filter should use ticker index", "id": "tests_test_stocks_cache_rationale_154" }, @@ -53453,7 +55163,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L138", - "community": 522, + "community": 590, "norm_label": "integration tests for all query optimizations", "id": "tests_test_stocks_cache_rationale_138" }, @@ -53462,7 +55172,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L141", - "community": 522, + "community": 590, "norm_label": "all optimizations should be implemented", "id": "tests_test_stocks_cache_rationale_141" }, @@ -53471,7 +55181,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L156", - "community": 522, + "community": 590, "norm_label": "query filter should use ticker index", "id": "tests_test_stocks_cache_rationale_156" }, @@ -53651,7 +55361,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L1", - "community": 130, + "community": 183, "norm_label": "test_stocks_optimization.py", "id": "tests_test_stocks_optimization_py" }, @@ -53714,7 +55424,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L72", - "community": 183, + "community": 101, "norm_label": "testquerycaching", "id": "tests_test_stocks_optimization_testquerycaching" }, @@ -53723,7 +55433,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L75", - "community": 183, + "community": 101, "norm_label": ".test_cache_manager_has_caches_method()", "id": "tests_test_stocks_optimization_testquerycaching_test_cache_manager_has_caches_method" }, @@ -53732,7 +55442,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L83", - "community": 183, + "community": 101, "norm_label": ".test_querycache_ttl_configuration()", "id": "tests_test_stocks_optimization_testquerycaching_test_queryCache_ttl_configuration" }, @@ -53741,7 +55451,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L91", - "community": 183, + "community": 101, "norm_label": ".test_get_cached_stocks_respects_columns_parameter()", "id": "tests_test_stocks_optimization_testquerycaching_test_get_cached_stocks_respects_columns_parameter" }, @@ -53750,7 +55460,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L101", - "community": 183, + "community": 101, "norm_label": ".test_different_queries_not_cached()", "id": "tests_test_stocks_optimization_testquerycaching_test_different_queries_not_cached" }, @@ -53759,7 +55469,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L105", - "community": 183, + "community": 101, "norm_label": ".test_cache_expiry_after_ttl()", "id": "tests_test_stocks_optimization_testquerycaching_test_cache_expiry_after_ttl" }, @@ -53768,7 +55478,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L111", - "community": 130, + "community": 183, "norm_label": "testconnectionpool", "id": "tests_test_stocks_optimization_testconnectionpool" }, @@ -53777,7 +55487,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L114", - "community": 130, + "community": 183, "norm_label": ".test_stocks_engine_has_pool_configuration()", "id": "tests_test_stocks_optimization_testconnectionpool_test_stocks_engine_has_pool_configuration" }, @@ -53786,7 +55496,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L123", - "community": 130, + "community": 183, "norm_label": "testlazydeserialization", "id": "tests_test_stocks_optimization_testlazydeserialization" }, @@ -53795,7 +55505,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L126", - "community": 130, + "community": 183, "norm_label": ".test_query_manager_has_deserialize_method()", "id": "tests_test_stocks_optimization_testlazydeserialization_test_query_manager_has_deserialize_method" }, @@ -53804,7 +55514,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L137", - "community": 130, + "community": 183, "norm_label": "testqueryoptimization", "id": "tests_test_stocks_optimization_testqueryoptimization" }, @@ -53813,7 +55523,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L140", - "community": 130, + "community": 183, "norm_label": ".test_all_optimizations_present()", "id": "tests_test_stocks_optimization_testqueryoptimization_test_all_optimizations_present" }, @@ -53822,7 +55532,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L155", - "community": 130, + "community": 183, "norm_label": ".test_query_filter_uses_optimization()", "id": "tests_test_stocks_optimization_testqueryoptimization_test_query_filter_uses_optimization" }, @@ -53894,7 +55604,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L301", - "community": 130, + "community": 183, "norm_label": "testfilterbysearchterms", "id": "tests_test_stocks_optimization_testfilterbysearchterms" }, @@ -53903,7 +55613,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L304", - "community": 130, + "community": 183, "norm_label": ".test_filter_with_tickerindex()", "id": "tests_test_stocks_optimization_testfilterbysearchterms_test_filter_with_tickerIndex" }, @@ -53912,7 +55622,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L310", - "community": 130, + "community": 183, "norm_label": "testqueryperformance", "id": "tests_test_stocks_optimization_testqueryperformance" }, @@ -53921,7 +55631,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L313", - "community": 130, + "community": 183, "norm_label": ".test_query_response_time_under_1_second()", "id": "tests_test_stocks_optimization_testqueryperformance_test_query_response_time_under_1_second" }, @@ -53984,7 +55694,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L73", - "community": 183, + "community": 101, "norm_label": "tests for query result caching", "id": "tests_test_stocks_optimization_rationale_73" }, @@ -53993,7 +55703,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L76", - "community": 183, + "community": 101, "norm_label": "cachemanager should track cached queries", "id": "tests_test_stocks_optimization_rationale_76" }, @@ -54002,7 +55712,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L84", - "community": 183, + "community": 101, "norm_label": "query cache should have configurable ttl", "id": "tests_test_stocks_optimization_rationale_84" }, @@ -54011,7 +55721,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L92", - "community": 183, + "community": 101, "norm_label": "getcachedstocks should support column filtering", "id": "tests_test_stocks_optimization_rationale_92" }, @@ -54020,7 +55730,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L102", - "community": 183, + "community": 101, "norm_label": "different query parameters should not share cache", "id": "tests_test_stocks_optimization_rationale_102" }, @@ -54029,7 +55739,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L106", - "community": 183, + "community": 101, "norm_label": "cache should expire after ttl", "id": "tests_test_stocks_optimization_rationale_106" }, @@ -54038,7 +55748,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L112", - "community": 130, + "community": 183, "norm_label": "tests for connection pool configuration", "id": "tests_test_stocks_optimization_rationale_112" }, @@ -54047,7 +55757,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L115", - "community": 130, + "community": 183, "norm_label": "stocks engine should have optimized pool settings", "id": "tests_test_stocks_optimization_rationale_115" }, @@ -54056,7 +55766,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L124", - "community": 130, + "community": 183, "norm_label": "tests for lazy json deserialization", "id": "tests_test_stocks_optimization_rationale_124" }, @@ -54065,7 +55775,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L127", - "community": 130, + "community": 183, "norm_label": "query manager should have deserialize method", "id": "tests_test_stocks_optimization_rationale_127" }, @@ -54074,7 +55784,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L138", - "community": 130, + "community": 183, "norm_label": "integration tests for all query optimizations", "id": "tests_test_stocks_optimization_rationale_138" }, @@ -54083,7 +55793,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L141", - "community": 130, + "community": 183, "norm_label": "all optimizations should be implemented", "id": "tests_test_stocks_optimization_rationale_141" }, @@ -54092,7 +55802,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L156", - "community": 130, + "community": 183, "norm_label": "query filter should use ticker index", "id": "tests_test_stocks_optimization_rationale_156" }, @@ -54164,7 +55874,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L302", - "community": 130, + "community": 183, "norm_label": "tests for optimized search filtering", "id": "tests_test_stocks_optimization_rationale_302" }, @@ -54173,7 +55883,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L305", - "community": 130, + "community": 183, "norm_label": "filter should use ticker index for o(1) lookup", "id": "tests_test_stocks_optimization_rationale_305" }, @@ -54182,7 +55892,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L311", - "community": 130, + "community": 183, "norm_label": "performance tests for query operations", "id": "tests_test_stocks_optimization_rationale_311" }, @@ -54191,7 +55901,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L314", - "community": 130, + "community": 183, "norm_label": "query should respond within 1 second", "id": "tests_test_stocks_optimization_rationale_314" }, @@ -54209,7 +55919,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L173", - "community": 130, + "community": 183, "norm_label": "tests for optimized search filtering", "id": "tests_test_stocks_optimization_rationale_173" }, @@ -54218,7 +55928,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L176", - "community": 130, + "community": 183, "norm_label": "filter should use ticker index for o(1) lookup", "id": "tests_test_stocks_optimization_rationale_176" }, @@ -54227,7 +55937,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L182", - "community": 130, + "community": 183, "norm_label": "performance tests for query operations", "id": "tests_test_stocks_optimization_rationale_182" }, @@ -54236,7 +55946,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L185", - "community": 130, + "community": 183, "norm_label": "query should respond within 1 second", "id": "tests_test_stocks_optimization_rationale_185" }, @@ -54519,7 +56229,7 @@ "label": "FastAPI", "file_type": "rationale", "source_file": "README.md", - "community": 500, + "community": 482, "norm_label": "fastapi", "id": "fastapi" }, @@ -54559,7 +56269,7 @@ "label": "Authentication System", "file_type": "document", "source_file": "docs/authentication.md", - "community": 491, + "community": 43, "norm_label": "authentication system", "id": "authentication" }, @@ -54567,7 +56277,7 @@ "label": "JWT Authentication", "file_type": "rationale", "source_file": "docs/authentication.md", - "community": 491, + "community": 43, "norm_label": "jwt authentication", "id": "jwt" }, @@ -54575,7 +56285,7 @@ "label": "Google OAuth", "file_type": "rationale", "source_file": "docs/authentication.md", - "community": 491, + "community": 43, "norm_label": "google oauth", "id": "google_oauth" }, @@ -54663,7 +56373,7 @@ "label": "Pytest Testing", "file_type": "rationale", "source_file": "pyproject.toml", - "community": 93, + "community": 251, "norm_label": "pytest testing", "id": "pytest" }, @@ -54676,15390 +56386,17358 @@ "id": "mypy" }, { - "label": "Permission System", - "file_type": "rationale", - "source_file": "docs/user.md", - "community": 71, - "norm_label": "permission system", - "id": "permission_system" + "label": "Permission System", + "file_type": "rationale", + "source_file": "docs/user.md", + "community": 71, + "norm_label": "permission system", + "id": "permission_system" + }, + { + "label": "Ma'at Stock Algorithm", + "file_type": "rationale", + "source_file": "TODO.md", + "community": 71, + "norm_label": "ma'at stock algorithm", + "id": "ma_at" + }, + { + "label": "Thoth Wallet Management", + "file_type": "rationale", + "source_file": "TODO.md", + "community": 71, + "norm_label": "thoth wallet management", + "id": "thoth" + }, + { + "label": "Ogum Algo Trading", + "file_type": "rationale", + "source_file": "TODO.md", + "community": 71, + "norm_label": "ogum algo trading", + "id": "ogum" + }, + { + "label": "Fundamental Data", + "file_type": "rationale", + "source_file": "docs/stocks_api.md", + "community": 71, + "norm_label": "fundamental data", + "id": "fundamental_data" + }, + { + "label": "Historical Data", + "file_type": "rationale", + "source_file": "docs/stocks_api.md", + "community": 71, + "norm_label": "historical data", + "id": "historical_data" + }, + { + "label": "Value Investing", + "file_type": "rationale", + "source_file": "docs/stocks_api.md", + "community": 71, + "norm_label": "value investing", + "id": "value_investing" + } + ], + "links": [ + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "benchmark_latency.py", + "source_location": "L20", + "weight": 1.0, + "confidence_score": 1.0, + "source": "benchmark_latency_py", + "target": "server_benchmark_latency_bench" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "benchmark_latency.py", + "source_location": "L35", + "weight": 1.0, + "confidence_score": 1.0, + "source": "benchmark_latency_py", + "target": "server_benchmark_latency_hammer" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "benchmark_latency.py", + "source_location": "L46", + "weight": 1.0, + "confidence_score": 1.0, + "source": "benchmark_latency_py", + "target": "server_benchmark_latency_stats" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "benchmark_latency.py", + "source_location": "L60", + "weight": 1.0, + "confidence_score": 1.0, + "source": "benchmark_latency_py", + "target": "server_benchmark_latency_main" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "benchmark_latency.py", + "source_location": "L75", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_benchmark_latency_main", + "target": "server_benchmark_latency_bench" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "benchmark_latency.py", + "source_location": "L92", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_benchmark_latency_main", + "target": "server_benchmark_latency_stats" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "ci.ps1", + "source_location": "L25", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ci_ps1", + "target": "server_ci_write_step" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "ci.ps1", + "source_location": "L33", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ci_ps1", + "target": "server_ci_write_pass" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "ci.ps1", + "source_location": "L39", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ci_ps1", + "target": "server_ci_write_fail" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "ci.ps1", + "source_location": "L45", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ci_ps1", + "target": "server_ci_run_check" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "ci.ps1", + "source_location": "L48", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ci_ps1", + "target": "server_ci_write_fix" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "source_file": "ci.ps1", + "source_location": "L47", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_ci_write_step", + "target": "server_ci_run_check" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "source_file": "ci.ps1", + "source_location": "L52", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_ci_write_pass", + "target": "server_ci_run_check" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "source_file": "ci.ps1", + "source_location": "L54", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_ci_write_fail", + "target": "server_ci_run_check" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "config.py", + "source_location": "L9", + "weight": 1.0, + "confidence_score": 1.0, + "source": "config_py", + "target": "server_config_applyipv4force" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "config.py", + "source_location": "L29", + "weight": 1.0, + "confidence_score": 1.0, + "source": "config_py", + "target": "server_config_mysqlsettings" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "config.py", + "source_location": "L46", + "weight": 1.0, + "confidence_score": 1.0, + "source": "config_py", + "target": "server_config_usersettings" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "config.py", + "source_location": "L65", + "weight": 1.0, + "confidence_score": 1.0, + "source": "config_py", + "target": "server_config_stocksapisettings" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "config.py", + "source_location": "L59", + "weight": 1.0, + "confidence_score": 1.0, + "source": "config_py", + "target": "server_config_orunmilasettings" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "config.py", + "source_location": "L90", + "weight": 1.0, + "confidence_score": 1.0, + "source": "config_py", + "target": "server_config_scrapersettings" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "config.py", + "source_location": "L101", + "weight": 1.0, + "confidence_score": 1.0, + "source": "config_py", + "target": "server_config_discordsettings" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "config.py", + "source_location": "L109", + "weight": 1.0, + "confidence_score": 1.0, + "source": "config_py", + "target": "server_config_config" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "config.py", + "source_location": "L144", + "weight": 1.0, + "confidence_score": 1.0, + "source": "config_py", + "target": "server_config_getsession" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "config.py", + "source_location": "L151", + "weight": 1.0, + "confidence_score": 1.0, + "source": "config_py", + "target": "server_config_getstockssession" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "config.py", + "source_location": "L79", + "weight": 1.0, + "confidence_score": 1.0, + "source": "config_py", + "target": "server_config_prometheussettings" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "config.py", + "source_location": "L20", + "weight": 1.0, + "confidence_score": 1.0, + "source": "config_py", + "target": "server_config_basemansasettings" + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "config.py", + "source_location": "L23", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_config_mysqlsettings", + "target": "basesettings" + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "config.py", + "source_location": "L29", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_config_basemansasettings", + "target": "server_config_mysqlsettings" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "config.py", + "source_location": "L43", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_config_mysqlsettings", + "target": "server_config_mysqlsettings_getitem" + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "config.py", + "source_location": "L38", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_config_usersettings", + "target": "basesettings" + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "config.py", + "source_location": "L50", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_config_stocksapisettings", + "target": "basesettings" + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "config.py", + "source_location": "L59", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_config_orunmilasettings", + "target": "basesettings" + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "config.py", + "source_location": "L76", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_config_scrapersettings", + "target": "basesettings" + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "config.py", + "source_location": "L85", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_config_discordsettings", + "target": "basesettings" + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "config.py", + "source_location": "L61", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_config_prometheussettings", + "target": "basesettings" + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "config.py", + "source_location": "L20", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_config_basemansasettings", + "target": "basesettings" + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "config.py", + "source_location": "L46", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_config_basemansasettings", + "target": "server_config_usersettings" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "config.py", + "source_location": "L57", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_config_usersettings", + "target": "server_config_usersettings_getitem" + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "config.py", + "source_location": "L65", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_config_basemansasettings", + "target": "server_config_stocksapisettings" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "config.py", + "source_location": "L75", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_config_stocksapisettings", + "target": "server_config_stocksapisettings_getitem" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_config.py", + "source_location": "L2", + "weight": 0.8, + "confidence_score": 0.5, + "source": "server_config_stocksapisettings", + "target": "tests_test_config_testconfig" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_config.py", + "source_location": "L7", + "weight": 1.0, + "source": "server_config_stocksapisettings", + "target": "tests_test_config_testconfig_test_stocks_api_getitem" + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "config.py", + "source_location": "L90", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_config_basemansasettings", + "target": "server_config_scrapersettings" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "config.py", + "source_location": "L98", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_config_scrapersettings", + "target": "server_config_scrapersettings_getitem" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_config.py", + "source_location": "L2", + "weight": 0.8, + "confidence_score": 0.5, + "source": "server_config_scrapersettings", + "target": "tests_test_config_testconfig" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_config.py", + "source_location": "L18", + "weight": 1.0, + "source": "server_config_scrapersettings", + "target": "tests_test_config_testconfig_test_scraper_getitem" + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "config.py", + "source_location": "L101", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_config_basemansasettings", + "target": "server_config_discordsettings" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "config.py", + "source_location": "L106", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_config_discordsettings", + "target": "server_config_discordsettings_getitem" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/orunmila/agent.py", + "source_location": "L2", + "weight": 0.8, + "confidence_score": 0.5, + "source": "orunmila_agent_orunmila", + "target": "server_config_config" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L2", + "weight": 0.8, + "confidence_score": 0.5, + "source": "orunmila_compact_orunmilacompactor", + "target": "server_config_config" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/orunmila/mcp.py", + "source_location": "L2", + "weight": 0.8, + "confidence_score": 0.5, + "source": "orunmila_mcp_mcpclientpool", + "target": "server_config_config" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L4", + "weight": 0.8, + "confidence_score": 0.5, + "source": "orunmila_memory_memorycandidate", + "target": "server_config_config" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L4", + "weight": 0.8, + "confidence_score": 0.5, + "source": "orunmila_memory_orunmilamemory", + "target": "server_config_config" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L2", + "weight": 0.8, + "confidence_score": 0.5, + "source": "orunmila_sandbox_sandboxmanager", + "target": "server_config_config" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L2", + "weight": 0.8, + "confidence_score": 0.5, + "source": "server_config_config", + "target": "scraper_b3_scraper_b3scraper" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/service/authentication_service.py", + "source_location": "L2", + "weight": 0.8, + "confidence_score": 0.5, + "source": "server_config_config", + "target": "service_authentication_service_authenticationservice" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/service/scraper_service.py", + "source_location": "L7", + "weight": 0.8, + "confidence_score": 0.5, + "source": "server_config_config", + "target": "service_scraper_service_scraperservice" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/utils/logging_config.py", + "source_location": "L6", + "weight": 0.8, + "confidence_score": 0.5, + "source": "server_config_config", + "target": "utils_logging_config_discordhandler" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/utils/roles.py", + "source_location": "L70", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "server_config_config" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/utils/roles.py", + "source_location": "L70", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "server_config_config" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L2", + "weight": 0.8, + "confidence_score": 0.5, + "source": "server_config_config", + "target": "prometheus_agent_prometheus" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L52", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_compact_prometheuscompactor", + "target": "server_config_config" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L8", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_mcp_mcpclientpool", + "target": "server_config_config" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L4", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_memorycandidate", + "target": "server_config_config" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L38", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "server_config_config" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L14", + "weight": 0.8, + "confidence_score": 0.5, + "source": "server_config_config", + "target": "prometheus_sandbox_sandboxmanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L53", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_compact_fieldregistry", + "target": "server_config_config" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/utils/service_manager.py", + "source_location": "L3", + "weight": 0.8, + "confidence_score": 0.5, + "source": "server_config_config", + "target": "utils_service_manager_servicemanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/_summarizer_legacy.py", + "source_location": "L11", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_summarizer_legacy_prometheussummarizer", + "target": "server_config_config" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/summarizer.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_summarizer_prometheussummarizer", + "target": "server_config_config" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_config.py", + "source_location": "L2", + "weight": 0.8, + "confidence_score": 0.5, + "source": "server_config_config", + "target": "tests_test_config_testconfig" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/generation.py", + "source_location": "L2", + "weight": 0.8, + "confidence_score": 0.5, + "source": "server_config_config", + "target": "prometheus_generation_prometheusgenerator" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/generation.py", + "source_location": "L2", + "weight": 0.8, + "confidence_score": 0.5, + "source": "server_config_config", + "target": "prometheus_generation_sessionproxy" + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "run.py", + "source_location": "L2", + "weight": 1.0, + "confidence_score": 1.0, + "source": "run_py", + "target": "fastapi" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "run.py", + "source_location": "L21", + "weight": 1.0, + "confidence_score": 1.0, + "source": "run_py", + "target": "server_run_lifespan" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "run.py", + "source_location": "L64", + "weight": 1.0, + "confidence_score": 1.0, + "source": "run_py", + "target": "server_run_health" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "run.py", + "source_location": "L81", + "weight": 1.0, + "confidence_score": 1.0, + "source": "run_py", + "target": "server_run_status" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "run.py", + "source_location": "L76", + "weight": 1.0, + "confidence_score": 1.0, + "source": "run_py", + "target": "server_run_triggerscraper" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "run.py", + "source_location": "L29", + "weight": 1.0, + "source": "server_run_lifespan", + "target": "utils_connectivity_checkdatabaseconnection" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "run.py", + "source_location": "L30", + "weight": 1.0, + "source": "server_run_lifespan", + "target": "utils_roles_all" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "run.py", + "source_location": "L32", + "weight": 1.0, + "source": "server_run_lifespan", + "target": "utils_migrator_runmigrations" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "run.py", + "source_location": "L39", + "weight": 1.0, + "source": "server_run_lifespan", + "target": "utils_connectivity_checkserviceconnection" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "run.py", + "source_location": "L66", + "weight": 1.0, + "source": "server_run_lifespan", + "target": "utils_service_manager_runall" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "run.py", + "source_location": "L24", + "weight": 1.0, + "source": "server_run_lifespan", + "target": "utils_connectivity_checkmysqlconnection" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "run.py", + "source_location": "L88", + "weight": 1.0, + "source": "server_run_status", + "target": "utils_connectivity_checkdatabaseconnection" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "run.py", + "source_location": "L109", + "weight": 1.0, + "source": "server_run_status", + "target": "utils_roles_all" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "run.py", + "source_location": "L88", + "weight": 1.0, + "source": "server_run_status", + "target": "utils_connectivity_checkmysqlconnection" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "run.py", + "source_location": "L90", + "weight": 1.0, + "source": "server_run_status", + "target": "utils_connectivity_checksingledb" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/components.json", + "source_location": "L2", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_components_json", + "target": "frontend_components_schema" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/components.json", + "source_location": "L3", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_components_json", + "target": "frontend_components_style" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/components.json", + "source_location": "L4", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_components_json", + "target": "frontend_components_rsc" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/components.json", + "source_location": "L5", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_components_json", + "target": "frontend_components_tsx" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/components.json", + "source_location": "L6", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_components_json", + "target": "frontend_components_tailwind" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/components.json", + "source_location": "L13", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_components_json", + "target": "frontend_components_iconlibrary" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/components.json", + "source_location": "L14", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_components_json", + "target": "frontend_components_rtl" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/components.json", + "source_location": "L15", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_components_json", + "target": "frontend_components_aliases" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/components.json", + "source_location": "L22", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_components_json", + "target": "frontend_components_menucolor" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/components.json", + "source_location": "L23", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_components_json", + "target": "frontend_components_menuaccent" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/components.json", + "source_location": "L24", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_components_json", + "target": "frontend_components_registries" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/components.json", + "source_location": "L7", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_components_tailwind", + "target": "frontend_components_tailwind_config" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/components.json", + "source_location": "L8", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_components_tailwind", + "target": "frontend_components_tailwind_css" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/components.json", + "source_location": "L9", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_components_tailwind", + "target": "frontend_components_tailwind_basecolor" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/components.json", + "source_location": "L10", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_components_tailwind", + "target": "frontend_components_tailwind_cssvariables" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/components.json", + "source_location": "L11", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_components_tailwind", + "target": "frontend_components_tailwind_prefix" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/components.json", + "source_location": "L16", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_components_aliases", + "target": "frontend_components_aliases_components" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/components.json", + "source_location": "L17", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_components_aliases", + "target": "frontend_components_aliases_utils" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/components.json", + "source_location": "L18", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_components_aliases", + "target": "frontend_components_aliases_ui" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/components.json", + "source_location": "L19", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_components_aliases", + "target": "frontend_components_aliases_lib" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/components.json", + "source_location": "L20", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_components_aliases", + "target": "frontend_components_aliases_hooks" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/jsconfig.json", + "source_location": "L2", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_jsconfig_json", + "target": "frontend_jsconfig_compileroptions" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/jsconfig.json", + "source_location": "L3", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_jsconfig_compileroptions", + "target": "frontend_jsconfig_compileroptions_baseurl" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/jsconfig.json", + "source_location": "L4", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_jsconfig_compileroptions", + "target": "frontend_jsconfig_compileroptions_paths" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/jsconfig.json", + "source_location": "L5", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_jsconfig_compileroptions_paths", + "target": "frontend_jsconfig_paths" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/test-setup.js", + "source_location": "L4", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_test_setup_js", + "target": "frontend_test_setup_localstoragemock" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/src/api.js", + "source_location": "L3", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_src_api_js", + "target": "src_api_authheaders" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/src/api.js", + "source_location": "L15", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_src_api_js", + "target": "src_api_apifetch" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/src/api.js", + "source_location": "L24", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_src_api_js", + "target": "src_api_login" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/src/api.js", + "source_location": "L36", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_src_api_js", + "target": "src_api_register" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/src/api.js", + "source_location": "L48", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_src_api_js", + "target": "src_api_logout" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/src/api.js", + "source_location": "L53", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_src_api_js", + "target": "src_api_fetchme" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/src/api.js", + "source_location": "L75", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_src_api_js", + "target": "src_api_extracthashtoken" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/src/api.js", + "source_location": "L91", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_src_api_js", + "target": "src_api_googleauthurl" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/src/api.js", + "source_location": "L95", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_src_api_js", + "target": "src_api_fetchsessions" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/src/api.js", + "source_location": "L111", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_src_api_js", + "target": "src_api_deletesession" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/src/api.js", + "source_location": "L95", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_src_api_js", + "target": "src_api_listworkspacefiles" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/src/api.js", + "source_location": "L105", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_src_api_js", + "target": "src_api_deleteworkspacefile" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/src/api.js", + "source_location": "L95", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_src_api_js", + "target": "src_api_updatesessiontitle" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/src/api.js", + "source_location": "L115", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_src_api_js", + "target": "src_api_fetchhistory" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/src/api.js", + "source_location": "L133", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_src_api_js", + "target": "src_api_fetchwallet" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/src/api.js", + "source_location": "L142", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_src_api_js", + "target": "src_api_fetchwallethistory" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/src/api.js", + "source_location": "L151", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_src_api_js", + "target": "src_api_createholding" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/src/api.js", + "source_location": "L163", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_src_api_js", + "target": "src_api_createlot" }, { - "label": "Ma'at Stock Algorithm", - "file_type": "rationale", - "source_file": "TODO.md", - "community": 71, - "norm_label": "ma'at stock algorithm", - "id": "ma_at" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/src/api.js", + "source_location": "L175", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_src_api_js", + "target": "src_api_createdividend" }, { - "label": "Thoth Wallet Management", - "file_type": "rationale", - "source_file": "TODO.md", - "community": 71, - "norm_label": "thoth wallet management", - "id": "thoth" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/src/api.js", + "source_location": "L203", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_src_api_js", + "target": "src_api_updatelot" }, { - "label": "Ogum Algo Trading", - "file_type": "rationale", - "source_file": "TODO.md", - "community": 71, - "norm_label": "ogum algo trading", - "id": "ogum" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/src/api.js", + "source_location": "L215", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_src_api_js", + "target": "src_api_deletelot" }, { - "label": "Fundamental Data", - "file_type": "rationale", - "source_file": "docs/stocks_api.md", - "community": 71, - "norm_label": "fundamental data", - "id": "fundamental_data" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/src/api.js", + "source_location": "L226", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_src_api_js", + "target": "src_api_updatedividend" }, { - "label": "Historical Data", - "file_type": "rationale", - "source_file": "docs/stocks_api.md", - "community": 71, - "norm_label": "historical data", - "id": "historical_data" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/src/api.js", + "source_location": "L238", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_src_api_js", + "target": "src_api_deletedividend" }, - { - "label": "Value Investing", - "file_type": "rationale", - "source_file": "docs/stocks_api.md", - "community": 71, - "norm_label": "value investing", - "id": "value_investing" - } - ], - "links": [ { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "benchmark_latency.py", - "source_location": "L20", + "source_file": "frontend/src/api.js", + "source_location": "L249", "weight": 1.0, "confidence_score": 1.0, - "source": "benchmark_latency_py", - "target": "server_benchmark_latency_bench" + "source": "frontend_src_api_js", + "target": "src_api_updateholdingweight" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "benchmark_latency.py", - "source_location": "L35", + "source_file": "frontend/src/api.js", + "source_location": "L264", "weight": 1.0, "confidence_score": 1.0, - "source": "benchmark_latency_py", - "target": "server_benchmark_latency_hammer" + "source": "frontend_src_api_js", + "target": "src_api_normalizestockrow" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "benchmark_latency.py", - "source_location": "L46", + "source_file": "frontend/src/api.js", + "source_location": "L276", "weight": 1.0, "confidence_score": 1.0, - "source": "benchmark_latency_py", - "target": "server_benchmark_latency_stats" + "source": "frontend_src_api_js", + "target": "src_api_searchstocks" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "benchmark_latency.py", - "source_location": "L60", + "source_file": "frontend/src/api.js", + "source_location": "L288", "weight": 1.0, "confidence_score": 1.0, - "source": "benchmark_latency_py", - "target": "server_benchmark_latency_main" + "source": "frontend_src_api_js", + "target": "src_api_clearstockscache" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "benchmark_latency.py", - "source_location": "L75", + "source_file": "frontend/src/api.js", + "source_location": "L110", "weight": 1.0, "confidence_score": 1.0, - "source": "server_benchmark_latency_main", - "target": "server_benchmark_latency_bench" + "source": "frontend_src_api_js", + "target": "src_api_readeventstream" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "benchmark_latency.py", - "source_location": "L92", + "source_file": "frontend/src/api.js", + "source_location": "L122", "weight": 1.0, "confidence_score": 1.0, - "source": "server_benchmark_latency_main", - "target": "server_benchmark_latency_stats" + "source": "frontend_src_api_js", + "target": "src_api_streamchat" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "ci.ps1", - "source_location": "L25", + "source_file": "frontend/src/api.js", + "source_location": "L170", "weight": 1.0, "confidence_score": 1.0, - "source": "ci_ps1", - "target": "server_ci_write_step" + "source": "frontend_src_api_js", + "target": "src_api_resumechat" }, { - "relation": "contains", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "ci.ps1", - "source_location": "L33", + "source_file": "frontend/src/App.jsx", + "source_location": "L6", "weight": 1.0, "confidence_score": 1.0, - "source": "ci_ps1", - "target": "server_ci_write_pass" + "source": "frontend_src_api_js", + "target": "frontend_src_app_jsx" }, { - "relation": "contains", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "ci.ps1", - "source_location": "L39", + "source_file": "frontend/src/App.resume.test.jsx", + "source_location": "L15", "weight": 1.0, "confidence_score": 1.0, - "source": "ci_ps1", - "target": "server_ci_write_fail" + "source": "frontend_src_app_resume_test_jsx", + "target": "frontend_src_api_js" }, { - "relation": "contains", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "ci.ps1", - "source_location": "L45", + "source_file": "frontend/src/components/AuthForm.jsx", + "source_location": "L2", "weight": 1.0, "confidence_score": 1.0, - "source": "ci_ps1", - "target": "server_ci_run_check" + "source": "frontend_src_api_js", + "target": "frontend_src_components_authform_jsx" }, { - "relation": "contains", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "ci.ps1", - "source_location": "L48", + "source_file": "frontend/src/components/SessionSidebar.jsx", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "ci_ps1", - "target": "server_ci_write_fix" + "source": "frontend_src_api_js", + "target": "frontend_src_components_sessionsidebar_jsx" }, { - "relation": "calls", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "ci.ps1", - "source_location": "L47", + "source_file": "frontend/src/components/SettingsDialog.jsx", + "source_location": "L12", "weight": 1.0, "confidence_score": 1.0, - "source": "server_ci_write_step", - "target": "server_ci_run_check" + "source": "frontend_src_components_settingsdialog_jsx", + "target": "frontend_src_api_js" }, { - "relation": "calls", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "ci.ps1", - "source_location": "L52", + "source_file": "frontend/src/components/portfolio/AddDividendDialog.jsx", + "source_location": "L5", "weight": 1.0, "confidence_score": 1.0, - "source": "server_ci_write_pass", - "target": "server_ci_run_check" + "source": "frontend_src_components_portfolio_adddividenddialog_jsx", + "target": "frontend_src_api_js" }, { - "relation": "calls", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "ci.ps1", - "source_location": "L54", + "source_file": "frontend/src/components/portfolio/AddHoldingDialog.jsx", + "source_location": "L5", "weight": 1.0, "confidence_score": 1.0, - "source": "server_ci_write_fail", - "target": "server_ci_run_check" + "source": "frontend_src_components_portfolio_addholdingdialog_jsx", + "target": "frontend_src_api_js" }, { - "relation": "contains", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "config.py", - "source_location": "L9", + "source_file": "frontend/src/components/portfolio/AddLotDialog.jsx", + "source_location": "L5", "weight": 1.0, "confidence_score": 1.0, - "source": "config_py", - "target": "server_config_applyipv4force" + "source": "frontend_src_components_portfolio_addlotdialog_jsx", + "target": "frontend_src_api_js" }, { - "relation": "contains", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "config.py", - "source_location": "L29", + "source_file": "frontend/src/components/portfolio/HistoryList.jsx", + "source_location": "L7", "weight": 1.0, "confidence_score": 1.0, - "source": "config_py", - "target": "server_config_mysqlsettings" + "source": "frontend_src_components_portfolio_historylist_jsx", + "target": "frontend_src_api_js" }, { - "relation": "contains", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "config.py", - "source_location": "L46", + "source_file": "frontend/src/components/portfolio/HoldingSearchBox.jsx", + "source_location": "L3", "weight": 1.0, "confidence_score": 1.0, - "source": "config_py", - "target": "server_config_usersettings" + "source": "frontend_src_components_portfolio_holdingsearchbox_jsx", + "target": "frontend_src_api_js" }, { - "relation": "contains", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "config.py", - "source_location": "L65", + "source_file": "frontend/src/components/portfolio/HoldingsTable.jsx", + "source_location": "L5", "weight": 1.0, "confidence_score": 1.0, - "source": "config_py", - "target": "server_config_stocksapisettings" + "source": "frontend_src_components_portfolio_holdingstable_jsx", + "target": "frontend_src_api_js" }, { - "relation": "contains", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "config.py", - "source_location": "L79", + "source_file": "frontend/src/components/portfolio/PortfolioView.jsx", + "source_location": "L3", "weight": 1.0, "confidence_score": 1.0, - "source": "config_py", - "target": "server_config_prometheussettings" + "source": "frontend_src_components_portfolio_portfolioview_jsx", + "target": "frontend_src_api_js" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "config.py", - "source_location": "L90", + "source_file": "frontend/src/api.js", + "source_location": "L117", "weight": 1.0, "confidence_score": 1.0, - "source": "config_py", - "target": "server_config_scrapersettings" + "source": "frontend_src_api_js", + "target": "src_api_uploadworkspacefile" }, { - "relation": "contains", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "config.py", - "source_location": "L101", + "source_file": "frontend/src/api.test.js", + "source_location": "L2", "weight": 1.0, "confidence_score": 1.0, - "source": "config_py", - "target": "server_config_discordsettings" + "source": "frontend_src_api_test_js", + "target": "frontend_src_api_js" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "config.py", - "source_location": "L109", + "source_file": "frontend/src/api.js", + "source_location": "L102", "weight": 1.0, "confidence_score": 1.0, - "source": "config_py", - "target": "server_config_config" + "source": "frontend_src_api_js", + "target": "src_api_createsession" }, { - "relation": "contains", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "config.py", - "source_location": "L144", + "source_file": "frontend/tests/api.test.js", + "source_location": "L2", "weight": 1.0, "confidence_score": 1.0, - "source": "config_py", - "target": "server_config_getsession" + "source": "frontend_src_api_js", + "target": "frontend_tests_api_test_js" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "config.py", - "source_location": "L151", + "source_file": "frontend/src/api.js", + "source_location": "L10", "weight": 1.0, "confidence_score": 1.0, - "source": "config_py", - "target": "server_config_getstockssession" + "source": "frontend_src_api_js", + "target": "src_api_getcookie" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "config.py", - "source_location": "L20", + "source_file": "frontend/src/api.js", + "source_location": "L18", "weight": 1.0, "confidence_score": 1.0, - "source": "config_py", - "target": "server_config_basemansasettings" + "source": "src_api_authheaders", + "target": "src_api_apifetch" }, { - "relation": "inherits", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "config.py", - "source_location": "L23", + "source_file": "frontend/src/api.js", + "source_location": "L25", "weight": 1.0, "confidence_score": 1.0, - "source": "server_config_mysqlsettings", - "target": "basesettings" + "source": "src_api_apifetch", + "target": "src_api_login" }, { - "relation": "inherits", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "config.py", - "source_location": "L29", + "source_file": "frontend/src/api.js", + "source_location": "L37", "weight": 1.0, "confidence_score": 1.0, - "source": "server_config_basemansasettings", - "target": "server_config_mysqlsettings" + "source": "src_api_apifetch", + "target": "src_api_register" }, { - "relation": "method", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "config.py", - "source_location": "L43", + "source_file": "frontend/src/api.js", + "source_location": "L49", "weight": 1.0, "confidence_score": 1.0, - "source": "server_config_mysqlsettings", - "target": "server_config_mysqlsettings_getitem" + "source": "src_api_apifetch", + "target": "src_api_logout" }, { - "relation": "inherits", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "config.py", - "source_location": "L38", + "source_file": "frontend/src/api.js", + "source_location": "L96", "weight": 1.0, "confidence_score": 1.0, - "source": "server_config_usersettings", - "target": "basesettings" + "source": "src_api_apifetch", + "target": "src_api_fetchsessions" }, { - "relation": "inherits", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "config.py", - "source_location": "L50", + "source_file": "frontend/src/api.js", + "source_location": "L112", "weight": 1.0, "confidence_score": 1.0, - "source": "server_config_stocksapisettings", - "target": "basesettings" + "source": "src_api_apifetch", + "target": "src_api_deletesession" }, { - "relation": "inherits", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "config.py", - "source_location": "L61", + "source_file": "frontend/src/api.js", + "source_location": "L96", "weight": 1.0, "confidence_score": 1.0, - "source": "server_config_prometheussettings", - "target": "basesettings" + "source": "src_api_listworkspacefiles", + "target": "src_api_apifetch" }, { - "relation": "inherits", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "config.py", - "source_location": "L76", + "source_file": "frontend/src/api.js", + "source_location": "L106", "weight": 1.0, "confidence_score": 1.0, - "source": "server_config_scrapersettings", - "target": "basesettings" + "source": "src_api_deleteworkspacefile", + "target": "src_api_apifetch" }, { - "relation": "inherits", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "config.py", - "source_location": "L85", + "source_file": "frontend/src/api.js", + "source_location": "L96", "weight": 1.0, "confidence_score": 1.0, - "source": "server_config_discordsettings", - "target": "basesettings" + "source": "src_api_updatesessiontitle", + "target": "src_api_apifetch" }, { - "relation": "inherits", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "config.py", - "source_location": "L20", + "source_file": "frontend/src/api.js", + "source_location": "L116", "weight": 1.0, "confidence_score": 1.0, - "source": "server_config_basemansasettings", - "target": "basesettings" + "source": "src_api_apifetch", + "target": "src_api_fetchhistory" }, { - "relation": "inherits", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "config.py", - "source_location": "L46", + "source_file": "frontend/src/api.js", + "source_location": "L134", "weight": 1.0, "confidence_score": 1.0, - "source": "server_config_basemansasettings", - "target": "server_config_usersettings" + "source": "src_api_fetchwallet", + "target": "src_api_apifetch" }, { - "relation": "method", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "config.py", - "source_location": "L57", + "source_file": "frontend/src/api.js", + "source_location": "L143", "weight": 1.0, "confidence_score": 1.0, - "source": "server_config_usersettings", - "target": "server_config_usersettings_getitem" + "source": "src_api_fetchwallethistory", + "target": "src_api_apifetch" }, { - "relation": "inherits", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "config.py", - "source_location": "L65", + "source_file": "frontend/src/api.js", + "source_location": "L152", "weight": 1.0, "confidence_score": 1.0, - "source": "server_config_basemansasettings", - "target": "server_config_stocksapisettings" + "source": "src_api_createholding", + "target": "src_api_apifetch" }, { - "relation": "method", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "config.py", - "source_location": "L75", + "source_file": "frontend/src/api.js", + "source_location": "L164", "weight": 1.0, "confidence_score": 1.0, - "source": "server_config_stocksapisettings", - "target": "server_config_stocksapisettings_getitem" + "source": "src_api_createlot", + "target": "src_api_apifetch" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_config.py", - "source_location": "L2", - "weight": 0.8, - "confidence_score": 0.5, - "source": "server_config_stocksapisettings", - "target": "tests_test_config_testconfig" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/src/api.js", + "source_location": "L184", + "weight": 1.0, + "confidence_score": 1.0, + "source": "src_api_createdividend", + "target": "src_api_apifetch" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_config.py", - "source_location": "L7", + "confidence": "EXTRACTED", + "source_file": "frontend/src/api.js", + "source_location": "L204", "weight": 1.0, - "source": "server_config_stocksapisettings", - "target": "tests_test_config_testconfig_test_stocks_api_getitem" + "confidence_score": 1.0, + "source": "src_api_updatelot", + "target": "src_api_apifetch" }, { - "relation": "inherits", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "config.py", - "source_location": "L79", + "source_file": "frontend/src/api.js", + "source_location": "L216", "weight": 1.0, "confidence_score": 1.0, - "source": "server_config_basemansasettings", - "target": "server_config_prometheussettings" + "source": "src_api_deletelot", + "target": "src_api_apifetch" }, { - "relation": "method", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "config.py", - "source_location": "L86", + "source_file": "frontend/src/api.js", + "source_location": "L227", "weight": 1.0, "confidence_score": 1.0, - "source": "server_config_prometheussettings", - "target": "server_config_prometheussettings_getitem" + "source": "src_api_updatedividend", + "target": "src_api_apifetch" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_config.py", - "source_location": "L2", - "weight": 0.8, - "confidence_score": 0.5, - "source": "server_config_prometheussettings", - "target": "tests_test_config_testconfig" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/src/api.js", + "source_location": "L239", + "weight": 1.0, + "confidence_score": 1.0, + "source": "src_api_deletedividend", + "target": "src_api_apifetch" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_config.py", - "source_location": "L13", + "confidence": "EXTRACTED", + "source_file": "frontend/src/api.js", + "source_location": "L250", "weight": 1.0, - "source": "server_config_prometheussettings", - "target": "tests_test_config_testconfig_test_prometheus_getitem" + "confidence_score": 1.0, + "source": "src_api_updateholdingweight", + "target": "src_api_apifetch" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_config_sandbox.py", - "source_location": "L2", - "weight": 0.8, - "confidence_score": 0.5, - "source": "server_config_prometheussettings", - "target": "tests_test_config_sandbox_testsandboxconfig" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/src/api.js", + "source_location": "L278", + "weight": 1.0, + "confidence_score": 1.0, + "source": "src_api_searchstocks", + "target": "src_api_apifetch" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_config_sandbox.py", - "source_location": "L7", + "confidence": "EXTRACTED", + "source_file": "frontend/src/api.js", + "source_location": "L123", "weight": 1.0, - "source": "server_config_prometheussettings", - "target": "tests_test_config_sandbox_testsandboxconfig_test_sandbox_defaults" + "confidence_score": 1.0, + "source": "src_api_apifetch", + "target": "src_api_streamchat" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_config_sandbox.py", - "source_location": "L14", + "confidence": "EXTRACTED", + "source_file": "frontend/src/api.js", + "source_location": "L171", "weight": 1.0, - "source": "server_config_prometheussettings", - "target": "tests_test_config_sandbox_testsandboxconfig_test_sandbox_fields_exist" + "confidence_score": 1.0, + "source": "src_api_resumechat", + "target": "src_api_apifetch" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_config_sandbox.py", - "source_location": "L22", + "confidence": "EXTRACTED", + "source_file": "frontend/src/api.js", + "source_location": "L121", "weight": 1.0, - "source": "server_config_prometheussettings", - "target": "tests_test_config_sandbox_testsandboxconfig_test_sandbox_types" + "confidence_score": 1.0, + "source": "src_api_uploadworkspacefile", + "target": "src_api_apifetch" }, { - "relation": "inherits", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "config.py", - "source_location": "L90", + "source_file": "frontend/src/api.js", + "source_location": "L103", "weight": 1.0, "confidence_score": 1.0, - "source": "server_config_basemansasettings", - "target": "server_config_scrapersettings" + "source": "src_api_apifetch", + "target": "src_api_createsession" }, { - "relation": "method", + "relation": "imports", + "context": "import", "confidence": "EXTRACTED", - "source_file": "config.py", - "source_location": "L98", + "source_file": "frontend/src/components/AuthForm.jsx", + "source_location": "L2", "weight": 1.0, "confidence_score": 1.0, - "source": "server_config_scrapersettings", - "target": "server_config_scrapersettings_getitem" + "source": "src_api_login", + "target": "frontend_src_components_authform_jsx" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_config.py", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/src/components/AuthForm.jsx", "source_location": "L2", - "weight": 0.8, - "confidence_score": 0.5, - "source": "server_config_scrapersettings", - "target": "tests_test_config_testconfig" + "weight": 1.0, + "confidence_score": 1.0, + "source": "src_api_register", + "target": "frontend_src_components_authform_jsx" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_config.py", - "source_location": "L18", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/src/App.jsx", + "source_location": "L6", "weight": 1.0, - "source": "server_config_scrapersettings", - "target": "tests_test_config_testconfig_test_scraper_getitem" + "confidence_score": 1.0, + "source": "src_api_logout", + "target": "frontend_src_app_jsx" }, { - "relation": "inherits", + "relation": "imports", + "context": "import", "confidence": "EXTRACTED", - "source_file": "config.py", - "source_location": "L101", + "source_file": "frontend/src/App.jsx", + "source_location": "L6", "weight": 1.0, "confidence_score": 1.0, - "source": "server_config_basemansasettings", - "target": "server_config_discordsettings" + "source": "src_api_fetchme", + "target": "frontend_src_app_jsx" }, { - "relation": "method", + "relation": "imports", + "context": "import", "confidence": "EXTRACTED", - "source_file": "config.py", - "source_location": "L106", + "source_file": "frontend/src/App.resume.test.jsx", + "source_location": "L15", "weight": 1.0, "confidence_score": 1.0, - "source": "server_config_discordsettings", - "target": "server_config_discordsettings_getitem" + "source": "frontend_src_app_resume_test_jsx", + "target": "src_api_fetchme" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/agent.py", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/src/App.jsx", + "source_location": "L6", + "weight": 1.0, + "confidence_score": 1.0, + "source": "src_api_extracthashtoken", + "target": "frontend_src_app_jsx" + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/src/App.resume.test.jsx", + "source_location": "L15", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_src_app_resume_test_jsx", + "target": "src_api_extracthashtoken" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/src/api.js", + "source_location": "L83", + "weight": 1.0, + "confidence_score": 1.0, + "source": "src_api_extracthashtoken", + "target": "src_api_getcookie" + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/src/components/AuthForm.jsx", "source_location": "L2", - "weight": 0.8, - "confidence_score": 0.5, - "source": "server_config_config", - "target": "prometheus_agent_prometheus" + "weight": 1.0, + "confidence_score": 1.0, + "source": "src_api_googleauthurl", + "target": "frontend_src_components_authform_jsx" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L52", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_compact_prometheuscompactor", - "target": "server_config_config" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/AuthForm.jsx", + "source_location": "L65", + "weight": 1.0, + "source": "src_api_googleauthurl", + "target": "components_authform_authform" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L8", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_mcp_mcpclientpool", - "target": "server_config_config" + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/src/App.jsx", + "source_location": "L6", + "weight": 1.0, + "confidence_score": 1.0, + "source": "src_api_fetchsessions", + "target": "frontend_src_app_jsx" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L4", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_memorycandidate", - "target": "server_config_config" + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/src/App.resume.test.jsx", + "source_location": "L15", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_src_app_resume_test_jsx", + "target": "src_api_fetchsessions" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L38", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "server_config_config" + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/src/components/SessionSidebar.jsx", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "src_api_deletesession", + "target": "frontend_src_components_sessionsidebar_jsx" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L14", - "weight": 0.8, - "confidence_score": 0.5, - "source": "server_config_config", - "target": "prometheus_sandbox_sandboxmanager" + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/src/components/SettingsDialog.jsx", + "source_location": "L12", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_src_components_settingsdialog_jsx", + "target": "src_api_listworkspacefiles" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/scraper_b3/scraper.py", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/src/api.test.js", "source_location": "L2", - "weight": 0.8, - "confidence_score": 0.5, - "source": "server_config_config", - "target": "scraper_b3_scraper_b3scraper" + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_src_api_test_js", + "target": "src_api_listworkspacefiles" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/service/authentication_service.py", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/src/components/SettingsDialog.jsx", + "source_location": "L12", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_src_components_settingsdialog_jsx", + "target": "src_api_deleteworkspacefile" + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/src/api.test.js", "source_location": "L2", - "weight": 0.8, - "confidence_score": 0.5, - "source": "server_config_config", - "target": "service_authentication_service_authenticationservice" + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_src_api_test_js", + "target": "src_api_deleteworkspacefile" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/service/scraper_service.py", - "source_location": "L7", - "weight": 0.8, - "confidence_score": 0.5, - "source": "server_config_config", - "target": "service_scraper_service_scraperservice" + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/src/components/SessionSidebar.jsx", + "source_location": "L32", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_src_components_sessionsidebar_jsx", + "target": "src_api_updatesessiontitle" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/utils/logging_config.py", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/src/App.jsx", "source_location": "L6", - "weight": 0.8, - "confidence_score": 0.5, - "source": "server_config_config", - "target": "utils_logging_config_discordhandler" + "weight": 1.0, + "confidence_score": 1.0, + "source": "src_api_fetchhistory", + "target": "frontend_src_app_jsx" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L53", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_compact_fieldregistry", - "target": "server_config_config" + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/src/App.resume.test.jsx", + "source_location": "L15", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_src_app_resume_test_jsx", + "target": "src_api_fetchhistory" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/utils/service_manager.py", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/src/components/portfolio/PortfolioView.jsx", "source_location": "L3", - "weight": 0.8, - "confidence_score": 0.5, - "source": "server_config_config", - "target": "utils_service_manager_servicemanager" + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_src_components_portfolio_portfolioview_jsx", + "target": "src_api_fetchwallet" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/_summarizer_legacy.py", - "source_location": "L11", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_summarizer_legacy_prometheussummarizer", - "target": "server_config_config" + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/src/components/portfolio/PortfolioView.jsx", + "source_location": "L3", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_src_components_portfolio_portfolioview_jsx", + "target": "src_api_fetchwallethistory" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/summarizer.py", - "source_location": "L12", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_summarizer_prometheussummarizer", - "target": "server_config_config" + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/src/components/portfolio/AddHoldingDialog.jsx", + "source_location": "L5", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_src_components_portfolio_addholdingdialog_jsx", + "target": "src_api_createholding" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_config.py", - "source_location": "L2", - "weight": 0.8, - "confidence_score": 0.5, - "source": "server_config_config", - "target": "tests_test_config_testconfig" + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/src/components/portfolio/AddLotDialog.jsx", + "source_location": "L5", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_src_components_portfolio_addlotdialog_jsx", + "target": "src_api_createholding" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/generation.py", - "source_location": "L2", - "weight": 0.8, - "confidence_score": 0.5, - "source": "server_config_config", - "target": "prometheus_generation_prometheusgenerator" + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/src/components/portfolio/AddLotDialog.jsx", + "source_location": "L5", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_src_components_portfolio_addlotdialog_jsx", + "target": "src_api_createlot" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/generation.py", - "source_location": "L2", - "weight": 0.8, - "confidence_score": 0.5, - "source": "server_config_config", - "target": "prometheus_generation_sessionproxy" + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/src/components/portfolio/AddDividendDialog.jsx", + "source_location": "L5", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_src_components_portfolio_adddividenddialog_jsx", + "target": "src_api_createdividend" + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/src/components/portfolio/HistoryList.jsx", + "source_location": "L7", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_src_components_portfolio_historylist_jsx", + "target": "src_api_updatelot" }, { - "relation": "imports_from", + "relation": "imports", "context": "import", "confidence": "EXTRACTED", - "source_file": "run.py", - "source_location": "L2", + "source_file": "frontend/src/components/portfolio/HistoryList.jsx", + "source_location": "L7", "weight": 1.0, "confidence_score": 1.0, - "source": "run_py", - "target": "fastapi" + "source": "frontend_src_components_portfolio_historylist_jsx", + "target": "src_api_deletelot" }, { - "relation": "contains", + "relation": "imports", + "context": "import", "confidence": "EXTRACTED", - "source_file": "run.py", - "source_location": "L21", + "source_file": "frontend/src/components/portfolio/HistoryList.jsx", + "source_location": "L7", "weight": 1.0, "confidence_score": 1.0, - "source": "run_py", - "target": "server_run_lifespan" + "source": "frontend_src_components_portfolio_historylist_jsx", + "target": "src_api_updatedividend" }, { - "relation": "contains", + "relation": "imports", + "context": "import", "confidence": "EXTRACTED", - "source_file": "run.py", - "source_location": "L64", + "source_file": "frontend/src/components/portfolio/HistoryList.jsx", + "source_location": "L7", "weight": 1.0, "confidence_score": 1.0, - "source": "run_py", - "target": "server_run_health" + "source": "frontend_src_components_portfolio_historylist_jsx", + "target": "src_api_deletedividend" }, { - "relation": "contains", + "relation": "imports", + "context": "import", "confidence": "EXTRACTED", - "source_file": "run.py", - "source_location": "L81", + "source_file": "frontend/src/components/portfolio/HoldingsTable.jsx", + "source_location": "L5", "weight": 1.0, "confidence_score": 1.0, - "source": "run_py", - "target": "server_run_status" + "source": "frontend_src_components_portfolio_holdingstable_jsx", + "target": "src_api_updateholdingweight" }, { - "relation": "contains", + "relation": "imports", + "context": "import", "confidence": "EXTRACTED", - "source_file": "run.py", - "source_location": "L76", + "source_file": "frontend/src/components/portfolio/HoldingSearchBox.jsx", + "source_location": "L3", "weight": 1.0, "confidence_score": 1.0, - "source": "run_py", - "target": "server_run_triggerscraper" + "source": "frontend_src_components_portfolio_holdingsearchbox_jsx", + "target": "src_api_searchstocks" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "run.py", - "source_location": "L29", + "confidence": "EXTRACTED", + "source_file": "frontend/src/api.js", + "source_location": "L167", "weight": 1.0, - "source": "server_run_lifespan", - "target": "utils_connectivity_checkdatabaseconnection" + "confidence_score": 1.0, + "source": "src_api_streamchat", + "target": "src_api_readeventstream" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "run.py", - "source_location": "L30", + "confidence": "EXTRACTED", + "source_file": "frontend/src/api.js", + "source_location": "L172", "weight": 1.0, - "source": "server_run_lifespan", - "target": "utils_roles_all" + "confidence_score": 1.0, + "source": "src_api_resumechat", + "target": "src_api_readeventstream" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "run.py", - "source_location": "L32", + "source_file": "frontend/src/api.js", + "source_location": "L130", "weight": 1.0, - "source": "server_run_lifespan", - "target": "utils_migrator_runmigrations" + "source": "src_api_readeventstream", + "target": "src_api_test_ondone" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "run.py", - "source_location": "L39", + "source_file": "frontend/src/api.js", + "source_location": "L140", "weight": 1.0, - "source": "server_run_lifespan", - "target": "utils_connectivity_checkserviceconnection" + "source": "src_api_readeventstream", + "target": "src_api_test_onsession" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "run.py", - "source_location": "L66", + "source_file": "frontend/src/api.js", + "source_location": "L142", "weight": 1.0, - "source": "server_run_lifespan", - "target": "utils_service_manager_runall" + "source": "src_api_readeventstream", + "target": "src_api_test_onchunk" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "run.py", - "source_location": "L24", + "source_file": "frontend/src/api.js", + "source_location": "L156", "weight": 1.0, - "source": "server_run_lifespan", - "target": "utils_connectivity_checkmysqlconnection" + "source": "src_api_readeventstream", + "target": "src_api_test_oncursor" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "run.py", - "source_location": "L88", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/src/App.jsx", + "source_location": "L6", "weight": 1.0, - "source": "server_run_status", - "target": "utils_connectivity_checkdatabaseconnection" + "confidence_score": 1.0, + "source": "src_api_streamchat", + "target": "frontend_src_app_jsx" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "run.py", - "source_location": "L109", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/src/App.resume.test.jsx", + "source_location": "L15", "weight": 1.0, - "source": "server_run_status", - "target": "utils_roles_all" + "confidence_score": 1.0, + "source": "frontend_src_app_resume_test_jsx", + "target": "src_api_streamchat" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "run.py", - "source_location": "L88", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/tests/api.test.js", + "source_location": "L2", "weight": 1.0, - "source": "server_run_status", - "target": "utils_connectivity_checkmysqlconnection" + "confidence_score": 1.0, + "source": "src_api_streamchat", + "target": "frontend_tests_api_test_js" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "run.py", - "source_location": "L90", - "weight": 1.0, - "source": "server_run_status", - "target": "utils_connectivity_checksingledb" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "frontend/components.json", - "source_location": "L2", + "source_file": "frontend/src/api.js", + "source_location": "L128", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_components_json", - "target": "frontend_components_schema" + "source": "src_api_streamchat", + "target": "tests_api_test_onerror" }, { - "relation": "contains", + "relation": "imports", + "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/components.json", - "source_location": "L3", + "source_file": "frontend/src/App.jsx", + "source_location": "L6", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_components_json", - "target": "frontend_components_style" + "source": "frontend_src_app_jsx", + "target": "src_api_resumechat" }, { - "relation": "contains", + "relation": "imports", + "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/components.json", - "source_location": "L4", + "source_file": "frontend/src/App.resume.test.jsx", + "source_location": "L15", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_components_json", - "target": "frontend_components_rsc" + "source": "frontend_src_app_resume_test_jsx", + "target": "src_api_resumechat" }, { - "relation": "contains", + "relation": "imports", + "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/components.json", - "source_location": "L5", + "source_file": "frontend/src/api.test.js", + "source_location": "L2", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_components_json", - "target": "frontend_components_tsx" + "source": "frontend_src_api_test_js", + "target": "src_api_resumechat" }, { - "relation": "contains", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/components.json", - "source_location": "L6", + "source_file": "frontend/src/App.jsx", + "source_location": "L2", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_components_json", - "target": "frontend_components_tailwind" + "source": "frontend_src_app_jsx", + "target": "frontend_src_components_authform_jsx" }, { - "relation": "contains", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/components.json", - "source_location": "L13", + "source_file": "frontend/src/App.jsx", + "source_location": "L3", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_components_json", - "target": "frontend_components_iconlibrary" + "source": "frontend_src_app_jsx", + "target": "frontend_src_components_sessionsidebar_jsx" }, { - "relation": "contains", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/components.json", - "source_location": "L14", + "source_file": "frontend/src/App.jsx", + "source_location": "L4", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_components_json", - "target": "frontend_components_rtl" + "source": "frontend_src_app_jsx", + "target": "frontend_src_components_messagelist_jsx" }, { - "relation": "contains", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/components.json", - "source_location": "L15", + "source_file": "frontend/src/App.jsx", + "source_location": "L5", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_components_json", - "target": "frontend_components_aliases" + "source": "frontend_src_app_jsx", + "target": "frontend_src_components_inputbar_jsx" }, { - "relation": "contains", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/components.json", - "source_location": "L22", + "source_file": "frontend/src/App.jsx", + "source_location": "L6", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_components_json", - "target": "frontend_components_menucolor" + "source": "frontend_src_app_jsx", + "target": "frontend_src_components_portfolio_portfolioview_jsx" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/components.json", - "source_location": "L23", + "source_file": "frontend/src/App.jsx", + "source_location": "L15", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_components_json", - "target": "frontend_components_menuaccent" + "source": "frontend_src_app_jsx", + "target": "src_app_settleloopevents" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/components.json", - "source_location": "L24", + "source_file": "frontend/src/App.jsx", + "source_location": "L42", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_components_json", - "target": "frontend_components_registries" + "source": "frontend_src_app_jsx", + "target": "src_app_readresume" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/components.json", - "source_location": "L7", + "source_file": "frontend/src/App.jsx", + "source_location": "L50", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_components_tailwind", - "target": "frontend_components_tailwind_config" + "source": "frontend_src_app_jsx", + "target": "src_app_saveresume" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/components.json", - "source_location": "L8", + "source_file": "frontend/src/App.jsx", + "source_location": "L54", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_components_tailwind", - "target": "frontend_components_tailwind_css" + "source": "frontend_src_app_jsx", + "target": "src_app_clearresume" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/components.json", - "source_location": "L9", + "source_file": "frontend/src/App.jsx", + "source_location": "L59", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_components_tailwind", - "target": "frontend_components_tailwind_basecolor" + "source": "frontend_src_app_jsx", + "target": "src_app_clearlastsession" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/components.json", - "source_location": "L10", + "source_file": "frontend/src/App.jsx", + "source_location": "L63", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_components_tailwind", - "target": "frontend_components_tailwind_cssvariables" + "source": "frontend_src_app_jsx", + "target": "src_app_readlastsession" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/components.json", - "source_location": "L11", + "source_file": "frontend/src/App.jsx", + "source_location": "L71", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_components_tailwind", - "target": "frontend_components_tailwind_prefix" + "source": "frontend_src_app_jsx", + "target": "src_app_savelastsession" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/components.json", + "source_file": "frontend/src/App.jsx", "source_location": "L16", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_components_aliases", - "target": "frontend_components_aliases_components" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "frontend/components.json", - "source_location": "L17", - "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_components_aliases", - "target": "frontend_components_aliases_utils" + "source": "frontend_src_app_jsx", + "target": "src_app_app" }, { - "relation": "contains", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/components.json", - "source_location": "L18", + "source_file": "frontend/src/App.resume.test.jsx", + "source_location": "L3", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_components_aliases", - "target": "frontend_components_aliases_ui" + "source": "frontend_src_app_resume_test_jsx", + "target": "frontend_src_app_jsx" }, { - "relation": "contains", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/components.json", - "source_location": "L19", + "source_file": "frontend/src/main.jsx", + "source_location": "L3", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_components_aliases", - "target": "frontend_components_aliases_lib" + "source": "frontend_src_app_jsx", + "target": "frontend_src_main_jsx" }, { - "relation": "contains", + "relation": "imports", + "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/components.json", - "source_location": "L20", + "source_file": "frontend/src/App.jsx", + "source_location": "L6", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_components_aliases", - "target": "frontend_components_aliases_hooks" + "source": "src_api_createsession", + "target": "frontend_src_app_jsx" }, { - "relation": "contains", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/jsconfig.json", - "source_location": "L2", + "source_file": "frontend/src/App.jsx", + "source_location": "L6", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_jsconfig_json", - "target": "frontend_jsconfig_compileroptions" + "source": "frontend_src_app_jsx", + "target": "frontend_src_components_agentloop_jsx" }, { - "relation": "contains", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/jsconfig.json", + "source_file": "frontend/tests/App.test.jsx", "source_location": "L3", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_jsconfig_compileroptions", - "target": "frontend_jsconfig_compileroptions_baseurl" + "source": "frontend_src_app_jsx", + "target": "frontend_tests_app_test_jsx" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/jsconfig.json", - "source_location": "L4", + "source_file": "frontend/src/App.resume.test.jsx", + "source_location": "L72", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_jsconfig_compileroptions", - "target": "frontend_jsconfig_compileroptions_paths" + "source": "frontend_src_app_resume_test_jsx", + "target": "src_app_resume_test_sendbtn" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/jsconfig.json", - "source_location": "L5", + "source_file": "frontend/src/App.resume.test.jsx", + "source_location": "L82", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_jsconfig_compileroptions_paths", - "target": "frontend_jsconfig_paths" + "source": "frontend_src_app_resume_test_jsx", + "target": "src_app_resume_test_textarea" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/test-setup.js", - "source_location": "L4", + "source_file": "frontend/src/components/AgentLoop.jsx", + "source_location": "L27", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_test_setup_js", - "target": "frontend_test_setup_localstoragemock" + "source": "frontend_src_components_agentloop_jsx", + "target": "components_agentloop_agentloop" }, { - "relation": "contains", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", + "source_file": "frontend/src/components/MessageList.jsx", "source_location": "L3", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_api_js", - "target": "src_api_authheaders" + "source": "frontend_src_components_agentloop_jsx", + "target": "frontend_src_components_messagelist_jsx" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L15", + "source_file": "frontend/src/components/AgentLoop.jsx", + "source_location": "L3", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_api_js", - "target": "src_api_apifetch" + "source": "frontend_src_components_agentloop_jsx", + "target": "components_agentloop_toolchip" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L24", + "source_file": "frontend/src/components/AgentLoop.jsx", + "source_location": "L3", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_api_js", - "target": "src_api_login" + "source": "frontend_src_components_agentloop_jsx", + "target": "components_agentloop_toolcard" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L36", + "source_file": "frontend/src/components/AuthForm.jsx", + "source_location": "L4", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_api_js", - "target": "src_api_register" + "source": "frontend_src_components_authform_jsx", + "target": "components_authform_authform" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L48", + "source_file": "frontend/src/components/InputBar.jsx", + "source_location": "L3", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_api_js", - "target": "src_api_logout" + "source": "frontend_src_components_inputbar_jsx", + "target": "components_inputbar_inputbar" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L53", + "source_file": "frontend/src/components/MessageList.jsx", + "source_location": "L7", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_api_js", - "target": "src_api_fetchme" + "source": "frontend_src_components_messagelist_jsx", + "target": "components_messagelist_suggestions" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L75", + "source_file": "frontend/src/components/MessageList.jsx", + "source_location": "L4", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_api_js", - "target": "src_api_extracthashtoken" + "source": "frontend_src_components_messagelist_jsx", + "target": "components_messagelist_messagelist" }, { - "relation": "contains", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L91", + "source_file": "frontend/src/components/MessageList.jsx", + "source_location": "L2", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_api_js", - "target": "src_api_googleauthurl" + "source": "frontend_src_components_mdocmessage_jsx", + "target": "frontend_src_components_messagelist_jsx" }, { - "relation": "contains", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L95", + "source_file": "frontend/src/components/SessionSidebar.jsx", + "source_location": "L33", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_api_js", - "target": "src_api_fetchsessions" + "source": "frontend_src_components_sessionsidebar_jsx", + "target": "frontend_src_components_settingsdialog_jsx" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L111", + "source_file": "frontend/src/components/SessionSidebar.jsx", + "source_location": "L3", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_api_js", - "target": "src_api_deletesession" + "source": "frontend_src_components_sessionsidebar_jsx", + "target": "components_sessionsidebar_sessionsidebar" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L95", + "source_file": "frontend/src/components/SettingsDialog.jsx", + "source_location": "L14", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_api_js", - "target": "src_api_listworkspacefiles" + "source": "frontend_src_components_settingsdialog_jsx", + "target": "components_settingsdialog_settingsdialog" }, { - "relation": "contains", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L105", + "source_file": "frontend/src/components/portfolio/AddDividendDialog.jsx", + "source_location": "L6", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_api_js", - "target": "src_api_deleteworkspacefile" + "source": "frontend_src_components_portfolio_adddividenddialog_jsx", + "target": "frontend_src_components_portfolio_validation_js" }, { - "relation": "contains", + "relation": "imports", + "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L95", + "source_file": "frontend/src/components/portfolio/AddDividendDialog.jsx", + "source_location": "L6", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_api_js", - "target": "src_api_updatesessiontitle" + "source": "frontend_src_components_portfolio_adddividenddialog_jsx", + "target": "portfolio_validation_assertdividendtotal" }, { - "relation": "contains", + "relation": "imports", + "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L115", + "source_file": "frontend/src/components/portfolio/AddDividendDialog.jsx", + "source_location": "L6", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_api_js", - "target": "src_api_fetchhistory" + "source": "frontend_src_components_portfolio_adddividenddialog_jsx", + "target": "portfolio_validation_assertnotfuture" }, { - "relation": "contains", + "relation": "imports", + "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L133", + "source_file": "frontend/src/components/portfolio/AddDividendDialog.jsx", + "source_location": "L6", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_api_js", - "target": "src_api_fetchwallet" + "source": "frontend_src_components_portfolio_adddividenddialog_jsx", + "target": "portfolio_validation_cleanstring" }, { - "relation": "contains", + "relation": "imports", + "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L142", + "source_file": "frontend/src/components/portfolio/AddDividendDialog.jsx", + "source_location": "L6", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_api_js", - "target": "src_api_fetchwallethistory" + "source": "frontend_src_components_portfolio_adddividenddialog_jsx", + "target": "portfolio_validation_parsepositivenumber" }, { - "relation": "contains", + "relation": "imports", + "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L151", + "source_file": "frontend/src/components/portfolio/AddDividendDialog.jsx", + "source_location": "L6", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_api_js", - "target": "src_api_createholding" + "source": "frontend_src_components_portfolio_adddividenddialog_jsx", + "target": "portfolio_validation_todayiso" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L163", + "source_file": "frontend/src/components/portfolio/AddDividendDialog.jsx", + "source_location": "L14", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_api_js", - "target": "src_api_createlot" + "source": "frontend_src_components_portfolio_adddividenddialog_jsx", + "target": "portfolio_adddividenddialog_fmtbrl" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L175", + "source_file": "frontend/src/components/portfolio/AddDividendDialog.jsx", + "source_location": "L19", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_api_js", - "target": "src_api_createdividend" + "source": "frontend_src_components_portfolio_adddividenddialog_jsx", + "target": "portfolio_adddividenddialog_adddividenddialog" }, { - "relation": "contains", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L203", + "source_file": "frontend/src/components/portfolio/PortfolioView.jsx", + "source_location": "L11", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_api_js", - "target": "src_api_updatelot" + "source": "frontend_src_components_portfolio_portfolioview_jsx", + "target": "frontend_src_components_portfolio_adddividenddialog_jsx" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L215", + "source_file": "frontend/src/components/portfolio/AddDividendDialog.jsx", + "source_location": "L104", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_api_js", - "target": "src_api_deletelot" + "source": "portfolio_adddividenddialog_adddividenddialog", + "target": "portfolio_adddividenddialog_fmtbrl" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L226", - "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_api_js", - "target": "src_api_updatedividend" + "source_file": "frontend/src/components/portfolio/AddDividendDialog.jsx", + "source_location": "L23", + "weight": 1.0, + "source": "portfolio_adddividenddialog_adddividenddialog", + "target": "portfolio_validation_todayiso" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L238", + "source_file": "frontend/src/components/portfolio/AddHoldingDialog.jsx", + "source_location": "L8", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_api_js", - "target": "src_api_deletedividend" + "source": "frontend_src_components_portfolio_addholdingdialog_jsx", + "target": "portfolio_addholdingdialog_addholdingdialog" }, { - "relation": "contains", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L249", + "source_file": "frontend/src/components/portfolio/AddLotDialog.jsx", + "source_location": "L7", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_api_js", - "target": "src_api_updateholdingweight" + "source": "frontend_src_components_portfolio_addlotdialog_jsx", + "target": "frontend_src_components_portfolio_validation_js" }, { - "relation": "contains", + "relation": "imports", + "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L264", + "source_file": "frontend/src/components/portfolio/AddLotDialog.jsx", + "source_location": "L7", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_api_js", - "target": "src_api_normalizestockrow" + "source": "frontend_src_components_portfolio_addlotdialog_jsx", + "target": "portfolio_validation_assertnotfuture" }, { - "relation": "contains", + "relation": "imports", + "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L276", + "source_file": "frontend/src/components/portfolio/AddLotDialog.jsx", + "source_location": "L7", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_api_js", - "target": "src_api_searchstocks" + "source": "frontend_src_components_portfolio_addlotdialog_jsx", + "target": "portfolio_validation_assertticker" }, { - "relation": "contains", + "relation": "imports", + "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L288", + "source_file": "frontend/src/components/portfolio/AddLotDialog.jsx", + "source_location": "L7", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_api_js", - "target": "src_api_clearstockscache" + "source": "frontend_src_components_portfolio_addlotdialog_jsx", + "target": "portfolio_validation_cleanstring" }, { - "relation": "contains", + "relation": "imports", + "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L110", + "source_file": "frontend/src/components/portfolio/AddLotDialog.jsx", + "source_location": "L7", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_api_js", - "target": "src_api_readeventstream" + "source": "frontend_src_components_portfolio_addlotdialog_jsx", + "target": "portfolio_validation_parsepositivenumber" }, { - "relation": "contains", + "relation": "imports", + "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L122", + "source_file": "frontend/src/components/portfolio/AddLotDialog.jsx", + "source_location": "L7", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_api_js", - "target": "src_api_streamchat" + "source": "frontend_src_components_portfolio_addlotdialog_jsx", + "target": "portfolio_validation_parseratefraction" }, { - "relation": "contains", + "relation": "imports", + "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L170", + "source_file": "frontend/src/components/portfolio/AddLotDialog.jsx", + "source_location": "L7", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_api_js", - "target": "src_api_resumechat" + "source": "frontend_src_components_portfolio_addlotdialog_jsx", + "target": "portfolio_validation_todayiso" }, { "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/App.jsx", - "source_location": "L6", + "source_file": "frontend/src/components/portfolio/AddLotDialog.jsx", + "source_location": "L15", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_api_js", - "target": "frontend_src_app_jsx" + "source": "frontend_src_components_portfolio_addlotdialog_jsx", + "target": "frontend_src_components_portfolio_holdingsearchbox_jsx" }, { - "relation": "imports_from", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/App.resume.test.jsx", - "source_location": "L15", + "source_file": "frontend/src/components/portfolio/AddLotDialog.jsx", + "source_location": "L25", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_app_resume_test_jsx", - "target": "frontend_src_api_js" + "source": "frontend_src_components_portfolio_addlotdialog_jsx", + "target": "portfolio_addlotdialog_addlotdialog" }, { "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/AuthForm.jsx", - "source_location": "L2", + "source_file": "frontend/src/components/portfolio/PortfolioView.jsx", + "source_location": "L10", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_api_js", - "target": "frontend_src_components_authform_jsx" + "source": "frontend_src_components_portfolio_portfolioview_jsx", + "target": "frontend_src_components_portfolio_addlotdialog_jsx" }, { - "relation": "imports_from", - "context": "import", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/SessionSidebar.jsx", - "source_location": "L1", - "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_api_js", - "target": "frontend_src_components_sessionsidebar_jsx" + "source_file": "frontend/src/components/portfolio/AddLotDialog.jsx", + "source_location": "L30", + "weight": 1.0, + "source": "portfolio_addlotdialog_addlotdialog", + "target": "portfolio_validation_todayiso" }, { - "relation": "imports_from", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/SettingsDialog.jsx", - "source_location": "L12", + "source_file": "frontend/src/components/portfolio/charts.jsx", + "source_location": "L17", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_settingsdialog_jsx", - "target": "frontend_src_api_js" + "source": "frontend_src_components_portfolio_charts_jsx", + "target": "portfolio_charts_chart_colors" }, { - "relation": "imports_from", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/AddDividendDialog.jsx", - "source_location": "L5", + "source_file": "frontend/src/components/portfolio/charts.jsx", + "source_location": "L25", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_adddividenddialog_jsx", - "target": "frontend_src_api_js" + "source": "frontend_src_components_portfolio_charts_jsx", + "target": "portfolio_charts_tooltipstyle" }, { - "relation": "imports_from", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/AddHoldingDialog.jsx", - "source_location": "L5", + "source_file": "frontend/src/components/portfolio/charts.jsx", + "source_location": "L33", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_addholdingdialog_jsx", - "target": "frontend_src_api_js" + "source": "frontend_src_components_portfolio_charts_jsx", + "target": "portfolio_charts_portfoliopiecard" }, { - "relation": "imports_from", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/AddLotDialog.jsx", - "source_location": "L5", + "source_file": "frontend/src/components/portfolio/charts.jsx", + "source_location": "L58", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_addlotdialog_jsx", - "target": "frontend_src_api_js" + "source": "frontend_src_components_portfolio_charts_jsx", + "target": "portfolio_charts_portfoliobarscard" }, { "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/HistoryList.jsx", - "source_location": "L7", + "source_file": "frontend/src/components/portfolio/DistributionChart.jsx", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_historylist_jsx", - "target": "frontend_src_api_js" + "source": "frontend_src_components_portfolio_distributionchart_jsx", + "target": "frontend_src_components_portfolio_charts_jsx" }, { "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/HoldingSearchBox.jsx", - "source_location": "L3", + "source_file": "frontend/src/components/portfolio/MonthlyBars.jsx", + "source_location": "L2", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_holdingsearchbox_jsx", - "target": "frontend_src_api_js" + "source": "frontend_src_components_portfolio_monthlybars_jsx", + "target": "frontend_src_components_portfolio_charts_jsx" }, { - "relation": "imports_from", + "relation": "imports", "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/HoldingsTable.jsx", - "source_location": "L5", + "source_file": "frontend/src/components/portfolio/DistributionChart.jsx", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_holdingstable_jsx", - "target": "frontend_src_api_js" + "source": "frontend_src_components_portfolio_distributionchart_jsx", + "target": "portfolio_charts_portfoliopiecard" }, { - "relation": "imports_from", + "relation": "imports", "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/PortfolioView.jsx", - "source_location": "L3", + "source_file": "frontend/src/components/portfolio/MonthlyBars.jsx", + "source_location": "L2", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_portfolioview_jsx", - "target": "frontend_src_api_js" + "source": "frontend_src_components_portfolio_monthlybars_jsx", + "target": "portfolio_charts_portfoliobarscard" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L117", + "source_file": "frontend/src/components/portfolio/DistributionChart.jsx", + "source_location": "L3", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_api_js", - "target": "src_api_uploadworkspacefile" + "source": "frontend_src_components_portfolio_distributionchart_jsx", + "target": "portfolio_distributionchart_distributionchart" }, { "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.test.js", - "source_location": "L2", + "source_file": "frontend/src/components/portfolio/PortfolioView.jsx", + "source_location": "L6", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_api_test_js", - "target": "frontend_src_api_js" + "source": "frontend_src_components_portfolio_portfolioview_jsx", + "target": "frontend_src_components_portfolio_distributionchart_jsx" }, { - "relation": "contains", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L102", + "source_file": "frontend/src/components/portfolio/HistoryList.jsx", + "source_location": "L8", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_api_js", - "target": "src_api_createsession" + "source": "frontend_src_components_portfolio_historylist_jsx", + "target": "frontend_src_components_portfolio_validation_js" }, { - "relation": "imports_from", + "relation": "imports", "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/tests/api.test.js", - "source_location": "L2", + "source_file": "frontend/src/components/portfolio/HistoryList.jsx", + "source_location": "L8", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_api_js", - "target": "frontend_tests_api_test_js" + "source": "frontend_src_components_portfolio_historylist_jsx", + "target": "portfolio_validation_assertdividendtotal" }, { - "relation": "contains", + "relation": "imports", + "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L10", + "source_file": "frontend/src/components/portfolio/HistoryList.jsx", + "source_location": "L8", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_api_js", - "target": "src_api_getcookie" + "source": "frontend_src_components_portfolio_historylist_jsx", + "target": "portfolio_validation_assertnotfuture" }, { - "relation": "calls", - "context": "call", + "relation": "imports", + "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L18", + "source_file": "frontend/src/components/portfolio/HistoryList.jsx", + "source_location": "L8", "weight": 1.0, "confidence_score": 1.0, - "source": "src_api_authheaders", - "target": "src_api_apifetch" + "source": "frontend_src_components_portfolio_historylist_jsx", + "target": "portfolio_validation_cleanstring" }, { - "relation": "calls", - "context": "call", + "relation": "imports", + "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L25", + "source_file": "frontend/src/components/portfolio/HistoryList.jsx", + "source_location": "L8", "weight": 1.0, "confidence_score": 1.0, - "source": "src_api_apifetch", - "target": "src_api_login" + "source": "frontend_src_components_portfolio_historylist_jsx", + "target": "portfolio_validation_parsepositivenumber" }, { - "relation": "calls", - "context": "call", + "relation": "imports", + "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L37", + "source_file": "frontend/src/components/portfolio/HistoryList.jsx", + "source_location": "L8", "weight": 1.0, "confidence_score": 1.0, - "source": "src_api_apifetch", - "target": "src_api_register" + "source": "frontend_src_components_portfolio_historylist_jsx", + "target": "portfolio_validation_todayiso" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L49", + "source_file": "frontend/src/components/portfolio/HistoryList.jsx", + "source_location": "L16", "weight": 1.0, "confidence_score": 1.0, - "source": "src_api_apifetch", - "target": "src_api_logout" + "source": "frontend_src_components_portfolio_historylist_jsx", + "target": "portfolio_historylist_kind_styles" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L96", + "source_file": "frontend/src/components/portfolio/HistoryList.jsx", + "source_location": "L23", "weight": 1.0, "confidence_score": 1.0, - "source": "src_api_apifetch", - "target": "src_api_fetchsessions" + "source": "frontend_src_components_portfolio_historylist_jsx", + "target": "portfolio_historylist_fmtmoney" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L112", + "source_file": "frontend/src/components/portfolio/HistoryList.jsx", + "source_location": "L28", "weight": 1.0, "confidence_score": 1.0, - "source": "src_api_apifetch", - "target": "src_api_deletesession" + "source": "frontend_src_components_portfolio_historylist_jsx", + "target": "portfolio_historylist_lottitle" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L96", + "source_file": "frontend/src/components/portfolio/HistoryList.jsx", + "source_location": "L36", "weight": 1.0, "confidence_score": 1.0, - "source": "src_api_listworkspacefiles", - "target": "src_api_apifetch" + "source": "frontend_src_components_portfolio_historylist_jsx", + "target": "portfolio_historylist_entrydate" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L106", + "source_file": "frontend/src/components/portfolio/HistoryList.jsx", + "source_location": "L40", "weight": 1.0, "confidence_score": 1.0, - "source": "src_api_deleteworkspacefile", - "target": "src_api_apifetch" + "source": "frontend_src_components_portfolio_historylist_jsx", + "target": "portfolio_historylist_entrykind" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L96", + "source_file": "frontend/src/components/portfolio/HistoryList.jsx", + "source_location": "L46", "weight": 1.0, "confidence_score": 1.0, - "source": "src_api_updatesessiontitle", - "target": "src_api_apifetch" + "source": "frontend_src_components_portfolio_historylist_jsx", + "target": "portfolio_historylist_dateonly" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L116", + "source_file": "frontend/src/components/portfolio/HistoryList.jsx", + "source_location": "L50", "weight": 1.0, "confidence_score": 1.0, - "source": "src_api_apifetch", - "target": "src_api_fetchhistory" + "source": "frontend_src_components_portfolio_historylist_jsx", + "target": "portfolio_historylist_fmtbrl" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L134", + "source_file": "frontend/src/components/portfolio/HistoryList.jsx", + "source_location": "L58", "weight": 1.0, "confidence_score": 1.0, - "source": "src_api_fetchwallet", - "target": "src_api_apifetch" + "source": "frontend_src_components_portfolio_historylist_jsx", + "target": "portfolio_historylist_editlotdialog" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L143", + "source_file": "frontend/src/components/portfolio/HistoryList.jsx", + "source_location": "L122", "weight": 1.0, "confidence_score": 1.0, - "source": "src_api_fetchwallethistory", - "target": "src_api_apifetch" + "source": "frontend_src_components_portfolio_historylist_jsx", + "target": "portfolio_historylist_editdividenddialog" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L152", + "source_file": "frontend/src/components/portfolio/HistoryList.jsx", + "source_location": "L216", "weight": 1.0, "confidence_score": 1.0, - "source": "src_api_createholding", - "target": "src_api_apifetch" + "source": "frontend_src_components_portfolio_historylist_jsx", + "target": "portfolio_historylist_historylist" }, { - "relation": "calls", - "context": "call", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L164", + "source_file": "frontend/src/components/portfolio/PortfolioView.jsx", + "source_location": "L9", "weight": 1.0, "confidence_score": 1.0, - "source": "src_api_createlot", - "target": "src_api_apifetch" + "source": "frontend_src_components_portfolio_portfolioview_jsx", + "target": "frontend_src_components_portfolio_historylist_jsx" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L184", + "source_file": "frontend/src/components/portfolio/HistoryList.jsx", + "source_location": "L31", "weight": 1.0, "confidence_score": 1.0, - "source": "src_api_createdividend", - "target": "src_api_apifetch" + "source": "portfolio_historylist_lottitle", + "target": "portfolio_historylist_fmtmoney" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L204", + "source_file": "frontend/src/components/portfolio/HistoryList.jsx", + "source_location": "L61", "weight": 1.0, "confidence_score": 1.0, - "source": "src_api_updatelot", - "target": "src_api_apifetch" + "source": "portfolio_historylist_editlotdialog", + "target": "portfolio_historylist_dateonly" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L216", + "source_file": "frontend/src/components/portfolio/HistoryList.jsx", + "source_location": "L125", "weight": 1.0, "confidence_score": 1.0, - "source": "src_api_deletelot", - "target": "src_api_apifetch" + "source": "portfolio_historylist_editdividenddialog", + "target": "portfolio_historylist_dateonly" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L227", + "source_file": "frontend/src/components/portfolio/HistoryList.jsx", + "source_location": "L184", "weight": 1.0, "confidence_score": 1.0, - "source": "src_api_updatedividend", - "target": "src_api_apifetch" + "source": "portfolio_historylist_editdividenddialog", + "target": "portfolio_historylist_fmtbrl" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L239", - "weight": 1.0, "confidence_score": 1.0, - "source": "src_api_deletedividend", - "target": "src_api_apifetch" + "source_file": "frontend/src/components/portfolio/HistoryList.jsx", + "source_location": "L61", + "weight": 1.0, + "source": "portfolio_historylist_editlotdialog", + "target": "portfolio_validation_todayiso" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L250", - "weight": 1.0, "confidence_score": 1.0, - "source": "src_api_updateholdingweight", - "target": "src_api_apifetch" + "source_file": "frontend/src/components/portfolio/HistoryList.jsx", + "source_location": "L125", + "weight": 1.0, + "source": "portfolio_historylist_editdividenddialog", + "target": "portfolio_validation_todayiso" }, { - "relation": "calls", - "context": "call", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L278", + "source_file": "frontend/src/components/portfolio/HoldingSearchBox.jsx", + "source_location": "L4", "weight": 1.0, "confidence_score": 1.0, - "source": "src_api_searchstocks", - "target": "src_api_apifetch" + "source": "frontend_src_components_portfolio_holdingsearchbox_jsx", + "target": "frontend_src_components_portfolio_validation_js" }, { - "relation": "calls", - "context": "call", + "relation": "imports", + "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L123", + "source_file": "frontend/src/components/portfolio/HoldingSearchBox.jsx", + "source_location": "L4", "weight": 1.0, "confidence_score": 1.0, - "source": "src_api_apifetch", - "target": "src_api_streamchat" + "source": "frontend_src_components_portfolio_holdingsearchbox_jsx", + "target": "portfolio_validation_cleanstring" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L171", + "source_file": "frontend/src/components/portfolio/HoldingSearchBox.jsx", + "source_location": "L9", "weight": 1.0, "confidence_score": 1.0, - "source": "src_api_resumechat", - "target": "src_api_apifetch" + "source": "frontend_src_components_portfolio_holdingsearchbox_jsx", + "target": "portfolio_holdingsearchbox_matchholdings" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L121", + "source_file": "frontend/src/components/portfolio/HoldingSearchBox.jsx", + "source_location": "L19", "weight": 1.0, "confidence_score": 1.0, - "source": "src_api_uploadworkspacefile", - "target": "src_api_apifetch" + "source": "frontend_src_components_portfolio_holdingsearchbox_jsx", + "target": "portfolio_holdingsearchbox_rowscore" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L103", + "source_file": "frontend/src/components/portfolio/HoldingSearchBox.jsx", + "source_location": "L29", "weight": 1.0, "confidence_score": 1.0, - "source": "src_api_apifetch", - "target": "src_api_createsession" + "source": "frontend_src_components_portfolio_holdingsearchbox_jsx", + "target": "portfolio_holdingsearchbox_holdingsearchbox" }, { - "relation": "imports", - "context": "import", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/AuthForm.jsx", - "source_location": "L2", - "weight": 1.0, "confidence_score": 1.0, - "source": "src_api_login", - "target": "frontend_src_components_authform_jsx" + "source_file": "frontend/src/components/portfolio/HoldingSearchBox.jsx", + "source_location": "L10", + "weight": 1.0, + "source": "portfolio_holdingsearchbox_matchholdings", + "target": "portfolio_validation_cleanstring" }, { - "relation": "imports", - "context": "import", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/AuthForm.jsx", - "source_location": "L2", - "weight": 1.0, "confidence_score": 1.0, - "source": "src_api_register", - "target": "frontend_src_components_authform_jsx" + "source_file": "frontend/src/components/portfolio/HoldingSearchBox.jsx", + "source_location": "L102", + "weight": 1.0, + "source": "portfolio_holdingsearchbox_holdingsearchbox", + "target": "portfolio_validation_cleanstring" }, { - "relation": "imports", + "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/App.jsx", + "source_file": "frontend/src/components/portfolio/HoldingsTable.jsx", "source_location": "L6", "weight": 1.0, "confidence_score": 1.0, - "source": "src_api_logout", - "target": "frontend_src_app_jsx" + "source": "frontend_src_components_portfolio_holdingstable_jsx", + "target": "frontend_src_components_portfolio_validation_js" }, { "relation": "imports", "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/App.jsx", + "source_file": "frontend/src/components/portfolio/HoldingsTable.jsx", "source_location": "L6", "weight": 1.0, "confidence_score": 1.0, - "source": "src_api_fetchme", - "target": "frontend_src_app_jsx" + "source": "frontend_src_components_portfolio_holdingstable_jsx", + "target": "portfolio_validation_parseweight" }, { - "relation": "imports", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/App.resume.test.jsx", - "source_location": "L15", + "source_file": "frontend/src/components/portfolio/HoldingsTable.jsx", + "source_location": "L9", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_app_resume_test_jsx", - "target": "src_api_fetchme" + "source": "frontend_src_components_portfolio_holdingstable_jsx", + "target": "portfolio_holdingstable_fmtmoney" }, { - "relation": "imports", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/App.jsx", - "source_location": "L6", + "source_file": "frontend/src/components/portfolio/HoldingsTable.jsx", + "source_location": "L14", "weight": 1.0, "confidence_score": 1.0, - "source": "src_api_extracthashtoken", - "target": "frontend_src_app_jsx" + "source": "frontend_src_components_portfolio_holdingstable_jsx", + "target": "portfolio_holdingstable_fmtpct" }, { - "relation": "imports", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/App.resume.test.jsx", - "source_location": "L15", + "source_file": "frontend/src/components/portfolio/HoldingsTable.jsx", + "source_location": "L19", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_app_resume_test_jsx", - "target": "src_api_extracthashtoken" + "source": "frontend_src_components_portfolio_holdingstable_jsx", + "target": "portfolio_holdingstable_columns" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L83", + "source_file": "frontend/src/components/portfolio/HoldingsTable.jsx", + "source_location": "L24", "weight": 1.0, "confidence_score": 1.0, - "source": "src_api_extracthashtoken", - "target": "src_api_getcookie" + "source": "frontend_src_components_portfolio_holdingstable_jsx", + "target": "portfolio_holdingstable_holdingstable" }, { - "relation": "imports", + "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/AuthForm.jsx", - "source_location": "L2", + "source_file": "frontend/src/components/portfolio/PortfolioView.jsx", + "source_location": "L8", "weight": 1.0, "confidence_score": 1.0, - "source": "src_api_googleauthurl", - "target": "frontend_src_components_authform_jsx" + "source": "frontend_src_components_portfolio_portfolioview_jsx", + "target": "frontend_src_components_portfolio_holdingstable_jsx" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "frontend/src/components/AuthForm.jsx", - "source_location": "L65", + "source_file": "frontend/src/components/portfolio/monthly.js", + "source_location": "L5", "weight": 1.0, - "source": "src_api_googleauthurl", - "target": "components_authform_authform" + "confidence_score": 1.0, + "source": "frontend_src_components_portfolio_monthly_js", + "target": "portfolio_monthly_monthkey" }, { - "relation": "imports", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/App.jsx", - "source_location": "L6", + "source_file": "frontend/src/components/portfolio/monthly.js", + "source_location": "L20", "weight": 1.0, "confidence_score": 1.0, - "source": "src_api_fetchsessions", - "target": "frontend_src_app_jsx" + "source": "frontend_src_components_portfolio_monthly_js", + "target": "portfolio_monthly_grouphistorybymonth" }, { - "relation": "imports", + "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/App.resume.test.jsx", - "source_location": "L15", + "source_file": "frontend/src/components/portfolio/MonthlyBars.jsx", + "source_location": "L3", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_app_resume_test_jsx", - "target": "src_api_fetchsessions" + "source": "frontend_src_components_portfolio_monthlybars_jsx", + "target": "frontend_src_components_portfolio_monthly_js" }, { - "relation": "imports", - "context": "import", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/SessionSidebar.jsx", - "source_location": "L1", + "source_file": "frontend/src/components/portfolio/monthly.js", + "source_location": "L24", "weight": 1.0, "confidence_score": 1.0, - "source": "src_api_deletesession", - "target": "frontend_src_components_sessionsidebar_jsx" + "source": "portfolio_monthly_grouphistorybymonth", + "target": "portfolio_monthly_monthkey" }, { "relation": "imports", "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/SettingsDialog.jsx", - "source_location": "L12", + "source_file": "frontend/src/components/portfolio/MonthlyBars.jsx", + "source_location": "L3", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_settingsdialog_jsx", - "target": "src_api_listworkspacefiles" + "source": "frontend_src_components_portfolio_monthlybars_jsx", + "target": "portfolio_monthly_grouphistorybymonth" }, { - "relation": "imports", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.test.js", - "source_location": "L2", + "source_file": "frontend/src/components/portfolio/MonthlyBars.jsx", + "source_location": "L5", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_api_test_js", - "target": "src_api_listworkspacefiles" + "source": "frontend_src_components_portfolio_monthlybars_jsx", + "target": "portfolio_monthlybars_monthlybars" }, { - "relation": "imports", + "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/SettingsDialog.jsx", - "source_location": "L12", + "source_file": "frontend/src/components/portfolio/PortfolioView.jsx", + "source_location": "L7", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_settingsdialog_jsx", - "target": "src_api_deleteworkspacefile" + "source": "frontend_src_components_portfolio_portfolioview_jsx", + "target": "frontend_src_components_portfolio_monthlybars_jsx" }, { - "relation": "imports", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.test.js", - "source_location": "L2", + "source_file": "frontend/src/components/portfolio/OverviewCards.jsx", + "source_location": "L3", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_api_test_js", - "target": "src_api_deleteworkspacefile" + "source": "frontend_src_components_portfolio_overviewcards_jsx", + "target": "portfolio_overviewcards_fmtbrl" }, { - "relation": "imports", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/SessionSidebar.jsx", - "source_location": "L32", + "source_file": "frontend/src/components/portfolio/OverviewCards.jsx", + "source_location": "L8", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_sessionsidebar_jsx", - "target": "src_api_updatesessiontitle" + "source": "frontend_src_components_portfolio_overviewcards_jsx", + "target": "portfolio_overviewcards_fmtpct" }, { - "relation": "imports", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/App.jsx", - "source_location": "L6", + "source_file": "frontend/src/components/portfolio/OverviewCards.jsx", + "source_location": "L14", "weight": 1.0, "confidence_score": 1.0, - "source": "src_api_fetchhistory", - "target": "frontend_src_app_jsx" + "source": "frontend_src_components_portfolio_overviewcards_jsx", + "target": "portfolio_overviewcards_statcard" }, { - "relation": "imports", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/App.resume.test.jsx", - "source_location": "L15", + "source_file": "frontend/src/components/portfolio/OverviewCards.jsx", + "source_location": "L34", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_app_resume_test_jsx", - "target": "src_api_fetchhistory" + "source": "frontend_src_components_portfolio_overviewcards_jsx", + "target": "portfolio_overviewcards_overviewcards" }, { - "relation": "imports", + "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "frontend/src/components/portfolio/PortfolioView.jsx", - "source_location": "L3", + "source_location": "L5", "weight": 1.0, "confidence_score": 1.0, "source": "frontend_src_components_portfolio_portfolioview_jsx", - "target": "src_api_fetchwallet" + "target": "frontend_src_components_portfolio_overviewcards_jsx" }, { - "relation": "imports", - "context": "import", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/PortfolioView.jsx", - "source_location": "L3", + "source_file": "frontend/src/components/portfolio/OverviewCards.jsx", + "source_location": "L45", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_portfolioview_jsx", - "target": "src_api_fetchwallethistory" + "source": "portfolio_overviewcards_overviewcards", + "target": "portfolio_overviewcards_fmtbrl" }, { - "relation": "imports", - "context": "import", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/AddHoldingDialog.jsx", - "source_location": "L5", + "source_file": "frontend/src/components/portfolio/OverviewCards.jsx", + "source_location": "L50", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_addholdingdialog_jsx", - "target": "src_api_createholding" + "source": "portfolio_overviewcards_overviewcards", + "target": "portfolio_overviewcards_fmtpct" }, { - "relation": "imports", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/AddLotDialog.jsx", - "source_location": "L5", + "source_file": "frontend/src/components/portfolio/PortfolioView.jsx", + "source_location": "L15", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_addlotdialog_jsx", - "target": "src_api_createholding" + "source": "frontend_src_components_portfolio_portfolioview_jsx", + "target": "portfolio_portfolioview_portfolioview" }, { - "relation": "imports", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/AddLotDialog.jsx", - "source_location": "L5", + "source_file": "frontend/src/components/portfolio/validation.js", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_addlotdialog_jsx", - "target": "src_api_createlot" + "source": "frontend_src_components_portfolio_validation_js", + "target": "portfolio_validation_cleanstring" }, { - "relation": "imports", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/AddDividendDialog.jsx", - "source_location": "L5", + "source_file": "frontend/src/components/portfolio/validation.js", + "source_location": "L17", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_adddividenddialog_jsx", - "target": "src_api_createdividend" + "source": "frontend_src_components_portfolio_validation_js", + "target": "portfolio_validation_normalizeticker" }, { - "relation": "imports", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/HistoryList.jsx", - "source_location": "L7", + "source_file": "frontend/src/components/portfolio/validation.js", + "source_location": "L21", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_historylist_jsx", - "target": "src_api_updatelot" + "source": "frontend_src_components_portfolio_validation_js", + "target": "portfolio_validation_assertticker" }, { - "relation": "imports", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/HistoryList.jsx", - "source_location": "L7", + "source_file": "frontend/src/components/portfolio/validation.js", + "source_location": "L29", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_historylist_jsx", - "target": "src_api_deletelot" + "source": "frontend_src_components_portfolio_validation_js", + "target": "portfolio_validation_parsepositivenumber" }, { - "relation": "imports", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/HistoryList.jsx", - "source_location": "L7", + "source_file": "frontend/src/components/portfolio/validation.js", + "source_location": "L38", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_historylist_jsx", - "target": "src_api_updatedividend" + "source": "frontend_src_components_portfolio_validation_js", + "target": "portfolio_validation_parseweight" }, { - "relation": "imports", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/HistoryList.jsx", - "source_location": "L7", + "source_file": "frontend/src/components/portfolio/validation.js", + "source_location": "L48", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_historylist_jsx", - "target": "src_api_deletedividend" + "source": "frontend_src_components_portfolio_validation_js", + "target": "portfolio_validation_parseratefraction" }, { - "relation": "imports", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/HoldingsTable.jsx", - "source_location": "L5", + "source_file": "frontend/src/components/portfolio/validation.js", + "source_location": "L57", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_holdingstable_jsx", - "target": "src_api_updateholdingweight" + "source": "frontend_src_components_portfolio_validation_js", + "target": "portfolio_validation_todayiso" }, { - "relation": "imports", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/HoldingSearchBox.jsx", - "source_location": "L3", + "source_file": "frontend/src/components/portfolio/validation.js", + "source_location": "L61", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_holdingsearchbox_jsx", - "target": "src_api_searchstocks" + "source": "frontend_src_components_portfolio_validation_js", + "target": "portfolio_validation_assertnotfuture" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L167", + "source_file": "frontend/src/components/portfolio/validation.js", + "source_location": "L68", "weight": 1.0, "confidence_score": 1.0, - "source": "src_api_streamchat", - "target": "src_api_readeventstream" + "source": "frontend_src_components_portfolio_validation_js", + "target": "portfolio_validation_assertdividendtotal" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.js", - "source_location": "L172", + "source_file": "frontend/src/components/portfolio/validation.js", + "source_location": "L18", "weight": 1.0, "confidence_score": 1.0, - "source": "src_api_resumechat", - "target": "src_api_readeventstream" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "frontend/src/api.js", - "source_location": "L130", - "weight": 1.0, - "source": "src_api_readeventstream", - "target": "src_api_test_ondone" + "source": "portfolio_validation_normalizeticker", + "target": "portfolio_validation_cleanstring" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "frontend/src/api.js", - "source_location": "L140", + "confidence": "EXTRACTED", + "source_file": "frontend/src/components/portfolio/validation.js", + "source_location": "L24", "weight": 1.0, - "source": "src_api_readeventstream", - "target": "src_api_test_onsession" + "confidence_score": 1.0, + "source": "portfolio_validation_assertticker", + "target": "portfolio_validation_cleanstring" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "frontend/src/api.js", - "source_location": "L142", + "confidence": "EXTRACTED", + "source_file": "frontend/src/components/portfolio/validation.js", + "source_location": "L30", "weight": 1.0, - "source": "src_api_readeventstream", - "target": "src_api_test_onchunk" + "confidence_score": 1.0, + "source": "portfolio_validation_parsepositivenumber", + "target": "portfolio_validation_cleanstring" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "frontend/src/api.js", - "source_location": "L156", - "weight": 1.0, - "source": "src_api_readeventstream", - "target": "src_api_test_oncursor" - }, - { - "relation": "imports", - "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/App.jsx", - "source_location": "L6", + "source_file": "frontend/src/components/portfolio/validation.js", + "source_location": "L39", "weight": 1.0, "confidence_score": 1.0, - "source": "src_api_streamchat", - "target": "frontend_src_app_jsx" + "source": "portfolio_validation_parseweight", + "target": "portfolio_validation_cleanstring" }, { - "relation": "imports", - "context": "import", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "frontend/src/App.resume.test.jsx", - "source_location": "L15", + "source_file": "frontend/src/components/portfolio/validation.js", + "source_location": "L49", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_app_resume_test_jsx", - "target": "src_api_streamchat" + "source": "portfolio_validation_parseratefraction", + "target": "portfolio_validation_cleanstring" }, { - "relation": "imports", - "context": "import", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "frontend/tests/api.test.js", - "source_location": "L2", + "source_file": "frontend/src/components/portfolio/validation.js", + "source_location": "L22", "weight": 1.0, "confidence_score": 1.0, - "source": "src_api_streamchat", - "target": "frontend_tests_api_test_js" + "source": "portfolio_validation_assertticker", + "target": "portfolio_validation_normalizeticker" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "frontend/src/api.js", - "source_location": "L128", - "weight": 1.0, - "source": "src_api_streamchat", - "target": "tests_api_test_onerror" - }, - { - "relation": "imports", - "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/App.jsx", - "source_location": "L6", + "source_file": "frontend/src/components/portfolio/validation.js", + "source_location": "L62", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_app_jsx", - "target": "src_api_resumechat" + "source": "portfolio_validation_assertnotfuture", + "target": "portfolio_validation_todayiso" }, { - "relation": "imports", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/App.resume.test.jsx", - "source_location": "L15", + "source_file": "frontend/src/components/ui/alert-dialog.jsx", + "source_location": "L7", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_app_resume_test_jsx", - "target": "src_api_resumechat" + "source": "frontend_src_components_ui_alert_dialog_jsx", + "target": "ui_alert_dialog_alertdialog" }, { - "relation": "imports", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/api.test.js", - "source_location": "L2", + "source_file": "frontend/src/components/ui/alert-dialog.jsx", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_api_test_js", - "target": "src_api_resumechat" + "source": "frontend_src_components_ui_alert_dialog_jsx", + "target": "ui_alert_dialog_alertdialogtrigger" }, { - "relation": "imports_from", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/App.jsx", - "source_location": "L2", + "source_file": "frontend/src/components/ui/alert-dialog.jsx", + "source_location": "L19", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_app_jsx", - "target": "frontend_src_components_authform_jsx" + "source": "frontend_src_components_ui_alert_dialog_jsx", + "target": "ui_alert_dialog_alertdialogportal" }, { - "relation": "imports_from", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/App.jsx", - "source_location": "L3", + "source_file": "frontend/src/components/ui/alert-dialog.jsx", + "source_location": "L25", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_app_jsx", - "target": "frontend_src_components_sessionsidebar_jsx" + "source": "frontend_src_components_ui_alert_dialog_jsx", + "target": "ui_alert_dialog_alertdialogoverlay" }, { - "relation": "imports_from", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/App.jsx", - "source_location": "L4", + "source_file": "frontend/src/components/ui/alert-dialog.jsx", + "source_location": "L40", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_app_jsx", - "target": "frontend_src_components_messagelist_jsx" + "source": "frontend_src_components_ui_alert_dialog_jsx", + "target": "ui_alert_dialog_alertdialogcontent" }, { - "relation": "imports_from", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/App.jsx", - "source_location": "L5", + "source_file": "frontend/src/components/ui/alert-dialog.jsx", + "source_location": "L60", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_app_jsx", - "target": "frontend_src_components_inputbar_jsx" + "source": "frontend_src_components_ui_alert_dialog_jsx", + "target": "ui_alert_dialog_alertdialogheader" }, { - "relation": "imports_from", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/App.jsx", - "source_location": "L6", + "source_file": "frontend/src/components/ui/alert-dialog.jsx", + "source_location": "L75", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_app_jsx", - "target": "frontend_src_components_portfolio_portfolioview_jsx" + "source": "frontend_src_components_ui_alert_dialog_jsx", + "target": "ui_alert_dialog_alertdialogfooter" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/App.jsx", - "source_location": "L15", + "source_file": "frontend/src/components/ui/alert-dialog.jsx", + "source_location": "L90", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_app_jsx", - "target": "src_app_settleloopevents" + "source": "frontend_src_components_ui_alert_dialog_jsx", + "target": "ui_alert_dialog_alertdialogmedia" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/App.jsx", - "source_location": "L42", + "source_file": "frontend/src/components/ui/alert-dialog.jsx", + "source_location": "L105", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_app_jsx", - "target": "src_app_readresume" + "source": "frontend_src_components_ui_alert_dialog_jsx", + "target": "ui_alert_dialog_alertdialogtitle" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/App.jsx", - "source_location": "L50", + "source_file": "frontend/src/components/ui/alert-dialog.jsx", + "source_location": "L120", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_app_jsx", - "target": "src_app_saveresume" + "source": "frontend_src_components_ui_alert_dialog_jsx", + "target": "ui_alert_dialog_alertdialogdescription" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/App.jsx", - "source_location": "L54", + "source_file": "frontend/src/components/ui/alert-dialog.jsx", + "source_location": "L135", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_app_jsx", - "target": "src_app_clearresume" + "source": "frontend_src_components_ui_alert_dialog_jsx", + "target": "ui_alert_dialog_alertdialogaction" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/App.jsx", - "source_location": "L59", + "source_file": "frontend/src/components/ui/alert-dialog.jsx", + "source_location": "L148", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_app_jsx", - "target": "src_app_clearlastsession" + "source": "frontend_src_components_ui_alert_dialog_jsx", + "target": "ui_alert_dialog_alertdialogcancel" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "frontend/src/App.jsx", - "source_location": "L63", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/alert-dialog.jsx", + "source_location": "L32", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_app_jsx", - "target": "src_app_readlastsession" + "source": "ui_alert_dialog_alertdialogoverlay", + "target": "lib_utils_cn" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "frontend/src/App.jsx", - "source_location": "L71", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/alert-dialog.jsx", + "source_location": "L51", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_app_jsx", - "target": "src_app_savelastsession" + "source": "ui_alert_dialog_alertdialogcontent", + "target": "lib_utils_cn" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "frontend/src/App.jsx", - "source_location": "L16", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/alert-dialog.jsx", + "source_location": "L67", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_app_jsx", - "target": "src_app_app" + "source": "ui_alert_dialog_alertdialogheader", + "target": "lib_utils_cn" }, { - "relation": "imports_from", - "context": "import", - "confidence": "EXTRACTED", - "source_file": "frontend/src/App.resume.test.jsx", - "source_location": "L3", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/alert-dialog.jsx", + "source_location": "L82", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_app_resume_test_jsx", - "target": "frontend_src_app_jsx" + "source": "ui_alert_dialog_alertdialogfooter", + "target": "lib_utils_cn" }, { - "relation": "imports_from", - "context": "import", - "confidence": "EXTRACTED", - "source_file": "frontend/src/main.jsx", - "source_location": "L3", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/alert-dialog.jsx", + "source_location": "L97", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_app_jsx", - "target": "frontend_src_main_jsx" + "source": "ui_alert_dialog_alertdialogmedia", + "target": "lib_utils_cn" }, { - "relation": "imports", - "context": "import", - "confidence": "EXTRACTED", - "source_file": "frontend/src/App.jsx", - "source_location": "L6", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/alert-dialog.jsx", + "source_location": "L112", "weight": 1.0, - "confidence_score": 1.0, - "source": "src_api_createsession", - "target": "frontend_src_app_jsx" + "source": "ui_alert_dialog_alertdialogtitle", + "target": "lib_utils_cn" }, { - "relation": "imports_from", - "context": "import", - "confidence": "EXTRACTED", - "source_file": "frontend/src/App.jsx", - "source_location": "L6", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/alert-dialog.jsx", + "source_location": "L127", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_app_jsx", - "target": "frontend_src_components_agentloop_jsx" + "source": "ui_alert_dialog_alertdialogdescription", + "target": "lib_utils_cn" }, { - "relation": "imports_from", - "context": "import", - "confidence": "EXTRACTED", - "source_file": "frontend/tests/App.test.jsx", - "source_location": "L3", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/alert-dialog.jsx", + "source_location": "L143", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_app_jsx", - "target": "frontend_tests_app_test_jsx" + "source": "ui_alert_dialog_alertdialogaction", + "target": "lib_utils_cn" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "frontend/src/App.resume.test.jsx", - "source_location": "L72", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/alert-dialog.jsx", + "source_location": "L156", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_app_resume_test_jsx", - "target": "src_app_resume_test_sendbtn" + "source": "ui_alert_dialog_alertdialogcancel", + "target": "lib_utils_cn" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/App.resume.test.jsx", - "source_location": "L82", + "source_file": "frontend/src/components/ui/avatar.jsx", + "source_location": "L6", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_app_resume_test_jsx", - "target": "src_app_resume_test_textarea" + "source": "frontend_src_components_ui_avatar_jsx", + "target": "ui_avatar_avatar" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/AgentLoop.jsx", - "source_location": "L27", + "source_file": "frontend/src/components/ui/avatar.jsx", + "source_location": "L23", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_agentloop_jsx", - "target": "components_agentloop_agentloop" + "source": "frontend_src_components_ui_avatar_jsx", + "target": "ui_avatar_avatarimage" }, { - "relation": "imports_from", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/MessageList.jsx", - "source_location": "L3", + "source_file": "frontend/src/components/ui/avatar.jsx", + "source_location": "L35", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_agentloop_jsx", - "target": "frontend_src_components_messagelist_jsx" + "source": "frontend_src_components_ui_avatar_jsx", + "target": "ui_avatar_avatarfallback" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/AgentLoop.jsx", - "source_location": "L3", + "source_file": "frontend/src/components/ui/avatar.jsx", + "source_location": "L50", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_agentloop_jsx", - "target": "components_agentloop_toolchip" + "source": "frontend_src_components_ui_avatar_jsx", + "target": "ui_avatar_avatarbadge" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/AgentLoop.jsx", - "source_location": "L3", + "source_file": "frontend/src/components/ui/avatar.jsx", + "source_location": "L68", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_agentloop_jsx", - "target": "components_agentloop_toolcard" + "source": "frontend_src_components_ui_avatar_jsx", + "target": "ui_avatar_avatargroup" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/AuthForm.jsx", - "source_location": "L4", + "source_file": "frontend/src/components/ui/avatar.jsx", + "source_location": "L83", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_authform_jsx", - "target": "components_authform_authform" + "source": "frontend_src_components_ui_avatar_jsx", + "target": "ui_avatar_avatargroupcount" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/InputBar.jsx", - "source_location": "L3", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/avatar.jsx", + "source_location": "L15", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_inputbar_jsx", - "target": "components_inputbar_inputbar" + "source": "ui_avatar_avatar", + "target": "lib_utils_cn" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/MessageList.jsx", - "source_location": "L7", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/avatar.jsx", + "source_location": "L30", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_messagelist_jsx", - "target": "components_messagelist_suggestions" + "source": "ui_avatar_avatarimage", + "target": "lib_utils_cn" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/MessageList.jsx", - "source_location": "L4", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/avatar.jsx", + "source_location": "L42", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_messagelist_jsx", - "target": "components_messagelist_messagelist" + "source": "ui_avatar_avatarfallback", + "target": "lib_utils_cn" }, { - "relation": "imports_from", - "context": "import", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/MessageList.jsx", - "source_location": "L2", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/avatar.jsx", + "source_location": "L57", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_mdocmessage_jsx", - "target": "frontend_src_components_messagelist_jsx" + "source": "ui_avatar_avatarbadge", + "target": "lib_utils_cn" }, { - "relation": "imports_from", - "context": "import", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/SessionSidebar.jsx", - "source_location": "L33", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/avatar.jsx", + "source_location": "L75", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_sessionsidebar_jsx", - "target": "frontend_src_components_settingsdialog_jsx" + "source": "ui_avatar_avatargroup", + "target": "lib_utils_cn" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/avatar.jsx", + "source_location": "L90", + "weight": 1.0, + "source": "ui_avatar_avatargroupcount", + "target": "lib_utils_cn" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/SessionSidebar.jsx", - "source_location": "L3", + "source_file": "frontend/src/components/ui/button.jsx", + "source_location": "L7", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_sessionsidebar_jsx", - "target": "components_sessionsidebar_sessionsidebar" + "source": "frontend_src_components_ui_button_jsx", + "target": "ui_button_buttonvariants" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/SettingsDialog.jsx", - "source_location": "L14", + "source_file": "frontend/src/components/ui/button.jsx", + "source_location": "L42", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_settingsdialog_jsx", - "target": "components_settingsdialog_settingsdialog" + "source": "frontend_src_components_ui_button_jsx", + "target": "ui_button_button" }, { - "relation": "imports_from", - "context": "import", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/AddDividendDialog.jsx", - "source_location": "L6", + "source_file": "frontend/src/components/ui/button.jsx", + "source_location": "L56", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_adddividenddialog_jsx", - "target": "frontend_src_components_portfolio_validation_js" + "source": "ui_button_button", + "target": "ui_button_buttonvariants" }, { - "relation": "imports", - "context": "import", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/AddDividendDialog.jsx", - "source_location": "L6", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/button.jsx", + "source_location": "L56", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_adddividenddialog_jsx", - "target": "portfolio_validation_assertdividendtotal" + "source": "ui_button_button", + "target": "lib_utils_cn" }, { - "relation": "imports", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/AddDividendDialog.jsx", - "source_location": "L6", + "source_file": "frontend/src/components/ui/card.jsx", + "source_location": "L5", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_adddividenddialog_jsx", - "target": "portfolio_validation_assertnotfuture" + "source": "frontend_src_components_ui_card_jsx", + "target": "ui_card_card" }, { - "relation": "imports", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/AddDividendDialog.jsx", - "source_location": "L6", + "source_file": "frontend/src/components/ui/card.jsx", + "source_location": "L18", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_adddividenddialog_jsx", - "target": "portfolio_validation_cleanstring" + "source": "frontend_src_components_ui_card_jsx", + "target": "ui_card_cardheader" }, { - "relation": "imports", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/AddDividendDialog.jsx", - "source_location": "L6", + "source_file": "frontend/src/components/ui/card.jsx", + "source_location": "L31", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_adddividenddialog_jsx", - "target": "portfolio_validation_parsepositivenumber" + "source": "frontend_src_components_ui_card_jsx", + "target": "ui_card_cardtitle" }, { - "relation": "imports", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/AddDividendDialog.jsx", - "source_location": "L6", + "source_file": "frontend/src/components/ui/card.jsx", + "source_location": "L41", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_adddividenddialog_jsx", - "target": "portfolio_validation_todayiso" + "source": "frontend_src_components_ui_card_jsx", + "target": "ui_card_carddescription" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/AddDividendDialog.jsx", - "source_location": "L14", + "source_file": "frontend/src/components/ui/card.jsx", + "source_location": "L51", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_adddividenddialog_jsx", - "target": "portfolio_adddividenddialog_fmtbrl" + "source": "frontend_src_components_ui_card_jsx", + "target": "ui_card_cardcontent" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/AddDividendDialog.jsx", - "source_location": "L19", + "source_file": "frontend/src/components/ui/card.jsx", + "source_location": "L57", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_adddividenddialog_jsx", - "target": "portfolio_adddividenddialog_adddividenddialog" + "source": "frontend_src_components_ui_card_jsx", + "target": "ui_card_cardfooter" }, { - "relation": "imports_from", - "context": "import", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/PortfolioView.jsx", - "source_location": "L11", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/card.jsx", + "source_location": "L9", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_portfolioview_jsx", - "target": "frontend_src_components_portfolio_adddividenddialog_jsx" + "source": "ui_card_card", + "target": "lib_utils_cn" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/AddDividendDialog.jsx", - "source_location": "L104", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/card.jsx", + "source_location": "L22", "weight": 1.0, - "confidence_score": 1.0, - "source": "portfolio_adddividenddialog_adddividenddialog", - "target": "portfolio_adddividenddialog_fmtbrl" + "source": "ui_card_cardheader", + "target": "lib_utils_cn" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "frontend/src/components/portfolio/AddDividendDialog.jsx", - "source_location": "L23", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/card.jsx", + "source_location": "L35", "weight": 1.0, - "source": "portfolio_adddividenddialog_adddividenddialog", - "target": "portfolio_validation_todayiso" + "source": "ui_card_cardtitle", + "target": "lib_utils_cn" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/AddHoldingDialog.jsx", - "source_location": "L8", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/card.jsx", + "source_location": "L45", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_addholdingdialog_jsx", - "target": "portfolio_addholdingdialog_addholdingdialog" + "source": "ui_card_carddescription", + "target": "lib_utils_cn" }, { - "relation": "imports_from", - "context": "import", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/AddLotDialog.jsx", - "source_location": "L7", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/card.jsx", + "source_location": "L53", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_addlotdialog_jsx", - "target": "frontend_src_components_portfolio_validation_js" + "source": "ui_card_cardcontent", + "target": "lib_utils_cn" }, { - "relation": "imports", - "context": "import", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/AddLotDialog.jsx", - "source_location": "L7", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/card.jsx", + "source_location": "L61", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_addlotdialog_jsx", - "target": "portfolio_validation_assertnotfuture" + "source": "ui_card_cardfooter", + "target": "lib_utils_cn" }, { - "relation": "imports", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/AddLotDialog.jsx", + "source_file": "frontend/src/components/ui/context-menu.jsx", "source_location": "L7", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_addlotdialog_jsx", - "target": "portfolio_validation_assertticker" + "source": "frontend_src_components_ui_context_menu_jsx", + "target": "ui_context_menu_contextmenu" }, { - "relation": "imports", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/AddLotDialog.jsx", - "source_location": "L7", + "source_file": "frontend/src/components/ui/context-menu.jsx", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_addlotdialog_jsx", - "target": "portfolio_validation_cleanstring" + "source": "frontend_src_components_ui_context_menu_jsx", + "target": "ui_context_menu_contextmenutrigger" }, { - "relation": "imports", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/AddLotDialog.jsx", - "source_location": "L7", + "source_file": "frontend/src/components/ui/context-menu.jsx", + "source_location": "L25", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_addlotdialog_jsx", - "target": "portfolio_validation_parsepositivenumber" + "source": "frontend_src_components_ui_context_menu_jsx", + "target": "ui_context_menu_contextmenugroup" }, { - "relation": "imports", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/AddLotDialog.jsx", - "source_location": "L7", + "source_file": "frontend/src/components/ui/context-menu.jsx", + "source_location": "L31", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_addlotdialog_jsx", - "target": "portfolio_validation_parseratefraction" + "source": "frontend_src_components_ui_context_menu_jsx", + "target": "ui_context_menu_contextmenuportal" }, { - "relation": "imports", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/AddLotDialog.jsx", - "source_location": "L7", + "source_file": "frontend/src/components/ui/context-menu.jsx", + "source_location": "L37", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_addlotdialog_jsx", - "target": "portfolio_validation_todayiso" + "source": "frontend_src_components_ui_context_menu_jsx", + "target": "ui_context_menu_contextmenusub" }, { - "relation": "imports_from", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/AddLotDialog.jsx", - "source_location": "L15", + "source_file": "frontend/src/components/ui/context-menu.jsx", + "source_location": "L43", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_addlotdialog_jsx", - "target": "frontend_src_components_portfolio_holdingsearchbox_jsx" + "source": "frontend_src_components_ui_context_menu_jsx", + "target": "ui_context_menu_contextmenuradiogroup" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/AddLotDialog.jsx", - "source_location": "L25", + "source_file": "frontend/src/components/ui/context-menu.jsx", + "source_location": "L49", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_addlotdialog_jsx", - "target": "portfolio_addlotdialog_addlotdialog" + "source": "frontend_src_components_ui_context_menu_jsx", + "target": "ui_context_menu_contextmenucontent" }, { - "relation": "imports_from", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/PortfolioView.jsx", - "source_location": "L10", + "source_file": "frontend/src/components/ui/context-menu.jsx", + "source_location": "L66", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_portfolioview_jsx", - "target": "frontend_src_components_portfolio_addlotdialog_jsx" - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "frontend/src/components/portfolio/AddLotDialog.jsx", - "source_location": "L30", - "weight": 1.0, - "source": "portfolio_addlotdialog_addlotdialog", - "target": "portfolio_validation_todayiso" + "source": "frontend_src_components_ui_context_menu_jsx", + "target": "ui_context_menu_contextmenuitem" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/charts.jsx", - "source_location": "L17", + "source_file": "frontend/src/components/ui/context-menu.jsx", + "source_location": "L85", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_charts_jsx", - "target": "portfolio_charts_chart_colors" + "source": "frontend_src_components_ui_context_menu_jsx", + "target": "ui_context_menu_contextmenusubtrigger" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/charts.jsx", - "source_location": "L25", + "source_file": "frontend/src/components/ui/context-menu.jsx", + "source_location": "L106", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_charts_jsx", - "target": "portfolio_charts_tooltipstyle" + "source": "frontend_src_components_ui_context_menu_jsx", + "target": "ui_context_menu_contextmenusubcontent" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/charts.jsx", - "source_location": "L33", + "source_file": "frontend/src/components/ui/context-menu.jsx", + "source_location": "L121", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_charts_jsx", - "target": "portfolio_charts_portfoliopiecard" + "source": "frontend_src_components_ui_context_menu_jsx", + "target": "ui_context_menu_contextmenucheckboxitem" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/charts.jsx", - "source_location": "L58", + "source_file": "frontend/src/components/ui/context-menu.jsx", + "source_location": "L148", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_charts_jsx", - "target": "portfolio_charts_portfoliobarscard" + "source": "frontend_src_components_ui_context_menu_jsx", + "target": "ui_context_menu_contextmenuradioitem" }, { - "relation": "imports_from", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/DistributionChart.jsx", - "source_location": "L1", + "source_file": "frontend/src/components/ui/context-menu.jsx", + "source_location": "L173", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_distributionchart_jsx", - "target": "frontend_src_components_portfolio_charts_jsx" + "source": "frontend_src_components_ui_context_menu_jsx", + "target": "ui_context_menu_contextmenulabel" }, { - "relation": "imports_from", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/MonthlyBars.jsx", - "source_location": "L2", + "source_file": "frontend/src/components/ui/context-menu.jsx", + "source_location": "L187", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_monthlybars_jsx", - "target": "frontend_src_components_portfolio_charts_jsx" + "source": "frontend_src_components_ui_context_menu_jsx", + "target": "ui_context_menu_contextmenuseparator" }, { - "relation": "imports", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/DistributionChart.jsx", - "source_location": "L1", + "source_file": "frontend/src/components/ui/context-menu.jsx", + "source_location": "L199", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_distributionchart_jsx", - "target": "portfolio_charts_portfoliopiecard" + "source": "frontend_src_components_ui_context_menu_jsx", + "target": "ui_context_menu_contextmenushortcut" }, { - "relation": "imports", - "context": "import", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/MonthlyBars.jsx", - "source_location": "L2", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/context-menu.jsx", + "source_location": "L20", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_monthlybars_jsx", - "target": "portfolio_charts_portfoliobarscard" + "source": "ui_context_menu_contextmenutrigger", + "target": "lib_utils_cn" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/DistributionChart.jsx", - "source_location": "L3", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/context-menu.jsx", + "source_location": "L57", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_distributionchart_jsx", - "target": "portfolio_distributionchart_distributionchart" + "source": "ui_context_menu_contextmenucontent", + "target": "lib_utils_cn" }, { - "relation": "imports_from", - "context": "import", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/PortfolioView.jsx", - "source_location": "L6", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/context-menu.jsx", + "source_location": "L77", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_portfolioview_jsx", - "target": "frontend_src_components_portfolio_distributionchart_jsx" + "source": "ui_context_menu_contextmenuitem", + "target": "lib_utils_cn" }, { - "relation": "imports_from", - "context": "import", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/HistoryList.jsx", - "source_location": "L8", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/context-menu.jsx", + "source_location": "L95", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_historylist_jsx", - "target": "frontend_src_components_portfolio_validation_js" + "source": "ui_context_menu_contextmenusubtrigger", + "target": "lib_utils_cn" }, { - "relation": "imports", - "context": "import", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/HistoryList.jsx", - "source_location": "L8", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/context-menu.jsx", + "source_location": "L113", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_historylist_jsx", - "target": "portfolio_validation_assertdividendtotal" + "source": "ui_context_menu_contextmenusubcontent", + "target": "lib_utils_cn" }, { - "relation": "imports", - "context": "import", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/HistoryList.jsx", - "source_location": "L8", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/context-menu.jsx", + "source_location": "L132", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_historylist_jsx", - "target": "portfolio_validation_assertnotfuture" + "source": "ui_context_menu_contextmenucheckboxitem", + "target": "lib_utils_cn" }, { - "relation": "imports", - "context": "import", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/HistoryList.jsx", - "source_location": "L8", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/context-menu.jsx", + "source_location": "L158", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_historylist_jsx", - "target": "portfolio_validation_cleanstring" + "source": "ui_context_menu_contextmenuradioitem", + "target": "lib_utils_cn" }, { - "relation": "imports", - "context": "import", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/HistoryList.jsx", - "source_location": "L8", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/context-menu.jsx", + "source_location": "L182", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_historylist_jsx", - "target": "portfolio_validation_parsepositivenumber" + "source": "ui_context_menu_contextmenulabel", + "target": "lib_utils_cn" }, { - "relation": "imports", - "context": "import", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/HistoryList.jsx", - "source_location": "L8", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/context-menu.jsx", + "source_location": "L194", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_historylist_jsx", - "target": "portfolio_validation_todayiso" + "source": "ui_context_menu_contextmenuseparator", + "target": "lib_utils_cn" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/HistoryList.jsx", - "source_location": "L16", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/context-menu.jsx", + "source_location": "L206", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_historylist_jsx", - "target": "portfolio_historylist_kind_styles" + "source": "ui_context_menu_contextmenushortcut", + "target": "lib_utils_cn" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/HistoryList.jsx", - "source_location": "L23", + "source_file": "frontend/src/components/ui/dialog.jsx", + "source_location": "L10", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_historylist_jsx", - "target": "portfolio_historylist_fmtmoney" + "source": "frontend_src_components_ui_dialog_jsx", + "target": "ui_dialog_dialog" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/HistoryList.jsx", - "source_location": "L28", + "source_file": "frontend/src/components/ui/dialog.jsx", + "source_location": "L16", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_historylist_jsx", - "target": "portfolio_historylist_lottitle" + "source": "frontend_src_components_ui_dialog_jsx", + "target": "ui_dialog_dialogtrigger" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/HistoryList.jsx", - "source_location": "L36", + "source_file": "frontend/src/components/ui/dialog.jsx", + "source_location": "L22", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_historylist_jsx", - "target": "portfolio_historylist_entrydate" + "source": "frontend_src_components_ui_dialog_jsx", + "target": "ui_dialog_dialogportal" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/HistoryList.jsx", - "source_location": "L40", + "source_file": "frontend/src/components/ui/dialog.jsx", + "source_location": "L28", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_historylist_jsx", - "target": "portfolio_historylist_entrykind" + "source": "frontend_src_components_ui_dialog_jsx", + "target": "ui_dialog_dialogclose" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/HistoryList.jsx", - "source_location": "L46", + "source_file": "frontend/src/components/ui/dialog.jsx", + "source_location": "L34", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_historylist_jsx", - "target": "portfolio_historylist_dateonly" + "source": "frontend_src_components_ui_dialog_jsx", + "target": "ui_dialog_dialogoverlay" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/HistoryList.jsx", - "source_location": "L50", + "source_file": "frontend/src/components/ui/dialog.jsx", + "source_location": "L49", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_historylist_jsx", - "target": "portfolio_historylist_fmtbrl" + "source": "frontend_src_components_ui_dialog_jsx", + "target": "ui_dialog_dialogcontent" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/HistoryList.jsx", - "source_location": "L58", + "source_file": "frontend/src/components/ui/dialog.jsx", + "source_location": "L82", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_historylist_jsx", - "target": "portfolio_historylist_editlotdialog" + "source": "frontend_src_components_ui_dialog_jsx", + "target": "ui_dialog_dialogheader" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/HistoryList.jsx", - "source_location": "L122", + "source_file": "frontend/src/components/ui/dialog.jsx", + "source_location": "L94", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_historylist_jsx", - "target": "portfolio_historylist_editdividenddialog" + "source": "frontend_src_components_ui_dialog_jsx", + "target": "ui_dialog_dialogfooter" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/HistoryList.jsx", - "source_location": "L216", + "source_file": "frontend/src/components/ui/dialog.jsx", + "source_location": "L115", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_historylist_jsx", - "target": "portfolio_historylist_historylist" + "source": "frontend_src_components_ui_dialog_jsx", + "target": "ui_dialog_dialogtitle" }, { - "relation": "imports_from", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/PortfolioView.jsx", - "source_location": "L9", + "source_file": "frontend/src/components/ui/dialog.jsx", + "source_location": "L127", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_portfolioview_jsx", - "target": "frontend_src_components_portfolio_historylist_jsx" + "source": "frontend_src_components_ui_dialog_jsx", + "target": "ui_dialog_dialogdescription" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/HistoryList.jsx", - "source_location": "L31", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/dialog.jsx", + "source_location": "L41", "weight": 1.0, - "confidence_score": 1.0, - "source": "portfolio_historylist_lottitle", - "target": "portfolio_historylist_fmtmoney" + "source": "ui_dialog_dialogoverlay", + "target": "lib_utils_cn" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/HistoryList.jsx", - "source_location": "L61", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/dialog.jsx", + "source_location": "L60", "weight": 1.0, - "confidence_score": 1.0, - "source": "portfolio_historylist_editlotdialog", - "target": "portfolio_historylist_dateonly" + "source": "ui_dialog_dialogcontent", + "target": "lib_utils_cn" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/HistoryList.jsx", - "source_location": "L125", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/dialog.jsx", + "source_location": "L89", "weight": 1.0, - "confidence_score": 1.0, - "source": "portfolio_historylist_editdividenddialog", - "target": "portfolio_historylist_dateonly" + "source": "ui_dialog_dialogheader", + "target": "lib_utils_cn" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/HistoryList.jsx", - "source_location": "L184", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/dialog.jsx", + "source_location": "L103", "weight": 1.0, - "confidence_score": 1.0, - "source": "portfolio_historylist_editdividenddialog", - "target": "portfolio_historylist_fmtbrl" + "source": "ui_dialog_dialogfooter", + "target": "lib_utils_cn" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "frontend/src/components/portfolio/HistoryList.jsx", - "source_location": "L61", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/dialog.jsx", + "source_location": "L122", "weight": 1.0, - "source": "portfolio_historylist_editlotdialog", - "target": "portfolio_validation_todayiso" + "source": "ui_dialog_dialogtitle", + "target": "lib_utils_cn" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "frontend/src/components/portfolio/HistoryList.jsx", - "source_location": "L125", - "weight": 1.0, - "source": "portfolio_historylist_editdividenddialog", - "target": "portfolio_validation_todayiso" - }, - { - "relation": "imports_from", - "context": "import", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/HoldingSearchBox.jsx", - "source_location": "L4", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/dialog.jsx", + "source_location": "L134", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_holdingsearchbox_jsx", - "target": "frontend_src_components_portfolio_validation_js" + "source": "ui_dialog_dialogdescription", + "target": "lib_utils_cn" }, { - "relation": "imports", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/HoldingSearchBox.jsx", - "source_location": "L4", + "source_file": "frontend/src/components/ui/input.jsx", + "source_location": "L5", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_holdingsearchbox_jsx", - "target": "portfolio_validation_cleanstring" + "source": "frontend_src_components_ui_input_jsx", + "target": "ui_input_input" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/HoldingSearchBox.jsx", - "source_location": "L9", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/input.jsx", + "source_location": "L14", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_holdingsearchbox_jsx", - "target": "portfolio_holdingsearchbox_matchholdings" + "source": "ui_input_input", + "target": "lib_utils_cn" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/HoldingSearchBox.jsx", - "source_location": "L19", + "source_file": "frontend/src/components/ui/scroll-area.jsx", + "source_location": "L8", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_holdingsearchbox_jsx", - "target": "portfolio_holdingsearchbox_rowscore" + "source": "frontend_src_components_ui_scroll_area_jsx", + "target": "ui_scroll_area_scrollarea" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/HoldingSearchBox.jsx", - "source_location": "L29", + "source_file": "frontend/src/components/ui/scroll-area.jsx", + "source_location": "L26", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_holdingsearchbox_jsx", - "target": "portfolio_holdingsearchbox_holdingsearchbox" + "source": "frontend_src_components_ui_scroll_area_jsx", + "target": "ui_scroll_area_scrollbar" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "frontend/src/components/portfolio/HoldingSearchBox.jsx", - "source_location": "L10", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/scroll-area.jsx", + "source_location": "L14", "weight": 1.0, - "source": "portfolio_holdingsearchbox_matchholdings", - "target": "portfolio_validation_cleanstring" + "source": "ui_scroll_area_scrollarea", + "target": "lib_utils_cn" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "frontend/src/components/portfolio/HoldingSearchBox.jsx", - "source_location": "L102", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/scroll-area.jsx", + "source_location": "L36", "weight": 1.0, - "source": "portfolio_holdingsearchbox_holdingsearchbox", - "target": "portfolio_validation_cleanstring" + "source": "ui_scroll_area_scrollbar", + "target": "lib_utils_cn" }, { - "relation": "imports_from", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/HoldingsTable.jsx", + "source_file": "frontend/src/components/ui/separator.jsx", "source_location": "L6", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_holdingstable_jsx", - "target": "frontend_src_components_portfolio_validation_js" + "source": "frontend_src_components_ui_separator_jsx", + "target": "ui_separator_separator" }, { - "relation": "imports", - "context": "import", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/HoldingsTable.jsx", - "source_location": "L6", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/separator.jsx", + "source_location": "L17", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_holdingstable_jsx", - "target": "portfolio_validation_parseweight" + "source": "ui_separator_separator", + "target": "lib_utils_cn" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/HoldingsTable.jsx", - "source_location": "L9", + "source_file": "frontend/src/lib/utils.js", + "source_location": "L4", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_holdingstable_jsx", - "target": "portfolio_holdingstable_fmtmoney" + "source": "frontend_src_lib_utils_js", + "target": "lib_utils_cn" }, { - "relation": "contains", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/HoldingsTable.jsx", - "source_location": "L14", + "source_file": "main/app/authentication/authentication.py", + "source_location": "L5", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_holdingstable_jsx", - "target": "portfolio_holdingstable_fmtpct" + "source": "main_app_authentication_authentication_py", + "target": "fastapi" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/HoldingsTable.jsx", - "source_location": "L19", + "source_file": "main/app/authentication/authentication.py", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_holdingstable_jsx", - "target": "portfolio_holdingstable_columns" + "source": "main_app_authentication_authentication_py", + "target": "authentication_authentication_authenticationmanager" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/HoldingsTable.jsx", - "source_location": "L24", + "source_file": "main/app/authentication/authentication.py", + "source_location": "L15", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_holdingstable_jsx", - "target": "portfolio_holdingstable_holdingstable" + "source": "main_app_authentication_authentication_py", + "target": "authentication_authentication_createuseraccount" }, { - "relation": "imports_from", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/PortfolioView.jsx", - "source_location": "L8", + "source_file": "main/app/authentication/authentication.py", + "source_location": "L48", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_portfolioview_jsx", - "target": "frontend_src_components_portfolio_holdingstable_jsx" + "source": "main_app_authentication_authentication_py", + "target": "authentication_authentication_authenticategoogleuser" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/monthly.js", - "source_location": "L5", + "source_file": "main/app/authentication/authentication.py", + "source_location": "L62", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_monthly_js", - "target": "portfolio_monthly_monthkey" + "source": "main_app_authentication_authentication_py", + "target": "authentication_authentication_authenticateuser" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/monthly.js", - "source_location": "L20", + "source_file": "main/app/authentication/authentication.py", + "source_location": "L79", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_monthly_js", - "target": "portfolio_monthly_grouphistorybymonth" + "source": "main_app_authentication_authentication_py", + "target": "authentication_authentication_resolveuniqueusername", + "confidence_score": 1.0 }, { - "relation": "imports_from", - "context": "import", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/MonthlyBars.jsx", - "source_location": "L3", - "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_monthlybars_jsx", - "target": "frontend_src_components_portfolio_monthly_js" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/authentication/authentication.py", + "source_location": "L2", + "weight": 0.8, + "confidence_score": 0.5, + "source": "authentication_authentication_authenticationmanager", + "target": "utils_roles_roles" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/authentication/authentication.py", + "source_location": "L8", + "weight": 0.8, + "confidence_score": 0.5, + "source": "authentication_authentication_authenticationmanager", + "target": "user_user_usermanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/authentication/authentication.py", + "source_location": "L9", + "weight": 0.8, + "confidence_score": 0.5, + "source": "authentication_authentication_authenticationmanager", + "target": "models_user_user" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L560", + "weight": 0.8, + "confidence_score": 0.5, + "source": "authentication_authentication_authenticationmanager", + "target": "tests_test_prometheus_auth_coverage_testprometheusinit" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L560", + "weight": 0.8, + "confidence_score": 0.5, + "source": "authentication_authentication_authenticationmanager", + "target": "tests_test_prometheus_auth_coverage_testprometheussendmessage" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L827", + "weight": 0.8, + "confidence_score": 0.5, + "source": "authentication_authentication_authenticationmanager", + "target": "tests_test_prometheus_auth_coverage_testprometheuschatmanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L827", + "weight": 0.8, + "confidence_score": 0.5, + "source": "authentication_authentication_authenticationmanager", + "target": "tests_test_prometheus_auth_coverage_testauthenticationmanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L827", + "weight": 0.8, + "confidence_score": 0.5, + "source": "authentication_authentication_authenticationmanager", + "target": "tests_test_prometheus_auth_coverage_testsessionmanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L827", + "weight": 0.8, + "confidence_score": 0.5, + "source": "authentication_authentication_authenticationmanager", + "target": "tests_test_prometheus_auth_coverage_testsso" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L827", + "weight": 0.8, + "confidence_score": 0.5, + "source": "authentication_authentication_authenticationmanager", + "target": "tests_test_prometheus_auth_coverage_testprometheusgeneratorinit" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L827", + "weight": 0.8, + "confidence_score": 0.5, + "source": "authentication_authentication_authenticationmanager", + "target": "tests_test_prometheus_auth_coverage_testprometheusgeneratorexecuteworkflow" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/monthly.js", - "source_location": "L24", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/authentication/authentication.py", + "source_location": "L29", "weight": 1.0, - "confidence_score": 1.0, - "source": "portfolio_monthly_grouphistorybymonth", - "target": "portfolio_monthly_monthkey" + "source": "authentication_authentication_createuseraccount", + "target": "authentication_util_hashpassword" }, { - "relation": "imports", - "context": "import", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/MonthlyBars.jsx", - "source_location": "L3", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/authentication/authentication.py", + "source_location": "L31", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_monthlybars_jsx", - "target": "portfolio_monthly_grouphistorybymonth" + "source": "authentication_authentication_createuseraccount", + "target": "models_user_user" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/MonthlyBars.jsx", - "source_location": "L5", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/authentication/authentication.py", + "source_location": "L66", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_monthlybars_jsx", - "target": "portfolio_monthlybars_monthlybars" + "source": "authentication_authentication_authenticateuser", + "target": "authentication_util_verifypassword" }, { "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/PortfolioView.jsx", - "source_location": "L7", + "source_file": "main/app/authentication/introspect.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_portfolioview_jsx", - "target": "frontend_src_components_portfolio_monthlybars_jsx" + "source": "main_app_authentication_introspect_py", + "target": "fastapi" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/OverviewCards.jsx", - "source_location": "L3", + "source_file": "main/app/authentication/introspect.py", + "source_location": "L10", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_overviewcards_jsx", - "target": "portfolio_overviewcards_fmtbrl" + "source": "main_app_authentication_introspect_py", + "target": "authentication_introspect_introspecttoken" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/OverviewCards.jsx", - "source_location": "L8", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/authentication/introspect.py", + "source_location": "L15", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_overviewcards_jsx", - "target": "portfolio_overviewcards_fmtpct" + "source": "authentication_introspect_introspecttoken", + "target": "authentication_util_verifyaccesstoken" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/OverviewCards.jsx", - "source_location": "L14", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/controller/authentication_controller.py", + "source_location": "L167", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_overviewcards_jsx", - "target": "portfolio_overviewcards_statcard" + "source": "controller_authentication_controller_introspect", + "target": "authentication_introspect_introspecttoken" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/OverviewCards.jsx", - "source_location": "L34", + "source_file": "main/app/authentication/session.py", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_overviewcards_jsx", - "target": "portfolio_overviewcards_overviewcards" + "source": "main_app_authentication_session_py", + "target": "authentication_session_parsedevicefields" }, { - "relation": "imports_from", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/PortfolioView.jsx", - "source_location": "L5", + "source_file": "main/app/authentication/session.py", + "source_location": "L11", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_portfolioview_jsx", - "target": "frontend_src_components_portfolio_overviewcards_jsx" + "source": "main_app_authentication_session_py", + "target": "authentication_session_sessionmanager" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/OverviewCards.jsx", - "source_location": "L45", + "source_file": "main/app/authentication/session.py", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "portfolio_overviewcards_overviewcards", - "target": "portfolio_overviewcards_fmtbrl" + "source": "main_app_authentication_session_py", + "target": "authentication_session_createsession" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/OverviewCards.jsx", + "source_file": "main/app/authentication/session.py", "source_location": "L50", "weight": 1.0, - "confidence_score": 1.0, - "source": "portfolio_overviewcards_overviewcards", - "target": "portfolio_overviewcards_fmtpct" + "confidence_score": 1.0, + "source": "main_app_authentication_session_py", + "target": "authentication_session_getusersessions" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/PortfolioView.jsx", - "source_location": "L15", + "source_file": "main/app/authentication/session.py", + "source_location": "L57", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_portfolioview_jsx", - "target": "portfolio_portfolioview_portfolioview" + "source": "main_app_authentication_session_py", + "target": "authentication_session_getsessionbyid" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/validation.js", - "source_location": "L13", + "source_file": "main/app/authentication/session.py", + "source_location": "L68", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_validation_js", - "target": "portfolio_validation_cleanstring" + "source": "main_app_authentication_session_py", + "target": "authentication_session_getcurrentsession" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/validation.js", - "source_location": "L17", + "source_file": "main/app/authentication/session.py", + "source_location": "L80", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_validation_js", - "target": "portfolio_validation_normalizeticker" + "source": "main_app_authentication_session_py", + "target": "authentication_session_revokesession" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/validation.js", - "source_location": "L21", + "source_file": "main/app/authentication/session.py", + "source_location": "L92", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_validation_js", - "target": "portfolio_validation_assertticker" + "source": "main_app_authentication_session_py", + "target": "authentication_session_revokeallsessions" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/validation.js", - "source_location": "L29", + "source_file": "main/app/authentication/session.py", + "source_location": "L122", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_validation_js", - "target": "portfolio_validation_parsepositivenumber" + "source": "main_app_authentication_session_py", + "target": "authentication_session_revokeallexcept", + "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/validation.js", - "source_location": "L38", + "source_file": "main/app/authentication/session.py", + "source_location": "L108", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_validation_js", - "target": "portfolio_validation_parseweight" + "source": "main_app_authentication_session_py", + "target": "authentication_session_updatelastactive" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/validation.js", - "source_location": "L48", + "source_file": "main/app/authentication/session.py", + "source_location": "L132", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_validation_js", - "target": "portfolio_validation_parseratefraction" + "source": "main_app_authentication_session_py", + "target": "authentication_session_validatesession" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/validation.js", - "source_location": "L57", + "source_file": "main/app/authentication/session.py", + "source_location": "L17", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_validation_js", - "target": "portfolio_validation_todayiso" + "source": "main_app_authentication_session_py", + "target": "authentication_session_getdevicename" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/validation.js", - "source_location": "L61", + "source_file": "main/app/authentication/session.py", + "source_location": "L118", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_validation_js", - "target": "portfolio_validation_assertnotfuture" + "source": "main_app_authentication_session_py", + "target": "authentication_session_cleanupexpiredsessions" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/validation.js", - "source_location": "L68", + "source_file": "main/app/authentication/session.py", + "source_location": "L64", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_portfolio_validation_js", - "target": "portfolio_validation_assertdividendtotal" + "source": "main_app_authentication_session_py", + "target": "authentication_session_getsessionbyidsafe" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/validation.js", - "source_location": "L18", + "source_file": "main/app/authentication/session.py", + "source_location": "L45", "weight": 1.0, "confidence_score": 1.0, - "source": "portfolio_validation_normalizeticker", - "target": "portfolio_validation_cleanstring" + "source": "authentication_session_createsession", + "target": "authentication_session_parsedevicefields" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/authentication/session.py", + "source_location": "L6", + "weight": 0.8, + "confidence_score": 0.5, + "source": "authentication_session_sessionmanager", + "target": "models_user_session_usersession" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/user/user.py", + "source_location": "L30", + "weight": 0.8, + "confidence_score": 0.5, + "source": "authentication_session_sessionmanager", + "target": "user_user_usermanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L825", + "weight": 0.8, + "confidence_score": 0.5, + "source": "authentication_session_sessionmanager", + "target": "tests_test_prometheus_auth_coverage_testprometheusinit" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L825", + "weight": 0.8, + "confidence_score": 0.5, + "source": "authentication_session_sessionmanager", + "target": "tests_test_prometheus_auth_coverage_testprometheussendmessage" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L1092", + "weight": 0.8, + "confidence_score": 0.5, + "source": "authentication_session_sessionmanager", + "target": "tests_test_prometheus_auth_coverage_testprometheuschatmanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L1092", + "weight": 0.8, + "confidence_score": 0.5, + "source": "authentication_session_sessionmanager", + "target": "tests_test_prometheus_auth_coverage_testauthenticationmanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L1092", + "weight": 0.8, + "confidence_score": 0.5, + "source": "authentication_session_sessionmanager", + "target": "tests_test_prometheus_auth_coverage_testsessionmanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L1092", + "weight": 0.8, + "confidence_score": 0.5, + "source": "authentication_session_sessionmanager", + "target": "tests_test_prometheus_auth_coverage_testsso" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_sessions.py", + "source_location": "L9", + "weight": 0.8, + "confidence_score": 0.5, + "source": "authentication_session_sessionmanager", + "target": "tests_test_sessions_testusersessionmodel" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_sessions.py", + "source_location": "L9", + "weight": 0.8, + "confidence_score": 0.5, + "source": "authentication_session_sessionmanager", + "target": "tests_test_sessions_testsessionexpiration" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L1092", + "weight": 0.8, + "confidence_score": 0.5, + "source": "authentication_session_sessionmanager", + "target": "tests_test_prometheus_auth_coverage_testprometheusgeneratorinit" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L1092", + "weight": 0.8, + "confidence_score": 0.5, + "source": "authentication_session_sessionmanager", + "target": "tests_test_prometheus_auth_coverage_testprometheusgeneratorexecuteworkflow" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/validation.js", - "source_location": "L24", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/authentication/session.py", + "source_location": "L29", "weight": 1.0, - "confidence_score": 1.0, - "source": "portfolio_validation_assertticker", - "target": "portfolio_validation_cleanstring" + "source": "authentication_session_createsession", + "target": "models_user_session_usersession" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/validation.js", - "source_location": "L30", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/authentication/session.py", + "source_location": "L23", "weight": 1.0, - "confidence_score": 1.0, - "source": "portfolio_validation_parsepositivenumber", - "target": "portfolio_validation_cleanstring" + "source": "authentication_device_parseuseragent", + "target": "authentication_session_createsession" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/validation.js", - "source_location": "L39", + "source_file": "main/app/authentication/session.py", + "source_location": "L133", "weight": 1.0, "confidence_score": 1.0, - "source": "portfolio_validation_parseweight", - "target": "portfolio_validation_cleanstring" + "source": "authentication_session_getsessionbyid", + "target": "authentication_session_validatesession" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/validation.js", - "source_location": "L49", + "source_file": "main/app/authentication/session.py", + "source_location": "L81", "weight": 1.0, "confidence_score": 1.0, - "source": "portfolio_validation_parseratefraction", - "target": "portfolio_validation_cleanstring" + "source": "authentication_session_getsessionbyid", + "target": "authentication_session_revokesession" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/validation.js", - "source_location": "L22", + "source_file": "main/app/authentication/sso.py", + "source_location": "L5", "weight": 1.0, "confidence_score": 1.0, - "source": "portfolio_validation_assertticker", - "target": "portfolio_validation_normalizeticker" + "source": "main_app_authentication_sso_py", + "target": "authentication_sso_getgooglesso" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/portfolio/validation.js", - "source_location": "L62", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/controller/authentication_controller.py", + "source_location": "L140", "weight": 1.0, - "confidence_score": 1.0, - "source": "portfolio_validation_assertnotfuture", - "target": "portfolio_validation_todayiso" + "source": "authentication_sso_getgooglesso", + "target": "controller_authentication_controller_googlelogin" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/alert-dialog.jsx", - "source_location": "L7", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/controller/authentication_controller.py", + "source_location": "L150", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_ui_alert_dialog_jsx", - "target": "ui_alert_dialog_alertdialog" + "source": "authentication_sso_getgooglesso", + "target": "controller_authentication_controller_googlecallback" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/alert-dialog.jsx", - "source_location": "L13", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L1123", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_ui_alert_dialog_jsx", - "target": "ui_alert_dialog_alertdialogtrigger" + "source": "authentication_sso_getgooglesso", + "target": "tests_test_prometheus_auth_coverage_test_get_google_sso_with_redirect" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/alert-dialog.jsx", - "source_location": "L19", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L1142", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_ui_alert_dialog_jsx", - "target": "ui_alert_dialog_alertdialogportal" + "source": "authentication_sso_getgooglesso", + "target": "tests_test_prometheus_auth_coverage_test_get_google_sso_default_redirect" }, { - "relation": "contains", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/alert-dialog.jsx", - "source_location": "L25", + "source_file": "main/app/authentication/util.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_ui_alert_dialog_jsx", - "target": "ui_alert_dialog_alertdialogoverlay" + "source": "main_app_authentication_util_py", + "target": "fastapi" }, { - "relation": "contains", + "relation": "imports", + "context": "import", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/alert-dialog.jsx", - "source_location": "L40", + "source_file": "main/app/authentication/util.py", + "source_location": "L3", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_ui_alert_dialog_jsx", - "target": "ui_alert_dialog_alertdialogcontent" + "source": "main_app_authentication_util_py", + "target": "jwt" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/alert-dialog.jsx", - "source_location": "L60", + "source_file": "main/app/authentication/util.py", + "source_location": "L8", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_ui_alert_dialog_jsx", - "target": "ui_alert_dialog_alertdialogheader" + "source": "main_app_authentication_util_py", + "target": "authentication_util_hashpassword" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/alert-dialog.jsx", - "source_location": "L75", + "source_file": "main/app/authentication/util.py", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_ui_alert_dialog_jsx", - "target": "ui_alert_dialog_alertdialogfooter" + "source": "main_app_authentication_util_py", + "target": "authentication_util_verifypassword" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/alert-dialog.jsx", - "source_location": "L90", + "source_file": "main/app/authentication/util.py", + "source_location": "L19", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_ui_alert_dialog_jsx", - "target": "ui_alert_dialog_alertdialogmedia" + "source": "main_app_authentication_util_py", + "target": "authentication_util_createaccesstoken" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/alert-dialog.jsx", - "source_location": "L105", + "source_file": "main/app/authentication/util.py", + "source_location": "L29", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_ui_alert_dialog_jsx", - "target": "ui_alert_dialog_alertdialogtitle" + "source": "main_app_authentication_util_py", + "target": "authentication_util_verifyaccesstoken" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/alert-dialog.jsx", - "source_location": "L120", + "source_file": "main/app/authentication/util.py", + "source_location": "L54", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_ui_alert_dialog_jsx", - "target": "ui_alert_dialog_alertdialogdescription" + "source": "main_app_authentication_util_py", + "target": "authentication_util_extracttokenpayload" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/alert-dialog.jsx", - "source_location": "L135", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_auth_util.py", + "source_location": "L15", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_ui_alert_dialog_jsx", - "target": "ui_alert_dialog_alertdialogaction" + "source": "authentication_util_hashpassword", + "target": "tests_test_auth_util_testauthutil_test_hash_password_returns_string" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/alert-dialog.jsx", - "source_location": "L148", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_auth_util.py", + "source_location": "L21", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_ui_alert_dialog_jsx", - "target": "ui_alert_dialog_alertdialogcancel" + "source": "authentication_util_hashpassword", + "target": "tests_test_auth_util_testauthutil_test_hash_password_unique_hashes" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "frontend/src/components/ui/alert-dialog.jsx", + "source_file": "tests/test_auth_util.py", + "source_location": "L27", + "weight": 1.0, + "source": "authentication_util_hashpassword", + "target": "tests_test_auth_util_testauthutil_test_verify_password_correct" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_auth_util.py", "source_location": "L32", "weight": 1.0, - "source": "ui_alert_dialog_alertdialogoverlay", - "target": "lib_utils_cn" + "source": "authentication_util_hashpassword", + "target": "tests_test_auth_util_testauthutil_test_verify_password_incorrect" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "frontend/src/components/ui/alert-dialog.jsx", - "source_location": "L51", + "source_file": "tests/test_auth_util.py", + "source_location": "L39", "weight": 1.0, - "source": "ui_alert_dialog_alertdialogcontent", - "target": "lib_utils_cn" + "source": "authentication_util_hashpassword", + "target": "tests_test_auth_util_testauthutil_test_verify_password_empty_password" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "frontend/src/components/ui/alert-dialog.jsx", - "source_location": "L67", + "source_file": "tests/test_auth_util.py", + "source_location": "L95", "weight": 1.0, - "source": "ui_alert_dialog_alertdialogheader", - "target": "lib_utils_cn" + "source": "authentication_util_hashpassword", + "target": "tests_test_auth_util_testauthutiledgecases_test_verify_password_none_password" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "frontend/src/components/ui/alert-dialog.jsx", - "source_location": "L82", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1436", "weight": 1.0, - "source": "ui_alert_dialog_alertdialogfooter", - "target": "lib_utils_cn" + "source": "authentication_util_hashpassword", + "target": "tests_test_controllers_coverage_testhashpasswordempty_test_empty_password_raises" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "frontend/src/components/ui/alert-dialog.jsx", - "source_location": "L97", + "source_file": "tests/test_auth_util.py", + "source_location": "L28", "weight": 1.0, - "source": "ui_alert_dialog_alertdialogmedia", - "target": "lib_utils_cn" + "source": "authentication_util_verifypassword", + "target": "tests_test_auth_util_testauthutil_test_verify_password_correct" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "frontend/src/components/ui/alert-dialog.jsx", - "source_location": "L112", + "source_file": "tests/test_auth_util.py", + "source_location": "L33", "weight": 1.0, - "source": "ui_alert_dialog_alertdialogtitle", - "target": "lib_utils_cn" + "source": "authentication_util_verifypassword", + "target": "tests_test_auth_util_testauthutil_test_verify_password_incorrect" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "frontend/src/components/ui/alert-dialog.jsx", - "source_location": "L127", + "source_file": "tests/test_auth_util.py", + "source_location": "L36", "weight": 1.0, - "source": "ui_alert_dialog_alertdialogdescription", - "target": "lib_utils_cn" + "source": "authentication_util_verifypassword", + "target": "tests_test_auth_util_testauthutil_test_verify_password_invalid_hash" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "frontend/src/components/ui/alert-dialog.jsx", - "source_location": "L143", + "source_file": "tests/test_auth_util.py", + "source_location": "L40", "weight": 1.0, - "source": "ui_alert_dialog_alertdialogaction", - "target": "lib_utils_cn" + "source": "authentication_util_verifypassword", + "target": "tests_test_auth_util_testauthutil_test_verify_password_empty_password" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "frontend/src/components/ui/alert-dialog.jsx", - "source_location": "L156", + "source_file": "tests/test_auth_util.py", + "source_location": "L91", "weight": 1.0, - "source": "ui_alert_dialog_alertdialogcancel", - "target": "lib_utils_cn" + "source": "authentication_util_verifypassword", + "target": "tests_test_auth_util_testauthutiledgecases_test_verify_password_none_hash" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/avatar.jsx", - "source_location": "L6", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_auth_util.py", + "source_location": "L96", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_ui_avatar_jsx", - "target": "ui_avatar_avatar" + "source": "authentication_util_verifypassword", + "target": "tests_test_auth_util_testauthutiledgecases_test_verify_password_none_password" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/avatar.jsx", - "source_location": "L23", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_auth_util.py", + "source_location": "L100", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_ui_avatar_jsx", - "target": "ui_avatar_avatarimage" + "source": "authentication_util_verifypassword", + "target": "tests_test_auth_util_testauthutiledgecases_test_verify_password_both_none" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/avatar.jsx", - "source_location": "L35", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/controller/authentication_controller.py", + "source_location": "L36", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_ui_avatar_jsx", - "target": "ui_avatar_avatarfallback" + "source": "authentication_util_createaccesstoken", + "target": "controller_authentication_controller_issuesessioncookie" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/avatar.jsx", - "source_location": "L50", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_auth_util.py", + "source_location": "L43", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_ui_avatar_jsx", - "target": "ui_avatar_avatarbadge" + "source": "authentication_util_createaccesstoken", + "target": "tests_test_auth_util_testauthutil_test_create_access_token_default_expiry" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/avatar.jsx", - "source_location": "L68", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_auth_util.py", + "source_location": "L51", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_ui_avatar_jsx", - "target": "ui_avatar_avatargroup" + "source": "authentication_util_createaccesstoken", + "target": "tests_test_auth_util_testauthutil_test_create_access_token_custom_expiry" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/avatar.jsx", - "source_location": "L83", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_auth_util.py", + "source_location": "L62", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_ui_avatar_jsx", - "target": "ui_avatar_avatargroupcount" + "source": "authentication_util_createaccesstoken", + "target": "tests_test_auth_util_testauthutil_test_create_access_token_contains_data" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "frontend/src/components/ui/avatar.jsx", - "source_location": "L15", + "source_file": "tests/test_auth_util.py", + "source_location": "L79", "weight": 1.0, - "source": "ui_avatar_avatar", - "target": "lib_utils_cn" + "source": "authentication_util_createaccesstoken", + "target": "tests_test_auth_util_testsessionexpiryconfig_test_default_token_expiry_equals_30_days" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "frontend/src/components/ui/avatar.jsx", - "source_location": "L30", + "source_file": "tests/test_auth_util.py", + "source_location": "L104", "weight": 1.0, - "source": "ui_avatar_avatarimage", - "target": "lib_utils_cn" + "source": "authentication_util_createaccesstoken", + "target": "tests_test_auth_util_testauthutiledgecases_test_create_access_token_with_empty_data" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "frontend/src/components/ui/avatar.jsx", - "source_location": "L42", + "source_file": "tests/test_auth_util.py", + "source_location": "L110", "weight": 1.0, - "source": "ui_avatar_avatarfallback", - "target": "lib_utils_cn" + "source": "authentication_util_createaccesstoken", + "target": "tests_test_auth_util_testauthutiledgecases_test_create_access_token_with_none_data" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "frontend/src/components/ui/avatar.jsx", - "source_location": "L57", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L48", "weight": 1.0, - "source": "ui_avatar_avatarbadge", - "target": "lib_utils_cn" + "source": "authentication_util_createaccesstoken", + "target": "controller_authentication_controller_register" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "frontend/src/components/ui/avatar.jsx", - "source_location": "L75", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L86", "weight": 1.0, - "source": "ui_avatar_avatargroup", - "target": "lib_utils_cn" + "source": "authentication_util_createaccesstoken", + "target": "controller_authentication_controller_login" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "frontend/src/components/ui/avatar.jsx", - "source_location": "L90", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L175", "weight": 1.0, - "source": "ui_avatar_avatargroupcount", - "target": "lib_utils_cn" + "source": "authentication_util_createaccesstoken", + "target": "controller_authentication_controller_googlecallback" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/button.jsx", - "source_location": "L7", + "source_file": "main/app/authentication/util.py", + "source_location": "L65", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_ui_button_jsx", - "target": "ui_button_buttonvariants" + "source": "authentication_util_verifyaccesstoken", + "target": "authentication_util_extracttokenpayload" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/button.jsx", - "source_location": "L42", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/controller/authentication_controller.py", + "source_location": "L111", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_ui_button_jsx", - "target": "ui_button_button" + "source": "authentication_util_verifyaccesstoken", + "target": "controller_authentication_controller_logout" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/button.jsx", - "source_location": "L56", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/controller/authentication_controller.py", + "source_location": "L260", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_button_button", - "target": "ui_button_buttonvariants" + "source": "controller_authentication_controller_introspect", + "target": "authentication_util_verifyaccesstoken" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "frontend/src/components/ui/button.jsx", - "source_location": "L56", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1454", "weight": 1.0, - "source": "ui_button_button", - "target": "lib_utils_cn" + "source": "authentication_util_verifyaccesstoken", + "target": "tests_test_controllers_coverage_testverifyaccesstoken_test_expired_token" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/card.jsx", - "source_location": "L5", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1465", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_ui_card_jsx", - "target": "ui_card_card" + "source": "authentication_util_verifyaccesstoken", + "target": "tests_test_controllers_coverage_testverifyaccesstoken_test_invalid_token" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/card.jsx", - "source_location": "L18", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/user/user.py", + "source_location": "L42", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_ui_card_jsx", - "target": "ui_card_cardheader" + "source": "authentication_util_verifyaccesstoken", + "target": "user_user_getcurrentuser" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/card.jsx", - "source_location": "L31", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/controller/user_controller.py", + "source_location": "L66", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_ui_card_jsx", - "target": "ui_card_cardtitle" + "source": "authentication_util_verifyaccesstoken", + "target": "controller_user_controller_getsessions" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/card.jsx", - "source_location": "L41", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1484", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_ui_card_jsx", - "target": "ui_card_carddescription" + "source": "authentication_util_extracttokenpayload", + "target": "tests_test_controllers_coverage_testextracttokenpayloadreraise_test_http_exception_from_verify_propagates" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/card.jsx", - "source_location": "L51", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_user_deps.py", + "source_location": "L24", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_ui_card_jsx", - "target": "ui_card_cardcontent" + "source": "authentication_util_extracttokenpayload", + "target": "tests_test_user_deps_testextracttokenpayload_test_missing_token_raises_401" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/card.jsx", - "source_location": "L57", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_user_deps.py", + "source_location": "L35", "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_components_ui_card_jsx", - "target": "ui_card_cardfooter" + "source": "authentication_util_extracttokenpayload", + "target": "tests_test_user_deps_testextracttokenpayload_test_x_access_token_header_used" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "frontend/src/components/ui/card.jsx", - "source_location": "L9", + "source_file": "tests/test_user_deps.py", + "source_location": "L45", "weight": 1.0, - "source": "ui_card_card", - "target": "lib_utils_cn" + "source": "authentication_util_extracttokenpayload", + "target": "tests_test_user_deps_testextracttokenpayload_test_authorization_bearer_header_used" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "frontend/src/components/ui/card.jsx", - "source_location": "L22", + "source_file": "tests/test_user_deps.py", + "source_location": "L55", "weight": 1.0, - "source": "ui_card_cardheader", - "target": "lib_utils_cn" + "source": "authentication_util_extracttokenpayload", + "target": "tests_test_user_deps_testextracttokenpayload_test_x_access_token_takes_priority_over_bearer" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "frontend/src/components/ui/card.jsx", - "source_location": "L35", + "source_file": "tests/test_user_deps.py", + "source_location": "L64", "weight": 1.0, - "source": "ui_card_cardtitle", - "target": "lib_utils_cn" + "source": "authentication_util_extracttokenpayload", + "target": "tests_test_user_deps_testextracttokenpayload_test_invalid_token_raises_401" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "frontend/src/components/ui/card.jsx", - "source_location": "L45", + "source_file": "tests/test_user_deps.py", + "source_location": "L74", "weight": 1.0, - "source": "ui_card_carddescription", - "target": "lib_utils_cn" + "source": "authentication_util_extracttokenpayload", + "target": "tests_test_user_deps_testextracttokenpayload_test_empty_user_id_raises_401" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "frontend/src/components/ui/card.jsx", - "source_location": "L53", + "source_file": "tests/test_user_deps.py", + "source_location": "L83", "weight": 1.0, - "source": "ui_card_cardcontent", - "target": "lib_utils_cn" + "source": "authentication_util_extracttokenpayload", + "target": "tests_test_user_deps_testextracttokenpayload_test_empty_bearer_value_raises_401" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "frontend/src/components/ui/card.jsx", - "source_location": "L61", + "source_file": "tests/test_user_deps.py", + "source_location": "L92", "weight": 1.0, - "source": "ui_card_cardfooter", - "target": "lib_utils_cn" + "source": "authentication_util_extracttokenpayload", + "target": "tests_test_user_deps_testextracttokenpayload_test_non_bearer_auth_header_raises_401" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/context-menu.jsx", - "source_location": "L7", + "source_file": "main/app/orunmila/agent.py", + "source_location": "L25", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_ui_context_menu_jsx", - "target": "ui_context_menu_contextmenu" + "source": "main_app_orunmila_agent_py", + "target": "orunmila_agent_safefilter" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/context-menu.jsx", - "source_location": "L13", + "source_file": "main/app/orunmila/agent.py", + "source_location": "L31", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_ui_context_menu_jsx", - "target": "ui_context_menu_contextmenutrigger" + "source": "main_app_orunmila_agent_py", + "target": "orunmila_agent_persistevent" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/context-menu.jsx", - "source_location": "L25", + "source_file": "main/app/orunmila/agent.py", + "source_location": "L45", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_ui_context_menu_jsx", - "target": "ui_context_menu_contextmenugroup" + "source": "main_app_orunmila_agent_py", + "target": "orunmila_agent_getclient" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/context-menu.jsx", - "source_location": "L31", + "source_file": "main/app/orunmila/agent.py", + "source_location": "L208", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_ui_context_menu_jsx", - "target": "ui_context_menu_contextmenuportal" + "source": "main_app_orunmila_agent_py", + "target": "orunmila_agent_orunmila" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/context-menu.jsx", - "source_location": "L37", + "source_file": "main/app/orunmila/agent.py", + "source_location": "L213", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_ui_context_menu_jsx", - "target": "ui_context_menu_contextmenusub" + "source": "main_app_orunmila_agent_py", + "target": "orunmila_agent_buildsystemprompt" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/context-menu.jsx", - "source_location": "L43", + "source_file": "main/app/orunmila/agent.py", + "source_location": "L347", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_ui_context_menu_jsx", - "target": "ui_context_menu_contextmenuradiogroup" + "source": "orunmila_agent_orunmila_streammessage", + "target": "orunmila_agent_persistevent" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/context-menu.jsx", - "source_location": "L49", + "source_file": "main/app/orunmila/agent.py", + "source_location": "L210", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_ui_context_menu_jsx", - "target": "ui_context_menu_contextmenucontent" + "source": "orunmila_agent_orunmila_init", + "target": "orunmila_agent_getclient" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/context-menu.jsx", - "source_location": "L66", + "source_file": "main/app/orunmila/agent.py", + "source_location": "L209", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_ui_context_menu_jsx", - "target": "ui_context_menu_contextmenuitem" + "source": "orunmila_agent_orunmila", + "target": "orunmila_agent_orunmila_init" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/context-menu.jsx", - "source_location": "L85", + "source_file": "main/app/orunmila/agent.py", + "source_location": "L242", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_ui_context_menu_jsx", - "target": "ui_context_menu_contextmenusubtrigger" + "source": "orunmila_agent_orunmila", + "target": "orunmila_agent_orunmila_makechat" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/agent.py", + "source_location": "L253", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_agent_orunmila", + "target": "orunmila_agent_orunmila_streammessage" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/orunmila/agent.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "orunmila_agent_orunmila", + "target": "models_orunmila_orunmilasession" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/orunmila/agent.py", + "source_location": "L13", + "weight": 0.8, + "confidence_score": 0.5, + "source": "orunmila_agent_orunmila", + "target": "models_memory_orunmilamemory" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/orunmila/agent.py", + "source_location": "L14", + "weight": 0.8, + "confidence_score": 0.5, + "source": "orunmila_agent_orunmila", + "target": "orunmila_chat_orunmilachatmanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/orunmila/agent.py", + "source_location": "L15", + "weight": 0.8, + "confidence_score": 0.5, + "source": "orunmila_agent_orunmila", + "target": "orunmila_compact_orunmilacompactor" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/orunmila/agent.py", + "source_location": "L17", + "weight": 0.8, + "confidence_score": 0.5, + "source": "orunmila_agent_orunmila", + "target": "orunmila_sandbox_sandboxmanager" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/agent.py", + "source_location": "L294", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_agent_orunmila_streammessage", + "target": "orunmila_agent_buildsystemprompt" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/agent.py", + "source_location": "L228", + "weight": 1.0, + "source": "orunmila_agent_buildsystemprompt", + "target": "orunmila_compact_orunmilacompactor" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/agent.py", + "source_location": "L306", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_agent_orunmila_streammessage", + "target": "orunmila_agent_orunmila_makechat" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/agent.py", + "source_location": "L257", + "weight": 1.0, + "source": "orunmila_agent_orunmila_streammessage", + "target": "orunmila_compact_loadfielddata" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/agent.py", + "source_location": "L262", + "weight": 1.0, + "source": "orunmila_agent_orunmila_streammessage", + "target": "orunmila_memory_newtokencache" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/agent.py", + "source_location": "L265", + "weight": 1.0, + "source": "orunmila_agent_orunmila_streammessage", + "target": "orunmila_compact_orunmilacompactor" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/agent.py", + "source_location": "L283", + "weight": 1.0, + "source": "orunmila_agent_orunmila_streammessage", + "target": "orunmila_memory_extract" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/agent.py", + "source_location": "L370", + "weight": 1.0, + "source": "orunmila_agent_orunmila_streammessage", + "target": "orunmila_tools_dispatchtoolcall" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/context-menu.jsx", - "source_location": "L106", + "source_file": "main/app/orunmila/chat.py", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_ui_context_menu_jsx", - "target": "ui_context_menu_contextmenusubcontent" + "source": "main_app_orunmila_chat_py", + "target": "orunmila_chat_orunmilachatmanager" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/context-menu.jsx", - "source_location": "L121", + "source_file": "main/app/orunmila/chat.py", + "source_location": "L15", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_ui_context_menu_jsx", - "target": "ui_context_menu_contextmenucheckboxitem" + "source": "main_app_orunmila_chat_py", + "target": "orunmila_chat_getusersessions" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/context-menu.jsx", - "source_location": "L148", + "source_file": "main/app/orunmila/chat.py", + "source_location": "L33", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_ui_context_menu_jsx", - "target": "ui_context_menu_contextmenuradioitem" + "source": "main_app_orunmila_chat_py", + "target": "orunmila_chat_createsession" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/context-menu.jsx", - "source_location": "L173", + "source_file": "main/app/orunmila/chat.py", + "source_location": "L41", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_ui_context_menu_jsx", - "target": "ui_context_menu_contextmenulabel" + "source": "main_app_orunmila_chat_py", + "target": "orunmila_chat_updatesessiontitle" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/context-menu.jsx", - "source_location": "L187", + "source_file": "main/app/orunmila/chat.py", + "source_location": "L52", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_ui_context_menu_jsx", - "target": "ui_context_menu_contextmenuseparator" + "source": "main_app_orunmila_chat_py", + "target": "orunmila_chat_appendhistory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/context-menu.jsx", - "source_location": "L199", + "source_file": "main/app/orunmila/chat.py", + "source_location": "L71", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_ui_context_menu_jsx", - "target": "ui_context_menu_contextmenushortcut" + "source": "main_app_orunmila_chat_py", + "target": "orunmila_chat_gethistory" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "frontend/src/components/ui/context-menu.jsx", - "source_location": "L20", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/chat.py", + "source_location": "L92", "weight": 1.0, - "source": "ui_context_menu_contextmenutrigger", - "target": "lib_utils_cn" + "confidence_score": 1.0, + "source": "main_app_orunmila_chat_py", + "target": "orunmila_chat_deletesession" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "frontend/src/components/ui/context-menu.jsx", - "source_location": "L57", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/chat.py", + "source_location": "L106", "weight": 1.0, - "source": "ui_context_menu_contextmenucontent", - "target": "lib_utils_cn" + "confidence_score": 1.0, + "source": "main_app_orunmila_chat_py", + "target": "orunmila_chat_verifysessionownership" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "frontend/src/components/ui/context-menu.jsx", - "source_location": "L77", - "weight": 1.0, - "source": "ui_context_menu_contextmenuitem", - "target": "lib_utils_cn" + "source_file": "main/app/orunmila/chat.py", + "source_location": "L8", + "weight": 0.8, + "confidence_score": 0.5, + "source": "orunmila_chat_orunmilachatmanager", + "target": "models_orunmila_orunmilasession" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "frontend/src/components/ui/context-menu.jsx", - "source_location": "L95", - "weight": 1.0, - "source": "ui_context_menu_contextmenusubtrigger", - "target": "lib_utils_cn" + "source_file": "main/app/orunmila/memory.py", + "source_location": "L26", + "weight": 0.8, + "confidence_score": 0.5, + "source": "orunmila_memory_memorycandidate", + "target": "orunmila_chat_orunmilachatmanager" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "frontend/src/components/ui/context-menu.jsx", - "source_location": "L113", - "weight": 1.0, - "source": "ui_context_menu_contextmenusubcontent", - "target": "lib_utils_cn" + "source_file": "main/app/orunmila/memory.py", + "source_location": "L26", + "weight": 0.8, + "confidence_score": 0.5, + "source": "orunmila_memory_orunmilamemory", + "target": "orunmila_chat_orunmilachatmanager" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "frontend/src/components/ui/context-menu.jsx", - "source_location": "L132", + "source_file": "main/app/orunmila/chat.py", + "source_location": "L35", "weight": 1.0, - "source": "ui_context_menu_contextmenucheckboxitem", - "target": "lib_utils_cn" + "source": "orunmila_chat_createsession", + "target": "models_orunmila_orunmilasession" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "frontend/src/components/ui/context-menu.jsx", - "source_location": "L158", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L35", "weight": 1.0, - "source": "ui_context_menu_contextmenuradioitem", - "target": "lib_utils_cn" + "confidence_score": 1.0, + "source": "main_app_orunmila_compact_py", + "target": "orunmila_compact_gettokenizer" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "frontend/src/components/ui/context-menu.jsx", - "source_location": "L182", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L47", "weight": 1.0, - "source": "ui_context_menu_contextmenulabel", - "target": "lib_utils_cn" + "confidence_score": 1.0, + "source": "main_app_orunmila_compact_py", + "target": "orunmila_compact_counttokens" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "frontend/src/components/ui/context-menu.jsx", - "source_location": "L194", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L64", "weight": 1.0, - "source": "ui_context_menu_contextmenuseparator", - "target": "lib_utils_cn" + "confidence_score": 1.0, + "source": "main_app_orunmila_compact_py", + "target": "orunmila_compact_getstocksfieldsurl" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "frontend/src/components/ui/context-menu.jsx", - "source_location": "L206", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L68", "weight": 1.0, - "source": "ui_context_menu_contextmenushortcut", - "target": "lib_utils_cn" + "confidence_score": 1.0, + "source": "main_app_orunmila_compact_py", + "target": "orunmila_compact_istransientfieldserror" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/dialog.jsx", - "source_location": "L10", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L83", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_ui_dialog_jsx", - "target": "ui_dialog_dialog" + "source": "main_app_orunmila_compact_py", + "target": "orunmila_compact_fetchfieldspayload" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/dialog.jsx", - "source_location": "L16", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L89", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_ui_dialog_jsx", - "target": "ui_dialog_dialogtrigger" + "source": "main_app_orunmila_compact_py", + "target": "orunmila_compact_loadfielddata" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/dialog.jsx", - "source_location": "L22", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L105", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_ui_dialog_jsx", - "target": "ui_dialog_dialogportal" + "source": "main_app_orunmila_compact_py", + "target": "orunmila_compact_getmetricregex" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/dialog.jsx", - "source_location": "L28", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L119", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_ui_dialog_jsx", - "target": "ui_dialog_dialogclose" + "source": "main_app_orunmila_compact_py", + "target": "orunmila_compact_dedup" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/dialog.jsx", - "source_location": "L34", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L123", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_ui_dialog_jsx", - "target": "ui_dialog_dialogoverlay" + "source": "main_app_orunmila_compact_py", + "target": "orunmila_compact_extracttickers" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/dialog.jsx", - "source_location": "L49", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L127", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_ui_dialog_jsx", - "target": "ui_dialog_dialogcontent" + "source": "main_app_orunmila_compact_py", + "target": "orunmila_compact_extractmetrics" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/dialog.jsx", - "source_location": "L82", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L131", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_ui_dialog_jsx", - "target": "ui_dialog_dialogheader" + "source": "main_app_orunmila_compact_py", + "target": "orunmila_compact_extractdecisions" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/dialog.jsx", - "source_location": "L94", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L145", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_ui_dialog_jsx", - "target": "ui_dialog_dialogfooter" + "source": "main_app_orunmila_compact_py", + "target": "orunmila_compact_extractsnapshots" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/dialog.jsx", - "source_location": "L115", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L158", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_ui_dialog_jsx", - "target": "ui_dialog_dialogtitle" + "source": "main_app_orunmila_compact_py", + "target": "orunmila_compact_extracttoolcalls" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/dialog.jsx", - "source_location": "L127", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L174", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_ui_dialog_jsx", - "target": "ui_dialog_dialogdescription" + "source": "main_app_orunmila_compact_py", + "target": "orunmila_compact_buildsummary" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "frontend/src/components/ui/dialog.jsx", - "source_location": "L41", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L195", "weight": 1.0, - "source": "ui_dialog_dialogoverlay", - "target": "lib_utils_cn" + "confidence_score": 1.0, + "source": "main_app_orunmila_compact_py", + "target": "orunmila_compact_orunmilacompactor" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "frontend/src/components/ui/dialog.jsx", - "source_location": "L60", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L50", "weight": 1.0, - "source": "ui_dialog_dialogcontent", - "target": "lib_utils_cn" + "confidence_score": 1.0, + "source": "orunmila_compact_counttokens", + "target": "orunmila_compact_gettokenizer" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "frontend/src/components/ui/dialog.jsx", - "source_location": "L89", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L201", "weight": 1.0, - "source": "ui_dialog_dialogheader", - "target": "lib_utils_cn" + "confidence_score": 1.0, + "source": "orunmila_compact_orunmilacompactor_shouldcompact", + "target": "orunmila_compact_counttokens" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "frontend/src/components/ui/dialog.jsx", - "source_location": "L103", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L183", "weight": 1.0, - "source": "ui_dialog_dialogfooter", - "target": "lib_utils_cn" + "source": "orunmila_memory_sumtokens", + "target": "orunmila_compact_counttokens" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "frontend/src/components/ui/dialog.jsx", - "source_location": "L122", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L84", "weight": 1.0, - "source": "ui_dialog_dialogtitle", - "target": "lib_utils_cn" + "confidence_score": 1.0, + "source": "orunmila_compact_fetchfieldspayload", + "target": "orunmila_compact_getstocksfieldsurl" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "frontend/src/components/ui/dialog.jsx", - "source_location": "L134", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L93", "weight": 1.0, - "source": "ui_dialog_dialogdescription", - "target": "lib_utils_cn" + "confidence_score": 1.0, + "source": "orunmila_compact_loadfielddata", + "target": "orunmila_compact_fetchfieldspayload" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/input.jsx", - "source_location": "L5", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L108", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_ui_input_jsx", - "target": "ui_input_input" + "source": "orunmila_compact_getmetricregex", + "target": "orunmila_compact_loadfielddata" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "frontend/src/components/ui/input.jsx", - "source_location": "L14", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L128", "weight": 1.0, - "source": "ui_input_input", - "target": "lib_utils_cn" + "confidence_score": 1.0, + "source": "orunmila_compact_extractmetrics", + "target": "orunmila_compact_getmetricregex" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/scroll-area.jsx", - "source_location": "L8", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L124", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_ui_scroll_area_jsx", - "target": "ui_scroll_area_scrollarea" + "source": "orunmila_compact_extracttickers", + "target": "orunmila_compact_dedup" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/scroll-area.jsx", - "source_location": "L26", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L128", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_ui_scroll_area_jsx", - "target": "ui_scroll_area_scrollbar" + "source": "orunmila_compact_extractmetrics", + "target": "orunmila_compact_dedup" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "frontend/src/components/ui/scroll-area.jsx", - "source_location": "L14", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L142", "weight": 1.0, - "source": "ui_scroll_area_scrollarea", - "target": "lib_utils_cn" + "confidence_score": 1.0, + "source": "orunmila_compact_extractdecisions", + "target": "orunmila_compact_dedup" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "frontend/src/components/ui/scroll-area.jsx", - "source_location": "L36", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L155", "weight": 1.0, - "source": "ui_scroll_area_scrollbar", - "target": "lib_utils_cn" + "confidence_score": 1.0, + "source": "orunmila_compact_extractsnapshots", + "target": "orunmila_compact_dedup" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/ui/separator.jsx", - "source_location": "L6", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L171", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_components_ui_separator_jsx", - "target": "ui_separator_separator" + "source": "orunmila_compact_extracttoolcalls", + "target": "orunmila_compact_dedup" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "frontend/src/components/ui/separator.jsx", - "source_location": "L17", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L236", "weight": 1.0, - "source": "ui_separator_separator", - "target": "lib_utils_cn" + "confidence_score": 1.0, + "source": "orunmila_compact_orunmilacompactor_extractepisode", + "target": "orunmila_compact_dedup" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "frontend/src/lib/utils.js", - "source_location": "L4", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L265", "weight": 1.0, "confidence_score": 1.0, - "source": "frontend_src_lib_utils_js", - "target": "lib_utils_cn" + "source": "orunmila_compact_orunmilacompactor_consolidate", + "target": "orunmila_compact_dedup" }, { - "relation": "imports_from", - "context": "import", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/authentication/authentication.py", - "source_location": "L5", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L229", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_authentication_authentication_py", - "target": "fastapi" + "source": "orunmila_compact_orunmilacompactor_extractepisode", + "target": "orunmila_compact_extracttickers" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/authentication/authentication.py", - "source_location": "L13", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L230", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_authentication_authentication_py", - "target": "authentication_authentication_authenticationmanager" + "source": "orunmila_compact_orunmilacompactor_extractepisode", + "target": "orunmila_compact_extractmetrics" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/authentication/authentication.py", - "source_location": "L15", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L231", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_authentication_authentication_py", - "target": "authentication_authentication_createuseraccount" + "source": "orunmila_compact_orunmilacompactor_extractepisode", + "target": "orunmila_compact_extractdecisions" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/authentication/authentication.py", - "source_location": "L48", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L232", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_authentication_authentication_py", - "target": "authentication_authentication_authenticategoogleuser" + "source": "orunmila_compact_orunmilacompactor_extractepisode", + "target": "orunmila_compact_extractsnapshots" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/authentication/authentication.py", - "source_location": "L62", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L233", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_authentication_authentication_py", - "target": "authentication_authentication_authenticateuser" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/authentication/authentication.py", - "source_location": "L2", - "weight": 0.8, - "confidence_score": 0.5, - "source": "authentication_authentication_authenticationmanager", - "target": "utils_roles_roles" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/authentication/authentication.py", - "source_location": "L8", - "weight": 0.8, - "confidence_score": 0.5, - "source": "authentication_authentication_authenticationmanager", - "target": "user_user_usermanager" + "source": "orunmila_compact_orunmilacompactor_extractepisode", + "target": "orunmila_compact_extracttoolcalls" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/authentication/authentication.py", - "source_location": "L9", - "weight": 0.8, - "confidence_score": 0.5, - "source": "authentication_authentication_authenticationmanager", - "target": "models_user_user" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L235", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_compact_orunmilacompactor_extractepisode", + "target": "orunmila_compact_buildsummary" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L560", - "weight": 0.8, - "confidence_score": 0.5, - "source": "authentication_authentication_authenticationmanager", - "target": "tests_test_prometheus_auth_coverage_testprometheusinit" + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L196", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_compact_orunmilacompactor", + "target": "orunmila_compact_orunmilacompactor_shouldcompact" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L560", - "weight": 0.8, - "confidence_score": 0.5, - "source": "authentication_authentication_authenticationmanager", - "target": "tests_test_prometheus_auth_coverage_testprometheussendmessage" + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L213", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_compact_orunmilacompactor", + "target": "orunmila_compact_orunmilacompactor_getcompactablechunk" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L827", - "weight": 0.8, - "confidence_score": 0.5, - "source": "authentication_authentication_authenticationmanager", - "target": "tests_test_prometheus_auth_coverage_testprometheuschatmanager" + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L222", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_compact_orunmilacompactor", + "target": "orunmila_compact_orunmilacompactor_extractepisode" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L827", - "weight": 0.8, - "confidence_score": 0.5, - "source": "authentication_authentication_authenticationmanager", - "target": "tests_test_prometheus_auth_coverage_testauthenticationmanager" + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L244", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_compact_orunmilacompactor", + "target": "orunmila_compact_orunmilacompactor_consolidate" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L827", - "weight": 0.8, - "confidence_score": 0.5, - "source": "authentication_authentication_authenticationmanager", - "target": "tests_test_prometheus_auth_coverage_testsessionmanager" + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L271", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_compact_orunmilacompactor", + "target": "orunmila_compact_orunmilacompactor_compact" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L827", - "weight": 0.8, - "confidence_score": 0.5, - "source": "authentication_authentication_authenticationmanager", - "target": "tests_test_prometheus_auth_coverage_testsso" + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L310", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_compact_orunmilacompactor", + "target": "orunmila_compact_orunmilacompactor_getepisodes" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L827", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L16", "weight": 0.8, "confidence_score": 0.5, - "source": "authentication_authentication_authenticationmanager", - "target": "tests_test_prometheus_auth_coverage_testprometheusgeneratorinit" + "source": "orunmila_compact_orunmilacompactor", + "target": "models_orunmila_orunmilasession" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L827", - "weight": 0.8, - "confidence_score": 0.5, - "source": "authentication_authentication_authenticationmanager", - "target": "tests_test_prometheus_auth_coverage_testprometheusgeneratorexecuteworkflow" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L280", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_compact_orunmilacompactor_compact", + "target": "orunmila_compact_orunmilacompactor_shouldcompact" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/authentication/authentication.py", - "source_location": "L29", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L278", "weight": 1.0, - "source": "authentication_authentication_createuseraccount", - "target": "authentication_util_hashpassword" + "confidence_score": 1.0, + "source": "orunmila_compact_orunmilacompactor_compact", + "target": "orunmila_compact_orunmilacompactor_getcompactablechunk" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/authentication/authentication.py", - "source_location": "L31", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L283", "weight": 1.0, - "source": "authentication_authentication_createuseraccount", - "target": "models_user_user" + "confidence_score": 1.0, + "source": "orunmila_compact_orunmilacompactor_compact", + "target": "orunmila_compact_orunmilacompactor_extractepisode" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/authentication/authentication.py", - "source_location": "L66", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L296", "weight": 1.0, - "source": "authentication_authentication_authenticateuser", - "target": "authentication_util_verifypassword" + "confidence_score": 1.0, + "source": "orunmila_compact_orunmilacompactor_compact", + "target": "orunmila_compact_orunmilacompactor_consolidate" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/authentication/session.py", - "source_location": "L13", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L277", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_authentication_session_py", - "target": "authentication_session_parsedevicefields" + "source": "orunmila_compact_orunmilacompactor_compact", + "target": "orunmila_compact_orunmilacompactor_getepisodes" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/authentication/session.py", - "source_location": "L11", + "source_file": "main/app/orunmila/mcp.py", + "source_location": "L21", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_authentication_session_py", - "target": "authentication_session_sessionmanager" + "source": "main_app_orunmila_mcp_py", + "target": "orunmila_mcp_buildclient" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/authentication/session.py", - "source_location": "L13", + "source_file": "main/app/orunmila/mcp.py", + "source_location": "L29", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_authentication_session_py", - "target": "authentication_session_createsession" + "source": "main_app_orunmila_mcp_py", + "target": "orunmila_mcp_connect" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/authentication/session.py", - "source_location": "L50", + "source_file": "main/app/orunmila/mcp.py", + "source_location": "L36", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_authentication_session_py", - "target": "authentication_session_getusersessions" + "source": "main_app_orunmila_mcp_py", + "target": "orunmila_mcp_mcpclientpool" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/authentication/session.py", - "source_location": "L57", + "source_file": "main/app/orunmila/mcp.py", + "source_location": "L30", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_authentication_session_py", - "target": "authentication_session_getsessionbyid" + "source": "orunmila_mcp_connect", + "target": "orunmila_mcp_buildclient" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/authentication/session.py", - "source_location": "L68", + "source_file": "main/app/orunmila/mcp.py", + "source_location": "L47", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_authentication_session_py", - "target": "authentication_session_getcurrentsession" + "source": "orunmila_mcp_mcpclientpool_initialize", + "target": "orunmila_mcp_connect" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/authentication/session.py", - "source_location": "L80", + "source_file": "main/app/orunmila/mcp.py", + "source_location": "L84", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_authentication_session_py", - "target": "authentication_session_revokesession" + "source": "orunmila_mcp_mcpclientpool_reconnect", + "target": "orunmila_mcp_connect" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/authentication/session.py", - "source_location": "L92", + "source_file": "main/app/orunmila/mcp.py", + "source_location": "L37", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_authentication_session_py", - "target": "authentication_session_revokeallsessions" + "source": "orunmila_mcp_mcpclientpool", + "target": "orunmila_mcp_mcpclientpool_init" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/authentication/session.py", - "source_location": "L108", + "source_file": "main/app/orunmila/mcp.py", + "source_location": "L42", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_authentication_session_py", - "target": "authentication_session_updatelastactive" + "source": "orunmila_mcp_mcpclientpool", + "target": "orunmila_mcp_mcpclientpool_initialize" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/authentication/session.py", - "source_location": "L132", + "source_file": "main/app/orunmila/mcp.py", + "source_location": "L56", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_authentication_session_py", - "target": "authentication_session_validatesession" + "source": "orunmila_mcp_mcpclientpool", + "target": "orunmila_mcp_mcpclientpool_getclients" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/authentication/session.py", - "source_location": "L17", + "source_file": "main/app/orunmila/mcp.py", + "source_location": "L63", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_authentication_session_py", - "target": "authentication_session_getdevicename" + "source": "orunmila_mcp_mcpclientpool", + "target": "orunmila_mcp_mcpclientpool_healthcheck" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/authentication/session.py", - "source_location": "L118", + "source_file": "main/app/orunmila/mcp.py", + "source_location": "L75", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_authentication_session_py", - "target": "authentication_session_cleanupexpiredsessions" + "source": "orunmila_mcp_mcpclientpool", + "target": "orunmila_mcp_mcpclientpool_reconnect" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/authentication/session.py", - "source_location": "L64", + "source_file": "main/app/orunmila/mcp.py", + "source_location": "L90", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_authentication_session_py", - "target": "authentication_session_getsessionbyidsafe" + "source": "orunmila_mcp_mcpclientpool", + "target": "orunmila_mcp_mcpclientpool_close" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/authentication/session.py", - "source_location": "L45", + "source_file": "main/app/orunmila/mcp.py", + "source_location": "L58", "weight": 1.0, "confidence_score": 1.0, - "source": "authentication_session_createsession", - "target": "authentication_session_parsedevicefields" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/authentication/session.py", - "source_location": "L6", - "weight": 0.8, - "confidence_score": 0.5, - "source": "authentication_session_sessionmanager", - "target": "models_user_session_usersession" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/user/user.py", - "source_location": "L30", - "weight": 0.8, - "confidence_score": 0.5, - "source": "authentication_session_sessionmanager", - "target": "user_user_usermanager" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L825", - "weight": 0.8, - "confidence_score": 0.5, - "source": "authentication_session_sessionmanager", - "target": "tests_test_prometheus_auth_coverage_testprometheusinit" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L825", - "weight": 0.8, - "confidence_score": 0.5, - "source": "authentication_session_sessionmanager", - "target": "tests_test_prometheus_auth_coverage_testprometheussendmessage" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L1092", - "weight": 0.8, - "confidence_score": 0.5, - "source": "authentication_session_sessionmanager", - "target": "tests_test_prometheus_auth_coverage_testprometheuschatmanager" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L1092", - "weight": 0.8, - "confidence_score": 0.5, - "source": "authentication_session_sessionmanager", - "target": "tests_test_prometheus_auth_coverage_testauthenticationmanager" + "source": "orunmila_mcp_mcpclientpool_getclients", + "target": "orunmila_mcp_mcpclientpool_initialize" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L1092", - "weight": 0.8, - "confidence_score": 0.5, - "source": "authentication_session_sessionmanager", - "target": "tests_test_prometheus_auth_coverage_testsessionmanager" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/mcp.py", + "source_location": "L60", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_mcp_mcpclientpool_getclients", + "target": "orunmila_mcp_mcpclientpool_healthcheck" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L1092", - "weight": 0.8, - "confidence_score": 0.5, - "source": "authentication_session_sessionmanager", - "target": "tests_test_prometheus_auth_coverage_testsso" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/mcp.py", + "source_location": "L73", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_mcp_mcpclientpool_healthcheck", + "target": "orunmila_mcp_mcpclientpool_reconnect" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_sessions.py", - "source_location": "L9", - "weight": 0.8, - "confidence_score": 0.5, - "source": "authentication_session_sessionmanager", - "target": "tests_test_sessions_testusersessionmodel" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L35", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_getmatrix" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_sessions.py", - "source_location": "L9", - "weight": 0.8, - "confidence_score": 0.5, - "source": "authentication_session_sessionmanager", - "target": "tests_test_sessions_testsessionexpiration" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L53", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_invalidateuser" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L1092", - "weight": 0.8, - "confidence_score": 0.5, - "source": "authentication_session_sessionmanager", - "target": "tests_test_prometheus_auth_coverage_testprometheusgeneratorinit" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L57", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_clearall" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L1092", - "weight": 0.8, - "confidence_score": 0.5, - "source": "authentication_session_sessionmanager", - "target": "tests_test_prometheus_auth_coverage_testprometheusgeneratorexecuteworkflow" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L64", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_memorycandidate" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/authentication/session.py", - "source_location": "L29", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L90", "weight": 1.0, - "source": "authentication_session_createsession", - "target": "models_user_session_usersession" + "confidence_score": 1.0, + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_newtokencache" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/authentication/session.py", - "source_location": "L23", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L97", "weight": 1.0, - "source": "authentication_device_parseuseragent", - "target": "authentication_session_createsession" + "confidence_score": 1.0, + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_getclient" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/authentication/session.py", - "source_location": "L81", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L104", "weight": 1.0, "confidence_score": 1.0, - "source": "authentication_session_getsessionbyid", - "target": "authentication_session_revokesession" + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_minmax" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/authentication/session.py", - "source_location": "L133", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L113", "weight": 1.0, "confidence_score": 1.0, - "source": "authentication_session_getsessionbyid", - "target": "authentication_session_validatesession" + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_normalizekey" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/authentication/sso.py", - "source_location": "L5", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L120", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_authentication_sso_py", - "target": "authentication_sso_getgooglesso" + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_findsimilarkey" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/controller/authentication_controller.py", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", "source_location": "L140", "weight": 1.0, - "source": "authentication_sso_getgooglesso", - "target": "controller_authentication_controller_googlelogin" + "confidence_score": 1.0, + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_scorerow" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/controller/authentication_controller.py", - "source_location": "L150", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L152", "weight": 1.0, - "source": "authentication_sso_getgooglesso", - "target": "controller_authentication_controller_googlecallback" + "confidence_score": 1.0, + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_scorerecency" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L1123", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L162", "weight": 1.0, - "source": "authentication_sso_getgooglesso", - "target": "tests_test_prometheus_auth_coverage_test_get_google_sso_with_redirect" + "confidence_score": 1.0, + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_scorecandidates" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L1142", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L179", "weight": 1.0, - "source": "authentication_sso_getgooglesso", - "target": "tests_test_prometheus_auth_coverage_test_get_google_sso_default_redirect" + "confidence_score": 1.0, + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_sumtokens" }, { - "relation": "imports_from", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/authentication/util.py", - "source_location": "L1", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L194", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_authentication_util_py", - "target": "fastapi" + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_orunmilamemory" }, { - "relation": "imports", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/authentication/util.py", - "source_location": "L3", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L196", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_authentication_util_py", - "target": "jwt" + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_getmemorylimit" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/authentication/util.py", - "source_location": "L8", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L202", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_authentication_util_py", - "target": "authentication_util_hashpassword" + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_countmemories" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/authentication/util.py", - "source_location": "L13", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L211", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_authentication_util_py", - "target": "authentication_util_verifypassword" + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_touch" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/authentication/util.py", - "source_location": "L19", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L222", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_authentication_util_py", - "target": "authentication_util_createaccesstoken" + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_upsertmemory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/authentication/util.py", - "source_location": "L29", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L286", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_authentication_util_py", - "target": "authentication_util_verifyaccesstoken" + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_search" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/authentication/util.py", - "source_location": "L54", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L349", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_authentication_util_py", - "target": "authentication_util_extracttokenpayload" + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_fulltextsearch" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_auth_util.py", - "source_location": "L15", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L407", "weight": 1.0, - "source": "authentication_util_hashpassword", - "target": "tests_test_auth_util_testauthutil_test_hash_password_returns_string" + "confidence_score": 1.0, + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_getusermemories" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_auth_util.py", - "source_location": "L21", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L432", "weight": 1.0, - "source": "authentication_util_hashpassword", - "target": "tests_test_auth_util_testauthutil_test_hash_password_unique_hashes" + "confidence_score": 1.0, + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_deletememory" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_auth_util.py", - "source_location": "L27", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L450", "weight": 1.0, - "source": "authentication_util_hashpassword", - "target": "tests_test_auth_util_testauthutil_test_verify_password_correct" + "confidence_score": 1.0, + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_extract" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_auth_util.py", - "source_location": "L32", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L330", "weight": 1.0, - "source": "authentication_util_hashpassword", - "target": "tests_test_auth_util_testauthutil_test_verify_password_incorrect" + "confidence_score": 1.0, + "source": "orunmila_memory_search", + "target": "orunmila_memory_getmatrix" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_auth_util.py", - "source_location": "L39", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L248", "weight": 1.0, - "source": "authentication_util_hashpassword", - "target": "tests_test_auth_util_testauthutil_test_verify_password_empty_password" + "confidence_score": 1.0, + "source": "orunmila_memory_upsertmemory", + "target": "orunmila_memory_invalidateuser" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_auth_util.py", - "source_location": "L95", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L445", "weight": 1.0, - "source": "authentication_util_hashpassword", - "target": "tests_test_auth_util_testauthutiledgecases_test_verify_password_none_password" + "confidence_score": 1.0, + "source": "orunmila_memory_deletememory", + "target": "orunmila_memory_invalidateuser" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1436", + "source_file": "main/service/orunmila_service.py", + "source_location": "L52", "weight": 1.0, - "source": "authentication_util_hashpassword", - "target": "tests_test_controllers_coverage_testhashpasswordempty_test_empty_password_raises" + "source": "service_orunmila_service_memorymaintenance", + "target": "orunmila_memory_invalidateuser" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_auth_util.py", - "source_location": "L28", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L64", "weight": 1.0, - "source": "authentication_util_verifypassword", - "target": "tests_test_auth_util_testauthutil_test_verify_password_correct" + "confidence_score": 1.0, + "source": "orunmila_memory_memorycandidate", + "target": "basemodel" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_auth_util.py", - "source_location": "L33", - "weight": 1.0, - "source": "authentication_util_verifypassword", - "target": "tests_test_auth_util_testauthutil_test_verify_password_incorrect" + "source_file": "main/app/orunmila/memory.py", + "source_location": "L22", + "weight": 0.8, + "confidence_score": 0.5, + "source": "orunmila_memory_memorycandidate", + "target": "models_memory_orunmilamemory" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_auth_util.py", - "source_location": "L36", - "weight": 1.0, - "source": "authentication_util_verifypassword", - "target": "tests_test_auth_util_testauthutil_test_verify_password_invalid_hash" + "source_file": "main/app/orunmila/memory.py", + "source_location": "L23", + "weight": 0.8, + "confidence_score": 0.5, + "source": "orunmila_memory_memorycandidate", + "target": "utils_roles_permission" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_auth_util.py", - "source_location": "L40", - "weight": 1.0, - "source": "authentication_util_verifypassword", - "target": "tests_test_auth_util_testauthutil_test_verify_password_empty_password" + "source_file": "main/app/orunmila/memory.py", + "source_location": "L23", + "weight": 0.8, + "confidence_score": 0.5, + "source": "orunmila_memory_memorycandidate", + "target": "utils_roles_roles" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_auth_util.py", - "source_location": "L91", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "main/utils/errors.py", + "source_location": "L13", "weight": 1.0, - "source": "authentication_util_verifypassword", - "target": "tests_test_auth_util_testauthutiledgecases_test_verify_password_none_hash" + "confidence_score": 1.0, + "source": "utils_errors_errorresponse", + "target": "basemodel" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_auth_util.py", - "source_location": "L96", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L64", "weight": 1.0, - "source": "authentication_util_verifypassword", - "target": "tests_test_auth_util_testauthutiledgecases_test_verify_password_none_password" + "confidence_score": 1.0, + "source": "prometheus_memory_memorycandidate", + "target": "basemodel" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_auth_util.py", - "source_location": "L100", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "tests/test_error_handlers.py", + "source_location": "L20", "weight": 1.0, - "source": "authentication_util_verifypassword", - "target": "tests_test_auth_util_testauthutiledgecases_test_verify_password_both_none" + "confidence_score": 1.0, + "source": "basemodel", + "target": "tests_test_error_handlers_samplebody" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/controller/authentication_controller.py", - "source_location": "L36", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L490", "weight": 1.0, - "source": "authentication_util_createaccesstoken", - "target": "controller_authentication_controller_issuesessioncookie" + "confidence_score": 1.0, + "source": "orunmila_memory_extract", + "target": "orunmila_memory_getclient" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_auth_util.py", - "source_location": "L43", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L338", "weight": 1.0, - "source": "authentication_util_createaccesstoken", - "target": "tests_test_auth_util_testauthutil_test_create_access_token_default_expiry" + "confidence_score": 1.0, + "source": "orunmila_memory_search", + "target": "orunmila_memory_minmax" }, { "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_auth_util.py", - "source_location": "L51", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L126", "weight": 1.0, - "source": "authentication_util_createaccesstoken", - "target": "tests_test_auth_util_testauthutil_test_create_access_token_custom_expiry" + "confidence_score": 1.0, + "source": "orunmila_memory_findsimilarkey", + "target": "orunmila_memory_normalizekey" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_auth_util.py", - "source_location": "L62", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L252", "weight": 1.0, - "source": "authentication_util_createaccesstoken", - "target": "tests_test_auth_util_testauthutil_test_create_access_token_contains_data" + "confidence_score": 1.0, + "source": "orunmila_memory_upsertmemory", + "target": "orunmila_memory_findsimilarkey" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_auth_util.py", - "source_location": "L79", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L157", "weight": 1.0, - "source": "authentication_util_createaccesstoken", - "target": "tests_test_auth_util_testsessionexpiryconfig_test_default_token_expiry_equals_30_days" + "confidence_score": 1.0, + "source": "orunmila_memory_scorerecency", + "target": "orunmila_memory_scorerow" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_auth_util.py", - "source_location": "L104", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L176", "weight": 1.0, - "source": "authentication_util_createaccesstoken", - "target": "tests_test_auth_util_testauthutiledgecases_test_create_access_token_with_empty_data" + "confidence_score": 1.0, + "source": "orunmila_memory_scorecandidates", + "target": "orunmila_memory_scorerow" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_auth_util.py", - "source_location": "L110", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L314", "weight": 1.0, - "source": "authentication_util_createaccesstoken", - "target": "tests_test_auth_util_testauthutiledgecases_test_create_access_token_with_none_data" + "confidence_score": 1.0, + "source": "orunmila_memory_search", + "target": "orunmila_memory_scorerecency" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/controller/authentication_controller.py", - "source_location": "L48", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L156", "weight": 1.0, - "source": "authentication_util_createaccesstoken", - "target": "controller_authentication_controller_register" + "source": "orunmila_memory_scorerecency", + "target": "orunmila_vector_getrelevancescore" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/controller/authentication_controller.py", - "source_location": "L86", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L342", "weight": 1.0, - "source": "authentication_util_createaccesstoken", - "target": "controller_authentication_controller_login" + "confidence_score": 1.0, + "source": "orunmila_memory_search", + "target": "orunmila_memory_scorecandidates" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/controller/authentication_controller.py", - "source_location": "L175", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L172", "weight": 1.0, - "source": "authentication_util_createaccesstoken", - "target": "controller_authentication_controller_googlecallback" + "source": "orunmila_memory_scorecandidates", + "target": "orunmila_vector_getrelevancescore" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/authentication/util.py", - "source_location": "L65", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L476", "weight": 1.0, "confidence_score": 1.0, - "source": "authentication_util_verifyaccesstoken", - "target": "authentication_util_extracttokenpayload" + "source": "orunmila_memory_extract", + "target": "orunmila_memory_sumtokens" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/controller/authentication_controller.py", - "source_location": "L111", - "weight": 1.0, - "source": "authentication_util_verifyaccesstoken", - "target": "controller_authentication_controller_logout" + "source_file": "main/app/orunmila/memory.py", + "source_location": "L22", + "weight": 0.8, + "confidence_score": 0.5, + "source": "orunmila_memory_orunmilamemory", + "target": "models_memory_orunmilamemory" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1454", - "weight": 1.0, - "source": "authentication_util_verifyaccesstoken", - "target": "tests_test_controllers_coverage_testverifyaccesstoken_test_expired_token" + "source_file": "main/app/orunmila/memory.py", + "source_location": "L23", + "weight": 0.8, + "confidence_score": 0.5, + "source": "orunmila_memory_orunmilamemory", + "target": "utils_roles_permission" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L23", + "weight": 0.8, + "confidence_score": 0.5, + "source": "orunmila_memory_orunmilamemory", + "target": "utils_roles_roles" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1465", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L263", "weight": 1.0, - "source": "authentication_util_verifyaccesstoken", - "target": "tests_test_controllers_coverage_testverifyaccesstoken_test_invalid_token" + "confidence_score": 1.0, + "source": "orunmila_memory_upsertmemory", + "target": "orunmila_memory_getmemorylimit" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/user/user.py", - "source_location": "L42", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L483", "weight": 1.0, - "source": "authentication_util_verifyaccesstoken", - "target": "user_user_getcurrentuser" + "confidence_score": 1.0, + "source": "orunmila_memory_extract", + "target": "orunmila_memory_getmemorylimit" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/controller/user_controller.py", - "source_location": "L66", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L264", "weight": 1.0, - "source": "authentication_util_verifyaccesstoken", - "target": "controller_user_controller_getsessions" + "confidence_score": 1.0, + "source": "orunmila_memory_upsertmemory", + "target": "orunmila_memory_countmemories" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1484", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L483", "weight": 1.0, - "source": "authentication_util_extracttokenpayload", - "target": "tests_test_controllers_coverage_testextracttokenpayloadreraise_test_http_exception_from_verify_propagates" + "confidence_score": 1.0, + "source": "orunmila_memory_extract", + "target": "orunmila_memory_countmemories" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_user_deps.py", - "source_location": "L24", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L244", "weight": 1.0, - "source": "authentication_util_extracttokenpayload", - "target": "tests_test_user_deps_testextracttokenpayload_test_missing_token_raises_401" + "confidence_score": 1.0, + "source": "orunmila_memory_upsertmemory", + "target": "orunmila_memory_touch" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_user_deps.py", - "source_location": "L35", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L543", "weight": 1.0, - "source": "authentication_util_extracttokenpayload", - "target": "tests_test_user_deps_testextracttokenpayload_test_x_access_token_header_used" + "confidence_score": 1.0, + "source": "orunmila_memory_extract", + "target": "orunmila_memory_upsertmemory" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_user_deps.py", - "source_location": "L45", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L240", "weight": 1.0, - "source": "authentication_util_extracttokenpayload", - "target": "tests_test_user_deps_testextracttokenpayload_test_authorization_bearer_header_used" + "source": "orunmila_memory_upsertmemory", + "target": "orunmila_vector_contenthash" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_user_deps.py", - "source_location": "L55", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L339", "weight": 1.0, - "source": "authentication_util_extracttokenpayload", - "target": "tests_test_user_deps_testextracttokenpayload_test_x_access_token_takes_priority_over_bearer" + "confidence_score": 1.0, + "source": "orunmila_memory_search", + "target": "orunmila_memory_fulltextsearch" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_user_deps.py", - "source_location": "L64", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L332", "weight": 1.0, - "source": "authentication_util_extracttokenpayload", - "target": "tests_test_user_deps_testextracttokenpayload_test_invalid_token_raises_401" + "source": "orunmila_memory_search", + "target": "orunmila_vector_embed" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_user_deps.py", - "source_location": "L74", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L333", "weight": 1.0, - "source": "authentication_util_extracttokenpayload", - "target": "tests_test_user_deps_testextracttokenpayload_test_empty_user_id_raises_401" + "source": "orunmila_memory_search", + "target": "orunmila_vector_batchcosinesimilarity" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_user_deps.py", - "source_location": "L83", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L424", "weight": 1.0, - "source": "authentication_util_extracttokenpayload", - "target": "tests_test_user_deps_testextracttokenpayload_test_empty_bearer_value_raises_401" + "source": "orunmila_memory_getusermemories", + "target": "orunmila_vector_getrelevancescore" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_user_deps.py", - "source_location": "L92", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L533", "weight": 1.0, - "source": "authentication_util_extracttokenpayload", - "target": "tests_test_user_deps_testextracttokenpayload_test_non_bearer_auth_header_raises_401" + "source": "orunmila_memory_extract", + "target": "orunmila_vector_embed" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L26", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L18", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_agent_py", - "target": "prometheus_agent_safefilter" + "source": "main_app_orunmila_sandbox_py", + "target": "orunmila_sandbox_lockfor" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L31", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L24", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_agent_py", - "target": "prometheus_agent_persistevent" + "source": "main_app_orunmila_sandbox_py", + "target": "orunmila_sandbox_getclient" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L58", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L32", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_agent_py", - "target": "prometheus_agent_getclient" + "source": "main_app_orunmila_sandbox_py", + "target": "orunmila_sandbox_hostpath" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L134", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L46", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_agent_py", - "target": "prometheus_agent_prometheus" + "source": "main_app_orunmila_sandbox_py", + "target": "orunmila_sandbox_sandboxpath" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L139", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L51", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_agent_py", - "target": "prometheus_agent_buildsystemprompt" + "source": "main_app_orunmila_sandbox_py", + "target": "orunmila_sandbox_sandboxmanager" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L21", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L53", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_agent_py", - "target": "prometheus_agent_safe_filter" + "source": "main_app_orunmila_sandbox_py", + "target": "orunmila_sandbox_create" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L27", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L69", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_agent_py", - "target": "prometheus_agent_onextractiondone" + "source": "main_app_orunmila_sandbox_py", + "target": "orunmila_sandbox_destroy" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L35", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L81", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_agent_py", - "target": "prometheus_agent_spawnextraction" + "source": "main_app_orunmila_sandbox_py", + "target": "orunmila_sandbox_getorcreate" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L58", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L128", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_agent_py", - "target": "prometheus_agent_get_client" + "source": "main_app_orunmila_sandbox_py", + "target": "orunmila_sandbox_execute" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L161", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L164", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_agent_py", - "target": "prometheus_agent_openmcpclients" + "source": "main_app_orunmila_sandbox_py", + "target": "orunmila_sandbox_read_file" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L90", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L171", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_agent_py", - "target": "prometheus_agent_executememorytool" + "source": "main_app_orunmila_sandbox_py", + "target": "orunmila_sandbox_write_file" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L27", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L185", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_agent_py", - "target": "prometheus_agent_build_system_prompt" + "source": "main_app_orunmila_sandbox_py", + "target": "orunmila_sandbox_list_files" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L57", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L193", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_agent_py", - "target": "prometheus_agent_get_memory_tools" + "source": "main_app_orunmila_sandbox_py", + "target": "orunmila_sandbox_delete_file" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L92", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L210", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_agent_py", - "target": "prometheus_agent_execute_memory_tool" + "source": "main_app_orunmila_sandbox_py", + "target": "orunmila_sandbox_synctosandbox" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L47", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L229", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_agent_py", - "target": "prometheus_agent_chatsession" + "source": "main_app_orunmila_sandbox_py", + "target": "orunmila_sandbox_syncfromsandbox" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L344", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L82", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_agent_prometheus_streammessage", - "target": "prometheus_agent_persistevent" + "source": "orunmila_sandbox_getorcreate", + "target": "orunmila_sandbox_lockfor" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L223", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L54", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_agent_prometheus_init", - "target": "prometheus_agent_getclient" + "source": "orunmila_sandbox_create", + "target": "orunmila_sandbox_getclient" }, { - "relation": "method", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L135", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L70", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_agent_prometheus", - "target": "prometheus_agent_prometheus_init" + "source": "orunmila_sandbox_destroy", + "target": "orunmila_sandbox_getclient" }, { - "relation": "method", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L169", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L87", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_agent_prometheus", - "target": "prometheus_agent_prometheus_makechat" + "source": "orunmila_sandbox_getorcreate", + "target": "orunmila_sandbox_getclient" }, { - "relation": "method", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L178", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L129", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_agent_prometheus", - "target": "prometheus_agent_prometheus_streammessage" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L13", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "models_prometheus_prometheussession" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L11", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "models_memory_prometheusmemory" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L12", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "prometheus_chat_prometheuschatmanager" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L18", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "prometheus_compact_prometheuscompactor" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L14", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "prometheus_sandbox_sandboxmanager" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L16", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "prometheus_events_looplogger" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L15", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "prometheus_compact_fieldregistry" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L16", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "prometheus_mcp_mcpclientpool" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L14", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "prometheus_state_harnessstate" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L17", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "prometheus_summarizer_prometheussummarizer" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L3", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "tests_test_agent_state_integration_testbuildsystempromptstate" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L3", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "tests_test_agent_state_integration_testsendmessagestateintegration" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L3", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "tests_test_agent_state_integration_teststreammessagestateintegration" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L192", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "tests_test_agent_state_integration_testsystempromptstateinstructions" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L90", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "tests_test_memory_tools_wiring_testmemorytoolfunctions" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L90", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "tests_test_memory_tools_wiring_testtoolregistry" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L58", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "tests_test_memory_tools_wiring_testmakechatincludesmemorytools" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L58", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "tests_test_memory_tools_wiring_testdispatchroutesmemorytools" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L159", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "tests_test_prometheus_auth_coverage_testprometheusinit" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L159", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "tests_test_prometheus_auth_coverage_testprometheussendmessage" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L159", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "tests_test_prometheus_auth_coverage_testprometheuschatmanager" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L159", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "tests_test_prometheus_auth_coverage_testauthenticationmanager" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L159", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "tests_test_prometheus_auth_coverage_testsessionmanager" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L159", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "tests_test_prometheus_auth_coverage_testsso" + "source": "orunmila_sandbox_execute", + "target": "orunmila_sandbox_getclient" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_streammessage_no_chatsession.py", - "source_location": "L14", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "tests_test_streammessage_no_chatsession_fakechunk" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L215", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_sandbox_synctosandbox", + "target": "orunmila_sandbox_getclient" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_streammessage_no_chatsession.py", - "source_location": "L14", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "tests_test_streammessage_no_chatsession_teststreammessagenochatsession" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L230", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_sandbox_syncfromsandbox", + "target": "orunmila_sandbox_getclient" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "tests_test_agent_sandbox_integration_testpersistentsandboxlifecycle" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L165", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_sandbox_read_file", + "target": "orunmila_sandbox_hostpath" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L31", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "models_memory_usermemory" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L173", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_sandbox_write_file", + "target": "orunmila_sandbox_hostpath" }, { - "relation": "method", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L34", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L186", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_agent_prometheus", - "target": "prometheus_agent_prometheus_sendmessage" + "source": "orunmila_sandbox_list_files", + "target": "orunmila_sandbox_hostpath" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L4", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "tests_test_agent_sandbox_integration_testagentsandboxintegration" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L195", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_sandbox_delete_file", + "target": "orunmila_sandbox_hostpath" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L3", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "tests_test_agent_sandbox_integration_testpremiumcheck" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L238", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_sandbox_syncfromsandbox", + "target": "orunmila_sandbox_hostpath" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L15", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "prometheus_cache_resultcache" + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools.py", + "source_location": "L169", + "weight": 1.0, + "source": "orunmila_tools_serve_file", + "target": "orunmila_sandbox_hostpath" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L58", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "tests_test_memory_tools_wiring_testmemorytoolsdefinition" + "confidence_score": 0.8, + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L185", + "weight": 1.0, + "source": "controller_orunmila_controller_downloadworkspacefile", + "target": "orunmila_sandbox_hostpath" }, { - "relation": "method", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L102", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L189", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_agent_prometheus", - "target": "prometheus_agent_prometheus_executetoolcall" + "source": "orunmila_sandbox_list_files", + "target": "orunmila_sandbox_sandboxpath" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L94", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L9", "weight": 0.8, "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "prometheus_memory_memorymanager" - }, - { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L21", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_agent_prometheus", - "target": "prometheus_agent_prometheus_updatedates" + "source": "orunmila_sandbox_sandboxmanager", + "target": "models_sandbox_orunmilasandbox" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L224", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L110", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_agent_prometheus_init", - "target": "prometheus_agent_get_client" + "source": "orunmila_sandbox_getorcreate", + "target": "orunmila_sandbox_create" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L19", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L121", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_agent_prometheus_init", - "target": "prometheus_agent_prometheus_updatedates" + "source": "orunmila_sandbox_getorcreate", + "target": "orunmila_sandbox_synctosandbox" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L182", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L158", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_agent_prometheus_streammessage", - "target": "prometheus_agent_buildsystemprompt" + "source": "orunmila_sandbox_execute", + "target": "orunmila_sandbox_getorcreate" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/prometheus/agent.py", - "source_location": "L213", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L113", "weight": 1.0, - "source": "prometheus_agent_buildsystemprompt", - "target": "prometheus_compact_prometheuscompactor" + "source": "orunmila_sandbox_getorcreate", + "target": "models_sandbox_orunmilasandbox" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/agent.py", - "source_location": "L163", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L133", "weight": 1.0, - "source": "prometheus_agent_buildsystemprompt", - "target": "prometheus_summarizer_prometheussummarizer" + "confidence_score": 1.0, + "source": "orunmila_sandbox_execute", + "target": "orunmila_sandbox_synctosandbox" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L261", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L144", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_agent_buildsystemprompt", - "target": "prometheus_agent_prometheus_sendmessage" + "source": "orunmila_sandbox_execute", + "target": "orunmila_sandbox_syncfromsandbox" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L186", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L237", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_agent_prometheus_streammessage", - "target": "prometheus_agent_prometheus_makechat" + "source": "orunmila_sandbox_syncfromsandbox", + "target": "orunmila_sandbox_read_file" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L160", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L222", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_agent_prometheus_makechat", - "target": "prometheus_agent_prometheus_sendmessage" + "source": "orunmila_sandbox_synctosandbox", + "target": "orunmila_sandbox_write_file" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L212", + "source_file": "main/app/orunmila/stream_bus.py", + "source_location": "L14", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_agent_prometheus_makechat", - "target": "prometheus_agent_get_memory_tools" + "source": "main_app_orunmila_stream_bus_py", + "target": "orunmila_stream_bus_streamchannel" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/agent.py", - "source_location": "L251", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/stream_bus.py", + "source_location": "L32", "weight": 1.0, - "source": "prometheus_agent_prometheus_streammessage", - "target": "prometheus_compact_loadfielddata" + "confidence_score": 1.0, + "source": "main_app_orunmila_stream_bus_py", + "target": "orunmila_stream_bus_streambus" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/agent.py", - "source_location": "L262", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/stream_bus.py", + "source_location": "L15", "weight": 1.0, - "source": "prometheus_agent_prometheus_streammessage", - "target": "prometheus_memory_newtokencache" + "confidence_score": 1.0, + "source": "orunmila_stream_bus_streamchannel", + "target": "orunmila_stream_bus_streamchannel_init" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/agent.py", - "source_location": "L256", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/stream_bus.py", + "source_location": "L21", "weight": 1.0, - "source": "prometheus_agent_prometheus_streammessage", - "target": "prometheus_compact_prometheuscompactor" + "confidence_score": 1.0, + "source": "orunmila_stream_bus_streamchannel", + "target": "orunmila_stream_bus_streamchannel_publish" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/agent.py", - "source_location": "L252", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/stream_bus.py", + "source_location": "L39", "weight": 1.0, - "source": "prometheus_agent_prometheus_streammessage", - "target": "prometheus_memory_extract" + "confidence_score": 1.0, + "source": "orunmila_stream_bus_streambus_getorcreate", + "target": "orunmila_stream_bus_streamchannel" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/agent.py", - "source_location": "L231", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/stream_bus.py", + "source_location": "L33", "weight": 1.0, - "source": "prometheus_agent_prometheus_streammessage", - "target": "prometheus_tools_dispatchtoolcall" + "confidence_score": 1.0, + "source": "orunmila_stream_bus_streambus", + "target": "orunmila_stream_bus_streambus_init" }, { - "relation": "calls", - "context": "call", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L272", + "source_file": "main/app/orunmila/stream_bus.py", + "source_location": "L36", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_agent_prometheus_streammessage", - "target": "prometheus_agent_spawnextraction" + "source": "orunmila_stream_bus_streambus", + "target": "orunmila_stream_bus_streambus_getorcreate" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/agent.py", - "source_location": "L202", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/stream_bus.py", + "source_location": "L43", "weight": 1.0, - "source": "prometheus_agent_prometheus_streammessage", - "target": "prometheus_events_looplogger" + "confidence_score": 1.0, + "source": "orunmila_stream_bus_streambus", + "target": "orunmila_stream_bus_streambus_publish" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/agent.py", - "source_location": "L239", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/stream_bus.py", + "source_location": "L46", "weight": 1.0, - "source": "prometheus_agent_prometheus_streammessage", - "target": "prometheus_mcp_mcpclientpool" + "confidence_score": 1.0, + "source": "orunmila_stream_bus_streambus", + "target": "orunmila_stream_bus_streambus_subscribe" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/agent.py", - "source_location": "L242", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/stream_bus.py", + "source_location": "L59", "weight": 1.0, - "source": "prometheus_agent_prometheus_streammessage", - "target": "prometheus_compact_fieldregistry" + "confidence_score": 1.0, + "source": "orunmila_stream_bus_streambus", + "target": "orunmila_stream_bus_streambus_unsubscribe" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/agent.py", - "source_location": "L182", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/stream_bus.py", + "source_location": "L64", "weight": 1.0, - "source": "prometheus_agent_prometheus_streammessage", - "target": "prometheus_state_harnessstate" + "confidence_score": 1.0, + "source": "orunmila_stream_bus_streambus", + "target": "orunmila_stream_bus_streambus_startrun" }, { - "relation": "calls", - "context": "call", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L185", + "source_file": "main/app/orunmila/stream_bus.py", + "source_location": "L86", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_agent_prometheus_streammessage", - "target": "prometheus_agent_openmcpclients" + "source": "orunmila_stream_bus_streambus", + "target": "orunmila_stream_bus_streambus_eventgenerator" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/agent.py", - "source_location": "L293", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/stream_bus.py", + "source_location": "L109", "weight": 1.0, - "source": "prometheus_agent_prometheus_streammessage", - "target": "prometheus_summarizer_prometheussummarizer" + "confidence_score": 1.0, + "source": "orunmila_stream_bus_streambus", + "target": "orunmila_stream_bus_streambus_streamresponse" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/stream_bus.py", + "source_location": "L112", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_stream_bus_streambus", + "target": "orunmila_stream_bus_streambus_forward" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/agent.py", - "source_location": "L203", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/stream_bus.py", + "source_location": "L44", "weight": 1.0, - "source": "prometheus_agent_prometheus_streammessage", - "target": "prometheus_cache_resultcache" + "confidence_score": 1.0, + "source": "orunmila_stream_bus_streambus_publish", + "target": "orunmila_stream_bus_streambus_getorcreate" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L208", + "source_file": "main/app/orunmila/stream_bus.py", + "source_location": "L65", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_agent_prometheus_streammessage", - "target": "prometheus_agent_prometheus_executetoolcall" + "source": "orunmila_stream_bus_streambus_startrun", + "target": "orunmila_stream_bus_streambus_getorcreate" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L281", + "source_file": "main/app/orunmila/stream_bus.py", + "source_location": "L87", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_agent_prometheus_streammessage", - "target": "prometheus_agent_build_system_prompt" + "source": "orunmila_stream_bus_streambus_eventgenerator", + "target": "orunmila_stream_bus_streambus_subscribe" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L88", + "source_file": "main/app/orunmila/stream_bus.py", + "source_location": "L113", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_agent_prometheus_streammessage", - "target": "prometheus_agent_chatsession" + "source": "orunmila_stream_bus_streambus_forward", + "target": "orunmila_stream_bus_streambus_subscribe" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L15", + "source_file": "main/app/orunmila/stream_bus.py", + "source_location": "L107", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_chat_py", - "target": "prometheus_chat_prometheuschatmanager" + "source": "orunmila_stream_bus_streambus_eventgenerator", + "target": "orunmila_stream_bus_streambus_unsubscribe" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L17", + "source_file": "main/app/orunmila/stream_bus.py", + "source_location": "L134", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_chat_py", - "target": "prometheus_chat_getusersessions" + "source": "orunmila_stream_bus_streambus_forward", + "target": "orunmila_stream_bus_streambus_unsubscribe" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L35", + "source_file": "main/app/orunmila/stream_bus.py", + "source_location": "L110", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_chat_py", - "target": "prometheus_chat_createsession" + "source": "orunmila_stream_bus_streambus_streamresponse", + "target": "orunmila_stream_bus_streambus_eventgenerator" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L43", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L20", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_chat_py", - "target": "prometheus_chat_updatesessiontitle" + "source": "main_app_orunmila_tools_py", + "target": "orunmila_tools_search_memory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L52", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L51", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_chat_py", - "target": "prometheus_chat_appendhistory" + "source": "main_app_orunmila_tools_py", + "target": "orunmila_tools_save_memory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L82", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L93", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_chat_py", - "target": "prometheus_chat_gethistory" + "source": "main_app_orunmila_tools_py", + "target": "orunmila_tools_execute_code" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L105", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L114", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_chat_py", - "target": "prometheus_chat_deletesession" + "source": "main_app_orunmila_tools_py", + "target": "orunmila_tools_read_file" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L119", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L128", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_chat_py", - "target": "prometheus_chat_verifysessionownership" + "source": "main_app_orunmila_tools_py", + "target": "orunmila_tools_write_file" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L54", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L144", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_chat_py", - "target": "prometheus_chat_savemessage" + "source": "main_app_orunmila_tools_py", + "target": "orunmila_tools_list_files" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L76", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L157", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_chat_py", - "target": "prometheus_chat_saveloopevent" + "source": "main_app_orunmila_tools_py", + "target": "orunmila_tools_serve_file" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L98", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L190", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_chat_py", - "target": "prometheus_chat_updatesummary" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L8", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_chat_prometheuschatmanager", - "target": "models_prometheus_prometheussession" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L26", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_memorycandidate", - "target": "prometheus_chat_prometheuschatmanager" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L319", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "prometheus_chat_prometheuschatmanager" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L383", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_chat_prometheuschatmanager", - "target": "tests_test_prometheus_auth_coverage_testprometheusinit" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L383", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_chat_prometheuschatmanager", - "target": "tests_test_prometheus_auth_coverage_testprometheussendmessage" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L650", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_chat_prometheuschatmanager", - "target": "tests_test_prometheus_auth_coverage_testprometheuschatmanager" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L650", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_chat_prometheuschatmanager", - "target": "tests_test_prometheus_auth_coverage_testauthenticationmanager" + "source": "main_app_orunmila_tools_py", + "target": "orunmila_tools_dispatchtoolcall" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L650", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_chat_prometheuschatmanager", - "target": "tests_test_prometheus_auth_coverage_testsessionmanager" + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L21", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_tools_rationale_21", + "target": "orunmila_tools_search_memory" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L650", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_chat_prometheuschatmanager", - "target": "tests_test_prometheus_auth_coverage_testsso" + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L52", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_tools_rationale_52", + "target": "orunmila_tools_save_memory" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L446", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L70", "weight": 1.0, - "source": "prometheus_chat_prometheuschatmanager", - "target": "tests_test_prometheus_auth_coverage_testprometheuschatmanager_test_init" + "source": "orunmila_tools_save_memory", + "target": "orunmila_vector_embed" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L650", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_chat_prometheuschatmanager", - "target": "tests_test_prometheus_auth_coverage_testprometheusgeneratorinit" + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L94", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_tools_rationale_94", + "target": "orunmila_tools_execute_code" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L650", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_chat_prometheuschatmanager", - "target": "tests_test_prometheus_auth_coverage_testprometheusgeneratorexecuteworkflow" + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L115", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_tools_rationale_115", + "target": "orunmila_tools_read_file" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/generation.py", - "source_location": "L14", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_chat_prometheuschatmanager", - "target": "prometheus_generation_prometheusgenerator" + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L129", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_tools_rationale_129", + "target": "orunmila_tools_write_file" }, { - "relation": "method", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L11", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L145", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_chat_prometheuschatmanager", - "target": "prometheus_chat_prometheuschatmanager_init" + "source": "orunmila_tools_rationale_145", + "target": "orunmila_tools_list_files" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/generation.py", - "source_location": "L14", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_chat_prometheuschatmanager", - "target": "prometheus_generation_sessionproxy" + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L158", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_tools_rationale_158", + "target": "orunmila_tools_serve_file" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/chat.py", - "source_location": "L41", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/vector.py", + "source_location": "L10", "weight": 1.0, - "source": "prometheus_chat_createsession", - "target": "models_prometheus_prometheussession" + "confidence_score": 1.0, + "source": "main_app_orunmila_vector_py", + "target": "orunmila_vector_normalizerows" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L33", + "source_file": "main/app/orunmila/vector.py", + "source_location": "L15", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_gettokenizer" + "source": "main_app_orunmila_vector_py", + "target": "orunmila_vector_embed" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L45", + "source_file": "main/app/orunmila/vector.py", + "source_location": "L19", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_counttokens" + "source": "main_app_orunmila_vector_py", + "target": "orunmila_vector_decodeembeddings" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L92", + "source_file": "main/app/orunmila/vector.py", + "source_location": "L41", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_getstocksfieldsurl" + "source": "main_app_orunmila_vector_py", + "target": "orunmila_vector_batchcosinesimilarity" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L67", + "source_file": "main/app/orunmila/vector.py", + "source_location": "L51", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_istransientfieldserror" + "source": "main_app_orunmila_vector_py", + "target": "orunmila_vector_contenthash" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L82", + "source_file": "main/app/orunmila/vector.py", + "source_location": "L55", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_fetchfieldspayload" + "source": "main_app_orunmila_vector_py", + "target": "orunmila_vector_tovectorstring" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L93", + "source_file": "main/app/orunmila/vector.py", + "source_location": "L59", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_loadfielddata" + "source": "main_app_orunmila_vector_py", + "target": "orunmila_vector_fromvectorstring" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L133", + "source_file": "main/app/orunmila/vector.py", + "source_location": "L71", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_getmetricregex" + "source": "main_app_orunmila_vector_py", + "target": "orunmila_vector_getrelevancescore" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L117", + "source_file": "main/app/orunmila/vector.py", + "source_location": "L48", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_dedup" + "source": "orunmila_vector_batchcosinesimilarity", + "target": "orunmila_vector_normalizerows" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/vector.py", + "source_location": "L16", + "weight": 1.0, + "source": "orunmila_vector_embed", + "target": "models_loader_getembeddingmodel" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L109", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L32", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_extracttickers" + "source": "main_app_scraper_b3_scraper_py", + "target": "scraper_b3_scraper_getcurrentselic" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L113", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L31", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_extractmetrics" + "source": "main_app_scraper_b3_scraper_py", + "target": "scraper_b3_scraper_b3scraper" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L123", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L51", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_extractdecisions" + "source": "main_app_scraper_b3_scraper_py", + "target": "scraper_b3_scraper_getinitialdata" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L137", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L106", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_extractsnapshots" + "source": "main_app_scraper_b3_scraper_py", + "target": "scraper_b3_scraper_historicalrentability" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L150", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L129", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_extracttoolcalls" + "source": "main_app_scraper_b3_scraper_py", + "target": "scraper_b3_scraper_historicaldividends" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L166", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L160", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_buildsummary" + "source": "main_app_scraper_b3_scraper_py", + "target": "scraper_b3_scraper_historicaldividendyields" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L186", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L188", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_prometheuscompactor" + "source": "main_app_scraper_b3_scraper_py", + "target": "scraper_b3_scraper_historicalrevenue" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L119", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L209", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_gethistoricalfields" + "source": "main_app_scraper_b3_scraper_py", + "target": "scraper_b3_scraper_historicalcotationprofits" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L123", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L235", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_getfundamentalcolumns" + "source": "main_app_scraper_b3_scraper_py", + "target": "scraper_b3_scraper_historicalcotations" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L127", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L252", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_invalidatefielddata" + "source": "main_app_scraper_b3_scraper_py", + "target": "scraper_b3_scraper_tagalong" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L41", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L276", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_fieldregistry" + "source": "main_app_scraper_b3_scraper_py", + "target": "scraper_b3_scraper_stocknews" }, { - "relation": "contains", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L105", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L20", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_charcount" + "source": "main_app_scraper_b3_scraper_py", + "target": "main_app_scraper_b3_xango_py" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L48", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L51", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_counttokens", - "target": "prometheus_compact_gettokenizer" + "source": "scraper_b3_scraper_getcurrentselic", + "target": "scraper_b3_scraper_b3scraper_init" }, { - "relation": "calls", - "context": "call", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L228", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L32", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor_shouldcompact", - "target": "prometheus_compact_counttokens" + "source": "scraper_b3_scraper_b3scraper", + "target": "scraper_b3_scraper_b3scraper_init" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L191", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L222", "weight": 1.0, - "source": "prometheus_memory_sumtokens", - "target": "prometheus_compact_counttokens" + "confidence_score": 1.0, + "source": "scraper_b3_scraper_b3scraper", + "target": "scraper_b3_scraper_b3scraper_historicalcotationprofits_oceans14" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L347", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L289", "weight": 1.0, - "source": "prometheus_memory_counttokenscached", - "target": "prometheus_compact_counttokens" + "confidence_score": 1.0, + "source": "scraper_b3_scraper_b3scraper", + "target": "scraper_b3_scraper_b3scraper_fundamentalindicators" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L438", + "weight": 1.0, + "confidence_score": 1.0, + "source": "scraper_b3_scraper_b3scraper", + "target": "scraper_b3_scraper_b3scraper_processticker" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L469", + "weight": 1.0, + "confidence_score": 1.0, + "source": "scraper_b3_scraper_b3scraper", + "target": "scraper_b3_scraper_b3scraper_scrapestocks" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L519", + "weight": 1.0, + "confidence_score": 1.0, + "source": "scraper_b3_scraper_b3scraper", + "target": "scraper_b3_scraper_b3scraper_reordercolumns" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L529", + "weight": 1.0, + "confidence_score": 1.0, + "source": "scraper_b3_scraper_b3scraper", + "target": "scraper_b3_scraper_b3scraper_serializecomplextypes" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L550", + "weight": 1.0, + "confidence_score": 1.0, + "source": "scraper_b3_scraper_b3scraper", + "target": "scraper_b3_scraper_b3scraper_exportjson" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L586", + "weight": 1.0, + "confidence_score": 1.0, + "source": "scraper_b3_scraper_b3scraper", + "target": "scraper_b3_scraper_b3scraper_exportmysql" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/service/scraper_service.py", + "source_location": "L8", + "weight": 0.8, + "confidence_score": 0.5, + "source": "scraper_b3_scraper_b3scraper", + "target": "service_scraper_service_scraperservice" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L340", + "source_file": "main/service/scraper_service.py", + "source_location": "L18", "weight": 1.0, - "source": "prometheus_memory_extract", - "target": "prometheus_compact_counttokens" + "source": "scraper_b3_scraper_b3scraper", + "target": "service_scraper_service_runscraper" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L154", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L470", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_charcount", - "target": "prometheus_compact_counttokens" + "source": "scraper_b3_scraper_getinitialdata", + "target": "scraper_b3_scraper_b3scraper_scrapestocks" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L83", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L461", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_fetchfieldspayload", - "target": "prometheus_compact_getstocksfieldsurl" + "source": "scraper_b3_scraper_b3scraper_fundamentalindicators", + "target": "scraper_b3_scraper_b3scraper_processticker" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L392", + "weight": 1.0, + "source": "scraper_b3_scraper_b3scraper_fundamentalindicators", + "target": "scraper_b3_xango_calculateinvestingscore" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L108", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L477", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_loadfielddata", - "target": "prometheus_compact_getstocksfieldsurl" + "source": "scraper_b3_scraper_b3scraper_processticker", + "target": "scraper_b3_scraper_b3scraper_scrapestocks" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L92", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L513", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_loadfielddata", - "target": "prometheus_compact_fetchfieldspayload" + "source": "scraper_b3_scraper_b3scraper_scrapestocks", + "target": "scraper_b3_scraper_b3scraper_reordercolumns" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L136", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L514", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_getmetricregex", - "target": "prometheus_compact_loadfielddata" + "source": "scraper_b3_scraper_b3scraper_scrapestocks", + "target": "scraper_b3_scraper_b3scraper_serializecomplextypes" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L120", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L516", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_gethistoricalfields", - "target": "prometheus_compact_loadfielddata" + "source": "scraper_b3_scraper_b3scraper_scrapestocks", + "target": "scraper_b3_scraper_b3scraper_exportjson" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L124", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L517", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_getfundamentalcolumns", - "target": "prometheus_compact_loadfielddata" + "source": "scraper_b3_scraper_b3scraper_scrapestocks", + "target": "scraper_b3_scraper_b3scraper_exportmysql" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L97", + "source_file": "main/app/scraper_b3/xango.py", + "source_location": "L14", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_rationale_97", - "target": "prometheus_compact_loadfielddata" + "source": "main_app_scraper_b3_xango_py", + "target": "scraper_b3_xango_calculateinvestingscore" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L95", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L22", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_rationale_95", - "target": "prometheus_compact_loadfielddata" + "source": "main_app_stocks_api_cache_py", + "target": "stocks_api_cache_optimizedtypes" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L151", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L58", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_extractmetrics", - "target": "prometheus_compact_getmetricregex" + "source": "main_app_stocks_api_cache_py", + "target": "stocks_api_cache_arrowtypefor" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L122", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L50", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_extracttickers", - "target": "prometheus_compact_dedup" + "source": "main_app_stocks_api_cache_py", + "target": "stocks_api_cache_buildfeathercache" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L128", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L90", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_extractmetrics", - "target": "prometheus_compact_dedup" + "source": "main_app_stocks_api_cache_py", + "target": "stocks_api_cache_trybuildlock" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L142", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L170", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_extractdecisions", - "target": "prometheus_compact_dedup" + "source": "main_app_stocks_api_cache_py", + "target": "stocks_api_cache_sortcacheframe" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L155", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L190", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_extractsnapshots", - "target": "prometheus_compact_dedup" + "source": "main_app_stocks_api_cache_py", + "target": "stocks_api_cache_buildtickerindex" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L171", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L12", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_extracttoolcalls", - "target": "prometheus_compact_dedup" + "source": "main_app_stocks_api_cache_py", + "target": "stocks_api_cache_stockscachemanager" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L236", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L38", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor_extractepisode", - "target": "prometheus_compact_dedup" + "source": "main_app_stocks_api_cache_py", + "target": "stocks_api_cache_buildcotationdateindex" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L265", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L71", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor_consolidate", - "target": "prometheus_compact_dedup" + "source": "stocks_api_cache_buildfeathercache", + "target": "stocks_api_cache_optimizedtypes" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L212", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L89", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor_extractepisode", - "target": "prometheus_compact_extracttickers" + "source": "stocks_api_cache_optimizedtypes", + "target": "stocks_api_cache_stockscachemanager_getcachedstocks" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L213", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L124", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor_extractepisode", - "target": "prometheus_compact_extractmetrics" + "source": "stocks_api_cache_buildfeathercache", + "target": "stocks_api_cache_arrowtypefor" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L115", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L59", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_extractmetrics", - "target": "prometheus_compact_fieldregistry_getmetricregex" + "source": "stocks_api_cache_rationale_59", + "target": "stocks_api_cache_arrowtypefor" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L214", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L157", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor_extractepisode", - "target": "prometheus_compact_extractdecisions" + "source": "stocks_api_cache_stockscachemanager_getcachedstocks", + "target": "stocks_api_cache_trybuildlock" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L215", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L91", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor_extractepisode", - "target": "prometheus_compact_extractsnapshots" + "source": "stocks_api_cache_rationale_91", + "target": "stocks_api_cache_trybuildlock" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L216", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L239", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor_extractepisode", - "target": "prometheus_compact_extracttoolcalls" + "source": "stocks_api_cache_stockscachemanager_loadfromfeather", + "target": "stocks_api_cache_sortcacheframe" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L171", + "weight": 1.0, + "confidence_score": 1.0, + "source": "stocks_api_cache_rationale_171", + "target": "stocks_api_cache_sortcacheframe" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L218", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L240", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor_extractepisode", - "target": "prometheus_compact_buildsummary" + "source": "stocks_api_cache_stockscachemanager_loadfromfeather", + "target": "stocks_api_cache_buildtickerindex" }, { - "relation": "method", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L190", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L191", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor", - "target": "prometheus_compact_prometheuscompactor_shouldcompact" + "source": "stocks_api_cache_rationale_191", + "target": "stocks_api_cache_buildtickerindex" }, { "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L196", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor", - "target": "prometheus_compact_prometheuscompactor_getcompactablechunk" + "source": "stocks_api_cache_stockscachemanager", + "target": "stocks_api_cache_stockscachemanager_init" }, { "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L205", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L198", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor", - "target": "prometheus_compact_prometheuscompactor_extractepisode" + "source": "stocks_api_cache_stockscachemanager", + "target": "stocks_api_cache_stockscachemanager_snapshot" }, { "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L227", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L18", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor", - "target": "prometheus_compact_prometheuscompactor_consolidate" + "source": "stocks_api_cache_stockscachemanager", + "target": "stocks_api_cache_stockscachemanager_cachescheduler" }, { "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L254", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L101", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor", - "target": "prometheus_compact_prometheuscompactor_compact" + "source": "stocks_api_cache_stockscachemanager", + "target": "stocks_api_cache_stockscachemanager_loadfromfeather" }, { "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L293", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L28", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor", - "target": "prometheus_compact_prometheuscompactor_getepisodes" + "source": "stocks_api_cache_stockscachemanager", + "target": "stocks_api_cache_stockscachemanager_getcachedstocks" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L14", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L724", "weight": 0.8, "confidence_score": 0.5, - "source": "prometheus_compact_prometheuscompactor", - "target": "models_prometheus_prometheussession" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_api_coverage_teststockscachemanager" }, { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L187", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor", - "target": "prometheus_compact_prometheuscompactor_init" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L724", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_api_coverage_testverifyapikey" }, { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L265", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor_compact", - "target": "prometheus_compact_prometheuscompactor_shouldcompact" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L724", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_api_coverage_testgeneratesecurekey" }, { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L193", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor_shouldcompact", - "target": "prometheus_compact_charcount" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L724", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_api_coverage_testcreatekey" }, { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L263", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor_compact", - "target": "prometheus_compact_prometheuscompactor_getcompactablechunk" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L724", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_api_coverage_testdeserializejsoncolumns" }, { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L268", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor_compact", - "target": "prometheus_compact_prometheuscompactor_extractepisode" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L724", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_api_coverage_testfilterbysearchterms" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L724", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_api_coverage_testqueryhistorical" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L724", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_api_coverage_testqueryfundamental" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L988", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_api_coverage_testquerycotations" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1260", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_api_coverage_testquerylivecotation" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L281", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L50", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor_compact", - "target": "prometheus_compact_prometheuscompactor_consolidate" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_api_coverage_teststockscachemanager_make_manager" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L262", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L58", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor_compact", - "target": "prometheus_compact_prometheuscompactor_getepisodes" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_api_coverage_test_cache_scheduler_starts_apscheduler" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L26", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L78", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_mcp_py", - "target": "prometheus_mcp_buildclient" + "source": "stocks_api_cache_stockscachemanager", + "target": "stocks_api_cache_stockscachemanager_putcache" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L29", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L71", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_mcp_py", - "target": "prometheus_mcp_connect" + "source": "stocks_api_cache_stockscachemanager", + "target": "stocks_api_cache_stockscachemanager_clearquerycache" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L15", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_mcp_py", - "target": "prometheus_mcp_mcpclientpool" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "stocks_api_query_stocksquerymanager" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L10", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_mcp_py", - "target": "prometheus_mcp_ensurefastmcp" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_cache.py", + "source_location": "L11", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_cache_testcachelrueviction" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L16", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_mcp_py", - "target": "prometheus_mcp_parseservers" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_cache.py", + "source_location": "L11", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_cache_testcolumnvalidator" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_cache.py", + "source_location": "L11", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_cache_testcachettllogic" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L30", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_cache.py", + "source_location": "L20", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_mcp_connect", - "target": "prometheus_mcp_buildclient" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_cache_testcachelrueviction_make_manager" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L55", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_cache.py", + "source_location": "L110", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_mcp_mcpclientpool_initialize", - "target": "prometheus_mcp_buildclient" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_cache_testcachettllogic_make_manager" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L95", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L58", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_mcp_mcpclientpool_reconnect", - "target": "prometheus_mcp_buildclient" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_api_coverage_test_cache_scheduler_starts_daemon_thread" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_cache.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testtickerindex" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_cache.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testquerycaching" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_cache.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testconnectionpool" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_cache.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testlazydeserialization" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_cache.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testqueryoptimization" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_cache.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testperformancebenchmarks" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_cache.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testfilterbysearchterms" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_cache.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testqueryperformance" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L34", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L22", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_mcp_buildclient", - "target": "prometheus_mcp_ensurefastmcp" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testtickerindex_test_tickerindex_built_after_cache_load" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L47", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L30", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_mcp_mcpclientpool_initialize", - "target": "prometheus_mcp_connect" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testtickerindex_test_tickerindex_contains_all_tickers" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L84", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L40", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_mcp_mcpclientpool_reconnect", - "target": "prometheus_mcp_connect" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testtickerindex_test_tickerindex_case_insensitive" }, { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L33", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L49", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_mcp_mcpclientpool", - "target": "prometheus_mcp_mcpclientpool_init" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testtickerindex_test_ticker_lookup_returns_valid_index" }, { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L26", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L60", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_mcp_mcpclientpool", - "target": "prometheus_mcp_mcpclientpool_initialize" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testtickerindex_test_tickerindex_rebuilt_on_cache_refresh" }, { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L41", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L77", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_mcp_mcpclientpool", - "target": "prometheus_mcp_mcpclientpool_getclients" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testquerycaching_test_cache_manager_has_caches_method" }, { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L48", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L85", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_mcp_mcpclientpool", - "target": "prometheus_mcp_mcpclientpool_healthcheck" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testquerycaching_test_querycache_ttl_configuration" }, { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L60", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L93", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_mcp_mcpclientpool", - "target": "prometheus_mcp_mcpclientpool_reconnect" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testquerycaching_test_get_cached_stocks_respects_columns_parameter" }, { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L78", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L142", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_mcp_mcpclientpool", - "target": "prometheus_mcp_mcpclientpool_close" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testqueryoptimization_test_all_optimizations_present" }, { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L21", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L180", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_mcp_mcpclientpool", - "target": "prometheus_mcp_mcpclientpool_new" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testperformancebenchmarks_test_tickerindex_lookup_performance" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L43", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L200", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_mcp_mcpclientpool_getclients", - "target": "prometheus_mcp_mcpclientpool_initialize" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testperformancebenchmarks_test_prefix_scan_performance" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L46", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L220", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_mcp_mcpclientpool_initialize", - "target": "prometheus_mcp_parseservers" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testperformancebenchmarks_test_index_lookup_vs_scan_comparison" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L45", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L250", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_mcp_mcpclientpool_getclients", - "target": "prometheus_mcp_mcpclientpool_healthcheck" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testperformancebenchmarks_test_querycache_performance" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L58", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L273", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_mcp_mcpclientpool_healthcheck", - "target": "prometheus_mcp_mcpclientpool_reconnect" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testperformancebenchmarks_test_column_projection_performance" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L87", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L289", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_mcp_mcpclientpool_reconnect", - "target": "prometheus_mcp_parseservers" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testperformancebenchmarks_test_cache_initialization_time" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L53", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L22", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_getmatrix" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testtickerindex_test_tickerIndex_built_after_cache_load" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L63", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L30", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_invalidateuser" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testtickerindex_test_tickerIndex_contains_all_tickers" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L67", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L40", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_clearall" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testtickerindex_test_tickerIndex_case_insensitive" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L64", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L60", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_memorycandidate" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testtickerindex_test_tickerIndex_rebuilt_on_cache_refresh" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L90", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L85", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_newtokencache" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testquerycaching_test_queryCache_ttl_configuration" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L35", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L180", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_getclient" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testperformancebenchmarks_test_tickerIndex_lookup_performance" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L48", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L250", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_minmax" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testperformancebenchmarks_test_queryCache_performance" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L17", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_normalizekey" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testtickerindex" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L23", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_findsimilarkey" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testquerycaching" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L123", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_scorerow" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testconnectionpool" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L141", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_scorerecency" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testlazydeserialization" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L159", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_scorecandidates" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testqueryoptimization" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L187", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_sumtokens" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testperformancebenchmarks" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L16", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_prometheusmemory" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testfilterbysearchterms" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L17", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_getmemorylimit" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testqueryperformance" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L23", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L22", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_countmemories" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testtickerindex_test_tickerIndex_built_after_cache_load" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L194", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L30", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_touch" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testtickerindex_test_tickerIndex_contains_all_tickers" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L32", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L40", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_upsertmemory" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testtickerindex_test_tickerIndex_case_insensitive" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L89", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L49", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_search" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testtickerindex_test_ticker_lookup_returns_valid_index" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L134", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L60", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_fulltextsearch" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testtickerindex_test_tickerIndex_rebuilt_on_cache_refresh" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L163", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L77", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_getusermemories" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testquerycaching_test_cache_manager_has_caches_method" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L189", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L85", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_deletememory" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testquerycaching_test_queryCache_ttl_configuration" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L318", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L93", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_extract" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testquerycaching_test_get_cached_stocks_respects_columns_parameter" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L41", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L142", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_matrixkey" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testqueryoptimization_test_all_optimizations_present" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L48", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L180", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_matrixusertag" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testperformancebenchmarks_test_tickerIndex_lookup_performance" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L342", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L200", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_counttokenscached" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testperformancebenchmarks_test_prefix_scan_performance" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L43", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L220", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_getmatrixasync" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testperformancebenchmarks_test_index_lookup_vs_scan_comparison" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L55", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L250", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_invalidateuserasync" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testperformancebenchmarks_test_queryCache_performance" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L59", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L273", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_clearallasync" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testperformancebenchmarks_test_column_projection_performance" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L244", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L289", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_upsertmemoryasync" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testperformancebenchmarks_test_cache_initialization_time" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L333", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L223", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_searchasync" + "source": "stocks_api_cache_stockscachemanager_cachescheduler", + "target": "utils_scheduler_registerjob" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L483", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L29", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_deletememoryasync" + "source": "stocks_api_cache_stockscachemanager_cachescheduler", + "target": "stocks_api_cache_stockscachemanager_getcachedstocks" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L50", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L122", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_applyupdate" + "source": "stocks_api_cache_stockscachemanager_getcachedstocks", + "target": "stocks_api_cache_stockscachemanager_loadfromfeather" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L17", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L115", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_normalize_key" + "source": "stocks_api_cache_stockscachemanager_loadfromfeather", + "target": "stocks_api_compress_rebuildabbrevs" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L216", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L91", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_archivedead" + "source": "stocks_api_cache_stockscachemanager_getcachedstocks", + "target": "stocks_api_compress_rebuildabbrevs" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L16", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L95", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_now" + "source": "stocks_api_cache_stockscachemanager_getcachedstocks", + "target": "stocks_api_cache_buildcotationdateindex" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L203", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L64", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_decayscores" + "source": "stocks_api_cache_stockscachemanager_getcachedstocks", + "target": "stocks_api_compressor_rebuildabbrevs" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L13", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L71", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_memorymanager" + "source": "stocks_api_cache_stockscachemanager_getcachedstocks", + "target": "stocks_api_cache_stockscachemanager_putcache" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L17", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L33", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_get_memory_limit" + "source": "stocks_api_cache_stockscachemanager_getcachedstocks", + "target": "stocks_api_cache_rationale_33" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L24", + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L25", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_count_memories" + "source": "main_app_stocks_api_compress_py", + "target": "stocks_api_compress_getabbr" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L34", + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L36", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_upsert_memory" + "source": "main_app_stocks_api_compress_py", + "target": "stocks_api_compress_getnest" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L138", + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L46", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_fulltext_search" + "source": "main_app_stocks_api_compress_py", + "target": "stocks_api_compress_rebuildabbrevs" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L168", + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L59", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_get_user_memories" + "source": "main_app_stocks_api_compress_py", + "target": "stocks_api_compress_compactvalue" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L195", + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L98", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_delete_memory" + "source": "main_app_stocks_api_compress_py", + "target": "stocks_api_compress_compactrow" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L209", + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L126", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_decay_scores" + "source": "main_app_stocks_api_compress_py", + "target": "stocks_api_compress_compactcotations" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L223", + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L160", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_archive_dead" + "source": "main_app_stocks_api_compress_py", + "target": "stocks_api_compress_compressresponse" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L3", + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L51", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_save_memory" + "source": "main_app_stocks_api_compress_py", + "target": "stocks_api_compress_walk" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L6", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_search_memory" - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L290", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_memory_search", - "target": "prometheus_memory_getmatrix" - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L54", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_memory_getmatrix", - "target": "prometheus_memory_matrixkey" - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L59", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_memory_getmatrix", - "target": "prometheus_memory_matrixusertag" - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L64", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_memory_getmatrix", - "target": "prometheus_memory_getmatrixasync" - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L186", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_memory_upsertmemory", - "target": "prometheus_memory_invalidateuser" - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L422", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_memory_deletememory", - "target": "prometheus_memory_invalidateuser" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/service/prometheus_service.py", - "source_location": "L52", - "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "prometheus_memory_invalidateuser" - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L68", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_memory_invalidateuser", - "target": "prometheus_memory_invalidateuserasync" - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L72", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_memory_clearall", - "target": "prometheus_memory_clearallasync" - }, - { - "relation": "inherits", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L64", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_memory_memorycandidate", - "target": "basemodel" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L22", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_memorycandidate", - "target": "models_memory_prometheusmemory" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L23", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_memorycandidate", - "target": "utils_roles_permission" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L23", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_memorycandidate", - "target": "utils_roles_roles" - }, - { - "relation": "inherits", - "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L13", - "weight": 1.0, - "confidence_score": 1.0, - "source": "utils_errors_errorresponse", - "target": "basemodel" - }, - { - "relation": "inherits", - "confidence": "EXTRACTED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L20", - "weight": 1.0, - "confidence_score": 1.0, - "source": "basemodel", - "target": "tests_test_error_handlers_samplebody" - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L354", + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L80", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_extract", - "target": "prometheus_memory_getclient" + "source": "main_app_stocks_api_compress_py", + "target": "stocks_api_compress_tocolumnar" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L241", + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L89", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_search", - "target": "prometheus_memory_minmax" + "source": "main_app_stocks_api_compress_py", + "target": "stocks_api_compress_fixheaders" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L385", + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L177", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_searchasync", - "target": "prometheus_memory_minmax" + "source": "stocks_api_compress_compressresponse", + "target": "stocks_api_compress_getabbr" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/compress.py", "source_location": "L29", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_memory_normalizekey", - "target": "prometheus_memory_findsimilarkey" + "source": "stocks_api_compress_getabbr", + "target": "stocks_api_util_categorizecolumns" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/stocks_api/compress.py", "source_location": "L30", "weight": 1.0, - "source": "prometheus_memory_normalizekey", - "target": "stocks_api_response_cache_responsecache_set" + "source": "stocks_api_compress_getabbr", + "target": "stocks_api_util_generateabbreviations" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L21", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L177", "weight": 1.0, - "source": "prometheus_memory_normalizekey", - "target": "prometheus_state_harnessstate_set" + "confidence_score": 1.0, + "source": "stocks_api_compress_compressresponse", + "target": "stocks_api_compress_getnest" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L88", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L40", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_memory_findsimilarkey", - "target": "prometheus_memory_upsertmemory" + "source": "stocks_api_compress_getnest", + "target": "stocks_api_util_detectnestedfields" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L281", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L69", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_memory_upsertmemoryasync", - "target": "prometheus_memory_findsimilarkey" + "source": "controller_stocksapi_controller_listfields", + "target": "stocks_api_compress_getnest" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L29", + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L147", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_findsimilarkey", - "target": "prometheus_memory_normalize_key" + "source": "stocks_api_compress_compactcotations", + "target": "stocks_api_compress_compactvalue" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L140", + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L178", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_scorerecency", - "target": "prometheus_memory_scorerow" + "source": "stocks_api_compress_compressresponse", + "target": "stocks_api_compress_compactrow" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L159", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L116", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_memory_scorecandidates", - "target": "prometheus_memory_scorerow" + "source": "stocks_api_compress_compactrow", + "target": "stocks_api_response_cache_responsecache_set" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L314", + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L169", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_search", - "target": "prometheus_memory_scorerecency" + "source": "stocks_api_compress_compressresponse", + "target": "stocks_api_compress_compactcotations" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L149", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L140", "weight": 1.0, - "source": "prometheus_memory_scorerecency", - "target": "prometheus_vector_getrelevancescore" + "source": "controller_stocksapi_controller_gethistorical", + "target": "stocks_api_compress_compressresponse" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L361", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L215", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_memory_searchasync", - "target": "prometheus_memory_scorerecency" + "source": "controller_stocksapi_controller_getfundamental", + "target": "stocks_api_compress_compressresponse" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L342", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L275", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_memory_search", - "target": "prometheus_memory_scorecandidates" + "source": "controller_stocksapi_controller_getcotations", + "target": "stocks_api_compress_compressresponse" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L169", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L318", "weight": 1.0, - "source": "prometheus_memory_scorecandidates", - "target": "prometheus_vector_getrelevancescore" + "source": "controller_stocksapi_controller_getlivecotation", + "target": "stocks_api_compress_compressresponse" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L389", + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L179", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_searchasync", - "target": "prometheus_memory_scorecandidates" + "source": "stocks_api_compress_compressresponse", + "target": "stocks_api_compress_walk" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L461", + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L181", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_extract", - "target": "prometheus_memory_sumtokens" + "source": "stocks_api_compress_compressresponse", + "target": "stocks_api_compress_tocolumnar" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L502", + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L185", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_counttokenscached", - "target": "prometheus_memory_sumtokens" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L10", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "models_memory_prometheusmemory" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L9", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "utils_roles_permission" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L9", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "utils_roles_roles" + "source": "stocks_api_compress_compressresponse", + "target": "stocks_api_compress_fixheaders" }, { - "relation": "calls", - "context": "call", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L117", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L3", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_prometheusmemory", - "target": "prometheus_memory_upsertmemory" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L8", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "models_memory_usermemory" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L1", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "tests_test_memory_dedup_testexactsamekeyupdates" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L1", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "tests_test_memory_dedup_testsimilarkeymerges" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L1", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "tests_test_memory_dedup_testdifferentkeysnomerge" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L1", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "tests_test_memory_dedup_testmergeboostsscore" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L1", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "tests_test_memory_dedup_testmergeincrementsaccess" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L1", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "tests_test_memory_dedup_testthresholdboundary" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L6", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "tests_test_memory_maintenance_testdecay" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L6", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "tests_test_memory_maintenance_testarchive" + "source": "main_app_stocks_api_key_py", + "target": "fastapi" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L6", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "tests_test_memory_maintenance_testdecayandarchivetogether" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L25", + "weight": 1.0, + "source": "main_app_stocks_api_key_py", + "target": "stocks_api_key_hashapikey", + "confidence_score": 1.0 }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L6", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "tests_test_memory_maintenance_testemptydatabase" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L29", + "weight": 1.0, + "source": "main_app_stocks_api_key_py", + "target": "stocks_api_key_createstoredapikey", + "confidence_score": 1.0 }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_manager.py", - "source_location": "L4", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "tests_test_memory_manager_testgetmemorylimit" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L35", + "weight": 1.0, + "source": "main_app_stocks_api_key_py", + "target": "stocks_api_key_isvalidstoredkey", + "confidence_score": 1.0 }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_manager.py", - "source_location": "L4", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "tests_test_memory_manager_testupsertmemory" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L14", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_stocks_api_key_py", + "target": "stocks_api_key_verifyapikey" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_manager.py", - "source_location": "L4", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "tests_test_memory_manager_testcountmemories" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L18", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_stocks_api_key_py", + "target": "stocks_api_key_servicetoken" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_manager.py", - "source_location": "L4", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "tests_test_memory_manager_testgetusermemories" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L22", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_stocks_api_key_py", + "target": "stocks_api_key_verifyurl" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_manager.py", - "source_location": "L4", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "tests_test_memory_manager_testdeletememory" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L26", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_stocks_api_key_py", + "target": "stocks_api_key_initverifyclient" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_manager.py", - "source_location": "L4", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "tests_test_memory_manager_testsearchfulltext" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L33", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_stocks_api_key_py", + "target": "stocks_api_key_closeverifyclient" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L66", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L16", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_getmemorylimit", - "target": "prometheus_memory_upsertmemory" + "source": "main_app_stocks_api_key_py", + "target": "stocks_api_key_hashkey" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L347", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L44", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_extract", - "target": "prometheus_memory_getmemorylimit" + "source": "main_app_stocks_api_key_py", + "target": "stocks_api_key_generatesecurekey" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L299", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L47", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_upsertmemoryasync", - "target": "prometheus_memory_getmemorylimit" + "source": "main_app_stocks_api_key_py", + "target": "stocks_api_key_createkey" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L67", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L22", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_countmemories", - "target": "prometheus_memory_upsertmemory" + "source": "main_app_stocks_api_key_py", + "target": "stocks_api_key_isquotaexceeded" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L347", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L26", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_extract", - "target": "prometheus_memory_countmemories" + "source": "main_app_stocks_api_key_py", + "target": "stocks_api_key_needsreset" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L300", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L37", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_upsertmemoryasync", - "target": "prometheus_memory_countmemories" + "source": "main_app_stocks_api_key_py", + "target": "stocks_api_key_resetquota" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L227", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L42", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_upsertmemory", - "target": "prometheus_memory_touch" + "source": "main_app_stocks_api_key_py", + "target": "stocks_api_key_incrementusage" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L368", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L46", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_extract", - "target": "prometheus_memory_upsertmemory" + "source": "main_app_stocks_api_key_py", + "target": "stocks_api_key_getremainingquota" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L47", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L50", "weight": 1.0, - "source": "prometheus_memory_upsertmemory", - "target": "prometheus_vector_contenthash" + "confidence_score": 1.0, + "source": "main_app_stocks_api_key_py", + "target": "stocks_api_key_keytodict" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L231", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L16", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_upsertmemory", - "target": "prometheus_memory_upsertmemoryasync" + "source": "main_app_stocks_api_key_py", + "target": "stocks_api_key_hash_key" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L138", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L32", "weight": 1.0, - "source": "prometheus_memory_upsertmemory", - "target": "prometheus_matrix_cache_invalidateuser" + "source": "stocks_api_key_createstoredapikey", + "target": "stocks_api_key_hashapikey", + "confidence_score": 1.0 }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L100", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L61", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_memory_upsertmemory", - "target": "prometheus_memory_applyupdate" + "source": "stocks_api_key_verifyapikey", + "target": "stocks_api_key_isvalidstoredkey", + "confidence_score": 1.0 }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L71", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L50", "weight": 1.0, - "source": "prometheus_memory_upsertmemory", - "target": "models_memory_usermemory" + "confidence_score": 1.0, + "source": "stocks_api_key_verifyapikey", + "target": "stocks_api_key_servicetoken" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L50", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L49", "weight": 1.0, - "source": "prometheus_memory_upsertmemory", - "target": "utils_vector_contenthash" + "confidence_score": 1.0, + "source": "stocks_api_key_verifyapikey", + "target": "stocks_api_key_verifyurl" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L63", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L48", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_upsertmemory", - "target": "prometheus_memory_now" + "source": "stocks_api_key_verifyapikey", + "target": "stocks_api_key_initverifyclient" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L131", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L27", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_search", - "target": "prometheus_memory_fulltextsearch" + "source": "stocks_api_key_hashkey", + "target": "stocks_api_key_verifyapikey" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L104", + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L247", "weight": 1.0, - "source": "prometheus_memory_search", - "target": "prometheus_vector_embed" + "source": "stocks_api_key_verifyapikey", + "target": "tests_test_api_key_quota_atomic_testverifyapikeyintegration_test_verify_api_key_success" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L109", + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L263", "weight": 1.0, - "source": "prometheus_memory_search", - "target": "prometheus_vector_batchcosinesimilarity" + "source": "stocks_api_key_verifyapikey", + "target": "tests_test_api_key_quota_atomic_testverifyapikeyintegration_test_verify_api_key_quota_exceeded" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L330", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L274", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_memory_search", - "target": "prometheus_memory_searchasync" + "source": "stocks_api_key_verifyapikey", + "target": "tests_test_api_key_quota_atomic_testverifyapikeyintegration_test_verify_api_key_invalid" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L120", + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L285", "weight": 1.0, - "source": "prometheus_memory_search", - "target": "prometheus_vector_getrelevancescore" + "source": "stocks_api_key_verifyapikey", + "target": "tests_test_api_key_quota_atomic_testverifyapikeyintegration_test_verify_api_key_missing" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L242", + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L295", "weight": 1.0, - "source": "prometheus_memory_search", - "target": "prometheus_matrix_cache_getmatrix" + "source": "stocks_api_key_verifyapikey", + "target": "tests_test_api_key_quota_atomic_testverifyapikeyintegration_test_verify_api_key_disabled" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L162", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L239", "weight": 1.0, - "source": "prometheus_memory_search", - "target": "prometheus_vector_decodeembeddings" + "source": "stocks_api_key_verifyapikey", + "target": "tests_test_stocks_api_coverage_test_verify_api_key_disabled_returns_none" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L113", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L252", "weight": 1.0, - "source": "prometheus_memory_search", - "target": "utils_vector_batchcosinesimilarity" + "source": "stocks_api_key_verifyapikey", + "target": "tests_test_stocks_api_coverage_test_verify_api_key_missing_raises_401" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L125", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L266", "weight": 1.0, - "source": "prometheus_memory_search", - "target": "utils_vector_getrelevancescore" + "source": "stocks_api_key_verifyapikey", + "target": "tests_test_stocks_api_coverage_test_verify_api_key_invalid_key_raises_401" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L106", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L282", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_memory_search", - "target": "prometheus_memory_now" + "source": "stocks_api_key_verifyapikey", + "target": "tests_test_stocks_api_coverage_test_verify_api_key_quota_exceeded" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L135", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L296", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_memory_search", - "target": "prometheus_memory_fulltext_search" + "source": "stocks_api_key_verifyapikey", + "target": "tests_test_stocks_api_coverage_test_verify_api_key_success" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L117", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L314", "weight": 1.0, - "source": "prometheus_memory_search", - "target": "utils_vector_batch_cosine_similarity" + "source": "stocks_api_key_verifyapikey", + "target": "tests_test_stocks_api_coverage_test_verify_api_key_http_exception_rollback" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L386", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L329", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_memory_searchasync", - "target": "prometheus_memory_fulltextsearch" + "source": "stocks_api_key_verifyapikey", + "target": "tests_test_stocks_api_coverage_test_verify_api_key_generic_exception_rollback" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L154", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L28", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_fulltextsearch", - "target": "prometheus_memory_now" + "source": "stocks_api_key_verifyapikey", + "target": "stocks_api_key_hash_key" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L180", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L2", "weight": 1.0, - "source": "prometheus_memory_getusermemories", - "target": "prometheus_vector_getrelevancescore" + "confidence_score": 1.0, + "source": "main_app_stocks_api_query_py", + "target": "fastapi" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L185", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L16", "weight": 1.0, - "source": "prometheus_memory_getusermemories", - "target": "utils_vector_getrelevancescore" + "confidence_score": 1.0, + "source": "main_app_stocks_api_query_py", + "target": "stocks_api_query_sanitizenanvalues" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L178", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L49", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_getusermemories", - "target": "prometheus_memory_now" + "source": "main_app_stocks_api_query_py", + "target": "stocks_api_query_filtercotationcolumn" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L480", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L53", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_deletememory", - "target": "prometheus_memory_deletememoryasync" + "source": "main_app_stocks_api_query_py", + "target": "stocks_api_query_baseframe" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L369", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L66", "weight": 1.0, - "source": "prometheus_memory_deletememory", - "target": "prometheus_matrix_cache_invalidateuser" + "confidence_score": 1.0, + "source": "main_app_stocks_api_query_py", + "target": "stocks_api_query_validatefields" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L191", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L79", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_deletememory", - "target": "prometheus_memory_now" + "source": "main_app_stocks_api_query_py", + "target": "stocks_api_query_envelope" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L367", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L90", "weight": 1.0, - "source": "prometheus_memory_extract", - "target": "prometheus_vector_embed" + "confidence_score": 1.0, + "source": "main_app_stocks_api_query_py", + "target": "stocks_api_query_finalize" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L386", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L123", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_extract", - "target": "prometheus_memory_counttokenscached" + "source": "main_app_stocks_api_query_py", + "target": "stocks_api_query_deserializejsoncolumns" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L18", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L151", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_lockfor" + "source": "main_app_stocks_api_query_py", + "target": "stocks_api_query_filterbysearchterms" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L24", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L169", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_getclient" + "source": "main_app_stocks_api_query_py", + "target": "stocks_api_query_queryhistorical" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L28", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L226", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_hostpath" + "source": "main_app_stocks_api_query_py", + "target": "stocks_api_query_queryfundamental" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L42", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L284", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_sandboxpath" + "source": "main_app_stocks_api_query_py", + "target": "stocks_api_query_querycotations" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L47", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L332", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_sandboxmanager" + "source": "main_app_stocks_api_query_py", + "target": "stocks_api_query_istransientliveerror" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L49", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L347", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_create" + "source": "main_app_stocks_api_query_py", + "target": "stocks_api_query_fetchlivepayload" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L65", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L325", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_destroy" + "source": "main_app_stocks_api_query_py", + "target": "stocks_api_query_querylivecotation" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L77", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L14", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_getorcreate" + "source": "main_app_stocks_api_query_py", + "target": "stocks_api_query_stocksquerymanager" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L123", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L40", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_execute" + "source": "main_app_stocks_api_query_py", + "target": "stocks_api_query_parsecotationdates" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L189", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L49", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_read_file" + "source": "main_app_stocks_api_query_py", + "target": "stocks_api_query_filtercotationdata" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L196", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L45", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_write_file" + "source": "main_app_stocks_api_query_py", + "target": "stocks_api_query_parsecotationdate" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L207", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L55", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_list_files" + "source": "main_app_stocks_api_query_py", + "target": "stocks_api_query_filtercotationbydate" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L197", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L86", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_delete_file" + "source": "stocks_api_query_envelope", + "target": "stocks_api_query_sanitizenanvalues" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L215", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L142", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_synctosandbox" + "source": "stocks_api_query_deserializejsoncolumns", + "target": "stocks_api_query_sanitizenanvalues" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L234", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L106", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_syncfromsandbox" + "source": "stocks_api_query_stocksquerymanager_finalize", + "target": "stocks_api_query_sanitizenanvalues" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L186", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L93", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_write_bytes" + "source": "stocks_api_query_stocksquerymanager_deserializejsoncolumns", + "target": "stocks_api_query_sanitizenanvalues" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L159", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L153", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_executewithworkspace" + "source": "stocks_api_query_sanitizenanvalues", + "target": "stocks_api_query_stocksquerymanager_queryhistorical" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L134", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L225", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_syncworkspace" + "source": "stocks_api_query_sanitizenanvalues", + "target": "stocks_api_query_stocksquerymanager_queryfundamental" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L148", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L336", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_restoreworkspace" + "source": "stocks_api_query_sanitizenanvalues", + "target": "stocks_api_query_stocksquerymanager_querycotations" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L159", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L119", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_savebackup" + "source": "stocks_api_query_finalize", + "target": "stocks_api_query_filtercotationcolumn" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L168", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L99", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_loadbackup" + "source": "stocks_api_query_stocksquerymanager_finalize", + "target": "stocks_api_query_filtercotationcolumn" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L12", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L326", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_baseurl" + "source": "stocks_api_query_filtercotationcolumn", + "target": "stocks_api_query_stocksquerymanager_querycotations" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L57", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1421", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_checkpoint" + "source": "stocks_api_query_filtercotationcolumn", + "target": "tests_test_stocks_api_coverage_testquerylivecotation_test_cotations_filter_cotation_column_filters_by_date" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L70", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1440", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_restore" + "source": "stocks_api_query_filtercotationcolumn", + "target": "tests_test_stocks_api_coverage_testquerylivecotation_test_cotations_filter_cotation_column_range" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L79", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1449", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_upload_file" + "source": "stocks_api_query_filtercotationcolumn", + "target": "tests_test_stocks_api_coverage_testquerylivecotation_test_cotations_filter_cotation_column_handles_non_list" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L19", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1240", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_base_url" + "source": "stocks_api_query_filtercotationcolumn", + "target": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_filter_cotation_column_filters_by_date" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L1", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1253", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_rationale_1" + "source": "stocks_api_query_filtercotationcolumn", + "target": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_filter_cotation_column_range" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L78", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1262", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_getorcreate", - "target": "prometheus_sandbox_lockfor" + "source": "stocks_api_query_filtercotationcolumn", + "target": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_filter_cotation_column_handles_non_list" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L160", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L179", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_sandbox_executewithworkspace", - "target": "prometheus_sandbox_lockfor" + "source": "stocks_api_query_queryhistorical", + "target": "stocks_api_query_baseframe" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L50", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L236", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_sandbox_create", - "target": "prometheus_sandbox_getclient" + "source": "stocks_api_query_queryfundamental", + "target": "stocks_api_query_baseframe" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L66", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L290", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_sandbox_destroy", - "target": "prometheus_sandbox_getclient" + "source": "stocks_api_query_querycotations", + "target": "stocks_api_query_baseframe" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L83", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L189", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_sandbox_getorcreate", - "target": "prometheus_sandbox_getclient" + "source": "stocks_api_query_queryhistorical", + "target": "stocks_api_query_validatefields" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L124", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L247", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_sandbox_execute", - "target": "prometheus_sandbox_getclient" + "source": "stocks_api_query_queryfundamental", + "target": "stocks_api_query_validatefields" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L220", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L120", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_sandbox_synctosandbox", - "target": "prometheus_sandbox_getclient" + "source": "stocks_api_query_finalize", + "target": "stocks_api_query_envelope" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L235", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L297", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_sandbox_syncfromsandbox", - "target": "prometheus_sandbox_getclient" + "source": "stocks_api_query_querycotations", + "target": "stocks_api_query_envelope" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L168", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L104", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_sandbox_executewithworkspace", - "target": "prometheus_sandbox_getclient" + "source": "stocks_api_query_finalize", + "target": "stocks_api_query_filterbysearchterms" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/sandbox_cleanup.py", - "source_location": "L23", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L113", "weight": 1.0, - "source": "prometheus_sandbox_getclient", - "target": "prometheus_sandbox_cleanup_cleanup_expired_sandboxes" + "confidence_score": 1.0, + "source": "stocks_api_query_finalize", + "target": "stocks_api_query_deserializejsoncolumns" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L57", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L207", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_sandbox_getclient", - "target": "prometheus_sandbox_read_file" + "source": "stocks_api_query_queryhistorical", + "target": "stocks_api_query_finalize" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L66", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L276", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_sandbox_getclient", - "target": "prometheus_sandbox_write_file" + "source": "stocks_api_query_queryfundamental", + "target": "stocks_api_query_finalize" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L78", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L306", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_sandbox_getclient", - "target": "prometheus_sandbox_list_files" + "source": "stocks_api_query_querycotations", + "target": "stocks_api_query_finalize" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L136", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/query.py", + "source_location": "L117", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_getclient", - "target": "prometheus_sandbox_syncworkspace" + "source": "stocks_api_query_finalize", + "target": "stocks_api_util_parsedaterange" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L150", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L253", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_sandbox_getclient", - "target": "prometheus_sandbox_restoreworkspace" + "source": "stocks_api_query_queryfundamental", + "target": "stocks_api_query_filterbysearchterms" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L190", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L300", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_sandbox_read_file", - "target": "prometheus_sandbox_hostpath" + "source": "stocks_api_query_querycotations", + "target": "stocks_api_query_filterbysearchterms" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L198", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/query.py", + "source_location": "L184", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_write_file", - "target": "prometheus_sandbox_hostpath" + "source": "stocks_api_query_queryhistorical", + "target": "stocks_api_util_categorizecolumns" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L208", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/query.py", + "source_location": "L193", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_list_files", - "target": "prometheus_sandbox_hostpath" + "source": "stocks_api_query_queryhistorical", + "target": "stocks_api_util_parsedaterange" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L199", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L142", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_delete_file", - "target": "prometheus_sandbox_hostpath" + "source": "controller_stocksapi_controller_gethistorical", + "target": "stocks_api_query_queryhistorical" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L243", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/query.py", + "source_location": "L241", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_syncfromsandbox", - "target": "prometheus_sandbox_hostpath" + "source": "stocks_api_query_queryfundamental", + "target": "stocks_api_util_categorizecolumns" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/prometheus/tools.py", - "source_location": "L156", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L258", "weight": 1.0, - "source": "prometheus_tools_serve_file", - "target": "prometheus_sandbox_hostpath" + "source": "stocks_api_query_queryfundamental", + "target": "stocks_api_util_parsedaterange" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L189", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L212", "weight": 1.0, - "source": "controller_prometheus_controller_downloadworkspacefile", - "target": "prometheus_sandbox_hostpath" + "source": "controller_stocksapi_controller_getfundamental", + "target": "stocks_api_query_queryfundamental" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L188", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L268", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_write_bytes", - "target": "prometheus_sandbox_hostpath" + "source": "controller_stocksapi_controller_getcotations", + "target": "stocks_api_query_querycotations" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L211", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L358", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_sandbox_list_files", - "target": "prometheus_sandbox_sandboxpath" + "source": "stocks_api_query_querylivecotation", + "target": "stocks_api_query_fetchlivepayload" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L9", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_sandbox_sandboxmanager", - "target": "models_sandbox_prometheussandbox" + "confidence_score": 0.8, + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L313", + "weight": 1.0, + "source": "controller_stocksapi_controller_getlivecotation", + "target": "stocks_api_query_querylivecotation" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L7", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_sandbox_sandboxmanager", - "target": "tests_test_agent_sandbox_integration_testpersistentsandboxlifecycle" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/sync_cache.py", + "source_location": "L14", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_stocks_api_sync_cache_py", + "target": "stocks_api_sync_cache_cache" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_sandbox.py", - "source_location": "L3", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_sandbox_sandboxmanager", - "target": "tests_test_sandbox_testsandboxmanager" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/sync_cache.py", + "source_location": "L16", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_stocks_api_sync_cache_py", + "target": "stocks_api_sync_cache_sync_cache" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L4", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_sandbox_sandboxmanager", - "target": "tests_test_sandbox_persistence_testprometheussandboxmodel" + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/util.py", + "source_location": "L2", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_stocks_api_util_py", + "target": "fastapi" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L4", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_sandbox_sandboxmanager", - "target": "tests_test_sandbox_persistence_testsandboxpersistence" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/util.py", + "source_location": "L15", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_stocks_api_util_py", + "target": "stocks_api_util_dedupabbrev" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L4", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_sandbox_sandboxmanager", - "target": "tests_test_sandbox_persistence_testsandboxcleanup" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/util.py", + "source_location": "L24", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_stocks_api_util_py", + "target": "stocks_api_util_autoabbreviate" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_sandbox.py", - "source_location": "L6", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_sandbox_sandboxmanager", - "target": "tests_test_sandbox_fakeclient" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/util.py", + "source_location": "L45", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_stocks_api_util_py", + "target": "stocks_api_util_generateabbreviations" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_sandbox.py", - "source_location": "L6", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_sandbox_sandboxmanager", - "target": "tests_test_sandbox_testsandboxcreate" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/util.py", + "source_location": "L5", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_stocks_api_util_py", + "target": "stocks_api_util_categorizecolumns" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_sandbox.py", - "source_location": "L6", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_sandbox_sandboxmanager", - "target": "tests_test_sandbox_testsandboxexecute" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/util.py", + "source_location": "L71", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_stocks_api_util_py", + "target": "stocks_api_util_parsedate" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_sandbox.py", - "source_location": "L6", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_sandbox_sandboxmanager", - "target": "tests_test_sandbox_testsandboxcheckpoint" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/util.py", + "source_location": "L55", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_stocks_api_util_py", + "target": "stocks_api_util_parsedaterange" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_sandbox.py", - "source_location": "L6", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_sandbox_sandboxmanager", - "target": "tests_test_sandbox_testsandboxrestore" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/util.py", + "source_location": "L94", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_stocks_api_util_py", + "target": "stocks_api_util_detectnestedfields" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_sandbox.py", - "source_location": "L6", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_sandbox_sandboxmanager", - "target": "tests_test_sandbox_testsandboxuploadfile" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/util.py", + "source_location": "L27", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_stocks_api_util_py", + "target": "stocks_api_util_parse_date" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_sandbox.py", - "source_location": "L6", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_sandbox_sandboxmanager", - "target": "tests_test_sandbox_testsandboxreadfile" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/util.py", + "source_location": "L33", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_stocks_api_util_py", + "target": "stocks_api_util_parsedatestart" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_sandbox.py", - "source_location": "L6", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_sandbox_sandboxmanager", - "target": "tests_test_sandbox_testsandboxdestroy" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/util.py", + "source_location": "L43", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_stocks_api_util_py", + "target": "stocks_api_util_parsedateend" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/context.py", - "source_location": "L16", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_sandbox_sandboxmanager", - "target": "prometheus_context_toolcontext" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/util.py", + "source_location": "L29", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_stocks_api_util_py", + "target": "stocks_api_util_normalizecolumns" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L24", + "source_file": "main/app/stocks_api/util.py", + "source_location": "L21", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_sandbox_sandboxmanager", - "target": "prometheus_sandbox_rationale_24" + "source": "main_app_stocks_api_util_py", + "target": "stocks_api_util_parseyearinput" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L104", + "source_file": "main/app/stocks_api/util.py", + "source_location": "L49", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_sandbox_getorcreate", - "target": "prometheus_sandbox_create" + "source": "stocks_api_util_generateabbreviations", + "target": "stocks_api_util_dedupabbrev" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L162", + "source_file": "main/app/stocks_api/util.py", + "source_location": "L129", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_sandbox_executewithworkspace", - "target": "prometheus_sandbox_create" + "source": "stocks_api_util_detectnestedfields", + "target": "stocks_api_util_dedupabbrev" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L20", + "source_file": "main/app/stocks_api/util.py", + "source_location": "L49", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_sandbox_create", - "target": "prometheus_sandbox_baseurl" + "source": "stocks_api_util_generateabbreviations", + "target": "stocks_api_util_autoabbreviate" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L33", + "source_file": "main/app/stocks_api/util.py", + "source_location": "L129", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_sandbox_create", - "target": "prometheus_sandbox_base_url" + "source": "stocks_api_util_detectnestedfields", + "target": "stocks_api_util_autoabbreviate" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L186", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L65", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_executewithworkspace", - "target": "prometheus_sandbox_destroy" + "source": "controller_stocksapi_controller_listfields", + "target": "stocks_api_util_generateabbreviations" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L80", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/util.py", + "source_location": "L46", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_destroy", - "target": "prometheus_sandbox_baseurl" + "source": "stocks_api_util_generateabbreviations", + "target": "stocks_api_response_cache_responsecache_set" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L99", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/compressor.py", + "source_location": "L33", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_destroy", - "target": "prometheus_sandbox_base_url" + "source": "stocks_api_compressor_getabbr", + "target": "stocks_api_util_generateabbreviations" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L116", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/util.py", + "source_location": "L46", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_getorcreate", - "target": "prometheus_sandbox_synctosandbox" + "source": "stocks_api_util_generateabbreviations", + "target": "prometheus_state_harnessstate_set" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L153", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L52", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_execute", - "target": "prometheus_sandbox_getorcreate" + "source": "stocks_api_util_categorizecolumns", + "target": "controller_stocksapi_controller_listfields" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L75", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L76", "weight": 1.0, - "source": "prometheus_sandbox_getorcreate", - "target": "models_sandbox_prometheussandbox" + "source": "stocks_api_query_stocksquerymanager_queryhistorical", + "target": "stocks_api_util_categorizecolumns" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L69", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/query.py", + "source_location": "L141", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_getorcreate", - "target": "prometheus_sandbox_loadbackup" + "source": "stocks_api_query_stocksquerymanager_queryfundamental", + "target": "stocks_api_util_categorizecolumns" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L71", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/compressor.py", + "source_location": "L32", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_getorcreate", - "target": "prometheus_sandbox_restoreworkspace" + "source": "stocks_api_compressor_getabbr", + "target": "stocks_api_util_categorizecolumns" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L128", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L11", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_execute", - "target": "prometheus_sandbox_synctosandbox" + "source": "stocks_api_util_categorizecolumns", + "target": "tests_test_stocks_api_util_coverage_testcategorizecolumns_test_historical_and_fundamental" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L139", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L20", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_execute", - "target": "prometheus_sandbox_syncfromsandbox" + "source": "stocks_api_util_categorizecolumns", + "target": "tests_test_stocks_api_util_coverage_testcategorizecolumns_test_only_fundamental" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L37", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L26", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_execute", - "target": "prometheus_sandbox_baseurl" + "source": "stocks_api_util_categorizecolumns", + "target": "tests_test_stocks_api_util_coverage_testcategorizecolumns_test_reserved_words_excluded" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L51", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L32", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_execute", - "target": "prometheus_sandbox_base_url" + "source": "stocks_api_util_categorizecolumns", + "target": "tests_test_stocks_api_util_coverage_testcategorizecolumns_test_single_year" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L242", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L37", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_syncfromsandbox", - "target": "prometheus_sandbox_read_file" + "source": "stocks_api_util_categorizecolumns", + "target": "tests_test_stocks_api_util_coverage_testcategorizecolumns_test_no_year_suffix" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L142", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_util.py", + "source_location": "L14", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_read_file", - "target": "prometheus_sandbox_syncworkspace" + "source": "stocks_api_util_categorizecolumns", + "target": "tests_test_stocks_util_testcategorizecolumns_test_categorize_columns_historical_only" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L73", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_util.py", + "source_location": "L23", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_read_file", - "target": "prometheus_sandbox_baseurl" + "source": "stocks_api_util_categorizecolumns", + "target": "tests_test_stocks_util_testcategorizecolumns_test_categorize_columns_fundamental_only" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L91", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_util.py", + "source_location": "L32", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_read_file", - "target": "prometheus_sandbox_base_url" + "source": "stocks_api_util_categorizecolumns", + "target": "tests_test_stocks_util_testcategorizecolumns_test_categorize_columns_mixed" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L227", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_util.py", + "source_location": "L40", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_synctosandbox", - "target": "prometheus_sandbox_write_file" + "source": "stocks_api_util_categorizecolumns", + "target": "tests_test_stocks_util_testcategorizecolumns_test_categorize_columns_excludes_special" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L154", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_util.py", + "source_location": "L47", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_write_file", - "target": "prometheus_sandbox_restoreworkspace" + "source": "stocks_api_util_categorizecolumns", + "target": "tests_test_stocks_util_testcategorizecolumns_test_categorize_columns_empty" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L164", + "source_file": "main/app/stocks_api/util.py", + "source_location": "L88", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_sandbox_executewithworkspace", - "target": "prometheus_sandbox_synctosandbox" + "source": "stocks_api_util_parsedaterange", + "target": "stocks_api_util_parsedate" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L180", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/query.py", + "source_location": "L97", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_executewithworkspace", - "target": "prometheus_sandbox_syncfromsandbox" + "source": "stocks_api_query_stocksquerymanager_finalize", + "target": "stocks_api_util_parsedaterange" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/stream_bus.py", - "source_location": "L10", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/query.py", + "source_location": "L124", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_stream_bus_py", - "target": "prometheus_stream_bus_streamchannel" + "source": "stocks_api_query_stocksquerymanager_queryhistorical", + "target": "stocks_api_util_parsedaterange" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/stream_bus.py", - "source_location": "L28", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/query.py", + "source_location": "L197", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_stream_bus_py", - "target": "prometheus_stream_bus_streambus" + "source": "stocks_api_query_stocksquerymanager_queryfundamental", + "target": "stocks_api_util_parsedaterange" }, { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/stream_bus.py", - "source_location": "L11", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/query.py", + "source_location": "L318", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_stream_bus_streamchannel", - "target": "prometheus_stream_bus_streamchannel_init" + "source": "stocks_api_query_stocksquerymanager_querycotations", + "target": "stocks_api_util_parsedaterange" }, { - "relation": "method", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/stream_bus.py", - "source_location": "L17", + "source_file": "main/app/stocks_api/util.py", + "source_location": "L44", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_stream_bus_streamchannel", - "target": "prometheus_stream_bus_streamchannel_publish" + "source": "stocks_api_util_parsedaterange", + "target": "stocks_api_util_parse_date" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/stream_bus.py", - "source_location": "L35", + "source_file": "main/app/stocks_api/util.py", + "source_location": "L60", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_stream_bus_streambus_getorcreate", - "target": "prometheus_stream_bus_streamchannel" + "source": "stocks_api_util_parsedatestart", + "target": "stocks_api_util_parsedaterange" }, { - "relation": "method", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/stream_bus.py", - "source_location": "L29", + "source_file": "main/app/stocks_api/util.py", + "source_location": "L60", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_stream_bus_streambus", - "target": "prometheus_stream_bus_streambus_init" + "source": "stocks_api_util_parsedateend", + "target": "stocks_api_util_parsedaterange" }, { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/stream_bus.py", - "source_location": "L32", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L45", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_stream_bus_streambus", - "target": "prometheus_stream_bus_streambus_getorcreate" + "source": "stocks_api_util_parsedaterange", + "target": "tests_test_stocks_api_util_coverage_testparsedaterange_test_empty_string" }, { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/stream_bus.py", - "source_location": "L39", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L48", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_stream_bus_streambus", - "target": "prometheus_stream_bus_streambus_publish" + "source": "stocks_api_util_parsedaterange", + "target": "tests_test_stocks_api_util_coverage_testparsedaterange_test_none" }, { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/stream_bus.py", - "source_location": "L42", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L51", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_stream_bus_streambus", - "target": "prometheus_stream_bus_streambus_subscribe" + "source": "stocks_api_util_parsedaterange", + "target": "tests_test_stocks_api_util_coverage_testparsedaterange_test_single_year" }, { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/stream_bus.py", - "source_location": "L55", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L60", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_stream_bus_streambus", - "target": "prometheus_stream_bus_streambus_unsubscribe" + "source": "stocks_api_util_parsedaterange", + "target": "tests_test_stocks_api_util_coverage_testparsedaterange_test_year_range" }, { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/stream_bus.py", - "source_location": "L60", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L65", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_stream_bus_streambus", - "target": "prometheus_stream_bus_streambus_startrun" + "source": "stocks_api_util_parsedaterange", + "target": "tests_test_stocks_api_util_coverage_testparsedaterange_test_spaces" }, { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/stream_bus.py", - "source_location": "L86", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L71", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_stream_bus_streambus", - "target": "prometheus_stream_bus_streambus_eventgenerator" + "source": "stocks_api_util_parsedaterange", + "target": "tests_test_stocks_api_util_coverage_testparsedaterange_test_three_values_raises" }, { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/stream_bus.py", - "source_location": "L109", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L75", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_stream_bus_streambus", - "target": "prometheus_stream_bus_streambus_streamresponse" + "source": "stocks_api_util_parsedaterange", + "target": "tests_test_stocks_api_util_coverage_testparsedaterange_test_month_start" }, { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/stream_bus.py", - "source_location": "L83", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L82", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_stream_bus_streambus", - "target": "prometheus_stream_bus_streambus_forward" + "source": "stocks_api_util_parsedaterange", + "target": "tests_test_stocks_api_util_coverage_testparsedaterange_test_full_date" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/stream_bus.py", - "source_location": "L40", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_util.py", + "source_location": "L55", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_stream_bus_streambus_publish", - "target": "prometheus_stream_bus_streambus_getorcreate" + "source": "stocks_api_util_parsedaterange", + "target": "tests_test_stocks_util_testparsedaterange_test_parse_year_single" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/stream_bus.py", - "source_location": "L61", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_util.py", + "source_location": "L64", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_stream_bus_streambus_startrun", - "target": "prometheus_stream_bus_streambus_getorcreate" + "source": "stocks_api_util_parsedaterange", + "target": "tests_test_stocks_util_testparsedaterange_test_parse_year_range" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/stream_bus.py", - "source_location": "L87", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_util.py", + "source_location": "L69", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_stream_bus_streambus_eventgenerator", - "target": "prometheus_stream_bus_streambus_subscribe" + "source": "stocks_api_util_parsedaterange", + "target": "tests_test_stocks_util_testparsedaterange_test_parse_year_none" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/stream_bus.py", - "source_location": "L84", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_util.py", + "source_location": "L74", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_stream_bus_streambus_forward", - "target": "prometheus_stream_bus_streambus_subscribe" + "source": "stocks_api_util_parsedaterange", + "target": "tests_test_stocks_util_testparsedaterange_test_parse_year_empty_string" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/stream_bus.py", - "source_location": "L107", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_util.py", + "source_location": "L79", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_stream_bus_streambus_eventgenerator", - "target": "prometheus_stream_bus_streambus_unsubscribe" + "source": "stocks_api_util_parsedaterange", + "target": "tests_test_stocks_util_testparsedaterange_test_parse_month" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/stream_bus.py", - "source_location": "L105", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_util.py", + "source_location": "L86", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_stream_bus_streambus_forward", - "target": "prometheus_stream_bus_streambus_unsubscribe" + "source": "stocks_api_util_parsedaterange", + "target": "tests_test_stocks_util_testparsedaterange_test_parse_full_date" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/stream_bus.py", - "source_location": "L110", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_util.py", + "source_location": "L90", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_stream_bus_streambus_streamresponse", - "target": "prometheus_stream_bus_streambus_eventgenerator" + "source": "stocks_api_util_parsedaterange", + "target": "tests_test_stocks_util_testparsedaterange_test_parse_two_values" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L17", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_util.py", + "source_location": "L98", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_tools_py", - "target": "prometheus_tools_search_memory" + "source": "stocks_api_util_parsedaterange", + "target": "tests_test_stocks_util_testparsedaterange_test_parse_three_values_raises" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L43", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/util.py", + "source_location": "L114", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_tools_py", - "target": "prometheus_tools_save_memory" + "source": "stocks_api_util_detectnestedfields", + "target": "stocks_api_response_cache_responsecache_set" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L113", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/compressor.py", + "source_location": "L47", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_tools_py", - "target": "prometheus_tools_execute_code" + "source": "stocks_api_compressor_getnest", + "target": "stocks_api_util_detectnestedfields" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L134", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/util.py", + "source_location": "L114", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_tools_py", - "target": "prometheus_tools_read_file" + "source": "stocks_api_util_detectnestedfields", + "target": "prometheus_state_harnessstate_set" }, { - "relation": "contains", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L145", + "source_file": "main/app/user/user.py", + "source_location": "L4", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_tools_py", - "target": "prometheus_tools_write_file" + "source": "main_app_user_user_py", + "target": "fastapi" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L158", + "source_file": "main/app/user/user.py", + "source_location": "L9", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_tools_py", - "target": "prometheus_tools_list_files" + "source": "main_app_user_user_py", + "target": "user_user_usermanager" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L144", + "source_file": "main/app/user/user.py", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_tools_py", - "target": "prometheus_tools_serve_file" + "source": "main_app_user_user_py", + "target": "user_user_getroleslist" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L180", + "source_file": "main/app/user/user.py", + "source_location": "L28", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_tools_py", - "target": "prometheus_tools_dispatchtoolcall" + "source": "main_app_user_user_py", + "target": "user_user_getcurrentuser" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L18", + "source_file": "main/app/user/user.py", + "source_location": "L34", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_tools_py", - "target": "prometheus_tools_getdb" + "source": "main_app_user_user_py", + "target": "user_user_todict" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L80", + "source_file": "main/app/user/user.py", + "source_location": "L19", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_tools_py", - "target": "prometheus_tools_get_state" + "source": "main_app_user_user_py", + "target": "user_user_addrole" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L95", + "source_file": "main/app/user/user.py", + "source_location": "L28", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_tools_py", - "target": "prometheus_tools_set_state" + "source": "main_app_user_user_py", + "target": "user_user_hasrole" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L141", + "source_file": "main/app/user/user.py", + "source_location": "L14", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_tools_py", - "target": "prometheus_tools_read_sandbox_file" + "source": "main_app_user_user_py", + "target": "user_user_addroletouser" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L151", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_tools_py", - "target": "prometheus_tools_upload_to_sandbox" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/user/user.py", + "source_location": "L7", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "models_user_user" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L153", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_tools_py", - "target": "prometheus_tools_check_cache" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/utils/roles.py", + "source_location": "L65", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "utils_roles_permission" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L104", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_tools_py", - "target": "prometheus_tools_executestatetool" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/utils/roles.py", + "source_location": "L65", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "utils_roles_roles" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L46", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_tools_py", - "target": "prometheus_tools_executememorytool" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testissecurescheme" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L21", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_21", - "target": "prometheus_tools_search_memory" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testhealthendpoint" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L20", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_20", - "target": "prometheus_tools_search_memory" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testregisterendpoint" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L19", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_19", - "target": "prometheus_tools_search_memory" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testloginendpoint" }, { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L39", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_search_memory", - "target": "prometheus_tools_getdb" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testlogoutendpoint" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L27", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_27", - "target": "prometheus_tools_search_memory" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testgooglelogin" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L18", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_18", - "target": "prometheus_tools_search_memory" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testgooglecallback" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L16", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_search_memory", - "target": "prometheus_tools_rationale_16" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testuserhealth" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L15", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_search_memory", - "target": "prometheus_tools_rationale_15" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testgetme" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L17", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_search_memory", - "target": "prometheus_tools_rationale_17" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testupgradeendpoints" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L13", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_search_memory", - "target": "prometheus_tools_rationale_13" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testadminaccess" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L12", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_search_memory", - "target": "prometheus_tools_rationale_12" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testgetsessions" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L52", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_52", - "target": "prometheus_tools_save_memory" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testgetcurrentsession" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/tools.py", - "source_location": "L52", - "weight": 1.0, - "source": "prometheus_tools_save_memory", - "target": "prometheus_vector_embed" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testrevokesession" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L50", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_50", - "target": "prometheus_tools_save_memory" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testrevokeallsessions" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L49", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_49", - "target": "prometheus_tools_save_memory" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testprometheushealth" }, { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L67", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_save_memory", - "target": "prometheus_tools_getdb" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testprometheusgetsessions" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L54", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_54", - "target": "prometheus_tools_save_memory" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testprometheuscreatesession" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L44", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_44", - "target": "prometheus_tools_save_memory" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testprometheusupdatesessiontitle" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L42", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_save_memory", - "target": "prometheus_tools_rationale_42" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testprometheusgethistory" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L41", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_save_memory", - "target": "prometheus_tools_rationale_41" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testprometheusdeletesession" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L39", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_save_memory", - "target": "prometheus_tools_rationale_39" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testprometheuschat" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L38", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_save_memory", - "target": "prometheus_tools_rationale_38" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_teststocksapihealth" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L29", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_save_memory", - "target": "prometheus_tools_rationale_29" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_teststocksapihistorical" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L94", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_94", - "target": "prometheus_tools_execute_code" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_teststocksapifundamental" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L91", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_91", - "target": "prometheus_tools_execute_code" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_teststocksapigeneratekey" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L90", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_90", - "target": "prometheus_tools_execute_code" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testaddroletouser" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L92", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_92", - "target": "prometheus_tools_execute_code" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testgetcurrentuser" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L123", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_123", - "target": "prometheus_tools_execute_code" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testhashpasswordempty" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L114", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_114", - "target": "prometheus_tools_execute_code" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testverifyaccesstoken" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L112", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_execute_code", - "target": "prometheus_tools_rationale_112" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testextracttokenpayloadreraise" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L111", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_execute_code", - "target": "prometheus_tools_rationale_111" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testmanagerinit" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L109", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_execute_code", - "target": "prometheus_tools_rationale_109" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_models.py", + "source_location": "L5", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_models_testusermodel" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L115", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_115", - "target": "prometheus_tools_read_file" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_models.py", + "source_location": "L5", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_models_teststocksapikeymodel" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L112", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_112", - "target": "prometheus_tools_read_file" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_models.py", + "source_location": "L5", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_models_testprometheussessionmodel" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L111", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1495", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_111", - "target": "prometheus_tools_read_file" + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testmanagerinit_test_manager_init" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L113", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_113", - "target": "prometheus_tools_read_file" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_controller.py", + "source_location": "L52", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_memory_controller_testmemorycontrollerroutes" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L144", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_144", - "target": "prometheus_tools_read_file" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_controller.py", + "source_location": "L52", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_memory_controller_testmemoryendpointsintegration" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L135", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_135", - "target": "prometheus_tools_read_file" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1160", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_stocks_api_coverage_teststockscachemanager" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L147", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_read_file", - "target": "prometheus_tools_rationale_147" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1160", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_stocks_api_coverage_testverifyapikey" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L131", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_read_file", - "target": "prometheus_tools_rationale_131" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1160", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_stocks_api_coverage_testgeneratesecurekey" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L130", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_read_file", - "target": "prometheus_tools_rationale_130" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1160", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_stocks_api_coverage_testcreatekey" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L129", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_129", - "target": "prometheus_tools_write_file" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1160", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_stocks_api_coverage_testdeserializejsoncolumns" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L126", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_126", - "target": "prometheus_tools_write_file" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1160", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_stocks_api_coverage_testfilterbysearchterms" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L125", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_125", - "target": "prometheus_tools_write_file" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1160", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_stocks_api_coverage_testqueryhistorical" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L127", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_127", - "target": "prometheus_tools_write_file" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1160", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_stocks_api_coverage_testqueryfundamental" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L122", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_122", - "target": "prometheus_tools_write_file" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1160", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_stocks_api_coverage_testquerycotations" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L155", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_155", - "target": "prometheus_tools_write_file" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1461", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_stocks_api_coverage_testquerylivecotation" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L146", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_146", - "target": "prometheus_tools_write_file" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_teststocksapikeytest" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L158", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/user/user.py", + "source_location": "L10", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_tools_write_file", - "target": "prometheus_tools_rationale_158" + "source": "user_user_usermanager", + "target": "user_user_usermanager_init" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L144", + "source_file": "main/app/user/user.py", + "source_location": "L83", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_tools_write_file", - "target": "prometheus_tools_rationale_144" + "source": "user_user_getroleslist", + "target": "user_user_getcurrentuser" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L143", + "source_file": "main/app/user/user.py", + "source_location": "L39", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_tools_write_file", - "target": "prometheus_tools_rationale_143" + "source": "user_user_getroleslist", + "target": "user_user_todict" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L145", + "source_file": "main/app/user/user.py", + "source_location": "L22", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_tools_rationale_145", - "target": "prometheus_tools_list_files" + "source": "user_user_getroleslist", + "target": "user_user_addrole" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L142", + "source_file": "main/app/user/user.py", + "source_location": "L31", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_tools_rationale_142", - "target": "prometheus_tools_list_files" + "source": "user_user_getroleslist", + "target": "user_user_hasrole" }, { - "relation": "rationale_for", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L141", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L6", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_tools_rationale_141", - "target": "prometheus_tools_list_files" + "source": "main_controller_authentication_controller_py", + "target": "fastapi" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L143", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L20", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_tools_rationale_143", - "target": "prometheus_tools_list_files" + "source": "main_controller_authentication_controller_py", + "target": "controller_authentication_controller_issecurescheme" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L135", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L44", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_tools_rationale_135", - "target": "prometheus_tools_list_files" + "source": "main_controller_authentication_controller_py", + "target": "controller_authentication_controller_resolvecookiedomain" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L168", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L32", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_tools_rationale_168", - "target": "prometheus_tools_list_files" + "source": "main_controller_authentication_controller_py", + "target": "controller_authentication_controller_issuesessioncookie" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L159", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L24", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_tools_rationale_159", - "target": "prometheus_tools_list_files" + "source": "main_controller_authentication_controller_py", + "target": "controller_authentication_controller_health" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L171", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L29", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_tools_list_files", - "target": "prometheus_tools_rationale_171" + "source": "main_controller_authentication_controller_py", + "target": "controller_authentication_controller_register" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L158", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L71", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_tools_list_files", - "target": "prometheus_tools_rationale_158" + "source": "main_controller_authentication_controller_py", + "target": "controller_authentication_controller_login" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L158", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L100", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_tools_rationale_158", - "target": "prometheus_tools_serve_file" + "source": "main_controller_authentication_controller_py", + "target": "controller_authentication_controller_logout" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L155", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L253", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_tools_rationale_155", - "target": "prometheus_tools_serve_file" + "source": "main_controller_authentication_controller_py", + "target": "controller_authentication_controller_introspect" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L154", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L131", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_tools_rationale_154", - "target": "prometheus_tools_serve_file" + "source": "main_controller_authentication_controller_py", + "target": "controller_authentication_controller_googlelogin" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L156", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L146", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_tools_rationale_156", - "target": "prometheus_tools_serve_file" + "source": "main_controller_authentication_controller_py", + "target": "controller_authentication_controller_googlecallback" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L145", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L245", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_tools_rationale_145", - "target": "prometheus_tools_serve_file" + "source": "main_controller_authentication_controller_py", + "target": "controller_authentication_controller_requireservicetoken" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L125", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L277", "weight": 1.0, - "source": "prometheus_tools_dispatchtoolcall", - "target": "tests_test_memory_tools_wiring_test_search_memory_routed_via_registry" + "confidence_score": 1.0, + "source": "main_controller_authentication_controller_py", + "target": "controller_authentication_controller_verifyservicekey" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L140", + "confidence": "EXTRACTED", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L39", "weight": 1.0, - "source": "prometheus_tools_dispatchtoolcall", - "target": "tests_test_memory_tools_wiring_test_save_memory_routed_via_registry" + "confidence_score": 1.0, + "source": "controller_authentication_controller_issecurescheme", + "target": "controller_authentication_controller_issuesessioncookie" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L158", + "confidence": "EXTRACTED", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L123", "weight": 1.0, - "source": "prometheus_tools_dispatchtoolcall", - "target": "tests_test_memory_tools_wiring_test_non_registry_tool_not_routed" + "confidence_score": 1.0, + "source": "controller_authentication_controller_issecurescheme", + "target": "controller_authentication_controller_logout" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_sandbox_tools.py", - "source_location": "L33", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L114", "weight": 1.0, - "source": "prometheus_tools_dispatchtoolcall", - "target": "tests_test_sandbox_tools_test_dispatch_execute_code" + "source": "controller_authentication_controller_issecurescheme", + "target": "tests_test_controllers_coverage_testissecurescheme_test_is_secure_https" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_sandbox_tools.py", - "source_location": "L85", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L121", "weight": 1.0, - "source": "prometheus_tools_dispatchtoolcall", - "target": "tests_test_sandbox_tools_test_dispatch_execute_code_no_sandbox" + "source": "controller_authentication_controller_issecurescheme", + "target": "tests_test_controllers_coverage_testissecurescheme_test_is_secure_http" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_sandbox_tools.py", - "source_location": "L52", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L128", "weight": 1.0, - "source": "prometheus_tools_dispatchtoolcall", - "target": "tests_test_sandbox_tools_test_dispatch_read_file" + "source": "controller_authentication_controller_issecurescheme", + "target": "tests_test_controllers_coverage_testissecurescheme_test_is_secure_no_scheme" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sandbox_tools.py", - "source_location": "L62", + "confidence": "EXTRACTED", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L49", "weight": 1.0, - "source": "prometheus_tools_dispatchtoolcall", - "target": "tests_test_sandbox_tools_test_dispatch_write_file" + "confidence_score": 1.0, + "source": "controller_authentication_controller_issecurescheme", + "target": "controller_authentication_controller_register" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sandbox_tools.py", - "source_location": "L72", + "confidence": "EXTRACTED", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L87", "weight": 1.0, - "source": "prometheus_tools_dispatchtoolcall", - "target": "tests_test_sandbox_tools_test_dispatch_list_files" + "confidence_score": 1.0, + "source": "controller_authentication_controller_issecurescheme", + "target": "controller_authentication_controller_login" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sandbox_tools.py", - "source_location": "L80", + "confidence": "EXTRACTED", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L176", "weight": 1.0, - "source": "prometheus_tools_dispatchtoolcall", - "target": "tests_test_sandbox_tools_test_dispatch_read_file_no_sandbox" + "confidence_score": 1.0, + "source": "controller_authentication_controller_issecurescheme", + "target": "controller_authentication_controller_googlecallback" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_state_tools.py", - "source_location": "L108", + "confidence": "EXTRACTED", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L58", "weight": 1.0, - "source": "prometheus_tools_dispatchtoolcall", - "target": "tests_test_state_tools_test_dispatch_get_state" + "confidence_score": 1.0, + "source": "controller_authentication_controller_issuesessioncookie", + "target": "controller_authentication_controller_resolvecookiedomain" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_state_tools.py", - "source_location": "L117", + "confidence": "EXTRACTED", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L160", "weight": 1.0, - "source": "prometheus_tools_dispatchtoolcall", - "target": "tests_test_state_tools_test_dispatch_set_state" + "confidence_score": 1.0, + "source": "controller_authentication_controller_logout", + "target": "controller_authentication_controller_resolvecookiedomain" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sandbox_tools.py", - "source_location": "L68", + "confidence": "EXTRACTED", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L81", "weight": 1.0, - "source": "prometheus_tools_dispatchtoolcall", - "target": "tests_test_sandbox_tools_test_dispatch_execute_code_routes_to_registry" + "confidence_score": 1.0, + "source": "controller_authentication_controller_issuesessioncookie", + "target": "controller_authentication_controller_register" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L129", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L107", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_tools_dispatchtoolcall", - "target": "prometheus_tools_executestatetool" + "source": "controller_authentication_controller_issuesessioncookie", + "target": "controller_authentication_controller_login" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L85", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L186", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_tools_dispatchtoolcall", - "target": "prometheus_tools_executememorytool" + "source": "controller_authentication_controller_issuesessioncookie", + "target": "controller_authentication_controller_googlecallback" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L86", + "confidence": "EXTRACTED", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L257", "weight": 1.0, - "source": "prometheus_tools_dispatchtoolcall", - "target": "tests_test_memory_tools_wiring_test_search_memory_routed_to_executememorytool" + "confidence_score": 1.0, + "source": "controller_authentication_controller_introspect", + "target": "controller_authentication_controller_requireservicetoken" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L99", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L5", "weight": 1.0, - "source": "prometheus_tools_dispatchtoolcall", - "target": "tests_test_memory_tools_wiring_test_save_memory_routed_to_executememorytool" + "confidence_score": 1.0, + "source": "main_controller_orunmila_controller_py", + "target": "fastapi" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L114", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L26", "weight": 1.0, - "source": "prometheus_tools_dispatchtoolcall", - "target": "tests_test_memory_tools_wiring_test_memory_tool_skipped_without_user" + "confidence_score": 1.0, + "source": "main_controller_orunmila_controller_py", + "target": "controller_orunmila_controller_verifysessionownsership" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L127", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L32", "weight": 1.0, - "source": "prometheus_tools_dispatchtoolcall", - "target": "tests_test_memory_tools_wiring_test_non_memory_tool_not_routed_to_executememorytool" + "confidence_score": 1.0, + "source": "main_controller_orunmila_controller_py", + "target": "controller_orunmila_controller_health" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L94", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L37", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_tools_set_state", - "target": "prometheus_tools_rationale_94" + "source": "main_controller_orunmila_controller_py", + "target": "controller_orunmila_controller_getsessions" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/vector.py", - "source_location": "L10", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L56", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_vector_py", - "target": "prometheus_vector_normalizerows" + "source": "main_controller_orunmila_controller_py", + "target": "controller_orunmila_controller_updatesessiontitle" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/vector.py", - "source_location": "L10", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L71", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_vector_py", - "target": "prometheus_vector_embed" + "source": "main_controller_orunmila_controller_py", + "target": "controller_orunmila_controller_gethistory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/vector.py", - "source_location": "L14", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L90", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_vector_py", - "target": "prometheus_vector_decodeembeddings" + "source": "main_controller_orunmila_controller_py", + "target": "controller_orunmila_controller_deletesession" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/vector.py", - "source_location": "L8", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L103", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_vector_py", - "target": "prometheus_vector_batchcosinesimilarity" + "source": "main_controller_orunmila_controller_py", + "target": "controller_orunmila_controller_chat_stream" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/vector.py", - "source_location": "L20", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L154", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_vector_py", - "target": "prometheus_vector_contenthash" + "source": "main_controller_orunmila_controller_py", + "target": "controller_orunmila_controller_resumechatstream" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/vector.py", - "source_location": "L55", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L166", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_vector_py", - "target": "prometheus_vector_tovectorstring" + "source": "main_controller_orunmila_controller_py", + "target": "controller_orunmila_controller_deleteworkspacefile" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/vector.py", - "source_location": "L59", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L179", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_vector_py", - "target": "prometheus_vector_fromvectorstring" + "source": "main_controller_orunmila_controller_py", + "target": "controller_orunmila_controller_downloadworkspacefile" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/vector.py", - "source_location": "L24", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L195", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_vector_py", - "target": "prometheus_vector_getrelevancescore" + "source": "main_controller_orunmila_controller_py", + "target": "controller_orunmila_controller_listworkspacefiles" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/vector.py", - "source_location": "L35", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L62", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_vector_batchcosinesimilarity", - "target": "prometheus_vector_normalizerows" + "source": "controller_orunmila_controller_updatesessiontitle", + "target": "controller_orunmila_controller_verifysessionownsership" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/vector.py", - "source_location": "L11", + "confidence": "EXTRACTED", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L76", "weight": 1.0, - "source": "prometheus_vector_embed", - "target": "models_loader_getembeddingmodel" + "confidence_score": 1.0, + "source": "controller_orunmila_controller_gethistory", + "target": "controller_orunmila_controller_verifysessionownsership" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L379", + "confidence": "EXTRACTED", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L114", "weight": 1.0, - "source": "prometheus_memory_searchasync", - "target": "prometheus_vector_embed" + "confidence_score": 1.0, + "source": "controller_orunmila_controller_chat_stream", + "target": "controller_orunmila_controller_verifysessionownsership" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "bench/bench_memory_vector.py", - "source_location": "L32", + "confidence": "EXTRACTED", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L160", "weight": 1.0, - "source": "bench_bench_memory_vector_benchonce", - "target": "prometheus_vector_embed" + "confidence_score": 1.0, + "source": "controller_orunmila_controller_resumechatstream", + "target": "controller_orunmila_controller_verifysessionownsership" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/tools.py", - "source_location": "L63", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L2", "weight": 1.0, - "source": "prometheus_vector_embed", - "target": "prometheus_tools_executememorytool" + "confidence_score": 1.0, + "source": "main_controller_stocksapi_controller_py", + "target": "fastapi" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "bench/bench_memory_vector.py", - "source_location": "L22", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L16", "weight": 1.0, - "source": "bench_bench_memory_vector_benchonce", - "target": "prometheus_vector_decodeembeddings" + "confidence_score": 1.0, + "source": "main_controller_stocksapi_controller_py", + "target": "controller_stocksapi_controller_health" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L380", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L25", "weight": 1.0, - "source": "prometheus_memory_searchasync", - "target": "prometheus_vector_batchcosinesimilarity" + "confidence_score": 1.0, + "source": "main_controller_stocksapi_controller_py", + "target": "controller_stocksapi_controller_listfields" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "bench/bench_memory_vector.py", - "source_location": "L25", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L24", "weight": 1.0, - "source": "bench_bench_memory_vector_benchonce", - "target": "prometheus_vector_batchcosinesimilarity" + "confidence_score": 1.0, + "source": "main_controller_stocksapi_controller_py", + "target": "controller_stocksapi_controller_gethistorical" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_vector_utils.py", - "source_location": "L8", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L35", "weight": 1.0, - "source": "prometheus_vector_batchcosinesimilarity", - "target": "tests_test_vector_utils_testbatchcosinesimilarity_test_empty_matrix" + "confidence_score": 1.0, + "source": "main_controller_stocksapi_controller_py", + "target": "controller_stocksapi_controller_getfundamental" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_vector_utils.py", - "source_location": "L14", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L49", "weight": 1.0, - "source": "prometheus_vector_batchcosinesimilarity", - "target": "tests_test_vector_utils_testbatchcosinesimilarity_test_single_row" + "confidence_score": 1.0, + "source": "main_controller_stocksapi_controller_py", + "target": "controller_stocksapi_controller_getcotations" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_vector_utils.py", - "source_location": "L27", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L60", "weight": 1.0, - "source": "prometheus_vector_batchcosinesimilarity", - "target": "tests_test_vector_utils_testbatchcosinesimilarity_test_multiple_rows" + "confidence_score": 1.0, + "source": "main_controller_stocksapi_controller_py", + "target": "controller_stocksapi_controller_getlivecotation" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_vector_utils.py", - "source_location": "L34", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L23", "weight": 1.0, - "source": "prometheus_vector_batchcosinesimilarity", - "target": "tests_test_vector_utils_testbatchcosinesimilarity_test_zero_query" + "confidence_score": 1.0, + "source": "main_controller_stocksapi_controller_py", + "target": "controller_stocksapi_controller_jsonbytesresponse" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L262", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L46", "weight": 1.0, - "source": "prometheus_memory_upsertmemoryasync", - "target": "prometheus_vector_contenthash" + "confidence_score": 1.0, + "source": "main_controller_stocksapi_controller_py", + "target": "controller_stocksapi_controller_generatekey" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L54", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L63", "weight": 1.0, - "source": "prometheus_memory_applyupdate", - "target": "prometheus_vector_contenthash" + "confidence_score": 1.0, + "source": "main_controller_stocksapi_controller_py", + "target": "controller_stocksapi_controller_getrealtimecotation" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_vector_utils.py", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L20", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_controller_stocksapi_controller_py", + "target": "controller_stocksapi_controller_apikeytest" + }, + { + "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", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L47", + "weight": 1.0, + "confidence_score": 1.0, + "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": "L36", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_36", + "target": "controller_stocksapi_controller_listfields" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", "source_location": "L40", "weight": 1.0, - "source": "prometheus_vector_contenthash", - "target": "tests_test_vector_utils_testcontenthash_test_deterministic" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_40", + "target": "controller_stocksapi_controller_listfields" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_vector_utils.py", - "source_location": "L43", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L48", "weight": 1.0, - "source": "prometheus_vector_contenthash", - "target": "tests_test_vector_utils_testcontenthash_test_different_inputs" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_48", + "target": "controller_stocksapi_controller_listfields" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_vector_utils.py", - "source_location": "L46", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L49", "weight": 1.0, - "source": "prometheus_vector_contenthash", - "target": "tests_test_vector_utils_testcontenthash_test_hex_format" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_49", + "target": "controller_stocksapi_controller_listfields" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_relevance_score.py", - "source_location": "L21", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L30", "weight": 1.0, - "source": "prometheus_vector_getrelevancescore", - "target": "tests_test_relevance_score_testtimedecay_test_just_accessed_has_full_score" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_30", + "target": "controller_stocksapi_controller_listfields" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_relevance_score.py", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L66", + "weight": 1.0, + "source": "controller_stocksapi_controller_listfields", + "target": "stocks_api_compressor_getnest" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L27", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_27", + "target": "controller_stocksapi_controller_listfields" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", "source_location": "L26", "weight": 1.0, - "source": "prometheus_vector_getrelevancescore", - "target": "tests_test_relevance_score_testtimedecay_test_one_day_old" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_listfields", + "target": "controller_stocksapi_controller_rationale_26" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_relevance_score.py", - "source_location": "L31", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L95", "weight": 1.0, - "source": "prometheus_vector_getrelevancescore", - "target": "tests_test_relevance_score_testtimedecay_test_seven_days_old" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_95", + "target": "controller_stocksapi_controller_gethistorical" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_relevance_score.py", - "source_location": "L36", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L103", "weight": 1.0, - "source": "prometheus_vector_getrelevancescore", - "target": "tests_test_relevance_score_testtimedecay_test_thirty_days_old" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_103", + "target": "controller_stocksapi_controller_gethistorical" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_relevance_score.py", - "source_location": "L41", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L92", "weight": 1.0, - "source": "prometheus_vector_getrelevancescore", - "target": "tests_test_relevance_score_testtimedecay_test_ninety_days_old" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_92", + "target": "controller_stocksapi_controller_gethistorical" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_relevance_score.py", - "source_location": "L46", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L96", "weight": 1.0, - "source": "prometheus_vector_getrelevancescore", - "target": "tests_test_relevance_score_testtimedecay_test_one_year_old" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_96", + "target": "controller_stocksapi_controller_gethistorical" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_relevance_score.py", - "source_location": "L52", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L104", "weight": 1.0, - "source": "prometheus_vector_getrelevancescore", - "target": "tests_test_relevance_score_testtimedecay_test_score_always_positive" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_104", + "target": "controller_stocksapi_controller_gethistorical" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_relevance_score.py", - "source_location": "L61", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L105", "weight": 1.0, - "source": "prometheus_vector_getrelevancescore", - "target": "tests_test_relevance_score_testbasescoreimpact_test_high_base_beats_low_base_same_age" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_105", + "target": "controller_stocksapi_controller_gethistorical" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_relevance_score.py", - "source_location": "L69", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L85", "weight": 1.0, - "source": "prometheus_vector_getrelevancescore", - "target": "tests_test_relevance_score_testbasescoreimpact_test_frequently_used_survives_longer" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_85", + "target": "controller_stocksapi_controller_gethistorical" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_relevance_score.py", - "source_location": "L75", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L129", "weight": 1.0, - "source": "prometheus_vector_getrelevancescore", - "target": "tests_test_relevance_score_testbasescoreimpact_test_rare_old_loses_to_popular_new" + "source": "controller_stocksapi_controller_gethistorical", + "target": "stocks_api_compressor_compressresponse" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_relevance_score.py", - "source_location": "L79", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L82", "weight": 1.0, - "source": "prometheus_vector_getrelevancescore", - "target": "tests_test_relevance_score_testbasescoreimpact_test_score_capped_at_one" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_82", + "target": "controller_stocksapi_controller_gethistorical" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_relevance_score.py", - "source_location": "L87", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L66", "weight": 1.0, - "source": "prometheus_vector_getrelevancescore", - "target": "tests_test_relevance_score_testbasescoreimpact_test_equal_age_higher_base_wins" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_gethistorical", + "target": "controller_stocksapi_controller_rationale_66" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_relevance_score.py", - "source_location": "L95", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L65", "weight": 1.0, - "source": "prometheus_vector_getrelevancescore", - "target": "tests_test_relevance_score_testdecaymonotonicity_test_older_always_lower_score" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_gethistorical", + "target": "controller_stocksapi_controller_rationale_65" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_relevance_score.py", - "source_location": "L102", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L160", "weight": 1.0, - "source": "prometheus_vector_getrelevancescore", - "target": "tests_test_relevance_score_testdecaymonotonicity_test_never_accessed_uses_full_base" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_160", + "target": "controller_stocksapi_controller_getfundamental" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_relevance_score.py", - "source_location": "L110", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L168", "weight": 1.0, - "source": "prometheus_vector_getrelevancescore", - "target": "tests_test_relevance_score_testnocronneeded_test_same_memory_same_time_same_score" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_168", + "target": "controller_stocksapi_controller_getfundamental" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_relevance_score.py", - "source_location": "L117", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L157", "weight": 1.0, - "source": "prometheus_vector_getrelevancescore", - "target": "tests_test_relevance_score_testnocronneeded_test_different_times_different_scores" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_157", + "target": "controller_stocksapi_controller_getfundamental" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L32", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L161", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_scraper_b3_scraper_py", - "target": "scraper_b3_scraper_getcurrentselic" + "source": "controller_stocksapi_controller_rationale_161", + "target": "controller_stocksapi_controller_getfundamental" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L31", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L169", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_scraper_b3_scraper_py", - "target": "scraper_b3_scraper_b3scraper" + "source": "controller_stocksapi_controller_rationale_169", + "target": "controller_stocksapi_controller_getfundamental" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L51", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L167", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_scraper_b3_scraper_py", - "target": "scraper_b3_scraper_getinitialdata" + "source": "controller_stocksapi_controller_rationale_167", + "target": "controller_stocksapi_controller_getfundamental" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L106", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L165", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_scraper_b3_scraper_py", - "target": "scraper_b3_scraper_historicalrentability" + "source": "controller_stocksapi_controller_rationale_165", + "target": "controller_stocksapi_controller_getfundamental" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L129", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L155", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_scraper_b3_scraper_py", - "target": "scraper_b3_scraper_historicaldividends" + "source": "controller_stocksapi_controller_rationale_155", + "target": "controller_stocksapi_controller_getfundamental" }, { - "relation": "contains", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L196", + "weight": 1.0, + "source": "controller_stocksapi_controller_getfundamental", + "target": "stocks_api_compressor_compressresponse" + }, + { + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L160", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L144", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_scraper_b3_scraper_py", - "target": "scraper_b3_scraper_historicaldividendyields" + "source": "controller_stocksapi_controller_rationale_144", + "target": "controller_stocksapi_controller_getfundamental" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L124", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_getfundamental", + "target": "controller_stocksapi_controller_rationale_124" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L123", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_getfundamental", + "target": "controller_stocksapi_controller_rationale_123" + }, + { + "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": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L188", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L236", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_scraper_b3_scraper_py", - "target": "scraper_b3_scraper_historicalrevenue" + "source": "controller_stocksapi_controller_rationale_236", + "target": "controller_stocksapi_controller_getcotations" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L209", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L225", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_scraper_b3_scraper_py", - "target": "scraper_b3_scraper_historicalcotationprofits" + "source": "controller_stocksapi_controller_rationale_225", + "target": "controller_stocksapi_controller_getcotations" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L235", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L229", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_scraper_b3_scraper_py", - "target": "scraper_b3_scraper_historicalcotations" + "source": "controller_stocksapi_controller_rationale_229", + "target": "controller_stocksapi_controller_getcotations" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L252", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L237", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_scraper_b3_scraper_py", - "target": "scraper_b3_scraper_tagalong" + "source": "controller_stocksapi_controller_rationale_237", + "target": "controller_stocksapi_controller_getcotations" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L276", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L234", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_scraper_b3_scraper_py", - "target": "scraper_b3_scraper_stocknews" + "source": "controller_stocksapi_controller_rationale_234", + "target": "controller_stocksapi_controller_getcotations" }, { - "relation": "imports_from", - "context": "import", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L20", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L238", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_scraper_b3_scraper_py", - "target": "main_app_scraper_b3_xango_py" + "source": "controller_stocksapi_controller_rationale_238", + "target": "controller_stocksapi_controller_getcotations" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L51", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L250", "weight": 1.0, - "confidence_score": 1.0, - "source": "scraper_b3_scraper_getcurrentselic", - "target": "scraper_b3_scraper_b3scraper_init" + "source": "controller_stocksapi_controller_getcotations", + "target": "stocks_api_compressor_compressresponse" }, { - "relation": "method", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L32", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L209", "weight": 1.0, "confidence_score": 1.0, - "source": "scraper_b3_scraper_b3scraper", - "target": "scraper_b3_scraper_b3scraper_init" + "source": "controller_stocksapi_controller_rationale_209", + "target": "controller_stocksapi_controller_getcotations" }, { - "relation": "method", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L222", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L185", "weight": 1.0, "confidence_score": 1.0, - "source": "scraper_b3_scraper_b3scraper", - "target": "scraper_b3_scraper_b3scraper_historicalcotationprofits_oceans14" + "source": "controller_stocksapi_controller_getcotations", + "target": "controller_stocksapi_controller_rationale_185" }, { - "relation": "method", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L289", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L184", "weight": 1.0, "confidence_score": 1.0, - "source": "scraper_b3_scraper_b3scraper", - "target": "scraper_b3_scraper_b3scraper_fundamentalindicators" + "source": "controller_stocksapi_controller_getcotations", + "target": "controller_stocksapi_controller_rationale_184" }, { - "relation": "method", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L438", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L282", "weight": 1.0, "confidence_score": 1.0, - "source": "scraper_b3_scraper_b3scraper", - "target": "scraper_b3_scraper_b3scraper_processticker" + "source": "controller_stocksapi_controller_rationale_282", + "target": "controller_stocksapi_controller_getlivecotation" }, { - "relation": "method", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L469", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L290", "weight": 1.0, "confidence_score": 1.0, - "source": "scraper_b3_scraper_b3scraper", - "target": "scraper_b3_scraper_b3scraper_scrapestocks" + "source": "controller_stocksapi_controller_rationale_290", + "target": "controller_stocksapi_controller_getlivecotation" }, { - "relation": "method", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L519", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L279", "weight": 1.0, "confidence_score": 1.0, - "source": "scraper_b3_scraper_b3scraper", - "target": "scraper_b3_scraper_b3scraper_reordercolumns" + "source": "controller_stocksapi_controller_rationale_279", + "target": "controller_stocksapi_controller_getlivecotation" }, { - "relation": "method", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L529", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L283", "weight": 1.0, "confidence_score": 1.0, - "source": "scraper_b3_scraper_b3scraper", - "target": "scraper_b3_scraper_b3scraper_serializecomplextypes" + "source": "controller_stocksapi_controller_rationale_283", + "target": "controller_stocksapi_controller_getlivecotation" }, { - "relation": "method", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L550", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L291", "weight": 1.0, "confidence_score": 1.0, - "source": "scraper_b3_scraper_b3scraper", - "target": "scraper_b3_scraper_b3scraper_exportjson" + "source": "controller_stocksapi_controller_rationale_291", + "target": "controller_stocksapi_controller_getlivecotation" }, { - "relation": "method", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L586", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L288", "weight": 1.0, "confidence_score": 1.0, - "source": "scraper_b3_scraper_b3scraper", - "target": "scraper_b3_scraper_b3scraper_exportmysql" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/service/scraper_service.py", - "source_location": "L8", - "weight": 0.8, - "confidence_score": 0.5, - "source": "scraper_b3_scraper_b3scraper", - "target": "service_scraper_service_scraperservice" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/service/scraper_service.py", - "source_location": "L18", - "weight": 1.0, - "source": "scraper_b3_scraper_b3scraper", - "target": "service_scraper_service_runscraper" + "source": "controller_stocksapi_controller_rationale_288", + "target": "controller_stocksapi_controller_getlivecotation" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L470", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L296", "weight": 1.0, "confidence_score": 1.0, - "source": "scraper_b3_scraper_getinitialdata", - "target": "scraper_b3_scraper_b3scraper_scrapestocks" + "source": "controller_stocksapi_controller_rationale_296", + "target": "controller_stocksapi_controller_getlivecotation" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L461", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L286", "weight": 1.0, "confidence_score": 1.0, - "source": "scraper_b3_scraper_b3scraper_fundamentalindicators", - "target": "scraper_b3_scraper_b3scraper_processticker" + "source": "controller_stocksapi_controller_rationale_286", + "target": "controller_stocksapi_controller_getlivecotation" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L392", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L293", "weight": 1.0, - "source": "scraper_b3_scraper_b3scraper_fundamentalindicators", - "target": "scraper_b3_xango_calculateinvestingscore" + "source": "controller_stocksapi_controller_getlivecotation", + "target": "stocks_api_compressor_compressresponse" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L477", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L261", "weight": 1.0, "confidence_score": 1.0, - "source": "scraper_b3_scraper_b3scraper_processticker", - "target": "scraper_b3_scraper_b3scraper_scrapestocks" + "source": "controller_stocksapi_controller_rationale_261", + "target": "controller_stocksapi_controller_getlivecotation" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L513", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L233", "weight": 1.0, "confidence_score": 1.0, - "source": "scraper_b3_scraper_b3scraper_scrapestocks", - "target": "scraper_b3_scraper_b3scraper_reordercolumns" + "source": "controller_stocksapi_controller_getlivecotation", + "target": "controller_stocksapi_controller_rationale_233" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L514", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L232", "weight": 1.0, "confidence_score": 1.0, - "source": "scraper_b3_scraper_b3scraper_scrapestocks", - "target": "scraper_b3_scraper_b3scraper_serializecomplextypes" + "source": "controller_stocksapi_controller_getlivecotation", + "target": "controller_stocksapi_controller_rationale_232" }, { - "relation": "calls", - "context": "call", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L516", + "source_file": "main/controller/user_controller.py", + "source_location": "L7", "weight": 1.0, "confidence_score": 1.0, - "source": "scraper_b3_scraper_b3scraper_scrapestocks", - "target": "scraper_b3_scraper_b3scraper_exportjson" + "source": "main_controller_user_controller_py", + "target": "fastapi" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L517", + "source_file": "main/controller/user_controller.py", + "source_location": "L16", "weight": 1.0, "confidence_score": 1.0, - "source": "scraper_b3_scraper_b3scraper_scrapestocks", - "target": "scraper_b3_scraper_b3scraper_exportmysql" + "source": "main_controller_user_controller_py", + "target": "controller_user_controller_sessiontodict" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/xango.py", - "source_location": "L14", + "source_file": "main/controller/user_controller.py", + "source_location": "L15", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_scraper_b3_xango_py", - "target": "scraper_b3_xango_calculateinvestingscore" + "source": "main_controller_user_controller_py", + "target": "controller_user_controller_health" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L22", + "source_file": "main/controller/user_controller.py", + "source_location": "L19", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_cache_py", - "target": "stocks_api_cache_optimizedtypes" + "source": "main_controller_user_controller_py", + "target": "controller_user_controller_getme" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L58", + "source_file": "main/controller/user_controller.py", + "source_location": "L45", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_cache_py", - "target": "stocks_api_cache_arrowtypefor" + "source": "main_controller_user_controller_py", + "target": "controller_user_controller_testadminaccess" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L50", + "source_file": "main/controller/user_controller.py", + "source_location": "L52", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_cache_py", - "target": "stocks_api_cache_buildfeathercache" + "source": "main_controller_user_controller_py", + "target": "controller_user_controller_getsessions" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L90", + "source_file": "main/controller/user_controller.py", + "source_location": "L94", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_cache_py", - "target": "stocks_api_cache_trybuildlock" + "source": "main_controller_user_controller_py", + "target": "controller_user_controller_getcurrentsession" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L170", + "source_file": "main/controller/user_controller.py", + "source_location": "L115", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_cache_py", - "target": "stocks_api_cache_sortcacheframe" + "source": "main_controller_user_controller_py", + "target": "controller_user_controller_revokesession" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L190", + "source_file": "main/controller/user_controller.py", + "source_location": "L135", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_cache_py", - "target": "stocks_api_cache_buildtickerindex" + "source": "main_controller_user_controller_py", + "target": "controller_user_controller_revokeallsessions" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L12", + "source_file": "main/controller/user_controller.py", + "source_location": "L23", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_cache_py", - "target": "stocks_api_cache_stockscachemanager" + "source": "main_controller_user_controller_py", + "target": "controller_user_controller_upgradetodeveloperstarter" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L38", + "source_file": "main/controller/user_controller.py", + "source_location": "L34", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_cache_py", - "target": "stocks_api_cache_buildcotationdateindex" + "source": "main_controller_user_controller_py", + "target": "controller_user_controller_upgradetodeveloperenterprise" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L71", + "source_file": "main/controller/user_controller.py", + "source_location": "L67", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_cache_buildfeathercache", - "target": "stocks_api_cache_optimizedtypes" + "source": "controller_user_controller_getsessions", + "target": "controller_user_controller_sessiontodict" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L89", + "source_file": "main/controller/user_controller.py", + "source_location": "L87", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_cache_optimizedtypes", - "target": "stocks_api_cache_stockscachemanager_getcachedstocks" + "source": "controller_user_controller_getcurrentsession", + "target": "controller_user_controller_sessiontodict" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L124", + "source_file": "main/models/memory.py", + "source_location": "L8", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_cache_buildfeathercache", - "target": "stocks_api_cache_arrowtypefor" + "source": "main_models_memory_py", + "target": "models_memory_orunmilamemory" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L59", + "source_file": "main/models/memory.py", + "source_location": "L7", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_cache_rationale_59", - "target": "stocks_api_cache_arrowtypefor" + "source": "main_models_memory_py", + "target": "models_memory_prometheusmemory" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L157", + "source_file": "main/models/memory.py", + "source_location": "L7", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_cache_stockscachemanager_getcachedstocks", - "target": "stocks_api_cache_trybuildlock" + "source": "main_models_memory_py", + "target": "models_memory_usermemory" }, { - "relation": "rationale_for", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L91", + "source_file": "main/models/memory.py", + "source_location": "L8", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_cache_rationale_91", - "target": "stocks_api_cache_trybuildlock" + "source": "models_memory_orunmilamemory", + "target": "base" }, { - "relation": "calls", - "context": "call", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/models/memory.py", + "source_location": "L4", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_memory_orunmilamemory", + "target": "models_types_vectortype" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/models/memory.py", + "source_location": "L5", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_memory_orunmilamemory", + "target": "models_user_user" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/service/orunmila_service.py", + "source_location": "L9", + "weight": 0.8, + "confidence_score": 0.5, + "source": "service_orunmila_service_orunmilaservice", + "target": "models_memory_orunmilamemory" + }, + { + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L239", + "source_file": "main/models/orunmila.py", + "source_location": "L7", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_cache_stockscachemanager_loadfromfeather", - "target": "stocks_api_cache_sortcacheframe" + "source": "models_orunmila_orunmilasession", + "target": "base" }, { - "relation": "rationale_for", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L171", + "source_file": "main/models/sandbox.py", + "source_location": "L5", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_cache_rationale_171", - "target": "stocks_api_cache_sortcacheframe" + "source": "models_sandbox_orunmilasandbox", + "target": "base" }, { - "relation": "calls", - "context": "call", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L240", + "source_file": "main/models/stocksapi_key.py", + "source_location": "L7", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_cache_stockscachemanager_loadfromfeather", - "target": "stocks_api_cache_buildtickerindex" + "source": "base", + "target": "models_stocksapi_key_stocksapikey" }, { - "relation": "rationale_for", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L191", + "source_file": "main/models/user.py", + "source_location": "L5", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_cache_rationale_191", - "target": "stocks_api_cache_buildtickerindex" + "source": "base", + "target": "models_user_user" }, { - "relation": "method", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L13", + "source_file": "main/models/user_session.py", + "source_location": "L5", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "stocks_api_cache_stockscachemanager_init" + "source": "base", + "target": "models_user_session_usersession" }, { - "relation": "method", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L198", + "source_file": "main/models/memory.py", + "source_location": "L7", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "stocks_api_cache_stockscachemanager_snapshot" + "source": "models_memory_prometheusmemory", + "target": "base" }, { - "relation": "method", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L18", + "source_file": "main/models/prometheus.py", + "source_location": "L5", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "stocks_api_cache_stockscachemanager_cachescheduler" + "source": "base", + "target": "models_prometheus_prometheussession" }, { - "relation": "method", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L101", + "source_file": "main/models/sandbox.py", + "source_location": "L5", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "stocks_api_cache_stockscachemanager_loadfromfeather" + "source": "base", + "target": "models_sandbox_prometheussandbox" }, { - "relation": "method", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L28", + "source_file": "main/models/memory.py", + "source_location": "L7", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "stocks_api_cache_stockscachemanager_getcachedstocks" + "source": "base", + "target": "models_memory_usermemory" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L724", - "weight": 0.8, - "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_api_coverage_teststockscachemanager" + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "main/models/harness.py", + "source_location": "L7", + "weight": 1.0, + "confidence_score": 1.0, + "source": "base", + "target": "models_harness_loopevent" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L724", - "weight": 0.8, - "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_api_coverage_testverifyapikey" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/models/orunmila.py", + "source_location": "L7", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_models_orunmila_py", + "target": "models_orunmila_orunmilasession" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L724", + "source_file": "main/models/orunmila.py", + "source_location": "L4", "weight": 0.8, "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_api_coverage_testgeneratesecurekey" + "source": "models_orunmila_orunmilasession", + "target": "models_user_user" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/models/sandbox.py", + "source_location": "L5", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_models_sandbox_py", + "target": "models_sandbox_orunmilasandbox" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/models/sandbox.py", + "source_location": "L5", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_models_sandbox_py", + "target": "models_sandbox_prometheussandbox" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/models/stocksapi_key.py", + "source_location": "L7", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_models_stocksapi_key_py", + "target": "models_stocksapi_key_stocksapikey" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L724", + "source_file": "main/models/stocksapi_key.py", + "source_location": "L4", "weight": 0.8, "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_api_coverage_testcreatekey" + "source": "models_stocksapi_key_stocksapikey", + "target": "models_user_user" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L724", - "weight": 0.8, - "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_api_coverage_testdeserializejsoncolumns" + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/key.py", + "source_location": "L58", + "weight": 1.0, + "source": "stocks_api_key_createkey", + "target": "models_stocksapi_key_stocksapikey" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L724", + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L15", "weight": 0.8, "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_api_coverage_testfilterbysearchterms" + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_api_key_quota_atomic_testatomicquotaincrement" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L724", + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L15", "weight": 0.8, "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_api_coverage_testqueryhistorical" + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_api_key_quota_atomic_testverifyapikeyintegration" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L724", + "source_file": "tests/test_models.py", + "source_location": "L3", "weight": 0.8, "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_api_coverage_testqueryfundamental" + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_models_testusermodel" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L988", + "source_file": "tests/test_models.py", + "source_location": "L3", "weight": 0.8, "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_api_coverage_testquerycotations" + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_models_teststocksapikeymodel" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1260", + "source_file": "tests/test_models.py", + "source_location": "L3", "weight": 0.8, "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_api_coverage_testquerylivecotation" + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_models_testprometheussessionmodel" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L50", + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L43", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_api_coverage_teststockscachemanager_make_manager" + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_normal_quota_check_works" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L58", - "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_api_coverage_test_cache_scheduler_starts_apscheduler" - }, - { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L78", - "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "stocks_api_cache_stockscachemanager_putcache" - }, - { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L71", + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L70", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "stocks_api_cache_stockscachemanager_clearquerycache" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L12", - "weight": 0.8, - "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "stocks_api_query_stocksquerymanager" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_cache.py", - "source_location": "L11", - "weight": 0.8, - "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_cache_testcachelrueviction" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_cache.py", - "source_location": "L11", - "weight": 0.8, - "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_cache_testcolumnvalidator" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_cache.py", - "source_location": "L11", - "weight": 0.8, - "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_cache_testcachettllogic" + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_atomic_increment_prevents_overuse" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_cache.py", - "source_location": "L20", + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L111", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_cache_testcachelrueviction_make_manager" + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_concurrent_requests_serialized_at_db_level" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_cache.py", - "source_location": "L110", + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L145", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_cache_testcachettllogic_make_manager" + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_request_at_exact_quota_limit" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L58", + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L181", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_api_coverage_test_cache_scheduler_starts_daemon_thread" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_stocks_cache.py", - "source_location": "L10", - "weight": 0.8, - "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testtickerindex" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_stocks_cache.py", - "source_location": "L10", - "weight": 0.8, - "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testquerycaching" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_stocks_cache.py", - "source_location": "L10", - "weight": 0.8, - "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testconnectionpool" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_stocks_cache.py", - "source_location": "L10", - "weight": 0.8, - "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testlazydeserialization" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_stocks_cache.py", - "source_location": "L10", - "weight": 0.8, - "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testqueryoptimization" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_stocks_cache.py", - "source_location": "L10", - "weight": 0.8, - "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testperformancebenchmarks" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_stocks_cache.py", - "source_location": "L10", - "weight": 0.8, - "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testfilterbysearchterms" + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_multiple_keys_independent_quotas" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/test_stocks_cache.py", - "source_location": "L10", - "weight": 0.8, - "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testqueryperformance" + "confidence_score": 0.8, + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L216", + "weight": 1.0, + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_increment_from_zero" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L22", + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L240", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testtickerindex_test_tickerindex_built_after_cache_load" + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_api_key_quota_atomic_testverifyapikeyintegration_test_verify_api_key_success" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L30", + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L255", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testtickerindex_test_tickerindex_contains_all_tickers" + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_api_key_quota_atomic_testverifyapikeyintegration_test_verify_api_key_quota_exceeded" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L40", + "source_file": "tests/test_models.py", + "source_location": "L92", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testtickerindex_test_tickerindex_case_insensitive" + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_models_teststocksapikeymodel_test_create_api_key" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L49", + "source_file": "tests/test_models.py", + "source_location": "L101", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testtickerindex_test_ticker_lookup_returns_valid_index" + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_models_teststocksapikeymodel_test_is_quota_exceeded_true" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L60", + "source_file": "tests/test_models.py", + "source_location": "L107", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testtickerindex_test_tickerindex_rebuilt_on_cache_refresh" + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_models_teststocksapikeymodel_test_is_quota_exceeded_false" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L77", + "source_file": "tests/test_models.py", + "source_location": "L113", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testquerycaching_test_cache_manager_has_caches_method" + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_models_teststocksapikeymodel_test_needs_reset_true_no_last_reset" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L85", + "source_file": "tests/test_models.py", + "source_location": "L118", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testquerycaching_test_querycache_ttl_configuration" + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_models_teststocksapikeymodel_test_needs_reset_true_expired" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L93", + "source_file": "tests/test_models.py", + "source_location": "L124", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testquerycaching_test_get_cached_stocks_respects_columns_parameter" + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_models_teststocksapikeymodel_test_needs_reset_false_recent" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L142", + "source_file": "tests/test_models.py", + "source_location": "L130", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testqueryoptimization_test_all_optimizations_present" + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_models_teststocksapikeymodel_test_reset_quota" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L180", + "source_file": "tests/test_models.py", + "source_location": "L138", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testperformancebenchmarks_test_tickerindex_lookup_performance" + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_models_teststocksapikeymodel_test_increment_usage" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L200", + "source_file": "tests/test_models.py", + "source_location": "L144", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testperformancebenchmarks_test_prefix_scan_performance" + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_models_teststocksapikeymodel_test_get_remaining_quota" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L220", + "source_file": "tests/test_models.py", + "source_location": "L150", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testperformancebenchmarks_test_index_lookup_vs_scan_comparison" + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_models_teststocksapikeymodel_test_get_remaining_quota_exceeded" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L250", + "source_file": "tests/test_models.py", + "source_location": "L156", + "weight": 1.0, + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_models_teststocksapikeymodel_test_toDict" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/models/stocksapi_key.py", + "source_location": "L21", + "weight": 1.0, + "confidence_score": 1.0, + "source": "models_stocksapi_key_stocksapikey", + "target": "models_stocksapi_key_stocksapikey_isquotaexceeded" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/models/stocksapi_key.py", + "source_location": "L24", + "weight": 1.0, + "confidence_score": 1.0, + "source": "models_stocksapi_key_stocksapikey", + "target": "models_stocksapi_key_stocksapikey_needsreset" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/models/stocksapi_key.py", + "source_location": "L32", + "weight": 1.0, + "confidence_score": 1.0, + "source": "models_stocksapi_key_stocksapikey", + "target": "models_stocksapi_key_stocksapikey_resetquota" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/models/stocksapi_key.py", + "source_location": "L36", + "weight": 1.0, + "confidence_score": 1.0, + "source": "models_stocksapi_key_stocksapikey", + "target": "models_stocksapi_key_stocksapikey_incrementusage" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/models/stocksapi_key.py", + "source_location": "L39", + "weight": 1.0, + "confidence_score": 1.0, + "source": "models_stocksapi_key_stocksapikey", + "target": "models_stocksapi_key_stocksapikey_getremainingquota" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/models/stocksapi_key.py", + "source_location": "L42", + "weight": 1.0, + "confidence_score": 1.0, + "source": "models_stocksapi_key_stocksapikey", + "target": "models_stocksapi_key_stocksapikey_todict" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/models/stocksapi_key.py", + "source_location": "L18", + "weight": 1.0, + "confidence_score": 1.0, + "source": "models_stocksapi_key_stocksapikey", + "target": "models_stocksapi_key_stocksapikey_repr" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/models/types.py", + "source_location": "L5", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_models_types_py", + "target": "models_types_vectortype" + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "main/models/types.py", + "source_location": "L5", + "weight": 1.0, + "confidence_score": 1.0, + "source": "models_types_vectortype", + "target": "typedecorator" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/models/types.py", + "source_location": "L9", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testperformancebenchmarks_test_querycache_performance" + "confidence_score": 1.0, + "source": "models_types_vectortype", + "target": "models_types_vectortype_init" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L273", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/models/types.py", + "source_location": "L13", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testperformancebenchmarks_test_column_projection_performance" + "confidence_score": 1.0, + "source": "models_types_vectortype", + "target": "models_types_vectortype_process_bind_param" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L289", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/models/types.py", + "source_location": "L21", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testperformancebenchmarks_test_cache_initialization_time" + "confidence_score": 1.0, + "source": "models_types_vectortype", + "target": "models_types_vectortype_process_result_value" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L22", - "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testtickerindex_test_tickerIndex_built_after_cache_load" + "source_file": "main/models/memory.py", + "source_location": "L4", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_memory_prometheusmemory", + "target": "models_types_vectortype" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L30", - "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testtickerindex_test_tickerIndex_contains_all_tickers" + "source_file": "tests/test_memory_types.py", + "source_location": "L3", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_types_vectortype", + "target": "tests_test_memory_types_testvectortype" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L40", + "source_file": "tests/test_memory_types.py", + "source_location": "L9", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testtickerindex_test_tickerIndex_case_insensitive" + "source": "models_types_vectortype", + "target": "tests_test_memory_types_testvectortype_test_roundtrip" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L60", + "source_file": "tests/test_memory_types.py", + "source_location": "L19", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testtickerindex_test_tickerIndex_rebuilt_on_cache_refresh" + "source": "models_types_vectortype", + "target": "tests_test_memory_types_testvectortype_test_none_roundtrip" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L85", + "source_file": "tests/test_memory_types.py", + "source_location": "L25", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testquerycaching_test_queryCache_ttl_configuration" + "source": "models_types_vectortype", + "target": "tests_test_memory_types_testvectortype_test_wrong_dims_raises" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L180", + "source_file": "tests/test_memory_types.py", + "source_location": "L31", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testperformancebenchmarks_test_tickerIndex_lookup_performance" + "source": "models_types_vectortype", + "target": "tests_test_memory_types_testvectortype_test_preserves_negative_values" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L250", + "source_file": "tests/test_memory_types.py", + "source_location": "L39", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testperformancebenchmarks_test_queryCache_performance" + "source": "models_types_vectortype", + "target": "tests_test_memory_types_testvectortype_test_large_random_vector" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L10", + "source_file": "main/models/memory.py", + "source_location": "L4", "weight": 0.8, "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testtickerindex" + "source": "models_types_vectortype", + "target": "models_memory_usermemory" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L10", - "weight": 0.8, - "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testquerycaching" + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "main/models/memory_types.py", + "source_location": "L5", + "weight": 1.0, + "confidence_score": 1.0, + "source": "typedecorator", + "target": "models_memory_types_vectortype" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/models/user.py", + "source_location": "L5", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_models_user_py", + "target": "models_user_user" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L10", + "source_file": "main/models/user_session.py", + "source_location": "L4", "weight": 0.8, "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testconnectionpool" + "source": "models_user_session_usersession", + "target": "models_user_user" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L10", + "source_file": "main/models/memory.py", + "source_location": "L5", "weight": 0.8, "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testlazydeserialization" + "source": "models_memory_prometheusmemory", + "target": "models_user_user" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L10", + "source_file": "main/models/prometheus.py", + "source_location": "L4", "weight": 0.8, "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testqueryoptimization" + "source": "models_prometheus_prometheussession", + "target": "models_user_user" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L10", + "source_file": "tests/test_models.py", + "source_location": "L2", "weight": 0.8, "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testperformancebenchmarks" + "source": "models_user_user", + "target": "tests_test_models_testusermodel" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L10", + "source_file": "tests/test_models.py", + "source_location": "L2", "weight": 0.8, "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testfilterbysearchterms" + "source": "models_user_user", + "target": "tests_test_models_teststocksapikeymodel" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L10", + "source_file": "tests/test_models.py", + "source_location": "L2", "weight": 0.8, "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testqueryperformance" + "source": "models_user_user", + "target": "tests_test_models_testprometheussessionmodel" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L22", + "source_file": "tests/test_models.py", + "source_location": "L9", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testtickerindex_test_tickerIndex_built_after_cache_load" + "source": "models_user_user", + "target": "tests_test_models_testusermodel_test_create_user" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L30", + "source_file": "tests/test_models.py", + "source_location": "L19", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testtickerindex_test_tickerIndex_contains_all_tickers" + "source": "models_user_user", + "target": "tests_test_models_testusermodel_test_get_roles_list_default" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L40", + "source_file": "tests/test_models.py", + "source_location": "L24", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testtickerindex_test_tickerIndex_case_insensitive" + "source": "models_user_user", + "target": "tests_test_models_testusermodel_test_get_roles_list_single_role" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L49", + "source_file": "tests/test_models.py", + "source_location": "L29", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testtickerindex_test_ticker_lookup_returns_valid_index" + "source": "models_user_user", + "target": "tests_test_models_testusermodel_test_get_roles_list_multiple_roles" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L60", + "source_file": "tests/test_models.py", + "source_location": "L37", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testtickerindex_test_tickerIndex_rebuilt_on_cache_refresh" + "source": "models_user_user", + "target": "tests_test_models_testusermodel_test_add_role_new" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L77", + "source_file": "tests/test_models.py", + "source_location": "L43", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testquerycaching_test_cache_manager_has_caches_method" + "source": "models_user_user", + "target": "tests_test_models_testusermodel_test_add_role_existing" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L85", + "source_file": "tests/test_models.py", + "source_location": "L63", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testquerycaching_test_queryCache_ttl_configuration" + "source": "models_user_user", + "target": "tests_test_models_testusermodel_test_has_role_true" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L93", + "source_file": "tests/test_models.py", + "source_location": "L68", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testquerycaching_test_get_cached_stocks_respects_columns_parameter" + "source": "models_user_user", + "target": "tests_test_models_testusermodel_test_has_role_false" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L142", + "source_file": "tests/test_models.py", + "source_location": "L75", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testqueryoptimization_test_all_optimizations_present" + "source": "models_user_user", + "target": "tests_test_models_testusermodel_test_has_role_with_enum" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L180", + "source_file": "tests/test_models.py", + "source_location": "L80", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testperformancebenchmarks_test_tickerIndex_lookup_performance" + "source": "models_user_user", + "target": "tests_test_models_testusermodel_test_toDict" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L200", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/models/user.py", + "source_location": "L22", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testperformancebenchmarks_test_prefix_scan_performance" + "confidence_score": 1.0, + "source": "models_user_user", + "target": "models_user_user_getroleslist" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L220", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/models/user.py", + "source_location": "L27", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testperformancebenchmarks_test_index_lookup_vs_scan_comparison" + "confidence_score": 1.0, + "source": "models_user_user", + "target": "models_user_user_addrole" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L250", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/models/user.py", + "source_location": "L43", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testperformancebenchmarks_test_queryCache_performance" + "confidence_score": 1.0, + "source": "models_user_user", + "target": "models_user_user_hasrole" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L273", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/models/user.py", + "source_location": "L48", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testperformancebenchmarks_test_column_projection_performance" + "confidence_score": 1.0, + "source": "models_user_user", + "target": "models_user_user_todict" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/models/user.py", + "source_location": "L19", + "weight": 1.0, + "confidence_score": 1.0, + "source": "models_user_user", + "target": "models_user_user_repr" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/models/user.py", + "source_location": "L35", + "weight": 1.0, + "confidence_score": 1.0, + "source": "models_user_user", + "target": "models_user_user_removerole" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L289", + "source_file": "tests/test_models.py", + "source_location": "L50", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testperformancebenchmarks_test_cache_initialization_time" + "source": "models_user_user", + "target": "tests_test_models_testusermodel_test_remove_role_existing" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L223", + "source_file": "tests/test_models.py", + "source_location": "L57", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager_cachescheduler", - "target": "utils_scheduler_registerjob" + "source": "models_user_user", + "target": "tests_test_models_testusermodel_test_remove_role_last_role" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L29", + "source_file": "main/models/user_session.py", + "source_location": "L5", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_cache_stockscachemanager_cachescheduler", - "target": "stocks_api_cache_stockscachemanager_getcachedstocks" + "source": "main_models_user_session_py", + "target": "models_user_session_usersession" }, { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L122", - "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_cache_stockscachemanager_getcachedstocks", - "target": "stocks_api_cache_stockscachemanager_loadfromfeather" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/service/user_service.py", + "source_location": "L8", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_user_session_usersession", + "target": "service_user_service_userservice" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_sessions.py", + "source_location": "L7", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testusersessionmodel" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_sessions.py", + "source_location": "L8", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testsessionexpiration" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L115", + "source_file": "tests/test_sessions.py", + "source_location": "L56", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager_loadfromfeather", - "target": "stocks_api_compress_rebuildabbrevs" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testusersessionmodel_test_getdevicename_with_browser_and_os" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L91", + "source_file": "tests/test_sessions.py", + "source_location": "L69", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager_getcachedstocks", - "target": "stocks_api_compress_rebuildabbrevs" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testusersessionmodel_test_getdevicename_with_fingerprint_only" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L95", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_sessions.py", + "source_location": "L81", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_cache_stockscachemanager_getcachedstocks", - "target": "stocks_api_cache_buildcotationdateindex" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testusersessionmodel_test_getdevicename_fallback" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L64", + "source_file": "tests/test_sessions.py", + "source_location": "L94", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager_getcachedstocks", - "target": "stocks_api_compressor_rebuildabbrevs" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testusersessionmodel_test_getdevicename_empty_strings" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L71", - "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_cache_stockscachemanager_getcachedstocks", - "target": "stocks_api_cache_stockscachemanager_putcache" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L33", - "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_cache_stockscachemanager_getcachedstocks", - "target": "stocks_api_cache_rationale_33" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L25", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_stocks_api_compress_py", - "target": "stocks_api_compress_getabbr" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L36", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_sessions.py", + "source_location": "L108", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_stocks_api_compress_py", - "target": "stocks_api_compress_getnest" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testusersessionmodel_test_isactive_default" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L46", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_sessions.py", + "source_location": "L112", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_stocks_api_compress_py", - "target": "stocks_api_compress_rebuildabbrevs" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testusersessionmodel_test_isactive_can_be_false" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L59", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_sessions.py", + "source_location": "L156", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_stocks_api_compress_py", - "target": "stocks_api_compress_compactvalue" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testsessionexpiration_test_session_can_expire" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L98", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_sessions.py", + "source_location": "L175", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_stocks_api_compress_py", - "target": "stocks_api_compress_compactrow" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testsessionexpiration_test_session_still_valid_within_expiry" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L126", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_sessions.py", + "source_location": "L193", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_stocks_api_compress_py", - "target": "stocks_api_compress_compactcotations" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testsessionexpiration_test_session_exactly_at_boundary" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L160", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_sessions.py", + "source_location": "L210", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_stocks_api_compress_py", - "target": "stocks_api_compress_compressresponse" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testsessionexpiration_test_created_at_future_date" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L51", + "source_file": "main/models/user_session.py", + "source_location": "L38", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_compress_py", - "target": "stocks_api_compress_walk" + "source": "models_user_session_usersession", + "target": "models_user_session_usersession_getdevicename" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L80", + "source_file": "main/models/user_session.py", + "source_location": "L22", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_compress_py", - "target": "stocks_api_compress_tocolumnar" + "source": "models_user_session_usersession", + "target": "models_user_session_usersession_repr" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L89", + "source_file": "main/models/user_session.py", + "source_location": "L25", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_compress_py", - "target": "stocks_api_compress_fixheaders" + "source": "models_user_session_usersession", + "target": "models_user_session_usersession_todict" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L177", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_sessions.py", + "source_location": "L12", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_compress_compressresponse", - "target": "stocks_api_compress_getabbr" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testusersessionmodel_test_repr" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L29", + "source_file": "tests/test_sessions.py", + "source_location": "L17", "weight": 1.0, - "source": "stocks_api_compress_getabbr", - "target": "stocks_api_util_categorizecolumns" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testusersessionmodel_test_toDict_basic" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L30", + "source_file": "tests/test_sessions.py", + "source_location": "L34", "weight": 1.0, - "source": "stocks_api_compress_getabbr", - "target": "stocks_api_util_generateabbreviations" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testusersessionmodel_test_toDict_with_sensitive" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L177", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_sessions.py", + "source_location": "L45", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_compress_compressresponse", - "target": "stocks_api_compress_getnest" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testusersessionmodel_test_toDict_hides_useragent" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L40", + "source_file": "tests/test_sessions.py", + "source_location": "L118", "weight": 1.0, - "source": "stocks_api_compress_getnest", - "target": "stocks_api_util_detectnestedfields" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testusersessionmodel_test_todict_with_timestamps" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L69", + "source_file": "tests/test_sessions.py", + "source_location": "L132", "weight": 1.0, - "source": "controller_stocksapi_controller_listfields", - "target": "stocks_api_compress_getnest" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testusersessionmodel_test_todict_without_timestamps" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L147", + "source_file": "main/service/authentication_service.py", + "source_location": "L9", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_compress_compactcotations", - "target": "stocks_api_compress_compactvalue" + "source": "main_service_authentication_service_py", + "target": "service_authentication_service_authenticationservice" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L178", + "source_file": "main/service/authentication_service.py", + "source_location": "L11", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_compress_compressresponse", - "target": "stocks_api_compress_compactrow" + "source": "main_service_authentication_service_py", + "target": "service_authentication_service_initialize" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/service/authentication_service.py", + "source_location": "L6", + "weight": 0.8, + "confidence_score": 0.5, + "source": "service_authentication_service_authenticationservice", + "target": "utils_service_manager_servicemanager" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L116", + "source_file": "main/service/authentication_service.py", + "source_location": "L12", "weight": 1.0, - "source": "stocks_api_compress_compactrow", - "target": "stocks_api_response_cache_responsecache_set" + "source": "service_authentication_service_initialize", + "target": "utils_service_manager_getapp" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L169", + "source_file": "main/service/orunmila_service.py", + "source_location": "L23", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_compress_compressresponse", - "target": "stocks_api_compress_compactcotations" + "source": "main_service_orunmila_service_py", + "target": "service_orunmila_service_memorymaintenance" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L140", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/orunmila_service.py", + "source_location": "L65", "weight": 1.0, - "source": "controller_stocksapi_controller_gethistorical", - "target": "stocks_api_compress_compressresponse" + "confidence_score": 1.0, + "source": "main_service_orunmila_service_py", + "target": "service_orunmila_service_orunmilaservice" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/orunmila_service.py", + "source_location": "L67", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_orunmila_service_py", + "target": "service_orunmila_service_initialize" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L215", + "source_file": "main/service/orunmila_service.py", + "source_location": "L68", "weight": 1.0, - "source": "controller_stocksapi_controller_getfundamental", - "target": "stocks_api_compress_compressresponse" + "source": "service_orunmila_service_initialize", + "target": "utils_service_manager_getapp" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L275", + "source_file": "main/service/orunmila_service.py", + "source_location": "L71", "weight": 1.0, - "source": "controller_stocksapi_controller_getcotations", - "target": "stocks_api_compress_compressresponse" + "source": "service_orunmila_service_initialize", + "target": "models_loader_getembeddingmodel" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L318", + "source_file": "main/service/orunmila_service.py", + "source_location": "L73", "weight": 1.0, - "source": "controller_stocksapi_controller_getlivecotation", - "target": "stocks_api_compress_compressresponse" + "source": "service_orunmila_service_initialize", + "target": "utils_scheduler_registerjob" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L179", + "source_file": "main/service/scraper_service.py", + "source_location": "L14", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_compress_compressresponse", - "target": "stocks_api_compress_walk" + "source": "main_service_scraper_service_py", + "target": "service_scraper_service_runscraper" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L181", + "source_file": "main/service/scraper_service.py", + "source_location": "L22", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_compress_compressresponse", - "target": "stocks_api_compress_tocolumnar" + "source": "main_service_scraper_service_py", + "target": "service_scraper_service_registerscraperjobs" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L185", + "source_file": "main/service/scraper_service.py", + "source_location": "L25", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_compress_compressresponse", - "target": "stocks_api_compress_fixheaders" + "source": "main_service_scraper_service_py", + "target": "service_scraper_service_scraperservice" }, { - "relation": "imports_from", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/key.py", - "source_location": "L3", + "source_file": "main/service/scraper_service.py", + "source_location": "L27", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_key_py", - "target": "fastapi" + "source": "main_service_scraper_service_py", + "target": "service_scraper_service_initialize" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/key.py", - "source_location": "L14", + "source_file": "main/service/scraper_service.py", + "source_location": "L60", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_key_py", - "target": "stocks_api_key_verifyapikey" + "source": "service_scraper_service_initialize", + "target": "service_scraper_service_registerscraperjobs" }, { - "relation": "contains", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/service/scraper_service.py", + "source_location": "L42", + "weight": 1.0, + "source": "service_scraper_service_registerscraperjobs", + "target": "utils_scheduler_registerjob" + }, + { + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/key.py", - "source_location": "L16", + "source_file": "main/service/scraper_service.py", + "source_location": "L23", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_key_py", - "target": "stocks_api_key_hashkey" + "source": "service_scraper_service_rationale_23", + "target": "service_scraper_service_registerscraperjobs" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/key.py", - "source_location": "L44", + "source_file": "main/service/stocksapi_service.py", + "source_location": "L10", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_key_py", - "target": "stocks_api_key_generatesecurekey" + "source": "main_service_stocksapi_service_py", + "target": "service_stocksapi_service_mcpdetectmiddleware" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/key.py", - "source_location": "L47", + "source_file": "main/service/stocksapi_service.py", + "source_location": "L6", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_key_py", - "target": "stocks_api_key_createkey" + "source": "main_service_stocksapi_service_py", + "target": "service_stocksapi_service_stocksapiservice" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/key.py", - "source_location": "L22", + "source_file": "main/service/stocksapi_service.py", + "source_location": "L8", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_key_py", - "target": "stocks_api_key_isquotaexceeded" + "source": "main_service_stocksapi_service_py", + "target": "service_stocksapi_service_initialize" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/key.py", - "source_location": "L26", + "source_file": "main/service/stocksapi_service.py", + "source_location": "L11", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_key_py", - "target": "stocks_api_key_needsreset" + "source": "service_stocksapi_service_mcpdetectmiddleware", + "target": "service_stocksapi_service_mcpdetectmiddleware_init" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/key.py", - "source_location": "L37", + "source_file": "main/service/stocksapi_service.py", + "source_location": "L14", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_key_py", - "target": "stocks_api_key_resetquota" + "source": "service_stocksapi_service_mcpdetectmiddleware", + "target": "service_stocksapi_service_mcpdetectmiddleware_call" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/service/stocksapi_service.py", + "source_location": "L4", + "weight": 0.8, + "confidence_score": 0.5, + "source": "service_stocksapi_service_mcpdetectmiddleware", + "target": "utils_service_manager_servicemanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/service/stocksapi_service.py", + "source_location": "L1", + "weight": 0.8, + "confidence_score": 0.5, + "source": "service_stocksapi_service_stocksapiservice", + "target": "utils_service_manager_servicemanager" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/service/stocksapi_service.py", + "source_location": "L29", + "weight": 1.0, + "source": "service_stocksapi_service_initialize", + "target": "utils_service_manager_getapp" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/key.py", - "source_location": "L42", + "source_file": "main/service/user_service.py", + "source_location": "L16", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_key_py", - "target": "stocks_api_key_incrementusage" + "source": "main_service_user_service_py", + "target": "service_user_service_removeinactivesessions" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/key.py", - "source_location": "L46", + "source_file": "main/service/user_service.py", + "source_location": "L4", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_key_py", - "target": "stocks_api_key_getremainingquota" + "source": "main_service_user_service_py", + "target": "service_user_service_userservice" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/key.py", - "source_location": "L50", + "source_file": "main/service/user_service.py", + "source_location": "L6", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_key_py", - "target": "stocks_api_key_keytodict" + "source": "main_service_user_service_py", + "target": "service_user_service_initialize" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/key.py", - "source_location": "L16", + "source_file": "main/service/user_service.py", + "source_location": "L46", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_key_py", - "target": "stocks_api_key_hash_key" + "source": "main_service_user_service_py", + "target": "service_user_service_registersessioncleanupjobs" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/key.py", - "source_location": "L27", + "source_file": "main/service/user_service.py", + "source_location": "L33", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_key_hashkey", - "target": "stocks_api_key_verifyapikey" + "source": "main_service_user_service_py", + "target": "service_user_service_inactivesessionsscheduler" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/service/user_service.py", + "source_location": "L1", + "weight": 0.8, + "confidence_score": 0.5, + "source": "service_user_service_userservice", + "target": "utils_service_manager_servicemanager" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L247", + "source_file": "main/service/user_service.py", + "source_location": "L42", "weight": 1.0, - "source": "stocks_api_key_verifyapikey", - "target": "tests_test_api_key_quota_atomic_testverifyapikeyintegration_test_verify_api_key_success" + "source": "service_user_service_initialize", + "target": "utils_service_manager_getapp" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L263", + "source_file": "main/service/user_service.py", + "source_location": "L48", "weight": 1.0, - "source": "stocks_api_key_verifyapikey", - "target": "tests_test_api_key_quota_atomic_testverifyapikeyintegration_test_verify_api_key_quota_exceeded" + "source": "service_user_service_initialize", + "target": "utils_scheduler_registerjob" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L274", + "confidence": "EXTRACTED", + "source_file": "main/service/user_service.py", + "source_location": "L72", "weight": 1.0, - "source": "stocks_api_key_verifyapikey", - "target": "tests_test_api_key_quota_atomic_testverifyapikeyintegration_test_verify_api_key_invalid" + "confidence_score": 1.0, + "source": "service_user_service_initialize", + "target": "service_user_service_registersessioncleanupjobs" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/connectivity.py", + "source_location": "L13", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_connectivity_py", + "target": "utils_connectivity_checkdatabaseconnection" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/connectivity.py", + "source_location": "L51", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_connectivity_py", + "target": "utils_connectivity_checkserviceconnection" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/connectivity.py", + "source_location": "L13", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_connectivity_py", + "target": "utils_connectivity_checkmysqlconnection" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/connectivity.py", + "source_location": "L13", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_connectivity_py", + "target": "utils_connectivity_checksingledb" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L285", + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L112", "weight": 1.0, - "source": "stocks_api_key_verifyapikey", - "target": "tests_test_api_key_quota_atomic_testverifyapikeyintegration_test_verify_api_key_missing" + "source": "utils_connectivity_checkserviceconnection", + "target": "tests_test_connectivity_coverage_test_service_not_found" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L295", + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L124", "weight": 1.0, - "source": "stocks_api_key_verifyapikey", - "target": "tests_test_api_key_quota_atomic_testverifyapikeyintegration_test_verify_api_key_disabled" + "source": "utils_connectivity_checkserviceconnection", + "target": "tests_test_connectivity_coverage_test_stocks_api_health_ok" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L239", + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L139", "weight": 1.0, - "source": "stocks_api_key_verifyapikey", - "target": "tests_test_stocks_api_coverage_test_verify_api_key_disabled_returns_none" + "source": "utils_connectivity_checkserviceconnection", + "target": "tests_test_connectivity_coverage_test_non_stocks_prefix" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L252", + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L154", "weight": 1.0, - "source": "stocks_api_key_verifyapikey", - "target": "tests_test_stocks_api_coverage_test_verify_api_key_missing_raises_401" + "source": "utils_connectivity_checkserviceconnection", + "target": "tests_test_connectivity_coverage_test_non_200_status" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L266", + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L164", "weight": 1.0, - "source": "stocks_api_key_verifyapikey", - "target": "tests_test_stocks_api_coverage_test_verify_api_key_invalid_key_raises_401" + "source": "utils_connectivity_checkserviceconnection", + "target": "tests_test_connectivity_coverage_test_connection_error" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L282", + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L174", "weight": 1.0, - "source": "stocks_api_key_verifyapikey", - "target": "tests_test_stocks_api_coverage_test_verify_api_key_quota_exceeded" + "source": "utils_connectivity_checkserviceconnection", + "target": "tests_test_connectivity_coverage_test_timeout" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L296", + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L184", "weight": 1.0, - "source": "stocks_api_key_verifyapikey", - "target": "tests_test_stocks_api_coverage_test_verify_api_key_success" + "source": "utils_connectivity_checkserviceconnection", + "target": "tests_test_connectivity_coverage_test_request_exception" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L314", + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L194", "weight": 1.0, - "source": "stocks_api_key_verifyapikey", - "target": "tests_test_stocks_api_coverage_test_verify_api_key_http_exception_rollback" + "source": "utils_connectivity_checkserviceconnection", + "target": "tests_test_connectivity_coverage_test_generic_exception" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L329", - "weight": 1.0, - "source": "stocks_api_key_verifyapikey", - "target": "tests_test_stocks_api_coverage_test_verify_api_key_generic_exception_rollback" - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/key.py", - "source_location": "L28", + "source_file": "main/utils/connectivity.py", + "source_location": "L66", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_key_verifyapikey", - "target": "stocks_api_key_hash_key" + "source": "utils_connectivity_checkserviceconnection", + "target": "utils_http_session_get_session" }, { "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L2", + "source_file": "main/utils/errors.py", + "source_location": "L5", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_query_py", + "source": "main_utils_errors_py", "target": "fastapi" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L16", + "source_file": "main/utils/errors.py", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_query_py", - "target": "stocks_api_query_sanitizenanvalues" + "source": "main_utils_errors_py", + "target": "utils_errors_errorresponse" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L49", + "source_file": "main/utils/errors.py", + "source_location": "L21", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_query_py", - "target": "stocks_api_query_filtercotationcolumn" + "source": "main_utils_errors_py", + "target": "utils_errors_requestcontextfilter" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L53", + "source_file": "main/utils/errors.py", + "source_location": "L27", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_query_py", - "target": "stocks_api_query_baseframe" + "source": "main_utils_errors_py", + "target": "utils_errors_builderrorresponse" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L66", + "source_file": "main/utils/errors.py", + "source_location": "L37", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_query_py", - "target": "stocks_api_query_validatefields" + "source": "main_utils_errors_py", + "target": "utils_errors_httpexceptionhandler" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L79", + "source_file": "main/utils/errors.py", + "source_location": "L44", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_query_py", - "target": "stocks_api_query_envelope" + "source": "main_utils_errors_py", + "target": "utils_errors_validationexceptionhandler" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L90", + "source_file": "main/utils/errors.py", + "source_location": "L56", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_query_py", - "target": "stocks_api_query_finalize" + "source": "main_utils_errors_py", + "target": "utils_errors_genericexceptionhandler" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L123", + "source_file": "main/utils/errors.py", + "source_location": "L65", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_query_py", - "target": "stocks_api_query_deserializejsoncolumns" + "source": "main_utils_errors_py", + "target": "utils_errors_registererrorhandlers" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L151", + "source_file": "main/utils/errors.py", + "source_location": "L29", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_query_py", - "target": "stocks_api_query_filterbysearchterms" + "source": "main_utils_errors_py", + "target": "utils_errors_build_error_response" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L169", + "source_file": "main/utils/errors.py", + "source_location": "L38", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_query_py", - "target": "stocks_api_query_queryhistorical" + "source": "main_utils_errors_py", + "target": "utils_errors_http_exception_handler" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L226", + "source_file": "main/utils/errors.py", + "source_location": "L45", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_query_py", - "target": "stocks_api_query_queryfundamental" + "source": "main_utils_errors_py", + "target": "utils_errors_validation_exception_handler" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L284", + "source_file": "main/utils/errors.py", + "source_location": "L57", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_query_py", - "target": "stocks_api_query_querycotations" + "source": "main_utils_errors_py", + "target": "utils_errors_generic_exception_handler" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L332", + "source_file": "main/utils/errors.py", + "source_location": "L66", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_query_py", - "target": "stocks_api_query_istransientliveerror" + "source": "main_utils_errors_py", + "target": "utils_errors_register_error_handlers" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L347", + "source_file": "main/utils/errors.py", + "source_location": "L28", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_query_py", - "target": "stocks_api_query_fetchlivepayload" + "source": "utils_errors_errorresponse", + "target": "utils_errors_builderrorresponse" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L325", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_error_handlers.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_errors_errorresponse", + "target": "tests_test_error_handlers_samplebody" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_error_handlers.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_errors_errorresponse", + "target": "tests_test_error_handlers_testerrorresponsemodel" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_error_handlers.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_errors_errorresponse", + "target": "tests_test_error_handlers_testrequestcontextfilter" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_error_handlers.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_errors_errorresponse", + "target": "tests_test_error_handlers_testhttpexceptionhandler" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_error_handlers.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_errors_errorresponse", + "target": "tests_test_error_handlers_testvalidationexceptionhandler" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_error_handlers.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_errors_errorresponse", + "target": "tests_test_error_handlers_testgenericexceptionhandler" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_error_handlers.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_errors_errorresponse", + "target": "tests_test_error_handlers_testsuccesspassthrough" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_error_handlers.py", + "source_location": "L56", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_stocks_api_query_py", - "target": "stocks_api_query_querylivecotation" + "source": "utils_errors_errorresponse", + "target": "tests_test_error_handlers_testerrorresponsemodel_test_error_response_structure" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L14", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_error_handlers.py", + "source_location": "L65", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_stocks_api_query_py", - "target": "stocks_api_query_stocksquerymanager" + "source": "utils_errors_errorresponse", + "target": "tests_test_error_handlers_testerrorresponsemodel_test_error_response_with_detail_and_request_id" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L40", + "source_file": "main/utils/errors.py", + "source_location": "L30", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_query_py", - "target": "stocks_api_query_parsecotationdates" + "source": "utils_errors_errorresponse", + "target": "utils_errors_build_error_response" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L49", + "source_file": "main/utils/errors.py", + "source_location": "L24", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_query_py", - "target": "stocks_api_query_filtercotationdata" + "source": "utils_errors_requestcontextfilter", + "target": "utils_errors_requestcontextfilter_filter" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L45", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/utils/logging_config.py", + "source_location": "L9", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_errors_requestcontextfilter", + "target": "utils_logging_config_discordhandler" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/utils/logging_config.py", + "source_location": "L20", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_stocks_api_query_py", - "target": "stocks_api_query_parsecotationdate" + "source": "utils_errors_requestcontextfilter", + "target": "utils_logging_config_setuplogging" }, { - "relation": "contains", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_error_handlers.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_errors_requestcontextfilter", + "target": "tests_test_error_handlers_samplebody" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_error_handlers.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_errors_requestcontextfilter", + "target": "tests_test_error_handlers_testerrorresponsemodel" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_error_handlers.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_errors_requestcontextfilter", + "target": "tests_test_error_handlers_testrequestcontextfilter" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_error_handlers.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_errors_requestcontextfilter", + "target": "tests_test_error_handlers_testhttpexceptionhandler" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_error_handlers.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_errors_requestcontextfilter", + "target": "tests_test_error_handlers_testvalidationexceptionhandler" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_error_handlers.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_errors_requestcontextfilter", + "target": "tests_test_error_handlers_testgenericexceptionhandler" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_error_handlers.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_errors_requestcontextfilter", + "target": "tests_test_error_handlers_testsuccesspassthrough" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_error_handlers.py", + "source_location": "L78", + "weight": 1.0, + "source": "utils_errors_requestcontextfilter", + "target": "tests_test_error_handlers_testrequestcontextfilter_test_injects_request_id_from_contextvar" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_error_handlers.py", + "source_location": "L87", + "weight": 1.0, + "source": "utils_errors_requestcontextfilter", + "target": "tests_test_error_handlers_testrequestcontextfilter_test_empty_request_id_default" + }, + { + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L55", + "source_file": "main/utils/errors.py", + "source_location": "L22", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_query_py", - "target": "stocks_api_query_filtercotationbydate" + "source": "utils_errors_requestcontextfilter", + "target": "utils_errors_rationale_22" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L86", + "source_file": "main/utils/errors.py", + "source_location": "L40", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_query_envelope", - "target": "stocks_api_query_sanitizenanvalues" + "source": "utils_errors_builderrorresponse", + "target": "utils_errors_httpexceptionhandler" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L142", + "source_file": "main/utils/errors.py", + "source_location": "L52", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_query_deserializejsoncolumns", - "target": "stocks_api_query_sanitizenanvalues" + "source": "utils_errors_builderrorresponse", + "target": "utils_errors_validationexceptionhandler" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L106", + "source_file": "main/utils/errors.py", + "source_location": "L61", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_query_stocksquerymanager_finalize", - "target": "stocks_api_query_sanitizenanvalues" + "source": "utils_errors_builderrorresponse", + "target": "utils_errors_genericexceptionhandler" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/conftest.py", + "source_location": "L84", + "weight": 1.0, + "source": "utils_errors_registererrorhandlers", + "target": "tests_conftest_stocks_http_client" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/conftest.py", "source_location": "L93", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_query_stocksquerymanager_deserializejsoncolumns", - "target": "stocks_api_query_sanitizenanvalues" + "source": "utils_errors_registererrorhandlers", + "target": "tests_conftest_client" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L153", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L31", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_query_sanitizenanvalues", - "target": "stocks_api_query_stocksquerymanager_queryhistorical" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_make_auth_client" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L225", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L46", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_query_sanitizenanvalues", - "target": "stocks_api_query_stocksquerymanager_queryfundamental" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_make_user_client" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L336", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L66", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_query_sanitizenanvalues", - "target": "stocks_api_query_stocksquerymanager_querycotations" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_make_prometheus_client" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L119", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L87", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_query_finalize", - "target": "stocks_api_query_filtercotationcolumn" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_make_stocksapi_client" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L99", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L685", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_query_stocksquerymanager_finalize", - "target": "stocks_api_query_filtercotationcolumn" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_testgetsessions_test_get_sessions" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L326", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L731", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_query_filtercotationcolumn", - "target": "stocks_api_query_stocksquerymanager_querycotations" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_testgetcurrentsession_test_get_current_session_found" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1421", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L754", "weight": 1.0, - "source": "stocks_api_query_filtercotationcolumn", - "target": "tests_test_stocks_api_coverage_testquerylivecotation_test_cotations_filter_cotation_column_filters_by_date" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_testgetcurrentsession_test_get_current_session_not_found" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1440", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L784", "weight": 1.0, - "source": "stocks_api_query_filtercotationcolumn", - "target": "tests_test_stocks_api_coverage_testquerylivecotation_test_cotations_filter_cotation_column_range" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_testrevokesession_test_revoke_session_success" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1449", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L807", "weight": 1.0, - "source": "stocks_api_query_filtercotationcolumn", - "target": "tests_test_stocks_api_coverage_testquerylivecotation_test_cotations_filter_cotation_column_handles_non_list" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_testrevokesession_test_revoke_session_not_found" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1240", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L832", "weight": 1.0, - "source": "stocks_api_query_filtercotationcolumn", - "target": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_filter_cotation_column_filters_by_date" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_testrevokesession_test_revoke_session_failure" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1253", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L858", "weight": 1.0, - "source": "stocks_api_query_filtercotationcolumn", - "target": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_filter_cotation_column_range" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_testrevokeallsessions_test_revoke_all_sessions" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1262", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L975", "weight": 1.0, - "source": "stocks_api_query_filtercotationcolumn", - "target": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_filter_cotation_column_handles_non_list" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_testprometheusgethistory_test_get_history_found" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L179", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1011", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_query_queryhistorical", - "target": "stocks_api_query_baseframe" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_testprometheusgethistory_test_get_history_not_found" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L236", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1090", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_query_queryfundamental", - "target": "stocks_api_query_baseframe" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_testprometheuschat_test_chat_existing_session_verified" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L290", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1132", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_query_querycotations", - "target": "stocks_api_query_baseframe" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_testprometheuschat_test_chat_existing_session_not_owner" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L189", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_error_handlers.py", + "source_location": "L28", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_query_queryhistorical", - "target": "stocks_api_query_validatefields" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_error_handlers_app" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L247", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L28", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_query_queryfundamental", - "target": "stocks_api_query_validatefields" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_oauth_cookie_security_make_callback_client" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L120", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_sso_state_cookie.py", + "source_location": "L32", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_query_finalize", - "target": "stocks_api_query_envelope" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_sso_state_cookie_build_app" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L297", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_controller.py", + "source_location": "L38", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_query_querycotations", - "target": "stocks_api_query_envelope" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_memory_controller_testmemorycontrollerroutes_test_get_memories_rejects_unauthenticated" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L104", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_controller.py", + "source_location": "L57", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_query_finalize", - "target": "stocks_api_query_filterbysearchterms" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_memory_controller_testmemorycontrollerroutes_test_get_memories_rejects_basic_user" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L113", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1165", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_query_finalize", - "target": "stocks_api_query_deserializejsoncolumns" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_http_route" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L207", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1353", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_query_queryhistorical", - "target": "stocks_api_query_finalize" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_stocks_api_coverage_testquerylivecotation_test_http_route_returns_200" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L276", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1377", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_query_queryfundamental", - "target": "stocks_api_query_finalize" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_stocks_api_coverage_testquerylivecotation_test_http_route_search_required" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L306", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1466", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_query_querycotations", - "target": "stocks_api_query_finalize" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_stocks_api_coverage_testquerylivecotation_test_cotations_search_required" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/stocks_api/query.py", - "source_location": "L117", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1298", "weight": 1.0, - "source": "stocks_api_query_finalize", - "target": "stocks_api_util_parsedaterange" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_search_required" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L156", + "weight": 1.0, + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_testregisterendpoint_make_register_client" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L236", + "weight": 1.0, + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_testloginendpoint_make_login_client" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L289", + "weight": 1.0, + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_testlogoutendpoint_make_logout_client" }, { "relation": "calls", "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L433", + "weight": 1.0, + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_testgooglecallback_make_callback_client" + }, + { + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L253", + "source_file": "main/utils/http_session.py", + "source_location": "L9", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_query_queryfundamental", - "target": "stocks_api_query_filterbysearchterms" + "source": "main_utils_http_session_py", + "target": "utils_http_session_getsession" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/http_session.py", + "source_location": "L22", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_http_session_py", + "target": "utils_http_session_cleanup" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/http_session.py", + "source_location": "L8", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_http_session_py", + "target": "utils_http_session_get_session" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/logging_config.py", + "source_location": "L12", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_logging_config_py", + "target": "utils_logging_config_setuplogging" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/logging_config.py", + "source_location": "L24", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_logging_config_py", + "target": "utils_logging_config_discordhandler" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/logging_config.py", + "source_location": "L49", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_logging_config_py", + "target": "utils_logging_config_setupdiscordhandler" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/utils/logging_config.py", + "source_location": "L37", + "weight": 1.0, + "confidence_score": 1.0, + "source": "utils_logging_config_discordhandler", + "target": "utils_logging_config_discordhandler_init" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/utils/logging_config.py", + "source_location": "L25", + "weight": 1.0, + "confidence_score": 1.0, + "source": "utils_logging_config_discordhandler", + "target": "utils_logging_config_discordhandler_emit" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L300", + "source_file": "main/utils/logging_config.py", + "source_location": "L51", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_query_querycotations", - "target": "stocks_api_query_filterbysearchterms" + "source": "utils_logging_config_discordhandler", + "target": "utils_logging_config_setupdiscordhandler" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_logging_config_coverage.py", + "source_location": "L9", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_logging_config_discordhandler", + "target": "tests_test_logging_config_coverage_testdiscordhandleremit" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_logging_config_coverage.py", + "source_location": "L9", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_logging_config_discordhandler", + "target": "tests_test_logging_config_coverage_testsetuplogging" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_thread_safety.py", + "source_location": "L138", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_logging_config_discordhandler", + "target": "tests_test_thread_safety_testgetsession" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_thread_safety.py", + "source_location": "L138", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_logging_config_discordhandler", + "target": "tests_test_thread_safety_testdiscordhandlerthreadpool" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_thread_safety.py", + "source_location": "L138", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_logging_config_discordhandler", + "target": "tests_test_thread_safety_testconcurrentgetsession" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/stocks_api/query.py", - "source_location": "L184", + "source_file": "tests/test_logging_config_coverage.py", + "source_location": "L10", "weight": 1.0, - "source": "stocks_api_query_queryhistorical", - "target": "stocks_api_util_categorizecolumns" + "source": "utils_logging_config_discordhandler", + "target": "tests_test_logging_config_coverage_testdiscordhandleremit_make_handler" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/stocks_api/query.py", - "source_location": "L193", + "source_file": "tests/test_thread_safety.py", + "source_location": "L110", "weight": 1.0, - "source": "stocks_api_query_queryhistorical", - "target": "stocks_api_util_parsedaterange" + "source": "utils_logging_config_discordhandler", + "target": "tests_test_thread_safety_testdiscordhandlerthreadpool_test_emit_submits_to_executor" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L142", + "source_file": "tests/test_thread_safety.py", + "source_location": "L140", "weight": 1.0, - "source": "controller_stocksapi_controller_gethistorical", - "target": "stocks_api_query_queryhistorical" + "source": "utils_logging_config_discordhandler", + "target": "tests_test_thread_safety_testdiscordhandlerthreadpool_test_concurrent_emits_do_not_spawn_unbounded_threads" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_thread_safety.py", + "source_location": "L138", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_logging_config_discordhandler", + "target": "tests_test_thread_safety_testconcurrenthttpproxy" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/stocks_api/query.py", - "source_location": "L241", + "source_file": "tests/test_logging_config_coverage.py", + "source_location": "L107", "weight": 1.0, - "source": "stocks_api_query_queryfundamental", - "target": "stocks_api_util_categorizecolumns" + "source": "utils_logging_config_setupdiscordhandler", + "target": "tests_test_logging_config_coverage_test_setup_discord_handler_enabled" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/stocks_api/query.py", - "source_location": "L258", - "weight": 1.0, - "source": "stocks_api_query_queryfundamental", - "target": "stocks_api_util_parsedaterange" + "confidence_score": 0.8, + "source_file": "tests/test_logging_config_coverage.py", + "source_location": "L113", + "weight": 1.0, + "source": "utils_logging_config_setupdiscordhandler", + "target": "tests_test_logging_config_coverage_test_setup_discord_handler_disabled" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/migrator.py", + "source_location": "L8", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_migrator_py", + "target": "utils_migrator_runmigrations" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/request_id.py", + "source_location": "L13", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_request_id_py", + "target": "utils_request_id_requestidmiddleware" + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "main/utils/request_id.py", + "source_location": "L13", + "weight": 1.0, + "confidence_score": 1.0, + "source": "utils_request_id_requestidmiddleware", + "target": "basehttpmiddleware" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/utils/request_id.py", + "source_location": "L14", + "weight": 1.0, + "confidence_score": 1.0, + "source": "utils_request_id_requestidmiddleware", + "target": "utils_request_id_requestidmiddleware_dispatch" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_error_handlers.py", + "source_location": "L17", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_request_id_requestidmiddleware", + "target": "tests_test_error_handlers_samplebody" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_error_handlers.py", + "source_location": "L17", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_request_id_requestidmiddleware", + "target": "tests_test_error_handlers_testerrorresponsemodel" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L212", - "weight": 1.0, - "source": "controller_stocksapi_controller_getfundamental", - "target": "stocks_api_query_queryfundamental" + "source_file": "tests/test_error_handlers.py", + "source_location": "L17", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_request_id_requestidmiddleware", + "target": "tests_test_error_handlers_testrequestcontextfilter" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L268", - "weight": 1.0, - "source": "controller_stocksapi_controller_getcotations", - "target": "stocks_api_query_querycotations" + "source_file": "tests/test_error_handlers.py", + "source_location": "L17", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_request_id_requestidmiddleware", + "target": "tests_test_error_handlers_testhttpexceptionhandler" }, { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L358", - "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_query_querylivecotation", - "target": "stocks_api_query_fetchlivepayload" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_error_handlers.py", + "source_location": "L17", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_request_id_requestidmiddleware", + "target": "tests_test_error_handlers_testvalidationexceptionhandler" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L313", - "weight": 1.0, - "source": "controller_stocksapi_controller_getlivecotation", - "target": "stocks_api_query_querylivecotation" + "source_file": "tests/test_error_handlers.py", + "source_location": "L17", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_request_id_requestidmiddleware", + "target": "tests_test_error_handlers_testgenericexceptionhandler" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/sync_cache.py", - "source_location": "L14", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_stocks_api_sync_cache_py", - "target": "stocks_api_sync_cache_cache" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_error_handlers.py", + "source_location": "L17", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_request_id_requestidmiddleware", + "target": "tests_test_error_handlers_testsuccesspassthrough" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/sync_cache.py", - "source_location": "L16", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_stocks_api_sync_cache_py", - "target": "stocks_api_sync_cache_sync_cache" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_request_id.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_request_id_requestidmiddleware", + "target": "tests_test_request_id_testrequestidmiddleware" }, { "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/util.py", + "source_file": "main/utils/roles.py", "source_location": "L2", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_util_py", + "source": "main_utils_roles_py", "target": "fastapi" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L15", + "source_file": "main/utils/roles.py", + "source_location": "L4", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_util_py", - "target": "stocks_api_util_dedupabbrev" + "source": "main_utils_roles_py", + "target": "utils_roles_permission" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L24", + "source_file": "main/utils/roles.py", + "source_location": "L28", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_util_py", - "target": "stocks_api_util_autoabbreviate" + "source": "main_utils_roles_py", + "target": "utils_roles_all" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L45", + "source_file": "main/utils/roles.py", + "source_location": "L32", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_util_py", - "target": "stocks_api_util_generateabbreviations" + "source": "main_utils_roles_py", + "target": "utils_roles_roles" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L5", + "source_file": "main/utils/roles.py", + "source_location": "L51", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_util_py", - "target": "stocks_api_util_categorizecolumns" + "source": "main_utils_roles_py", + "target": "utils_roles_checkaccess" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L71", + "source_file": "main/utils/roles.py", + "source_location": "L64", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_util_py", - "target": "stocks_api_util_parsedate" + "source": "main_utils_roles_py", + "target": "utils_roles_requirepermission" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L55", + "source_file": "main/utils/roles.py", + "source_location": "L63", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_util_py", - "target": "stocks_api_util_parsedaterange" + "source": "main_utils_roles_py", + "target": "utils_roles_servicetoken" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L94", + "source_file": "main/utils/roles.py", + "source_location": "L69", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_util_py", - "target": "stocks_api_util_detectnestedfields" + "source": "main_utils_roles_py", + "target": "utils_roles_introspecturl" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L27", + "source_file": "main/utils/roles.py", + "source_location": "L75", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_util_py", - "target": "stocks_api_util_parse_date" + "source": "main_utils_roles_py", + "target": "utils_roles_extractcredential" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L33", + "source_file": "main/utils/roles.py", + "source_location": "L92", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_util_py", - "target": "stocks_api_util_parsedatestart" + "source": "main_utils_roles_py", + "target": "utils_roles_introspectuser" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L43", + "source_file": "main/utils/roles.py", + "source_location": "L4", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_util_py", - "target": "stocks_api_util_parsedateend" + "source": "utils_roles_permission", + "target": "intflag" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L29", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_stocks_api_util_py", - "target": "stocks_api_util_normalizecolumns" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L23", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_memorycandidate", + "target": "utils_roles_permission" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L21", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_stocks_api_util_py", - "target": "stocks_api_util_parseyearinput" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L9", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "utils_roles_permission" }, { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L49", - "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_util_generateabbreviations", - "target": "stocks_api_util_dedupabbrev" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_roles.py", + "source_location": "L7", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_roles_testpermission" }, { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L129", - "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_util_detectnestedfields", - "target": "stocks_api_util_dedupabbrev" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_roles.py", + "source_location": "L7", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_roles_testroles" }, { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L49", - "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_util_generateabbreviations", - "target": "stocks_api_util_autoabbreviate" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_roles_coverage.py", + "source_location": "L5", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_roles_coverage_testcheckaccess" }, { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L129", - "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_util_detectnestedfields", - "target": "stocks_api_util_autoabbreviate" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_roles_coverage.py", + "source_location": "L5", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_roles_coverage_testrequirepermission" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L65", - "weight": 1.0, - "source": "controller_stocksapi_controller_listfields", - "target": "stocks_api_util_generateabbreviations" + "source_file": "tests/test_roles_coverage.py", + "source_location": "L5", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_roles_coverage_testpermissionall" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/stocks_api/util.py", - "source_location": "L46", - "weight": 1.0, - "source": "stocks_api_util_generateabbreviations", - "target": "stocks_api_response_cache_responsecache_set" + "source_file": "tests/test_roles_coverage.py", + "source_location": "L5", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_roles_coverage_testroleshierarchy" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/stocks_api/compressor.py", - "source_location": "L33", - "weight": 1.0, - "source": "stocks_api_compressor_getabbr", - "target": "stocks_api_util_generateabbreviations" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L7", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "prometheus_memory_memorymanager" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/stocks_api/util.py", - "source_location": "L46", - "weight": 1.0, - "source": "stocks_api_util_generateabbreviations", - "target": "prometheus_state_harnessstate_set" + "source_file": "tests/test_memory_manager.py", + "source_location": "L6", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_memory_manager_testgetmemorylimit" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L52", - "weight": 1.0, - "source": "stocks_api_util_categorizecolumns", - "target": "controller_stocksapi_controller_listfields" + "source_file": "tests/test_memory_manager.py", + "source_location": "L6", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_memory_manager_testupsertmemory" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/stocks_api/query.py", - "source_location": "L76", - "weight": 1.0, - "source": "stocks_api_query_stocksquerymanager_queryhistorical", - "target": "stocks_api_util_categorizecolumns" + "source_file": "tests/test_memory_manager.py", + "source_location": "L6", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_memory_manager_testcountmemories" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/stocks_api/query.py", - "source_location": "L141", - "weight": 1.0, - "source": "stocks_api_query_stocksquerymanager_queryfundamental", - "target": "stocks_api_util_categorizecolumns" + "source_file": "tests/test_memory_manager.py", + "source_location": "L6", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_memory_manager_testgetusermemories" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/stocks_api/compressor.py", - "source_location": "L32", - "weight": 1.0, - "source": "stocks_api_compressor_getabbr", - "target": "stocks_api_util_categorizecolumns" + "source_file": "tests/test_memory_manager.py", + "source_location": "L6", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_memory_manager_testdeletememory" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L11", - "weight": 1.0, - "source": "stocks_api_util_categorizecolumns", - "target": "tests_test_stocks_api_util_coverage_testcategorizecolumns_test_historical_and_fundamental" + "source_file": "tests/test_memory_manager.py", + "source_location": "L6", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_memory_manager_testsearchfulltext" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L20", - "weight": 1.0, - "source": "stocks_api_util_categorizecolumns", - "target": "tests_test_stocks_api_util_coverage_testcategorizecolumns_test_only_fundamental" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testissecurescheme" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L26", - "weight": 1.0, - "source": "stocks_api_util_categorizecolumns", - "target": "tests_test_stocks_api_util_coverage_testcategorizecolumns_test_reserved_words_excluded" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testhealthendpoint" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L32", - "weight": 1.0, - "source": "stocks_api_util_categorizecolumns", - "target": "tests_test_stocks_api_util_coverage_testcategorizecolumns_test_single_year" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testregisterendpoint" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L37", - "weight": 1.0, - "source": "stocks_api_util_categorizecolumns", - "target": "tests_test_stocks_api_util_coverage_testcategorizecolumns_test_no_year_suffix" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testloginendpoint" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_util.py", - "source_location": "L14", - "weight": 1.0, - "source": "stocks_api_util_categorizecolumns", - "target": "tests_test_stocks_util_testcategorizecolumns_test_categorize_columns_historical_only" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testlogoutendpoint" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_util.py", - "source_location": "L23", - "weight": 1.0, - "source": "stocks_api_util_categorizecolumns", - "target": "tests_test_stocks_util_testcategorizecolumns_test_categorize_columns_fundamental_only" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testgooglelogin" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_util.py", - "source_location": "L32", - "weight": 1.0, - "source": "stocks_api_util_categorizecolumns", - "target": "tests_test_stocks_util_testcategorizecolumns_test_categorize_columns_mixed" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testgooglecallback" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_util.py", - "source_location": "L40", - "weight": 1.0, - "source": "stocks_api_util_categorizecolumns", - "target": "tests_test_stocks_util_testcategorizecolumns_test_categorize_columns_excludes_special" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testuserhealth" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_util.py", - "source_location": "L47", - "weight": 1.0, - "source": "stocks_api_util_categorizecolumns", - "target": "tests_test_stocks_util_testcategorizecolumns_test_categorize_columns_empty" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testgetme" }, { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L88", - "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_util_parsedaterange", - "target": "stocks_api_util_parsedate" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testupgradeendpoints" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/stocks_api/query.py", - "source_location": "L97", - "weight": 1.0, - "source": "stocks_api_query_stocksquerymanager_finalize", - "target": "stocks_api_util_parsedaterange" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testadminaccess" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/stocks_api/query.py", - "source_location": "L124", - "weight": 1.0, - "source": "stocks_api_query_stocksquerymanager_queryhistorical", - "target": "stocks_api_util_parsedaterange" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testgetsessions" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/stocks_api/query.py", - "source_location": "L197", - "weight": 1.0, - "source": "stocks_api_query_stocksquerymanager_queryfundamental", - "target": "stocks_api_util_parsedaterange" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testgetcurrentsession" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/stocks_api/query.py", - "source_location": "L318", - "weight": 1.0, - "source": "stocks_api_query_stocksquerymanager_querycotations", - "target": "stocks_api_util_parsedaterange" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testrevokesession" }, { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L44", - "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_util_parsedaterange", - "target": "stocks_api_util_parse_date" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testrevokeallsessions" }, { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L60", - "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_util_parsedatestart", - "target": "stocks_api_util_parsedaterange" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testprometheushealth" }, { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L60", - "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_util_parsedateend", - "target": "stocks_api_util_parsedaterange" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testprometheusgetsessions" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L45", - "weight": 1.0, - "source": "stocks_api_util_parsedaterange", - "target": "tests_test_stocks_api_util_coverage_testparsedaterange_test_empty_string" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testprometheuscreatesession" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L48", - "weight": 1.0, - "source": "stocks_api_util_parsedaterange", - "target": "tests_test_stocks_api_util_coverage_testparsedaterange_test_none" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testprometheusupdatesessiontitle" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L51", - "weight": 1.0, - "source": "stocks_api_util_parsedaterange", - "target": "tests_test_stocks_api_util_coverage_testparsedaterange_test_single_year" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testprometheusgethistory" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L60", - "weight": 1.0, - "source": "stocks_api_util_parsedaterange", - "target": "tests_test_stocks_api_util_coverage_testparsedaterange_test_year_range" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testprometheusdeletesession" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L65", - "weight": 1.0, - "source": "stocks_api_util_parsedaterange", - "target": "tests_test_stocks_api_util_coverage_testparsedaterange_test_spaces" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testprometheuschat" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L71", - "weight": 1.0, - "source": "stocks_api_util_parsedaterange", - "target": "tests_test_stocks_api_util_coverage_testparsedaterange_test_three_values_raises" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_teststocksapihealth" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L75", - "weight": 1.0, - "source": "stocks_api_util_parsedaterange", - "target": "tests_test_stocks_api_util_coverage_testparsedaterange_test_month_start" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_teststocksapikeytest" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L82", - "weight": 1.0, - "source": "stocks_api_util_parsedaterange", - "target": "tests_test_stocks_api_util_coverage_testparsedaterange_test_full_date" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_teststocksapihistorical" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_util.py", - "source_location": "L55", - "weight": 1.0, - "source": "stocks_api_util_parsedaterange", - "target": "tests_test_stocks_util_testparsedaterange_test_parse_year_single" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_teststocksapifundamental" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_util.py", - "source_location": "L64", - "weight": 1.0, - "source": "stocks_api_util_parsedaterange", - "target": "tests_test_stocks_util_testparsedaterange_test_parse_year_range" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_teststocksapigeneratekey" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_util.py", - "source_location": "L69", - "weight": 1.0, - "source": "stocks_api_util_parsedaterange", - "target": "tests_test_stocks_util_testparsedaterange_test_parse_year_none" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testaddroletouser" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_util.py", - "source_location": "L74", - "weight": 1.0, - "source": "stocks_api_util_parsedaterange", - "target": "tests_test_stocks_util_testparsedaterange_test_parse_year_empty_string" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testgetcurrentuser" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_util.py", - "source_location": "L79", - "weight": 1.0, - "source": "stocks_api_util_parsedaterange", - "target": "tests_test_stocks_util_testparsedaterange_test_parse_month" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testhashpasswordempty" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_util.py", - "source_location": "L86", - "weight": 1.0, - "source": "stocks_api_util_parsedaterange", - "target": "tests_test_stocks_util_testparsedaterange_test_parse_full_date" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testverifyaccesstoken" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_util.py", - "source_location": "L90", - "weight": 1.0, - "source": "stocks_api_util_parsedaterange", - "target": "tests_test_stocks_util_testparsedaterange_test_parse_two_values" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testextracttokenpayloadreraise" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_util.py", - "source_location": "L98", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testmanagerinit" + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "main/utils/roles.py", + "source_location": "L32", "weight": 1.0, - "source": "stocks_api_util_parsedaterange", - "target": "tests_test_stocks_util_testparsedaterange_test_parse_three_values_raises" + "confidence_score": 1.0, + "source": "intflag", + "target": "utils_roles_roles" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/stocks_api/util.py", - "source_location": "L114", + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L84", "weight": 1.0, - "source": "stocks_api_util_detectnestedfields", - "target": "stocks_api_response_cache_responsecache_set" + "source": "stocks_api_compress_tocolumnar", + "target": "utils_roles_all" }, { "relation": "calls", @@ -70067,11499 +73745,12976 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "main/app/stocks_api/compressor.py", - "source_location": "L47", + "source_location": "L91", "weight": 1.0, - "source": "stocks_api_compressor_getnest", - "target": "stocks_api_util_detectnestedfields" + "source": "stocks_api_compressor_tocolumnar", + "target": "utils_roles_all" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/stocks_api/util.py", - "source_location": "L114", + "source_file": "tests/test_vector_utils.py", + "source_location": "L112", "weight": 1.0, - "source": "stocks_api_util_detectnestedfields", - "target": "prometheus_state_harnessstate_set" + "source": "utils_roles_all", + "target": "tests_test_vector_utils_testcontenthash_test_hex_format" }, { - "relation": "imports_from", - "context": "import", - "confidence": "EXTRACTED", - "source_file": "main/app/user/user.py", - "source_location": "L4", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_user_user_py", - "target": "fastapi" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L23", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_memorycandidate", + "target": "utils_roles_roles" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/user/user.py", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/memory.py", "source_location": "L9", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_user_user_py", - "target": "user_user_usermanager" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/user/user.py", - "source_location": "L13", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_user_user_py", - "target": "user_user_getroleslist" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/user/user.py", - "source_location": "L28", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_user_user_py", - "target": "user_user_getcurrentuser" + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "utils_roles_roles" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/user/user.py", - "source_location": "L34", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_user_user_py", - "target": "user_user_todict" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_roles.py", + "source_location": "L7", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_roles_testpermission" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/user/user.py", - "source_location": "L19", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_user_user_py", - "target": "user_user_addrole" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_roles.py", + "source_location": "L7", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_roles_testroles" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/user/user.py", - "source_location": "L28", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_user_user_py", - "target": "user_user_hasrole" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_roles_coverage.py", + "source_location": "L65", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_roles_coverage_testcheckaccess" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/user/user.py", - "source_location": "L14", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_user_user_py", - "target": "user_user_addroletouser" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_roles_coverage.py", + "source_location": "L65", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_roles_coverage_testrequirepermission" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "main/app/user/user.py", - "source_location": "L7", + "source_file": "tests/test_roles_coverage.py", + "source_location": "L65", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", - "target": "models_user_user" + "source": "utils_roles_roles", + "target": "tests_test_roles_coverage_testpermissionall" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "main/utils/roles.py", + "source_file": "tests/test_roles_coverage.py", "source_location": "L65", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", - "target": "utils_roles_permission" + "source": "utils_roles_roles", + "target": "tests_test_roles_coverage_testroleshierarchy" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "main/utils/roles.py", - "source_location": "L65", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L7", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", - "target": "utils_roles_roles" + "source": "utils_roles_roles", + "target": "prometheus_memory_memorymanager" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testissecurescheme" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testhealthendpoint" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testregisterendpoint" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testloginendpoint" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testlogoutendpoint" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testgooglelogin" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testgooglecallback" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testuserhealth" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testgetme" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testupgradeendpoints" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testadminaccess" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testgetsessions" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testgetcurrentsession" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testrevokesession" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testrevokeallsessions" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testprometheushealth" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testprometheusgetsessions" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testprometheuscreatesession" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testprometheusupdatesessiontitle" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testprometheusgethistory" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testprometheusdeletesession" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testprometheuschat" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_teststocksapihealth" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "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": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_teststocksapifundamental" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_teststocksapigeneratekey" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testaddroletouser" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testgetcurrentuser" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testhashpasswordempty" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testverifyaccesstoken" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testextracttokenpayloadreraise" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", - "weight": 0.8, - "confidence_score": 0.5, - "source": "user_user_usermanager", - "target": "tests_test_controllers_coverage_testmanagerinit" + "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": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_models.py", - "source_location": "L5", - "weight": 0.8, - "confidence_score": 0.5, - "source": "user_user_usermanager", - "target": "tests_test_models_testusermodel" + "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": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_models.py", - "source_location": "L5", - "weight": 0.8, - "confidence_score": 0.5, - "source": "user_user_usermanager", - "target": "tests_test_models_teststocksapikeymodel" + "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": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_models.py", - "source_location": "L5", - "weight": 0.8, - "confidence_score": 0.5, - "source": "user_user_usermanager", - "target": "tests_test_models_testprometheussessionmodel" + "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": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1495", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "README.md", + "source_location": "L24", "weight": 1.0, - "source": "user_user_usermanager", - "target": "tests_test_controllers_coverage_testmanagerinit_test_manager_init" + "confidence_score": 1.0, + "source": "server_readme_environment_setup", + "target": "server_readme_codeblock_2" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_controller.py", - "source_location": "L52", - "weight": 0.8, - "confidence_score": 0.5, - "source": "user_user_usermanager", - "target": "tests_test_memory_controller_testmemorycontrollerroutes" + "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": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_controller.py", - "source_location": "L52", - "weight": 0.8, - "confidence_score": 0.5, - "source": "user_user_usermanager", - "target": "tests_test_memory_controller_testmemoryendpointsintegration" + "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": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1160", - "weight": 0.8, - "confidence_score": 0.5, - "source": "user_user_usermanager", - "target": "tests_test_stocks_api_coverage_teststockscachemanager" + "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": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1160", - "weight": 0.8, - "confidence_score": 0.5, - "source": "user_user_usermanager", - "target": "tests_test_stocks_api_coverage_testverifyapikey" + "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": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1160", - "weight": 0.8, - "confidence_score": 0.5, - "source": "user_user_usermanager", - "target": "tests_test_stocks_api_coverage_testgeneratesecurekey" + "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": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1160", - "weight": 0.8, - "confidence_score": 0.5, - "source": "user_user_usermanager", - "target": "tests_test_stocks_api_coverage_testcreatekey" + "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": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1160", - "weight": 0.8, - "confidence_score": 0.5, - "source": "user_user_usermanager", - "target": "tests_test_stocks_api_coverage_testdeserializejsoncolumns" + "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": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1160", - "weight": 0.8, - "confidence_score": 0.5, - "source": "user_user_usermanager", - "target": "tests_test_stocks_api_coverage_testfilterbysearchterms" + "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": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1160", - "weight": 0.8, - "confidence_score": 0.5, - "source": "user_user_usermanager", - "target": "tests_test_stocks_api_coverage_testqueryhistorical" + "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": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1160", - "weight": 0.8, - "confidence_score": 0.5, - "source": "user_user_usermanager", - "target": "tests_test_stocks_api_coverage_testqueryfundamental" + "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": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1160", - "weight": 0.8, - "confidence_score": 0.5, - "source": "user_user_usermanager", - "target": "tests_test_stocks_api_coverage_testquerycotations" + "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": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1461", - "weight": 0.8, - "confidence_score": 0.5, - "source": "user_user_usermanager", - "target": "tests_test_stocks_api_coverage_testquerylivecotation" + "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": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", - "weight": 0.8, - "confidence_score": 0.5, - "source": "user_user_usermanager", - "target": "tests_test_controllers_coverage_teststocksapikeytest" + "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": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/user/user.py", - "source_location": "L10", + "source_file": "docs/authentication.md", + "source_location": "L61", "weight": 1.0, "confidence_score": 1.0, - "source": "user_user_usermanager", - "target": "user_user_usermanager_init" + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_rate_limits" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/user/user.py", - "source_location": "L83", + "source_file": "docs/authentication.md", + "source_location": "L49", "weight": 1.0, "confidence_score": 1.0, - "source": "user_user_getroleslist", - "target": "user_user_getcurrentuser" + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_api_endpoints" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/user/user.py", - "source_location": "L39", + "source_file": "docs/authentication.md", + "source_location": "L117", "weight": 1.0, "confidence_score": 1.0, - "source": "user_user_getroleslist", - "target": "user_user_todict" + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_security_features" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/user/user.py", - "source_location": "L22", + "source_file": "docs/authentication.md", + "source_location": "L138", "weight": 1.0, "confidence_score": 1.0, - "source": "user_user_getroleslist", - "target": "user_user_addrole" + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_not_implemented" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/user/user.py", - "source_location": "L31", + "source_file": "docs/authentication.md", + "source_location": "L154", "weight": 1.0, "confidence_score": 1.0, - "source": "user_user_getroleslist", - "target": "user_user_hasrole" + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_workflow" }, { - "relation": "imports_from", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L6", + "source_file": "docs/authentication.md", + "source_location": "L187", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_authentication_controller_py", - "target": "fastapi" + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_license" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L20", + "source_file": "docs/authentication.md", + "source_location": "L9", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_authentication_controller_py", - "target": "controller_authentication_controller_issecurescheme" + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_usage" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L44", + "source_file": "docs/authentication.md", + "source_location": "L130", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_authentication_controller_py", - "target": "controller_authentication_controller_resolvecookiedomain" + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_device_detection" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L32", + "source_file": "docs/authentication.md", + "source_location": "L144", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_authentication_controller_py", - "target": "controller_authentication_controller_issuesessioncookie" + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_session_management" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L24", + "source_file": "docs/authentication.md", + "source_location": "L51", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_authentication_controller_py", - "target": "controller_authentication_controller_health" + "source": "docs_authentication_api_endpoints", + "target": "docs_authentication_health_check" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L29", + "source_file": "docs/authentication.md", + "source_location": "L57", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_authentication_controller_py", - "target": "controller_authentication_controller_register" + "source": "docs_authentication_api_endpoints", + "target": "docs_authentication_user_registration" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L71", + "source_file": "docs/authentication.md", + "source_location": "L65", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_authentication_controller_py", - "target": "controller_authentication_controller_login" + "source": "docs_authentication_api_endpoints", + "target": "docs_authentication_user_login" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L100", + "source_file": "docs/authentication.md", + "source_location": "L84", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_authentication_controller_py", - "target": "controller_authentication_controller_logout" + "source": "docs_authentication_api_endpoints", + "target": "docs_authentication_logout" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L131", + "source_file": "docs/authentication.md", + "source_location": "L94", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_authentication_controller_py", - "target": "controller_authentication_controller_googlelogin" + "source": "docs_authentication_api_endpoints", + "target": "docs_authentication_google_oauth2_login" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L146", + "source_file": "docs/authentication.md", + "source_location": "L120", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_authentication_controller_py", - "target": "controller_authentication_controller_googlecallback" + "source": "docs_authentication_api_endpoints", + "target": "docs_authentication_google_callback_cookie_only" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L39", + "source_file": "docs/authentication.md", + "source_location": "L77", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_authentication_controller_issecurescheme", - "target": "controller_authentication_controller_issuesessioncookie" + "source": "docs_authentication_api_endpoints", + "target": "docs_authentication_profile_me" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L123", + "source_file": "docs/authentication.md", + "source_location": "L108", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_authentication_controller_issecurescheme", - "target": "controller_authentication_controller_logout" + "source": "docs_authentication_api_endpoints", + "target": "docs_authentication_google_callback" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L114", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L76", "weight": 1.0, - "source": "controller_authentication_controller_issecurescheme", - "target": "tests_test_controllers_coverage_testissecurescheme_test_is_secure_https" + "confidence_score": 1.0, + "source": "docs_authentication_health_check", + "target": "docs_authentication_codeblock_1" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L121", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L52", "weight": 1.0, - "source": "controller_authentication_controller_issecurescheme", - "target": "tests_test_controllers_coverage_testissecurescheme_test_is_secure_http" + "confidence_score": 1.0, + "source": "docs_authentication_health_check", + "target": "docs_authentication_codeblock_2" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L128", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L11", "weight": 1.0, - "source": "controller_authentication_controller_issecurescheme", - "target": "tests_test_controllers_coverage_testissecurescheme_test_is_secure_no_scheme" + "confidence_score": 1.0, + "source": "docs_authentication_usage", + "target": "docs_authentication_codeblock_1" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L49", + "source_file": "docs/authentication.md", + "source_location": "L84", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_authentication_controller_issecurescheme", - "target": "controller_authentication_controller_register" + "source": "docs_authentication_user_registration", + "target": "docs_authentication_codeblock_2" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L87", + "source_file": "docs/authentication.md", + "source_location": "L59", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_authentication_controller_issecurescheme", - "target": "controller_authentication_controller_login" + "source": "docs_authentication_user_registration", + "target": "docs_authentication_codeblock_3" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L176", + "source_file": "docs/authentication.md", + "source_location": "L94", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_authentication_controller_issecurescheme", - "target": "controller_authentication_controller_googlecallback" + "source": "docs_authentication_user_login", + "target": "docs_authentication_codeblock_3" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L58", + "source_file": "docs/authentication.md", + "source_location": "L67", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_authentication_controller_issuesessioncookie", - "target": "controller_authentication_controller_resolvecookiedomain" + "source": "docs_authentication_user_login", + "target": "docs_authentication_codeblock_4" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L160", + "source_file": "docs/authentication.md", + "source_location": "L104", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_authentication_controller_logout", - "target": "controller_authentication_controller_resolvecookiedomain" + "source": "docs_authentication_logout", + "target": "docs_authentication_codeblock_4" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L81", + "source_file": "docs/authentication.md", + "source_location": "L86", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_authentication_controller_issuesessioncookie", - "target": "controller_authentication_controller_register" + "source": "docs_authentication_logout", + "target": "docs_authentication_codeblock_6" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L107", + "source_file": "docs/authentication.md", + "source_location": "L113", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_authentication_controller_issuesessioncookie", - "target": "controller_authentication_controller_login" + "source": "docs_authentication_google_oauth2_login", + "target": "docs_authentication_codeblock_5" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L186", + "source_file": "docs/authentication.md", + "source_location": "L98", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_authentication_controller_issuesessioncookie", - "target": "controller_authentication_controller_googlecallback" + "source": "docs_authentication_google_oauth2_login", + "target": "docs_authentication_codeblock_7" }, { - "relation": "imports_from", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L8", + "source_file": "docs/authentication.md", + "source_location": "L104", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "fastapi" + "source": "docs_authentication_google_oauth2_login", + "target": "docs_authentication_codeblock_8" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L21", + "source_file": "docs/authentication.md", + "source_location": "L79", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_verifysessionownsership" + "source": "docs_authentication_profile_me", + "target": "docs_authentication_codeblock_5" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L19", + "source_file": "docs/authentication.md", + "source_location": "L144", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_health" + "source": "docs_authentication_workflow", + "target": "docs_authentication_codeblock_6" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L23", + "source_file": "docs/authentication.md", + "source_location": "L156", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_getsessions" + "source": "docs_authentication_workflow", + "target": "docs_authentication_codeblock_9" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L36", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_updatesessiontitle" + "source": "docs_investidor10_wallet_research_md", + "target": "docs_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L50", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L10", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_gethistory" + "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": "main/controller/prometheus_controller.py", - "source_location": "L67", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L30", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_deletesession" + "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": "main/controller/prometheus_controller.py", - "source_location": "L130", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L40", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_chat_stream" + "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": "main/controller/prometheus_controller.py", - "source_location": "L132", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L65", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_resumechatstream" + "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": "main/controller/prometheus_controller.py", - "source_location": "L170", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L74", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_deleteworkspacefile" + "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": "main/controller/prometheus_controller.py", - "source_location": "L183", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L82", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_downloadworkspacefile" + "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": "main/controller/prometheus_controller.py", - "source_location": "L199", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L86", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_listworkspacefiles" + "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": "main/controller/prometheus_controller.py", - "source_location": "L145", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_forward" + "source": "docs_investidor10_wallet_spec_md", + "target": "docs_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L147", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L12", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_uploadworkspacefile" + "source": "docs_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", + "target": "docs_investidor10_wallet_spec_1_requirements" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L28", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L38", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_createsession" + "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": "main/controller/prometheus_controller.py", - "source_location": "L75", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L49", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_chat" + "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": "main/controller/prometheus_controller.py", - "source_location": "L163", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L66", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_getmemories" + "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": "main/controller/prometheus_controller.py", - "source_location": "L177", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L72", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_creatememory" + "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": "main/controller/prometheus_controller.py", - "source_location": "L201", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L14", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_deletememory" + "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": "main/controller/prometheus_controller.py", - "source_location": "L163", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L28", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_get_memories" + "source": "docs_investidor10_wallet_spec_1_requirements", + "target": "docs_investidor10_wallet_spec_1_2_non_functional" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L177", + "source_file": "docs/orunmila.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_create_memory" + "source": "docs_orunmila_md", + "target": "docs_orunmila_orunmila" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L201", + "source_file": "docs/orunmila.md", + "source_location": "L7", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_delete_memory" + "source": "docs_orunmila_orunmila", + "target": "docs_orunmila_usage" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L21", + "source_file": "docs/orunmila.md", + "source_location": "L53", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_verify_session_ownership" + "source": "docs_orunmila_orunmila", + "target": "docs_orunmila_workflow" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L67", + "source_file": "docs/orunmila.md", + "source_location": "L65", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_prometheus_controller_verifysessionownsership", - "target": "controller_prometheus_controller_updatesessiontitle" + "source": "docs_orunmila_orunmila", + "target": "docs_orunmila_api_endpoints" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L81", + "source_file": "docs/orunmila.md", + "source_location": "L72", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_prometheus_controller_verifysessionownsership", - "target": "controller_prometheus_controller_gethistory" + "source": "docs_orunmila_orunmila", + "target": "docs_orunmila_license" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L140", + "source_file": "docs/orunmila.md", + "source_location": "L9", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_prometheus_controller_verifysessionownsership", - "target": "controller_prometheus_controller_chat_stream" + "source": "docs_orunmila_usage", + "target": "docs_orunmila_codeblock_1" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L141", + "source_file": "docs/orunmila.md", + "source_location": "L49", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_prometheus_controller_resumechatstream", - "target": "controller_prometheus_controller_verifysessionownsership" + "source": "docs_orunmila_usage", + "target": "docs_orunmila_codeblock_2" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L118", + "source_file": "docs/orunmila.md", + "source_location": "L55", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_prometheus_controller_verifysessionownsership", - "target": "controller_prometheus_controller_chat" + "source": "docs_orunmila_workflow", + "target": "docs_orunmila_codeblock_3" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L68", + "source_file": "docs/scraper_b3.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_prometheus_controller_updatesessiontitle", - "target": "controller_prometheus_controller_verify_session_ownership" + "source": "docs_scraper_b3_md", + "target": "docs_scraper_b3_b3_market_scraper" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L88", + "source_file": "docs/scraper_b3.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_prometheus_controller_gethistory", - "target": "controller_prometheus_controller_chat" + "source": "docs_scraper_b3_md", + "target": "docs_scraper_b3_brazilian_stocks_market_scraper" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L82", + "source_file": "docs/scraper_b3.md", + "source_location": "L5", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_prometheus_controller_gethistory", - "target": "controller_prometheus_controller_verify_session_ownership" + "source": "docs_scraper_b3_b3_market_scraper", + "target": "docs_scraper_b3_sources_6" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L128", + "source_file": "docs/scraper_b3.md", + "source_location": "L19", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_prometheus_controller_chat_stream", - "target": "controller_prometheus_controller_forward" + "source": "docs_scraper_b3_b3_market_scraper", + "target": "docs_scraper_b3_scheduling_config_config_py_77_81_scraper_service_py_23_36" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L138", + "source_file": "docs/scraper_b3.md", + "source_location": "L31", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_prometheus_controller_createsession", - "target": "controller_prometheus_controller_chat_stream" + "source": "docs_scraper_b3_b3_market_scraper", + "target": "docs_scraper_b3_xango_score_main_app_scraper_b3_xango_py" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L142", + "source_file": "docs/scraper_b3.md", + "source_location": "L41", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_prometheus_controller_resumechatstream", - "target": "controller_prometheus_controller_forward" + "source": "docs_scraper_b3_b3_market_scraper", + "target": "docs_scraper_b3_outputs" }, { - "relation": "imports_from", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L2", + "source_file": "docs/scraper_b3.md", + "source_location": "L21", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_stocksapi_controller_py", - "target": "fastapi" + "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": "main/controller/stocksapi_controller.py", - "source_location": "L16", + "source_file": "docs/scraper_b3.md", + "source_location": "L8", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_stocksapi_controller_py", - "target": "controller_stocksapi_controller_health" + "source": "docs_scraper_b3_usage", + "target": "docs_scraper_b3_codeblock_1" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L25", + "source_file": "docs/stocks_api.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_stocksapi_controller_py", - "target": "controller_stocksapi_controller_listfields" + "source": "docs_stocks_api_md", + "target": "docs_stocks_api_brazilian_stocks_market_api" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L24", + "source_file": "docs/stocks_api.md", + "source_location": "L7", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_stocksapi_controller_py", - "target": "controller_stocksapi_controller_gethistorical" + "source": "docs_stocks_api_brazilian_stocks_market_api", + "target": "docs_stocks_api_usage" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L35", + "source_file": "docs/stocks_api.md", + "source_location": "L22", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_stocksapi_controller_py", - "target": "controller_stocksapi_controller_getfundamental" + "source": "docs_stocks_api_brazilian_stocks_market_api", + "target": "docs_stocks_api_auth" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L49", + "source_file": "docs/stocks_api.md", + "source_location": "L32", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_stocksapi_controller_py", - "target": "controller_stocksapi_controller_getcotations" + "source": "docs_stocks_api_brazilian_stocks_market_api", + "target": "docs_stocks_api_api_endpoints" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L60", + "source_file": "docs/stocks_api.md", + "source_location": "L90", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_stocksapi_controller_py", - "target": "controller_stocksapi_controller_getlivecotation" + "source": "docs_stocks_api_brazilian_stocks_market_api", + "target": "docs_stocks_api_response_format" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L23", + "source_file": "docs/stocks_api.md", + "source_location": "L119", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_stocksapi_controller_py", - "target": "controller_stocksapi_controller_jsonbytesresponse" + "source": "docs_stocks_api_brazilian_stocks_market_api", + "target": "docs_stocks_api_architecture" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L46", + "source_file": "docs/stocks_api.md", + "source_location": "L113", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_stocksapi_controller_py", - "target": "controller_stocksapi_controller_generatekey" + "source": "docs_stocks_api_brazilian_stocks_market_api", + "target": "docs_stocks_api_license" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L63", + "source_file": "docs/stocks_api.md", + "source_location": "L9", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_stocksapi_controller_py", - "target": "controller_stocksapi_controller_getrealtimecotation" + "source": "docs_stocks_api_usage", + "target": "docs_stocks_api_codeblock_1" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L20", + "source_file": "docs/stocks_api.md", + "source_location": "L34", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_stocksapi_controller_py", - "target": "controller_stocksapi_controller_apikeytest" + "source": "docs_stocks_api_api_endpoints", + "target": "docs_stocks_api_health_check" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L39", + "source_file": "docs/stocks_api.md", + "source_location": "L40", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_39", - "target": "controller_stocksapi_controller_listfields" + "source": "docs_stocks_api_api_endpoints", + "target": "docs_stocks_api_field_discovery" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L47", + "source_file": "docs/stocks_api.md", + "source_location": "L53", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_47", - "target": "controller_stocksapi_controller_listfields" + "source": "docs_stocks_api_api_endpoints", + "target": "docs_stocks_api_historical_data" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L36", + "source_file": "docs/stocks_api.md", + "source_location": "L72", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_36", - "target": "controller_stocksapi_controller_listfields" + "source": "docs_stocks_api_api_endpoints", + "target": "docs_stocks_api_fundamental_data" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L40", + "source_file": "docs/stocks_api.md", + "source_location": "L74", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_40", - "target": "controller_stocksapi_controller_listfields" + "source": "docs_stocks_api_api_endpoints", + "target": "docs_stocks_api_cotations_10_year_daily_history" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L48", + "source_file": "docs/stocks_api.md", + "source_location": "L87", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_48", - "target": "controller_stocksapi_controller_listfields" + "source": "docs_stocks_api_api_endpoints", + "target": "docs_stocks_api_live_price" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L49", + "source_file": "docs/stocks_api.md", + "source_location": "L98", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_49", - "target": "controller_stocksapi_controller_listfields" + "source": "docs_stocks_api_api_endpoints", + "target": "docs_stocks_api_mcp_ai_agent_tools" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L30", + "source_file": "docs/stocks_api.md", + "source_location": "L40", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_30", - "target": "controller_stocksapi_controller_listfields" + "source": "docs_stocks_api_api_endpoints", + "target": "docs_stocks_api_api_key_verification" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L66", + "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, - "source": "controller_stocksapi_controller_listfields", - "target": "stocks_api_compressor_getnest" + "confidence_score": 1.0, + "source": "docs_stocks_api_health_check", + "target": "docs_stocks_api_codeblock_2" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L27", + "source_file": "docs/stocks_api.md", + "source_location": "L42", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_27", - "target": "controller_stocksapi_controller_listfields" + "source": "docs_stocks_api_field_discovery", + "target": "docs_stocks_api_codeblock_3" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L26", + "source_file": "docs/stocks_api.md", + "source_location": "L41", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_listfields", - "target": "controller_stocksapi_controller_rationale_26" + "source": "docs_stocks_api_api_key_verification", + "target": "docs_stocks_api_codeblock_3" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L95", + "source_file": "docs/stocks_api.md", + "source_location": "L50", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_95", - "target": "controller_stocksapi_controller_gethistorical" + "source": "docs_stocks_api_historical_data", + "target": "docs_stocks_api_codeblock_4" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L103", + "source_file": "docs/stocks_api.md", + "source_location": "L55", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_103", - "target": "controller_stocksapi_controller_gethistorical" + "source": "docs_stocks_api_historical_data", + "target": "docs_stocks_api_codeblock_5" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L92", + "source_file": "docs/stocks_api.md", + "source_location": "L68", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_92", - "target": "controller_stocksapi_controller_gethistorical" + "source": "docs_stocks_api_historical_data", + "target": "docs_stocks_api_codeblock_6" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L96", + "source_file": "docs/stocks_api.md", + "source_location": "L47", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_96", - "target": "controller_stocksapi_controller_gethistorical" + "source": "docs_stocks_api_key_management", + "target": "docs_stocks_api_codeblock_4" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L104", + "source_file": "docs/stocks_api.md", + "source_location": "L63", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_104", - "target": "controller_stocksapi_controller_gethistorical" + "source": "docs_stocks_api_fundamental_data", + "target": "docs_stocks_api_codeblock_5" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L105", + "source_file": "docs/stocks_api.md", + "source_location": "L74", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_105", - "target": "controller_stocksapi_controller_gethistorical" + "source": "docs_stocks_api_fundamental_data", + "target": "docs_stocks_api_codeblock_7" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L85", + "source_file": "docs/stocks_api.md", + "source_location": "L86", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_85", - "target": "controller_stocksapi_controller_gethistorical" + "source": "docs_stocks_api_fundamental_data", + "target": "docs_stocks_api_codeblock_8" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L129", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L76", "weight": 1.0, - "source": "controller_stocksapi_controller_gethistorical", - "target": "stocks_api_compressor_compressresponse" + "confidence_score": 1.0, + "source": "docs_stocks_api_cotations_10_year_daily_history", + "target": "docs_stocks_api_codeblock_6" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L82", + "source_file": "docs/stocks_api.md", + "source_location": "L89", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_82", - "target": "controller_stocksapi_controller_gethistorical" + "source": "docs_stocks_api_live_price", + "target": "docs_stocks_api_codeblock_7" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L66", + "source_file": "docs/stocks_api.md", + "source_location": "L106", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_gethistorical", - "target": "controller_stocksapi_controller_rationale_66" + "source": "docs_stocks_api_response_format", + "target": "docs_stocks_api_codeblock_8" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L65", + "source_file": "docs/stocks_api.md", + "source_location": "L94", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_gethistorical", - "target": "controller_stocksapi_controller_rationale_65" + "source": "docs_stocks_api_response_format", + "target": "docs_stocks_api_codeblock_9" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L160", + "source_file": "docs/user.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_160", - "target": "controller_stocksapi_controller_getfundamental" + "source": "docs_user_md", + "target": "docs_user_user_management" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L168", + "source_file": "docs/user.md", + "source_location": "L5", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_168", - "target": "controller_stocksapi_controller_getfundamental" + "source": "docs_user_user_management", + "target": "docs_user_roles_and_permissions" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L157", + "source_file": "docs/user.md", + "source_location": "L17", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_157", - "target": "controller_stocksapi_controller_getfundamental" + "source": "docs_user_user_management", + "target": "docs_user_api_endpoints" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L161", + "source_file": "docs/user.md", + "source_location": "L59", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_161", - "target": "controller_stocksapi_controller_getfundamental" + "source": "docs_user_user_management", + "target": "docs_user_session_management" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L169", + "source_file": "docs/user.md", + "source_location": "L112", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_169", - "target": "controller_stocksapi_controller_getfundamental" + "source": "docs_user_user_management", + "target": "docs_user_api_keys_stocks_api" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L167", + "source_file": "docs/user.md", + "source_location": "L123", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_167", - "target": "controller_stocksapi_controller_getfundamental" + "source": "docs_user_user_management", + "target": "docs_user_rate_limits_related_services" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L165", + "source_file": "docs/user.md", + "source_location": "L135", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_165", - "target": "controller_stocksapi_controller_getfundamental" + "source": "docs_user_user_management", + "target": "docs_user_not_implemented" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L155", + "source_file": "docs/user.md", + "source_location": "L156", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_155", - "target": "controller_stocksapi_controller_getfundamental" + "source": "docs_user_user_management", + "target": "docs_user_workflow" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L196", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L177", "weight": 1.0, - "source": "controller_stocksapi_controller_getfundamental", - "target": "stocks_api_compressor_compressresponse" + "confidence_score": 1.0, + "source": "docs_user_user_management", + "target": "docs_user_license" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L144", + "source_file": "docs/user.md", + "source_location": "L140", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_144", - "target": "controller_stocksapi_controller_getfundamental" + "source": "docs_user_user_management", + "target": "docs_user_permission_system" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L124", + "source_file": "docs/user.md", + "source_location": "L19", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_getfundamental", - "target": "controller_stocksapi_controller_rationale_124" + "source": "docs_user_api_endpoints", + "target": "docs_user_health_check" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L123", + "source_file": "docs/user.md", + "source_location": "L25", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_getfundamental", - "target": "controller_stocksapi_controller_rationale_123" + "source": "docs_user_api_endpoints", + "target": "docs_user_get_profile" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L228", + "source_file": "docs/user.md", + "source_location": "L53", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_228", - "target": "controller_stocksapi_controller_getcotations" + "source": "docs_user_api_endpoints", + "target": "docs_user_admin_access" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L236", + "source_file": "docs/user.md", + "source_location": "L41", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_236", - "target": "controller_stocksapi_controller_getcotations" + "source": "docs_user_api_endpoints", + "target": "docs_user_upgrade_to_developer_starter" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L225", + "source_file": "docs/user.md", + "source_location": "L47", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_225", - "target": "controller_stocksapi_controller_getcotations" + "source": "docs_user_api_endpoints", + "target": "docs_user_upgrade_to_developer_enterprise" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L229", + "source_file": "docs/user.md", + "source_location": "L20", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_229", - "target": "controller_stocksapi_controller_getcotations" + "source": "docs_user_health_check", + "target": "docs_user_codeblock_1" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L237", + "source_file": "docs/user.md", + "source_location": "L27", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_237", - "target": "controller_stocksapi_controller_getcotations" + "source": "docs_user_get_profile", + "target": "docs_user_codeblock_2" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L234", + "source_file": "docs/user.md", + "source_location": "L31", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_234", - "target": "controller_stocksapi_controller_getcotations" + "source": "docs_user_get_profile", + "target": "docs_user_codeblock_3" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L238", + "source_file": "docs/user.md", + "source_location": "L39", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_238", - "target": "controller_stocksapi_controller_getcotations" + "source": "docs_user_admin_access", + "target": "docs_user_codeblock_3" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L250", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L55", "weight": 1.0, - "source": "controller_stocksapi_controller_getcotations", - "target": "stocks_api_compressor_compressresponse" + "confidence_score": 1.0, + "source": "docs_user_admin_access", + "target": "docs_user_codeblock_6" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L209", + "source_file": "docs/user.md", + "source_location": "L63", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_209", - "target": "controller_stocksapi_controller_getcotations" + "source": "docs_user_session_management", + "target": "docs_user_list_all_sessions" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L185", + "source_file": "docs/user.md", + "source_location": "L92", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_getcotations", - "target": "controller_stocksapi_controller_rationale_185" + "source": "docs_user_session_management", + "target": "docs_user_get_current_session" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L184", + "source_file": "docs/user.md", + "source_location": "L114", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_getcotations", - "target": "controller_stocksapi_controller_rationale_184" + "source": "docs_user_session_management", + "target": "docs_user_revoke_a_session" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L282", + "source_file": "docs/user.md", + "source_location": "L127", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_282", - "target": "controller_stocksapi_controller_getlivecotation" + "source": "docs_user_session_management", + "target": "docs_user_revoke_all_sessions" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L290", + "source_file": "docs/user.md", + "source_location": "L55", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_290", - "target": "controller_stocksapi_controller_getlivecotation" + "source": "docs_user_list_all_sessions", + "target": "docs_user_codeblock_4" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L279", + "source_file": "docs/user.md", + "source_location": "L59", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_279", - "target": "controller_stocksapi_controller_getlivecotation" + "source": "docs_user_list_all_sessions", + "target": "docs_user_codeblock_5" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L283", + "source_file": "docs/user.md", + "source_location": "L65", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_283", - "target": "controller_stocksapi_controller_getlivecotation" + "source": "docs_user_list_all_sessions", + "target": "docs_user_codeblock_7" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L291", + "source_file": "docs/user.md", + "source_location": "L69", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_291", - "target": "controller_stocksapi_controller_getlivecotation" + "source": "docs_user_list_all_sessions", + "target": "docs_user_codeblock_8" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L288", + "source_file": "docs/user.md", + "source_location": "L43", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_288", - "target": "controller_stocksapi_controller_getlivecotation" + "source": "docs_user_upgrade_to_developer_starter", + "target": "docs_user_codeblock_4" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L296", + "source_file": "docs/user.md", + "source_location": "L49", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_296", - "target": "controller_stocksapi_controller_getlivecotation" + "source": "docs_user_upgrade_to_developer_enterprise", + "target": "docs_user_codeblock_5" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L286", + "source_file": "docs/user.md", + "source_location": "L83", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_286", - "target": "controller_stocksapi_controller_getlivecotation" + "source": "docs_user_get_current_session", + "target": "docs_user_codeblock_6" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L293", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L94", "weight": 1.0, - "source": "controller_stocksapi_controller_getlivecotation", - "target": "stocks_api_compressor_compressresponse" + "confidence_score": 1.0, + "source": "docs_user_get_current_session", + "target": "docs_user_codeblock_9" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L261", + "source_file": "docs/user.md", + "source_location": "L98", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_261", - "target": "controller_stocksapi_controller_getlivecotation" + "source": "docs_user_get_current_session", + "target": "docs_user_codeblock_10" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L233", + "source_file": "docs/user.md", + "source_location": "L91", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_getlivecotation", - "target": "controller_stocksapi_controller_rationale_233" + "source": "docs_user_revoke_a_session", + "target": "docs_user_codeblock_7" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L232", + "source_file": "docs/user.md", + "source_location": "L116", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_getlivecotation", - "target": "controller_stocksapi_controller_rationale_232" + "source": "docs_user_revoke_a_session", + "target": "docs_user_codeblock_11" }, { - "relation": "imports_from", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/user_controller.py", - "source_location": "L7", + "source_file": "docs/user.md", + "source_location": "L120", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_user_controller_py", - "target": "fastapi" + "source": "docs_user_revoke_a_session", + "target": "docs_user_codeblock_12" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/user_controller.py", - "source_location": "L16", + "source_file": "docs/user.md", + "source_location": "L101", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_user_controller_py", - "target": "controller_user_controller_sessiontodict" + "source": "docs_user_revoke_all_sessions", + "target": "docs_user_codeblock_8" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/user_controller.py", - "source_location": "L15", + "source_file": "docs/user.md", + "source_location": "L105", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_user_controller_py", - "target": "controller_user_controller_health" + "source": "docs_user_revoke_all_sessions", + "target": "docs_user_codeblock_9" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/user_controller.py", - "source_location": "L19", + "source_file": "docs/user.md", + "source_location": "L129", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_user_controller_py", - "target": "controller_user_controller_getme" + "source": "docs_user_revoke_all_sessions", + "target": "docs_user_codeblock_13" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/user_controller.py", - "source_location": "L45", + "source_file": "docs/user.md", + "source_location": "L133", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_user_controller_py", - "target": "controller_user_controller_testadminaccess" + "source": "docs_user_revoke_all_sessions", + "target": "docs_user_codeblock_14" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/user_controller.py", - "source_location": "L52", + "source_file": "docs/user.md", + "source_location": "L141", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_user_controller_py", - "target": "controller_user_controller_getsessions" + "source": "docs_user_workflow", + "target": "docs_user_codeblock_10" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/user_controller.py", - "source_location": "L94", + "source_file": "docs/user.md", + "source_location": "L158", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_user_controller_py", - "target": "controller_user_controller_getcurrentsession" + "source": "docs_user_workflow", + "target": "docs_user_codeblock_16" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/user_controller.py", - "source_location": "L115", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_user_controller_py", - "target": "controller_user_controller_revokesession" + "source": "docs_superpowers_plans_2026_08_09_sse_resume_md", + "target": "plans_2026_08_09_sse_resume_sse_resume_implementation_plan" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/user_controller.py", - "source_location": "L135", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L11", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_user_controller_py", - "target": "controller_user_controller_revokeallsessions" + "source": "plans_2026_08_09_sse_resume_sse_resume_implementation_plan", + "target": "plans_2026_08_09_sse_resume_global_constraints" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/user_controller.py", - "source_location": "L23", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L26", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_user_controller_py", - "target": "controller_user_controller_upgradetodeveloperstarter" + "source": "plans_2026_08_09_sse_resume_global_constraints", + "target": "plans_2026_08_09_sse_resume_task_1_streambus_module_with_unit_tests" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/user_controller.py", - "source_location": "L34", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L242", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_user_controller_py", - "target": "controller_user_controller_upgradetodeveloperenterprise" + "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": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/user_controller.py", - "source_location": "L67", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L412", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_user_controller_getsessions", - "target": "controller_user_controller_sessiontodict" + "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": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/user_controller.py", - "source_location": "L87", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L576", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_user_controller_getcurrentsession", - "target": "controller_user_controller_sessiontodict" + "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": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/memory.py", - "source_location": "L7", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L863", "weight": 1.0, "confidence_score": 1.0, - "source": "main_models_memory_py", - "target": "models_memory_prometheusmemory" + "source": "plans_2026_08_09_sse_resume_global_constraints", + "target": "plans_2026_08_09_sse_resume_task_5_full_verification_todo_check_off" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/memory.py", - "source_location": "L7", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L41", "weight": 1.0, "confidence_score": 1.0, - "source": "main_models_memory_py", - "target": "models_memory_usermemory" + "source": "plans_2026_08_09_sse_resume_task_1_streambus_module_with_unit_tests", + "target": "plans_2026_08_09_sse_resume_codeblock_1" }, { - "relation": "inherits", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/memory.py", - "source_location": "L7", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L130", "weight": 1.0, "confidence_score": 1.0, - "source": "models_memory_prometheusmemory", - "target": "base" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/models/memory.py", - "source_location": "L4", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_memory_prometheusmemory", - "target": "models_types_vectortype" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/models/memory.py", - "source_location": "L5", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_memory_prometheusmemory", - "target": "models_user_user" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/service/prometheus_service.py", - "source_location": "L13", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_memory_prometheusmemory", - "target": "service_prometheus_service_prometheusservice" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L2", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_memory_prometheusmemory", - "target": "tests_test_memory_dedup_testexactsamekeyupdates" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L2", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_memory_prometheusmemory", - "target": "tests_test_memory_dedup_testsimilarkeymerges" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L2", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_memory_prometheusmemory", - "target": "tests_test_memory_dedup_testdifferentkeysnomerge" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L2", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_memory_prometheusmemory", - "target": "tests_test_memory_dedup_testmergeboostsscore" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L2", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_memory_prometheusmemory", - "target": "tests_test_memory_dedup_testmergeincrementsaccess" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L2", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_memory_prometheusmemory", - "target": "tests_test_memory_dedup_testthresholdboundary" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L14", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_memory_prometheusmemory", - "target": "tests_test_memory_maintenance_testdecay" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L14", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_memory_prometheusmemory", - "target": "tests_test_memory_maintenance_testarchive" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L14", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_memory_prometheusmemory", - "target": "tests_test_memory_maintenance_testdecayandarchivetogether" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L14", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_memory_prometheusmemory", - "target": "tests_test_memory_maintenance_testemptydatabase" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_manager.py", - "source_location": "L5", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_memory_prometheusmemory", - "target": "tests_test_memory_manager_testgetmemorylimit" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_manager.py", - "source_location": "L5", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_memory_prometheusmemory", - "target": "tests_test_memory_manager_testupsertmemory" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_manager.py", - "source_location": "L5", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_memory_prometheusmemory", - "target": "tests_test_memory_manager_testcountmemories" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_manager.py", - "source_location": "L5", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_memory_prometheusmemory", - "target": "tests_test_memory_manager_testgetusermemories" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_manager.py", - "source_location": "L5", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_memory_prometheusmemory", - "target": "tests_test_memory_manager_testdeletememory" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_manager.py", - "source_location": "L5", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_memory_prometheusmemory", - "target": "tests_test_memory_manager_testsearchfulltext" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_type_aware_decay.py", - "source_location": "L6", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_memory_prometheusmemory", - "target": "tests_test_type_aware_decay_testtypeawaredecay" + "source": "plans_2026_08_09_sse_resume_task_1_streambus_module_with_unit_tests", + "target": "plans_2026_08_09_sse_resume_codeblock_2" }, { - "relation": "inherits", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/prometheus.py", - "source_location": "L5", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L235", "weight": 1.0, "confidence_score": 1.0, - "source": "base", - "target": "models_prometheus_prometheussession" + "source": "plans_2026_08_09_sse_resume_task_1_streambus_module_with_unit_tests", + "target": "plans_2026_08_09_sse_resume_codeblock_3" }, { - "relation": "inherits", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/sandbox.py", - "source_location": "L5", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L257", "weight": 1.0, "confidence_score": 1.0, - "source": "base", - "target": "models_sandbox_prometheussandbox" + "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": "inherits", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/stocksapi_key.py", - "source_location": "L7", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L329", "weight": 1.0, "confidence_score": 1.0, - "source": "base", - "target": "models_stocksapi_key_stocksapikey" + "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": "inherits", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/user.py", - "source_location": "L5", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L405", "weight": 1.0, "confidence_score": 1.0, - "source": "base", - "target": "models_user_user" + "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": "inherits", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/user_session.py", - "source_location": "L5", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L426", "weight": 1.0, "confidence_score": 1.0, - "source": "base", - "target": "models_user_session_usersession" + "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": "inherits", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/memory.py", - "source_location": "L7", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L498", "weight": 1.0, "confidence_score": 1.0, - "source": "base", - "target": "models_memory_usermemory" + "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": "inherits", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/harness.py", - "source_location": "L7", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L569", "weight": 1.0, "confidence_score": 1.0, - "source": "base", - "target": "models_harness_loopevent" + "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": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/prometheus.py", - "source_location": "L5", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L590", "weight": 1.0, "confidence_score": 1.0, - "source": "main_models_prometheus_py", - "target": "models_prometheus_prometheussession" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/models/prometheus.py", - "source_location": "L4", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_prometheus_prometheussession", - "target": "models_user_user" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_models.py", - "source_location": "L4", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_prometheus_prometheussession", - "target": "tests_test_models_testusermodel" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_models.py", - "source_location": "L4", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_prometheus_prometheussession", - "target": "tests_test_models_teststocksapikeymodel" + "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": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_models.py", - "source_location": "L4", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_prometheus_prometheussession", - "target": "tests_test_models_testprometheussessionmodel" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L659", + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L168", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L681", "weight": 1.0, - "source": "models_prometheus_prometheussession", - "target": "tests_test_models_testprometheussessionmodel_test_create_session" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L177", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L768", "weight": 1.0, - "source": "models_prometheus_prometheussession", - "target": "tests_test_models_testprometheussessionmodel_test_default_history" + "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" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/generation.py", - "source_location": "L13", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_prometheus_prometheussession", - "target": "prometheus_generation_prometheusgenerator" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L835", + "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" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/generation.py", - "source_location": "L13", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_prometheus_prometheussession", - "target": "prometheus_generation_sessionproxy" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L856", + "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" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/sandbox.py", - "source_location": "L5", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L889", "weight": 1.0, "confidence_score": 1.0, - "source": "main_models_sandbox_py", - "target": "models_sandbox_prometheussandbox" + "source": "plans_2026_08_09_sse_resume_task_5_full_verification_todo_check_off", + "target": "plans_2026_08_09_sse_resume_codeblock_16" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L2", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_sandbox_prometheussandbox", - "target": "tests_test_sandbox_persistence_testprometheussandboxmodel" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L1", + "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" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L3", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_sandbox_prometheussandbox", - "target": "tests_test_sandbox_persistence_testsandboxpersistence" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L13", + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L7", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L23", "weight": 1.0, - "source": "models_sandbox_prometheussandbox", - "target": "tests_test_sandbox_persistence_testprometheussandboxmodel_test_create_sandbox_mapping" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L19", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L633", "weight": 1.0, - "source": "models_sandbox_prometheussandbox", - "target": "tests_test_sandbox_persistence_testprometheussandboxmodel_test_sandbox_has_timestamps" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L31", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L35", "weight": 1.0, - "source": "models_sandbox_prometheussandbox", - "target": "tests_test_sandbox_persistence_testprometheussandboxmodel_test_one_sandbox_per_user" + "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": "tests/test_sandbox_persistence.py", - "source_location": "L77", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L251", "weight": 1.0, - "source": "models_sandbox_prometheussandbox", - "target": "tests_test_sandbox_persistence_test_get_or_create_reuses_existing" + "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", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L92", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L392", "weight": 1.0, - "source": "models_sandbox_prometheussandbox", - "target": "tests_test_sandbox_persistence_test_get_or_create_respawns_when_dead" + "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" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L3", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_sandbox_prometheussandbox", - "target": "tests_test_sandbox_persistence_testsandboxcleanup" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L468", + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L148", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L613", "weight": 1.0, - "source": "models_sandbox_prometheussandbox", - "target": "tests_test_sandbox_persistence_test_cleanup_removes_dead_mappings" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L168", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L49", "weight": 1.0, - "source": "models_sandbox_prometheussandbox", - "target": "tests_test_sandbox_persistence_test_cleanup_keeps_alive_sandboxes" + "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" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/stocksapi_key.py", - "source_location": "L7", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L88", "weight": 1.0, "confidence_score": 1.0, - "source": "main_models_stocksapi_key_py", - "target": "models_stocksapi_key_stocksapikey" + "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": "uses", - "confidence": "INFERRED", - "source_file": "main/models/stocksapi_key.py", - "source_location": "L4", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_stocksapi_key_stocksapikey", - "target": "models_user_user" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L118", + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/stocks_api/key.py", - "source_location": "L58", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L131", "weight": 1.0, - "source": "stocks_api_key_createkey", - "target": "models_stocksapi_key_stocksapikey" + "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" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L15", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_api_key_quota_atomic_testatomicquotaincrement" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L177", + "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" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L15", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_api_key_quota_atomic_testverifyapikeyintegration" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L228", + "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" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_models.py", - "source_location": "L3", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_models_testusermodel" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L244", + "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" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_models.py", - "source_location": "L3", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_models_teststocksapikeymodel" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L263", + "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" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_models.py", - "source_location": "L3", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_models_testprometheussessionmodel" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L315", + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L43", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L349", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_normal_quota_check_works" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L70", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L405", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_atomic_increment_prevents_overuse" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L111", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L461", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_concurrent_requests_serialized_at_db_level" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L145", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L482", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_request_at_exact_quota_limit" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L181", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L512", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_multiple_keys_independent_quotas" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L216", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L519", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_increment_from_zero" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L240", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L539", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_api_key_quota_atomic_testverifyapikeyintegration_test_verify_api_key_success" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L255", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L548", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_api_key_quota_atomic_testverifyapikeyintegration_test_verify_api_key_quota_exceeded" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L92", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L606", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_models_teststocksapikeymodel_test_create_api_key" + "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": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L101", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L1", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_models_teststocksapikeymodel_test_is_quota_exceeded_true" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L107", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L16", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_models_teststocksapikeymodel_test_is_quota_exceeded_false" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L113", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L632", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_models_teststocksapikeymodel_test_needs_reset_true_no_last_reset" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L118", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L29", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_models_teststocksapikeymodel_test_needs_reset_true_expired" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L124", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L152", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_models_teststocksapikeymodel_test_needs_reset_false_recent" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L130", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L198", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_models_teststocksapikeymodel_test_reset_quota" + "confidence_score": 1.0, + "source": "plans_2026_08_15_workspace_endpoints_global_constraints", + "target": "plans_2026_08_15_workspace_endpoints_task_3_controller_endpoints" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L138", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L465", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_models_teststocksapikeymodel_test_increment_usage" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L144", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L611", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_models_teststocksapikeymodel_test_get_remaining_quota" + "confidence_score": 1.0, + "source": "plans_2026_08_15_workspace_endpoints_global_constraints", + "target": "plans_2026_08_15_workspace_endpoints_task_5_full_verification" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L150", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L43", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_models_teststocksapikeymodel_test_get_remaining_quota_exceeded" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L156", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L108", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_models_teststocksapikeymodel_test_toDict" + "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" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/stocksapi_key.py", - "source_location": "L21", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L145", "weight": 1.0, "confidence_score": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "models_stocksapi_key_stocksapikey_isquotaexceeded" + "source": "plans_2026_08_15_workspace_endpoints_task_1_sandbox_delete_file_binary_write", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_3" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/stocksapi_key.py", - "source_location": "L24", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L166", "weight": 1.0, "confidence_score": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "models_stocksapi_key_stocksapikey_needsreset" + "source": "plans_2026_08_15_workspace_endpoints_task_2_dependency_config_setting", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_4" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/stocksapi_key.py", - "source_location": "L32", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L172", "weight": 1.0, "confidence_score": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "models_stocksapi_key_stocksapikey_resetquota" + "source": "plans_2026_08_15_workspace_endpoints_task_2_dependency_config_setting", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_5" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/stocksapi_key.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": "models_stocksapi_key_stocksapikey", - "target": "models_stocksapi_key_stocksapikey_incrementusage" + "source": "plans_2026_08_15_workspace_endpoints_task_2_dependency_config_setting", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_6" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/stocksapi_key.py", - "source_location": "L39", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L191", "weight": 1.0, "confidence_score": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "models_stocksapi_key_stocksapikey_getremainingquota" + "source": "plans_2026_08_15_workspace_endpoints_task_2_dependency_config_setting", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_7" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/stocksapi_key.py", - "source_location": "L42", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L212", "weight": 1.0, "confidence_score": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "models_stocksapi_key_stocksapikey_todict" + "source": "plans_2026_08_15_workspace_endpoints_task_3_controller_endpoints", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_8" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/stocksapi_key.py", - "source_location": "L18", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L368", "weight": 1.0, "confidence_score": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "models_stocksapi_key_stocksapikey_repr" + "source": "plans_2026_08_15_workspace_endpoints_task_3_controller_endpoints", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_9" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/types.py", - "source_location": "L5", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L375", "weight": 1.0, "confidence_score": 1.0, - "source": "main_models_types_py", - "target": "models_types_vectortype" + "source": "plans_2026_08_15_workspace_endpoints_task_3_controller_endpoints", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_10" }, { - "relation": "inherits", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/types.py", - "source_location": "L5", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L381", "weight": 1.0, "confidence_score": 1.0, - "source": "models_types_vectortype", - "target": "typedecorator" + "source": "plans_2026_08_15_workspace_endpoints_task_3_controller_endpoints", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_11" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/types.py", - "source_location": "L9", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L458", "weight": 1.0, "confidence_score": 1.0, - "source": "models_types_vectortype", - "target": "models_types_vectortype_init" + "source": "plans_2026_08_15_workspace_endpoints_task_3_controller_endpoints", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_12" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/types.py", - "source_location": "L13", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L479", "weight": 1.0, "confidence_score": 1.0, - "source": "models_types_vectortype", - "target": "models_types_vectortype_process_bind_param" + "source": "plans_2026_08_15_workspace_endpoints_task_4_serve_file_agent_tool", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_13" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/types.py", - "source_location": "L21", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L560", "weight": 1.0, "confidence_score": 1.0, - "source": "models_types_vectortype", - "target": "models_types_vectortype_process_result_value" + "source": "plans_2026_08_15_workspace_endpoints_task_4_serve_file_agent_tool", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_14" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_types.py", - "source_location": "L3", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_types_vectortype", - "target": "tests_test_memory_types_testvectortype" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L566", + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_types.py", - "source_location": "L9", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L593", "weight": 1.0, - "source": "models_types_vectortype", - "target": "tests_test_memory_types_testvectortype_test_roundtrip" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_types.py", - "source_location": "L19", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L604", "weight": 1.0, - "source": "models_types_vectortype", - "target": "tests_test_memory_types_testvectortype_test_none_roundtrip" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_types.py", - "source_location": "L25", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L626", "weight": 1.0, - "source": "models_types_vectortype", - "target": "tests_test_memory_types_testvectortype_test_wrong_dims_raises" + "confidence_score": 1.0, + "source": "plans_2026_08_15_workspace_endpoints_task_5_full_verification", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_18" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_types.py", - "source_location": "L31", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L1", "weight": 1.0, - "source": "models_types_vectortype", - "target": "tests_test_memory_types_testvectortype_test_preserves_negative_values" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_types.py", - "source_location": "L39", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L13", "weight": 1.0, - "source": "models_types_vectortype", - "target": "tests_test_memory_types_testvectortype_test_large_random_vector" + "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" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/models/memory.py", - "source_location": "L4", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_types_vectortype", - "target": "models_memory_usermemory" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L32", + "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" }, { - "relation": "inherits", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/memory_types.py", - "source_location": "L5", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L43", "weight": 1.0, "confidence_score": 1.0, - "source": "typedecorator", - "target": "models_memory_types_vectortype" + "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": "main/models/user.py", - "source_location": "L5", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L176", "weight": 1.0, "confidence_score": 1.0, - "source": "main_models_user_py", - "target": "models_user_user" + "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": "uses", - "confidence": "INFERRED", - "source_file": "main/models/user_session.py", - "source_location": "L4", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_user_session_usersession", - "target": "models_user_user" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L294", + "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" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_models.py", - "source_location": "L2", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_user_user", - "target": "tests_test_models_testusermodel" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L403", + "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" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_models.py", - "source_location": "L2", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_user_user", - "target": "tests_test_models_teststocksapikeymodel" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L61", + "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" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_models.py", - "source_location": "L2", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_user_user", - "target": "tests_test_models_testprometheussessionmodel" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L122", + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L9", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L169", "weight": 1.0, - "source": "models_user_user", - "target": "tests_test_models_testusermodel_test_create_user" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L19", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L191", "weight": 1.0, - "source": "models_user_user", - "target": "tests_test_models_testusermodel_test_get_roles_list_default" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L24", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L246", "weight": 1.0, - "source": "models_user_user", - "target": "tests_test_models_testusermodel_test_get_roles_list_single_role" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L29", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L272", "weight": 1.0, - "source": "models_user_user", - "target": "tests_test_models_testusermodel_test_get_roles_list_multiple_roles" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L37", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L287", "weight": 1.0, - "source": "models_user_user", - "target": "tests_test_models_testusermodel_test_add_role_new" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L43", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L308", "weight": 1.0, - "source": "models_user_user", - "target": "tests_test_models_testusermodel_test_add_role_existing" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L63", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L372", "weight": 1.0, - "source": "models_user_user", - "target": "tests_test_models_testusermodel_test_has_role_true" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L68", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L396", "weight": 1.0, - "source": "models_user_user", - "target": "tests_test_models_testusermodel_test_has_role_false" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L75", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L1", "weight": 1.0, - "source": "models_user_user", - "target": "tests_test_models_testusermodel_test_has_role_with_enum" + "confidence_score": 1.0, + "source": "docs_superpowers_plans_2026_08_17_openui_migration_md", + "target": "plans_2026_08_17_openui_migration_openui_migration_plan" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L80", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L20", + "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" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L30", "weight": 1.0, - "source": "models_user_user", - "target": "tests_test_models_testusermodel_test_toDict" + "confidence_score": 1.0, + "source": "plans_2026_08_17_openui_migration_openui_migration_plan", + "target": "plans_2026_08_17_openui_migration_file_structure" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/user.py", - "source_location": "L22", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L52", "weight": 1.0, "confidence_score": 1.0, - "source": "models_user_user", - "target": "models_user_user_getroleslist" + "source": "plans_2026_08_17_openui_migration_openui_migration_plan", + "target": "plans_2026_08_17_openui_migration_task_1_install_openui_remove_mdocui" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/user.py", - "source_location": "L27", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L80", "weight": 1.0, "confidence_score": 1.0, - "source": "models_user_user", - "target": "models_user_user_addrole" + "source": "plans_2026_08_17_openui_migration_openui_migration_plan", + "target": "plans_2026_08_17_openui_migration_task_2_define_prometheus_component_library" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/user.py", - "source_location": "L43", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L385", "weight": 1.0, "confidence_score": 1.0, - "source": "models_user_user", - "target": "models_user_user_hasrole" + "source": "plans_2026_08_17_openui_migration_openui_migration_plan", + "target": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/user.py", - "source_location": "L48", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L455", "weight": 1.0, "confidence_score": 1.0, - "source": "models_user_user", - "target": "models_user_user_todict" + "source": "plans_2026_08_17_openui_migration_openui_migration_plan", + "target": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/user.py", - "source_location": "L19", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L610", "weight": 1.0, "confidence_score": 1.0, - "source": "models_user_user", - "target": "models_user_user_repr" + "source": "plans_2026_08_17_openui_migration_openui_migration_plan", + "target": "plans_2026_08_17_openui_migration_task_5_integration_test" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/user.py", - "source_location": "L35", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L640", "weight": 1.0, "confidence_score": 1.0, - "source": "models_user_user", - "target": "models_user_user_removerole" + "source": "plans_2026_08_17_openui_migration_openui_migration_plan", + "target": "plans_2026_08_17_openui_migration_verification_checklist" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L50", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L32", "weight": 1.0, - "source": "models_user_user", - "target": "tests_test_models_testusermodel_test_remove_role_existing" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L57", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L43", "weight": 1.0, - "source": "models_user_user", - "target": "tests_test_models_testusermodel_test_remove_role_last_role" + "confidence_score": 1.0, + "source": "plans_2026_08_17_openui_migration_file_structure", + "target": "plans_2026_08_17_openui_migration_backend_commit" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/user_session.py", - "source_location": "L5", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L58", "weight": 1.0, "confidence_score": 1.0, - "source": "main_models_user_session_py", - "target": "models_user_session_usersession" + "source": "plans_2026_08_17_openui_migration_task_1_install_openui_remove_mdocui", + "target": "plans_2026_08_17_openui_migration_codeblock_1" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/service/user_service.py", - "source_location": "L8", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_user_session_usersession", - "target": "service_user_service_userservice" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L66", + "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" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_sessions.py", - "source_location": "L7", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testusersessionmodel" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L72", + "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" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_sessions.py", - "source_location": "L8", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testsessionexpiration" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L86", + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sessions.py", - "source_location": "L56", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L101", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testusersessionmodel_test_getdevicename_with_browser_and_os" + "confidence_score": 1.0, + "source": "plans_2026_08_17_openui_migration_component_mapping", + "target": "plans_2026_08_17_openui_migration_codeblock_4" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sessions.py", - "source_location": "L69", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L339", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testusersessionmodel_test_getdevicename_with_fingerprint_only" + "confidence_score": 1.0, + "source": "plans_2026_08_17_openui_migration_component_mapping", + "target": "plans_2026_08_17_openui_migration_codeblock_5" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sessions.py", - "source_location": "L81", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L396", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testusersessionmodel_test_getdevicename_fallback" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sessions.py", - "source_location": "L94", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L428", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testusersessionmodel_test_getdevicename_empty_strings" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sessions.py", - "source_location": "L108", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L435", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testusersessionmodel_test_isactive_default" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sessions.py", - "source_location": "L112", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L442", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testusersessionmodel_test_isactive_can_be_false" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sessions.py", - "source_location": "L156", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L449", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testsessionexpiration_test_session_can_expire" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sessions.py", - "source_location": "L175", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L467", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testsessionexpiration_test_session_still_valid_within_expiry" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sessions.py", - "source_location": "L193", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L486", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testsessionexpiration_test_session_exactly_at_boundary" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sessions.py", - "source_location": "L210", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L501", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testsessionexpiration_test_created_at_future_date" + "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" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/user_session.py", - "source_location": "L38", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L542", "weight": 1.0, "confidence_score": 1.0, - "source": "models_user_session_usersession", - "target": "models_user_session_usersession_getdevicename" + "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "target": "plans_2026_08_17_openui_migration_codeblock_14" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/user_session.py", - "source_location": "L22", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L555", "weight": 1.0, "confidence_score": 1.0, - "source": "models_user_session_usersession", - "target": "models_user_session_usersession_repr" + "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "target": "plans_2026_08_17_openui_migration_codeblock_15" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/user_session.py", - "source_location": "L25", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L572", "weight": 1.0, "confidence_score": 1.0, - "source": "models_user_session_usersession", - "target": "models_user_session_usersession_todict" + "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "target": "plans_2026_08_17_openui_migration_codeblock_16" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sessions.py", - "source_location": "L12", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L577", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testusersessionmodel_test_repr" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sessions.py", - "source_location": "L17", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L590", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testusersessionmodel_test_toDict_basic" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sessions.py", - "source_location": "L34", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L596", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testusersessionmodel_test_toDict_with_sensitive" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sessions.py", - "source_location": "L45", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L602", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testusersessionmodel_test_toDict_hides_useragent" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sessions.py", - "source_location": "L118", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L614", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testusersessionmodel_test_todict_with_timestamps" + "confidence_score": 1.0, + "source": "plans_2026_08_17_openui_migration_task_5_integration_test", + "target": "plans_2026_08_17_openui_migration_codeblock_21" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sessions.py", - "source_location": "L132", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L620", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testusersessionmodel_test_todict_without_timestamps" + "confidence_score": 1.0, + "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": "main/service/authentication_service.py", - "source_location": "L9", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_authentication_service_py", - "target": "service_authentication_service_authenticationservice" + "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": "main/service/authentication_service.py", - "source_location": "L11", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_authentication_service_py", - "target": "service_authentication_service_initialize" + "source": "plans_2026_09_03_followup_hardening_follow_up_hardening_implementation_plan", + "target": "plans_2026_09_03_followup_hardening_global_constraints" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/service/authentication_service.py", - "source_location": "L6", - "weight": 0.8, - "confidence_score": 0.5, - "source": "service_authentication_service_authenticationservice", - "target": "utils_service_manager_servicemanager" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L26", + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/service/authentication_service.py", - "source_location": "L12", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L814", "weight": 1.0, - "source": "service_authentication_service_initialize", - "target": "utils_service_manager_getapp" + "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" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/service/prometheus_service.py", - "source_location": "L23", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L44", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_prometheus_service_py", - "target": "service_prometheus_service_memorymaintenance" + "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": "main/service/prometheus_service.py", - "source_location": "L4", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L127", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_prometheus_service_py", - "target": "service_prometheus_service_prometheusservice" + "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": "main/service/prometheus_service.py", - "source_location": "L6", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L240", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_prometheus_service_py", - "target": "service_prometheus_service_initialize" + "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": "main/service/prometheus_service.py", - "source_location": "L60", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L337", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_prometheus_service_py", - "target": "service_prometheus_service_registermemorymaintenancejob" + "source": "plans_2026_09_03_followup_hardening_file_map", + "target": "plans_2026_09_03_followup_hardening_task_4_queryhistorical_queryfundamental_presort_invariant_guard" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/service/prometheus_service.py", - "source_location": "L52", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L415", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "prometheus_matrix_cache_invalidateuser" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L49", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L509", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_memory_maintenance_testdecay_test_active_memory_decays" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L56", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L562", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_memory_maintenance_testdecay_test_zero_access_count_still_decays" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L62", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L623", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_memory_maintenance_testdecay_test_high_score_decays_proportionally" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L69", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L712", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_memory_maintenance_testdecay_test_very_low_score_stays_above_zero" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L76", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L61", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_memory_maintenance_testdecay_test_multiple_users_all_decayed" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L87", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L80", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_memory_maintenance_testarchive_test_dead_memory_archived" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L94", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L96", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_memory_maintenance_testarchive_test_low_score_but_recent_not_archived" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L101", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L120", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_memory_maintenance_testarchive_test_zero_access_but_high_score_not_archived" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L108", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L143", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_memory_maintenance_testarchive_test_accessed_memory_not_archived" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L117", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L185", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_memory_maintenance_testarchive_test_already_archived_not_double_archived" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L125", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L198", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_memory_maintenance_testarchive_test_multiple_users_independent_archive" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L137", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L204", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_memory_maintenance_testdecayandarchivetogether_test_decay_then_archive_check" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L145", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L233", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_memory_maintenance_testdecayandarchivetogether_test_score_above_threshold_after_decay_not_archived" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L151", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L256", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_memory_maintenance_testdecayandarchivetogether_test_score_just_below_threshold_archived" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L158", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L284", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_memory_maintenance_testdecayandarchivetogether_test_days_just_below_threshold_not_archived" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L164", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L298", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_memory_maintenance_testdecayandarchivetogether_test_days_just_above_threshold_archived" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L171", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L330", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_memory_maintenance_testemptydatabase_test_no_memories_does_not_crash" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_type_aware_decay.py", - "source_location": "L32", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L351", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_type_aware_decay_testtypeawaredecay_test_preference_decays_slowly" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_type_aware_decay.py", - "source_location": "L38", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L390", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_type_aware_decay_testtypeawaredecay_test_context_decays_fast" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_type_aware_decay.py", - "source_location": "L44", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L408", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_type_aware_decay_testtypeawaredecay_test_analysis_decays_normally" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_type_aware_decay.py", - "source_location": "L50", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L429", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_type_aware_decay_testtypeawaredecay_test_feedback_decays_medium" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_type_aware_decay.py", - "source_location": "L56", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L451", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_type_aware_decay_testtypeawaredecay_test_unknown_type_uses_default" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_type_aware_decay.py", - "source_location": "L66", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L502", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_type_aware_decay_testtypeawaredecay_test_mixed_types_all_correct" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_type_aware_decay.py", - "source_location": "L82", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L525", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_type_aware_decay_testtypeawaredecay_test_preference_survives_longer" + "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" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/service/prometheus_service.py", - "source_location": "L1", - "weight": 0.8, - "confidence_score": 0.5, - "source": "service_prometheus_service_prometheusservice", - "target": "utils_service_manager_servicemanager" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L541", + "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" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/service/prometheus_service.py", - "source_location": "L13", - "weight": 0.8, - "confidence_score": 0.5, - "source": "service_prometheus_service_prometheusservice", - "target": "models_memory_usermemory" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L555", + "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" }, { - "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-09-03-followup-hardening.md", + "source_location": "L577", "weight": 1.0, - "source": "service_prometheus_service_initialize", - "target": "utils_service_manager_getapp" + "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" }, { - "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-09-03-followup-hardening.md", + "source_location": "L598", "weight": 1.0, - "source": "service_prometheus_service_initialize", - "target": "models_loader_getembeddingmodel" + "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" }, { - "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-09-03-followup-hardening.md", + "source_location": "L616", "weight": 1.0, - "source": "service_prometheus_service_initialize", - "target": "utils_scheduler_registerjob" + "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" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/service/prometheus_service.py", - "source_location": "L87", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L640", "weight": 1.0, "confidence_score": 1.0, - "source": "service_prometheus_service_initialize", - "target": "service_prometheus_service_registermemorymaintenancejob" + "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": "main/service/scraper_service.py", - "source_location": "L14", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L668", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_scraper_service_py", - "target": "service_scraper_service_runscraper" + "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": "main/service/scraper_service.py", - "source_location": "L22", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L676", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_scraper_service_py", - "target": "service_scraper_service_registerscraperjobs" + "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": "main/service/scraper_service.py", - "source_location": "L25", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L705", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_scraper_service_py", - "target": "service_scraper_service_scraperservice" + "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": "main/service/scraper_service.py", - "source_location": "L27", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L731", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_scraper_service_py", - "target": "service_scraper_service_initialize" + "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": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/service/scraper_service.py", - "source_location": "L60", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L753", "weight": 1.0, "confidence_score": 1.0, - "source": "service_scraper_service_initialize", - "target": "service_scraper_service_registerscraperjobs" + "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": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/service/scraper_service.py", - "source_location": "L42", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L769", "weight": 1.0, - "source": "service_scraper_service_registerscraperjobs", - "target": "utils_scheduler_registerjob" + "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" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/service/scraper_service.py", - "source_location": "L23", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L780", "weight": 1.0, "confidence_score": 1.0, - "source": "service_scraper_service_rationale_23", - "target": "service_scraper_service_registerscraperjobs" + "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": "main/service/stocksapi_service.py", - "source_location": "L10", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L807", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_stocksapi_service_py", - "target": "service_stocksapi_service_mcpdetectmiddleware" + "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": "main/service/stocksapi_service.py", - "source_location": "L6", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_stocksapi_service_py", - "target": "service_stocksapi_service_stocksapiservice" + "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": "main/service/stocksapi_service.py", - "source_location": "L8", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_stocksapi_service_py", - "target": "service_stocksapi_service_initialize" + "source": "plans_2026_09_04_wallet_management_wallet_management_thoth_iyagba_implementation_plan", + "target": "plans_2026_09_04_wallet_management_global_constraints" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/service/stocksapi_service.py", - "source_location": "L11", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L35", "weight": 1.0, "confidence_score": 1.0, - "source": "service_stocksapi_service_mcpdetectmiddleware", - "target": "service_stocksapi_service_mcpdetectmiddleware_init" + "source": "plans_2026_09_04_wallet_management_wallet_management_thoth_iyagba_implementation_plan", + "target": "plans_2026_09_04_wallet_management_file_structure" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/service/stocksapi_service.py", - "source_location": "L14", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L60", "weight": 1.0, "confidence_score": 1.0, - "source": "service_stocksapi_service_mcpdetectmiddleware", - "target": "service_stocksapi_service_mcpdetectmiddleware_call" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/service/stocksapi_service.py", - "source_location": "L4", - "weight": 0.8, - "confidence_score": 0.5, - "source": "service_stocksapi_service_mcpdetectmiddleware", - "target": "utils_service_manager_servicemanager" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/service/stocksapi_service.py", - "source_location": "L1", - "weight": 0.8, - "confidence_score": 0.5, - "source": "service_stocksapi_service_stocksapiservice", - "target": "utils_service_manager_servicemanager" + "source": "plans_2026_09_04_wallet_management_file_structure", + "target": "plans_2026_09_04_wallet_management_task_1_wallet_models_and_user_relationship" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/service/stocksapi_service.py", - "source_location": "L29", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L166", "weight": 1.0, - "source": "service_stocksapi_service_initialize", - "target": "utils_service_manager_getapp" + "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" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/service/user_service.py", - "source_location": "L16", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L269", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_user_service_py", - "target": "service_user_service_removeinactivesessions" + "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": "main/service/user_service.py", - "source_location": "L4", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L391", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_user_service_py", - "target": "service_user_service_userservice" + "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": "main/service/user_service.py", - "source_location": "L6", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L567", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_user_service_py", - "target": "service_user_service_initialize" + "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": "main/service/user_service.py", - "source_location": "L46", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L720", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_user_service_py", - "target": "service_user_service_registersessioncleanupjobs" + "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": "main/service/user_service.py", - "source_location": "L33", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L869", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_user_service_py", - "target": "service_user_service_inactivesessionsscheduler" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/service/user_service.py", - "source_location": "L1", - "weight": 0.8, - "confidence_score": 0.5, - "source": "service_user_service_userservice", - "target": "utils_service_manager_servicemanager" + "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": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/service/user_service.py", - "source_location": "L42", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1000", "weight": 1.0, - "source": "service_user_service_initialize", - "target": "utils_service_manager_getapp" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/service/user_service.py", - "source_location": "L48", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1115", "weight": 1.0, - "source": "service_user_service_initialize", - "target": "utils_scheduler_registerjob" + "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" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/service/user_service.py", - "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": "service_user_service_initialize", - "target": "service_user_service_registersessioncleanupjobs" + "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": "main/utils/connectivity.py", - "source_location": "L13", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1325", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_connectivity_py", - "target": "utils_connectivity_checkdatabaseconnection" + "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": "main/utils/connectivity.py", - "source_location": "L51", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1482", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_connectivity_py", - "target": "utils_connectivity_checkserviceconnection" + "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": "main/utils/connectivity.py", - "source_location": "L13", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1618", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_connectivity_py", - "target": "utils_connectivity_checkmysqlconnection" + "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": "main/utils/connectivity.py", - "source_location": "L13", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L73", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_connectivity_py", - "target": "utils_connectivity_checksingledb" + "source": "plans_2026_09_04_wallet_management_task_1_wallet_models_and_user_relationship", + "target": "plans_2026_09_04_wallet_management_codeblock_1" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_connectivity_coverage.py", - "source_location": "L112", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L101", "weight": 1.0, - "source": "utils_connectivity_checkserviceconnection", - "target": "tests_test_connectivity_coverage_test_service_not_found" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_connectivity_coverage.py", - "source_location": "L124", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L138", "weight": 1.0, - "source": "utils_connectivity_checkserviceconnection", - "target": "tests_test_connectivity_coverage_test_stocks_api_health_ok" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_connectivity_coverage.py", - "source_location": "L139", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L144", "weight": 1.0, - "source": "utils_connectivity_checkserviceconnection", - "target": "tests_test_connectivity_coverage_test_non_stocks_prefix" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_connectivity_coverage.py", - "source_location": "L154", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L159", "weight": 1.0, - "source": "utils_connectivity_checkserviceconnection", - "target": "tests_test_connectivity_coverage_test_non_200_status" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_connectivity_coverage.py", - "source_location": "L164", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L189", "weight": 1.0, - "source": "utils_connectivity_checkserviceconnection", - "target": "tests_test_connectivity_coverage_test_connection_error" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_connectivity_coverage.py", - "source_location": "L174", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L248", "weight": 1.0, - "source": "utils_connectivity_checkserviceconnection", - "target": "tests_test_connectivity_coverage_test_timeout" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_connectivity_coverage.py", - "source_location": "L184", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L262", "weight": 1.0, - "source": "utils_connectivity_checkserviceconnection", - "target": "tests_test_connectivity_coverage_test_request_exception" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_connectivity_coverage.py", - "source_location": "L194", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L281", "weight": 1.0, - "source": "utils_connectivity_checkserviceconnection", - "target": "tests_test_connectivity_coverage_test_generic_exception" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/utils/connectivity.py", - "source_location": "L66", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L325", "weight": 1.0, - "source": "utils_connectivity_checkserviceconnection", - "target": "utils_http_session_get_session" + "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" }, { - "relation": "imports_from", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L5", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L384", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_errors_py", - "target": "fastapi" + "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": "main/utils/errors.py", - "source_location": "L13", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L404", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_errors_py", - "target": "utils_errors_errorresponse" + "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": "main/utils/errors.py", - "source_location": "L21", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L471", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_errors_py", - "target": "utils_errors_requestcontextfilter" + "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": "main/utils/errors.py", - "source_location": "L27", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L524", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_errors_py", - "target": "utils_errors_builderrorresponse" + "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": "main/utils/errors.py", - "source_location": "L37", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L560", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_errors_py", - "target": "utils_errors_httpexceptionhandler" + "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": "main/utils/errors.py", - "source_location": "L44", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L580", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_errors_py", - "target": "utils_errors_validationexceptionhandler" + "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": "main/utils/errors.py", - "source_location": "L56", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L649", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_errors_py", - "target": "utils_errors_genericexceptionhandler" + "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": "main/utils/errors.py", - "source_location": "L65", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L659", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_errors_py", - "target": "utils_errors_registererrorhandlers" + "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": "main/utils/errors.py", - "source_location": "L29", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L693", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_errors_py", - "target": "utils_errors_build_error_response" + "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": "main/utils/errors.py", - "source_location": "L38", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L713", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_errors_py", - "target": "utils_errors_http_exception_handler" + "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": "main/utils/errors.py", - "source_location": "L45", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L732", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_errors_py", - "target": "utils_errors_validation_exception_handler" + "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": "main/utils/errors.py", - "source_location": "L57", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L804", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_errors_py", - "target": "utils_errors_generic_exception_handler" + "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": "main/utils/errors.py", - "source_location": "L66", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L862", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_errors_py", - "target": "utils_errors_register_error_handlers" + "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": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L28", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L882", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_errors_errorresponse", - "target": "utils_errors_builderrorresponse" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L12", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_errors_errorresponse", - "target": "tests_test_error_handlers_samplebody" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L12", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_errors_errorresponse", - "target": "tests_test_error_handlers_testerrorresponsemodel" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L12", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_errors_errorresponse", - "target": "tests_test_error_handlers_testrequestcontextfilter" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L12", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_errors_errorresponse", - "target": "tests_test_error_handlers_testhttpexceptionhandler" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L12", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_errors_errorresponse", - "target": "tests_test_error_handlers_testvalidationexceptionhandler" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L12", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_errors_errorresponse", - "target": "tests_test_error_handlers_testgenericexceptionhandler" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L12", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_errors_errorresponse", - "target": "tests_test_error_handlers_testsuccesspassthrough" + "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": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_error_handlers.py", - "source_location": "L56", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L944", "weight": 1.0, - "source": "utils_errors_errorresponse", - "target": "tests_test_error_handlers_testerrorresponsemodel_test_error_response_structure" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_error_handlers.py", - "source_location": "L65", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L972", "weight": 1.0, - "source": "utils_errors_errorresponse", - "target": "tests_test_error_handlers_testerrorresponsemodel_test_error_response_with_detail_and_request_id" + "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" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L30", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L993", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_errors_errorresponse", - "target": "utils_errors_build_error_response" + "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": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L24", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1013", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_errors_requestcontextfilter", - "target": "utils_errors_requestcontextfilter_filter" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/utils/logging_config.py", - "source_location": "L9", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_errors_requestcontextfilter", - "target": "utils_logging_config_discordhandler" + "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": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/utils/logging_config.py", - "source_location": "L20", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1062", "weight": 1.0, - "source": "utils_errors_requestcontextfilter", - "target": "utils_logging_config_setuplogging" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L12", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_errors_requestcontextfilter", - "target": "tests_test_error_handlers_samplebody" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L12", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_errors_requestcontextfilter", - "target": "tests_test_error_handlers_testerrorresponsemodel" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L12", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_errors_requestcontextfilter", - "target": "tests_test_error_handlers_testrequestcontextfilter" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L12", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_errors_requestcontextfilter", - "target": "tests_test_error_handlers_testhttpexceptionhandler" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L12", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_errors_requestcontextfilter", - "target": "tests_test_error_handlers_testvalidationexceptionhandler" + "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" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L12", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_errors_requestcontextfilter", - "target": "tests_test_error_handlers_testgenericexceptionhandler" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1095", + "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" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L12", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_errors_requestcontextfilter", - "target": "tests_test_error_handlers_testsuccesspassthrough" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1108", + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_error_handlers.py", - "source_location": "L78", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1143", "weight": 1.0, - "source": "utils_errors_requestcontextfilter", - "target": "tests_test_error_handlers_testrequestcontextfilter_test_injects_request_id_from_contextvar" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_error_handlers.py", - "source_location": "L87", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1157", "weight": 1.0, - "source": "utils_errors_requestcontextfilter", - "target": "tests_test_error_handlers_testrequestcontextfilter_test_empty_request_id_default" + "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" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L22", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1165", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_errors_requestcontextfilter", - "target": "utils_errors_rationale_22" + "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": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L40", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1192", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_errors_builderrorresponse", - "target": "utils_errors_httpexceptionhandler" + "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": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L52", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1217", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_errors_builderrorresponse", - "target": "utils_errors_validationexceptionhandler" + "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": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L61", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1237", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_errors_builderrorresponse", - "target": "utils_errors_genericexceptionhandler" + "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": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/conftest.py", - "source_location": "L84", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1276", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_conftest_stocks_http_client" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/conftest.py", - "source_location": "L93", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1299", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_conftest_client" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L31", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1318", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_make_auth_client" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L46", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1341", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_make_user_client" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L66", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1397", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_make_prometheus_client" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L87", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1419", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_make_stocksapi_client" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L685", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1452", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testgetsessions_test_get_sessions" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L731", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1475", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testgetcurrentsession_test_get_current_session_found" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L754", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1496", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testgetcurrentsession_test_get_current_session_not_found" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L784", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1512", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testrevokesession_test_revoke_session_success" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L807", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1528", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testrevokesession_test_revoke_session_not_found" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L832", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1546", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testrevokesession_test_revoke_session_failure" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L858", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1582", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testrevokeallsessions_test_revoke_all_sessions" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L975", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1613", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testprometheusgethistory_test_get_history_found" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1011", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1635", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testprometheusgethistory_test_get_history_not_found" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1090", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1661", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testprometheuschat_test_chat_existing_session_verified" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1132", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1686", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testprometheuschat_test_chat_existing_session_not_owner" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_error_handlers.py", - "source_location": "L28", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1727", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_error_handlers_app" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L28", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-12-artifact-removal-cache-verdict.md", + "source_location": "L1", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_oauth_cookie_security_make_callback_client" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sso_state_cookie.py", - "source_location": "L32", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-12-artifact-removal-cache-verdict.md", + "source_location": "L3", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_sso_state_cookie_build_app" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_controller.py", - "source_location": "L38", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-12-artifact-removal-cache-verdict.md", + "source_location": "L25", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_memory_controller_testmemorycontrollerroutes_test_get_memories_rejects_unauthenticated" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_controller.py", - "source_location": "L57", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L1", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_memory_controller_testmemorycontrollerroutes_test_get_memories_rejects_basic_user" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1165", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L13", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_http_route" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1353", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L24", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_stocks_api_coverage_testquerylivecotation_test_http_route_returns_200" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1377", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L79", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_stocks_api_coverage_testquerylivecotation_test_http_route_search_required" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1466", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L139", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_stocks_api_coverage_testquerylivecotation_test_cotations_search_required" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1298", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L171", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_search_required" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L156", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L185", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testregisterendpoint_make_register_client" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L236", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L35", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testloginendpoint_make_login_client" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L289", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L65", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testlogoutendpoint_make_logout_client" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L433", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L74", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testgooglecallback_make_callback_client" + "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" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/http_session.py", - "source_location": "L9", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L97", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_http_session_py", - "target": "utils_http_session_getsession" + "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": "main/utils/http_session.py", - "source_location": "L22", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L134", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_http_session_py", - "target": "utils_http_session_cleanup" + "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": "main/utils/http_session.py", - "source_location": "L8", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L148", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_http_session_py", - "target": "utils_http_session_get_session" + "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": "main/utils/logging_config.py", - "source_location": "L12", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L166", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_logging_config_py", - "target": "utils_logging_config_setuplogging" + "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": "main/utils/logging_config.py", - "source_location": "L24", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L189", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_logging_config_py", - "target": "utils_logging_config_discordhandler" + "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": "main/utils/logging_config.py", - "source_location": "L49", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_logging_config_py", - "target": "utils_logging_config_setupdiscordhandler" + "source": "docs_superpowers_plans_2026_09_15_adopt_libs_md", + "target": "plans_2026_09_15_adopt_libs_adopt_libs_implementation_plan" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/logging_config.py", - "source_location": "L37", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_logging_config_discordhandler", - "target": "utils_logging_config_discordhandler_init" + "source": "plans_2026_09_15_adopt_libs_adopt_libs_implementation_plan", + "target": "plans_2026_09_15_adopt_libs_global_constraints" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/logging_config.py", - "source_location": "L25", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L24", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_logging_config_discordhandler", - "target": "utils_logging_config_discordhandler_emit" + "source": "plans_2026_09_15_adopt_libs_global_constraints", + "target": "plans_2026_09_15_adopt_libs_task_1_tenacity_replaces_bespoke_retries" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/logging_config.py", - "source_location": "L51", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L56", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_logging_config_discordhandler", - "target": "utils_logging_config_setupdiscordhandler" + "source": "plans_2026_09_15_adopt_libs_global_constraints", + "target": "plans_2026_09_15_adopt_libs_task_2_cashews_native_probe_first" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_logging_config_coverage.py", - "source_location": "L9", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_logging_config_discordhandler", - "target": "tests_test_logging_config_coverage_testdiscordhandleremit" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L76", + "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" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_logging_config_coverage.py", - "source_location": "L9", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_logging_config_discordhandler", - "target": "tests_test_logging_config_coverage_testsetuplogging" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L102", + "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" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_thread_safety.py", - "source_location": "L138", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_logging_config_discordhandler", - "target": "tests_test_thread_safety_testgetsession" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L117", + "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" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_thread_safety.py", - "source_location": "L138", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_logging_config_discordhandler", - "target": "tests_test_thread_safety_testdiscordhandlerthreadpool" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L132", + "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" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_thread_safety.py", - "source_location": "L138", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_logging_config_discordhandler", - "target": "tests_test_thread_safety_testconcurrentgetsession" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L143", + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_logging_config_coverage.py", - "source_location": "L10", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L154", "weight": 1.0, - "source": "utils_logging_config_discordhandler", - "target": "tests_test_logging_config_coverage_testdiscordhandleremit_make_handler" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_thread_safety.py", - "source_location": "L110", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L38", "weight": 1.0, - "source": "utils_logging_config_discordhandler", - "target": "tests_test_thread_safety_testdiscordhandlerthreadpool_test_emit_submits_to_executor" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_thread_safety.py", - "source_location": "L140", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L51", "weight": 1.0, - "source": "utils_logging_config_discordhandler", - "target": "tests_test_thread_safety_testdiscordhandlerthreadpool_test_concurrent_emits_do_not_spawn_unbounded_threads" + "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" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_thread_safety.py", - "source_location": "L138", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_logging_config_discordhandler", - "target": "tests_test_thread_safety_testconcurrenthttpproxy" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L72", + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_logging_config_coverage.py", - "source_location": "L107", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L88", "weight": 1.0, - "source": "utils_logging_config_setupdiscordhandler", - "target": "tests_test_logging_config_coverage_test_setup_discord_handler_enabled" + "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" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_logging_config_coverage.py", - "source_location": "L113", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L1", "weight": 1.0, - "source": "utils_logging_config_setupdiscordhandler", - "target": "tests_test_logging_config_coverage_test_setup_discord_handler_disabled" + "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" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/migrator.py", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", "source_location": "L8", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_migrator_py", - "target": "utils_migrator_runmigrations" + "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": "main/utils/request_id.py", - "source_location": "L13", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L46", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_request_id_py", - "target": "utils_request_id_requestidmiddleware" + "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": "inherits", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/request_id.py", - "source_location": "L13", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L68", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_request_id_requestidmiddleware", - "target": "basehttpmiddleware" + "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": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/request_id.py", - "source_location": "L14", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L131", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_request_id_requestidmiddleware", - "target": "utils_request_id_requestidmiddleware_dispatch" + "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": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L17", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_request_id_requestidmiddleware", - "target": "tests_test_error_handlers_samplebody" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L175", + "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" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L17", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_request_id_requestidmiddleware", - "target": "tests_test_error_handlers_testerrorresponsemodel" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L203", + "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" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L17", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_request_id_requestidmiddleware", - "target": "tests_test_error_handlers_testrequestcontextfilter" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L235", + "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" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L17", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_request_id_requestidmiddleware", - "target": "tests_test_error_handlers_testhttpexceptionhandler" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L266", + "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" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L17", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_request_id_requestidmiddleware", - "target": "tests_test_error_handlers_testvalidationexceptionhandler" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L287", + "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" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L17", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_request_id_requestidmiddleware", - "target": "tests_test_error_handlers_testgenericexceptionhandler" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L302", + "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" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L17", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_request_id_requestidmiddleware", - "target": "tests_test_error_handlers_testsuccesspassthrough" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L326", + "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" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_request_id.py", - "source_location": "L10", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_request_id_requestidmiddleware", - "target": "tests_test_request_id_testrequestidmiddleware" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L364", + "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" }, { - "relation": "imports_from", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/roles.py", - "source_location": "L2", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L403", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_roles_py", - "target": "fastapi" + "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": "main/utils/roles.py", - "source_location": "L4", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L422", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_roles_py", - "target": "utils_roles_permission" + "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": "main/utils/roles.py", - "source_location": "L28", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L53", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_roles_py", - "target": "utils_roles_all" + "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", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/utils/roles.py", - "source_location": "L32", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L280", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_roles_py", - "target": "utils_roles_roles" + "source": "controller_authentication_controller_verifyservicekey", + "target": "controller_authentication_controller_requireservicetoken" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "main/utils/roles.py", - "source_location": "L51", + "source_location": "L111", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_roles_py", - "target": "utils_roles_checkaccess" + "source": "utils_roles_introspectuser", + "target": "utils_roles_servicetoken" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "main/utils/roles.py", - "source_location": "L64", + "source_location": "L109", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_roles_py", - "target": "utils_roles_requirepermission" + "source": "utils_roles_introspectuser", + "target": "utils_roles_introspecturl" }, { - "relation": "inherits", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "main/utils/roles.py", - "source_location": "L4", + "source_location": "L93", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_roles_permission", - "target": "intflag" + "source": "utils_roles_introspectuser", + "target": "utils_roles_extractcredential" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_roles.py", - "source_location": "L7", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_roles_testpermission" + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "config.py", + "source_location": "L79", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_config_basemansasettings", + "target": "server_config_prometheussettings" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_roles.py", - "source_location": "L7", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_roles_testroles" + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "config.py", + "source_location": "L86", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_config_prometheussettings", + "target": "server_config_prometheussettings_getitem" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_roles_coverage.py", - "source_location": "L5", + "source_file": "tests/test_config.py", + "source_location": "L2", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_roles_coverage_testcheckaccess" + "source": "server_config_prometheussettings", + "target": "tests_test_config_testconfig" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/test_roles_coverage.py", - "source_location": "L5", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_roles_coverage_testrequirepermission" + "confidence_score": 0.8, + "source_file": "tests/test_config.py", + "source_location": "L13", + "weight": 1.0, + "source": "server_config_prometheussettings", + "target": "tests_test_config_testconfig_test_prometheus_getitem" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_roles_coverage.py", - "source_location": "L5", + "source_file": "tests/test_config_sandbox.py", + "source_location": "L2", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_roles_coverage_testpermissionall" + "source": "server_config_prometheussettings", + "target": "tests_test_config_sandbox_testsandboxconfig" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/test_roles_coverage.py", - "source_location": "L5", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_roles_coverage_testroleshierarchy" + "confidence_score": 0.8, + "source_file": "tests/test_config_sandbox.py", + "source_location": "L7", + "weight": 1.0, + "source": "server_config_prometheussettings", + "target": "tests_test_config_sandbox_testsandboxconfig_test_sandbox_defaults" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L7", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "prometheus_memory_memorymanager" + "confidence_score": 0.8, + "source_file": "tests/test_config_sandbox.py", + "source_location": "L14", + "weight": 1.0, + "source": "server_config_prometheussettings", + "target": "tests_test_config_sandbox_testsandboxconfig_test_sandbox_fields_exist" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/test_memory_manager.py", - "source_location": "L6", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_memory_manager_testgetmemorylimit" + "confidence_score": 0.8, + "source_file": "tests/test_config_sandbox.py", + "source_location": "L22", + "weight": 1.0, + "source": "server_config_prometheussettings", + "target": "tests_test_config_sandbox_testsandboxconfig_test_sandbox_types" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_manager.py", - "source_location": "L6", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_memory_manager_testupsertmemory" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L26", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_prometheus_agent_py", + "target": "prometheus_agent_safefilter" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_manager.py", - "source_location": "L6", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_memory_manager_testcountmemories" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L31", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_prometheus_agent_py", + "target": "prometheus_agent_persistevent" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_manager.py", - "source_location": "L6", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_memory_manager_testgetusermemories" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L58", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_prometheus_agent_py", + "target": "prometheus_agent_getclient" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_manager.py", - "source_location": "L6", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_memory_manager_testdeletememory" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L134", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_prometheus_agent_py", + "target": "prometheus_agent_prometheus" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_manager.py", - "source_location": "L6", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_memory_manager_testsearchfulltext" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L139", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_prometheus_agent_py", + "target": "prometheus_agent_buildsystemprompt" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testissecurescheme" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L21", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_prometheus_agent_py", + "target": "prometheus_agent_safe_filter" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testhealthendpoint" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L27", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_prometheus_agent_py", + "target": "prometheus_agent_onextractiondone" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testregisterendpoint" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L35", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_prometheus_agent_py", + "target": "prometheus_agent_spawnextraction" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testloginendpoint" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L58", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_prometheus_agent_py", + "target": "prometheus_agent_get_client" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testlogoutendpoint" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L161", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_prometheus_agent_py", + "target": "prometheus_agent_openmcpclients" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testgooglelogin" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L90", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_prometheus_agent_py", + "target": "prometheus_agent_executememorytool" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testgooglecallback" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L27", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_prometheus_agent_py", + "target": "prometheus_agent_build_system_prompt" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testuserhealth" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L57", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_prometheus_agent_py", + "target": "prometheus_agent_get_memory_tools" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testgetme" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L92", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_prometheus_agent_py", + "target": "prometheus_agent_execute_memory_tool" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testupgradeendpoints" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L47", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_prometheus_agent_py", + "target": "prometheus_agent_chatsession" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testadminaccess" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L344", + "weight": 1.0, + "confidence_score": 1.0, + "source": "prometheus_agent_prometheus_streammessage", + "target": "prometheus_agent_persistevent" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testgetsessions" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L223", + "weight": 1.0, + "confidence_score": 1.0, + "source": "prometheus_agent_prometheus_init", + "target": "prometheus_agent_getclient" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testgetcurrentsession" + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L135", + "weight": 1.0, + "confidence_score": 1.0, + "source": "prometheus_agent_prometheus", + "target": "prometheus_agent_prometheus_init" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testrevokesession" + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L169", + "weight": 1.0, + "confidence_score": 1.0, + "source": "prometheus_agent_prometheus", + "target": "prometheus_agent_prometheus_makechat" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testrevokeallsessions" + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L178", + "weight": 1.0, + "confidence_score": 1.0, + "source": "prometheus_agent_prometheus", + "target": "prometheus_agent_prometheus_streammessage" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L13", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testprometheushealth" + "source": "prometheus_agent_prometheus", + "target": "models_prometheus_prometheussession" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L11", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testprometheusgetsessions" + "source": "prometheus_agent_prometheus", + "target": "models_memory_prometheusmemory" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L12", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testprometheuscreatesession" + "source": "prometheus_agent_prometheus", + "target": "prometheus_chat_prometheuschatmanager" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L18", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testprometheusupdatesessiontitle" + "source": "prometheus_agent_prometheus", + "target": "prometheus_compact_prometheuscompactor" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L14", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testprometheusgethistory" + "source": "prometheus_agent_prometheus", + "target": "prometheus_sandbox_sandboxmanager" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L16", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testprometheusdeletesession" + "source": "prometheus_agent_prometheus", + "target": "prometheus_events_looplogger" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L15", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testprometheuschat" + "source": "prometheus_agent_prometheus", + "target": "prometheus_compact_fieldregistry" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L16", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_teststocksapihealth" + "source": "prometheus_agent_prometheus", + "target": "prometheus_mcp_mcpclientpool" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L14", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_teststocksapikeytest" + "source": "prometheus_agent_prometheus", + "target": "prometheus_state_harnessstate" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L17", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_teststocksapihistorical" + "source": "prometheus_agent_prometheus", + "target": "prometheus_summarizer_prometheussummarizer" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L3", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_teststocksapifundamental" + "source": "prometheus_agent_prometheus", + "target": "tests_test_agent_state_integration_testbuildsystempromptstate" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L3", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_teststocksapigeneratekey" + "source": "prometheus_agent_prometheus", + "target": "tests_test_agent_state_integration_testsendmessagestateintegration" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L3", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testaddroletouser" + "source": "prometheus_agent_prometheus", + "target": "tests_test_agent_state_integration_teststreammessagestateintegration" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L192", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testgetcurrentuser" + "source": "prometheus_agent_prometheus", + "target": "tests_test_agent_state_integration_testsystempromptstateinstructions" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L90", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testhashpasswordempty" + "source": "prometheus_agent_prometheus", + "target": "tests_test_memory_tools_wiring_testmemorytoolfunctions" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L90", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testverifyaccesstoken" + "source": "prometheus_agent_prometheus", + "target": "tests_test_memory_tools_wiring_testtoolregistry" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L58", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testextracttokenpayloadreraise" + "source": "prometheus_agent_prometheus", + "target": "tests_test_memory_tools_wiring_testmakechatincludesmemorytools" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L58", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testmanagerinit" - }, - { - "relation": "inherits", - "confidence": "EXTRACTED", - "source_file": "main/utils/roles.py", - "source_location": "L32", - "weight": 1.0, - "confidence_score": 1.0, - "source": "intflag", - "target": "utils_roles_roles" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L84", - "weight": 1.0, - "source": "stocks_api_compress_tocolumnar", - "target": "utils_roles_all" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/stocks_api/compressor.py", - "source_location": "L91", - "weight": 1.0, - "source": "stocks_api_compressor_tocolumnar", - "target": "utils_roles_all" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_vector_utils.py", - "source_location": "L112", - "weight": 1.0, - "source": "utils_roles_all", - "target": "tests_test_vector_utils_testcontenthash_test_hex_format" + "source": "prometheus_agent_prometheus", + "target": "tests_test_memory_tools_wiring_testdispatchroutesmemorytools" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_roles.py", - "source_location": "L7", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L159", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_roles_testpermission" + "source": "prometheus_agent_prometheus", + "target": "tests_test_prometheus_auth_coverage_testprometheusinit" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_roles.py", - "source_location": "L7", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L159", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_roles_testroles" + "source": "prometheus_agent_prometheus", + "target": "tests_test_prometheus_auth_coverage_testprometheussendmessage" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_roles_coverage.py", - "source_location": "L65", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L159", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_roles_coverage_testcheckaccess" + "source": "prometheus_agent_prometheus", + "target": "tests_test_prometheus_auth_coverage_testprometheuschatmanager" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_roles_coverage.py", - "source_location": "L65", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L159", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_roles_coverage_testrequirepermission" + "source": "prometheus_agent_prometheus", + "target": "tests_test_prometheus_auth_coverage_testauthenticationmanager" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_roles_coverage.py", - "source_location": "L65", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L159", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_roles_coverage_testpermissionall" + "source": "prometheus_agent_prometheus", + "target": "tests_test_prometheus_auth_coverage_testsessionmanager" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_roles_coverage.py", - "source_location": "L65", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L159", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_roles_coverage_testroleshierarchy" + "source": "prometheus_agent_prometheus", + "target": "tests_test_prometheus_auth_coverage_testsso" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L7", + "source_file": "tests/test_streammessage_no_chatsession.py", + "source_location": "L14", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "prometheus_memory_memorymanager" + "source": "prometheus_agent_prometheus", + "target": "tests_test_streammessage_no_chatsession_fakechunk" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "tests/test_streammessage_no_chatsession.py", + "source_location": "L14", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testissecurescheme" + "source": "prometheus_agent_prometheus", + "target": "tests_test_streammessage_no_chatsession_teststreammessagenochatsession" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", + "source_file": "tests/test_agent_sandbox_integration.py", "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testhealthendpoint" + "source": "prometheus_agent_prometheus", + "target": "tests_test_agent_sandbox_integration_testpersistentsandboxlifecycle" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L31", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testregisterendpoint" + "source": "prometheus_agent_prometheus", + "target": "models_memory_usermemory" }, { - "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": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L34", + "weight": 1.0, + "confidence_score": 1.0, + "source": "prometheus_agent_prometheus", + "target": "prometheus_agent_prometheus_sendmessage" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L4", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testlogoutendpoint" + "source": "prometheus_agent_prometheus", + "target": "tests_test_agent_sandbox_integration_testagentsandboxintegration" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L3", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testgooglelogin" + "source": "prometheus_agent_prometheus", + "target": "tests_test_agent_sandbox_integration_testpremiumcheck" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L15", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testgooglecallback" + "source": "prometheus_agent_prometheus", + "target": "prometheus_cache_resultcache" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L58", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testuserhealth" + "source": "prometheus_agent_prometheus", + "target": "tests_test_memory_tools_wiring_testmemorytoolsdefinition" }, { - "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": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L102", + "weight": 1.0, + "confidence_score": 1.0, + "source": "prometheus_agent_prometheus", + "target": "prometheus_agent_prometheus_executetoolcall" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L94", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testupgradeendpoints" + "source": "prometheus_agent_prometheus", + "target": "prometheus_memory_memorymanager" }, { - "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": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L21", + "weight": 1.0, + "confidence_score": 1.0, + "source": "prometheus_agent_prometheus", + "target": "prometheus_agent_prometheus_updatedates" }, { - "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": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L224", + "weight": 1.0, + "confidence_score": 1.0, + "source": "prometheus_agent_prometheus_init", + "target": "prometheus_agent_get_client" }, { - "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": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L19", + "weight": 1.0, + "confidence_score": 1.0, + "source": "prometheus_agent_prometheus_init", + "target": "prometheus_agent_prometheus_updatedates" }, { - "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": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L182", + "weight": 1.0, + "confidence_score": 1.0, + "source": "prometheus_agent_prometheus_streammessage", + "target": "prometheus_agent_buildsystemprompt" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "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" + "confidence_score": 0.8, + "source_file": "main/app/prometheus/agent.py", + "source_location": "L213", + "weight": 1.0, + "source": "prometheus_agent_buildsystemprompt", + "target": "prometheus_compact_prometheuscompactor" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "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" + "confidence_score": 0.8, + "source_file": "main/app/prometheus/agent.py", + "source_location": "L163", + "weight": 1.0, + "source": "prometheus_agent_buildsystemprompt", + "target": "prometheus_summarizer_prometheussummarizer" }, { - "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": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L261", + "weight": 1.0, + "confidence_score": 1.0, + "source": "prometheus_agent_buildsystemprompt", + "target": "prometheus_agent_prometheus_sendmessage" }, { - "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": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L186", + "weight": 1.0, + "confidence_score": 1.0, + "source": "prometheus_agent_prometheus_streammessage", + "target": "prometheus_agent_prometheus_makechat" }, { - "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": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L160", + "weight": 1.0, + "confidence_score": 1.0, + "source": "prometheus_agent_prometheus_makechat", + "target": "prometheus_agent_prometheus_sendmessage" }, { - "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": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L212", + "weight": 1.0, + "confidence_score": 1.0, + "source": "prometheus_agent_prometheus_makechat", + "target": "prometheus_agent_get_memory_tools" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "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" + "confidence_score": 0.8, + "source_file": "main/app/prometheus/agent.py", + "source_location": "L251", + "weight": 1.0, + "source": "prometheus_agent_prometheus_streammessage", + "target": "prometheus_compact_loadfielddata" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "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" + "confidence_score": 0.8, + "source_file": "main/app/prometheus/agent.py", + "source_location": "L262", + "weight": 1.0, + "source": "prometheus_agent_prometheus_streammessage", + "target": "prometheus_memory_newtokencache" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "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" + "confidence_score": 0.8, + "source_file": "main/app/prometheus/agent.py", + "source_location": "L256", + "weight": 1.0, + "source": "prometheus_agent_prometheus_streammessage", + "target": "prometheus_compact_prometheuscompactor" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "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" + "confidence_score": 0.8, + "source_file": "main/app/prometheus/agent.py", + "source_location": "L252", + "weight": 1.0, + "source": "prometheus_agent_prometheus_streammessage", + "target": "prometheus_memory_extract" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "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" + "confidence_score": 0.8, + "source_file": "main/app/prometheus/agent.py", + "source_location": "L231", + "weight": 1.0, + "source": "prometheus_agent_prometheus_streammessage", + "target": "prometheus_tools_dispatchtoolcall" }, { - "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": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L272", + "weight": 1.0, + "confidence_score": 1.0, + "source": "prometheus_agent_prometheus_streammessage", + "target": "prometheus_agent_spawnextraction" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "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" + "confidence_score": 0.8, + "source_file": "main/app/prometheus/agent.py", + "source_location": "L202", + "weight": 1.0, + "source": "prometheus_agent_prometheus_streammessage", + "target": "prometheus_events_looplogger" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "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" + "confidence_score": 0.8, + "source_file": "main/app/prometheus/agent.py", + "source_location": "L239", + "weight": 1.0, + "source": "prometheus_agent_prometheus_streammessage", + "target": "prometheus_mcp_mcpclientpool" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "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" + "confidence_score": 0.8, + "source_file": "main/app/prometheus/agent.py", + "source_location": "L242", + "weight": 1.0, + "source": "prometheus_agent_prometheus_streammessage", + "target": "prometheus_compact_fieldregistry" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "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" + "confidence_score": 0.8, + "source_file": "main/app/prometheus/agent.py", + "source_location": "L182", + "weight": 1.0, + "source": "prometheus_agent_prometheus_streammessage", + "target": "prometheus_state_harnessstate" }, { - "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": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L185", + "weight": 1.0, + "confidence_score": 1.0, + "source": "prometheus_agent_prometheus_streammessage", + "target": "prometheus_agent_openmcpclients" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "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" + "confidence_score": 0.8, + "source_file": "main/app/prometheus/agent.py", + "source_location": "L293", + "weight": 1.0, + "source": "prometheus_agent_prometheus_streammessage", + "target": "prometheus_summarizer_prometheussummarizer" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "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", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/agent.py", + "source_location": "L203", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_utils_scheduler_py", - "target": "utils_scheduler_getsharedscheduler" + "source": "prometheus_agent_prometheus_streammessage", + "target": "prometheus_cache_resultcache" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/utils/scheduler.py", - "source_location": "L42", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L208", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_scheduler_py", - "target": "utils_scheduler_registerjob" + "source": "prometheus_agent_prometheus_streammessage", + "target": "prometheus_agent_prometheus_executetoolcall" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/utils/scheduler.py", - "source_location": "L1", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L281", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_scheduler_rationale_1", - "target": "main_utils_scheduler_py" + "source": "prometheus_agent_prometheus_streammessage", + "target": "prometheus_agent_build_system_prompt" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/utils/scheduler.py", - "source_location": "L50", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L88", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_scheduler_registerjob", - "target": "utils_scheduler_getsharedscheduler" + "source": "prometheus_agent_prometheus_streammessage", + "target": "prometheus_agent_chatsession" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/scheduler.py", - "source_location": "L33", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L15", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_scheduler_rationale_33", - "target": "utils_scheduler_getsharedscheduler" + "source": "main_app_prometheus_chat_py", + "target": "prometheus_chat_prometheuschatmanager" }, { - "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": "main/app/prometheus/chat.py", + "source_location": "L17", "weight": 1.0, - "source": "service_user_service_registersessioncleanupjobs", - "target": "utils_scheduler_registerjob" + "confidence_score": 1.0, + "source": "main_app_prometheus_chat_py", + "target": "prometheus_chat_getusersessions" }, { - "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": "main/app/prometheus/chat.py", + "source_location": "L35", "weight": 1.0, - "source": "service_prometheus_service_registermemorymaintenancejob", - "target": "utils_scheduler_registerjob" + "confidence_score": 1.0, + "source": "main_app_prometheus_chat_py", + "target": "prometheus_chat_createsession" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/scheduler.py", + "source_file": "main/app/prometheus/chat.py", "source_location": "L43", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_scheduler_rationale_43", - "target": "utils_scheduler_registerjob" + "source": "main_app_prometheus_chat_py", + "target": "prometheus_chat_updatesessiontitle" }, { - "relation": "imports_from", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/service_manager.py", - "source_location": "L8", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L52", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_service_manager_py", - "target": "fastapi" + "source": "main_app_prometheus_chat_py", + "target": "prometheus_chat_appendhistory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/service_manager.py", - "source_location": "L21", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L82", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_service_manager_py", - "target": "utils_service_manager_getapp" + "source": "main_app_prometheus_chat_py", + "target": "prometheus_chat_gethistory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/service_manager.py", - "source_location": "L48", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L105", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_service_manager_py", - "target": "utils_service_manager_runall" + "source": "main_app_prometheus_chat_py", + "target": "prometheus_chat_deletesession" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/service_manager.py", - "source_location": "L16", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L119", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_service_manager_py", - "target": "utils_service_manager_servicemanager" + "source": "main_app_prometheus_chat_py", + "target": "prometheus_chat_verifysessionownership" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/models/loader.py", - "source_location": "L12", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L54", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_models_loader_py", - "target": "models_loader_getembeddingmodel" + "source": "main_app_prometheus_chat_py", + "target": "prometheus_chat_savemessage" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/models/loader.py", - "source_location": "L21", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L76", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_models_loader_py", - "target": "models_loader_embed" + "source": "main_app_prometheus_chat_py", + "target": "prometheus_chat_saveloopevent" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/models/loader.py", - "source_location": "L11", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L98", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_models_loader_py", - "target": "models_loader_downloadmodel" + "source": "main_app_prometheus_chat_py", + "target": "prometheus_chat_updatesummary" }, { - "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": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L8", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_chat_prometheuschatmanager", + "target": "models_prometheus_prometheussession" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L26", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_memorycandidate", + "target": "prometheus_chat_prometheuschatmanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L319", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "prometheus_chat_prometheuschatmanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L383", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_chat_prometheuschatmanager", + "target": "tests_test_prometheus_auth_coverage_testprometheusinit" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L383", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_chat_prometheuschatmanager", + "target": "tests_test_prometheus_auth_coverage_testprometheussendmessage" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L650", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_chat_prometheuschatmanager", + "target": "tests_test_prometheus_auth_coverage_testprometheuschatmanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L650", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_chat_prometheuschatmanager", + "target": "tests_test_prometheus_auth_coverage_testauthenticationmanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L650", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_chat_prometheuschatmanager", + "target": "tests_test_prometheus_auth_coverage_testsessionmanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L650", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_chat_prometheuschatmanager", + "target": "tests_test_prometheus_auth_coverage_testsso" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/utils/models/loader.py", - "source_location": "L21", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L446", "weight": 1.0, - "confidence_score": 1.0, - "source": "models_loader_getembeddingmodel", - "target": "models_loader_downloadmodel" + "source": "prometheus_chat_prometheuschatmanager", + "target": "tests_test_prometheus_auth_coverage_testprometheuschatmanager_test_init" }, { - "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": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L650", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_chat_prometheuschatmanager", + "target": "tests_test_prometheus_auth_coverage_testprometheusgeneratorinit" }, { - "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": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L650", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_chat_prometheuschatmanager", + "target": "tests_test_prometheus_auth_coverage_testprometheusgeneratorexecuteworkflow" }, { - "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": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/generation.py", + "source_location": "L14", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_chat_prometheuschatmanager", + "target": "prometheus_generation_prometheusgenerator" }, { - "relation": "calls", - "context": "call", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "migrations/env.py", - "source_location": "L30", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L11", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_env_getdatabaseurl", - "target": "migrations_env_runmigrationsoffline" + "source": "prometheus_chat_prometheuschatmanager", + "target": "prometheus_chat_prometheuschatmanager_init" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/generation.py", + "source_location": "L14", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_chat_prometheuschatmanager", + "target": "prometheus_generation_sessionproxy" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "migrations/env.py", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/chat.py", "source_location": "L41", "weight": 1.0, - "confidence_score": 1.0, - "source": "migrations_env_getdatabaseurl", - "target": "migrations_env_runmigrationsonline" + "source": "prometheus_chat_createsession", + "target": "models_prometheus_prometheussession" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/25af7ad931e7_initial_migration.py", - "source_location": "L21", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L33", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_25af7ad931e7_initial_migration_py", - "target": "versions_25af7ad931e7_initial_migration_upgrade" + "source": "main_app_prometheus_compact_py", + "target": "prometheus_compact_gettokenizer" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/25af7ad931e7_initial_migration.py", - "source_location": "L61", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L45", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_25af7ad931e7_initial_migration_py", - "target": "versions_25af7ad931e7_initial_migration_downgrade" + "source": "main_app_prometheus_compact_py", + "target": "prometheus_compact_counttokens" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/25af7ad931e7_initial_migration.py", - "source_location": "L1", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L92", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_25af7ad931e7_initial_migration_py", - "target": "versions_25af7ad931e7_initial_migration_rationale_1" + "source": "main_app_prometheus_compact_py", + "target": "prometheus_compact_getstocksfieldsurl" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/4a2f1c9e3b5d_user_sessions.py", - "source_location": "L20", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L67", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_4a2f1c9e3b5d_user_sessions_py", - "target": "versions_4a2f1c9e3b5d_user_sessions_upgrade" + "source": "main_app_prometheus_compact_py", + "target": "prometheus_compact_istransientfieldserror" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/4a2f1c9e3b5d_user_sessions.py", - "source_location": "L47", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L82", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_4a2f1c9e3b5d_user_sessions_py", - "target": "versions_4a2f1c9e3b5d_user_sessions_downgrade" + "source": "main_app_prometheus_compact_py", + "target": "prometheus_compact_fetchfieldspayload" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/4a2f1c9e3b5d_user_sessions.py", - "source_location": "L1", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L93", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_4a2f1c9e3b5d_user_sessions_py", - "target": "versions_4a2f1c9e3b5d_user_sessions_rationale_1" + "source": "main_app_prometheus_compact_py", + "target": "prometheus_compact_loadfielddata" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/9f3b339dde20_drop_unused_user_sessions_columns.py", - "source_location": "L43", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L133", "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": "main_app_prometheus_compact_py", + "target": "prometheus_compact_getmetricregex" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/9f3b339dde20_drop_unused_user_sessions_columns.py", - "source_location": "L50", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L117", "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": "main_app_prometheus_compact_py", + "target": "prometheus_compact_dedup" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/9f3b339dde20_drop_unused_user_sessions_columns.py", - "source_location": "L1", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L109", "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": "main_app_prometheus_compact_py", + "target": "prometheus_compact_extracttickers" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/9f3b339dde20_drop_unused_user_sessions_columns.py", - "source_location": "L44", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L113", "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": "main_app_prometheus_compact_py", + "target": "prometheus_compact_extractmetrics" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/9f3b339dde20_drop_unused_user_sessions_columns.py", - "source_location": "L51", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L123", "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": "main_app_prometheus_compact_py", + "target": "prometheus_compact_extractdecisions" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/add_access_token_hash.py", - "source_location": "L21", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L137", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_add_access_token_hash_py", - "target": "versions_add_access_token_hash_upgrade" + "source": "main_app_prometheus_compact_py", + "target": "prometheus_compact_extractsnapshots" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/add_access_token_hash.py", - "source_location": "L54", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L150", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_add_access_token_hash_py", - "target": "versions_add_access_token_hash_downgrade" + "source": "main_app_prometheus_compact_py", + "target": "prometheus_compact_extracttoolcalls" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/add_access_token_hash.py", - "source_location": "L1", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L166", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_add_access_token_hash_py", - "target": "versions_add_access_token_hash_rationale_1" + "source": "main_app_prometheus_compact_py", + "target": "prometheus_compact_buildsummary" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/add_access_token_hash.py", - "source_location": "L22", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L186", "weight": 1.0, "confidence_score": 1.0, - "source": "versions_add_access_token_hash_upgrade", - "target": "versions_add_access_token_hash_rationale_22" + "source": "main_app_prometheus_compact_py", + "target": "prometheus_compact_prometheuscompactor" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/add_access_token_hash.py", - "source_location": "L55", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L119", "weight": 1.0, "confidence_score": 1.0, - "source": "versions_add_access_token_hash_downgrade", - "target": "versions_add_access_token_hash_rationale_55" + "source": "main_app_prometheus_compact_py", + "target": "prometheus_compact_gethistoricalfields" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/b1c2d3e4f5a6_create_prometheus_memories.py", - "source_location": "L22", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L123", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_b1c2d3e4f5a6_create_prometheus_memories_py", - "target": "versions_b1c2d3e4f5a6_create_prometheus_memories_upgrade" + "source": "main_app_prometheus_compact_py", + "target": "prometheus_compact_getfundamentalcolumns" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/b1c2d3e4f5a6_create_prometheus_memories.py", - "source_location": "L50", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L127", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_b1c2d3e4f5a6_create_prometheus_memories_py", - "target": "versions_b1c2d3e4f5a6_create_prometheus_memories_downgrade" + "source": "main_app_prometheus_compact_py", + "target": "prometheus_compact_invalidatefielddata" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/b1c2d3e4f5a6_create_prometheus_memories.py", - "source_location": "L60", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L41", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_b1c2d3e4f5a6_create_prometheus_memories_py", - "target": "versions_b1c2d3e4f5a6_create_prometheus_memories_fix_partial" + "source": "main_app_prometheus_compact_py", + "target": "prometheus_compact_fieldregistry" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/b1c2d3e4f5a6_create_prometheus_memories.py", - "source_location": "L1", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L105", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_b1c2d3e4f5a6_create_prometheus_memories_py", - "target": "versions_b1c2d3e4f5a6_create_prometheus_memories_rationale_1" + "source": "main_app_prometheus_compact_py", + "target": "prometheus_compact_charcount" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "migrations/versions/c2e4f6a8b0c1_drop_embedding_model_version.py", - "source_location": "L22", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L48", "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": "prometheus_compact_counttokens", + "target": "prometheus_compact_gettokenizer" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "migrations/versions/c2e4f6a8b0c1_drop_embedding_model_version.py", - "source_location": "L27", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L228", "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": "prometheus_compact_prometheuscompactor_shouldcompact", + "target": "prometheus_compact_counttokens" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "migrations/versions/c2e4f6a8b0c1_drop_embedding_model_version.py", - "source_location": "L1", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L191", "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": "prometheus_memory_sumtokens", + "target": "prometheus_compact_counttokens" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "migrations/versions/d3df3fc5ca72_rename_memory_base_score.py", - "source_location": "L17", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L347", "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": "prometheus_memory_counttokenscached", + "target": "prometheus_compact_counttokens" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "migrations/versions/d3df3fc5ca72_rename_memory_base_score.py", - "source_location": "L21", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L340", "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": "prometheus_memory_extract", + "target": "prometheus_compact_counttokens" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "migrations/versions/d3e4f5a6b7c8_add_prometheus_sandboxes.py", - "source_location": "L22", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L154", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_d3e4f5a6b7c8_add_prometheus_sandboxes_py", - "target": "versions_d3e4f5a6b7c8_add_prometheus_sandboxes_upgrade" + "source": "prometheus_compact_charcount", + "target": "prometheus_compact_counttokens" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "migrations/versions/d3e4f5a6b7c8_add_prometheus_sandboxes.py", - "source_location": "L36", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L83", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_d3e4f5a6b7c8_add_prometheus_sandboxes_py", - "target": "versions_d3e4f5a6b7c8_add_prometheus_sandboxes_downgrade" + "source": "prometheus_compact_fetchfieldspayload", + "target": "prometheus_compact_getstocksfieldsurl" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "migrations/versions/d3e4f5a6b7c8_add_prometheus_sandboxes.py", - "source_location": "L1", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L108", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_d3e4f5a6b7c8_add_prometheus_sandboxes_py", - "target": "versions_d3e4f5a6b7c8_add_prometheus_sandboxes_rationale_1" + "source": "prometheus_compact_loadfielddata", + "target": "prometheus_compact_getstocksfieldsurl" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "migrations/versions/e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories.py", - "source_location": "L21", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L92", "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": "prometheus_compact_loadfielddata", + "target": "prometheus_compact_fetchfieldspayload" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "migrations/versions/e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories.py", - "source_location": "L45", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L136", "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": "prometheus_compact_getmetricregex", + "target": "prometheus_compact_loadfielddata" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "migrations/versions/e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories.py", - "source_location": "L1", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L120", "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": "prometheus_compact_gethistoricalfields", + "target": "prometheus_compact_loadfielddata" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "migrations/versions/e5f6a7b8c9d0_drop_workspace_path_prometheus_sandboxes.py", - "source_location": "L22", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L124", "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": "prometheus_compact_getfundamentalcolumns", + "target": "prometheus_compact_loadfielddata" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "migrations/versions/e5f6a7b8c9d0_drop_workspace_path_prometheus_sandboxes.py", - "source_location": "L26", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L97", "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": "prometheus_compact_rationale_97", + "target": "prometheus_compact_loadfielddata" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "migrations/versions/e5f6a7b8c9d0_drop_workspace_path_prometheus_sandboxes.py", - "source_location": "L1", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L95", "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": "prometheus_compact_rationale_95", + "target": "prometheus_compact_loadfielddata" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "migrations/versions/f1a2b3c4d5e6_session_gc_index.py", - "source_location": "L26", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L151", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_f1a2b3c4d5e6_session_gc_index_py", - "target": "versions_f1a2b3c4d5e6_session_gc_index_upgrade" + "source": "prometheus_compact_extractmetrics", + "target": "prometheus_compact_getmetricregex" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "migrations/versions/f1a2b3c4d5e6_session_gc_index.py", - "source_location": "L34", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L122", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_f1a2b3c4d5e6_session_gc_index_py", - "target": "versions_f1a2b3c4d5e6_session_gc_index_downgrade" + "source": "prometheus_compact_extracttickers", + "target": "prometheus_compact_dedup" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "migrations/versions/f1a2b3c4d5e6_session_gc_index.py", - "source_location": "L1", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L128", "weight": 1.0, "confidence_score": 1.0, - "source": "versions_f1a2b3c4d5e6_session_gc_index_rationale_1", - "target": "migrations_versions_f1a2b3c4d5e6_session_gc_index_py" + "source": "prometheus_compact_extractmetrics", + "target": "prometheus_compact_dedup" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L1", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L142", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_project_overview" + "source": "prometheus_compact_extractdecisions", + "target": "prometheus_compact_dedup" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L4", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L155", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_dev_commands" + "source": "prometheus_compact_extractsnapshots", + "target": "prometheus_compact_dedup" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L23", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L171", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_architecture" + "source": "prometheus_compact_extracttoolcalls", + "target": "prometheus_compact_dedup" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L34", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L236", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_testing" + "source": "prometheus_compact_prometheuscompactor_extractepisode", + "target": "prometheus_compact_dedup" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L38", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L265", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_graphify" + "source": "prometheus_compact_prometheuscompactor_consolidate", + "target": "prometheus_compact_dedup" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L60", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L212", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_swarm_delegation_default" + "source": "prometheus_compact_prometheuscompactor_extractepisode", + "target": "prometheus_compact_extracttickers" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L47", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L213", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_stocks_api_pandas_first_pattern" + "source": "prometheus_compact_prometheuscompactor_extractepisode", + "target": "prometheus_compact_extractmetrics" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L54", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L115", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_scraper_b3_xango_batch_data_pipeline" + "source": "prometheus_compact_extractmetrics", + "target": "prometheus_compact_fieldregistry_getmetricregex" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L60", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L214", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_auth_users_dual_layer_session_security" + "source": "prometheus_compact_prometheuscompactor_extractepisode", + "target": "prometheus_compact_extractdecisions" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L28", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L215", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_key_quirks" + "source": "prometheus_compact_prometheuscompactor_extractepisode", + "target": "prometheus_compact_extractsnapshots" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L57", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L216", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_prometheus_ai_chat_strengths_gaps" + "source": "prometheus_compact_prometheuscompactor_extractepisode", + "target": "prometheus_compact_extracttoolcalls" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L5", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L218", "weight": 1.0, "confidence_score": 1.0, - "source": "server_agents_dev_commands", - "target": "server_agents_codeblock_1" + "source": "prometheus_compact_prometheuscompactor_extractepisode", + "target": "prometheus_compact_buildsummary" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L31", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L190", "weight": 1.0, "confidence_score": 1.0, - "source": "server_agents_dev_commands", - "target": "server_agents_ci_pipeline_order" + "source": "prometheus_compact_prometheuscompactor", + "target": "prometheus_compact_prometheuscompactor_shouldcompact" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "README.md", - "source_location": "L1", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L196", "weight": 1.0, "confidence_score": 1.0, - "source": "readme_md", - "target": "server_readme_mansa_server" + "source": "prometheus_compact_prometheuscompactor", + "target": "prometheus_compact_prometheuscompactor_getcompactablechunk" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "README.md", - "source_location": "L7", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L205", "weight": 1.0, "confidence_score": 1.0, - "source": "server_readme_mansa_server", - "target": "server_readme_run_with_docker" + "source": "prometheus_compact_prometheuscompactor", + "target": "prometheus_compact_prometheuscompactor_extractepisode" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "README.md", - "source_location": "L20", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L227", "weight": 1.0, "confidence_score": 1.0, - "source": "server_readme_mansa_server", - "target": "server_readme_environment_setup" + "source": "prometheus_compact_prometheuscompactor", + "target": "prometheus_compact_prometheuscompactor_consolidate" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "README.md", - "source_location": "L85", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L254", "weight": 1.0, "confidence_score": 1.0, - "source": "server_readme_mansa_server", - "target": "server_readme_health_check" + "source": "prometheus_compact_prometheuscompactor", + "target": "prometheus_compact_prometheuscompactor_compact" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "README.md", - "source_location": "L91", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L293", "weight": 1.0, "confidence_score": 1.0, - "source": "server_readme_mansa_server", - "target": "server_readme_license" + "source": "prometheus_compact_prometheuscompactor", + "target": "prometheus_compact_prometheuscompactor_getepisodes" }, { - "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": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L14", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_compact_prometheuscompactor", + "target": "models_prometheus_prometheussession" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "README.md", - "source_location": "L24", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L187", "weight": 1.0, "confidence_score": 1.0, - "source": "server_readme_environment_setup", - "target": "server_readme_codeblock_2" + "source": "prometheus_compact_prometheuscompactor", + "target": "prometheus_compact_prometheuscompactor_init" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "README.md", - "source_location": "L87", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L265", "weight": 1.0, "confidence_score": 1.0, - "source": "server_readme_health_check", - "target": "server_readme_codeblock_3" + "source": "prometheus_compact_prometheuscompactor_compact", + "target": "prometheus_compact_prometheuscompactor_shouldcompact" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "TODO.md", - "source_location": "L25", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L193", "weight": 1.0, "confidence_score": 1.0, - "source": "todo_md", - "target": "server_todo_user_structure_defined_by_string_roles" + "source": "prometheus_compact_prometheuscompactor_shouldcompact", + "target": "prometheus_compact_charcount" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "TODO.md", - "source_location": "L34", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L263", "weight": 1.0, "confidence_score": 1.0, - "source": "server_todo_user_structure_defined_by_string_roles", - "target": "server_todo_user" + "source": "prometheus_compact_prometheuscompactor_compact", + "target": "prometheus_compact_prometheuscompactor_getcompactablechunk" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "TODO.md", - "source_location": "L37", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L268", "weight": 1.0, "confidence_score": 1.0, - "source": "server_todo_user_structure_defined_by_string_roles", - "target": "server_todo_premium" + "source": "prometheus_compact_prometheuscompactor_compact", + "target": "prometheus_compact_prometheuscompactor_extractepisode" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "TODO.md", - "source_location": "L40", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L281", "weight": 1.0, "confidence_score": 1.0, - "source": "server_todo_user_structure_defined_by_string_roles", - "target": "server_todo_developer" + "source": "prometheus_compact_prometheuscompactor_compact", + "target": "prometheus_compact_prometheuscompactor_consolidate" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "TODO.md", - "source_location": "L67", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L262", "weight": 1.0, "confidence_score": 1.0, - "source": "server_todo_user_structure_defined_by_string_roles", - "target": "server_todo_stocks_api" + "source": "prometheus_compact_prometheuscompactor_compact", + "target": "prometheus_compact_prometheuscompactor_getepisodes" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "TODO.md", - "source_location": "L70", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L26", "weight": 1.0, "confidence_score": 1.0, - "source": "server_todo_user_structure_defined_by_string_roles", - "target": "server_todo_prometheus" + "source": "main_app_prometheus_mcp_py", + "target": "prometheus_mcp_buildclient" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L1", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L29", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_md", - "target": "docs_authentication_authentication_management" + "source": "main_app_prometheus_mcp_py", + "target": "prometheus_mcp_connect" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L5", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L15", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_token_session_lifetime" + "source": "main_app_prometheus_mcp_py", + "target": "prometheus_mcp_mcpclientpool" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L11", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L10", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_token_extraction_order" + "source": "main_app_prometheus_mcp_py", + "target": "prometheus_mcp_ensurefastmcp" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L21", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L16", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_cookie_handling_conditional_secure" + "source": "main_app_prometheus_mcp_py", + "target": "prometheus_mcp_parseservers" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", + "source_file": "main/app/prometheus/mcp.py", "source_location": "L30", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_session_data_model_family_only" + "source": "prometheus_mcp_connect", + "target": "prometheus_mcp_buildclient" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L39", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L55", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_roles_and_permissions" + "source": "prometheus_mcp_mcpclientpool_initialize", + "target": "prometheus_mcp_buildclient" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L61", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L95", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_rate_limits" + "source": "prometheus_mcp_mcpclientpool_reconnect", + "target": "prometheus_mcp_buildclient" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L49", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L34", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_api_endpoints" + "source": "prometheus_mcp_buildclient", + "target": "prometheus_mcp_ensurefastmcp" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L117", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L47", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_security_features" + "source": "prometheus_mcp_mcpclientpool_initialize", + "target": "prometheus_mcp_connect" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L138", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L84", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_not_implemented" + "source": "prometheus_mcp_mcpclientpool_reconnect", + "target": "prometheus_mcp_connect" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L154", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L33", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_workflow" + "source": "prometheus_mcp_mcpclientpool", + "target": "prometheus_mcp_mcpclientpool_init" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L187", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L26", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_license" + "source": "prometheus_mcp_mcpclientpool", + "target": "prometheus_mcp_mcpclientpool_initialize" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L9", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L41", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_usage" + "source": "prometheus_mcp_mcpclientpool", + "target": "prometheus_mcp_mcpclientpool_getclients" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L130", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L48", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_device_detection" + "source": "prometheus_mcp_mcpclientpool", + "target": "prometheus_mcp_mcpclientpool_healthcheck" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L144", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L60", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_session_management" + "source": "prometheus_mcp_mcpclientpool", + "target": "prometheus_mcp_mcpclientpool_reconnect" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L51", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L78", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_api_endpoints", - "target": "docs_authentication_health_check" + "source": "prometheus_mcp_mcpclientpool", + "target": "prometheus_mcp_mcpclientpool_close" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L57", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L21", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_api_endpoints", - "target": "docs_authentication_user_registration" + "source": "prometheus_mcp_mcpclientpool", + "target": "prometheus_mcp_mcpclientpool_new" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L65", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L43", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_api_endpoints", - "target": "docs_authentication_user_login" + "source": "prometheus_mcp_mcpclientpool_getclients", + "target": "prometheus_mcp_mcpclientpool_initialize" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L84", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L46", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_api_endpoints", - "target": "docs_authentication_logout" + "source": "prometheus_mcp_mcpclientpool_initialize", + "target": "prometheus_mcp_parseservers" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L94", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L45", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_api_endpoints", - "target": "docs_authentication_google_oauth2_login" + "source": "prometheus_mcp_mcpclientpool_getclients", + "target": "prometheus_mcp_mcpclientpool_healthcheck" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L120", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L58", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_api_endpoints", - "target": "docs_authentication_google_callback_cookie_only" + "source": "prometheus_mcp_mcpclientpool_healthcheck", + "target": "prometheus_mcp_mcpclientpool_reconnect" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L77", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L87", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_api_endpoints", - "target": "docs_authentication_profile_me" + "source": "prometheus_mcp_mcpclientpool_reconnect", + "target": "prometheus_mcp_parseservers" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L108", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L53", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_api_endpoints", - "target": "docs_authentication_google_callback" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_getmatrix" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L76", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L63", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_health_check", - "target": "docs_authentication_codeblock_1" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_invalidateuser" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L52", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L67", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_health_check", - "target": "docs_authentication_codeblock_2" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_clearall" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L11", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L64", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_usage", - "target": "docs_authentication_codeblock_1" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_memorycandidate" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L84", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L90", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_user_registration", - "target": "docs_authentication_codeblock_2" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_newtokencache" }, { "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L59", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L35", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_user_registration", - "target": "docs_authentication_codeblock_3" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_getclient" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L94", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L48", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_user_login", - "target": "docs_authentication_codeblock_3" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_minmax" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L67", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L17", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_user_login", - "target": "docs_authentication_codeblock_4" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_normalizekey" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L104", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L23", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_logout", - "target": "docs_authentication_codeblock_4" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_findsimilarkey" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L86", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L123", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_logout", - "target": "docs_authentication_codeblock_6" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_scorerow" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L113", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L141", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_google_oauth2_login", - "target": "docs_authentication_codeblock_5" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_scorerecency" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L98", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L159", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_google_oauth2_login", - "target": "docs_authentication_codeblock_7" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_scorecandidates" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L104", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L187", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_google_oauth2_login", - "target": "docs_authentication_codeblock_8" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_sumtokens" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L79", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L16", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_profile_me", - "target": "docs_authentication_codeblock_5" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_prometheusmemory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L144", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L17", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_workflow", - "target": "docs_authentication_codeblock_6" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_getmemorylimit" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L156", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L23", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_workflow", - "target": "docs_authentication_codeblock_9" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_countmemories" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/orunmila.md", - "source_location": "L1", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L194", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_orunmila_md", - "target": "docs_orunmila_orunmila" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_touch" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/orunmila.md", - "source_location": "L7", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L32", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_orunmila_orunmila", - "target": "docs_orunmila_usage" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_upsertmemory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/orunmila.md", - "source_location": "L53", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L89", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_orunmila_orunmila", - "target": "docs_orunmila_workflow" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_search" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/orunmila.md", - "source_location": "L65", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L134", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_orunmila_orunmila", - "target": "docs_orunmila_api_endpoints" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_fulltextsearch" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/orunmila.md", - "source_location": "L72", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L163", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_orunmila_orunmila", - "target": "docs_orunmila_license" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_getusermemories" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/orunmila.md", - "source_location": "L9", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L189", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_orunmila_usage", - "target": "docs_orunmila_codeblock_1" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_deletememory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/orunmila.md", - "source_location": "L49", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L318", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_orunmila_usage", - "target": "docs_orunmila_codeblock_2" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_extract" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/orunmila.md", - "source_location": "L55", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L41", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_orunmila_workflow", - "target": "docs_orunmila_codeblock_3" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_matrixkey" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/scraper_b3.md", - "source_location": "L1", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L48", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_scraper_b3_md", - "target": "docs_scraper_b3_b3_market_scraper" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_matrixusertag" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/scraper_b3.md", - "source_location": "L1", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L342", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_scraper_b3_md", - "target": "docs_scraper_b3_brazilian_stocks_market_scraper" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_counttokenscached" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/scraper_b3.md", - "source_location": "L5", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L43", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_scraper_b3_b3_market_scraper", - "target": "docs_scraper_b3_sources_6" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_getmatrixasync" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/scraper_b3.md", - "source_location": "L19", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L55", "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": "main_app_prometheus_memory_py", + "target": "prometheus_memory_invalidateuserasync" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/scraper_b3.md", - "source_location": "L31", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L59", "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": "main_app_prometheus_memory_py", + "target": "prometheus_memory_clearallasync" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/scraper_b3.md", - "source_location": "L41", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L244", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_scraper_b3_b3_market_scraper", - "target": "docs_scraper_b3_outputs" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_upsertmemoryasync" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/scraper_b3.md", - "source_location": "L21", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L333", "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": "main_app_prometheus_memory_py", + "target": "prometheus_memory_searchasync" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/scraper_b3.md", - "source_location": "L8", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L483", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_scraper_b3_usage", - "target": "docs_scraper_b3_codeblock_1" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_deletememoryasync" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L1", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L50", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_md", - "target": "docs_stocks_api_brazilian_stocks_market_api" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_applyupdate" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L7", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L17", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_brazilian_stocks_market_api", - "target": "docs_stocks_api_usage" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_normalize_key" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L22", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L216", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_brazilian_stocks_market_api", - "target": "docs_stocks_api_auth" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_archivedead" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L32", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L16", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_brazilian_stocks_market_api", - "target": "docs_stocks_api_api_endpoints" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_now" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L90", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L203", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_brazilian_stocks_market_api", - "target": "docs_stocks_api_response_format" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_decayscores" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L119", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_brazilian_stocks_market_api", - "target": "docs_stocks_api_architecture" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_memorymanager" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L113", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L17", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_brazilian_stocks_market_api", - "target": "docs_stocks_api_license" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_get_memory_limit" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L9", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L24", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_usage", - "target": "docs_stocks_api_codeblock_1" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_count_memories" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", + "source_file": "main/app/prometheus/memory.py", "source_location": "L34", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_api_endpoints", - "target": "docs_stocks_api_health_check" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_upsert_memory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L40", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L138", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_api_endpoints", - "target": "docs_stocks_api_field_discovery" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_fulltext_search" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L53", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L168", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_api_endpoints", - "target": "docs_stocks_api_historical_data" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_get_user_memories" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L72", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L195", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_api_endpoints", - "target": "docs_stocks_api_fundamental_data" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_delete_memory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L74", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L209", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_api_endpoints", - "target": "docs_stocks_api_cotations_10_year_daily_history" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_decay_scores" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L87", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L223", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_api_endpoints", - "target": "docs_stocks_api_live_price" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_archive_dead" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L98", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L3", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_api_endpoints", - "target": "docs_stocks_api_mcp_ai_agent_tools" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_save_memory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L40", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L6", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_api_endpoints", - "target": "docs_stocks_api_api_key_verification" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_search_memory" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L45", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L290", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_api_endpoints", - "target": "docs_stocks_api_key_management" + "source": "prometheus_memory_search", + "target": "prometheus_memory_getmatrix" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L35", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L54", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_health_check", - "target": "docs_stocks_api_codeblock_2" + "source": "prometheus_memory_getmatrix", + "target": "prometheus_memory_matrixkey" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L42", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L59", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_field_discovery", - "target": "docs_stocks_api_codeblock_3" + "source": "prometheus_memory_getmatrix", + "target": "prometheus_memory_matrixusertag" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L41", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L64", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_api_key_verification", - "target": "docs_stocks_api_codeblock_3" + "source": "prometheus_memory_getmatrix", + "target": "prometheus_memory_getmatrixasync" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L50", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L186", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_historical_data", - "target": "docs_stocks_api_codeblock_4" + "source": "prometheus_memory_upsertmemory", + "target": "prometheus_memory_invalidateuser" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L55", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L422", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_historical_data", - "target": "docs_stocks_api_codeblock_5" + "source": "prometheus_memory_deletememory", + "target": "prometheus_memory_invalidateuser" }, { - "relation": "contains", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/service/prometheus_service.py", + "source_location": "L52", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "prometheus_memory_invalidateuser" + }, + { + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", + "source_file": "main/app/prometheus/memory.py", "source_location": "L68", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_historical_data", - "target": "docs_stocks_api_codeblock_6" + "source": "prometheus_memory_invalidateuser", + "target": "prometheus_memory_invalidateuserasync" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L47", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L72", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_key_management", - "target": "docs_stocks_api_codeblock_4" + "source": "prometheus_memory_clearall", + "target": "prometheus_memory_clearallasync" }, { - "relation": "contains", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L22", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_memorycandidate", + "target": "models_memory_prometheusmemory" + }, + { + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L63", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L354", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_fundamental_data", - "target": "docs_stocks_api_codeblock_5" + "source": "prometheus_memory_extract", + "target": "prometheus_memory_getclient" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L74", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L241", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_fundamental_data", - "target": "docs_stocks_api_codeblock_7" + "source": "prometheus_memory_search", + "target": "prometheus_memory_minmax" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L86", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L385", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_fundamental_data", - "target": "docs_stocks_api_codeblock_8" + "source": "prometheus_memory_searchasync", + "target": "prometheus_memory_minmax" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L76", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L29", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_cotations_10_year_daily_history", - "target": "docs_stocks_api_codeblock_6" + "source": "prometheus_memory_normalizekey", + "target": "prometheus_memory_findsimilarkey" }, { - "relation": "contains", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L30", + "weight": 1.0, + "source": "prometheus_memory_normalizekey", + "target": "stocks_api_response_cache_responsecache_set" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L21", + "weight": 1.0, + "source": "prometheus_memory_normalizekey", + "target": "prometheus_state_harnessstate_set" + }, + { + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L89", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L88", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_live_price", - "target": "docs_stocks_api_codeblock_7" + "source": "prometheus_memory_findsimilarkey", + "target": "prometheus_memory_upsertmemory" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L106", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L281", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_response_format", - "target": "docs_stocks_api_codeblock_8" + "source": "prometheus_memory_upsertmemoryasync", + "target": "prometheus_memory_findsimilarkey" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L94", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L29", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_response_format", - "target": "docs_stocks_api_codeblock_9" + "source": "prometheus_memory_findsimilarkey", + "target": "prometheus_memory_normalize_key" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L1", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L140", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_md", - "target": "docs_user_user_management" + "source": "prometheus_memory_scorerecency", + "target": "prometheus_memory_scorerow" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L5", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L159", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_user_management", - "target": "docs_user_roles_and_permissions" + "source": "prometheus_memory_scorecandidates", + "target": "prometheus_memory_scorerow" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L17", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L314", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_user_management", - "target": "docs_user_api_endpoints" + "source": "prometheus_memory_search", + "target": "prometheus_memory_scorerecency" }, { - "relation": "contains", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L149", + "weight": 1.0, + "source": "prometheus_memory_scorerecency", + "target": "prometheus_vector_getrelevancescore" + }, + { + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L59", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L361", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_user_management", - "target": "docs_user_session_management" + "source": "prometheus_memory_searchasync", + "target": "prometheus_memory_scorerecency" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L112", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L342", "weight": 1.0, - "source": "docs_user_user_management", - "target": "docs_user_api_keys_stocks_api", - "confidence_score": 1.0 + "confidence_score": 1.0, + "source": "prometheus_memory_search", + "target": "prometheus_memory_scorecandidates" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L123", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L169", "weight": 1.0, - "source": "docs_user_user_management", - "target": "docs_user_rate_limits_related_services", - "confidence_score": 1.0 + "source": "prometheus_memory_scorecandidates", + "target": "prometheus_vector_getrelevancescore" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L135", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L389", "weight": 1.0, - "source": "docs_user_user_management", - "target": "docs_user_not_implemented", - "confidence_score": 1.0 + "confidence_score": 1.0, + "source": "prometheus_memory_searchasync", + "target": "prometheus_memory_scorecandidates" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L156", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L461", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_user_management", - "target": "docs_user_workflow" + "source": "prometheus_memory_extract", + "target": "prometheus_memory_sumtokens" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L177", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L502", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_user_management", - "target": "docs_user_license" + "source": "prometheus_memory_counttokenscached", + "target": "prometheus_memory_sumtokens" }, { - "relation": "contains", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "models_memory_prometheusmemory" + }, + { + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L140", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L117", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_user_management", - "target": "docs_user_permission_system" + "source": "prometheus_memory_prometheusmemory", + "target": "prometheus_memory_upsertmemory" }, { - "relation": "contains", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L8", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "models_memory_usermemory" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_dedup.py", + "source_location": "L1", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "tests_test_memory_dedup_testexactsamekeyupdates" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_dedup.py", + "source_location": "L1", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "tests_test_memory_dedup_testsimilarkeymerges" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_dedup.py", + "source_location": "L1", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "tests_test_memory_dedup_testdifferentkeysnomerge" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_dedup.py", + "source_location": "L1", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "tests_test_memory_dedup_testmergeboostsscore" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_dedup.py", + "source_location": "L1", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "tests_test_memory_dedup_testmergeincrementsaccess" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_dedup.py", + "source_location": "L1", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "tests_test_memory_dedup_testthresholdboundary" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L6", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "tests_test_memory_maintenance_testdecay" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L6", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "tests_test_memory_maintenance_testarchive" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L6", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "tests_test_memory_maintenance_testdecayandarchivetogether" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L6", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "tests_test_memory_maintenance_testemptydatabase" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_manager.py", + "source_location": "L4", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "tests_test_memory_manager_testgetmemorylimit" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_manager.py", + "source_location": "L4", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "tests_test_memory_manager_testupsertmemory" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_manager.py", + "source_location": "L4", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "tests_test_memory_manager_testcountmemories" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_manager.py", + "source_location": "L4", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "tests_test_memory_manager_testgetusermemories" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_manager.py", + "source_location": "L4", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "tests_test_memory_manager_testdeletememory" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_manager.py", + "source_location": "L4", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "tests_test_memory_manager_testsearchfulltext" + }, + { + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L19", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L66", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_api_endpoints", - "target": "docs_user_health_check" + "source": "prometheus_memory_getmemorylimit", + "target": "prometheus_memory_upsertmemory" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L25", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L347", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_api_endpoints", - "target": "docs_user_get_profile" + "source": "prometheus_memory_extract", + "target": "prometheus_memory_getmemorylimit" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L53", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L299", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_api_endpoints", - "target": "docs_user_admin_access" + "source": "prometheus_memory_upsertmemoryasync", + "target": "prometheus_memory_getmemorylimit" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L41", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L67", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_api_endpoints", - "target": "docs_user_upgrade_to_developer_starter" + "source": "prometheus_memory_countmemories", + "target": "prometheus_memory_upsertmemory" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L47", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L347", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_api_endpoints", - "target": "docs_user_upgrade_to_developer_enterprise" + "source": "prometheus_memory_extract", + "target": "prometheus_memory_countmemories" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L20", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L300", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_health_check", - "target": "docs_user_codeblock_1" + "source": "prometheus_memory_upsertmemoryasync", + "target": "prometheus_memory_countmemories" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L27", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L227", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_get_profile", - "target": "docs_user_codeblock_2" + "source": "prometheus_memory_upsertmemory", + "target": "prometheus_memory_touch" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L31", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L368", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_get_profile", - "target": "docs_user_codeblock_3" + "source": "prometheus_memory_extract", + "target": "prometheus_memory_upsertmemory" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L39", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L47", "weight": 1.0, - "source": "docs_user_admin_access", - "target": "docs_user_codeblock_3", - "confidence_score": 1.0 + "source": "prometheus_memory_upsertmemory", + "target": "prometheus_vector_contenthash" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L55", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L231", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_admin_access", - "target": "docs_user_codeblock_6" + "source": "prometheus_memory_upsertmemory", + "target": "prometheus_memory_upsertmemoryasync" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L63", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L138", "weight": 1.0, - "confidence_score": 1.0, - "source": "docs_user_session_management", - "target": "docs_user_list_all_sessions" + "source": "prometheus_memory_upsertmemory", + "target": "prometheus_matrix_cache_invalidateuser" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L92", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L100", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_session_management", - "target": "docs_user_get_current_session" + "source": "prometheus_memory_upsertmemory", + "target": "prometheus_memory_applyupdate" }, { - "relation": "contains", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L71", + "weight": 1.0, + "source": "prometheus_memory_upsertmemory", + "target": "models_memory_usermemory" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L50", + "weight": 1.0, + "source": "prometheus_memory_upsertmemory", + "target": "utils_vector_contenthash" + }, + { + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L114", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L63", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_session_management", - "target": "docs_user_revoke_a_session" + "source": "prometheus_memory_upsertmemory", + "target": "prometheus_memory_now" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L127", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L131", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_session_management", - "target": "docs_user_revoke_all_sessions" + "source": "prometheus_memory_search", + "target": "prometheus_memory_fulltextsearch" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L55", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L104", "weight": 1.0, - "source": "docs_user_list_all_sessions", - "target": "docs_user_codeblock_4", - "confidence_score": 1.0 + "source": "prometheus_memory_search", + "target": "prometheus_vector_embed" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L59", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L109", "weight": 1.0, - "source": "docs_user_list_all_sessions", - "target": "docs_user_codeblock_5", - "confidence_score": 1.0 + "source": "prometheus_memory_search", + "target": "prometheus_vector_batchcosinesimilarity" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L65", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L330", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_list_all_sessions", - "target": "docs_user_codeblock_7" + "source": "prometheus_memory_search", + "target": "prometheus_memory_searchasync" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L69", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L120", "weight": 1.0, - "confidence_score": 1.0, - "source": "docs_user_list_all_sessions", - "target": "docs_user_codeblock_8" + "source": "prometheus_memory_search", + "target": "prometheus_vector_getrelevancescore" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L43", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L242", "weight": 1.0, - "confidence_score": 1.0, - "source": "docs_user_upgrade_to_developer_starter", - "target": "docs_user_codeblock_4" + "source": "prometheus_memory_search", + "target": "prometheus_matrix_cache_getmatrix" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L49", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L162", "weight": 1.0, - "confidence_score": 1.0, - "source": "docs_user_upgrade_to_developer_enterprise", - "target": "docs_user_codeblock_5" + "source": "prometheus_memory_search", + "target": "prometheus_vector_decodeembeddings" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L83", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L113", "weight": 1.0, - "source": "docs_user_get_current_session", - "target": "docs_user_codeblock_6", - "confidence_score": 1.0 + "source": "prometheus_memory_search", + "target": "utils_vector_batchcosinesimilarity" }, { - "relation": "contains", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L125", + "weight": 1.0, + "source": "prometheus_memory_search", + "target": "utils_vector_getrelevancescore" + }, + { + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L94", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L106", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_get_current_session", - "target": "docs_user_codeblock_9" + "source": "prometheus_memory_search", + "target": "prometheus_memory_now" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L98", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L135", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_get_current_session", - "target": "docs_user_codeblock_10" + "source": "prometheus_memory_search", + "target": "prometheus_memory_fulltext_search" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L91", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L117", "weight": 1.0, - "source": "docs_user_revoke_a_session", - "target": "docs_user_codeblock_7", - "confidence_score": 1.0 + "source": "prometheus_memory_search", + "target": "utils_vector_batch_cosine_similarity" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L116", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L386", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_revoke_a_session", - "target": "docs_user_codeblock_11" + "source": "prometheus_memory_searchasync", + "target": "prometheus_memory_fulltextsearch" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L120", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L154", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_revoke_a_session", - "target": "docs_user_codeblock_12" + "source": "prometheus_memory_fulltextsearch", + "target": "prometheus_memory_now" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L101", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L180", "weight": 1.0, - "source": "docs_user_revoke_all_sessions", - "target": "docs_user_codeblock_8", - "confidence_score": 1.0 + "source": "prometheus_memory_getusermemories", + "target": "prometheus_vector_getrelevancescore" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L105", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L185", "weight": 1.0, - "source": "docs_user_revoke_all_sessions", - "target": "docs_user_codeblock_9", - "confidence_score": 1.0 + "source": "prometheus_memory_getusermemories", + "target": "utils_vector_getrelevancescore" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L129", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L178", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_revoke_all_sessions", - "target": "docs_user_codeblock_13" + "source": "prometheus_memory_getusermemories", + "target": "prometheus_memory_now" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L133", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L480", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_revoke_all_sessions", - "target": "docs_user_codeblock_14" + "source": "prometheus_memory_deletememory", + "target": "prometheus_memory_deletememoryasync" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L141", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L369", "weight": 1.0, - "source": "docs_user_workflow", - "target": "docs_user_codeblock_10", - "confidence_score": 1.0 + "source": "prometheus_memory_deletememory", + "target": "prometheus_matrix_cache_invalidateuser" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L158", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L191", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_workflow", - "target": "docs_user_codeblock_16" + "source": "prometheus_memory_deletememory", + "target": "prometheus_memory_now" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L1", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L367", "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": "prometheus_memory_extract", + "target": "prometheus_vector_embed" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L11", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L386", "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": "prometheus_memory_extract", + "target": "prometheus_memory_counttokenscached" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L26", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L18", "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": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_lockfor" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L242", + "source_file": "main/app/prometheus/sandbox.py", + "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_2_background_run_get_resume_route_in_prometheus_controller" + "source": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_getclient" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L412", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L28", "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": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_hostpath" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L576", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L42", "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": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_sandboxpath" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L863", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L47", "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": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_sandboxmanager" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L41", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L49", "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": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_create" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L130", + "source_file": "main/app/prometheus/sandbox.py", + "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": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_destroy" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L235", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L77", "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": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_getorcreate" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L257", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L123", "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": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_execute" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L329", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L189", "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": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_read_file" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L405", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L196", "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": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_write_file" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L426", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L207", "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": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_list_files" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L498", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L197", "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": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_delete_file" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L569", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L215", "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": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_synctosandbox" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L590", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L234", "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": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_syncfromsandbox" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L659", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L186", "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": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_write_bytes" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L681", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L159", "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": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_executewithworkspace" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L768", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L134", "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": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_syncworkspace" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L835", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L148", "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": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_restoreworkspace" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L856", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L159", "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": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_savebackup" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L889", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L168", "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": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_loadbackup" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L1", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L12", "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": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_baseurl" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L13", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L57", "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": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_checkpoint" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L23", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L70", "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": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_restore" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L633", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L79", "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": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_upload_file" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L35", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L19", "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": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_base_url" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L251", + "source_file": "main/app/prometheus/sandbox.py", + "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_2_fast_paths_in_stocksquerymanager_for_default_shaped_queries" + "source": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_rationale_1" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L392", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L78", "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": "prometheus_sandbox_getorcreate", + "target": "prometheus_sandbox_lockfor" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L468", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L160", "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": "prometheus_sandbox_executewithworkspace", + "target": "prometheus_sandbox_lockfor" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L613", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L50", "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": "prometheus_sandbox_create", + "target": "prometheus_sandbox_getclient" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L49", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L66", "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": "prometheus_sandbox_destroy", + "target": "prometheus_sandbox_getclient" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L88", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L83", "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": "prometheus_sandbox_getorcreate", + "target": "prometheus_sandbox_getclient" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L118", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L124", "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": "prometheus_sandbox_execute", + "target": "prometheus_sandbox_getclient" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L131", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L220", "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": "prometheus_sandbox_synctosandbox", + "target": "prometheus_sandbox_getclient" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L177", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L235", "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": "prometheus_sandbox_syncfromsandbox", + "target": "prometheus_sandbox_getclient" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L228", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L168", "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": "prometheus_sandbox_executewithworkspace", + "target": "prometheus_sandbox_getclient" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L244", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/sandbox_cleanup.py", + "source_location": "L23", "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": "prometheus_sandbox_getclient", + "target": "prometheus_sandbox_cleanup_cleanup_expired_sandboxes" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L263", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L57", "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": "prometheus_sandbox_getclient", + "target": "prometheus_sandbox_read_file" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L315", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L66", "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": "prometheus_sandbox_getclient", + "target": "prometheus_sandbox_write_file" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L349", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L78", "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": "prometheus_sandbox_getclient", + "target": "prometheus_sandbox_list_files" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L405", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L136", "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": "prometheus_sandbox_getclient", + "target": "prometheus_sandbox_syncworkspace" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L461", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L150", "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": "prometheus_sandbox_getclient", + "target": "prometheus_sandbox_restoreworkspace" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L482", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L190", "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": "prometheus_sandbox_read_file", + "target": "prometheus_sandbox_hostpath" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L512", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L198", "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": "prometheus_sandbox_write_file", + "target": "prometheus_sandbox_hostpath" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L519", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L208", "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": "prometheus_sandbox_list_files", + "target": "prometheus_sandbox_hostpath" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L539", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L199", "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": "prometheus_sandbox_delete_file", + "target": "prometheus_sandbox_hostpath" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L548", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L243", "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": "prometheus_sandbox_syncfromsandbox", + "target": "prometheus_sandbox_hostpath" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L606", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/tools.py", + "source_location": "L156", "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": "prometheus_tools_serve_file", + "target": "prometheus_sandbox_hostpath" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L1", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L189", "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": "controller_prometheus_controller_downloadworkspacefile", + "target": "prometheus_sandbox_hostpath" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L16", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L188", "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": "prometheus_sandbox_write_bytes", + "target": "prometheus_sandbox_hostpath" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L632", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L211", "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": "prometheus_sandbox_list_files", + "target": "prometheus_sandbox_sandboxpath" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L29", - "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" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L9", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_sandbox_sandboxmanager", + "target": "models_sandbox_prometheussandbox" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L152", - "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" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L7", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_sandbox_sandboxmanager", + "target": "tests_test_agent_sandbox_integration_testpersistentsandboxlifecycle" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L198", - "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" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_sandbox.py", + "source_location": "L3", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_sandbox_sandboxmanager", + "target": "tests_test_sandbox_testsandboxmanager" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L465", - "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" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L4", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_sandbox_sandboxmanager", + "target": "tests_test_sandbox_persistence_testprometheussandboxmodel" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L611", - "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" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L4", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_sandbox_sandboxmanager", + "target": "tests_test_sandbox_persistence_testsandboxpersistence" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L43", - "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" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L4", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_sandbox_sandboxmanager", + "target": "tests_test_sandbox_persistence_testsandboxcleanup" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L108", - "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" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_sandbox.py", + "source_location": "L6", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_sandbox_sandboxmanager", + "target": "tests_test_sandbox_fakeclient" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L145", - "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" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_sandbox.py", + "source_location": "L6", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_sandbox_sandboxmanager", + "target": "tests_test_sandbox_testsandboxcreate" }, { - "relation": "contains", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_sandbox.py", + "source_location": "L6", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_sandbox_sandboxmanager", + "target": "tests_test_sandbox_testsandboxexecute" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_sandbox.py", + "source_location": "L6", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_sandbox_sandboxmanager", + "target": "tests_test_sandbox_testsandboxcheckpoint" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_sandbox.py", + "source_location": "L6", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_sandbox_sandboxmanager", + "target": "tests_test_sandbox_testsandboxrestore" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_sandbox.py", + "source_location": "L6", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_sandbox_sandboxmanager", + "target": "tests_test_sandbox_testsandboxuploadfile" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_sandbox.py", + "source_location": "L6", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_sandbox_sandboxmanager", + "target": "tests_test_sandbox_testsandboxreadfile" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_sandbox.py", + "source_location": "L6", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_sandbox_sandboxmanager", + "target": "tests_test_sandbox_testsandboxdestroy" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/context.py", + "source_location": "L16", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_sandbox_sandboxmanager", + "target": "prometheus_context_toolcontext" + }, + { + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L166", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L24", "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": "prometheus_sandbox_sandboxmanager", + "target": "prometheus_sandbox_rationale_24" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L172", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L104", "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": "prometheus_sandbox_getorcreate", + "target": "prometheus_sandbox_create" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L180", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L162", "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": "prometheus_sandbox_executewithworkspace", + "target": "prometheus_sandbox_create" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L191", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L20", "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": "prometheus_sandbox_create", + "target": "prometheus_sandbox_baseurl" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L212", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L33", "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": "prometheus_sandbox_create", + "target": "prometheus_sandbox_base_url" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L368", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L186", "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": "prometheus_sandbox_executewithworkspace", + "target": "prometheus_sandbox_destroy" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L375", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L80", "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": "prometheus_sandbox_destroy", + "target": "prometheus_sandbox_baseurl" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L381", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L99", "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": "prometheus_sandbox_destroy", + "target": "prometheus_sandbox_base_url" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L458", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L116", "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": "prometheus_sandbox_getorcreate", + "target": "prometheus_sandbox_synctosandbox" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L479", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L153", "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": "prometheus_sandbox_execute", + "target": "prometheus_sandbox_getorcreate" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L560", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L75", "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": "prometheus_sandbox_getorcreate", + "target": "models_sandbox_prometheussandbox" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L566", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L69", "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": "prometheus_sandbox_getorcreate", + "target": "prometheus_sandbox_loadbackup" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L593", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L71", "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": "prometheus_sandbox_getorcreate", + "target": "prometheus_sandbox_restoreworkspace" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L604", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L128", "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": "prometheus_sandbox_execute", + "target": "prometheus_sandbox_synctosandbox" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L626", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L139", "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": "prometheus_sandbox_execute", + "target": "prometheus_sandbox_syncfromsandbox" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L1", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L37", "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": "prometheus_sandbox_execute", + "target": "prometheus_sandbox_baseurl" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L13", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L51", "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": "prometheus_sandbox_execute", + "target": "prometheus_sandbox_base_url" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L32", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L242", "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": "prometheus_sandbox_syncfromsandbox", + "target": "prometheus_sandbox_read_file" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L43", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L142", "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": "prometheus_sandbox_read_file", + "target": "prometheus_sandbox_syncworkspace" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L176", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L73", "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": "prometheus_sandbox_read_file", + "target": "prometheus_sandbox_baseurl" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L294", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L91", "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": "prometheus_sandbox_read_file", + "target": "prometheus_sandbox_base_url" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L403", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L227", "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": "prometheus_sandbox_synctosandbox", + "target": "prometheus_sandbox_write_file" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L61", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L154", "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": "prometheus_sandbox_write_file", + "target": "prometheus_sandbox_restoreworkspace" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L122", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L164", "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": "prometheus_sandbox_executewithworkspace", + "target": "prometheus_sandbox_synctosandbox" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L169", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L180", "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": "prometheus_sandbox_executewithworkspace", + "target": "prometheus_sandbox_syncfromsandbox" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L191", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L10", "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": "main_app_prometheus_stream_bus_py", + "target": "prometheus_stream_bus_streamchannel" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L246", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L28", "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": "main_app_prometheus_stream_bus_py", + "target": "prometheus_stream_bus_streambus" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L272", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L11", "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": "prometheus_stream_bus_streamchannel", + "target": "prometheus_stream_bus_streamchannel_init" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L287", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L17", "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": "prometheus_stream_bus_streamchannel", + "target": "prometheus_stream_bus_streamchannel_publish" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L308", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L35", "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": "prometheus_stream_bus_streambus_getorcreate", + "target": "prometheus_stream_bus_streamchannel" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L372", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L29", "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": "prometheus_stream_bus_streambus", + "target": "prometheus_stream_bus_streambus_init" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L396", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L32", "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": "prometheus_stream_bus_streambus", + "target": "prometheus_stream_bus_streambus_getorcreate" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L1", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L39", "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": "prometheus_stream_bus_streambus", + "target": "prometheus_stream_bus_streambus_publish" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L20", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L42", "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": "prometheus_stream_bus_streambus", + "target": "prometheus_stream_bus_streambus_subscribe" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L30", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L55", "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": "prometheus_stream_bus_streambus", + "target": "prometheus_stream_bus_streambus_unsubscribe" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L52", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L60", "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": "prometheus_stream_bus_streambus", + "target": "prometheus_stream_bus_streambus_startrun" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L80", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L86", "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": "prometheus_stream_bus_streambus", + "target": "prometheus_stream_bus_streambus_eventgenerator" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L385", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L109", "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": "prometheus_stream_bus_streambus", + "target": "prometheus_stream_bus_streambus_streamresponse" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L455", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L83", "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": "prometheus_stream_bus_streambus", + "target": "prometheus_stream_bus_streambus_forward" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L610", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L40", "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": "prometheus_stream_bus_streambus_publish", + "target": "prometheus_stream_bus_streambus_getorcreate" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L640", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L61", "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": "prometheus_stream_bus_streambus_startrun", + "target": "prometheus_stream_bus_streambus_getorcreate" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L32", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L87", "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": "prometheus_stream_bus_streambus_eventgenerator", + "target": "prometheus_stream_bus_streambus_subscribe" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L43", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L84", "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": "prometheus_stream_bus_streambus_forward", + "target": "prometheus_stream_bus_streambus_subscribe" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L58", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L107", "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": "prometheus_stream_bus_streambus_eventgenerator", + "target": "prometheus_stream_bus_streambus_unsubscribe" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L66", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L105", "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": "prometheus_stream_bus_streambus_forward", + "target": "prometheus_stream_bus_streambus_unsubscribe" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L72", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L110", "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": "prometheus_stream_bus_streambus_streamresponse", + "target": "prometheus_stream_bus_streambus_eventgenerator" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L86", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L17", "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" + "source": "main_app_prometheus_tools_py", + "target": "prometheus_tools_search_memory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L101", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L43", "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": "main_app_prometheus_tools_py", + "target": "prometheus_tools_save_memory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L339", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L113", "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": "main_app_prometheus_tools_py", + "target": "prometheus_tools_execute_code" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L396", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L134", "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": "main_app_prometheus_tools_py", + "target": "prometheus_tools_read_file" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L428", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L145", "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": "main_app_prometheus_tools_py", + "target": "prometheus_tools_write_file" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L435", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L158", "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": "main_app_prometheus_tools_py", + "target": "prometheus_tools_list_files" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L442", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L144", "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": "main_app_prometheus_tools_py", + "target": "prometheus_tools_serve_file" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L449", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L180", "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": "main_app_prometheus_tools_py", + "target": "prometheus_tools_dispatchtoolcall" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L467", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L18", "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": "main_app_prometheus_tools_py", + "target": "prometheus_tools_getdb" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L486", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L80", "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": "main_app_prometheus_tools_py", + "target": "prometheus_tools_get_state" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L501", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L95", "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": "main_app_prometheus_tools_py", + "target": "prometheus_tools_set_state" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L542", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L141", "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": "main_app_prometheus_tools_py", + "target": "prometheus_tools_read_sandbox_file" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L555", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L151", "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": "main_app_prometheus_tools_py", + "target": "prometheus_tools_upload_to_sandbox" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L572", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L153", "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": "main_app_prometheus_tools_py", + "target": "prometheus_tools_check_cache" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L577", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L104", "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": "main_app_prometheus_tools_py", + "target": "prometheus_tools_executestatetool" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L590", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L46", "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": "main_app_prometheus_tools_py", + "target": "prometheus_tools_executememorytool" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L596", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L21", "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": "prometheus_tools_rationale_21", + "target": "prometheus_tools_search_memory" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L602", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L20", "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": "prometheus_tools_rationale_20", + "target": "prometheus_tools_search_memory" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L614", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L19", "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": "prometheus_tools_rationale_19", + "target": "prometheus_tools_search_memory" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L620", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L39", "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": "prometheus_tools_search_memory", + "target": "prometheus_tools_getdb" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L1", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L27", "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": "prometheus_tools_rationale_27", + "target": "prometheus_tools_search_memory" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L13", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L18", "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": "prometheus_tools_rationale_18", + "target": "prometheus_tools_search_memory" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L26", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L16", "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": "prometheus_tools_search_memory", + "target": "prometheus_tools_rationale_16" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L814", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L15", "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": "prometheus_tools_search_memory", + "target": "prometheus_tools_rationale_15" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L44", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L17", "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": "prometheus_tools_search_memory", + "target": "prometheus_tools_rationale_17" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L127", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L13", "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": "prometheus_tools_search_memory", + "target": "prometheus_tools_rationale_13" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L240", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L12", "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": "prometheus_tools_search_memory", + "target": "prometheus_tools_rationale_12" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L337", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L52", "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": "prometheus_tools_rationale_52", + "target": "prometheus_tools_save_memory" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L415", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/tools.py", + "source_location": "L52", "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": "prometheus_tools_save_memory", + "target": "prometheus_vector_embed" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L509", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L50", "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": "prometheus_tools_rationale_50", + "target": "prometheus_tools_save_memory" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L562", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L49", "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": "prometheus_tools_rationale_49", + "target": "prometheus_tools_save_memory" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L623", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L67", "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": "prometheus_tools_save_memory", + "target": "prometheus_tools_getdb" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L712", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L54", "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": "prometheus_tools_rationale_54", + "target": "prometheus_tools_save_memory" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L61", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L44", "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": "prometheus_tools_rationale_44", + "target": "prometheus_tools_save_memory" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L80", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L42", "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": "prometheus_tools_save_memory", + "target": "prometheus_tools_rationale_42" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L96", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L41", "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": "prometheus_tools_save_memory", + "target": "prometheus_tools_rationale_41" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L120", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L39", "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": "prometheus_tools_save_memory", + "target": "prometheus_tools_rationale_39" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L143", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L38", "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": "prometheus_tools_save_memory", + "target": "prometheus_tools_rationale_38" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L185", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L29", "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": "prometheus_tools_save_memory", + "target": "prometheus_tools_rationale_29" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L198", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L94", "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": "prometheus_tools_rationale_94", + "target": "prometheus_tools_execute_code" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L204", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L91", "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": "prometheus_tools_rationale_91", + "target": "prometheus_tools_execute_code" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L233", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L90", "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": "prometheus_tools_rationale_90", + "target": "prometheus_tools_execute_code" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L256", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L92", "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": "prometheus_tools_rationale_92", + "target": "prometheus_tools_execute_code" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L284", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L123", "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": "prometheus_tools_rationale_123", + "target": "prometheus_tools_execute_code" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L298", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L114", "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": "prometheus_tools_rationale_114", + "target": "prometheus_tools_execute_code" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L330", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L112", "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": "prometheus_tools_execute_code", + "target": "prometheus_tools_rationale_112" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L351", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L111", "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": "prometheus_tools_execute_code", + "target": "prometheus_tools_rationale_111" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L390", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L109", "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": "prometheus_tools_execute_code", + "target": "prometheus_tools_rationale_109" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L408", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L115", "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": "prometheus_tools_rationale_115", + "target": "prometheus_tools_read_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L429", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L112", "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": "prometheus_tools_rationale_112", + "target": "prometheus_tools_read_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L451", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L111", "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": "prometheus_tools_rationale_111", + "target": "prometheus_tools_read_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L502", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L113", "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": "prometheus_tools_rationale_113", + "target": "prometheus_tools_read_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L525", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L144", "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": "prometheus_tools_rationale_144", + "target": "prometheus_tools_read_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L541", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L135", "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": "prometheus_tools_rationale_135", + "target": "prometheus_tools_read_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L555", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L147", "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": "prometheus_tools_read_file", + "target": "prometheus_tools_rationale_147" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L577", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L131", "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": "prometheus_tools_read_file", + "target": "prometheus_tools_rationale_131" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L598", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L130", "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": "prometheus_tools_read_file", + "target": "prometheus_tools_rationale_130" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L616", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L129", "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": "prometheus_tools_rationale_129", + "target": "prometheus_tools_write_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L640", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L126", "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": "prometheus_tools_rationale_126", + "target": "prometheus_tools_write_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L668", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L125", "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": "prometheus_tools_rationale_125", + "target": "prometheus_tools_write_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L676", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L127", "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": "prometheus_tools_rationale_127", + "target": "prometheus_tools_write_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L705", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L122", "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": "prometheus_tools_rationale_122", + "target": "prometheus_tools_write_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L731", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L155", "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": "prometheus_tools_rationale_155", + "target": "prometheus_tools_write_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L753", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L146", "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": "prometheus_tools_rationale_146", + "target": "prometheus_tools_write_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L769", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L158", "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": "prometheus_tools_write_file", + "target": "prometheus_tools_rationale_158" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L780", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L144", "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": "prometheus_tools_write_file", + "target": "prometheus_tools_rationale_144" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L807", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L143", "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": "prometheus_tools_write_file", + "target": "prometheus_tools_rationale_143" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L145", "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": "prometheus_tools_rationale_145", + "target": "prometheus_tools_list_files" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L13", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L142", "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": "prometheus_tools_rationale_142", + "target": "prometheus_tools_list_files" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L35", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L141", "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": "prometheus_tools_rationale_141", + "target": "prometheus_tools_list_files" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L60", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L143", "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": "prometheus_tools_rationale_143", + "target": "prometheus_tools_list_files" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L166", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L135", "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": "prometheus_tools_rationale_135", + "target": "prometheus_tools_list_files" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L269", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L168", "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": "prometheus_tools_rationale_168", + "target": "prometheus_tools_list_files" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L391", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L159", "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": "prometheus_tools_rationale_159", + "target": "prometheus_tools_list_files" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L567", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L171", "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": "prometheus_tools_list_files", + "target": "prometheus_tools_rationale_171" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L720", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L158", "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": "prometheus_tools_list_files", + "target": "prometheus_tools_rationale_158" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L869", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L158", "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": "prometheus_tools_rationale_158", + "target": "prometheus_tools_serve_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1000", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L155", "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": "prometheus_tools_rationale_155", + "target": "prometheus_tools_serve_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1115", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L154", "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": "prometheus_tools_rationale_154", + "target": "prometheus_tools_serve_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1224", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L156", "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": "prometheus_tools_rationale_156", + "target": "prometheus_tools_serve_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1325", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L145", "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": "prometheus_tools_rationale_145", + "target": "prometheus_tools_serve_file" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1482", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L125", "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": "prometheus_tools_dispatchtoolcall", + "target": "tests_test_memory_tools_wiring_test_search_memory_routed_via_registry" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1618", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L140", "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": "prometheus_tools_dispatchtoolcall", + "target": "tests_test_memory_tools_wiring_test_save_memory_routed_via_registry" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L73", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L158", "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": "prometheus_tools_dispatchtoolcall", + "target": "tests_test_memory_tools_wiring_test_non_registry_tool_not_routed" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L101", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_sandbox_tools.py", + "source_location": "L33", "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": "prometheus_tools_dispatchtoolcall", + "target": "tests_test_sandbox_tools_test_dispatch_execute_code" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L138", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_sandbox_tools.py", + "source_location": "L85", "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": "prometheus_tools_dispatchtoolcall", + "target": "tests_test_sandbox_tools_test_dispatch_execute_code_no_sandbox" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L144", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_sandbox_tools.py", + "source_location": "L52", "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": "prometheus_tools_dispatchtoolcall", + "target": "tests_test_sandbox_tools_test_dispatch_read_file" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L159", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_sandbox_tools.py", + "source_location": "L62", "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": "prometheus_tools_dispatchtoolcall", + "target": "tests_test_sandbox_tools_test_dispatch_write_file" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L189", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_sandbox_tools.py", + "source_location": "L72", "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": "prometheus_tools_dispatchtoolcall", + "target": "tests_test_sandbox_tools_test_dispatch_list_files" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L248", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_sandbox_tools.py", + "source_location": "L80", "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": "prometheus_tools_dispatchtoolcall", + "target": "tests_test_sandbox_tools_test_dispatch_read_file_no_sandbox" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L262", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_state_tools.py", + "source_location": "L108", "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": "prometheus_tools_dispatchtoolcall", + "target": "tests_test_state_tools_test_dispatch_get_state" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L281", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_state_tools.py", + "source_location": "L117", "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": "prometheus_tools_dispatchtoolcall", + "target": "tests_test_state_tools_test_dispatch_set_state" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L325", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_sandbox_tools.py", + "source_location": "L68", "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": "prometheus_tools_dispatchtoolcall", + "target": "tests_test_sandbox_tools_test_dispatch_execute_code_routes_to_registry" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L384", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L129", "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": "prometheus_tools_dispatchtoolcall", + "target": "prometheus_tools_executestatetool" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L404", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L85", "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": "prometheus_tools_dispatchtoolcall", + "target": "prometheus_tools_executememorytool" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L471", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L86", "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": "prometheus_tools_dispatchtoolcall", + "target": "tests_test_memory_tools_wiring_test_search_memory_routed_to_executememorytool" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L524", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L99", "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": "prometheus_tools_dispatchtoolcall", + "target": "tests_test_memory_tools_wiring_test_save_memory_routed_to_executememorytool" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L560", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L114", "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": "prometheus_tools_dispatchtoolcall", + "target": "tests_test_memory_tools_wiring_test_memory_tool_skipped_without_user" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L580", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L127", "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": "prometheus_tools_dispatchtoolcall", + "target": "tests_test_memory_tools_wiring_test_non_memory_tool_not_routed_to_executememorytool" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L649", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L94", "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": "prometheus_tools_set_state", + "target": "prometheus_tools_rationale_94" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L659", + "source_file": "main/app/prometheus/vector.py", + "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": "main_app_prometheus_vector_py", + "target": "prometheus_vector_normalizerows" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L693", + "source_file": "main/app/prometheus/vector.py", + "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_19" + "source": "main_app_prometheus_vector_py", + "target": "prometheus_vector_embed" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L713", + "source_file": "main/app/prometheus/vector.py", + "source_location": "L14", "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": "main_app_prometheus_vector_py", + "target": "prometheus_vector_decodeembeddings" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L732", + "source_file": "main/app/prometheus/vector.py", + "source_location": "L8", "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": "main_app_prometheus_vector_py", + "target": "prometheus_vector_batchcosinesimilarity" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L804", + "source_file": "main/app/prometheus/vector.py", + "source_location": "L20", "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": "main_app_prometheus_vector_py", + "target": "prometheus_vector_contenthash" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L862", + "source_file": "main/app/prometheus/vector.py", + "source_location": "L55", "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": "main_app_prometheus_vector_py", + "target": "prometheus_vector_tovectorstring" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L882", + "source_file": "main/app/prometheus/vector.py", + "source_location": "L59", "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": "main_app_prometheus_vector_py", + "target": "prometheus_vector_fromvectorstring" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L944", + "source_file": "main/app/prometheus/vector.py", + "source_location": "L24", "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": "main_app_prometheus_vector_py", + "target": "prometheus_vector_getrelevancescore" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L972", + "source_file": "main/app/prometheus/vector.py", + "source_location": "L35", "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": "prometheus_vector_batchcosinesimilarity", + "target": "prometheus_vector_normalizerows" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L993", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L379", "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": "prometheus_memory_searchasync", + "target": "prometheus_vector_embed" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1013", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "bench/bench_memory_vector.py", + "source_location": "L32", "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": "bench_bench_memory_vector_benchonce", + "target": "prometheus_vector_embed" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1062", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/tools.py", + "source_location": "L63", "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": "prometheus_vector_embed", + "target": "prometheus_tools_executememorytool" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1095", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "bench/bench_memory_vector.py", + "source_location": "L22", "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": "bench_bench_memory_vector_benchonce", + "target": "prometheus_vector_decodeembeddings" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1108", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L380", "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": "prometheus_memory_searchasync", + "target": "prometheus_vector_batchcosinesimilarity" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1143", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "bench/bench_memory_vector.py", + "source_location": "L25", "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": "bench_bench_memory_vector_benchonce", + "target": "prometheus_vector_batchcosinesimilarity" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1157", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_vector_utils.py", + "source_location": "L8", "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": "prometheus_vector_batchcosinesimilarity", + "target": "tests_test_vector_utils_testbatchcosinesimilarity_test_empty_matrix" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1165", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_vector_utils.py", + "source_location": "L14", "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": "prometheus_vector_batchcosinesimilarity", + "target": "tests_test_vector_utils_testbatchcosinesimilarity_test_single_row" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1192", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_vector_utils.py", + "source_location": "L27", "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": "prometheus_vector_batchcosinesimilarity", + "target": "tests_test_vector_utils_testbatchcosinesimilarity_test_multiple_rows" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1217", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_vector_utils.py", + "source_location": "L34", "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": "prometheus_vector_batchcosinesimilarity", + "target": "tests_test_vector_utils_testbatchcosinesimilarity_test_zero_query" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1237", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L262", "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": "prometheus_memory_upsertmemoryasync", + "target": "prometheus_vector_contenthash" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1276", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L54", "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": "prometheus_memory_applyupdate", + "target": "prometheus_vector_contenthash" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1299", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_vector_utils.py", + "source_location": "L40", "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": "prometheus_vector_contenthash", + "target": "tests_test_vector_utils_testcontenthash_test_deterministic" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1318", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_vector_utils.py", + "source_location": "L43", "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": "prometheus_vector_contenthash", + "target": "tests_test_vector_utils_testcontenthash_test_different_inputs" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1341", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_vector_utils.py", + "source_location": "L46", "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": "prometheus_vector_contenthash", + "target": "tests_test_vector_utils_testcontenthash_test_hex_format" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1397", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_relevance_score.py", + "source_location": "L21", "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": "prometheus_vector_getrelevancescore", + "target": "tests_test_relevance_score_testtimedecay_test_just_accessed_has_full_score" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1419", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_relevance_score.py", + "source_location": "L26", "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": "prometheus_vector_getrelevancescore", + "target": "tests_test_relevance_score_testtimedecay_test_one_day_old" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1452", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_relevance_score.py", + "source_location": "L31", "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": "prometheus_vector_getrelevancescore", + "target": "tests_test_relevance_score_testtimedecay_test_seven_days_old" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1475", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_relevance_score.py", + "source_location": "L36", "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": "prometheus_vector_getrelevancescore", + "target": "tests_test_relevance_score_testtimedecay_test_thirty_days_old" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1496", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_relevance_score.py", + "source_location": "L41", "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": "prometheus_vector_getrelevancescore", + "target": "tests_test_relevance_score_testtimedecay_test_ninety_days_old" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1512", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_relevance_score.py", + "source_location": "L46", "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": "prometheus_vector_getrelevancescore", + "target": "tests_test_relevance_score_testtimedecay_test_one_year_old" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1528", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_relevance_score.py", + "source_location": "L52", "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": "prometheus_vector_getrelevancescore", + "target": "tests_test_relevance_score_testtimedecay_test_score_always_positive" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1546", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_relevance_score.py", + "source_location": "L61", "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": "prometheus_vector_getrelevancescore", + "target": "tests_test_relevance_score_testbasescoreimpact_test_high_base_beats_low_base_same_age" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1582", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_relevance_score.py", + "source_location": "L69", "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": "prometheus_vector_getrelevancescore", + "target": "tests_test_relevance_score_testbasescoreimpact_test_frequently_used_survives_longer" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1613", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_relevance_score.py", + "source_location": "L75", "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": "prometheus_vector_getrelevancescore", + "target": "tests_test_relevance_score_testbasescoreimpact_test_rare_old_loses_to_popular_new" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1635", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_relevance_score.py", + "source_location": "L79", "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": "prometheus_vector_getrelevancescore", + "target": "tests_test_relevance_score_testbasescoreimpact_test_score_capped_at_one" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1661", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_relevance_score.py", + "source_location": "L87", "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": "prometheus_vector_getrelevancescore", + "target": "tests_test_relevance_score_testbasescoreimpact_test_equal_age_higher_base_wins" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1686", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_relevance_score.py", + "source_location": "L95", "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": "prometheus_vector_getrelevancescore", + "target": "tests_test_relevance_score_testdecaymonotonicity_test_older_always_lower_score" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1727", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_relevance_score.py", + "source_location": "L102", "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": "prometheus_vector_getrelevancescore", + "target": "tests_test_relevance_score_testdecaymonotonicity_test_never_accessed_uses_full_base" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-12-artifact-removal-cache-verdict.md", - "source_location": "L1", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_relevance_score.py", + "source_location": "L110", "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": "prometheus_vector_getrelevancescore", + "target": "tests_test_relevance_score_testnocronneeded_test_same_memory_same_time_same_score" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-12-artifact-removal-cache-verdict.md", - "source_location": "L3", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_relevance_score.py", + "source_location": "L117", "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": "prometheus_vector_getrelevancescore", + "target": "tests_test_relevance_score_testnocronneeded_test_different_times_different_scores" }, { - "relation": "contains", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-12-artifact-removal-cache-verdict.md", - "source_location": "L25", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L8", "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": "main_controller_prometheus_controller_py", + "target": "fastapi" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L1", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L21", "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": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_verifysessionownsership" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L13", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L19", "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": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_health" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L24", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L23", "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": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_getsessions" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L79", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L36", "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": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_updatesessiontitle" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L139", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L50", "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": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_gethistory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L171", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L67", "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": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_deletesession" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L185", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L130", "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": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_chat_stream" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L35", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L132", "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": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_resumechatstream" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L65", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L170", "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": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_deleteworkspacefile" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L74", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L183", "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": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_downloadworkspacefile" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L97", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L199", "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": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_listworkspacefiles" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L134", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L145", "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": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_forward" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L148", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L147", "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": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_uploadworkspacefile" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L166", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L28", "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": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_createsession" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L189", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L75", "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": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_chat" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L1", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L163", "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": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_getmemories" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L13", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L177", "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": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_creatememory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L24", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L201", "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": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_deletememory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L56", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L163", "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": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_get_memories" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L76", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L177", "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": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_create_memory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L102", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L201", "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": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_delete_memory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L117", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L21", "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": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_verify_session_ownership" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L132", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L67", "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": "controller_prometheus_controller_verifysessionownsership", + "target": "controller_prometheus_controller_updatesessiontitle" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L143", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L81", "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": "controller_prometheus_controller_verifysessionownsership", + "target": "controller_prometheus_controller_gethistory" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L154", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L140", "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": "controller_prometheus_controller_verifysessionownsership", + "target": "controller_prometheus_controller_chat_stream" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L38", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L141", "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": "controller_prometheus_controller_resumechatstream", + "target": "controller_prometheus_controller_verifysessionownsership" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L51", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L118", "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": "controller_prometheus_controller_verifysessionownsership", + "target": "controller_prometheus_controller_chat" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L72", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L68", "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": "controller_prometheus_controller_updatesessiontitle", + "target": "controller_prometheus_controller_verify_session_ownership" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_file": "main/controller/prometheus_controller.py", "source_location": "L88", "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": "controller_prometheus_controller_gethistory", + "target": "controller_prometheus_controller_chat" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L1", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L82", "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": "controller_prometheus_controller_gethistory", + "target": "controller_prometheus_controller_verify_session_ownership" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L8", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L128", "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": "controller_prometheus_controller_chat_stream", + "target": "controller_prometheus_controller_forward" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L46", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L138", "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": "controller_prometheus_controller_createsession", + "target": "controller_prometheus_controller_chat_stream" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L68", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L142", "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": "controller_prometheus_controller_resumechatstream", + "target": "controller_prometheus_controller_forward" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/service/prometheus_service.py", + "source_location": "L13", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_memory_prometheusmemory", + "target": "service_prometheus_service_prometheusservice" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_dedup.py", + "source_location": "L2", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_memory_prometheusmemory", + "target": "tests_test_memory_dedup_testexactsamekeyupdates" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_dedup.py", + "source_location": "L2", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_memory_prometheusmemory", + "target": "tests_test_memory_dedup_testsimilarkeymerges" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_dedup.py", + "source_location": "L2", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_memory_prometheusmemory", + "target": "tests_test_memory_dedup_testdifferentkeysnomerge" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_dedup.py", + "source_location": "L2", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_memory_prometheusmemory", + "target": "tests_test_memory_dedup_testmergeboostsscore" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_dedup.py", + "source_location": "L2", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_memory_prometheusmemory", + "target": "tests_test_memory_dedup_testmergeincrementsaccess" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_dedup.py", + "source_location": "L2", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_memory_prometheusmemory", + "target": "tests_test_memory_dedup_testthresholdboundary" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L14", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_memory_prometheusmemory", + "target": "tests_test_memory_maintenance_testdecay" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L14", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_memory_prometheusmemory", + "target": "tests_test_memory_maintenance_testarchive" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L14", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_memory_prometheusmemory", + "target": "tests_test_memory_maintenance_testdecayandarchivetogether" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L14", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_memory_prometheusmemory", + "target": "tests_test_memory_maintenance_testemptydatabase" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_manager.py", + "source_location": "L5", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_memory_prometheusmemory", + "target": "tests_test_memory_manager_testgetmemorylimit" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_manager.py", + "source_location": "L5", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_memory_prometheusmemory", + "target": "tests_test_memory_manager_testupsertmemory" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_manager.py", + "source_location": "L5", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_memory_prometheusmemory", + "target": "tests_test_memory_manager_testcountmemories" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_manager.py", + "source_location": "L5", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_memory_prometheusmemory", + "target": "tests_test_memory_manager_testgetusermemories" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_manager.py", + "source_location": "L5", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_memory_prometheusmemory", + "target": "tests_test_memory_manager_testdeletememory" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_manager.py", + "source_location": "L5", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_memory_prometheusmemory", + "target": "tests_test_memory_manager_testsearchfulltext" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_type_aware_decay.py", + "source_location": "L6", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_memory_prometheusmemory", + "target": "tests_test_type_aware_decay_testtypeawaredecay" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L131", + "source_file": "main/models/prometheus.py", + "source_location": "L5", "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": "main_models_prometheus_py", + "target": "models_prometheus_prometheussession" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L175", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_models.py", + "source_location": "L4", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_prometheus_prometheussession", + "target": "tests_test_models_testusermodel" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_models.py", + "source_location": "L4", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_prometheus_prometheussession", + "target": "tests_test_models_teststocksapikeymodel" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_models.py", + "source_location": "L4", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_prometheus_prometheussession", + "target": "tests_test_models_testprometheussessionmodel" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_models.py", + "source_location": "L168", "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": "models_prometheus_prometheussession", + "target": "tests_test_models_testprometheussessionmodel_test_create_session" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L203", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_models.py", + "source_location": "L177", "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": "models_prometheus_prometheussession", + "target": "tests_test_models_testprometheussessionmodel_test_default_history" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L235", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/generation.py", + "source_location": "L13", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_prometheus_prometheussession", + "target": "prometheus_generation_prometheusgenerator" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/generation.py", + "source_location": "L13", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_prometheus_prometheussession", + "target": "prometheus_generation_sessionproxy" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L2", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_sandbox_prometheussandbox", + "target": "tests_test_sandbox_persistence_testprometheussandboxmodel" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L3", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_sandbox_prometheussandbox", + "target": "tests_test_sandbox_persistence_testsandboxpersistence" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L7", "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": "models_sandbox_prometheussandbox", + "target": "tests_test_sandbox_persistence_testprometheussandboxmodel_test_create_sandbox_mapping" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L266", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L19", "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": "models_sandbox_prometheussandbox", + "target": "tests_test_sandbox_persistence_testprometheussandboxmodel_test_sandbox_has_timestamps" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L287", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L31", "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": "models_sandbox_prometheussandbox", + "target": "tests_test_sandbox_persistence_testprometheussandboxmodel_test_one_sandbox_per_user" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L302", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L77", "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": "models_sandbox_prometheussandbox", + "target": "tests_test_sandbox_persistence_test_get_or_create_reuses_existing" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L92", + "weight": 1.0, + "source": "models_sandbox_prometheussandbox", + "target": "tests_test_sandbox_persistence_test_get_or_create_respawns_when_dead" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L3", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_sandbox_prometheussandbox", + "target": "tests_test_sandbox_persistence_testsandboxcleanup" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L148", + "weight": 1.0, + "source": "models_sandbox_prometheussandbox", + "target": "tests_test_sandbox_persistence_test_cleanup_removes_dead_mappings" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L168", + "weight": 1.0, + "source": "models_sandbox_prometheussandbox", + "target": "tests_test_sandbox_persistence_test_cleanup_keeps_alive_sandboxes" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L326", + "source_file": "main/service/prometheus_service.py", + "source_location": "L23", "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": "main_service_prometheus_service_py", + "target": "service_prometheus_service_memorymaintenance" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L364", + "source_file": "main/service/prometheus_service.py", + "source_location": "L4", "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": "main_service_prometheus_service_py", + "target": "service_prometheus_service_prometheusservice" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L403", + "source_file": "main/service/prometheus_service.py", + "source_location": "L6", "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": "main_service_prometheus_service_py", + "target": "service_prometheus_service_initialize" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L422", + "source_file": "main/service/prometheus_service.py", + "source_location": "L60", "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": "main_service_prometheus_service_py", + "target": "service_prometheus_service_registermemorymaintenancejob" }, { - "relation": "contains", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/service/prometheus_service.py", + "source_location": "L52", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "prometheus_matrix_cache_invalidateuser" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L49", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_memory_maintenance_testdecay_test_active_memory_decays" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L56", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_memory_maintenance_testdecay_test_zero_access_count_still_decays" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L62", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_memory_maintenance_testdecay_test_high_score_decays_proportionally" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L69", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_memory_maintenance_testdecay_test_very_low_score_stays_above_zero" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L76", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_memory_maintenance_testdecay_test_multiple_users_all_decayed" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L87", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_memory_maintenance_testarchive_test_dead_memory_archived" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L94", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_memory_maintenance_testarchive_test_low_score_but_recent_not_archived" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L101", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_memory_maintenance_testarchive_test_zero_access_but_high_score_not_archived" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L108", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_memory_maintenance_testarchive_test_accessed_memory_not_archived" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L117", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_memory_maintenance_testarchive_test_already_archived_not_double_archived" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L125", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_memory_maintenance_testarchive_test_multiple_users_independent_archive" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L137", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_memory_maintenance_testdecayandarchivetogether_test_decay_then_archive_check" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L145", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_memory_maintenance_testdecayandarchivetogether_test_score_above_threshold_after_decay_not_archived" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L151", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_memory_maintenance_testdecayandarchivetogether_test_score_just_below_threshold_archived" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L158", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_memory_maintenance_testdecayandarchivetogether_test_days_just_below_threshold_not_archived" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L164", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_memory_maintenance_testdecayandarchivetogether_test_days_just_above_threshold_archived" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L171", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_memory_maintenance_testemptydatabase_test_no_memories_does_not_crash" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_type_aware_decay.py", + "source_location": "L32", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_type_aware_decay_testtypeawaredecay_test_preference_decays_slowly" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_type_aware_decay.py", + "source_location": "L38", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_type_aware_decay_testtypeawaredecay_test_context_decays_fast" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_type_aware_decay.py", + "source_location": "L44", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_type_aware_decay_testtypeawaredecay_test_analysis_decays_normally" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_type_aware_decay.py", + "source_location": "L50", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_type_aware_decay_testtypeawaredecay_test_feedback_decays_medium" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_type_aware_decay.py", + "source_location": "L56", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_type_aware_decay_testtypeawaredecay_test_unknown_type_uses_default" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_type_aware_decay.py", + "source_location": "L66", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_type_aware_decay_testtypeawaredecay_test_mixed_types_all_correct" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_type_aware_decay.py", + "source_location": "L82", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_type_aware_decay_testtypeawaredecay_test_preference_survives_longer" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/service/prometheus_service.py", + "source_location": "L1", + "weight": 0.8, + "confidence_score": 0.5, + "source": "service_prometheus_service_prometheusservice", + "target": "utils_service_manager_servicemanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/service/prometheus_service.py", + "source_location": "L13", + "weight": 0.8, + "confidence_score": 0.5, + "source": "service_prometheus_service_prometheusservice", + "target": "models_memory_usermemory" + }, + { + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L53", + "source_file": "main/service/prometheus_service.py", + "source_location": "L87", "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": "service_prometheus_service_initialize", + "target": "service_prometheus_service_registermemorymaintenancejob" }, { "relation": "contains", @@ -138566,5 +143721,5 @@ "label": "User Authentication & Authorization" } ], - "built_at_commit": "1e23e042a1d9f77378b2a7b41af794104d4cb397" + "built_at_commit": "1c953f106bc1d5202c7143bbf98d7eb1b4cdb632" } \ No newline at end of file diff --git a/graphify-out/manifest.json b/graphify-out/manifest.json index 2089ec27..edf95c4b 100644 --- a/graphify-out/manifest.json +++ b/graphify-out/manifest.json @@ -10,13 +10,13 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\config.py": { - "mtime": 1789425836.284395, - "ast_hash": "ef2c8d0823152252266ff44bf4214a4f", + "mtime": 1790707412.4639857, + "ast_hash": "0431e47774260b291eafe77a2f44dd99", "semantic_hash": "" }, "D:\\Repositories\\server\\run.py": { - "mtime": 1789433601.1342905, - "ast_hash": "77fcee1422b1ff8f4ce46a5e2e356246", + "mtime": 1789626195.3671405, + "ast_hash": "92577acca4f2a3bbf0ca57a9a27abdcc", "semantic_hash": "" }, "D:\\Repositories\\server\\frontend\\components.json": { @@ -35,13 +35,13 @@ "semantic_hash": "c471ffc33ba3a03ab85e430121d628aa" }, "D:\\Repositories\\server\\frontend\\vite.config.js": { - "mtime": 1788637388.7357066, - "ast_hash": "1cfd7dbe10c0d84e0c2592781cdaeb5a", + "mtime": 1789626570.5228856, + "ast_hash": "cd569733362cd7dd8135267de3157f2f", "semantic_hash": "" }, "D:\\Repositories\\server\\frontend\\src\\api.js": { - "mtime": 1788657707.1779685, - "ast_hash": "6bd39ec198869a8b3c107105d9da61e4", + "mtime": 1789626557.8735044, + "ast_hash": "16d7cc4a490ac3eed97fe073800109f4", "semantic_hash": "" }, "D:\\Repositories\\server\\frontend\\src\\App.jsx": { @@ -85,8 +85,8 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\frontend\\src\\components\\SettingsDialog.jsx": { - "mtime": 1786820946.0218458, - "ast_hash": "3f7f8fe1c78422e051c31e0b77833db5", + "mtime": 1789626563.6772199, + "ast_hash": "dfd4222e9bcababe89ce731176062491", "semantic_hash": "" }, "D:\\Repositories\\server\\frontend\\src\\components\\portfolio\\AddDividendDialog.jsx": { @@ -205,18 +205,23 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\main\\app\\authentication\\authentication.py": { - "mtime": 1789266824.5949514, - "ast_hash": "e747d01f0db15e4322833ed9dc067348", + "mtime": 1790710502.8264444, + "ast_hash": "904e735c17019459ed5f622346d87973", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\app\\authentication\\constants.py": { - "mtime": 1789266824.5959513, - "ast_hash": "6ecf8e66be1de1ff26dca48638218fc4", + "mtime": 1790709776.48945, + "ast_hash": "4bb8670e27e85761d9f342841808978d", + "semantic_hash": "" + }, + "D:\\Repositories\\server\\main\\app\\authentication\\introspect.py": { + "mtime": 1790709776.485443, + "ast_hash": "c21d1ed541c25ba0e171b41535cf7926", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\app\\authentication\\session.py": { - "mtime": 1789434849.6886837, - "ast_hash": "e2c239692412e44bd7ff4d4f6a9f8988", + "mtime": 1790709786.5642009, + "ast_hash": "20dc91ffbcc1a68f55a3c9039afaf6dd", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\app\\authentication\\sso.py": { @@ -229,54 +234,54 @@ "ast_hash": "b797eff10d6300739b550248fe003dbf", "semantic_hash": "" }, - "D:\\Repositories\\server\\main\\app\\prometheus\\agent.py": { - "mtime": 1789438984.8569534, - "ast_hash": "19fb4e9e6da3a76551e55a3436460ed1", + "D:\\Repositories\\server\\main\\app\\orunmila\\agent.py": { + "mtime": 1789627530.252448, + "ast_hash": "ec11759056ad9ffe2abb1b57faf9ab88", "semantic_hash": "" }, - "D:\\Repositories\\server\\main\\app\\prometheus\\chat.py": { - "mtime": 1789266824.60047, - "ast_hash": "8795017b4ff81f81d5e107f6aa6082a4", + "D:\\Repositories\\server\\main\\app\\orunmila\\chat.py": { + "mtime": 1789627519.913642, + "ast_hash": "2c4bccbe66499695aae4ee9fdadbb9d0", "semantic_hash": "" }, - "D:\\Repositories\\server\\main\\app\\prometheus\\compact.py": { - "mtime": 1789438984.938393, - "ast_hash": "64939e1ae6d23e9f4ca37ac7a492d857", + "D:\\Repositories\\server\\main\\app\\orunmila\\compact.py": { + "mtime": 1789627519.9146512, + "ast_hash": "e4a139fe61873463ebb0ea3eeab13303", "semantic_hash": "" }, - "D:\\Repositories\\server\\main\\app\\prometheus\\mcp.py": { - "mtime": 1789364804.2356262, - "ast_hash": "0fc31aca590f7a823892d76570edfc98", + "D:\\Repositories\\server\\main\\app\\orunmila\\mcp.py": { + "mtime": 1789627530.2504516, + "ast_hash": "cafca412f1612f2532bb4a3b1555c5f1", "semantic_hash": "" }, - "D:\\Repositories\\server\\main\\app\\prometheus\\memory.py": { - "mtime": 1789439255.3807392, - "ast_hash": "f4c2b9d14c7f7c1349638230c674a32c", + "D:\\Repositories\\server\\main\\app\\orunmila\\memory.py": { + "mtime": 1789627737.6011822, + "ast_hash": "f6c09dbf219fcbc5d68b0110200893b2", "semantic_hash": "" }, - "D:\\Repositories\\server\\main\\app\\prometheus\\sandbox.py": { - "mtime": 1789428092.156934, - "ast_hash": "fec4dd60a0b6aa65557b0a96d7eece4f", + "D:\\Repositories\\server\\main\\app\\orunmila\\sandbox.py": { + "mtime": 1789627530.2504516, + "ast_hash": "03f167a9a7cdc73dcd238b7f4809a332", "semantic_hash": "" }, - "D:\\Repositories\\server\\main\\app\\prometheus\\stream_bus.py": { + "D:\\Repositories\\server\\main\\app\\orunmila\\stream_bus.py": { "mtime": 1789439356.61903, "ast_hash": "18123062622096d1ed80c8d6c41b0169", "semantic_hash": "" }, - "D:\\Repositories\\server\\main\\app\\prometheus\\tools.py": { - "mtime": 1789282460.734141, - "ast_hash": "d54cd35bb02513bca16bc806f1ab4c6a", + "D:\\Repositories\\server\\main\\app\\orunmila\\tools.py": { + "mtime": 1789627519.916649, + "ast_hash": "b45895bba6e8c7b6bfee5dd7c1cfa2c1", "semantic_hash": "" }, - "D:\\Repositories\\server\\main\\app\\prometheus\\vector.py": { + "D:\\Repositories\\server\\main\\app\\orunmila\\vector.py": { "mtime": 1789266824.606479, "ast_hash": "dd0df7ede0dd28d74c307a7aea6ba04b", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\app\\scraper_b3\\scraper.py": { - "mtime": 1789282003.1280055, - "ast_hash": "1d4b74cf65d7cc8f304a53f12110a77e", + "mtime": 1790710652.4290361, + "ast_hash": "f4a9207aa31488a10c3aad66b39c8d09", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\app\\scraper_b3\\xango.py": { @@ -295,8 +300,8 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\main\\app\\stocks_api\\key.py": { - "mtime": 1789266824.6110003, - "ast_hash": "41e13069c81260e08594fd9e35557e2c", + "mtime": 1790709776.4884515, + "ast_hash": "241906aeb4d9f2f1e013ffa469c3ae9c", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\app\\stocks_api\\query.py": { @@ -315,18 +320,18 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\main\\app\\user\\user.py": { - "mtime": 1789428228.2499757, - "ast_hash": "f10c1e3f5391986c8b725dfe76af4597", + "mtime": 1790709776.4904485, + "ast_hash": "a2cf805d0df8ca36122f887ae54c9280", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\controller\\authentication_controller.py": { - "mtime": 1789365987.4456894, - "ast_hash": "b061f08825c0c4245d98f2b2c78a3bc3", + "mtime": 1790709838.353358, + "ast_hash": "0255e0e02565b0de1b09c1e9ad8cacba", "semantic_hash": "" }, - "D:\\Repositories\\server\\main\\controller\\prometheus_controller.py": { - "mtime": 1789434877.2972302, - "ast_hash": "f21a938f6fb14fb7773cf4986c6bcd56", + "D:\\Repositories\\server\\main\\controller\\orunmila_controller.py": { + "mtime": 1789626004.4603558, + "ast_hash": "e83c7e788f9b6a0a5c63a0e9d4d62c6e", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\controller\\stocksapi_controller.py": { @@ -345,18 +350,18 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\main\\models\\memory.py": { - "mtime": 1789266824.6205156, - "ast_hash": "c76f29fef1fab50d579d6dd8f82b9c60", + "mtime": 1789627519.9261706, + "ast_hash": "2998ce69c0463f8e9c56e818adb7fceb", "semantic_hash": "" }, - "D:\\Repositories\\server\\main\\models\\prometheus.py": { - "mtime": 1789266824.6215203, - "ast_hash": "68de0cc1a6d9707a26241e318130c41f", + "D:\\Repositories\\server\\main\\models\\orunmila.py": { + "mtime": 1789627519.9146512, + "ast_hash": "9df7147d9c46f6634a64c72112fc1cf8", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\models\\sandbox.py": { - "mtime": 1789266824.6225207, - "ast_hash": "812b7c0da8ae615fd35f8c5b9c107b14", + "mtime": 1789627519.9261706, + "ast_hash": "c746db6d6a1152ea46a8aec78783b226", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\models\\stocksapi_key.py": { @@ -384,9 +389,9 @@ "ast_hash": "68127fe1d44a44242ce3a5ed2bf4d464", "semantic_hash": "" }, - "D:\\Repositories\\server\\main\\service\\prometheus_service.py": { - "mtime": 1789266824.626519, - "ast_hash": "3e14105613ccb9deb1c43d6e0e8502ff", + "D:\\Repositories\\server\\main\\service\\orunmila_service.py": { + "mtime": 1789626114.6482823, + "ast_hash": "ec0e8d56b52bcce61bdca987aa7669de", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\service\\scraper_service.py": { @@ -395,7 +400,7 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\main\\service\\stocksapi_service.py": { - "mtime": 1789267774.0200655, + "mtime": 1790707412.4710135, "ast_hash": "83d9740ec96a60fc7c671db7a850f86e", "semantic_hash": "" }, @@ -435,8 +440,8 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\main\\utils\\roles.py": { - "mtime": 1789266824.6370509, - "ast_hash": "4cd3b8e35737d786f10bfb7f46d3444a", + "mtime": 1790707412.4730222, + "ast_hash": "82063fac45e0e82ef3efa1be9248b9ca", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\utils\\scheduler.py": { @@ -460,8 +465,8 @@ "semantic_hash": "d41d8cd98f00b204e9800998ecf8427e" }, "D:\\Repositories\\server\\migrations\\env.py": { - "mtime": 1789266824.639558, - "ast_hash": "345111c3a60677e141468fe7d6af0cd3", + "mtime": 1789626224.6520696, + "ast_hash": "269f35fa57eecf274cb3a87d613ac006", "semantic_hash": "" }, "D:\\Repositories\\server\\migrations\\versions\\25af7ad931e7_initial_migration.py": { @@ -519,14 +524,19 @@ "ast_hash": "f3a0b7e1b13ba540d0727d9a33da9a87", "semantic_hash": "" }, + "D:\\Repositories\\server\\migrations\\versions\\f7a8b9c0d1e2_rename_prometheus_to_orunmila.py": { + "mtime": 1789627420.3861797, + "ast_hash": "39dc14c39e2e8bbd9196712b6372f8ac", + "semantic_hash": "" + }, "D:\\Repositories\\server\\AGENTS.md": { - "mtime": 1789433940.4116547, - "ast_hash": "bf791e7f0c47c9789225de4efea91a83", + "mtime": 1789627715.7268107, + "ast_hash": "ef6021079152d1189a4168e43670caa3", "semantic_hash": "" }, "D:\\Repositories\\server\\docker-compose.yml": { - "mtime": 1789363976.6625137, - "ast_hash": "6120b56e7d0d79dd57b0eb9b1cb452ef", + "mtime": 1789627348.435654, + "ast_hash": "1dcc2f80acdae8be67131c6f2965d6a0", "semantic_hash": "" }, "D:\\Repositories\\server\\forgevm.yaml": { @@ -535,28 +545,38 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\README.md": { - "mtime": 1789266824.5528724, - "ast_hash": "eefffc81bc23e76d2429b5d93525910e", + "mtime": 1789627715.7268107, + "ast_hash": "10c5689284ae6fc5ee634a3561ed5daa", "semantic_hash": "" }, "D:\\Repositories\\server\\requirements.txt": { - "mtime": 1789439006.260999, - "ast_hash": "05a6b048172c8140804c4283af13f038", + "mtime": 1790707412.4750223, + "ast_hash": "e380f5a072adcb50daae1142b9d2985f", "semantic_hash": "" }, "D:\\Repositories\\server\\TODO.md": { - "mtime": 1789491365.7767086, - "ast_hash": "6dfb9e567bc2159601d0999f9dcfd48c", + "mtime": 1789627348.434652, + "ast_hash": "d055f0d64aaf60f16c5d9601fe41743b", "semantic_hash": "" }, "D:\\Repositories\\server\\docs\\authentication.md": { - "mtime": 1789492087.5691185, - "ast_hash": "9febbdf27720d811a9bf0ea416811aba", + "mtime": 1789627715.725813, + "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": 1789492096.4916055, - "ast_hash": "3e1e793d2afb4de361ef54cd848bd807", + "mtime": 1789627746.0334775, + "ast_hash": "c92e378440f8ec322185c6c647fd7580", "semantic_hash": "" }, "D:\\Repositories\\server\\docs\\scraper_b3.md": { @@ -565,13 +585,13 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\docs\\stocks_api.md": { - "mtime": 1789492079.7291944, - "ast_hash": "c3312ead4cfa7087999bb95884aa57ca", + "mtime": 1789627715.725813, + "ast_hash": "95776a22d8b1b9ad1d5a848a4c47c4be", "semantic_hash": "" }, "D:\\Repositories\\server\\docs\\user.md": { - "mtime": 1789492113.860849, - "ast_hash": "5ba8841be468b3fc608791e2f2ad6145", + "mtime": 1789627715.7248125, + "ast_hash": "1441362ec9c24f3e04abfd6c913b8efe", "semantic_hash": "" }, "D:\\Repositories\\server\\docs\\superpowers\\plans\\2026-08-09-sse-resume.md": { diff --git a/main/app/scraper_b3/scraper.py b/main/app/scraper_b3/scraper.py index 5d69f343..b5d30772 100644 --- a/main/app/scraper_b3/scraper.py +++ b/main/app/scraper_b3/scraper.py @@ -150,9 +150,7 @@ def historicalDividends(self, TICKER): } ) if "VALOR ORIGINAL" not in dfHistory.columns: - # "ov" absent (adj=False batches): SI ships ov whenever a factor - # exists, so copy adjusted as-is — no factor math. - dfHistory["VALOR ORIGINAL"] = dfHistory["VALOR AJUSTADO"] + dfHistory["VALOR ORIGINAL"] = float("nan") for col in ["DATA COM", "DATA PAGAMENTO"]: if col in dfHistory.columns: From 09a2310802f2d3b4d7f5f50af8e789acdcd23abf Mon Sep 17 00:00:00 2001 From: heitorrosa <76885858+heitorrosa@users.noreply.github.com> Date: Tue, 29 Sep 2026 17:00:49 -0300 Subject: [PATCH 07/20] evict sessions on sso and enforce secure cookies --- main/controller/authentication_controller.py | 14 ++--- main/service/authentication_service.py | 3 +- tests/test_auth_audit_fixes.py | 55 +++++++++++++++++++- 3 files changed, 60 insertions(+), 12 deletions(-) diff --git a/main/controller/authentication_controller.py b/main/controller/authentication_controller.py index 7f43c6ec..5b5342cc 100644 --- a/main/controller/authentication_controller.py +++ b/main/controller/authentication_controller.py @@ -33,14 +33,6 @@ def isSecureScheme(request: Request) -> bool: - try: - forwardedRaw = request.headers.get("X-Forwarded-Proto", "") - except Exception: - forwardedRaw = "" - if isinstance(forwardedRaw, str): - proto = forwardedRaw.split(",")[0].strip().lower() - if proto in ("http", "https"): - return proto == "https" return request.url.scheme == "https" @@ -257,10 +249,12 @@ async def googleCallback(request: Request, response: Response, db: Session = Dep if redirectUrl: redirectResponse = RedirectResponse(url=redirectUrl) - issueSessionCookie(redirectResponse, request, db, user) + _, sessionId = issueSessionCookie(redirectResponse, request, db, user) + SessionManager.revokeAllExcept(db, user["userId"], sessionId) return redirectResponse - accessToken, _ = issueSessionCookie(response, request, db, user) + accessToken, sessionId = issueSessionCookie(response, request, db, user) + SessionManager.revokeAllExcept(db, user["userId"], sessionId) logger.info("--- Google Callback End ---") return {"accessToken": accessToken, "tokenType": "bearer", "user": user} diff --git a/main/service/authentication_service.py b/main/service/authentication_service.py index 340c0530..ed7048b5 100644 --- a/main/service/authentication_service.py +++ b/main/service/authentication_service.py @@ -12,6 +12,7 @@ def initialize(port: int): service = getApp(port) service.add_middleware( - SessionMiddleware, secret_key=Config.USER.SESSION_SECRET_KEY, same_site="lax", https_only=False + SessionMiddleware, + secret_key=Config.USER.SESSION_SECRET_KEY, same_site="lax", https_only=True ) service.include_router(authenticationRouter) diff --git a/tests/test_auth_audit_fixes.py b/tests/test_auth_audit_fixes.py index 14d33a57..dc87e776 100644 --- a/tests/test_auth_audit_fixes.py +++ b/tests/test_auth_audit_fixes.py @@ -188,7 +188,60 @@ def test_invalid_token_generic_401(self, authDbClient): assert leaked not in resp.text -class TestPIIScrub: +class TestSSORevokesOthers: + def _sso(self, googleId, email): + sso = AsyncMock() + sso.__aenter__ = AsyncMock(return_value=sso) + sso.__aexit__ = AsyncMock(return_value=False) + info = MagicMock() + info.id = googleId + info.email = email + sso.verify_and_process = AsyncMock(return_value=info) + return sso + + def test_attacker_session_killed_new_survives(self, dbSession, authDbClient): + AuthenticationManager.createUserAccount( + dbSession, username="ssouser", email="ssouser@gmail.com", googleId="google-victim-1" + ) + user = AuthenticationManager.authenticateGoogleUser(dbSession, "google-victim-1") + attacker = SessionManager.createSession(dbSession, user["userId"], "attacker-agent") + + with patch( + "main.controller.authentication_controller.getGoogleSSO", + return_value=self._sso("google-victim-1", "ssouser@gmail.com"), + ): + resp = authDbClient.get("/auth/callback?state=not-a-url&code=c", follow_redirects=False) + + assert resp.status_code == 200 + dbSession.refresh(attacker) + assert attacker.isActive is False + from main.app.authentication.util import verifyAccessToken + + payload = verifyAccessToken(resp.json()["accessToken"]) + kept = SessionManager.getSessionById(dbSession, payload["sessionId"], user["userId"]) + assert kept is not None and kept.isActive is True + assert kept.sessionId != attacker.sessionId + + +class TestSecureFlagNotSpoofable: + def test_spoofed_forwarded_proto_http_keeps_secure(self, dbSession): + # https_only=True on SessionMiddleware + Secure auth cookies mean the + # http TestClient cannot round-trip Secure cookies, so assert on the + # Set-Cookie header instead. + app = FastAPI() + app.include_router(authRouter) + registerErrorHandlers(app) + app.dependency_overrides[getSession] = lambda: dbSession + makeAccount(dbSession, "secureguy", "secureguy@example.com") + with TestClient(app, base_url="https://testserver", raise_server_exceptions=False) as httpsClient: + resp = httpsClient.post( + "/auth/login", + json={"username": "secureguy", "password": "secret123"}, + headers={"X-Forwarded-Proto": "http"}, + ) + assert resp.status_code == 200 + assert "secure" in resp.headers.get("set-cookie", "").lower() + @staticmethod def appLogs(caplog): # App must not log PII itself; httpx client-side request lines (test-only From 94f809a2c035ca7ee101119f3b8e076de4ead42e Mon Sep 17 00:00:00 2001 From: heitorrosa <76885858+heitorrosa@users.noreply.github.com> Date: Tue, 29 Sep 2026 17:01:20 -0300 Subject: [PATCH 08/20] https --- graphify-out/GRAPH_REPORT.md | 16 +-- graphify-out/graph.json | 170 ++++++++++++------------- graphify-out/manifest.json | 12 +- main/service/authentication_service.py | 4 +- 4 files changed, 102 insertions(+), 100 deletions(-) diff --git a/graphify-out/GRAPH_REPORT.md b/graphify-out/GRAPH_REPORT.md index 276c485b..4c481c3a 100644 --- a/graphify-out/GRAPH_REPORT.md +++ b/graphify-out/GRAPH_REPORT.md @@ -1,7 +1,7 @@ # Graph Report - server (2026-09-29) ## Corpus Check -- 127 files · ~77,708 words +- 127 files · ~77,655 words - Verdict: corpus is large enough that graph structure adds value. ## Summary @@ -10,7 +10,7 @@ - Token cost: 0 input · 0 output ## Graph Freshness -- Built from commit: `1c953f10` +- Built from commit: `09a23108` - Run `git rev-parse HEAD` and compare to check if the graph is stale. - Run `graphify update .` after code changes (no API cost). @@ -690,8 +690,8 @@ 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 17 - "Community 17" -Cohesion: 0.07 -Nodes (26): Two dates in the range, both valid., 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. (+18 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 18 - "Community 18" Cohesion: 0.07 @@ -778,8 +778,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.06 -Nodes (31): 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. (+23 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 40 - "Community 40" Cohesion: 0.12 @@ -1931,7 +1931,7 @@ Nodes (5): Covers lines 42-44: session validation fails., Covers lines 42-44: se ### 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., Low score but accessed recently → not archived., Low score but accessed recently → not archived., _create(), After 10 cycles, preference (0.99^10) > context (0.90^10)., TestTypeAwareDecay +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 ### Community 571 - "Community 571" Cohesion: 0.4 @@ -1941,7 +1941,7 @@ Nodes (5): Tests covering key.py lines 15-40. Uses asyncio.run() since pytes 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 573 - "Community 573" +### Community 574 - "Community 574" Cohesion: 0.33 Nodes (10): compactCotations(), compactRow(), compactValue(), compressResponse(), fixHeaders(), getAbbr(), getNest(), rebuildAbbrevs() (+2 more) diff --git a/graphify-out/graph.json b/graphify-out/graph.json index ec799636..3d3333dc 100644 --- a/graphify-out/graph.json +++ b/graphify-out/graph.json @@ -3682,7 +3682,7 @@ "label": "historicalDividendYields()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L175", + "source_location": "L168", "id": "scraper_b3_scraper_historicaldividendyields", "community": 21, "norm_label": "historicaldividendyields()" @@ -3691,7 +3691,7 @@ "label": "historicalRevenue()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L203", + "source_location": "L196", "id": "scraper_b3_scraper_historicalrevenue", "community": 21, "norm_label": "historicalrevenue()" @@ -3700,7 +3700,7 @@ "label": "historicalCotationProfits()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L224", + "source_location": "L217", "id": "scraper_b3_scraper_historicalcotationprofits", "community": 21, "norm_label": "historicalcotationprofits()" @@ -3709,7 +3709,7 @@ "label": ".historicalCotationProfits_Oceans14()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L237", + "source_location": "L230", "id": "scraper_b3_scraper_b3scraper_historicalcotationprofits_oceans14", "community": 21, "norm_label": ".historicalcotationprofits_oceans14()" @@ -3718,7 +3718,7 @@ "label": "historicalCotations()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L250", + "source_location": "L243", "id": "scraper_b3_scraper_historicalcotations", "community": 21, "norm_label": "historicalcotations()" @@ -3727,7 +3727,7 @@ "label": "tagAlong()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L267", + "source_location": "L260", "id": "scraper_b3_scraper_tagalong", "community": 21, "norm_label": "tagalong()" @@ -3736,7 +3736,7 @@ "label": "stockNews()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L292", + "source_location": "L285", "id": "scraper_b3_scraper_stocknews", "community": 21, "norm_label": "stocknews()" @@ -3745,7 +3745,7 @@ "label": ".fundamentalIndicators()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L305", + "source_location": "L298", "id": "scraper_b3_scraper_b3scraper_fundamentalindicators", "community": 21, "norm_label": ".fundamentalindicators()" @@ -3754,7 +3754,7 @@ "label": ".processTicker()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L428", + "source_location": "L421", "id": "scraper_b3_scraper_b3scraper_processticker", "community": 21, "norm_label": ".processticker()" @@ -3763,7 +3763,7 @@ "label": ".scrapeStocks()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L459", + "source_location": "L452", "id": "scraper_b3_scraper_b3scraper_scrapestocks", "community": 21, "norm_label": ".scrapestocks()" @@ -3772,7 +3772,7 @@ "label": ".reorderColumns()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L506", + "source_location": "L499", "id": "scraper_b3_scraper_b3scraper_reordercolumns", "community": 21, "norm_label": ".reordercolumns()" @@ -3781,7 +3781,7 @@ "label": ".serializeComplexTypes()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L515", + "source_location": "L508", "id": "scraper_b3_scraper_b3scraper_serializecomplextypes", "community": 21, "norm_label": ".serializecomplextypes()" @@ -3790,7 +3790,7 @@ "label": ".exportJson()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L534", + "source_location": "L527", "id": "scraper_b3_scraper_b3scraper_exportjson", "community": 21, "norm_label": ".exportjson()" @@ -3799,7 +3799,7 @@ "label": ".exportMysql()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L542", + "source_location": "L535", "id": "scraper_b3_scraper_b3scraper_exportmysql", "community": 21, "norm_label": ".exportmysql()" @@ -4339,7 +4339,7 @@ "label": "resolveCookieDomain()", "file_type": "code", "source_file": "main/controller/authentication_controller.py", - "source_location": "L47", + "source_location": "L39", "id": "controller_authentication_controller_resolvecookiedomain", "community": 58, "norm_label": "resolvecookiedomain()" @@ -4348,7 +4348,7 @@ "label": "issueSessionCookie()", "file_type": "code", "source_file": "main/controller/authentication_controller.py", - "source_location": "L52", + "source_location": "L44", "id": "controller_authentication_controller_issuesessioncookie", "community": 58, "norm_label": "issuesessioncookie()" @@ -4357,7 +4357,7 @@ "label": "health()", "file_type": "code", "source_file": "main/controller/authentication_controller.py", - "source_location": "L73", + "source_location": "L65", "id": "controller_authentication_controller_health", "community": 58, "norm_label": "health()" @@ -4366,7 +4366,7 @@ "label": "register()", "file_type": "code", "source_file": "main/controller/authentication_controller.py", - "source_location": "L79", + "source_location": "L71", "id": "controller_authentication_controller_register", "community": 58, "norm_label": "register()" @@ -4375,7 +4375,7 @@ "label": "login()", "file_type": "code", "source_file": "main/controller/authentication_controller.py", - "source_location": "L111", + "source_location": "L103", "id": "controller_authentication_controller_login", "community": 58, "norm_label": "login()" @@ -4384,7 +4384,7 @@ "label": "logout()", "file_type": "code", "source_file": "main/controller/authentication_controller.py", - "source_location": "L129", + "source_location": "L121", "id": "controller_authentication_controller_logout", "community": 58, "norm_label": "logout()" @@ -4393,7 +4393,7 @@ "label": "introspect()", "file_type": "code", "source_file": "main/controller/authentication_controller.py", - "source_location": "L165", + "source_location": "L157", "id": "controller_authentication_controller_introspect", "community": 524, "norm_label": "introspect()" @@ -4402,7 +4402,7 @@ "label": "googleLogin()", "file_type": "code", "source_file": "main/controller/authentication_controller.py", - "source_location": "L190", + "source_location": "L182", "id": "controller_authentication_controller_googlelogin", "community": 58, "norm_label": "googlelogin()" @@ -4411,7 +4411,7 @@ "label": "googleCallback()", "file_type": "code", "source_file": "main/controller/authentication_controller.py", - "source_location": "L206", + "source_location": "L198", "id": "controller_authentication_controller_googlecallback", "community": 58, "norm_label": "googlecallback()" @@ -16076,7 +16076,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/compressor.py", "source_location": "L1", - "community": 573, + "community": 574, "norm_label": "compressor.py", "id": "main_app_stocks_api_compressor_py" }, @@ -16085,7 +16085,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/compressor.py", "source_location": "L25", - "community": 573, + "community": 574, "norm_label": "getabbr()", "id": "stocks_api_compressor_getabbr" }, @@ -16094,7 +16094,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/compressor.py", "source_location": "L36", - "community": 573, + "community": 574, "norm_label": "getnest()", "id": "stocks_api_compressor_getnest" }, @@ -16103,7 +16103,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/compressor.py", "source_location": "L46", - "community": 573, + "community": 574, "norm_label": "rebuildabbrevs()", "id": "stocks_api_compressor_rebuildabbrevs" }, @@ -16112,7 +16112,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/compressor.py", "source_location": "L51", - "community": 573, + "community": 574, "norm_label": "walk()", "id": "stocks_api_compressor_walk" }, @@ -16121,7 +16121,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/compressor.py", "source_location": "L59", - "community": 573, + "community": 574, "norm_label": "compactvalue()", "id": "stocks_api_compressor_compactvalue" }, @@ -16130,7 +16130,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/compressor.py", "source_location": "L80", - "community": 573, + "community": 574, "norm_label": "tocolumnar()", "id": "stocks_api_compressor_tocolumnar" }, @@ -16139,7 +16139,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/compressor.py", "source_location": "L89", - "community": 573, + "community": 574, "norm_label": "fixheaders()", "id": "stocks_api_compressor_fixheaders" }, @@ -16148,7 +16148,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/compressor.py", "source_location": "L98", - "community": 573, + "community": 574, "norm_label": "compactrow()", "id": "stocks_api_compressor_compactrow" }, @@ -16157,7 +16157,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/compressor.py", "source_location": "L126", - "community": 573, + "community": 574, "norm_label": "compactcotations()", "id": "stocks_api_compressor_compactcotations" }, @@ -16166,7 +16166,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/compressor.py", "source_location": "L160", - "community": 573, + "community": 574, "norm_label": "compressresponse()", "id": "stocks_api_compressor_compressresponse" }, @@ -29387,7 +29387,7 @@ "file_type": "code", "source_file": "tests/test_memory_maintenance.py", "source_location": "L92", - "community": 570, + "community": 573, "norm_label": ".test_low_score_but_recent_not_archived()", "id": "tests_test_memory_maintenance_testarchive_test_low_score_but_recent_not_archived" }, @@ -29414,7 +29414,7 @@ "file_type": "code", "source_file": "tests/test_memory_maintenance.py", "source_location": "L113", - "community": 574, + "community": 570, "norm_label": ".test_already_archived_not_double_archived()", "id": "tests_test_memory_maintenance_testarchive_test_already_archived_not_double_archived" }, @@ -29540,7 +29540,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_maintenance.py", "source_location": "L93", - "community": 570, + "community": 573, "norm_label": "low score but accessed recently \u2192 not archived.", "id": "tests_test_memory_maintenance_rationale_93" }, @@ -29567,7 +29567,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_maintenance.py", "source_location": "L114", - "community": 574, + "community": 570, "norm_label": "already archived memories are skipped.", "id": "tests_test_memory_maintenance_rationale_114" }, @@ -34463,7 +34463,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L841", - "community": 17, + "community": 39, "norm_label": ".test_fundamental_date_range_two_dates()", "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_date_range_two_dates" }, @@ -34490,7 +34490,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L882", - "community": 39, + "community": 17, "norm_label": ".test_fundamental_search_multiple_terms()", "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_search_multiple_terms" }, @@ -34508,7 +34508,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L898", - "community": 17, + "community": 39, "norm_label": ".test_fundamental_dates_one_date()", "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_dates_one_date" }, @@ -35156,7 +35156,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L842", - "community": 17, + "community": 39, "norm_label": "two dates in the range, both valid.", "id": "tests_test_stocks_api_coverage_rationale_842" }, @@ -35183,7 +35183,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L883", - "community": 39, + "community": 17, "norm_label": "multiple search terms with tickerindex.", "id": "tests_test_stocks_api_coverage_rationale_883" }, @@ -35201,7 +35201,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L899", - "community": 17, + "community": 39, "norm_label": "len(daterange) == 1 -> per-ticker closest snapshot.", "id": "tests_test_stocks_api_coverage_rationale_899" }, @@ -43373,7 +43373,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_maintenance.py", "source_location": "L92", - "community": 570, + "community": 573, "norm_label": "low score but accessed recently \u2192 not archived.", "id": "tests_test_memory_maintenance_rationale_92" }, @@ -43400,7 +43400,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_maintenance.py", "source_location": "L113", - "community": 574, + "community": 570, "norm_label": "already archived memories are skipped.", "id": "tests_test_memory_maintenance_rationale_113" }, @@ -48629,7 +48629,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L896", - "community": 17, + "community": 39, "norm_label": "search.strip() == '' should still dedup (line 181).", "id": "tests_test_stocks_api_coverage_rationale_896" }, @@ -48638,7 +48638,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L905", - "community": 17, + "community": 39, "norm_label": "dataframe without time column.", "id": "tests_test_stocks_api_coverage_rationale_905" }, @@ -48647,7 +48647,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L918", - "community": 17, + "community": 39, "norm_label": "two dates in the range, both valid.", "id": "tests_test_stocks_api_coverage_rationale_918" }, @@ -48674,7 +48674,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L959", - "community": 39, + "community": 17, "norm_label": "multiple search terms with tickerindex.", "id": "tests_test_stocks_api_coverage_rationale_959" }, @@ -48692,7 +48692,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L975", - "community": 17, + "community": 39, "norm_label": "len(daterange) == 1 -> per-ticker closest snapshot.", "id": "tests_test_stocks_api_coverage_rationale_975" }, @@ -49412,7 +49412,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L917", - "community": 17, + "community": 39, "norm_label": "two dates in the range, both valid.", "id": "tests_test_stocks_api_coverage_rationale_917" }, @@ -49430,7 +49430,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L956", - "community": 39, + "community": 17, "norm_label": "multiple search terms with tickerindex.", "id": "tests_test_stocks_api_coverage_rationale_956" }, @@ -49448,7 +49448,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L972", - "community": 17, + "community": 39, "norm_label": "len(daterange) == 1 -> single date filter.", "id": "tests_test_stocks_api_coverage_rationale_972" }, @@ -49700,7 +49700,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L907", - "community": 17, + "community": 39, "norm_label": "two dates in the range, both valid.", "id": "tests_test_stocks_api_coverage_rationale_907" }, @@ -49718,7 +49718,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L946", - "community": 39, + "community": 17, "norm_label": "multiple search terms with tickerindex.", "id": "tests_test_stocks_api_coverage_rationale_946" }, @@ -49736,7 +49736,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L962", - "community": 17, + "community": 39, "norm_label": "len(daterange) == 1 -> single date filter.", "id": "tests_test_stocks_api_coverage_rationale_962" }, @@ -52220,7 +52220,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L906", - "community": 17, + "community": 39, "norm_label": "two dates in the range, both valid.", "id": "tests_test_stocks_api_coverage_rationale_906" }, @@ -52247,7 +52247,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L945", - "community": 39, + "community": 17, "norm_label": "multiple search terms with tickerindex.", "id": "tests_test_stocks_api_coverage_rationale_945" }, @@ -52265,7 +52265,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L961", - "community": 17, + "community": 39, "norm_label": "len(daterange) == 1 -> single date filter.", "id": "tests_test_stocks_api_coverage_rationale_961" }, @@ -52481,7 +52481,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L898", - "community": 17, + "community": 39, "norm_label": "two dates in the range, both valid.", "id": "tests_test_stocks_api_coverage_rationale_898" }, @@ -52508,7 +52508,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L937", - "community": 39, + "community": 17, "norm_label": "multiple search terms with tickerindex.", "id": "tests_test_stocks_api_coverage_rationale_937" }, @@ -52580,7 +52580,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L935", - "community": 39, + "community": 17, "norm_label": "multiple search terms with tickerindex.", "id": "tests_test_stocks_api_coverage_rationale_935" }, @@ -52598,7 +52598,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L951", - "community": 17, + "community": 39, "norm_label": "len(daterange) == 1 -> single date filter.", "id": "tests_test_stocks_api_coverage_rationale_951" }, @@ -52715,7 +52715,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L850", - "community": 17, + "community": 39, "norm_label": "two dates in the range, both valid.", "id": "tests_test_stocks_api_coverage_rationale_850" }, @@ -52733,7 +52733,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L889", - "community": 39, + "community": 17, "norm_label": "multiple search terms with tickerindex.", "id": "tests_test_stocks_api_coverage_rationale_889" }, @@ -52877,7 +52877,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L851", - "community": 17, + "community": 39, "norm_label": "two dates in the range, both valid.", "id": "tests_test_stocks_api_coverage_rationale_851" }, @@ -52904,7 +52904,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L890", - "community": 39, + "community": 17, "norm_label": "multiple search terms with tickerindex.", "id": "tests_test_stocks_api_coverage_rationale_890" }, @@ -53993,7 +53993,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L845", - "community": 17, + "community": 39, "norm_label": "two dates in the range, both valid.", "id": "tests_test_stocks_api_coverage_rationale_845" }, @@ -54029,7 +54029,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L900", - "community": 17, + "community": 39, "norm_label": "len(daterange) == 1 -> single date filter.", "id": "tests_test_stocks_api_coverage_rationale_900" }, @@ -61343,9 +61343,9 @@ "source_file": "main/app/authentication/authentication.py", "source_location": "L79", "weight": 1.0, + "confidence_score": 1.0, "source": "main_app_authentication_authentication_py", - "target": "authentication_authentication_resolveuniqueusername", - "confidence_score": 1.0 + "target": "authentication_authentication_resolveuniqueusername" }, { "relation": "uses", @@ -61619,9 +61619,9 @@ "source_file": "main/app/authentication/session.py", "source_location": "L122", "weight": 1.0, + "confidence_score": 1.0, "source": "main_app_authentication_session_py", - "target": "authentication_session_revokeallexcept", - "confidence_score": 1.0 + "target": "authentication_session_revokeallexcept" }, { "relation": "contains", @@ -66708,9 +66708,9 @@ "source_file": "main/app/stocks_api/key.py", "source_location": "L25", "weight": 1.0, + "confidence_score": 1.0, "source": "main_app_stocks_api_key_py", - "target": "stocks_api_key_hashapikey", - "confidence_score": 1.0 + "target": "stocks_api_key_hashapikey" }, { "relation": "contains", @@ -66718,9 +66718,9 @@ "source_file": "main/app/stocks_api/key.py", "source_location": "L29", "weight": 1.0, + "confidence_score": 1.0, "source": "main_app_stocks_api_key_py", - "target": "stocks_api_key_createstoredapikey", - "confidence_score": 1.0 + "target": "stocks_api_key_createstoredapikey" }, { "relation": "contains", @@ -66728,9 +66728,9 @@ "source_file": "main/app/stocks_api/key.py", "source_location": "L35", "weight": 1.0, + "confidence_score": 1.0, "source": "main_app_stocks_api_key_py", - "target": "stocks_api_key_isvalidstoredkey", - "confidence_score": 1.0 + "target": "stocks_api_key_isvalidstoredkey" }, { "relation": "contains", @@ -66889,9 +66889,9 @@ "source_file": "main/app/stocks_api/key.py", "source_location": "L32", "weight": 1.0, + "confidence_score": 1.0, "source": "stocks_api_key_createstoredapikey", - "target": "stocks_api_key_hashapikey", - "confidence_score": 1.0 + "target": "stocks_api_key_hashapikey" }, { "relation": "calls", @@ -66900,9 +66900,9 @@ "source_file": "main/app/stocks_api/key.py", "source_location": "L61", "weight": 1.0, + "confidence_score": 1.0, "source": "stocks_api_key_verifyapikey", - "target": "stocks_api_key_isvalidstoredkey", - "confidence_score": 1.0 + "target": "stocks_api_key_isvalidstoredkey" }, { "relation": "calls", @@ -143721,5 +143721,5 @@ "label": "User Authentication & Authorization" } ], - "built_at_commit": "1c953f106bc1d5202c7143bbf98d7eb1b4cdb632" + "built_at_commit": "09a2310802f2d3b4d7f5f50af8e789acdcd23abf" } \ No newline at end of file diff --git a/graphify-out/manifest.json b/graphify-out/manifest.json index edf95c4b..0577ecd2 100644 --- a/graphify-out/manifest.json +++ b/graphify-out/manifest.json @@ -280,8 +280,8 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\main\\app\\scraper_b3\\scraper.py": { - "mtime": 1790710652.4290361, - "ast_hash": "f4a9207aa31488a10c3aad66b39c8d09", + "mtime": 1790711328.3358188, + "ast_hash": "59c7a34a305a6e90f5e7b4daa8e295eb", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\app\\scraper_b3\\xango.py": { @@ -325,8 +325,8 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\main\\controller\\authentication_controller.py": { - "mtime": 1790709838.353358, - "ast_hash": "0255e0e02565b0de1b09c1e9ad8cacba", + "mtime": 1790712038.5117102, + "ast_hash": "b2b09061a10fe244011b26ecd589f50e", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\controller\\orunmila_controller.py": { @@ -385,8 +385,8 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\main\\service\\authentication_service.py": { - "mtime": 1789439255.3787396, - "ast_hash": "68127fe1d44a44242ce3a5ed2bf4d464", + "mtime": 1790712058.246052, + "ast_hash": "02730074c8c2b0e872b76bfd628dfeed", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\service\\orunmila_service.py": { diff --git a/main/service/authentication_service.py b/main/service/authentication_service.py index ed7048b5..9b9de8c2 100644 --- a/main/service/authentication_service.py +++ b/main/service/authentication_service.py @@ -13,6 +13,8 @@ def initialize(port: int): service.add_middleware( SessionMiddleware, - secret_key=Config.USER.SESSION_SECRET_KEY, same_site="lax", https_only=True + secret_key=Config.USER.SESSION_SECRET_KEY, + same_site="lax", + https_only=False # dev ) service.include_router(authenticationRouter) From 99a90d7eef7d469930622c667c0988607d139634 Mon Sep 17 00:00:00 2001 From: heitorrosa <76885858+heitorrosa@users.noreply.github.com> Date: Tue, 29 Sep 2026 17:36:03 -0300 Subject: [PATCH 09/20] fix stocknews toDict typo --- main/app/scraper_b3/scraper.py | 10 +++----- tests/test_scraper_news.py | 47 ++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 7 deletions(-) create mode 100644 tests/test_scraper_news.py diff --git a/main/app/scraper_b3/scraper.py b/main/app/scraper_b3/scraper.py index b5d30772..b5d4d2ab 100644 --- a/main/app/scraper_b3/scraper.py +++ b/main/app/scraper_b3/scraper.py @@ -12,7 +12,7 @@ import numpy as np import cloudscraper import requests -from tenacity import retry, stop_after_attempt, wait_exponential, retry_if_not_exception_type +from tenacity import retry, stop_after_attempt, wait_exponential from concurrent.futures import ThreadPoolExecutor, as_completed from sqlalchemy import text @@ -277,11 +277,7 @@ def tagAlong(self, TICKER): return pd.DataFrame([{"TICKER": TICKER, "TAG ALONG": tagAlong}]).set_index("TICKER") - @retry( - stop=stop_after_attempt(3), - wait=wait_exponential(multiplier=1, min=1, max=3), - retry=retry_if_not_exception_type(ImportError), - ) + @retry(stop=stop_after_attempt(3), wait=wait_exponential(multiplier=1, min=1, max=3)) def stockNews(self, TICKER): df = pd.read_xml( StringIO(self.requests.get(f"https://news.google.com/rss/search?q={TICKER}&hl=pt-BR").text), xpath=".//item" @@ -291,7 +287,7 @@ def stockNews(self, TICKER): df = df.rename(columns={"title": "TITULO", "link": "LINK", "pubDate": "DATE", "source": "SOURCE"}) - newDF = {"TICKER": TICKER, "NOTICIAS": df.toDict(orient="records")} + newDF = {"TICKER": TICKER, "NOTICIAS": df.to_dict(orient="records")} return pd.DataFrame([newDF]).set_index("TICKER") diff --git a/tests/test_scraper_news.py b/tests/test_scraper_news.py new file mode 100644 index 00000000..39d0944b --- /dev/null +++ b/tests/test_scraper_news.py @@ -0,0 +1,47 @@ +"""Regression: stockNews() parses Google News RSS into NOTICIAS records.""" + +import sys +from unittest.mock import MagicMock + +# Stub research-repo `xango` module (main/app/scraper_b3/scraper.py:20 +# `from xango import calculateInvestingScore` — absent here). +if "xango" not in sys.modules: + _xango_stub = MagicMock() + _xango_stub.calculateInvestingScore = MagicMock(return_value={}) + sys.modules["xango"] = _xango_stub + +from main.app.scraper_b3.scraper import B3Scraper + +RSS = ( + '' + 'test - Google News' + "N1https://ax1" + "Tue, 29 Sep 2026 12:00:00 GMTd1" + 'suno.com.br' + "N2https://bx2" + "Wed, 30 Sep 2026 13:00:00 GMTd2" + 'info.com' + "" +) + + +class _FakeResp: + def __init__(self, text): + self.text = text + + +def _scraper(text): + # Bypass __init__ (hits network: cloudscraper + SELIC fetch). + s = B3Scraper.__new__(B3Scraper) + s.requests = MagicMock() + s.requests.get.return_value = _FakeResp(text) + return s + + +class TestStockNews: + def test_parses_news_records(self): + df = _scraper(RSS).stockNews("PETR4") + recs = df["NOTICIAS"].iloc[0] + assert [r["TITULO"] for r in recs] == ["N1", "N2"] + assert recs[0]["SOURCE"] == "suno.com.br" + assert "guid" not in recs[0] and "description" not in recs[0] From 47d20c56c4730e8058549e17ee0825748b8141bc Mon Sep 17 00:00:00 2001 From: heitorrosa <76885858+heitorrosa@users.noreply.github.com> Date: Tue, 29 Sep 2026 17:36:06 -0300 Subject: [PATCH 10/20] align dividends tests with nan backfill --- tests/test_scraper_dividends.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/tests/test_scraper_dividends.py b/tests/test_scraper_dividends.py index 24c8c89a..dd481731 100644 --- a/tests/test_scraper_dividends.py +++ b/tests/test_scraper_dividends.py @@ -1,12 +1,14 @@ """Regression: historicalDividends() backfills VALOR ORIGINAL when "ov" is absent. -SI ships "ov" whenever a factor exists (adj=True rows), so the backfill is a -straight copy of VALOR AJUSTADO — factor math was deliberately dropped. +SI ships "ov" whenever a factor exists (adj=True rows); when absent, a NaN +placeholder keeps the column present (downstream tolerates NaN). """ import sys from unittest.mock import MagicMock +import pandas as pd + # Stub research-repo `xango` module (main/app/scraper_b3/scraper.py:20 # `from xango import calculateInvestingScore` — absent here). if "xango" not in sys.modules: @@ -57,13 +59,13 @@ def _rec(ed="21/08/2026", pd="21/12/2026", v=1.0, adj=0.5): class TestHistoricalDividendsOvDrift: - def test_numeric_factor_uses_adjusted(self): - # Even a numeric factor is copied as-is: no division. - df = _scraper(_payload([_rec(v=1.0, adj=0.5)])).historicalDividends("PETR4") + def test_missing_ov_yields_nan(self): + df = _scraper(_payload([_rec(v=0.20250435, adj=False)])).historicalDividends("PETR4") recs = df["HISTORICO DIVIDENDOS"].iloc[0] - assert recs[0]["VALOR ORIGINAL"] == recs[0]["VALOR AJUSTADO"] == 1.0 + assert pd.isna(recs[0]["VALOR ORIGINAL"]) - def test_non_numeric_factor_falls_back_to_adjusted(self): - df = _scraper(_payload([_rec(v=0.20250435, adj=False)])).historicalDividends("PETR4") + def test_ov_present_is_kept(self): + rec = {**_rec(v=0.01765, adj=True), "ov": 0.015} + df = _scraper(_payload([rec])).historicalDividends("PETR4") recs = df["HISTORICO DIVIDENDOS"].iloc[0] - assert recs[0]["VALOR ORIGINAL"] == recs[0]["VALOR AJUSTADO"] == 0.20250435 + assert recs[0]["VALOR ORIGINAL"] == 0.015 From e781165fa9334ebe651b9532eefa1c53758175e4 Mon Sep 17 00:00:00 2001 From: heitorrosa <76885858+heitorrosa@users.noreply.github.com> Date: Tue, 29 Sep 2026 17:36:09 -0300 Subject: [PATCH 11/20] format code with ruff --- graphify-out/manifest.json | 4 ++-- main/service/authentication_service.py | 2 +- tests/test_api_key_quota_atomic.py | 5 +++++ tests/test_auth_introspect.py | 5 ++++- tests/test_stocks_api_coverage.py | 9 +++++++++ 5 files changed, 21 insertions(+), 4 deletions(-) diff --git a/graphify-out/manifest.json b/graphify-out/manifest.json index 0577ecd2..be162447 100644 --- a/graphify-out/manifest.json +++ b/graphify-out/manifest.json @@ -385,8 +385,8 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\main\\service\\authentication_service.py": { - "mtime": 1790712058.246052, - "ast_hash": "02730074c8c2b0e872b76bfd628dfeed", + "mtime": 1790712063.0129516, + "ast_hash": "2075ec61d0ef5be9a76db801df245f84", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\service\\orunmila_service.py": { diff --git a/main/service/authentication_service.py b/main/service/authentication_service.py index 9b9de8c2..e407c239 100644 --- a/main/service/authentication_service.py +++ b/main/service/authentication_service.py @@ -15,6 +15,6 @@ def initialize(port: int): SessionMiddleware, secret_key=Config.USER.SESSION_SECRET_KEY, same_site="lax", - https_only=False # dev + https_only=False, # dev ) service.include_router(authenticationRouter) diff --git a/tests/test_api_key_quota_atomic.py b/tests/test_api_key_quota_atomic.py index 114b8c73..67b9d636 100644 --- a/tests/test_api_key_quota_atomic.py +++ b/tests/test_api_key_quota_atomic.py @@ -155,6 +155,7 @@ def test_increment_from_zero(self, dbSession, sampleKeyData): class TestSaltedKeyHash: def test_same_raw_produces_unique_stored_values(self): from main.app.stocks_api.key import createStoredApiKey, isValidStoredKey + _, stored1 = createStoredApiKey("same_raw") _, stored2 = createStoredApiKey("same_raw") assert stored1 != stored2 @@ -163,6 +164,7 @@ def test_same_raw_produces_unique_stored_values(self): def test_wrong_and_tampered_keys_rejected(self): from main.app.stocks_api.key import createStoredApiKey, isValidStoredKey + _, stored = createStoredApiKey("correct") assert not isValidStoredKey("wrong", stored) assert not isValidStoredKey("correct", stored[:-1] + ("0" if stored[-1] != "0" else "1")) @@ -172,6 +174,7 @@ def test_wrong_and_tampered_keys_rejected(self): def test_constant_time_compare_used(self): from unittest.mock import patch as mock_patch from main.app.stocks_api.key import createStoredApiKey, isValidStoredKey + raw, stored = createStoredApiKey("k") with mock_patch("main.app.stocks_api.key.hmac.compare_digest", return_value=False) as m: assert isValidStoredKey(raw, stored) is False @@ -181,6 +184,7 @@ def test_constant_time_compare_used(self): class TestVerifyAPIKeyIntegration: def makeStoredKey(self, dbSession, raw="test_key_12345", **overrides): from main.app.stocks_api.key import createStoredApiKey + _, stored = createStoredApiKey(raw) params = {"apiKey": stored, "userId": 1, "requestLimit": 100, "currentUsage": 0} params.update(overrides) @@ -249,4 +253,5 @@ def test_verify_uses_stocks_session(self): import inspect from config import getStocksSession from main.app.stocks_api.key import verifyAPIKey as v + assert inspect.signature(v).parameters["db"].default.dependency is getStocksSession diff --git a/tests/test_auth_introspect.py b/tests/test_auth_introspect.py index 53009215..2094d456 100644 --- a/tests/test_auth_introspect.py +++ b/tests/test_auth_introspect.py @@ -73,7 +73,10 @@ def test_expired_token_401(self, dbSession, authClient): assert authClient.post("/auth/introspect", json={"token": token}, headers=SERVICE_HEADERS).status_code == 401 def test_invalid_token_401(self, dbSession, authClient): - assert authClient.post("/auth/introspect", json={"token": "not.a.real.token"}, headers=SERVICE_HEADERS).status_code == 401 + assert ( + authClient.post("/auth/introspect", json={"token": "not.a.real.token"}, headers=SERVICE_HEADERS).status_code + == 401 + ) def test_revoked_session_401(self, dbSession, authClient): user, session, token = makeUserToken(dbSession) diff --git a/tests/test_stocks_api_coverage.py b/tests/test_stocks_api_coverage.py index 46ffcc0f..48aa476f 100644 --- a/tests/test_stocks_api_coverage.py +++ b/tests/test_stocks_api_coverage.py @@ -185,12 +185,14 @@ def makeDb(self, rows, rowcount=1, error=None): def makeRow(self, raw, usage=0, limit=100): from types import SimpleNamespace from main.app.stocks_api.key import createStoredApiKey + _, stored = createStoredApiKey(raw) return SimpleNamespace(apiKey=stored, currentUsage=usage, requestLimit=limit) @patch("main.app.stocks_api.key.Config") async def test_verify_api_key_disabled_returns_none(self, mock_config): from main.app.stocks_api.key import verifyAPIKey + mock_config.STOCKS_API = MagicMock(KEY_SYSTEM=False) assert await verifyAPIKey(apiKey=None, db=MagicMock()) is None @@ -198,6 +200,7 @@ async def test_verify_api_key_disabled_returns_none(self, mock_config): async def test_verify_api_key_missing_raises_401(self, mock_config): from main.app.stocks_api.key import verifyAPIKey from fastapi import HTTPException + mock_config.STOCKS_API = MagicMock(KEY_SYSTEM=True) mock_db = self.makeDb([]) with pytest.raises(HTTPException) as e: @@ -208,6 +211,7 @@ async def test_verify_api_key_missing_raises_401(self, mock_config): @patch("main.app.stocks_api.key.Config") async def test_verify_api_key_success(self, mock_config): from main.app.stocks_api.key import verifyAPIKey + mock_config.STOCKS_API = MagicMock(KEY_SYSTEM=True) mock_db = self.makeDb([self.makeRow("valid_key")]) assert await verifyAPIKey(apiKey="valid_key", db=mock_db) == "valid_key" @@ -217,6 +221,7 @@ async def test_verify_api_key_success(self, mock_config): async def test_verify_api_key_invalid_key_raises_401(self, mock_config): from main.app.stocks_api.key import verifyAPIKey from fastapi import HTTPException + mock_config.STOCKS_API = MagicMock(KEY_SYSTEM=True) mock_db = self.makeDb([self.makeRow("other_key")]) with pytest.raises(HTTPException) as e: @@ -227,6 +232,7 @@ async def test_verify_api_key_invalid_key_raises_401(self, mock_config): async def test_verify_api_key_quota_exceeded(self, mock_config): from main.app.stocks_api.key import verifyAPIKey from fastapi import HTTPException + mock_config.STOCKS_API = MagicMock(KEY_SYSTEM=True) mock_db = self.makeDb([self.makeRow("valid_key", usage=100, limit=100)]) with pytest.raises(HTTPException) as e: @@ -238,6 +244,7 @@ async def test_verify_api_key_quota_exceeded(self, mock_config): async def test_verify_api_key_lost_race_returns_429(self, mock_config): from main.app.stocks_api.key import verifyAPIKey from fastapi import HTTPException + mock_config.STOCKS_API = MagicMock(KEY_SYSTEM=True) mock_db = self.makeDb([self.makeRow("k")], rowcount=0) with pytest.raises(HTTPException) as e: @@ -249,6 +256,7 @@ async def test_verify_api_key_lost_race_returns_429(self, mock_config): async def test_verify_api_key_generic_exception_rollback(self, mock_config): from main.app.stocks_api.key import verifyAPIKey from fastapi import HTTPException + mock_config.STOCKS_API = MagicMock(KEY_SYSTEM=True) mock_db = self.makeDb([self.makeRow("k")], error=Exception("DB down")) with pytest.raises(HTTPException) as e: @@ -261,6 +269,7 @@ async def test_verify_api_key_legacy_row_rejected(self, mock_config): from types import SimpleNamespace from main.app.stocks_api.key import verifyAPIKey from fastapi import HTTPException + mock_config.STOCKS_API = MagicMock(KEY_SYSTEM=True) legacy = SimpleNamespace(apiKey="a" * 64, currentUsage=0, requestLimit=100) with pytest.raises(HTTPException) as e: From 271d47b8b86181445f8ed8e9bee2822114173d48 Mon Sep 17 00:00:00 2001 From: heitorrosa <76885858+heitorrosa@users.noreply.github.com> Date: Tue, 29 Sep 2026 17:36:33 -0300 Subject: [PATCH 12/20] presort stocks cache at build time --- main/app/stocks_api/cache.py | 5 +++-- tests/test_stocks_cache_zstd.py | 35 +++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/main/app/stocks_api/cache.py b/main/app/stocks_api/cache.py index f0e35989..adb738c5 100644 --- a/main/app/stocks_api/cache.py +++ b/main/app/stocks_api/cache.py @@ -35,6 +35,7 @@ CACHE_NESTED_PATH = Path("/app/cache/stocks_nested.feather") STALE_AFTER_SECONDS = 6 * 3600 CACHE_LOAD_LOCK = threading.Lock() +PRESORTED_FLAG_KEY = b"b3_presorted" def optimizeDtypes(df: pd.DataFrame) -> pd.DataFrame: @@ -96,7 +97,7 @@ def buildFeatherCache(engine: Engine | None = None): except Exception: colTypes = {} stream = conn.execution_options(stream_results=True) - result = stream.exec_driver_sql("SELECT * FROM b3_stocks") + result = stream.exec_driver_sql("SELECT * FROM b3_stocks ORDER BY TICKER ASC, TIME DESC") try: columns = list(result.keys()) while True: @@ -130,7 +131,7 @@ def buildFeatherCache(engine: Engine | None = None): fields.append(pa.field(n, arrowTypeFor(colTypes.get(n, "varchar")))) else: fields.append(pa.field(n, t)) - schema = pa.schema(fields) + schema = pa.schema(fields).with_metadata({PRESORTED_FLAG_KEY: b"1"}) sink = pa.OSFile(str(tmpMain), "wb") writer = pa.ipc.new_file(sink, schema) assert writer is not None diff --git a/tests/test_stocks_cache_zstd.py b/tests/test_stocks_cache_zstd.py index e02954c5..09348d11 100644 --- a/tests/test_stocks_cache_zstd.py +++ b/tests/test_stocks_cache_zstd.py @@ -3,6 +3,7 @@ import pytest import pandas as pd +from pyarrow import feather import main.app.stocks_api.cache as cache_mod from main.app.stocks_api.cache import StocksCacheManager @@ -304,3 +305,37 @@ def test_get_nest_keeps_compressed_column_subfields(monkeypatch, tmp_path): nest = getNest() assert "COTACAO 10Y PADRAO" in nest assert set(nest["COTACAO 10Y PADRAO"]["subfields"]) >= {"DATA", "PRECO"} + + +def test_build_requests_presorted_rows(monkeypatch, tmp_path): + seenSql = [] + + def connect(): + conn = FakeConn([makeDf()]) + realExec = conn.exec_driver_sql + + def exec_driver_sql(sql): + seenSql.append(sql) + return realExec(sql) + + monkeypatch.setattr(conn, "exec_driver_sql", exec_driver_sql) + return conn + + monkeypatch.setattr(cache_mod.stocksEngine, "connect", connect) + monkeypatch.setattr(cache_mod, "CACHE_FEATHER_PATH", tmp_path / "cache.feather") + monkeypatch.setattr(cache_mod, "CACHE_NESTED_PATH", tmp_path / "nested.feather") + + cache_mod.buildFeatherCache() + + assert any("ORDER BY TICKER ASC, TIME DESC" in sql for sql in seenSql) + + +def test_build_stamps_presorted_marker(monkeypatch, tmp_path): + monkeypatch.setattr(cache_mod.stocksEngine, "connect", lambda: FakeConn([makeDf()])) + monkeypatch.setattr(cache_mod, "CACHE_FEATHER_PATH", tmp_path / "cache.feather") + monkeypatch.setattr(cache_mod, "CACHE_NESTED_PATH", tmp_path / "nested.feather") + + cache_mod.buildFeatherCache() + + table = feather.read_table(cache_mod.CACHE_FEATHER_PATH) + assert (table.schema.metadata or {}).get(cache_mod.PRESORTED_FLAG_KEY) == b"1" From 6bdcd86c931530c6f5c8fefa7b4fda4e4bc0900c Mon Sep 17 00:00:00 2001 From: heitorrosa <76885858+heitorrosa@users.noreply.github.com> Date: Tue, 29 Sep 2026 17:47:17 -0300 Subject: [PATCH 13/20] load stocks cache with zero-copy memory mapping --- main/app/stocks_api/cache.py | 13 +++++++-- tests/test_stocks_api_coverage.py | 14 ++++----- tests/test_stocks_cache_feather.py | 41 ++++++++++++++++++++++++-- tests/test_stocks_cache_zstd.py | 46 +++++++++++++++++++++++++++++- 4 files changed, 101 insertions(+), 13 deletions(-) diff --git a/main/app/stocks_api/cache.py b/main/app/stocks_api/cache.py index adb738c5..4a2c0607 100644 --- a/main/app/stocks_api/cache.py +++ b/main/app/stocks_api/cache.py @@ -7,6 +7,7 @@ import pandas as pd import numpy as np import pyarrow as pa +import pyarrow.feather as feather from sqlalchemy.engine import Engine from sqlalchemy.exc import OperationalError @@ -202,6 +203,13 @@ def buildTickerIndex(df: pd.DataFrame) -> dict: return index +def readFeatherDataFrame(path: Path) -> tuple[pd.DataFrame, bool]: + table = feather.read_table(path, memory_map=True) + presorted = (table.schema.metadata or {}).get(PRESORTED_FLAG_KEY) == b"1" + df = table.to_pandas(split_blocks=True, types_mapper=pd.ArrowDtype) + return df, presorted + + class StocksCacheManager: def __init__(self, db: Engine, cacheLock: threading.Lock): self.db = db @@ -227,10 +235,11 @@ def cacheScheduler(self): ) def loadFromFeather(self): - df = pd.read_feather(CACHE_FEATHER_PATH) + df, presorted = readFeatherDataFrame(CACHE_FEATHER_PATH) nestedSample = pd.read_feather(CACHE_NESTED_PATH) if CACHE_NESTED_PATH.exists() else None - df = sortCacheFrame(df) + if not presorted: + df = sortCacheFrame(df) newTickerIndex = buildTickerIndex(df) with self.cacheLock: diff --git a/tests/test_stocks_api_coverage.py b/tests/test_stocks_api_coverage.py index 48aa476f..b915c7c8 100644 --- a/tests/test_stocks_api_coverage.py +++ b/tests/test_stocks_api_coverage.py @@ -91,7 +91,7 @@ def test_getCachedStocks_no_columns(self): mgr = self.make_manager() df = pd.DataFrame({"TICKER": ["A", "B"], "NOME": ["X", "Y"], "TIME": ["t1", "t2"]}) with ( - patch("main.app.stocks_api.cache.pd.read_feather", return_value=df), + patch("main.app.stocks_api.cache.readFeatherDataFrame", return_value=(df, False)), patch("main.app.stocks_api.cache.subprocess.run", return_value=None), ): mgr.getCachedStocks(force_refresh=True) @@ -105,7 +105,7 @@ def test_getCachedStocks_with_valid_columns(self): mgr = self.make_manager() df = pd.DataFrame({"TICKER": ["A"], "NOME": ["X"], "TIME": ["t1"], "PRECO": [10.0]}) with ( - patch("main.app.stocks_api.cache.pd.read_feather", return_value=df) as mock_read, + patch("main.app.stocks_api.cache.readFeatherDataFrame", return_value=(df, False)) as mock_read, patch("main.app.stocks_api.cache.subprocess.run", return_value=None), ): mgr.getCachedStocks(force_refresh=True) @@ -116,7 +116,7 @@ def test_getCachedStocks_replaces_nan_inf(self): mgr = self.make_manager() df = pd.DataFrame({"TICKER": ["A"], "VAL": [np.nan]}) with ( - patch("main.app.stocks_api.cache.pd.read_feather", return_value=df), + patch("main.app.stocks_api.cache.readFeatherDataFrame", return_value=(df, False)), patch("main.app.stocks_api.cache.subprocess.run", return_value=None), ): mgr.getCachedStocks(force_refresh=True) @@ -129,7 +129,7 @@ def test_getCachedStocks_builds_ticker_index(self): mgr = self.make_manager() df = pd.DataFrame({"TICKER": ["PETR4", "VALE3"], "NOME": ["Petrobras", "Vale"]}) with ( - patch("main.app.stocks_api.cache.pd.read_feather", return_value=df), + patch("main.app.stocks_api.cache.readFeatherDataFrame", return_value=(df, False)), patch("main.app.stocks_api.cache.subprocess.run", return_value=None), ): mgr.getCachedStocks(force_refresh=True) @@ -140,7 +140,7 @@ def test_getCachedStocks_exception_logged(self): mgr = self.make_manager() # Should not raise, just log with ( - patch("main.app.stocks_api.cache.pd.read_feather", side_effect=Exception("feather error")), + patch("main.app.stocks_api.cache.readFeatherDataFrame", side_effect=Exception("feather error")), patch("main.app.stocks_api.cache.subprocess.run", return_value=None), ): mgr.getCachedStocks(force_refresh=True) @@ -150,7 +150,7 @@ def test_getCachedStocks_replaces_inf(self): mgr = self.make_manager() df = pd.DataFrame({"TICKER": ["A"], "VAL": [np.inf]}) with ( - patch("main.app.stocks_api.cache.pd.read_feather", return_value=df), + patch("main.app.stocks_api.cache.readFeatherDataFrame", return_value=(df, False)), patch("main.app.stocks_api.cache.subprocess.run", return_value=None), ): mgr.getCachedStocks(force_refresh=True) @@ -161,7 +161,7 @@ def test_getCachedStocks_replaces_neg_inf(self): mgr = self.make_manager() df = pd.DataFrame({"TICKER": ["A"], "VAL": [-np.inf]}) with ( - patch("main.app.stocks_api.cache.pd.read_feather", return_value=df), + patch("main.app.stocks_api.cache.readFeatherDataFrame", return_value=(df, False)), patch("main.app.stocks_api.cache.subprocess.run", return_value=None), ): mgr.getCachedStocks(force_refresh=True) diff --git a/tests/test_stocks_cache_feather.py b/tests/test_stocks_cache_feather.py index 3cef32ca..74b4c537 100644 --- a/tests/test_stocks_cache_feather.py +++ b/tests/test_stocks_cache_feather.py @@ -3,6 +3,8 @@ from datetime import datetime, timedelta, timezone import pandas as pd +import pyarrow as pa +from pyarrow import feather from main.app.stocks_api.cache import StocksCacheManager, optimizeDtypes @@ -29,7 +31,7 @@ def test_missing_feather_runs_loader_then_swaps(monkeypatch, tmp_path): calls = [] monkeypatch.setattr(cache_mod.os.path, "exists", lambda p: False) monkeypatch.setattr(cache_mod.subprocess, "run", lambda *a, **k: calls.append("run") or None) - monkeypatch.setattr(cache_mod.pd, "read_feather", lambda p: fake_df) + monkeypatch.setattr(cache_mod, "readFeatherDataFrame", lambda p: (fake_df, False)) manager = cache_mod.StocksCacheManager(None, threading.Lock()) manager.STOCKS_CACHE = None manager.getCachedStocks() @@ -49,7 +51,7 @@ def test_stale_feather_serves_snapshot_and_spawns_refresh(monkeypatch, tmp_path) monkeypatch.setattr(cache_mod.subprocess, "run", lambda *a, **k: None) # never hit the real loader monkeypatch.setattr(cache_mod.os.path, "getmtime", lambda p: 0.0) # 1970 -> definitely stale monkeypatch.setattr(cache_mod.time, "time", lambda: 10.0 * 3600) # 10h later - monkeypatch.setattr(cache_mod.pd, "read_feather", lambda p: fake_df) + monkeypatch.setattr(cache_mod, "readFeatherDataFrame", lambda p: (fake_df, False)) spawned = [] monkeypatch.setattr( cache_mod.threading.Thread, @@ -73,7 +75,7 @@ def test_fresh_feather_serves_snapshot_without_refresh(monkeypatch, tmp_path): monkeypatch.setattr(cache_mod.subprocess, "run", lambda *a, **k: None) monkeypatch.setattr(cache_mod.os.path, "getmtime", lambda p: 10.0 * 3600 - 60) # fresh monkeypatch.setattr(cache_mod.time, "time", lambda: 10.0 * 3600) - monkeypatch.setattr(cache_mod.pd, "read_feather", lambda p: fake_df) + monkeypatch.setattr(cache_mod, "readFeatherDataFrame", lambda p: (fake_df, False)) spawned = [] monkeypatch.setattr( cache_mod.threading.Thread, @@ -84,3 +86,36 @@ def test_fresh_feather_serves_snapshot_without_refresh(monkeypatch, tmp_path): manager.getCachedStocks() assert manager.STOCKS_CACHE is fake_df assert spawned == [] + + +def test_read_feather_dataframe_uses_arrow_backed_columns(tmp_path): + import main.app.stocks_api.cache as cache_mod + + path = tmp_path / "cache.feather" + feather.write_feather( + pd.DataFrame({"TICKER": ["PETR4"], "NOME": ["PETROBRAS"], "PRECO": [1.5], "BLOB": [b"xy"]}), path + ) + + df, presorted = cache_mod.readFeatherDataFrame(path) + + assert presorted is False + assert str(df["TICKER"].dtype) == "string[pyarrow]" + assert str(df["BLOB"].dtype) == "binary[pyarrow]" + assert df["TICKER"].iloc[0] == "PETR4" + assert df["BLOB"].iloc[0] == b"xy" + + +def test_read_feather_dataframe_detects_presorted_marker(tmp_path): + import main.app.stocks_api.cache as cache_mod + + path = tmp_path / "cache.feather" + table = pa.Table.from_pandas( + pd.DataFrame({"TICKER": ["PETR4"], "TIME": [pd.Timestamp("2024-01-01")]}), preserve_index=False + ).replace_schema_metadata({cache_mod.PRESORTED_FLAG_KEY: b"1"}) + with pa.OSFile(str(path), "wb") as sink, pa.ipc.new_file(sink, table.schema) as writer: + writer.write_table(table) + + df, presorted = cache_mod.readFeatherDataFrame(path) + + assert presorted is True + assert df["TICKER"].iloc[0] == "PETR4" diff --git a/tests/test_stocks_cache_zstd.py b/tests/test_stocks_cache_zstd.py index 09348d11..aa213a80 100644 --- a/tests/test_stocks_cache_zstd.py +++ b/tests/test_stocks_cache_zstd.py @@ -1,8 +1,10 @@ import threading import zstandard as zstd +from unittest.mock import MagicMock import pytest import pandas as pd +import pyarrow as pa from pyarrow import feather import main.app.stocks_api.cache as cache_mod @@ -144,7 +146,7 @@ def test_get_cached_stocks_compresses_jsoncolumns(monkeypatch, tmp_path): assert isinstance(df["COTACAO 10Y PADRAO"].iloc[0], bytes) assert zstd.ZstdDecompressor().decompress(df["COTACAO 10Y PADRAO"].iloc[0]).decode("utf-8").startswith("[{") assert isinstance(df["NOTICIAS"].iloc[0], bytes) - assert df["NOTICIAS"].iloc[1] is None # NaN/None cells stay None + assert pd.isna(df["NOTICIAS"].iloc[1]) # ArrowDtype null cells are pd.NA def test_get_cached_stocks_keeps_raw_nested_sample(monkeypatch, tmp_path): @@ -339,3 +341,45 @@ def test_build_stamps_presorted_marker(monkeypatch, tmp_path): table = feather.read_table(cache_mod.CACHE_FEATHER_PATH) assert (table.schema.metadata or {}).get(cache_mod.PRESORTED_FLAG_KEY) == b"1" + + +def _writeFeather(rows, path): + feather.write_feather(pd.DataFrame(rows), path) + + +def _loadManager(path, monkeypatch, tmp_path): + manager = cache_mod.StocksCacheManager(MagicMock(), threading.Lock()) + monkeypatch.setattr(cache_mod, "CACHE_FEATHER_PATH", path) + monkeypatch.setattr(cache_mod, "CACHE_NESTED_PATH", tmp_path / "nested.feather") + return manager + + +def test_load_skips_sort_for_presorted_files(monkeypatch, tmp_path): + path = tmp_path / "cache.feather" + table = pa.Table.from_pandas( + pd.DataFrame({"TICKER": ["VALE3", "PETR4"], "TIME": [pd.Timestamp("2024-01-01")] * 2}), preserve_index=False + ).replace_schema_metadata({cache_mod.PRESORTED_FLAG_KEY: b"1"}) + with pa.OSFile(str(path), "wb") as sink, pa.ipc.new_file(sink, table.schema) as writer: + writer.write_table(table) + + def boom(df): + raise AssertionError("sort must not run for presorted files") + + monkeypatch.setattr(cache_mod, "sortCacheFrame", boom) + manager = _loadManager(path, monkeypatch, tmp_path) + + manager.loadFromFeather() + + assert list(manager.STOCKS_CACHE["TICKER"]) == ["VALE3", "PETR4"] + + +def test_load_sorts_legacy_files_without_marker(monkeypatch, tmp_path): + path = tmp_path / "cache.feather" + _writeFeather( + {"TICKER": ["VALE3", "PETR4"], "TIME": [pd.Timestamp("2024-01-01"), pd.Timestamp("2023-01-01")]}, path + ) + manager = _loadManager(path, monkeypatch, tmp_path) + + manager.loadFromFeather() + + assert list(manager.STOCKS_CACHE["TICKER"]) == ["PETR4", "VALE3"] From 26e9687cf7002284fa2d4c4c46f8caa0dc5d96ef Mon Sep 17 00:00:00 2001 From: heitorrosa <76885858+heitorrosa@users.noreply.github.com> Date: Tue, 29 Sep 2026 17:49:44 -0300 Subject: [PATCH 14/20] add nginx scaling implementation and benchmark plan --- docs/nginx-scaling-plan.md | 641 +++++++++++++++++++++++++++++++++++++ 1 file changed, 641 insertions(+) create mode 100644 docs/nginx-scaling-plan.md diff --git a/docs/nginx-scaling-plan.md b/docs/nginx-scaling-plan.md new file mode 100644 index 00000000..57d1bbd6 --- /dev/null +++ b/docs/nginx-scaling-plan.md @@ -0,0 +1,641 @@ +# nginx Scaling Plan — reverse proxy + response cache for `/stocks`, and the multi-server evolution + +**Status:** PLAN ONLY — nothing in this document is implemented. No application, compose, or nginx file was modified. +**Produced by:** swarm `swarm/nginx-scaling` (board root `ses_f178f53fdffeEz0Nswxk4ay80O`), 3 lanes merged by prime: +- L1 `calm-amber-tiger` (code-architect) — implementation plan +- L2 `keen-coral-badger` (general) — benchmark plan +- L3 `keen-coral-otter` (code-architect) — future scaling + risk register + +Lanes ran read-only (no write/board/skill tools in that lane toolset), so prime relayed their envelopes to the board and merged their full drafts here. Evidence was read directly from source by the lanes; prime's own earlier eval corroborates the TTL map. + +## 0. Purpose and constraints + +**Goal:** put nginx in front of `/stocks` as reverse proxy + response cache so a cache HIT never enters Python (no uvicorn routing, no `verifyAPIKey` DB scan+UPDATE, no pandas, no ORJSON serialization, no shared-GIL contention), while staying consistent with the planned multi-server future. + +**Constraint traceability (TODO.md → this document):** + +| TODO.md | Constraint | Covered in | +|---|---|---| +| line 11 | nginx scaling for autoscaling workers, tailored configs triggering only required services, remote VPS support | §1 P2/P3, §3.2, §3.3, §3.7 | +| line 12 | ForgeVM multi-host scaling, router in business code, hostId tracking, rclone for /workspace | §3.8 | +| line 13 | drop `{service}_HOST`/`{service}_PORT`, replace with nginx-managed services | §1 P4, §3.4 | +| line 14 | p99 latency + context switches monitored at `/status` | §2.5, §2.8 (feed), §3.10 step | +| line 15 | feather cache synced + Redis as flock replacement | §1 P4, §3.5a, §3.6 | +| lines 16–17 | anti-scraping (single-tab cookie session; random UUID routing) | §1 §9, §3.9 R4/R5 | +| lines 47–70 | rate limits 30 rpm (STARTUP) / 300 rpm (ENTERPRISE), 10k calls/month STARTUP | §1 §8, §3.5b, §3.9 R2/R8 | + +**Verified ground truth (source, this session):** see §3.0. Key items: all three services default `PORT=3200` (`config.py:41,53,62`), one process/one GIL (`service_manager.py:49-51`), endpoint cache is in-process cashews `mem://` (`stocksapi_controller.py:17`), feather rebuild every 12h with per-host `flock` (`cache.py:179,221-227`), `X-MCP` header mutates the body via `MCPDetectMiddleware` (`stocksapi_service.py:10-22`). + +--- + +# Part 1 — Implementation plan + +## 1.1 Architecture decision + +nginx 1.27-alpine as a first-class compose service, disk-backed `proxy_cache` keyed on `$http_x_api_key` + `$http_x_mcp` + `$request_uri`, one `upstream` per logical service, `proxy_cache_lock` + `background_update` so concurrent misses collapse to one origin call. Only GET `/stocks/*` is cached; `/stocks/health` and `/stocks/mcp` bypass. + +Why: removes the GIL/uvicorn/serialization/quota-DB cost for the dominant read workload with zero new application code (cache, keepalive, gzip, rate limiting all ship with nginx). The cache sits in front, so it is orthogonal to the worker-container split (P2) and remote VPS fan-out (P3) — the same `upstream` block just gains `server` lines. + +Accepted trade-offs: +- Quota counts misses only (hit-heavy clients under-count) — see §1.8; billing rule decision required. +- Per-key cache fragmentation: one entry per `(key, x-mcp, uri)`. +- OSS nginx has no active health checks → passive `max_fails`/`fail_timeout` only (§1.6). + +Rejected: app-level cache only (defeats the goal); Varnish (extra moving part for a feature nginx already has); CDN (not the self-hosted model; TODO-11 explicitly wants nginx). + +## 1.2 File layout + +**Create:** +``` +nginx/ + conf.d/ + 00-http-common.conf # http-context: proxy_cache_path, limit_req_zone, gzip, log_format + 10-upstreams.conf # upstream stocks_api (+ remote servers in P3) + 20-stocks-cache.conf # server :80 -> cache locations + snippets/ + stocks-proxy.conf # shared proxy_* directives for cached locations + stocks-bypass.conf # proxy without cache (health, mcp, everything else) +``` +**Modify:** `docker-compose.yml` (P0 add nginx service; P2 ports + worker profile), `config.py` (P2 distinct port defaults; P4 `ROUTING_MODE` design), `.env.example`/`README.md` (P2), `main/app/stocks_api/key.py` + `main/utils/logging_config.py` (P4 design only). + +Mounting `conf.d/` + `snippets/` keeps the stock `nginx.conf` (and its `include /etc/nginx/conf.d/*.conf` inside `http{}`) — no need to replace `nginx.conf`. + +## 1.3 Phase P0 — nginx service + config skeleton + +```yaml + nginx: + image: nginx:1.27-alpine + restart: always + ports: ["80:80"] + volumes: + - ./nginx/conf.d:/etc/nginx/conf.d:ro + - ./nginx/snippets:/etc/nginx/snippets:ro + - nginx-cache:/var/cache/nginx + depends_on: [api] + healthcheck: + test: ["CMD", "wget", "-qO-", "http://localhost/nginx-health"] + interval: 10s + timeout: 3s + retries: 3 +volumes: + nginx-cache: +``` + +`00-http-common.conf` (http context): +```nginx +proxy_cache_path /var/cache/nginx/stocks + levels=1:2 keys_zone=stocks_cache:64m + max_size=2g inactive=2h use_temp_path=off; + +limit_req_zone $http_x_api_key zone=stocks_key:10m rate=300r/m; +limit_req_status 429; + +log_format cache '$remote_addr "$request" $status $body_bytes_sent ' + 'cache=$upstream_cache_status key=${http_x_api_key:0:8} ' + 'rt=$request_time urt=$upstream_response_time'; +access_log /var/log/nginx/access.log cache; + +gzip on; gzip_comp_level 3; gzip_min_length 1024; +gzip_proxied any; gzip_vary on; gzip_types application/json; + +server { listen 80; location = /nginx-health { return 200 "ok\n"; } } +``` +Sizing: ~1 MB `keys_zone` per ~8k keys → 64 MB ≫ expected; `max_size 2g` bounds disk; `inactive 2h` > max TTL (1h). + +`10-upstreams.conf`: +```nginx +upstream stocks_api { + least_conn; + server api:3200 max_fails=3 fail_timeout=10s; + keepalive 32; # requires proxy_http_version 1.1 + Connection "" + keepalive_timeout 60s; + keepalive_requests 1000; +} +``` + +**Verify P0:** `docker compose config` parses; `curl -sI http://localhost/nginx-health` → 200; `curl -sD- -o/dev/null http://localhost/stocks/health -H "X-API-Key: $K"` reaches the app (200) with cache not yet asserted. +**Rollback:** bring compose up without `nginx`; nothing else changed. + +## 1.4 Phase P1 — cache locations, TTL table, directives + +`snippets/stocks-proxy.conf`: +```nginx +proxy_pass http://stocks_api; +proxy_http_version 1.1; +proxy_set_header Connection ""; +proxy_set_header Host $host; +proxy_set_header X-Real-IP $remote_addr; +proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; +proxy_set_header X-Forwarded-Proto $scheme; +proxy_set_header Accept-Encoding ""; # gzip at nginx only — no double compression + +proxy_cache stocks_cache; +proxy_cache_key "s:$http_x_api_key:$http_x_mcp:$request_uri"; +proxy_cache_lock on; +proxy_cache_lock_timeout 20s; +proxy_cache_background_update on; +proxy_cache_revalidate on; +proxy_cache_use_stale updating error timeout http_500 http_502 http_503 http_504; +proxy_ignore_headers Cache-Control Expires Set-Cookie; + +# cache only 2xx; 401/429/5xx pass through and are never stored +proxy_cache_valid 401 429 0s; +proxy_cache_valid any 0s; + +proxy_buffering on; +proxy_buffers 8 32k; +proxy_busy_buffers_size 64k; +proxy_max_temp_file_size 512m; +add_header X-Cache-Status $upstream_cache_status always; +``` + +`20-stocks-cache.conf` (exact `=` locations so `/cotations/live` cannot be captured by `/cotations`): +```nginx +server { + listen 80; + + location = /stocks/health { include snippets/stocks-bypass.conf; } + location /stocks/mcp { include snippets/stocks-bypass.conf; } + + location = /stocks/cotations/live { + limit_req zone=stocks_key burst=50 nodelay; + include snippets/stocks-proxy.conf; + proxy_cache_valid 200 15s; + } + location = /stocks/cotations { + limit_req zone=stocks_key burst=50 nodelay; + include snippets/stocks-proxy.conf; + proxy_cache_valid 200 5m; + } + location = /stocks/fundamental { + limit_req zone=stocks_key burst=50 nodelay; + include snippets/stocks-proxy.conf; + proxy_cache_valid 200 5m; + } + location = /stocks/historical { + limit_req zone=stocks_key burst=50 nodelay; + include snippets/stocks-proxy.conf; + proxy_cache_valid 200 1h; + } + location = /stocks/fields { + limit_req zone=stocks_key burst=50 nodelay; + include snippets/stocks-proxy.conf; + proxy_cache_valid 200 5m; + } + + location / { include snippets/stocks-bypass.conf; } # everything else: pass-through +} +``` + +`snippets/stocks-bypass.conf`: same proxy headers, `proxy_cache off;`. + +**TTL table (authoritative):** + +| Location | `proxy_cache_valid 200` | App TTL (`@endpointCache`) | `Cache-Control` sent | Notes | +|---|---|---|---|---| +| `/stocks/historical` | 1h | 1h (`stocksapi_controller.py:84`) | `max-age=300` (`:141`) → ignored | `proxy_ignore_headers` mandatory or nginx caps at 5m | +| `/stocks/fundamental` | 5m | 5m (`:149`) | `max-age=300` (`:211`) | aligned | +| `/stocks/cotations` | 5m | 5m (`:219`) | `max-age=300` (`:267`) | exact match avoids `/live` | +| `/stocks/cotations/live` | 15s | 15s (`:275`) | `max-age=15` (`:312`) | exact match wins | +| `/stocks/fields` | 5m | none | none | recomputed per origin request; 5m staleness accepted (drop to 60s if churn matters) | +| `/stocks/health` | bypass | none | none | liveness | +| `/stocks/mcp` | bypass | n/a | n/a | POST/JSON-RPC mount | + +**Why `proxy_ignore_headers Cache-Control` is mandatory:** the app sends `max-age=300` on `/stocks/historical` while its own TTL is 1h; without ignoring the header nginx honors 300s and the 1h rule is defeated. Trade-off: nginx TTL becomes the edge source of truth — keep both TTLs on one review checklist. + +**Why these key components:** absent/invalid key → distinct key space, always MISS → hits `verifyAPIKey` (401/429, never cached) → no auth bypass. `X-MCP: true` changes the body (`MCPDetectMiddleware`) but not `$request_uri`, so it must be an explicit key component. `compact=true` already rides in the URI. + +**Verify P1:** +```bash +K=sk_test_...; U='http://localhost/stocks/historical?search=PETR4&fields=LUCRO%20LIQUIDO' +curl -sD- -o/dev/null -H "X-API-Key: $K" "$U" | grep -i x-cache-status # MISS +curl -sD- -o/dev/null -H "X-API-Key: $K" "$U" | grep -i x-cache-status # HIT +curl -sD- -o/dev/null -H "X-API-Key: BAD" "$U" | grep -iE 'HTTP/|x-cache' # 401 + MISS +``` +TODO-14 evidence: `docker stats --no-stream api` before/after `hey -n 5000 -c 50 -H "X-API-Key: $K" "$U"` — origin CPU should stay ≈ idle; capture the `/proc/1/status` ctxt-switch delta to show the GIL path is bypassed. +**Rollback:** delete cached locations / `proxy_cache off` globally; nginx falls back to pass-through with zero app change. + +## 1.5 Phase P2 — port scheme, worker containers, keepalive + +**Problem (verified):** `config.py:41,53,62` all default `PORT=3200` and `docker-compose.yml:48-50` publishes three host mappings that all default to 3200; in-process `getApp(3200)` collapses all services into one app/thread (`service_manager.py:19-22`). nginx must not assume that forever. + +1. Distinct defaults: `USER_PORT=3200`, `STOCKSAPI_PORT=3201`, `ORUNMILA_PORT=3202`, matching compose mappings; existing `.env` values still win; update `.env.example`/README. +2. Worker container behind a compose profile so default `up` is unchanged: +```yaml + stocksapi: + build: { context: ., dockerfile: Dockerfile } + profiles: ["workers"] + restart: always + environment: + - STOCKSAPI_ENABLED=TRUE + - USER_ENABLED=FALSE + - ORUNMILA_ENABLED=FALSE + - SCRAPER_ENABLED=FALSE + - STOCKSAPI_PORT=3200 + - TZ=America/Sao_Paulo + # ... mysql env passthrough + volumes: [ ".:/app", "workspaces:/data/workspaces" ] +``` + `run.py:52` already honors `{SVC}_ENABLED`, so only stocksapi initializes → its own process, own GIL. `upstream stocks_api` then gains `server stocksapi:3200` (and `api:3201`, or drops `api` after cut-over). +3. Keepalive already configured; verify reused connections (`ss -tn state established '( dport = :3200 )'`). + +**Verify:** `docker compose --profile workers up -d`; `/stocks/health` served from `stocksapi` (check `X-Forwarded-For` in app log); `docker stats` shows `api` idle, `stocksapi` handling misses. + +## 1.6 Phase P3 — remote VPS upstreams + health strategy + +```nginx +upstream stocks_api { + least_conn; + server api:3200 max_fails=3 fail_timeout=10s; + server 203.0.113.10:3200 max_fails=3 fail_timeout=10s; # vps-1 + server 203.0.113.11:3200 max_fails=3 fail_timeout=10s; # vps-2 + keepalive 32; +} +``` +If VPS hostnames rotate, add `resolver 127.0.0.11 valid=10s;` and nginx 1.27 `server name:port resolve;` (document as optional). + +Add to `stocks-proxy.conf`: +```nginx +proxy_next_upstream error timeout http_502 http_503 http_504; +proxy_next_upstream_tries 2; +``` +Do **not** add `non_idempotent` — a retried POST across nodes can double-execute. + +**Active-check gap (OSS nginx has none):** + +| Option | Mechanism | Cost | When | +|---|---|---|---| +| Passive (baseline, chosen) | `max_fails=3 fail_timeout=10s`; eject, re-probe at `fail_timeout` | none | P3 default | +| `proxy_next_upstream` | retry next server on error/timeout/502-504 | none; may double-hit origin | add in P3 | +| External prober / OpenResty `lua-resty-healthcheck` | active probes + reload/ejection | ops complexity, new runtime | when a black-hole window >30s is observed (esp. cache-writer death) | +| nginx Plus `health_check` | native active checks | license | only if already bought | +| L4 LB / keepalived+VIP in front of nginx | HA for nginx itself | infra | when the edge becomes HA-required | + +`proxy_cache_use_stale ... error timeout` means a dead upstream serves stale cache rather than failing — preferred for read paths. + +## 1.7 Phase P4 — handoff design (no code in this plan) + +**TODO 13 — drop `{service}_HOST`/`{service}_PORT` without breaking today's switching.** Callers that must keep working: `run.py:52-56` (local-init branch), `run.py:95-98` (`/status`), `main/utils/connectivity.py:45-46`, any peer-URL builder. +1. Add `ROUTING_MODE = legacy | nginx` (default `legacy`) and optional per-service `*_BASE_URL`. +2. One resolver helper: `BASE_URL` if set, else `http://{HOST}:{PORT}` — nothing breaks. +3. Flip `ROUTING_MODE=nginx` per box; `HOST`/`PORT` become bind-only. +4. After all boxes are `nginx` and no caller reads `{svc}_HOST`, delete the fields + `LOCALHOST_ADDRESSES` (`config.py:101`). `run.py` local-init path goes last; `/status` must still report per-service health. +Rollback: set `ROUTING_MODE=legacy` (addresses still present until step 4). + +**Redis (TODO 15):** replace cashews `mem://` (`stocksapi_controller.py:17`) with `redis://redis:6379` so the endpoint TTL cache is shared across workers; replace `flock`/`CACHE_LOAD_LOCK` (`cache.py:37,169-183`) with `SET cache_refresh_lock NX PX 900000` + owner-token release. **Swarm at 5+:** upstream becomes generated config (compose replicas / consul-template); with >1 nginx, either accept per-node caches or move response cache to a shared tier — decide at 5+, not now. + +## 1.8 Quota / rate-limit semantics after caching + +| Layer | Counts | Scope | Today | After P1 | Recommendation | +|---|---|---|---|---|---| +| nginx `limit_req` (`stocks_key`) | every request incl. HIT | per key, 300/min + burst 50 | new | uniform ceiling, protects nginx CPU | keep | +| app `verifyAPIKey` quota (`key.py:72-78`) | only MISS | per key, monthly `requestLimit` (10k STARTUP) | all requests | **misses only** | redefine as "origin data requests"; document in pricing | +| app per-minute tier (30 STARTUP) | — | per key | **not implemented** | still not implemented | implement in app/Redis (§3.5b) | +| slowapi `limiter` (`logging_config.py:15`) | per remote IP | global | exists, not on `/stocks` | unchanged | leave; do not key `/stocks` on IP (would 429 whole nginx) | +| Redis counters (P4) | choose | per key + tier | none | accurate 30/300 + monthly | build in P4 | + +**Product decision required:** with P1, a STARTUP client can exceed 30/min whenever responses are cached. If the 30/min promise is contractual, enforce it with a key→tier map backed by shared store (nginx keys are unprefixed `token_urlsafe(32)`, `key.py:30` — no tier derivable at nginx) or document that hits are served by the edge. + +## 1.9 Anti-scraping note (TODO 17) + +The cache key is `(api_key, x-mcp, request_uri)`. Randomizing `/stocks` query params (UUID routing) would make **every request a MISS** and destroy the cache. Randomize at the **page layer** (HTML/JS route consuming `/stocks`), keep the `/stocks` data plane deterministic, and let nginx `limit_req` + app keys absorb direct scraping. TODO-16 (single-tab cookie session) likewise belongs at the page layer, never in the cache path. + +## 1.10 Edge cases / risks (implementation) + +- **Empty `$http_x_api_key`** → one shared key namespace, but all such requests are 401 (uncached) → all hit origin. Verify `limit_req`'s empty-string bucket does not unfairly 429 anonymous traffic; if it does, give anonymous its own low-rate zone. +- **TTL drift:** nginx TTLs duplicate app decorator TTLs — one review checklist for both. +- **Large `/cotations` bodies** (10y, many tickers): `proxy_max_temp_file_size 512m`, disk `max_size 2g`; watch eviction via `upstream_cache_status`. +- **`proxy_cache_lock` + slow origin:** 20s lock timeout means waiters fall through to origin; watch `urt`. +- **`X-MCP` determinism:** only the exact value `true` mutates the body (`stocksapi_service.py:17`); `X-MCP: TRUE` is a separate non-compacted entry — matches app behavior. +- **Port 3200 collision** is the failure mode of P2 if two roles land on one box — one role per box preferred (§3.2). + +--- + +# Part 2 — Benchmark plan + +## 2.0 Grounding: what the code actually does + +**0.1 Two independent cache layers — measure them separately.** + +| Layer | Implementation | Python in path on HIT? | +|---|---|---| +| nginx response cache | not built yet | **No** — served from disk, uvicorn never contacted | +| app cache `@endpointCache` | `main/app/stocks_api/sync_cache.py:14-32`, cashews `mem://` (`stocksapi_controller.py:17`) | **Yes** | + +So "warm hit" is ambiguous: **H1 is split into H1a (nginx HIT) and H1b (app HIT)**. + +**0.2 An app-cache HIT still pays two heavy costs.** +- `sync_cache.py:30` — `return asyncio.run(cachedCall())`: **a new event loop is created per request** even on a pure hit; endpoints are sync `def` (`stocksapi_controller.py:85,150,220,276`) so FastAPI runs them in the anyio threadpool (~40 threads) and `asyncio.run()` inside a worker thread is the expensive part. +- Dependency `verifyAPIKey` (`key.py:48-90`) runs on **every** request reaching uvicorn: full-table scan `db.query(StocksAPIKey).all()` (`:57`) + atomic quota `UPDATE` + `commit()` (`:72-78`). The app cache does not skip auth. +Consequence: **nginx** removes Python from the path; the **app** layer only removes pandas query + ORJSON serialization. + +**0.3 Quota self-throttle:** `verifyAPIKey` 429s once `currentUsage >= requestLimit` (`key.py:62,80`). Any burst hits this within seconds unless the perf key has a huge `requestLimit` or `KEY_SYSTEM=false`. Scenario prerequisite, not a footnote. + +**0.4 Declared vs effective TTL (H5 trap):** + +| Endpoint | app TTL | `Cache-Control` | nginx effective if it honors upstream | +|---|---|---|---| +| `/stocks/historical` | 1h (`:84`) | `max-age=300` (`:141`) | **5m**, not 1h | +| `/stocks/fundamental` | 5m (`:149`) | `max-age=300` (`:211`) | 5m | +| `/stocks/cotations` | 5m (`:219`) | `max-age=300` (`:267`) | 5m | +| `/stocks/cotations/live` | 15s (`:275`) | `max-age=15` (`:312`) | 15s | +| `/stocks/fields` | none | none | `proxy_cache_valid` only | + +**0.5 GIL measured through one PID:** `service_manager.py:47-51` starts one `threading.Thread` per service port; all uvicorn servers share one process and one GIL (`run.py:46-61`). `/proc/1/status` context-switch counters inside the `api` container aggregate **all** services — that single file is the GIL-contention instrument for H3/S5. + +**0.6 TODO 14 is unbuilt:** `/status` (`run.py:77-108`) reports uptime/DBs/services — no latency, no context switches. This benchmark defines the baselines and metric shapes `/status` will later expose (§2.8). + +## 2.1 Hypotheses + +- **H1a (nginx HIT):** during a 100% nginx-HIT run, uvicorn CPU is independent of RPS (≈ idle); nginx `upstream_requests` counter stays flat. Falsifier: CPU scales with RPS, or upstream requests increment on HIT. +- **H1b (app HIT, nginx bypassed):** app-HIT costs strictly less than app-MISS but **not ≈0** (residual = `asyncio.run()` + `verifyAPIKey` DB scan+write). Falsifier: app-HIT ≈ app-MISS → the app cache adds nothing (a finding). +- **H2:** nginx-HIT RPS at fixed concurrency ≥ **10×** direct-to-uvicorn baseline for the same query, p99 equal or better. Falsifier: <2× → nginx adds a hop without offloading the bottleneck. +- **H3 (the GIL metric):** a non-stocks endpoint probed during a stocks burst shows p99 returning toward its no-load p99 after nginx absorbs the burst. Falsifier: unchanged cross-service p99 → burst was not GIL-bound. +- **H4:** hit ratio ≥ target on a realistic MCP workload (Zipfian ticker popularity; `/stocks/fields` is nginx-only). Falsifier: HIT% below target → key fragmentation dominates. +- **H5:** served body age ≤ effective TTL + margin with `use_stale` + `background_update`; first post-expiry request returns `STALE` + schedules `UPDATING`. + +## 2.2 Tooling + +**Primary runner — k6 via Docker (`grafana/k6`)**; scripts are JS with `options` + `handleSummary` JSON export. +```bash +# Windows/Docker Desktop: do NOT use --network host (the Linux VM does not share +# the Windows host loopback). Either run k6 as a compose service targeting +# http://nginx:80, or target the host explicitly: +docker run --rm -i -v "%CD%/tests/perf/nginx:/scripts" grafana/k6:latest \ + run --summary-export=/scripts/out/s2_warm.json /scripts/scenarios/s2_warm.js \ + -e BASE_URL=http://host.docker.internal:8080 -e API_KEY=$env:PERF_API_KEY +``` +Caveat: PowerShell uses `$env:VAR` / `"%CD%"`, Git-Bash uses `$VAR` / `$(pwd)`. `--network host` silently fails to reach the Windows host — the #1 time-waster on this box. + +**Fallbacks:** `hey` (`docker run --rm --network williamyeh/hey -n 20000 -c 50 -H "X-API-Key: $KEY" "http://nginx/stocks/cotations?search=PETR4"`) and `wrk` (`skandyla/wrk -t4 -c50 -d30s --latency`). + +**X-Cache-Status distribution:** +```bash +curl -s -o /dev/null -w '%header{x-cache-status}\n' -H "X-API-Key: $K" "$U" # per request +seq 1 20000 | xargs -P32 -I{} curl -s -o /dev/null -w '%header{x-cache-status}\n' \ + -H "X-API-Key: $PERF_API_KEY" "$U" | sort | uniq -c | sort -rn # high rate +``` +Vocabulary: `HIT, MISS, BYPASS, EXPIRED, STALE, UPDATING, REVALIDATED`. If `STALE`/`UPDATING` never appear, `proxy_cache_use_stale updating` is missing. + +**CPU during burst (never idle — 1.68 GB idle is not peak):** +```bash +docker stats --no-stream --format "{{.Name}},{{.CPUPerc}},{{.MemUsage}},{{.MemPerc}}" api nginx +``` +Sample ~1/s for the run duration; keep max + mean. `CPUPerc` is % of one core and can exceed 100%. + +**Context switches (GIL instrument) — Windows has no pidstat/vmstat, run inside the container:** +```bash +docker exec api sh -c "pidstat -w -p 1 1 30" # if sysstat present +docker exec api sh -c "vmstat 1 30" # cs column +# fallback without sysstat: diff /proc/1/status twice +docker exec api sh -c "grep -E 'voluntary|nonvoluntary' /proc/1/status" +``` +Caveats: `api` PID 1 aggregates all services (intended for the GIL metric); Docker Desktop counters are VM-visible; `docker stats` granularity ~1s → use ≥30s bursts. + +**nginx `stub_status`:** `location = /nginx_status { stub_status; allow 127.0.0.1; deny all; }` → reads `Active connections`, `accepts`, `handled`, `requests`. + +**Scenario layout (planned paths, nothing created):** +``` +tests/perf/nginx/ + scenarios/ s1_cold.js s2_warm.js s3_rotation.js s4_params.js s5_mixed.js s6_ttl.js s7_gzip.js + lib/ tickers.js common.js + tickers.txt + collect.sh / collect.ps1 ; run_all.sh / run_all.ps1 + nginx.conf ; README.md +``` + +## 2.3 Scenarios + +All write `out/__.json` (+ sampled CSV); `mode` ∈ {`direct`,`nginx`}. + +- **S1 cold single query** — purge both caches; one GET through nginx; `MISS`; measure first-fill cost (auth DB, pandas, ORJSON, cache write). Repeat N=200 distinct cold keys for a distribution. +- **S2 warm repeat single query** — fixed query, `vus=50,duration=60s`, nginx cache warm → H1a + H2. Also run the **direct** variant to isolate layer contributions. +- **S3 ticker rotation (fragmentation probe)** — rotate M distinct tickers, same params (each new `search` = new key). Report unique keys, HIT%, RPS(rotation)/RPS(S2); run M ∈ {10,100,500,1000} for the fragmentation curve. This quantifies the known ticker-rotation cache-defeat. +- **S4 parameter variance** — vary `orderBy`, `limit` ∈ {10,100,1000}, `compact` ∈ {false,true}, `dates` on a fixed ticker set → Cartesian blow-up; HIT% vs variant count. +- **S5 mixed concurrent (THE GIL metric)** — parallel: stocks burst (S2/S3 shape) + a constant 5-VU probe against a non-stocks endpoint on the same process (`:8000/status` does DB round trips; and/or USER `/health`). Measure probe p50/p95/p99 during burst vs idle, `api` ctxt-switch rate, `api` CPU. Run `direct` (baseline degradation) and `nginx` (relief); H3 is the delta. +- **S6 TTL expiry / stale-while-revalidate** — warm, idle past the effective TTL, fire one request → expect `STALE` + background `UPDATING`; next → `HIT`; assert body age ≤ TTL+margin against a direct-fetch oracle. Market-hours caveat: outside 10:00–17:30 BRT `/cotations/live` returns the last closing price (`stocksapi_controller.py:310-311`) → assert on `X-Cache-Status` only. +- **S7 gzip on/off** — measure bytes/ratio, TTFB/p95, `api` CPU (must stay flat on HIT), and that `Accept-Encoding` does not split the cache key (`Vary` present via `gzip_vary on`). + +## 2.4 Protocol + +1. Same box, before/after; identical compose, DB, feather state. +2. Warm-up 30s at ≤10% VUs, discard. +3. 3 repeats; median + min/max; reject a repeat if `cacheAgeHours` (`/stocks/health`, `stocksapi_controller.py:33`) crosses a 12h rebuild boundary. +4. Fixed seeded tickers (`tests/perf/nginx/tickers.txt`); Zipfian for S5/H4, uniform rotation for S3; no unseeded RNG. +5. Pin `PERF_API_KEY` with raised `requestLimit` (or `KEY_SYSTEM=false`); record which mode; `KEY_SYSTEM=true` is the realistic default for H1b/H3. +6. Record B3 session state + run clock for every row. +7. **Cache flush procedure (state must be defined, not assumed):** nginx → `docker exec nginx sh -c "rm -rf /var/cache/nginx/stocks/*"` (or restart if the volume is ephemeral); app cashews → `docker compose restart api` (clears in-process cache AND reloads feather — slow); feather/DB untouched, note `cacheAgeHours`. A HIT% number without its flush provenance is meaningless. +8. Order: `direct` baseline → flush → `nginx` treatment; flush between reps; never interleave unflushed. + +## 2.5 Metrics + +RPS; p50/p95/p99; error rate (<0.1%); `api` CPU% (burst); `nginx` CPU%; RAM during burst; context switches/s; `X-Cache-Status` mix; upstream requests (counter vs total); cache-key cardinality (MISS count); gzip ratio; staleness age; cold latency. Every row carries `timestamp, mode, flush, cacheAgeHours, marketOpen, KEY_SYSTEM, tickersRef, rep`. + +## 2.6 Acceptance thresholds — **ALL PROPOSED, freeze after first real run** + +| Hypothesis | Metric | PROPOSED | Rationale | +|---|---|---|---| +| H1a | `api` CPU% during 100% HIT at ≥1000 rps | within +5 pp of idle; upstream_requests flat | HIT must not touch uvicorn | +| H1b | app-HIT vs app-MISS per-request CPU | ≤60% of miss but >5% | residual = asyncio.run + auth DB | +| H2 | S2 RPS vs direct | ≥10×, p99 ≤ baseline, errors <0.1% | removes auth DB + event loop + serialization | +| H3 | S5 probe p99 during burst | ≤ baseline +20% | GIL relief is the whole argument | +| H3 | ctxt-switch rate | ≥30% reduction vs direct | objective GIL proxy | +| H4 | HIT% Zipf workload | ≥70% | realistic MCP repetition | +| H4 | HIT% uniform rotation M≥500 | ≥40% (report actual) | fragmentation is the finding | +| H4 | HIT% pure repeat | ≥95% | sanity ceiling | +| H5 | served body age | ≤ effective TTL + 5s; STALE+UPDATING observed | no stale beyond TTL | +| S3 | RPS(rotation)/RPS(S2) | report; ≥0.4 at M=100 | quantifies fragmentation | +| S6 | STALE-hop p99 vs clean HIT | ≤ +10 ms | stale-while-revalidate near-free | +| S7 | gzip byte reduction | ≥70% JSON; api CPU flat; Vary present, key not split | nginx compresses, not uvicorn | + +## 2.7 Results doc layout + +``` +docs/benchmarks/nginx/ + README.md PLAN.md nginx.conf.snapshot + runs/2026-XX-XX_/{meta.json, raw/*.json, summary.md} +``` +`README.md` summary table: scenario × mode → RPS, p50, p95, p99, api CPU%, cs/s, HIT%, RAM, verdict. Raw naming `__.`, timestamped run dir, never overwrite a previous run. + +## 2.8 Feeding `/status` (TODO 14) + +This benchmark produces the two baselines `/status` needs: +1. **Per-service p99** — bounded rolling duration histogram per service in a middleware; surface `latency: {p50,p95,p99}`. S5 probe p99 becomes the alert baseline: *"USER p99 during stocks burst ≤ idle p99 + H3 headroom"*. +2. **Context-switch rate** — `/status` reads its own `/proc/self/status` voluntary+nonvoluntary counters, caches last sample + timestamp, reports `ctxSwitchesPerSec`. The direct-vs-nginx delta sets the threshold: *a burst pushing cs/s above the benchmarked nginx ceiling means the burst is leaking past the cache to the GIL*. + +## 2.9 Benchmark risks + +- Cache key excluding `X-API-Key` would serve one key's response to another and short-circuit usage accounting (`key.py:72-78`) — the plan's §1.4 key includes it; the benchmark must verify tenant isolation explicitly. +- Warm app cache can mask a "cold" S1 → always flush per §2.4.7 and record it. +- `asyncio.run` per request (`sync_cache.py:30`) may dominate the app-HIT cost — H1b is expected to reveal a large residual; that is a finding, not a failed benchmark. +- 12h feather rebuild invalidates app cache mid-run → guard with `cacheAgeHours`. +- Any 429 = aborted run, not a result. +- `.all()` scan (`key.py:57`) grows with the key table → measured auth cost is a lower bound. + +--- + +# Part 3 — Future scaling evolution + risks + +## 3.0 Verified ground truth + +| Fact | Evidence | +|---|---| +| All three services default to the same port 3200 | `config.py:41,53,62` | +| Services are uvicorn threads in ONE process, shared GIL | `service_manager.py:49-51` | +| Boot selects local-vs-remote by HOST string | `run.py:51-56`; `LOCALHOST_ADDRESSES` `config.py:101` | +| Per-service env gates already exist | `config.py:39,51,60` (`USER_ENABLED`, `STOCKSAPI_ENABLED`, `ORUNMILA_ENABLED`) | +| Single compose `api` service; host ports collide on 3200 | `docker-compose.yml:41-50` | +| Feather cache: 6h mtime staleness, 12h scheduled refresh, per-host `flock` | `cache.py:36,221-227,169-183` | +| No `CACHE_VERSION` constant exists (only `PRESORTED_FLAG_KEY` schema metadata) | `cache.py:38,134`; grep found none in `main/` | +| Endpoint cache is in-process cashews `mem://` | `stocksapi_controller.py:17`, `sync_cache.py:21-27` | +| Rate limiting is in-process slowapi; monthly quota is atomic DB counter | `service_manager.py:24`, `key.py:72-81` | +| Sandbox model has `userId` + `sandboxId`, NO host column | `main/models/sandbox.py:8-11` | +| `FORGEVM_URL` is a single static URL today | `config.py:65` | +| Named constraint: 1 nginx box = single failure domain | accepted now, recorded R1 | + +## 3.1 Target topology + +**1 box (today + nginx front door):** nginx :80/:443 fronts `/` → `api:8000` and `/stocks/*` → `api:3200`; the single `api` process holds USER/STOCKS_API/ORUNMILA (one GIL) + scraper + db + forgevm + searxng. Cache writer = the one process. + +**2 boxes (first extraction — STOCKS_API):** +``` +NODE A NODE B +nginx :80/443 api container: STOCKSAPI_ENABLED=TRUE, + / -> A:8000 others FALSE + /stocks/* -> B:3200 (pinned IP) STOCKS_API :3200 (own GIL) +api: USER + ORUNMILA :3200 feather writer (Redis lock owner) +db primary, forgevm, searxng +``` +Why STOCKS_API first: pure HTTP, self-contained router (`stocksapi_service.py:30-45`), owns the cache scheduler, and moving it removes feather build/load + `rebuildAbbrevs()` (`cache.py:229-246`) GIL contention from USER/ORUNMILA. + +**3 boxes (ORUNMILA + ForgeVM split):** A = nginx edge + USER + db primary (+replica warm); B = STOCKS_API + feather writer (Redis lock owner); C = ORUNMILA + forgevm + workspaces volume. Keep ForgeVM co-located with ORUNMILA (sandbox exec is chat-latency-bound; `workspaces` is local, `docker-compose.yml:34,66`). ForgeVM never sits behind the public nginx. + +## 3.2 Worker-container extraction + +Same image + env gate = a worker with its own GIL; no new Dockerfile. + +| Env var | Node A (edge+USER) | Node B (STOCKS_API) | Node C (ORUNMILA) | Notes | +|---|---|---|---|---| +| `USER_ENABLED` | TRUE | FALSE | FALSE | `config.py:39` | +| `STOCKSAPI_ENABLED` | FALSE | TRUE | FALSE | `config.py:51` | +| `ORUNMILA_ENABLED` | FALSE | FALSE | TRUE | `config.py:60` | +| `SCRAPER_ENABLED` | TRUE (writer node only) | FALSE | FALSE | `config.py:77`; exactly ONE scraper fleet-wide | +| `{svc}_HOST` | localhost | localhost | localhost | phase 1 still local-init (`run.py:53`) | +| `{svc}_PORT` | per-role | 3200 | 3200 | one role per box removes the collision entirely | +| `STOCKS_MYSQL_HOST`/`USER_MYSQL_HOST` | db host | db host (remote ok) | db host | `config.py:26,32` | +| `ROUTING_MODE` (new) | legacy→nginx | same | same | §3.4 | + +Extraction order + acceptance: **1. STOCKS_API** (`/stocks/health` → `cacheReady:true`; Node A `/status` `run.py:87-99` shows stocks_api local and B reachable; feather built on B). **2. ORUNMILA + ForgeVM** (chat tool round-trip; sandbox created on C). **3. USER last** (most coupled: auth/sessions/JWT; login+me round-trip). **4. SCRAPER**: never two writers (exactly one node logs scraper init). + +## 3.3 nginx upstream evolution — validated against the user's plan + +**Recommend pinned static upstreams (`BoxIP:publishedPort`) below 5 nodes; Swarm routing mesh at ≥5.** The pinned-address idea is correct now. + +```nginx +upstream stocks_api { server 10.0.0.12:3200 max_fails=3 fail_timeout=30s; keepalive 32; } +upstream user_api { server 10.0.0.10:3200 max_fails=3 fail_timeout=30s; keepalive 32; } +``` + +| Criterion | Pinned static (chosen) | Swarm mesh (≥5) | +|---|---|---| +| `config.py` URL-switch preserved | Yes — host:port still meaningful | No — becomes VIP/DNS | +| Debuggability | Trivial (`nginx -T`, ping IP) | Overlay + VIP indirection | +| Node add/remove | Manual edit + reload | Automatic reschedule | +| Node failure | `max_fails` ejects; others serve | Mesh re-routes | +| Extra surface | None | Overlay net, gossip, ingress | +| ForgeVM affinity | Easy (pin host) | Mesh breaks affinity | +| Compose-compatible | Yes | Rewrite to stack files | + +Price of static upstreams: **no auto-reschedule** (a human edits nginx when a node joins/leaves) — acceptable ≤3 boxes, and it is what keeps today's gradual-extraction path intact. Health: passive + compose healthchecks; promote to OpenResty only if a black-hole window >30s is observed (see §1.6 options table). Add `proxy_connect_timeout 2s; proxy_read_timeout 60s;` and never retry `non_idempotent`. + +## 3.4 TODO 13 migration — drop `{service}_HOST`/`{service}_PORT` + +End state: the app no longer knows peer addresses; nginx owns routing; services call an internal base URL. Design: `ROUTING_MODE = legacy | nginx` (default `legacy`) + optional `*_BASE_URL`. +- `legacy`: current behavior (`{svc}_HOST`/`{svc}_PORT` + `run.py:53`). +- `nginx`: derive base URLs from `MANSA_INTERNAL_BASE_URL` (e.g. `http://nginx:80`); `HOST`/`PORT` remain bind-only; `run.py:55` `checkServiceConnection` dropped (nginx fails closed); `{svc}_ENABLED` stays as the boot gate in both modes. +Transition: (1) introduce flag default legacy; (2) nginx in front, still legacy; (3) flip per box; (4) delete the properties + `LOCALHOST_ADDRESSES` in a cleanup commit. Rollback: flip back to legacy (addresses still present until step 4). + +## 3.5 Redis — exactly two jobs + +The endpoint cache stays `mem://` and feather stays local files; Redis does **only**: + +**(a) Cross-host rebuild lock.** `flock` (`cache.py:179`) + `CACHE_LOAD_LOCK` (`cache.py:37`) are per-host → two hosts can build concurrently at box #2. Use `SET stocks:cache:rebuild NX EX 600`; release only if the value matches (Lua compare-and-del) so a timed-out owner cannot free a successor's lock; acquire before `tryBuildLock` (`cache.py:264-280`) and skip with "another host is building" (current `:268` behavior) if not acquired. Add an explicit `CACHE_VERSION` constant (does not exist today) embedded in feather metadata: readers load only on match, else rebuild; bump = fleet-wide invalidation and the lock guarantees exactly one rebuilder while others serve their stale feather. + +**(b) Rate limiting (30/300 rpm tiers, TODO lines 56/67).** Today in-process slowapi = N× quota at N instances; the DB counter (`key.py:72-81`) is monthly calls, already cross-instance correct. + +| Approach | Per-key tier | Cross-instance | Verdict | +|---|---|---|---| +| nginx `limit_req` keyed `$http_x_api_key` | needs key→tier map; fixed window; per-nginx zone | No | coarse edge guard only | +| Redis token bucket (Lua) keyed `apiKey` | Yes (30/300 from the key row) | Yes | **recommended authoritative rpm limiter** | +| slowapi in-process | Yes | No | keep off the cross-box path | + +Roadmap triggers: add Redis **before box #2** (lock required); add the token bucket with the first multi-instance STOCKS_API. Neither needed on a single box. + +## 3.6 Cache strategy across boxes + +**Rebuild-on-version per box. Not rsync, not NFS.** Each node builds its own feather from `stocks_db` (deterministic, `cache.py:78-166`), gated by the Redis lock + `CACHE_VERSION`; the lock holder is the writer, others read. +**Staleness exposure (named):** a reader node serves its local feather until its next refresh (`cache.py:254` 6h staleness, `:221-227` 12h scheduler) or a version bump → worst case ~6h stale fundamentals. Live quotes are fetched at source (`stocksapi_controller.py:274`) and unaffected. Accepted. +**Do NOT:** NFS for `/app/cache` (the writer relies on same-FS `os.replace` atomicity `cache.py:163-165` and `flock`; NFS breaks both and adds a SPOF); round-robin over ForgeVM hosts (breaks `/workspace` affinity); a single shared feather file (contention + SPOF). Upgrade path if rebuild cost ever dominates: version-gated rsync push from writer → readers (not now). + +## 3.7 Autoscaling story (TODO 11) + +Proposed per-role triggers: **STOCKS_API** — `upstream_response_time` p95 >1.5s for 5 min or upstream 5xx >1% (nginx access log + `stub_status`); **ORUNMILA** — in-flight concurrency / sandbox queue depth; **USER** — DB pool saturation (`pool_size=20,max_overflow=40`, `config.py:106-107`), i.e. scale users only after the DB is the bottleneck. +Stays manual (explicitly): nginx upstream entries, MySQL replica promotion, ForgeVM host membership. The only automatic election is the cache-writer (Redis lock). "Autoscale" today = provision a box with the right env matrix + add a pinned upstream; real auto-provisioning is a later OpenResty/consul-template step — do not build it yet. + +## 3.8 ForgeVM interplay (TODO 12) + +Different plane from the stocks/nginx layer. Add `hostId` (+ optional `forgevmUrl`) to `orunmila_sandboxes` (`main/models/sandbox.py:8-11` has only `userId`+`sandboxId`). **Spawn-time routing:** pick a host once at sandbox creation (`main/app/orunmila/sandbox.py:110`), persist `hostId`, route all later exec/read/write to that host's `forgevm_url` (read from the row instead of static `Config.FORGEVM_URL`, `config.py:65`; tools at `main/app/orunmila/tools.py:106-152`). No per-request round-robin, no live migration. The public nginx fronts stocks/user HTTP only; ForgeVM control plane is app-internal (ORUNMILA → forgevm:7423) and shares only the machine, not the request path. + +## 3.9 Risk register + +| # | Risk | Impact | Likelihood | Mitigation | Trigger/Owner | +|---|---|---|---|---|---| +| R1 | Single nginx box = SPOF | Total outage | Med (accepted) | Name it; 2nd nginx + keepalived/VIP at box #3 | edge owner | +| R2 | **Quota-on-miss:** nginx HIT bypasses `key.py:72-81` → monthly counter under-counts | Billing/support disputes | High | Decide: edge forwards hit counter, or accept and bill on app-seen calls | product + edge | +| R3 | Stale ≤ TTL (6h fundamentals) on reader nodes | Users see old data | Med | `CACHE_VERSION` + Redis lock; surface `cacheAgeHours` on `/stocks/health` | cache owner | +| R4 | Key fragmentation: `compact`, `X-MCP` rewrite, abbrev, anti-scrape UUIDs mutate the key | Hit-rate collapse | High | Keep `/stocks` keys canonical; sorted normalized args; strip/normalize UUID+tracking params; never let anti-scrape UUIDs enter the cache key | edge + app | +| R5 | Anti-scraping UUID interplay (TODO 17) | Scraping protection silently breaks caching | Med | Design UUID at serializer/response layer; if in path, exempt from `proxy_cache_key` | app | +| R6 | Port collisions: all roles default `:3200` | Boot failure / wrong service | High at 2 roles/box | One role per box; or distinct `{svc}_PORT` | deployer | +| R7 | `flock`/`CACHE_LOAD_LOCK` per-host | Concurrent builds, thrash | High at box #2 | Redis `SET NX EX 600` (§3.5a) | cache owner | +| R8 | In-process slowapi = N× quota | Over-limit traffic at N≥2 | High | Redis token bucket (§3.5b) | edge/app | +| R9 | GIL contention on shared box | One service stalls all | Med | Extract STOCKS_API first; feather load/`rebuildAbbrevs` in-proc | scaling owner | +| R10 | Restarting the cache-writer mid-build | Orphan Redis lock until TTL; deploy races | Med | Never restart the writer while it holds the lock; ownership token + TTL recovers; deploy readers first | ops | +| R11 | `subprocess.run` build blocks the calling daemon thread (`cache.py:271-278`) | Refresh thread stuck | Low | Already isolated in subprocess; Redis lock prevents duplicates | cache owner | +| R12 | Static upstreams: node add = manual edit | Human error / drift | Med | Template upstream file + `nginx -t && nginx -s reload` in the deploy script | ops | +| R13 | `proxy_next_upstream` on POST | Double execution | Med | Exclude `non_idempotent` | edge | +| R14 | MySQL becomes the bottleneck | Latency | Med (later) | Ladder: measure → vertical → read replicas → sharding last | db owner | +| R15 | ForgeVM round-robin temptation | Broken `/workspace` affinity | Med | Host-pair + spawn-time routing only (§3.8) | app | + +## 3.10 Migration sequence + verification + +| Step | Action | Verify | Pass | +|---|---|---|---| +| 0 | Baseline | `docker compose up -d --build`; `curl -s localhost:8000/status` | `status: healthy`, 3 services | +| 1 | nginx front door (`/`→api:8000, `/stocks/*`→api:3200) | `nginx -T`; `curl -s localhost/stocks/health` | `cacheReady:true` | +| 2 | STOCKS_API worker on Node B (env gate) | `curl -s http://B:3200/stocks/health`; `curl -s A:8000/status` | `stocks_api: local` | +| 3 | Pin upstreams `BoxIP:port` | `nginx -T \| grep -A3 upstream`; GET `/stocks/historical` via nginx | 200 via B | +| 4 | Redis rebuild lock | 2nd `SET ... NX EX 600` returns nil; logs "another host is building" | one builder | +| 5 | `CACHE_VERSION` gate | bump version, restart writer; other node rebuilds once | no duplicate builds | +| 6 | Rate limiting | 31st req/min on a 30-rpm key | 429 | +| 7 | `ROUTING_MODE` flip per box | curl each role through nginx; `/status` healthy | all `nginx` | +| 8 | ForgeVM `hostId` + spawn-time routing | create sandbox → row has `hostId`; exec routes there; kill host → respawn on peer | affinity held | +| 9 | Cleanup: delete `{svc}_HOST/PORT`, `LOCALHOST_ADDRESSES` | `ruff check . && pytest`; no peer-address reads in `run.py` | grep clean | + +Every mutation step is followed by `.\ci.ps1` before commit (project rule). + +--- + +# Open decisions (blocking or product-owned) + +1. **R2 quota-on-miss** — bill on app-seen calls, or instrument edge cache hits? Blocks enabling `proxy_cache` in production with contractual quotas (§1.8, §3.9 R2). +2. **Per-tier per-minute limit (30 vs 300)** — no nginx-only solution with unprefixed keys (`key.py:30`); decide Redis token bucket vs documented edge behavior (§3.5b). +3. **Active health checks** — stay passive until a writer black-hole >30s is observed, or adopt OpenResty now? (§1.6, §3.3) +4. **Second nginx + VIP** — at which box count does R1 stop being acceptable? +5. **`hostId` on `orunmila_sandboxes`** — confirm the schema migration before any ForgeVM scaling code (§3.8). + +# Next actions (not in scope here) + +1. Answer the five open decisions. +2. Approve P0/P1 (nginx service + cache locations) — smallest independently deployable step, zero app mutation, instant rollback. +3. Run the benchmark plan against P1 and freeze the PROPOSED thresholds (§2.6) into the results doc. +4. Only then: P2 worker container, P3 remote VPS, P4 routing/Redis refactor. From c2eb5003650bfc408c6affd7c863ccdcd757ae53 Mon Sep 17 00:00:00 2001 From: heitorrosa <76885858+heitorrosa@users.noreply.github.com> Date: Tue, 29 Sep 2026 18:01:35 -0300 Subject: [PATCH 15/20] accept arrow-backed dtypes in json deserialization --- main/app/stocks_api/query.py | 5 ++++- tests/test_stocks_cache_zstd.py | 11 +++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/main/app/stocks_api/query.py b/main/app/stocks_api/query.py index 28a65002..f351dbdd 100644 --- a/main/app/stocks_api/query.py +++ b/main/app/stocks_api/query.py @@ -138,7 +138,10 @@ def parseJSON(x, decompressor): decompressor = zstd.ZstdDecompressor() for col in df.columns: - if col in JSON_COLUMNS and (df[col].dtype == "object" or pd.api.types.is_string_dtype(df[col])): + dtype = df[col].dtype + if col in JSON_COLUMNS and ( + dtype == "object" or pd.api.types.is_string_dtype(dtype) or isinstance(dtype, pd.ArrowDtype) + ): df[col] = df[col].apply( lambda x: ( sanitizeNanValues(parseJSON(x, decompressor)) diff --git a/tests/test_stocks_cache_zstd.py b/tests/test_stocks_cache_zstd.py index aa213a80..156f79b5 100644 --- a/tests/test_stocks_cache_zstd.py +++ b/tests/test_stocks_cache_zstd.py @@ -281,6 +281,17 @@ def test_deserialize_jsoncolumns_decompresses_bytes(): assert out["COTACAO 10Y PADRAO"].iloc[0] == [{"DATA": "01-01-2024", "PRECO": 10.0}] +def test_deserialize_jsoncolumns_handles_arrowdtype_binary(): + payload = zstd.ZstdCompressor(level=3).compress(b'[{"DATA": "01-01-2024", "PRECO": 10.5}]') + df = pd.DataFrame( + {"TICKER": ["PETR4"], "COTACAO 10Y PADRAO": pd.array([payload], dtype=pd.ArrowDtype(pa.binary()))} + ) + + out = deserializeJsonColumns(df) + + assert out["COTACAO 10Y PADRAO"].iloc[0] == [{"DATA": "01-01-2024", "PRECO": 10.5}] + + def test_get_nest_keeps_compressed_column_subfields(monkeypatch, tmp_path): df = pd.DataFrame( { From cb1363bcf7a805dcbbf054ec7e6fb5f243091037 Mon Sep 17 00:00:00 2001 From: heitorrosa <76885858+heitorrosa@users.noreply.github.com> Date: Tue, 29 Sep 2026 18:03:21 -0300 Subject: [PATCH 16/20] untrack nginx scaling draft plan --- docs/nginx-scaling-plan.md | 641 ------------------------------------- 1 file changed, 641 deletions(-) delete mode 100644 docs/nginx-scaling-plan.md diff --git a/docs/nginx-scaling-plan.md b/docs/nginx-scaling-plan.md deleted file mode 100644 index 57d1bbd6..00000000 --- a/docs/nginx-scaling-plan.md +++ /dev/null @@ -1,641 +0,0 @@ -# nginx Scaling Plan — reverse proxy + response cache for `/stocks`, and the multi-server evolution - -**Status:** PLAN ONLY — nothing in this document is implemented. No application, compose, or nginx file was modified. -**Produced by:** swarm `swarm/nginx-scaling` (board root `ses_f178f53fdffeEz0Nswxk4ay80O`), 3 lanes merged by prime: -- L1 `calm-amber-tiger` (code-architect) — implementation plan -- L2 `keen-coral-badger` (general) — benchmark plan -- L3 `keen-coral-otter` (code-architect) — future scaling + risk register - -Lanes ran read-only (no write/board/skill tools in that lane toolset), so prime relayed their envelopes to the board and merged their full drafts here. Evidence was read directly from source by the lanes; prime's own earlier eval corroborates the TTL map. - -## 0. Purpose and constraints - -**Goal:** put nginx in front of `/stocks` as reverse proxy + response cache so a cache HIT never enters Python (no uvicorn routing, no `verifyAPIKey` DB scan+UPDATE, no pandas, no ORJSON serialization, no shared-GIL contention), while staying consistent with the planned multi-server future. - -**Constraint traceability (TODO.md → this document):** - -| TODO.md | Constraint | Covered in | -|---|---|---| -| line 11 | nginx scaling for autoscaling workers, tailored configs triggering only required services, remote VPS support | §1 P2/P3, §3.2, §3.3, §3.7 | -| line 12 | ForgeVM multi-host scaling, router in business code, hostId tracking, rclone for /workspace | §3.8 | -| line 13 | drop `{service}_HOST`/`{service}_PORT`, replace with nginx-managed services | §1 P4, §3.4 | -| line 14 | p99 latency + context switches monitored at `/status` | §2.5, §2.8 (feed), §3.10 step | -| line 15 | feather cache synced + Redis as flock replacement | §1 P4, §3.5a, §3.6 | -| lines 16–17 | anti-scraping (single-tab cookie session; random UUID routing) | §1 §9, §3.9 R4/R5 | -| lines 47–70 | rate limits 30 rpm (STARTUP) / 300 rpm (ENTERPRISE), 10k calls/month STARTUP | §1 §8, §3.5b, §3.9 R2/R8 | - -**Verified ground truth (source, this session):** see §3.0. Key items: all three services default `PORT=3200` (`config.py:41,53,62`), one process/one GIL (`service_manager.py:49-51`), endpoint cache is in-process cashews `mem://` (`stocksapi_controller.py:17`), feather rebuild every 12h with per-host `flock` (`cache.py:179,221-227`), `X-MCP` header mutates the body via `MCPDetectMiddleware` (`stocksapi_service.py:10-22`). - ---- - -# Part 1 — Implementation plan - -## 1.1 Architecture decision - -nginx 1.27-alpine as a first-class compose service, disk-backed `proxy_cache` keyed on `$http_x_api_key` + `$http_x_mcp` + `$request_uri`, one `upstream` per logical service, `proxy_cache_lock` + `background_update` so concurrent misses collapse to one origin call. Only GET `/stocks/*` is cached; `/stocks/health` and `/stocks/mcp` bypass. - -Why: removes the GIL/uvicorn/serialization/quota-DB cost for the dominant read workload with zero new application code (cache, keepalive, gzip, rate limiting all ship with nginx). The cache sits in front, so it is orthogonal to the worker-container split (P2) and remote VPS fan-out (P3) — the same `upstream` block just gains `server` lines. - -Accepted trade-offs: -- Quota counts misses only (hit-heavy clients under-count) — see §1.8; billing rule decision required. -- Per-key cache fragmentation: one entry per `(key, x-mcp, uri)`. -- OSS nginx has no active health checks → passive `max_fails`/`fail_timeout` only (§1.6). - -Rejected: app-level cache only (defeats the goal); Varnish (extra moving part for a feature nginx already has); CDN (not the self-hosted model; TODO-11 explicitly wants nginx). - -## 1.2 File layout - -**Create:** -``` -nginx/ - conf.d/ - 00-http-common.conf # http-context: proxy_cache_path, limit_req_zone, gzip, log_format - 10-upstreams.conf # upstream stocks_api (+ remote servers in P3) - 20-stocks-cache.conf # server :80 -> cache locations - snippets/ - stocks-proxy.conf # shared proxy_* directives for cached locations - stocks-bypass.conf # proxy without cache (health, mcp, everything else) -``` -**Modify:** `docker-compose.yml` (P0 add nginx service; P2 ports + worker profile), `config.py` (P2 distinct port defaults; P4 `ROUTING_MODE` design), `.env.example`/`README.md` (P2), `main/app/stocks_api/key.py` + `main/utils/logging_config.py` (P4 design only). - -Mounting `conf.d/` + `snippets/` keeps the stock `nginx.conf` (and its `include /etc/nginx/conf.d/*.conf` inside `http{}`) — no need to replace `nginx.conf`. - -## 1.3 Phase P0 — nginx service + config skeleton - -```yaml - nginx: - image: nginx:1.27-alpine - restart: always - ports: ["80:80"] - volumes: - - ./nginx/conf.d:/etc/nginx/conf.d:ro - - ./nginx/snippets:/etc/nginx/snippets:ro - - nginx-cache:/var/cache/nginx - depends_on: [api] - healthcheck: - test: ["CMD", "wget", "-qO-", "http://localhost/nginx-health"] - interval: 10s - timeout: 3s - retries: 3 -volumes: - nginx-cache: -``` - -`00-http-common.conf` (http context): -```nginx -proxy_cache_path /var/cache/nginx/stocks - levels=1:2 keys_zone=stocks_cache:64m - max_size=2g inactive=2h use_temp_path=off; - -limit_req_zone $http_x_api_key zone=stocks_key:10m rate=300r/m; -limit_req_status 429; - -log_format cache '$remote_addr "$request" $status $body_bytes_sent ' - 'cache=$upstream_cache_status key=${http_x_api_key:0:8} ' - 'rt=$request_time urt=$upstream_response_time'; -access_log /var/log/nginx/access.log cache; - -gzip on; gzip_comp_level 3; gzip_min_length 1024; -gzip_proxied any; gzip_vary on; gzip_types application/json; - -server { listen 80; location = /nginx-health { return 200 "ok\n"; } } -``` -Sizing: ~1 MB `keys_zone` per ~8k keys → 64 MB ≫ expected; `max_size 2g` bounds disk; `inactive 2h` > max TTL (1h). - -`10-upstreams.conf`: -```nginx -upstream stocks_api { - least_conn; - server api:3200 max_fails=3 fail_timeout=10s; - keepalive 32; # requires proxy_http_version 1.1 + Connection "" - keepalive_timeout 60s; - keepalive_requests 1000; -} -``` - -**Verify P0:** `docker compose config` parses; `curl -sI http://localhost/nginx-health` → 200; `curl -sD- -o/dev/null http://localhost/stocks/health -H "X-API-Key: $K"` reaches the app (200) with cache not yet asserted. -**Rollback:** bring compose up without `nginx`; nothing else changed. - -## 1.4 Phase P1 — cache locations, TTL table, directives - -`snippets/stocks-proxy.conf`: -```nginx -proxy_pass http://stocks_api; -proxy_http_version 1.1; -proxy_set_header Connection ""; -proxy_set_header Host $host; -proxy_set_header X-Real-IP $remote_addr; -proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; -proxy_set_header X-Forwarded-Proto $scheme; -proxy_set_header Accept-Encoding ""; # gzip at nginx only — no double compression - -proxy_cache stocks_cache; -proxy_cache_key "s:$http_x_api_key:$http_x_mcp:$request_uri"; -proxy_cache_lock on; -proxy_cache_lock_timeout 20s; -proxy_cache_background_update on; -proxy_cache_revalidate on; -proxy_cache_use_stale updating error timeout http_500 http_502 http_503 http_504; -proxy_ignore_headers Cache-Control Expires Set-Cookie; - -# cache only 2xx; 401/429/5xx pass through and are never stored -proxy_cache_valid 401 429 0s; -proxy_cache_valid any 0s; - -proxy_buffering on; -proxy_buffers 8 32k; -proxy_busy_buffers_size 64k; -proxy_max_temp_file_size 512m; -add_header X-Cache-Status $upstream_cache_status always; -``` - -`20-stocks-cache.conf` (exact `=` locations so `/cotations/live` cannot be captured by `/cotations`): -```nginx -server { - listen 80; - - location = /stocks/health { include snippets/stocks-bypass.conf; } - location /stocks/mcp { include snippets/stocks-bypass.conf; } - - location = /stocks/cotations/live { - limit_req zone=stocks_key burst=50 nodelay; - include snippets/stocks-proxy.conf; - proxy_cache_valid 200 15s; - } - location = /stocks/cotations { - limit_req zone=stocks_key burst=50 nodelay; - include snippets/stocks-proxy.conf; - proxy_cache_valid 200 5m; - } - location = /stocks/fundamental { - limit_req zone=stocks_key burst=50 nodelay; - include snippets/stocks-proxy.conf; - proxy_cache_valid 200 5m; - } - location = /stocks/historical { - limit_req zone=stocks_key burst=50 nodelay; - include snippets/stocks-proxy.conf; - proxy_cache_valid 200 1h; - } - location = /stocks/fields { - limit_req zone=stocks_key burst=50 nodelay; - include snippets/stocks-proxy.conf; - proxy_cache_valid 200 5m; - } - - location / { include snippets/stocks-bypass.conf; } # everything else: pass-through -} -``` - -`snippets/stocks-bypass.conf`: same proxy headers, `proxy_cache off;`. - -**TTL table (authoritative):** - -| Location | `proxy_cache_valid 200` | App TTL (`@endpointCache`) | `Cache-Control` sent | Notes | -|---|---|---|---|---| -| `/stocks/historical` | 1h | 1h (`stocksapi_controller.py:84`) | `max-age=300` (`:141`) → ignored | `proxy_ignore_headers` mandatory or nginx caps at 5m | -| `/stocks/fundamental` | 5m | 5m (`:149`) | `max-age=300` (`:211`) | aligned | -| `/stocks/cotations` | 5m | 5m (`:219`) | `max-age=300` (`:267`) | exact match avoids `/live` | -| `/stocks/cotations/live` | 15s | 15s (`:275`) | `max-age=15` (`:312`) | exact match wins | -| `/stocks/fields` | 5m | none | none | recomputed per origin request; 5m staleness accepted (drop to 60s if churn matters) | -| `/stocks/health` | bypass | none | none | liveness | -| `/stocks/mcp` | bypass | n/a | n/a | POST/JSON-RPC mount | - -**Why `proxy_ignore_headers Cache-Control` is mandatory:** the app sends `max-age=300` on `/stocks/historical` while its own TTL is 1h; without ignoring the header nginx honors 300s and the 1h rule is defeated. Trade-off: nginx TTL becomes the edge source of truth — keep both TTLs on one review checklist. - -**Why these key components:** absent/invalid key → distinct key space, always MISS → hits `verifyAPIKey` (401/429, never cached) → no auth bypass. `X-MCP: true` changes the body (`MCPDetectMiddleware`) but not `$request_uri`, so it must be an explicit key component. `compact=true` already rides in the URI. - -**Verify P1:** -```bash -K=sk_test_...; U='http://localhost/stocks/historical?search=PETR4&fields=LUCRO%20LIQUIDO' -curl -sD- -o/dev/null -H "X-API-Key: $K" "$U" | grep -i x-cache-status # MISS -curl -sD- -o/dev/null -H "X-API-Key: $K" "$U" | grep -i x-cache-status # HIT -curl -sD- -o/dev/null -H "X-API-Key: BAD" "$U" | grep -iE 'HTTP/|x-cache' # 401 + MISS -``` -TODO-14 evidence: `docker stats --no-stream api` before/after `hey -n 5000 -c 50 -H "X-API-Key: $K" "$U"` — origin CPU should stay ≈ idle; capture the `/proc/1/status` ctxt-switch delta to show the GIL path is bypassed. -**Rollback:** delete cached locations / `proxy_cache off` globally; nginx falls back to pass-through with zero app change. - -## 1.5 Phase P2 — port scheme, worker containers, keepalive - -**Problem (verified):** `config.py:41,53,62` all default `PORT=3200` and `docker-compose.yml:48-50` publishes three host mappings that all default to 3200; in-process `getApp(3200)` collapses all services into one app/thread (`service_manager.py:19-22`). nginx must not assume that forever. - -1. Distinct defaults: `USER_PORT=3200`, `STOCKSAPI_PORT=3201`, `ORUNMILA_PORT=3202`, matching compose mappings; existing `.env` values still win; update `.env.example`/README. -2. Worker container behind a compose profile so default `up` is unchanged: -```yaml - stocksapi: - build: { context: ., dockerfile: Dockerfile } - profiles: ["workers"] - restart: always - environment: - - STOCKSAPI_ENABLED=TRUE - - USER_ENABLED=FALSE - - ORUNMILA_ENABLED=FALSE - - SCRAPER_ENABLED=FALSE - - STOCKSAPI_PORT=3200 - - TZ=America/Sao_Paulo - # ... mysql env passthrough - volumes: [ ".:/app", "workspaces:/data/workspaces" ] -``` - `run.py:52` already honors `{SVC}_ENABLED`, so only stocksapi initializes → its own process, own GIL. `upstream stocks_api` then gains `server stocksapi:3200` (and `api:3201`, or drops `api` after cut-over). -3. Keepalive already configured; verify reused connections (`ss -tn state established '( dport = :3200 )'`). - -**Verify:** `docker compose --profile workers up -d`; `/stocks/health` served from `stocksapi` (check `X-Forwarded-For` in app log); `docker stats` shows `api` idle, `stocksapi` handling misses. - -## 1.6 Phase P3 — remote VPS upstreams + health strategy - -```nginx -upstream stocks_api { - least_conn; - server api:3200 max_fails=3 fail_timeout=10s; - server 203.0.113.10:3200 max_fails=3 fail_timeout=10s; # vps-1 - server 203.0.113.11:3200 max_fails=3 fail_timeout=10s; # vps-2 - keepalive 32; -} -``` -If VPS hostnames rotate, add `resolver 127.0.0.11 valid=10s;` and nginx 1.27 `server name:port resolve;` (document as optional). - -Add to `stocks-proxy.conf`: -```nginx -proxy_next_upstream error timeout http_502 http_503 http_504; -proxy_next_upstream_tries 2; -``` -Do **not** add `non_idempotent` — a retried POST across nodes can double-execute. - -**Active-check gap (OSS nginx has none):** - -| Option | Mechanism | Cost | When | -|---|---|---|---| -| Passive (baseline, chosen) | `max_fails=3 fail_timeout=10s`; eject, re-probe at `fail_timeout` | none | P3 default | -| `proxy_next_upstream` | retry next server on error/timeout/502-504 | none; may double-hit origin | add in P3 | -| External prober / OpenResty `lua-resty-healthcheck` | active probes + reload/ejection | ops complexity, new runtime | when a black-hole window >30s is observed (esp. cache-writer death) | -| nginx Plus `health_check` | native active checks | license | only if already bought | -| L4 LB / keepalived+VIP in front of nginx | HA for nginx itself | infra | when the edge becomes HA-required | - -`proxy_cache_use_stale ... error timeout` means a dead upstream serves stale cache rather than failing — preferred for read paths. - -## 1.7 Phase P4 — handoff design (no code in this plan) - -**TODO 13 — drop `{service}_HOST`/`{service}_PORT` without breaking today's switching.** Callers that must keep working: `run.py:52-56` (local-init branch), `run.py:95-98` (`/status`), `main/utils/connectivity.py:45-46`, any peer-URL builder. -1. Add `ROUTING_MODE = legacy | nginx` (default `legacy`) and optional per-service `*_BASE_URL`. -2. One resolver helper: `BASE_URL` if set, else `http://{HOST}:{PORT}` — nothing breaks. -3. Flip `ROUTING_MODE=nginx` per box; `HOST`/`PORT` become bind-only. -4. After all boxes are `nginx` and no caller reads `{svc}_HOST`, delete the fields + `LOCALHOST_ADDRESSES` (`config.py:101`). `run.py` local-init path goes last; `/status` must still report per-service health. -Rollback: set `ROUTING_MODE=legacy` (addresses still present until step 4). - -**Redis (TODO 15):** replace cashews `mem://` (`stocksapi_controller.py:17`) with `redis://redis:6379` so the endpoint TTL cache is shared across workers; replace `flock`/`CACHE_LOAD_LOCK` (`cache.py:37,169-183`) with `SET cache_refresh_lock NX PX 900000` + owner-token release. **Swarm at 5+:** upstream becomes generated config (compose replicas / consul-template); with >1 nginx, either accept per-node caches or move response cache to a shared tier — decide at 5+, not now. - -## 1.8 Quota / rate-limit semantics after caching - -| Layer | Counts | Scope | Today | After P1 | Recommendation | -|---|---|---|---|---|---| -| nginx `limit_req` (`stocks_key`) | every request incl. HIT | per key, 300/min + burst 50 | new | uniform ceiling, protects nginx CPU | keep | -| app `verifyAPIKey` quota (`key.py:72-78`) | only MISS | per key, monthly `requestLimit` (10k STARTUP) | all requests | **misses only** | redefine as "origin data requests"; document in pricing | -| app per-minute tier (30 STARTUP) | — | per key | **not implemented** | still not implemented | implement in app/Redis (§3.5b) | -| slowapi `limiter` (`logging_config.py:15`) | per remote IP | global | exists, not on `/stocks` | unchanged | leave; do not key `/stocks` on IP (would 429 whole nginx) | -| Redis counters (P4) | choose | per key + tier | none | accurate 30/300 + monthly | build in P4 | - -**Product decision required:** with P1, a STARTUP client can exceed 30/min whenever responses are cached. If the 30/min promise is contractual, enforce it with a key→tier map backed by shared store (nginx keys are unprefixed `token_urlsafe(32)`, `key.py:30` — no tier derivable at nginx) or document that hits are served by the edge. - -## 1.9 Anti-scraping note (TODO 17) - -The cache key is `(api_key, x-mcp, request_uri)`. Randomizing `/stocks` query params (UUID routing) would make **every request a MISS** and destroy the cache. Randomize at the **page layer** (HTML/JS route consuming `/stocks`), keep the `/stocks` data plane deterministic, and let nginx `limit_req` + app keys absorb direct scraping. TODO-16 (single-tab cookie session) likewise belongs at the page layer, never in the cache path. - -## 1.10 Edge cases / risks (implementation) - -- **Empty `$http_x_api_key`** → one shared key namespace, but all such requests are 401 (uncached) → all hit origin. Verify `limit_req`'s empty-string bucket does not unfairly 429 anonymous traffic; if it does, give anonymous its own low-rate zone. -- **TTL drift:** nginx TTLs duplicate app decorator TTLs — one review checklist for both. -- **Large `/cotations` bodies** (10y, many tickers): `proxy_max_temp_file_size 512m`, disk `max_size 2g`; watch eviction via `upstream_cache_status`. -- **`proxy_cache_lock` + slow origin:** 20s lock timeout means waiters fall through to origin; watch `urt`. -- **`X-MCP` determinism:** only the exact value `true` mutates the body (`stocksapi_service.py:17`); `X-MCP: TRUE` is a separate non-compacted entry — matches app behavior. -- **Port 3200 collision** is the failure mode of P2 if two roles land on one box — one role per box preferred (§3.2). - ---- - -# Part 2 — Benchmark plan - -## 2.0 Grounding: what the code actually does - -**0.1 Two independent cache layers — measure them separately.** - -| Layer | Implementation | Python in path on HIT? | -|---|---|---| -| nginx response cache | not built yet | **No** — served from disk, uvicorn never contacted | -| app cache `@endpointCache` | `main/app/stocks_api/sync_cache.py:14-32`, cashews `mem://` (`stocksapi_controller.py:17`) | **Yes** | - -So "warm hit" is ambiguous: **H1 is split into H1a (nginx HIT) and H1b (app HIT)**. - -**0.2 An app-cache HIT still pays two heavy costs.** -- `sync_cache.py:30` — `return asyncio.run(cachedCall())`: **a new event loop is created per request** even on a pure hit; endpoints are sync `def` (`stocksapi_controller.py:85,150,220,276`) so FastAPI runs them in the anyio threadpool (~40 threads) and `asyncio.run()` inside a worker thread is the expensive part. -- Dependency `verifyAPIKey` (`key.py:48-90`) runs on **every** request reaching uvicorn: full-table scan `db.query(StocksAPIKey).all()` (`:57`) + atomic quota `UPDATE` + `commit()` (`:72-78`). The app cache does not skip auth. -Consequence: **nginx** removes Python from the path; the **app** layer only removes pandas query + ORJSON serialization. - -**0.3 Quota self-throttle:** `verifyAPIKey` 429s once `currentUsage >= requestLimit` (`key.py:62,80`). Any burst hits this within seconds unless the perf key has a huge `requestLimit` or `KEY_SYSTEM=false`. Scenario prerequisite, not a footnote. - -**0.4 Declared vs effective TTL (H5 trap):** - -| Endpoint | app TTL | `Cache-Control` | nginx effective if it honors upstream | -|---|---|---|---| -| `/stocks/historical` | 1h (`:84`) | `max-age=300` (`:141`) | **5m**, not 1h | -| `/stocks/fundamental` | 5m (`:149`) | `max-age=300` (`:211`) | 5m | -| `/stocks/cotations` | 5m (`:219`) | `max-age=300` (`:267`) | 5m | -| `/stocks/cotations/live` | 15s (`:275`) | `max-age=15` (`:312`) | 15s | -| `/stocks/fields` | none | none | `proxy_cache_valid` only | - -**0.5 GIL measured through one PID:** `service_manager.py:47-51` starts one `threading.Thread` per service port; all uvicorn servers share one process and one GIL (`run.py:46-61`). `/proc/1/status` context-switch counters inside the `api` container aggregate **all** services — that single file is the GIL-contention instrument for H3/S5. - -**0.6 TODO 14 is unbuilt:** `/status` (`run.py:77-108`) reports uptime/DBs/services — no latency, no context switches. This benchmark defines the baselines and metric shapes `/status` will later expose (§2.8). - -## 2.1 Hypotheses - -- **H1a (nginx HIT):** during a 100% nginx-HIT run, uvicorn CPU is independent of RPS (≈ idle); nginx `upstream_requests` counter stays flat. Falsifier: CPU scales with RPS, or upstream requests increment on HIT. -- **H1b (app HIT, nginx bypassed):** app-HIT costs strictly less than app-MISS but **not ≈0** (residual = `asyncio.run()` + `verifyAPIKey` DB scan+write). Falsifier: app-HIT ≈ app-MISS → the app cache adds nothing (a finding). -- **H2:** nginx-HIT RPS at fixed concurrency ≥ **10×** direct-to-uvicorn baseline for the same query, p99 equal or better. Falsifier: <2× → nginx adds a hop without offloading the bottleneck. -- **H3 (the GIL metric):** a non-stocks endpoint probed during a stocks burst shows p99 returning toward its no-load p99 after nginx absorbs the burst. Falsifier: unchanged cross-service p99 → burst was not GIL-bound. -- **H4:** hit ratio ≥ target on a realistic MCP workload (Zipfian ticker popularity; `/stocks/fields` is nginx-only). Falsifier: HIT% below target → key fragmentation dominates. -- **H5:** served body age ≤ effective TTL + margin with `use_stale` + `background_update`; first post-expiry request returns `STALE` + schedules `UPDATING`. - -## 2.2 Tooling - -**Primary runner — k6 via Docker (`grafana/k6`)**; scripts are JS with `options` + `handleSummary` JSON export. -```bash -# Windows/Docker Desktop: do NOT use --network host (the Linux VM does not share -# the Windows host loopback). Either run k6 as a compose service targeting -# http://nginx:80, or target the host explicitly: -docker run --rm -i -v "%CD%/tests/perf/nginx:/scripts" grafana/k6:latest \ - run --summary-export=/scripts/out/s2_warm.json /scripts/scenarios/s2_warm.js \ - -e BASE_URL=http://host.docker.internal:8080 -e API_KEY=$env:PERF_API_KEY -``` -Caveat: PowerShell uses `$env:VAR` / `"%CD%"`, Git-Bash uses `$VAR` / `$(pwd)`. `--network host` silently fails to reach the Windows host — the #1 time-waster on this box. - -**Fallbacks:** `hey` (`docker run --rm --network williamyeh/hey -n 20000 -c 50 -H "X-API-Key: $KEY" "http://nginx/stocks/cotations?search=PETR4"`) and `wrk` (`skandyla/wrk -t4 -c50 -d30s --latency`). - -**X-Cache-Status distribution:** -```bash -curl -s -o /dev/null -w '%header{x-cache-status}\n' -H "X-API-Key: $K" "$U" # per request -seq 1 20000 | xargs -P32 -I{} curl -s -o /dev/null -w '%header{x-cache-status}\n' \ - -H "X-API-Key: $PERF_API_KEY" "$U" | sort | uniq -c | sort -rn # high rate -``` -Vocabulary: `HIT, MISS, BYPASS, EXPIRED, STALE, UPDATING, REVALIDATED`. If `STALE`/`UPDATING` never appear, `proxy_cache_use_stale updating` is missing. - -**CPU during burst (never idle — 1.68 GB idle is not peak):** -```bash -docker stats --no-stream --format "{{.Name}},{{.CPUPerc}},{{.MemUsage}},{{.MemPerc}}" api nginx -``` -Sample ~1/s for the run duration; keep max + mean. `CPUPerc` is % of one core and can exceed 100%. - -**Context switches (GIL instrument) — Windows has no pidstat/vmstat, run inside the container:** -```bash -docker exec api sh -c "pidstat -w -p 1 1 30" # if sysstat present -docker exec api sh -c "vmstat 1 30" # cs column -# fallback without sysstat: diff /proc/1/status twice -docker exec api sh -c "grep -E 'voluntary|nonvoluntary' /proc/1/status" -``` -Caveats: `api` PID 1 aggregates all services (intended for the GIL metric); Docker Desktop counters are VM-visible; `docker stats` granularity ~1s → use ≥30s bursts. - -**nginx `stub_status`:** `location = /nginx_status { stub_status; allow 127.0.0.1; deny all; }` → reads `Active connections`, `accepts`, `handled`, `requests`. - -**Scenario layout (planned paths, nothing created):** -``` -tests/perf/nginx/ - scenarios/ s1_cold.js s2_warm.js s3_rotation.js s4_params.js s5_mixed.js s6_ttl.js s7_gzip.js - lib/ tickers.js common.js - tickers.txt - collect.sh / collect.ps1 ; run_all.sh / run_all.ps1 - nginx.conf ; README.md -``` - -## 2.3 Scenarios - -All write `out/__.json` (+ sampled CSV); `mode` ∈ {`direct`,`nginx`}. - -- **S1 cold single query** — purge both caches; one GET through nginx; `MISS`; measure first-fill cost (auth DB, pandas, ORJSON, cache write). Repeat N=200 distinct cold keys for a distribution. -- **S2 warm repeat single query** — fixed query, `vus=50,duration=60s`, nginx cache warm → H1a + H2. Also run the **direct** variant to isolate layer contributions. -- **S3 ticker rotation (fragmentation probe)** — rotate M distinct tickers, same params (each new `search` = new key). Report unique keys, HIT%, RPS(rotation)/RPS(S2); run M ∈ {10,100,500,1000} for the fragmentation curve. This quantifies the known ticker-rotation cache-defeat. -- **S4 parameter variance** — vary `orderBy`, `limit` ∈ {10,100,1000}, `compact` ∈ {false,true}, `dates` on a fixed ticker set → Cartesian blow-up; HIT% vs variant count. -- **S5 mixed concurrent (THE GIL metric)** — parallel: stocks burst (S2/S3 shape) + a constant 5-VU probe against a non-stocks endpoint on the same process (`:8000/status` does DB round trips; and/or USER `/health`). Measure probe p50/p95/p99 during burst vs idle, `api` ctxt-switch rate, `api` CPU. Run `direct` (baseline degradation) and `nginx` (relief); H3 is the delta. -- **S6 TTL expiry / stale-while-revalidate** — warm, idle past the effective TTL, fire one request → expect `STALE` + background `UPDATING`; next → `HIT`; assert body age ≤ TTL+margin against a direct-fetch oracle. Market-hours caveat: outside 10:00–17:30 BRT `/cotations/live` returns the last closing price (`stocksapi_controller.py:310-311`) → assert on `X-Cache-Status` only. -- **S7 gzip on/off** — measure bytes/ratio, TTFB/p95, `api` CPU (must stay flat on HIT), and that `Accept-Encoding` does not split the cache key (`Vary` present via `gzip_vary on`). - -## 2.4 Protocol - -1. Same box, before/after; identical compose, DB, feather state. -2. Warm-up 30s at ≤10% VUs, discard. -3. 3 repeats; median + min/max; reject a repeat if `cacheAgeHours` (`/stocks/health`, `stocksapi_controller.py:33`) crosses a 12h rebuild boundary. -4. Fixed seeded tickers (`tests/perf/nginx/tickers.txt`); Zipfian for S5/H4, uniform rotation for S3; no unseeded RNG. -5. Pin `PERF_API_KEY` with raised `requestLimit` (or `KEY_SYSTEM=false`); record which mode; `KEY_SYSTEM=true` is the realistic default for H1b/H3. -6. Record B3 session state + run clock for every row. -7. **Cache flush procedure (state must be defined, not assumed):** nginx → `docker exec nginx sh -c "rm -rf /var/cache/nginx/stocks/*"` (or restart if the volume is ephemeral); app cashews → `docker compose restart api` (clears in-process cache AND reloads feather — slow); feather/DB untouched, note `cacheAgeHours`. A HIT% number without its flush provenance is meaningless. -8. Order: `direct` baseline → flush → `nginx` treatment; flush between reps; never interleave unflushed. - -## 2.5 Metrics - -RPS; p50/p95/p99; error rate (<0.1%); `api` CPU% (burst); `nginx` CPU%; RAM during burst; context switches/s; `X-Cache-Status` mix; upstream requests (counter vs total); cache-key cardinality (MISS count); gzip ratio; staleness age; cold latency. Every row carries `timestamp, mode, flush, cacheAgeHours, marketOpen, KEY_SYSTEM, tickersRef, rep`. - -## 2.6 Acceptance thresholds — **ALL PROPOSED, freeze after first real run** - -| Hypothesis | Metric | PROPOSED | Rationale | -|---|---|---|---| -| H1a | `api` CPU% during 100% HIT at ≥1000 rps | within +5 pp of idle; upstream_requests flat | HIT must not touch uvicorn | -| H1b | app-HIT vs app-MISS per-request CPU | ≤60% of miss but >5% | residual = asyncio.run + auth DB | -| H2 | S2 RPS vs direct | ≥10×, p99 ≤ baseline, errors <0.1% | removes auth DB + event loop + serialization | -| H3 | S5 probe p99 during burst | ≤ baseline +20% | GIL relief is the whole argument | -| H3 | ctxt-switch rate | ≥30% reduction vs direct | objective GIL proxy | -| H4 | HIT% Zipf workload | ≥70% | realistic MCP repetition | -| H4 | HIT% uniform rotation M≥500 | ≥40% (report actual) | fragmentation is the finding | -| H4 | HIT% pure repeat | ≥95% | sanity ceiling | -| H5 | served body age | ≤ effective TTL + 5s; STALE+UPDATING observed | no stale beyond TTL | -| S3 | RPS(rotation)/RPS(S2) | report; ≥0.4 at M=100 | quantifies fragmentation | -| S6 | STALE-hop p99 vs clean HIT | ≤ +10 ms | stale-while-revalidate near-free | -| S7 | gzip byte reduction | ≥70% JSON; api CPU flat; Vary present, key not split | nginx compresses, not uvicorn | - -## 2.7 Results doc layout - -``` -docs/benchmarks/nginx/ - README.md PLAN.md nginx.conf.snapshot - runs/2026-XX-XX_/{meta.json, raw/*.json, summary.md} -``` -`README.md` summary table: scenario × mode → RPS, p50, p95, p99, api CPU%, cs/s, HIT%, RAM, verdict. Raw naming `__.`, timestamped run dir, never overwrite a previous run. - -## 2.8 Feeding `/status` (TODO 14) - -This benchmark produces the two baselines `/status` needs: -1. **Per-service p99** — bounded rolling duration histogram per service in a middleware; surface `latency: {p50,p95,p99}`. S5 probe p99 becomes the alert baseline: *"USER p99 during stocks burst ≤ idle p99 + H3 headroom"*. -2. **Context-switch rate** — `/status` reads its own `/proc/self/status` voluntary+nonvoluntary counters, caches last sample + timestamp, reports `ctxSwitchesPerSec`. The direct-vs-nginx delta sets the threshold: *a burst pushing cs/s above the benchmarked nginx ceiling means the burst is leaking past the cache to the GIL*. - -## 2.9 Benchmark risks - -- Cache key excluding `X-API-Key` would serve one key's response to another and short-circuit usage accounting (`key.py:72-78`) — the plan's §1.4 key includes it; the benchmark must verify tenant isolation explicitly. -- Warm app cache can mask a "cold" S1 → always flush per §2.4.7 and record it. -- `asyncio.run` per request (`sync_cache.py:30`) may dominate the app-HIT cost — H1b is expected to reveal a large residual; that is a finding, not a failed benchmark. -- 12h feather rebuild invalidates app cache mid-run → guard with `cacheAgeHours`. -- Any 429 = aborted run, not a result. -- `.all()` scan (`key.py:57`) grows with the key table → measured auth cost is a lower bound. - ---- - -# Part 3 — Future scaling evolution + risks - -## 3.0 Verified ground truth - -| Fact | Evidence | -|---|---| -| All three services default to the same port 3200 | `config.py:41,53,62` | -| Services are uvicorn threads in ONE process, shared GIL | `service_manager.py:49-51` | -| Boot selects local-vs-remote by HOST string | `run.py:51-56`; `LOCALHOST_ADDRESSES` `config.py:101` | -| Per-service env gates already exist | `config.py:39,51,60` (`USER_ENABLED`, `STOCKSAPI_ENABLED`, `ORUNMILA_ENABLED`) | -| Single compose `api` service; host ports collide on 3200 | `docker-compose.yml:41-50` | -| Feather cache: 6h mtime staleness, 12h scheduled refresh, per-host `flock` | `cache.py:36,221-227,169-183` | -| No `CACHE_VERSION` constant exists (only `PRESORTED_FLAG_KEY` schema metadata) | `cache.py:38,134`; grep found none in `main/` | -| Endpoint cache is in-process cashews `mem://` | `stocksapi_controller.py:17`, `sync_cache.py:21-27` | -| Rate limiting is in-process slowapi; monthly quota is atomic DB counter | `service_manager.py:24`, `key.py:72-81` | -| Sandbox model has `userId` + `sandboxId`, NO host column | `main/models/sandbox.py:8-11` | -| `FORGEVM_URL` is a single static URL today | `config.py:65` | -| Named constraint: 1 nginx box = single failure domain | accepted now, recorded R1 | - -## 3.1 Target topology - -**1 box (today + nginx front door):** nginx :80/:443 fronts `/` → `api:8000` and `/stocks/*` → `api:3200`; the single `api` process holds USER/STOCKS_API/ORUNMILA (one GIL) + scraper + db + forgevm + searxng. Cache writer = the one process. - -**2 boxes (first extraction — STOCKS_API):** -``` -NODE A NODE B -nginx :80/443 api container: STOCKSAPI_ENABLED=TRUE, - / -> A:8000 others FALSE - /stocks/* -> B:3200 (pinned IP) STOCKS_API :3200 (own GIL) -api: USER + ORUNMILA :3200 feather writer (Redis lock owner) -db primary, forgevm, searxng -``` -Why STOCKS_API first: pure HTTP, self-contained router (`stocksapi_service.py:30-45`), owns the cache scheduler, and moving it removes feather build/load + `rebuildAbbrevs()` (`cache.py:229-246`) GIL contention from USER/ORUNMILA. - -**3 boxes (ORUNMILA + ForgeVM split):** A = nginx edge + USER + db primary (+replica warm); B = STOCKS_API + feather writer (Redis lock owner); C = ORUNMILA + forgevm + workspaces volume. Keep ForgeVM co-located with ORUNMILA (sandbox exec is chat-latency-bound; `workspaces` is local, `docker-compose.yml:34,66`). ForgeVM never sits behind the public nginx. - -## 3.2 Worker-container extraction - -Same image + env gate = a worker with its own GIL; no new Dockerfile. - -| Env var | Node A (edge+USER) | Node B (STOCKS_API) | Node C (ORUNMILA) | Notes | -|---|---|---|---|---| -| `USER_ENABLED` | TRUE | FALSE | FALSE | `config.py:39` | -| `STOCKSAPI_ENABLED` | FALSE | TRUE | FALSE | `config.py:51` | -| `ORUNMILA_ENABLED` | FALSE | FALSE | TRUE | `config.py:60` | -| `SCRAPER_ENABLED` | TRUE (writer node only) | FALSE | FALSE | `config.py:77`; exactly ONE scraper fleet-wide | -| `{svc}_HOST` | localhost | localhost | localhost | phase 1 still local-init (`run.py:53`) | -| `{svc}_PORT` | per-role | 3200 | 3200 | one role per box removes the collision entirely | -| `STOCKS_MYSQL_HOST`/`USER_MYSQL_HOST` | db host | db host (remote ok) | db host | `config.py:26,32` | -| `ROUTING_MODE` (new) | legacy→nginx | same | same | §3.4 | - -Extraction order + acceptance: **1. STOCKS_API** (`/stocks/health` → `cacheReady:true`; Node A `/status` `run.py:87-99` shows stocks_api local and B reachable; feather built on B). **2. ORUNMILA + ForgeVM** (chat tool round-trip; sandbox created on C). **3. USER last** (most coupled: auth/sessions/JWT; login+me round-trip). **4. SCRAPER**: never two writers (exactly one node logs scraper init). - -## 3.3 nginx upstream evolution — validated against the user's plan - -**Recommend pinned static upstreams (`BoxIP:publishedPort`) below 5 nodes; Swarm routing mesh at ≥5.** The pinned-address idea is correct now. - -```nginx -upstream stocks_api { server 10.0.0.12:3200 max_fails=3 fail_timeout=30s; keepalive 32; } -upstream user_api { server 10.0.0.10:3200 max_fails=3 fail_timeout=30s; keepalive 32; } -``` - -| Criterion | Pinned static (chosen) | Swarm mesh (≥5) | -|---|---|---| -| `config.py` URL-switch preserved | Yes — host:port still meaningful | No — becomes VIP/DNS | -| Debuggability | Trivial (`nginx -T`, ping IP) | Overlay + VIP indirection | -| Node add/remove | Manual edit + reload | Automatic reschedule | -| Node failure | `max_fails` ejects; others serve | Mesh re-routes | -| Extra surface | None | Overlay net, gossip, ingress | -| ForgeVM affinity | Easy (pin host) | Mesh breaks affinity | -| Compose-compatible | Yes | Rewrite to stack files | - -Price of static upstreams: **no auto-reschedule** (a human edits nginx when a node joins/leaves) — acceptable ≤3 boxes, and it is what keeps today's gradual-extraction path intact. Health: passive + compose healthchecks; promote to OpenResty only if a black-hole window >30s is observed (see §1.6 options table). Add `proxy_connect_timeout 2s; proxy_read_timeout 60s;` and never retry `non_idempotent`. - -## 3.4 TODO 13 migration — drop `{service}_HOST`/`{service}_PORT` - -End state: the app no longer knows peer addresses; nginx owns routing; services call an internal base URL. Design: `ROUTING_MODE = legacy | nginx` (default `legacy`) + optional `*_BASE_URL`. -- `legacy`: current behavior (`{svc}_HOST`/`{svc}_PORT` + `run.py:53`). -- `nginx`: derive base URLs from `MANSA_INTERNAL_BASE_URL` (e.g. `http://nginx:80`); `HOST`/`PORT` remain bind-only; `run.py:55` `checkServiceConnection` dropped (nginx fails closed); `{svc}_ENABLED` stays as the boot gate in both modes. -Transition: (1) introduce flag default legacy; (2) nginx in front, still legacy; (3) flip per box; (4) delete the properties + `LOCALHOST_ADDRESSES` in a cleanup commit. Rollback: flip back to legacy (addresses still present until step 4). - -## 3.5 Redis — exactly two jobs - -The endpoint cache stays `mem://` and feather stays local files; Redis does **only**: - -**(a) Cross-host rebuild lock.** `flock` (`cache.py:179`) + `CACHE_LOAD_LOCK` (`cache.py:37`) are per-host → two hosts can build concurrently at box #2. Use `SET stocks:cache:rebuild NX EX 600`; release only if the value matches (Lua compare-and-del) so a timed-out owner cannot free a successor's lock; acquire before `tryBuildLock` (`cache.py:264-280`) and skip with "another host is building" (current `:268` behavior) if not acquired. Add an explicit `CACHE_VERSION` constant (does not exist today) embedded in feather metadata: readers load only on match, else rebuild; bump = fleet-wide invalidation and the lock guarantees exactly one rebuilder while others serve their stale feather. - -**(b) Rate limiting (30/300 rpm tiers, TODO lines 56/67).** Today in-process slowapi = N× quota at N instances; the DB counter (`key.py:72-81`) is monthly calls, already cross-instance correct. - -| Approach | Per-key tier | Cross-instance | Verdict | -|---|---|---|---| -| nginx `limit_req` keyed `$http_x_api_key` | needs key→tier map; fixed window; per-nginx zone | No | coarse edge guard only | -| Redis token bucket (Lua) keyed `apiKey` | Yes (30/300 from the key row) | Yes | **recommended authoritative rpm limiter** | -| slowapi in-process | Yes | No | keep off the cross-box path | - -Roadmap triggers: add Redis **before box #2** (lock required); add the token bucket with the first multi-instance STOCKS_API. Neither needed on a single box. - -## 3.6 Cache strategy across boxes - -**Rebuild-on-version per box. Not rsync, not NFS.** Each node builds its own feather from `stocks_db` (deterministic, `cache.py:78-166`), gated by the Redis lock + `CACHE_VERSION`; the lock holder is the writer, others read. -**Staleness exposure (named):** a reader node serves its local feather until its next refresh (`cache.py:254` 6h staleness, `:221-227` 12h scheduler) or a version bump → worst case ~6h stale fundamentals. Live quotes are fetched at source (`stocksapi_controller.py:274`) and unaffected. Accepted. -**Do NOT:** NFS for `/app/cache` (the writer relies on same-FS `os.replace` atomicity `cache.py:163-165` and `flock`; NFS breaks both and adds a SPOF); round-robin over ForgeVM hosts (breaks `/workspace` affinity); a single shared feather file (contention + SPOF). Upgrade path if rebuild cost ever dominates: version-gated rsync push from writer → readers (not now). - -## 3.7 Autoscaling story (TODO 11) - -Proposed per-role triggers: **STOCKS_API** — `upstream_response_time` p95 >1.5s for 5 min or upstream 5xx >1% (nginx access log + `stub_status`); **ORUNMILA** — in-flight concurrency / sandbox queue depth; **USER** — DB pool saturation (`pool_size=20,max_overflow=40`, `config.py:106-107`), i.e. scale users only after the DB is the bottleneck. -Stays manual (explicitly): nginx upstream entries, MySQL replica promotion, ForgeVM host membership. The only automatic election is the cache-writer (Redis lock). "Autoscale" today = provision a box with the right env matrix + add a pinned upstream; real auto-provisioning is a later OpenResty/consul-template step — do not build it yet. - -## 3.8 ForgeVM interplay (TODO 12) - -Different plane from the stocks/nginx layer. Add `hostId` (+ optional `forgevmUrl`) to `orunmila_sandboxes` (`main/models/sandbox.py:8-11` has only `userId`+`sandboxId`). **Spawn-time routing:** pick a host once at sandbox creation (`main/app/orunmila/sandbox.py:110`), persist `hostId`, route all later exec/read/write to that host's `forgevm_url` (read from the row instead of static `Config.FORGEVM_URL`, `config.py:65`; tools at `main/app/orunmila/tools.py:106-152`). No per-request round-robin, no live migration. The public nginx fronts stocks/user HTTP only; ForgeVM control plane is app-internal (ORUNMILA → forgevm:7423) and shares only the machine, not the request path. - -## 3.9 Risk register - -| # | Risk | Impact | Likelihood | Mitigation | Trigger/Owner | -|---|---|---|---|---|---| -| R1 | Single nginx box = SPOF | Total outage | Med (accepted) | Name it; 2nd nginx + keepalived/VIP at box #3 | edge owner | -| R2 | **Quota-on-miss:** nginx HIT bypasses `key.py:72-81` → monthly counter under-counts | Billing/support disputes | High | Decide: edge forwards hit counter, or accept and bill on app-seen calls | product + edge | -| R3 | Stale ≤ TTL (6h fundamentals) on reader nodes | Users see old data | Med | `CACHE_VERSION` + Redis lock; surface `cacheAgeHours` on `/stocks/health` | cache owner | -| R4 | Key fragmentation: `compact`, `X-MCP` rewrite, abbrev, anti-scrape UUIDs mutate the key | Hit-rate collapse | High | Keep `/stocks` keys canonical; sorted normalized args; strip/normalize UUID+tracking params; never let anti-scrape UUIDs enter the cache key | edge + app | -| R5 | Anti-scraping UUID interplay (TODO 17) | Scraping protection silently breaks caching | Med | Design UUID at serializer/response layer; if in path, exempt from `proxy_cache_key` | app | -| R6 | Port collisions: all roles default `:3200` | Boot failure / wrong service | High at 2 roles/box | One role per box; or distinct `{svc}_PORT` | deployer | -| R7 | `flock`/`CACHE_LOAD_LOCK` per-host | Concurrent builds, thrash | High at box #2 | Redis `SET NX EX 600` (§3.5a) | cache owner | -| R8 | In-process slowapi = N× quota | Over-limit traffic at N≥2 | High | Redis token bucket (§3.5b) | edge/app | -| R9 | GIL contention on shared box | One service stalls all | Med | Extract STOCKS_API first; feather load/`rebuildAbbrevs` in-proc | scaling owner | -| R10 | Restarting the cache-writer mid-build | Orphan Redis lock until TTL; deploy races | Med | Never restart the writer while it holds the lock; ownership token + TTL recovers; deploy readers first | ops | -| R11 | `subprocess.run` build blocks the calling daemon thread (`cache.py:271-278`) | Refresh thread stuck | Low | Already isolated in subprocess; Redis lock prevents duplicates | cache owner | -| R12 | Static upstreams: node add = manual edit | Human error / drift | Med | Template upstream file + `nginx -t && nginx -s reload` in the deploy script | ops | -| R13 | `proxy_next_upstream` on POST | Double execution | Med | Exclude `non_idempotent` | edge | -| R14 | MySQL becomes the bottleneck | Latency | Med (later) | Ladder: measure → vertical → read replicas → sharding last | db owner | -| R15 | ForgeVM round-robin temptation | Broken `/workspace` affinity | Med | Host-pair + spawn-time routing only (§3.8) | app | - -## 3.10 Migration sequence + verification - -| Step | Action | Verify | Pass | -|---|---|---|---| -| 0 | Baseline | `docker compose up -d --build`; `curl -s localhost:8000/status` | `status: healthy`, 3 services | -| 1 | nginx front door (`/`→api:8000, `/stocks/*`→api:3200) | `nginx -T`; `curl -s localhost/stocks/health` | `cacheReady:true` | -| 2 | STOCKS_API worker on Node B (env gate) | `curl -s http://B:3200/stocks/health`; `curl -s A:8000/status` | `stocks_api: local` | -| 3 | Pin upstreams `BoxIP:port` | `nginx -T \| grep -A3 upstream`; GET `/stocks/historical` via nginx | 200 via B | -| 4 | Redis rebuild lock | 2nd `SET ... NX EX 600` returns nil; logs "another host is building" | one builder | -| 5 | `CACHE_VERSION` gate | bump version, restart writer; other node rebuilds once | no duplicate builds | -| 6 | Rate limiting | 31st req/min on a 30-rpm key | 429 | -| 7 | `ROUTING_MODE` flip per box | curl each role through nginx; `/status` healthy | all `nginx` | -| 8 | ForgeVM `hostId` + spawn-time routing | create sandbox → row has `hostId`; exec routes there; kill host → respawn on peer | affinity held | -| 9 | Cleanup: delete `{svc}_HOST/PORT`, `LOCALHOST_ADDRESSES` | `ruff check . && pytest`; no peer-address reads in `run.py` | grep clean | - -Every mutation step is followed by `.\ci.ps1` before commit (project rule). - ---- - -# Open decisions (blocking or product-owned) - -1. **R2 quota-on-miss** — bill on app-seen calls, or instrument edge cache hits? Blocks enabling `proxy_cache` in production with contractual quotas (§1.8, §3.9 R2). -2. **Per-tier per-minute limit (30 vs 300)** — no nginx-only solution with unprefixed keys (`key.py:30`); decide Redis token bucket vs documented edge behavior (§3.5b). -3. **Active health checks** — stay passive until a writer black-hole >30s is observed, or adopt OpenResty now? (§1.6, §3.3) -4. **Second nginx + VIP** — at which box count does R1 stop being acceptable? -5. **`hostId` on `orunmila_sandboxes`** — confirm the schema migration before any ForgeVM scaling code (§3.8). - -# Next actions (not in scope here) - -1. Answer the five open decisions. -2. Approve P0/P1 (nginx service + cache locations) — smallest independently deployable step, zero app mutation, instant rollback. -3. Run the benchmark plan against P1 and freeze the PROPOSED thresholds (§2.6) into the results doc. -4. Only then: P2 worker container, P3 remote VPS, P4 routing/Redis refactor. From 8a0654c738ca04684b806ae03b5451d304df4923 Mon Sep 17 00:00:00 2001 From: heitorrosa <76885858+heitorrosa@users.noreply.github.com> Date: Tue, 29 Sep 2026 18:53:47 -0300 Subject: [PATCH 17/20] silence bandit false positives with nosec annotations --- main/app/stocks_api/cache.py | 4 ++-- main/controller/authentication_controller.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/main/app/stocks_api/cache.py b/main/app/stocks_api/cache.py index 4a2c0607..07fa62b4 100644 --- a/main/app/stocks_api/cache.py +++ b/main/app/stocks_api/cache.py @@ -135,7 +135,7 @@ def buildFeatherCache(engine: Engine | None = None): schema = pa.schema(fields).with_metadata({PRESORTED_FLAG_KEY: b"1"}) sink = pa.OSFile(str(tmpMain), "wb") writer = pa.ipc.new_file(sink, schema) - assert writer is not None + assert writer is not None # nosec: B101 mypy narrowing, writer assigned just above table = pa.Table.from_pandas(chunk, schema=schema, preserve_index=False) writer.write_table(table) total += len(chunk) @@ -150,7 +150,7 @@ def buildFeatherCache(engine: Engine | None = None): try: resolvedEngine.dispose() except Exception: - pass + pass # nosec: B110 dispose is best-effort, original error re-raised below raise finally: if writer is not None: diff --git a/main/controller/authentication_controller.py b/main/controller/authentication_controller.py index 5b5342cc..c91ed9f6 100644 --- a/main/controller/authentication_controller.py +++ b/main/controller/authentication_controller.py @@ -26,7 +26,7 @@ logger = logging.getLogger(__name__) -INTROSPECT_SERVICE_TOKEN_ENV = "INTROSPECT_SERVICE_TOKEN" +INTROSPECT_SERVICE_TOKEN_ENV = "INTROSPECT_SERVICE_TOKEN" # nosec: B105 env var name, not a secret INTROSPECT_UNAUTHORIZED_DETAIL = "Unauthorized" router = APIRouter(prefix="/auth", tags=["Authentication"]) From 5fb22795d52aa00eb897a3019595a59955412289 Mon Sep 17 00:00:00 2001 From: heitorrosa <76885858+heitorrosa@users.noreply.github.com> Date: Tue, 29 Sep 2026 19:43:08 -0300 Subject: [PATCH 18/20] remove unused session middleware and derive introspect token from jwt key --- config.py | 1 - main/controller/authentication_controller.py | 16 +++++------ main/service/authentication_service.py | 10 ------- tests/conftest.py | 3 +- tests/test_auth_audit_fixes.py | 20 ++++++------- tests/test_auth_introspect.py | 30 +++++++++++++++----- 6 files changed, 41 insertions(+), 39 deletions(-) diff --git a/config.py b/config.py index 232a98fc..2b0e27fe 100644 --- a/config.py +++ b/config.py @@ -40,7 +40,6 @@ class UserSettings(BaseSettings): HOST: str = Field(default="localhost", validation_alias="USER_HOST") PORT: int = Field(default=3200, validation_alias="USER_PORT") JWT_SECRET_KEY: str = Field(default=..., validation_alias="JWT_SECRET_KEY") - SESSION_SECRET_KEY: str = Field(default=..., validation_alias="SESSION_SECRET_KEY") GOOGLE_CLIENT_ID: str = Field(default="", validation_alias="GOOGLE_CLIENT.ID") GOOGLE_CLIENT_SECRET: str = Field(default="", validation_alias="GOOGLE_CLIENT.SECRET") GOOGLE_REDIRECT_URI: str = Field(default="", validation_alias="GOOGLE_REDIRECT.URI") diff --git a/main/controller/authentication_controller.py b/main/controller/authentication_controller.py index c91ed9f6..77665452 100644 --- a/main/controller/authentication_controller.py +++ b/main/controller/authentication_controller.py @@ -1,7 +1,7 @@ +import hashlib import hmac import logging -import os -from config import getSession, LOCALHOST_ADDRESSES +from config import Config, getSession, LOCALHOST_ADDRESSES from datetime import datetime, timedelta, timezone from main.utils.logging_config import limiter @@ -26,9 +26,6 @@ logger = logging.getLogger(__name__) -INTROSPECT_SERVICE_TOKEN_ENV = "INTROSPECT_SERVICE_TOKEN" # nosec: B105 env var name, not a secret -INTROSPECT_UNAUTHORIZED_DETAIL = "Unauthorized" - router = APIRouter(prefix="/auth", tags=["Authentication"]) @@ -159,9 +156,10 @@ def introspect( db: Session = Depends(getSession), token: str | None = Body(default=None, embed=True), ): - expected = os.environ.get(INTROSPECT_SERVICE_TOKEN_ENV, "") + # Derived, never the raw signing key: a leaked service token must not reveal it. + expected = hmac.new(Config.USER.JWT_SECRET_KEY.encode("utf-8"), b"auth-introspect", hashlib.sha256).hexdigest() if not expected or not hmac.compare_digest(request.headers.get("X-Service-Token", ""), expected): - raise HTTPException(status_code=401, detail=INTROSPECT_UNAUTHORIZED_DETAIL) + raise HTTPException(status_code=401, detail="Unauthorized") auth = request.headers.get("Authorization", "") raw = ( token @@ -170,11 +168,11 @@ def introspect( or request.cookies.get(COOKIE_NAME) ) if not raw: - raise HTTPException(status_code=401, detail=INTROSPECT_UNAUTHORIZED_DETAIL) + raise HTTPException(status_code=401, detail="Unauthorized") try: return introspectToken(db, raw) except HTTPException: - raise HTTPException(status_code=401, detail=INTROSPECT_UNAUTHORIZED_DETAIL) + raise HTTPException(status_code=401, detail="Unauthorized") @router.get("/google") diff --git a/main/service/authentication_service.py b/main/service/authentication_service.py index e407c239..02060580 100644 --- a/main/service/authentication_service.py +++ b/main/service/authentication_service.py @@ -1,7 +1,3 @@ -from config import Config - -from starlette.middleware.sessions import SessionMiddleware - from main.utils.service_manager import getApp from main.controller.authentication_controller import router as authenticationRouter @@ -11,10 +7,4 @@ class AuthenticationService: def initialize(port: int): service = getApp(port) - service.add_middleware( - SessionMiddleware, - secret_key=Config.USER.SESSION_SECRET_KEY, - same_site="lax", - https_only=False, # dev - ) service.include_router(authenticationRouter) diff --git a/tests/conftest.py b/tests/conftest.py index 67450b89..c2911859 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -29,12 +29,11 @@ def pytest_configure(config): """Set required env vars before test collection. config.py eagerly instantiates UserSettings() at import time, which - requires JWT_SECRET_KEY and SESSION_SECRET_KEY. These env vars + requires JWT_SECRET_KEY. That env var don't exist in CI, so every test that touches config blows up during collection. This hook runs before collection begins. """ os.environ.setdefault("JWT_SECRET_KEY", "test-jwt-secret-key-not-for-production") - os.environ.setdefault("SESSION_SECRET_KEY", "test-session-secret-key-not-for-production") @pytest.fixture(autouse=True) diff --git a/tests/test_auth_audit_fixes.py b/tests/test_auth_audit_fixes.py index dc87e776..2901061c 100644 --- a/tests/test_auth_audit_fixes.py +++ b/tests/test_auth_audit_fixes.py @@ -1,5 +1,7 @@ """F-A audit tests: controller fixes — CSRF patch removal, SSO suffix-unique, generic 400s, login eviction, introspect gate, PII scrub.""" +import hashlib +import hmac import os import sys from unittest.mock import AsyncMock, MagicMock, patch @@ -10,19 +12,18 @@ sys.path.insert(0, os.path.dirname(os.path.dirname(__file__))) -from config import getSession +from config import Config, getSession from main.app.authentication.authentication import AuthenticationManager from main.app.authentication.session import SessionManager from main.controller.authentication_controller import router as authRouter from main.models.user import User from main.utils.errors import registerErrorHandlers -SERVICE_HEADERS = {"X-Service-Token": "test-service-token"} - - -@pytest.fixture(autouse=True) -def serviceToken(monkeypatch): - monkeypatch.setenv("INTROSPECT_SERVICE_TOKEN", "test-service-token") +SERVICE_HEADERS = { + "X-Service-Token": hmac.new( + Config.USER.JWT_SECRET_KEY.encode("utf-8"), b"auth-introspect", hashlib.sha256 + ).hexdigest() +} @pytest.fixture @@ -225,9 +226,8 @@ def test_attacker_session_killed_new_survives(self, dbSession, authDbClient): class TestSecureFlagNotSpoofable: def test_spoofed_forwarded_proto_http_keeps_secure(self, dbSession): - # https_only=True on SessionMiddleware + Secure auth cookies mean the - # http TestClient cannot round-trip Secure cookies, so assert on the - # Set-Cookie header instead. + # Secure auth cookies mean the http TestClient cannot round-trip them, + # so assert on the Set-Cookie header instead. app = FastAPI() app.include_router(authRouter) registerErrorHandlers(app) diff --git a/tests/test_auth_introspect.py b/tests/test_auth_introspect.py index 2094d456..9017fb97 100644 --- a/tests/test_auth_introspect.py +++ b/tests/test_auth_introspect.py @@ -1,3 +1,5 @@ +import hashlib +import hmac import os import sys from datetime import datetime, timedelta, timezone @@ -11,7 +13,7 @@ from fastapi import FastAPI from fastapi.testclient import TestClient -from config import getSession +from config import Config, getSession from main.app.authentication.session import SessionManager from main.app.authentication.util import createAccessToken from main.controller.authentication_controller import router as authRouter @@ -39,12 +41,11 @@ def makeUserToken(dbSession, username="intro_user"): return user, session, token -SERVICE_HEADERS = {"X-Service-Token": "test-service-token"} - - -@pytest.fixture(autouse=True) -def introspectServiceToken(monkeypatch): - monkeypatch.setenv("INTROSPECT_SERVICE_TOKEN", "test-service-token") +SERVICE_HEADERS = { + "X-Service-Token": hmac.new( + Config.USER.JWT_SECRET_KEY.encode("utf-8"), b"auth-introspect", hashlib.sha256 + ).hexdigest() +} class TestAuthIntrospect: @@ -126,3 +127,18 @@ def test_unknown_user_returns_generic_401(self, dbSession): introspectToken(mockDb, token) assert exc_info.value.status_code == 401 assert exc_info.value.detail == "Unauthorized" + + +class TestServiceTokenDerivation: + def test_env_var_no_longer_authenticates(self, authClient, monkeypatch): + monkeypatch.setenv("INTROSPECT_SERVICE_TOKEN", "test-service-token") + resp = authClient.post( + "/auth/introspect", json={"token": "x"}, headers={"X-Service-Token": "test-service-token"} + ) + assert resp.status_code == 401 + + def test_raw_signing_key_is_not_accepted(self, authClient): + resp = authClient.post( + "/auth/introspect", json={"token": "x"}, headers={"X-Service-Token": Config.USER.JWT_SECRET_KEY} + ) + assert resp.status_code == 401 From 76217ace1e2fc3688e556ce1fd158e246ad30f03 Mon Sep 17 00:00:00 2001 From: heitorrosa <76885858+heitorrosa@users.noreply.github.com> Date: Tue, 29 Sep 2026 19:56:23 -0300 Subject: [PATCH 19/20] annotate multi-entity query rows in getUserSessions --- main/app/orunmila/chat.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/main/app/orunmila/chat.py b/main/app/orunmila/chat.py index 3c37c1c4..7355defa 100644 --- a/main/app/orunmila/chat.py +++ b/main/app/orunmila/chat.py @@ -13,7 +13,8 @@ class OrunmilaChatManager: @classmethod def getUserSessions(cls, db: Session, userId: int): - sessions = ( + # Row type is uninferable for a multi-entity Query (legacy Column() models, no Mapped[]). + sessions: list = ( db.query(OrunmilaSession.sessionId, OrunmilaSession.title, OrunmilaSession.lastActivity) .filter(OrunmilaSession.userId == userId) .order_by(OrunmilaSession.lastActivity.desc()) From 773ee1fda8a9f60c5007617ec603ae5c57b0cdef Mon Sep 17 00:00:00 2001 From: heitorrosa <76885858+heitorrosa@users.noreply.github.com> Date: Tue, 29 Sep 2026 19:56:25 -0300 Subject: [PATCH 20/20] assert arrow-backed dtype by kind, not string width --- tests/test_stocks_cache_feather.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/test_stocks_cache_feather.py b/tests/test_stocks_cache_feather.py index 74b4c537..755b9aa9 100644 --- a/tests/test_stocks_cache_feather.py +++ b/tests/test_stocks_cache_feather.py @@ -99,7 +99,10 @@ def test_read_feather_dataframe_uses_arrow_backed_columns(tmp_path): df, presorted = cache_mod.readFeatherDataFrame(path) assert presorted is False - assert str(df["TICKER"].dtype) == "string[pyarrow]" + # pandas 3 defaults str columns to large_string[pyarrow] (PDEP-14); pandas 2 to string[pyarrow]. + # The property under test is "arrow-backed", not the arrow string width. + assert isinstance(df["TICKER"].dtype, pd.ArrowDtype) + assert pd.api.types.is_string_dtype(df["TICKER"].dtype) assert str(df["BLOB"].dtype) == "binary[pyarrow]" assert df["TICKER"].iloc[0] == "PETR4" assert df["BLOB"].iloc[0] == b"xy"