diff --git a/TODO.md b/TODO.md index 06ef7a4d..e4182662 100644 --- a/TODO.md +++ b/TODO.md @@ -12,6 +12,10 @@ - [ ] the scraper rentability should be calculated based on the COTACOA 10Y AJUSTADA instead of the tradingview endpoint - [ ] add MACD, RSI and other metrics +- [ ] notification system (redis!!!!) +- [ ] beta and alpha measurements in the wallet (possible advanced mode setting for quant bros and fin bros) +- [ ] wallet asset correlation + - [ ] Use the ForgeVM architecture to expose MetaTrader5 terminals - [ ] Abacate Pay diff --git a/docs/authentication.md b/docs/authentication.md index c19cf2fb..253e1267 100644 --- a/docs/authentication.md +++ b/docs/authentication.md @@ -50,13 +50,13 @@ Parsing: `parseDeviceFields` (`main/app/authentication/session.py:13-27`, stored | Role | Effective permissions | | :--- | :--- | -| `USER` | none (`Permission.NONE`) | -| `PREMIUM` | `USE_ORUNMILA` + `ORUNMILA_EXTENDED_MEMORIES` | +| `USER` | `WALLET` — default on registration | +| `PREMIUM` | `WALLET` + `USE_ORUNMILA` + `ORUNMILA_EXTENDED_MEMORIES` | | `DEVELOPER_STARTER` | = `USER` (no extra permissions) | | `DEVELOPER_ENTERPRISE` | = `DEVELOPER_STARTER` (no extra permissions) | | `ADMIN` | all (`Permission.ALL()`), bypasses checks | -Only two permissions exist: `USE_ORUNMILA`, `ORUNMILA_EXTENDED_MEMORIES`. There are no `VIEW_PROFILE` / `USE_THOTH` / `USE_MAAT` / `USE_OGUM` permissions — delete any such claims. +Only three permissions exist: `USE_ORUNMILA`, `ORUNMILA_EXTENDED_MEMORIES`, `WALLET`. There are no `VIEW_PROFILE` / `USE_THOTH` / `USE_MAAT` / `USE_OGUM` permissions — delete any such claims. ## Rate limits diff --git a/docs/user.md b/docs/user.md index dc8e136d..43689774 100644 --- a/docs/user.md +++ b/docs/user.md @@ -8,13 +8,13 @@ Profile reads, role checks, and session management for the Mansa ecosystem (`USE | Role | Effective permissions | | :--- | :--- | -| `USER` | none (`Permission.NONE`) — default on registration | -| `PREMIUM` | `USE_ORUNMILA` + `ORUNMILA_EXTENDED_MEMORIES` | +| `USER` | `WALLET` — default on registration | +| `PREMIUM` | `WALLET` + `USE_ORUNMILA` + `ORUNMILA_EXTENDED_MEMORIES` | | `DEVELOPER_STARTER` | = `USER` (no extra permissions) | | `DEVELOPER_ENTERPRISE` | = `DEVELOPER_STARTER` (no extra permissions) | | `ADMIN` | all (`Permission.ALL()`), bypasses checks | -Only two permissions exist: `USE_ORUNMILA`, `ORUNMILA_EXTENDED_MEMORIES`. There are no `VIEW_PROFILE` / `USE_THOTH` / `USE_MAAT` / `USE_OGUM` permissions — delete any such claims. There are no role-upgrade endpoints in code; any `upgrade/developer/*` docs are stale. +Only three permissions exist: `USE_ORUNMILA`, `ORUNMILA_EXTENDED_MEMORIES`, `WALLET`. There are no `VIEW_PROFILE` / `USE_THOTH` / `USE_MAAT` / `USE_OGUM` permissions — delete any such claims. There are no role-upgrade endpoints in code; any `upgrade/developer/*` docs are stale. ## API endpoints diff --git a/graphify-out/.graphify_labels.json b/graphify-out/.graphify_labels.json index cb727242..6b7947ae 100644 --- a/graphify-out/.graphify_labels.json +++ b/graphify-out/.graphify_labels.json @@ -619,7 +619,26 @@ "617": "Community 617", "618": "Community 618", "619": "Community 619", + "620": "Community 620", "621": "Community 621", + "622": "Community 622", "623": "Community 623", - "624": "Community 624" + "624": "Community 624", + "625": "Community 625", + "626": "Community 626", + "627": "Community 627", + "628": "Community 628", + "629": "Community 629", + "630": "Community 630", + "631": "Community 631", + "632": "Community 632", + "633": "Community 633", + "634": "Community 634", + "635": "Community 635", + "637": "Community 637", + "638": "Community 638", + "639": "Community 639", + "648": "Community 648", + "649": "Community 649", + "650": "Community 650" } diff --git a/graphify-out/GRAPH_REPORT.md b/graphify-out/GRAPH_REPORT.md index f75b4f62..41f2e68f 100644 --- a/graphify-out/GRAPH_REPORT.md +++ b/graphify-out/GRAPH_REPORT.md @@ -1,16 +1,16 @@ -# Graph Report - server (2026-09-30) +# Graph Report - server (2026-10-01) ## Corpus Check -- 137 files · ~103,322 words +- 158 files · ~123,714 words - Verdict: corpus is large enough that graph structure adds value. ## Summary -- 6650 nodes · 8904 edges · 623 communities (380 shown, 243 thin omitted) -- Extraction: 85% EXTRACTED · 15% INFERRED · 0% AMBIGUOUS · INFERRED: 1335 edges (avg confidence: 0.69) +- 7004 nodes · 9596 edges · 642 communities (399 shown, 243 thin omitted) +- Extraction: 84% EXTRACTED · 16% INFERRED · 0% AMBIGUOUS · INFERRED: 1563 edges (avg confidence: 0.68) - Token cost: 0 input · 0 output ## Graph Freshness -- Built from commit: `9cfa467f` +- Built from commit: `45768447` - Run `git rev-parse HEAD` and compare to check if the graph is stale. - Run `graphify update .` after code changes (no API cost). @@ -621,9 +621,28 @@ - [[_COMMUNITY_Community 617|Community 617]] - [[_COMMUNITY_Community 618|Community 618]] - [[_COMMUNITY_Community 619|Community 619]] +- [[_COMMUNITY_Community 620|Community 620]] - [[_COMMUNITY_Community 621|Community 621]] +- [[_COMMUNITY_Community 622|Community 622]] - [[_COMMUNITY_Community 623|Community 623]] - [[_COMMUNITY_Community 624|Community 624]] +- [[_COMMUNITY_Community 625|Community 625]] +- [[_COMMUNITY_Community 626|Community 626]] +- [[_COMMUNITY_Community 627|Community 627]] +- [[_COMMUNITY_Community 628|Community 628]] +- [[_COMMUNITY_Community 629|Community 629]] +- [[_COMMUNITY_Community 630|Community 630]] +- [[_COMMUNITY_Community 631|Community 631]] +- [[_COMMUNITY_Community 632|Community 632]] +- [[_COMMUNITY_Community 633|Community 633]] +- [[_COMMUNITY_Community 634|Community 634]] +- [[_COMMUNITY_Community 635|Community 635]] +- [[_COMMUNITY_Community 637|Community 637]] +- [[_COMMUNITY_Community 638|Community 638]] +- [[_COMMUNITY_Community 639|Community 639]] +- [[_COMMUNITY_Community 648|Community 648]] +- [[_COMMUNITY_Community 649|Community 649]] +- [[_COMMUNITY_Community 650|Community 650]] ## God Nodes (most connected - your core abstractions) 1. `vocab` - 456 edges @@ -638,16 +657,16 @@ 10. `Prometheus` - 41 edges ## Surprising Connections (you probably didn't know these) -- `lifespan()` --calls--> `runAll()` [INFERRED] - run.py → main/utils/service_manager.py - `StocksCacheManager` --calls--> `test_cache_scheduler_starts_apscheduler()` [INFERRED] main/app/stocks_api/cache.py → tests/test_stocks_api_coverage.py - `StocksCacheManager` --calls--> `test_cache_scheduler_starts_daemon_thread()` [INFERRED] main/app/stocks_api/cache.py → tests/test_stocks_api_coverage.py -- `DiscordHandler` --uses--> `TestSetupLogging` [INFERRED] - main/utils/logging_config.py → tests/test_logging_config_coverage.py - `HarnessState` --uses--> `TestGetState` [INFERRED] main/app/prometheus/state.py → tests/test_state_tools.py +- `HarnessState` --uses--> `TestSetState` [INFERRED] + main/app/prometheus/state.py → tests/test_state_tools.py +- `HarnessState` --uses--> `TestStateDispatch` [INFERRED] + main/app/prometheus/state.py → tests/test_state_tools.py ## Hyperedges (group relationships) - **Authentication Module** — AuthenticationManager, SessionManager, auth_util, auth_constants, getGoogleSSO [INFERRED] @@ -657,7 +676,7 @@ - **Configuration & Database Infrastructure** — config_Config, config_engine, config_stocksEngine [INFERRED] - **User Authentication & Authorization** — user_service, authentication, user_roles, permission_system [INFERRED] -## Communities (623 total, 243 thin omitted) +## Communities (642 total, 243 thin omitted) ### Community 0 - "Stocks API Endpoints" Cohesion: 0.0 @@ -692,8 +711,8 @@ Cohesion: 0.07 Nodes (29): Algorithmic Compression (`compact.py`) Implementation Plan, code:python (# main/app/prometheus/compact.py), code:python (# Before:), code:python (# Before:), code:python (# Before:), code:bash (pytest tests/ -k "prometheus" -v), code:bash (git add main/app/prometheus/agent.py), code:bash (git mv main/app/prometheus/summarizer.py main/app/prometheus) (+21 more) ### Community 8 - "Device Detection" -Cohesion: 0.08 -Nodes (9): 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 (+1 more) +Cohesion: 0.06 +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 @@ -717,19 +736,15 @@ Nodes (31): code:python ("""Measure whether the stocks query hot path is GIL-bou ### Community 14 - "User Roles & Permissions" Cohesion: 0.05 -Nodes (35): _make_stocksapi_client(), Covers line 35: GET /stocks/historical., Covers line 35: GET /stocks/historical., Covers line 35: GET /stocks/historical., Covers line 35: GET /stocks/historical., Covers line 47: GET /stocks/fundamental., Covers line 47: GET /stocks/fundamental., Covers line 47: GET /stocks/fundamental. (+27 more) +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) ### 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.15 -Nodes (18): executeStateTool(), get_state(), Retrieve values from the harness state. Use this to recall intermediate results,, Retrieve values from the harness state. Use this to recall intermediate results,, Retrieve values from the harness state. Use this to recall intermediate results,, Retrieve values from the harness state. Use this to recall intermediate results,, test_dispatch_get_state(), test_dispatch_set_state() (+10 more) - ### Community 17 - "Community 17" -Cohesion: 0.05 -Nodes (40): Invalid date -> inner 400 passes through (not wrapped as 500)., Invalid date -> inner 400 caught by outer except -> 500., Invalid date -> inner 400 caught by outer except -> 500., Invalid date -> inner 400 caught by outer except -> 500., search.strip() == '' should still dedup (line 181)., search.strip() == '' should still dedup (line 181)., Invalid date -> inner 400 caught by outer except -> 500., Invalid date -> inner 400 caught by outer except -> 500. (+32 more) +Cohesion: 0.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 @@ -744,12 +759,12 @@ Cohesion: 0.06 Nodes (35): 1. Memory System (B+), 2. Summarizer/Episodes (B), 3. Loop Events (A-), 4. Core Architecture (B+), 5. Security (B+), 6. Performance (B), 7. Code Quality (B), After (B+) (+27 more) ### Community 21 - "Community 21" -Cohesion: 0.1 -Nodes (9): B3Scraper, getCurrentSelic(), getInitialData(), calculateInvestingScore(), initialize(), P5: register the scraper cron jobs on the shared scheduler. Kept in this, registerScraperJobs(), runScraper() (+1 more) +Cohesion: 0.15 +Nodes (13): benchOnce(), main(), batchCosineSimilarity(), decodeEmbeddings(), normalizeRows(), Empty matrix → empty array., Single row matches cosine_similarity., Multiple rows ranked correctly. (+5 more) ### 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 /stocks/realtime-cotation without search returns 422., GET /stocks/realtime-cotation without search returns 422. (+5 more) ### Community 23 - "Community 23" Cohesion: 0.07 @@ -760,16 +775,16 @@ Cohesion: 0.09 Nodes (5): Tests for agent <-> persistent sandbox integration (Task 3)., Verify the agent uses getOrCreate + syncToSandbox/syncFromSandbox., Test the premium gating logic used in streamMessage., TestPersistentSandboxLifecycle, TestPremiumCheck ### Community 25 - "Community 25" -Cohesion: 0.12 -Nodes (7): Tests for input validation via HTTP endpoints. Validation is now inline via Bod, PUT /prometheus/sessions/{sessionId} — validates title via Body(...), Test that endpoints reject requests with missing required fields., POST /prometheus/sessions — validates title via Body(...), TestMissingBody, TestPrometheusSessionValidation, TestUpdateTitleValidation +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 (21): generateKey(), 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. (+13 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.16 -Nodes (14): 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., With same access time, higher baseScore always wins. (+6 more) +Cohesion: 0.15 +Nodes (15): getUserMemories(), getRelevanceScore(), _FakeMemory, A memory with no lastAccessedAt should use baseScore as-is., Scores are deterministic — no cron mutation needed., Same memory at different points in time yields different scores., A memory accessed 10x (baseScore 1.0) should still outrank a memory acce, A rarely-used old memory should lose to a popular fresh one. (+7 more) ### Community 28 - "Community 28" Cohesion: 0.05 @@ -793,7 +808,7 @@ Nodes (12): ToolContext — bundles all dependencies for tool execution. Replac ### Community 33 - "Community 33" Cohesion: 0.12 -Nodes (13): BaseHTTPMiddleware, Tests for standardized error responses (errors.py)., SampleBody, TestErrorResponseModel, TestGenericExceptionHandler, TestHTTPExceptionHandler, TestRequestContextFilter, TestSuccessPassthrough (+5 more) +Nodes (14): BaseHTTPMiddleware, app(), Tests for standardized error responses (errors.py)., SampleBody, TestErrorResponseModel, TestGenericExceptionHandler, TestHTTPExceptionHandler, TestRequestContextFilter (+6 more) ### Community 34 - "Community 34" Cohesion: 0.11 @@ -816,8 +831,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.11 -Nodes (17): Multiple search terms with tickerIndex., Multiple search terms with tickerIndex., Multiple search terms with tickerIndex., Search with no index match falls back to string startswith., Search with no index match falls back to string startswith., Search with no index match falls back to string startswith., Multiple search terms with tickerIndex., Multiple search terms with tickerIndex. (+9 more) +Cohesion: 0.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 @@ -833,7 +848,7 @@ Nodes (16): StocksCacheManager, Tests for dynamic ticker index feature, Ticker i ### Community 43 - "Community 43" Cohesion: 0.15 -Nodes (5): authenticateUser(), hashPassword(), verifyPassword(), TestAuthUtil, TestAuthUtilEdgeCases +Nodes (6): authenticateUser(), createUserAccount(), hashPassword(), verifyPassword(), TestAuthUtil, TestAuthUtilEdgeCases ### Community 44 - "Community 44" Cohesion: 0.14 @@ -841,7 +856,7 @@ Nodes (3): UserSession, TestSessionExpiration, TestUserSessionModel ### Community 45 - "Community 45" Cohesion: 0.05 -Nodes (58): BaseModel, IntFlag, OrunmilaMemory, Orunmila, OrunmilaChatManager, MemoryCandidate, OrunmilaMemory, SandboxManager (+50 more) +Nodes (38): IntFlag, 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 28: GET /auth/health., Covers line 28: GET /auth/health. (+30 more) ### Community 46 - "Community 46" Cohesion: 0.09 @@ -856,8 +871,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.13 -Nodes (18): dispatchToolCall(), TDD tests: verify memory tools are wired into the Prometheus agent. RED: Thes, test_memory_tool_skipped_without_user(), test_non_memory_tool_not_routed_to_executeMemoryTool(), test_non_registry_tool_not_routed(), test_save_memory_routed_to_executeMemoryTool(), test_save_memory_routed_via_registry(), test_search_memory_routed_to_executeMemoryTool() (+10 more) +Cohesion: 0.1 +Nodes (20): dispatchToolCall(), TDD tests: verify memory tools are wired into the Prometheus agent. RED: Thes, TOOL_REGISTRY pattern must work correctly., test_memory_tool_skipped_without_user(), test_non_memory_tool_not_routed_to_executeMemoryTool(), test_non_registry_tool_not_routed(), test_save_memory_routed_to_executeMemoryTool(), test_save_memory_routed_via_registry() (+12 more) ### Community 50 - "Community 50" Cohesion: 0.07 @@ -872,12 +887,12 @@ Cohesion: 0.08 Nodes (7): Cover all methods in chat.py (lines 11-120)., Cover all methods in chat.py (lines 11-120)., Cover all methods in chat.py (lines 11-120)., Cover all methods in chat.py (lines 11-120)., Cover all methods in chat.py (lines 11-120)., Cover all methods in chat.py (lines 11-120)., TestPrometheusChatManager ### Community 53 - "Community 53" -Cohesion: 0.11 -Nodes (29): charCount(), countTokens(), getTokenizer(), applyUpdate(), archiveDead(), clearAll(), clearAllAsync(), count_memories() (+21 more) +Cohesion: 0.09 +Nodes (40): applyUpdate(), archiveDead(), clearAll(), clearAllAsync(), count_memories(), countMemories(), countTokensCached(), decayScores() (+32 more) ### Community 54 - "Community 54" -Cohesion: 0.38 -Nodes (9): compactCotations(), compactRow(), compactValue(), compressResponse(), fixHeaders(), getAbbr(), getNest(), toColumnar() (+1 more) +Cohesion: 0.17 +Nodes (25): add_entry(), _apply_entries(), _cachedPerformance(), create_wallet(), delete_entry(), fetchCachedClose(), fetchLivePrices(), fetchMarketDividends() (+17 more) ### Community 55 - "Community 55" Cohesion: 0.11 @@ -892,12 +907,12 @@ 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.15 -Nodes (17): getGoogleSSO(), createAccessToken(), googleCallback(), googleLogin(), isSecureScheme(), issueSessionCookie(), login(), logout() (+9 more) +Cohesion: 0.22 +Nodes (13): createAccessToken(), googleCallback(), isSecureScheme(), issueSessionCookie(), login(), logout(), register(), requireServiceToken() (+5 more) ### Community 59 - "Community 59" -Cohesion: 0.17 -Nodes (20): Tests for main/utils/connectivity.py — covers all branches., test_both_engines_ok(), test_connection_error(), test_generic_exception(), test_non_200_status(), test_non_stocks_prefix(), test_request_exception(), test_service_not_found() (+12 more) +Cohesion: 0.08 +Nodes (32): lifespan(), status(), Tests for main/utils/connectivity.py — covers all branches., checkServiceConnection — success, not found, errors., checkServiceConnection — success, not found, errors., checkMySqlConnection — success, errors, engine=None paths., checkMySqlConnection — success, errors, engine=None paths., test_both_engines_ok() (+24 more) ### Community 60 - "Community 60" Cohesion: 0.09 @@ -912,8 +927,8 @@ Cohesion: 0.1 Nodes (20): architectures, attention_probs_dropout_prob, gradient_checkpointing, hidden_act, hidden_dropout_prob, hidden_size, initializer_range, intermediate_size (+12 more) ### Community 63 - "Community 63" -Cohesion: 0.21 -Nodes (6): normalizeKey(), Store a value in state. Marks state as changed for context injection., Shared query pipeline for historical and fundamental endpoints., Fetch live prices for B3 tickers via yfinance. B3 tickers must match, sanitizeNanValues(), StocksQueryManager +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 64 - "Community 64" Cohesion: 0.06 @@ -928,12 +943,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.17 -Nodes (7): Verify memory endpoints exist and are wired correctly., GET /prometheus/memories exists., POST /prometheus/memories exists., DELETE /prometheus/memories/{id} exists., GET /memories requires authentication., GET /memories requires USE_PROMETHEUS (basic USER role denied)., TestMemoryControllerRoutes +Cohesion: 0.08 +Nodes (24): get_wallet_positions(), get_wallet_rebalance(), get_wallet_summary(), 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., Write a file to the workspace. Use this to save data files (CSV, JSON, scri (+16 more) ### Community 68 - "Community 68" -Cohesion: 0.23 -Nodes (6): chat_stream(), downloadWorkspaceFile(), getHistory(), resumeChatStream(), updateSessionTitle(), verifySessionOwnsership() +Cohesion: 0.15 +Nodes (28): addEntry(), applyEntries(), cachedPerformance(), createWallet(), deleteEntry(), fetchCachedClose(), fetchLivePrices(), fetchMarketDividends() (+20 more) ### Community 69 - "Community 69" Cohesion: 0.22 @@ -948,8 +963,8 @@ 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.13 -Nodes (16): pack → unpack preserves values., Empty list roundtrips., 384-dim vector packs to 1536 bytes., Empty matrix → empty array., Single row matches cosine_similarity., Multiple rows ranked correctly., Zero query → all zeros., TestBatchCosineSimilarity (+8 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 73 - "Community 73" Cohesion: 0.16 @@ -980,15 +995,15 @@ Cohesion: 0.05 Nodes (44): cn(), AlertDialogAction(), AlertDialogCancel(), AlertDialogContent(), AlertDialogDescription(), AlertDialogFooter(), AlertDialogHeader(), AlertDialogMedia() (+36 more) ### Community 80 - "Community 80" -Cohesion: 0.15 -Nodes (16): buildSummary(), dedup(), extractDecisions(), extractMetrics(), extractSnapshots(), extractTickers(), extractToolCalls(), fetchFieldsPayload() (+8 more) +Cohesion: 0.14 +Nodes (19): buildSummary(), charCount(), countTokens(), dedup(), extractDecisions(), extractMetrics(), extractSnapshots(), extractTickers() (+11 more) ### Community 81 - "Community 81" -Cohesion: 0.09 -Nodes (17): getLiveCotation(), JSONBytesResponse, Get real-time price quotation for a single Brazilian B3 stock. Returns th, Get real-time price quotation for a single Brazilian B3 stock. Returns th, Sends pre-serialized JSON bytes without re-encoding (cache-friendly)., Get real-time price quotation for a single Brazilian B3 stock. Returns th, Get real-time price quotation for a single Brazilian B3 stock. Returns th, Get real-time price quotation for a single Brazilian B3 stock. Returns th (+9 more) +Cohesion: 0.14 +Nodes (14): getLiveCotation(), Get real-time price quotation for a single Brazilian B3 stock. Returns th, Get real-time price quotation for a single Brazilian B3 stock. Returns th, Get real-time price quotation for a single Brazilian B3 stock. Returns th, Get real-time price quotation for a single Brazilian B3 stock. Returns th, Get real-time price quotation for a single Brazilian B3 stock. Returns th, Get real-time price quotation for a single Brazilian B3 stock. Returns th, Get real-time price quotation for a single Brazilian B3 stock. Returns th (+6 more) ### Community 82 - "Community 82" -Cohesion: 0.09 +Cohesion: 0.08 Nodes (27): buildFeatherCache(), Feather build / read helpers for the stocks cache. Owns the on-disk layout (CAC, Return (engine, featherPath, nestedPath), preferring live values on the cach, Return (engine, featherPath, nestedPath), preferring live values on the cach, readFeatherDataFrame(), _runtimeConf(), tryBuildLock(), arrowTypeFor() (+19 more) ### Community 83 - "Community 83" @@ -1012,8 +1027,8 @@ Cohesion: 0.1 Nodes (19): countTokens(), getTokenizer(), PrometheusSummarizer, Summarize conversation history into episode summaries., Check if accumulated tokens exceed episode threshold., Get messages since the last episode for summarization., Check if accumulated tokens exceed episode threshold., Check if accumulated tokens exceed episode threshold. (+11 more) ### Community 88 - "Community 88" -Cohesion: 0.12 -Nodes (7): Cover all methods in authentication.py (lines 13-75)., Cover all methods in authentication.py (lines 13-75)., Cover all methods in authentication.py (lines 13-75)., Cover all methods in authentication.py (lines 13-75)., Cover all methods in authentication.py (lines 13-75)., Cover all methods in authentication.py (lines 13-75)., TestAuthenticationManager +Cohesion: 0.18 +Nodes (20): countMemories(), deleteMemory(), extract(), findSimilarKey(), fullTextSearch(), getClient(), getMatrix(), getMemoryLimit() (+12 more) ### Community 89 - "Community 89" Cohesion: 0.08 @@ -1052,44 +1067,44 @@ Cohesion: 0.15 Nodes (16): AuthenticationManager, AuthenticationService, PrometheusChatManager, PrometheusGenerator, PrometheusService, SessionManager, UserManager, UserService (+8 more) ### Community 98 - "Community 98" -Cohesion: 0.28 +Cohesion: 0.25 Nodes (6): extractTokenPayload(), Tests for extractTokenPayload — the standalone token extraction dependency., Create a mock Starlette Request with given headers., Authorization: Bearer (empty) — no token after Bearer., Authorization: Basic xxx — not Bearer, so no token found., TestExtractTokenPayload ### Community 99 - "Community 99" Cohesion: 0.04 -Nodes (47): _make_prometheus_client(), Covers lines 95-98: session deleted., Covers lines 96-97: session not found., Covers lines 96-97: session not found., Covers lines 96-97: session not found., Covers lines 95-98: DELETE /prometheus/sessions/{sessionId}., Covers lines 95-98: session deleted., Covers lines 96-97: session not found. (+39 more) +Nodes (46): _make_prometheus_client(), Covers lines 95-98: session deleted., Covers lines 96-97: session not found., Covers lines 96-97: session not found., Covers lines 96-97: session not found., Covers lines 111-112: sessionId is None, new session created., Covers lines 111-112: sessionId is None, new session created., Covers lines 118-119: sessionId is None, new session created. (+38 more) ### Community 100 - "Community 100" Cohesion: 0.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 ### Community 101 - "Community 101" -Cohesion: 0.07 -Nodes (18): Different query parameters should not share cache, Cache should expire after TTL, Tests for connection pool configuration, Stocks engine should have optimized pool settings, Tests for lazy JSON deserialization, Query manager should have deserialize method, Performance tests for query operations, Query should respond within 1 second (+10 more) +Cohesion: 0.2 +Nodes (23): closeOwnSession(), popAuthSession(), Shared auth-guard + own-SessionLocal convention every tool repeats. Returns, ensureOwnership(), get_wallet_allocation(), get_wallet_performance(), get_wallet_positions(), get_wallet_rebalance() (+15 more) ### Community 102 - "Community 102" -Cohesion: 0.15 -Nodes (8): BaseSettings, BaseMansaSettings, DiscordSettings, MysqlSettings, OrunmilaSettings, ScraperSettings, StocksApiSettings, UserSettings +Cohesion: 0.11 +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.2 -Nodes (14): benchOnce(), main(), _fulltext_search(), fullTextSearch(), minMax(), scoreCandidates(), scoreRecency(), scoreRow() (+6 more) +Cohesion: 0.12 +Nodes (14): code:python (XANGO_WEIGHTS = {"underweight": 0.45, "rating": 0.25, "xango), code:python (import hashlib), code:bash (git add main/app/wallet/wallet_service.py tests/test_wallet_), code:python (async def narrate_positions(wallet_id: int, **_) -> dict:), code:python (import asyncio), code:bash (git add main/app/orunmila/tools.py tests/test_orunmila_walle), Finding-(9) charter-gap note, Global Constraints (+6 more) ### Community 105 - "Community 105" -Cohesion: 0.21 -Nodes (7): ResultCache — SHA256-keyed file-based cache for computed results., File-based cache keyed by SHA256 of code. Stores results as JSON under:, Return cached result dict or None if miss., Store result with timestamp., Delete all cached results for a session., Check if a result exists for the given code., ResultCache +Cohesion: 0.29 +Nodes (5): buildClient(), connect(), ensureFastmcp(), MCPClientPool, _parseServers() ### Community 106 - "Community 106" Cohesion: 0.22 Nodes (3): parseYearInput(), TestParseYearInput, TestParseYearInput ### Community 107 - "Community 107" -Cohesion: 0.13 -Nodes (13): Covers lines 100-104, 106: GET /user/sessions/current., Covers lines 100-104, 106: GET /user/sessions/current., Covers lines 100-104, 106: session found., Covers lines 100-104, 106: session found., Covers lines 100-104, 106: GET /user/sessions/current., Covers lines 100-104, 106: session found., Covers line 104: session not found., Covers line 104: session not found. (+5 more) +Cohesion: 0.22 +Nodes (4): Authentication System, Google OAuth, JWT Authentication, TestSessionExpiryConfig ### Community 108 - "Community 108" Cohesion: 0.14 @@ -1108,8 +1123,8 @@ Cohesion: 0.14 Nodes (13): code:python (import pytest), code:python (import logging), code:bash (git add main/app/prometheus/state.py tests/test_harness_stat), File Map, Global Constraints, Phase 1: HarnessState (In-Memory Agent Scratchpad), Prometheus Harness — Master Implementation Plan (v2: CubeSandbox + On-Demand), Relationship to Existing Systems (+5 more) ### Community 112 - "Community 112" -Cohesion: 0.11 -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) +Cohesion: 0.12 +Nodes (19): AuthenticationManager, SessionManager, PrometheusChatManager, Cover getGoogleSSO (lines 6-14)., Cover getGoogleSSO (lines 6-14)., Cover __init__ and updateDates., Cover __init__ and updateDates (lines 22-37)., Cover streamMessage in agent.py. (+11 more) ### Community 113 - "Community 113" Cohesion: 0.15 @@ -1124,8 +1139,8 @@ Cohesion: 0.17 Nodes (11): dateOnly(), EditDividendDialog(), EditLotDialog(), fmtBRL(), fmtMoney(), KIND_STYLES, lotTitle(), deleteDividend() (+3 more) ### Community 116 - "Community 116" -Cohesion: 0.13 -Nodes (16): _build_system_prompt(), buildSystemPrompt(), chatSession(), _execute_memory_tool(), _get_client(), _get_memory_tools(), getClient(), openMCPClients() (+8 more) +Cohesion: 0.11 +Nodes (20): create_memory(), createMemory(), embed(), _build_system_prompt(), buildSystemPrompt(), chatSession(), _execute_memory_tool(), executeMemoryTool() (+12 more) ### Community 117 - "Community 117" Cohesion: 0.15 @@ -1140,16 +1155,16 @@ Cohesion: 0.07 Nodes (26): code:python ("""Tests for SandboxManager file mutation helpers (delete_fi), code:python (from main.app.prometheus.sandbox import SandboxManager, host), code:python (@router.post("/workspace/upload")), code:bash (git add main/controller/prometheus_controller.py tests/test_), code:python (from unittest.mock import patch, MagicMock), code:python (from main.app.prometheus.sandbox import SandboxManager, host), code:python (async def serve_file(path: str, **_) -> dict:), code:python ("serve_file": serve_file,) (+18 more) ### Community 120 - "Community 120" -Cohesion: 0.07 -Nodes (44): _make_auth_client(), Tests to cover uncovered lines across controllers, UserManager, and auth util., Return (client, app) with auth + user routers and mocked getSession., Covers lines 126-136: DELETE /user/sessions/{sessionId}., Covers lines 126-136: DELETE /user/sessions/{sessionId}., Covers lines 126, 131, 135-136., Covers lines 126, 131, 135-136., Covers lines 126-136: DELETE /user/sessions/{sessionId}. (+36 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.15 -Nodes (10): test_setup_discord_handler_disabled(), test_setup_discord_handler_enabled(), Many concurrent emit() calls must not create more threads than max_workers., Verify that DiscordHandler submits to a bounded executor, not raw threads., The module-level discordExecutor must exist with max_workers <= 5., DiscordHandler.emit() must use discordExecutor.submit, not Thread.start., TestDiscordHandlerThreadPool, DiscordHandler (+2 more) +Cohesion: 0.14 +Nodes (11): test_setup_discord_handler_disabled(), test_setup_discord_handler_enabled(), TestSetupLogging, Many concurrent emit() calls must not create more threads than max_workers., Verify that DiscordHandler submits to a bounded executor, not raw threads., The module-level discordExecutor must exist with max_workers <= 5., DiscordHandler.emit() must use discordExecutor.submit, not Thread.start., TestDiscordHandlerThreadPool (+3 more) ### Community 123 - "Community 123" Cohesion: 0.17 @@ -1161,7 +1176,7 @@ Nodes (27): code:python (# tests/test_stocks_payload_cache.py), code:python (pc ### Community 126 - "Community 126" Cohesion: 0.07 -Nodes (26): code:powershell (netstat -ano | findstr ":80 " # must be empty; if not, ), code:powershell ($U = "http://localhost/stocks/cotations?search=PETR4"), code:nginx (proxy_pass http://stocks_api;), code:nginx (# Exact-match on purpose: a prefix match on /stocks/cotation), code:powershell (docker exec nginx nginx -t; if ($?) { docker exec nginx ngin), code:bash (git add nginx/conf.d/20-stocks.conf nginx/snippets/stocks-pr), code:powershell (docker stats --no-stream --format "{{.Name}},{{.CPUPerc}},{{), code:powershell ($U = "http://localhost/stocks/cotations?search=PETR4") (+18 more) +Nodes (26): code:powershell (netstat -ano | findstr ":80 " # must be empty; if not, ), code:powershell ($U = "http://localhost/stocks/cotations?search=PETR4"), code:nginx (proxy_pass http://stocks_api;), code:nginx (# Exact-match on purpose: a prefix match on /stocks/cotation), code:powershell (docker exec nginx nginx -t; if ($?) { docker exec nginx ngin), code:bash (git add nginx/conf.d/20-stocks.conf nginx/snippets/stocks-pr), code:powershell (docker stats --no-stream --format "{{.Name}},{{.CPUPerc}},{{), code:powershell ($env:PERF_API_KEY="sk-..." # all three make targets below ) (+18 more) ### Community 127 - "Community 127" Cohesion: 0.2 @@ -1176,16 +1191,16 @@ 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.08 -Nodes (25): 1.1 Functional (per surface; tags: EXISTS = build on it, PARTIAL = half reusable, MISSING = greenfield), 1.2 Non-functional, 1. Requirements, 2. Domain model, 3. API contracts (all under `/api/wallet`; chain: `main/controller/wallet_controller.py` → `main/service/wallet_service.py::` → `main/models/wallet.py::`; auth `Depends(UserManager.getCurrentUser)` + `Depends(getSession)` throughout), 3. API contracts (all under `/wallet`; chain: `main/controller/wallet_controller.py` → `main/service/wallet_service.py::` → `main/models/wallet.py::`; auth `Depends(UserManager.getCurrentUser)` + `Depends(getSession)` throughout), 4. Phased build plan (writing-plans: each phase independently reviewable; reviewer PASS per phase), 5. Risks / assumptions (honest flags carried over — do not treat as fact) (+17 more) +Cohesion: 0.07 +Nodes (27): 1.1 Functional (per surface; tags: EXISTS = build on it, PARTIAL = half reusable, MISSING = greenfield), 1.2 Non-functional, 1. Requirements, 2. Domain model, 3. API contracts (all under `/api/wallet`; chain: `main/controller/wallet_controller.py` → `main/service/wallet_service.py::` → `main/models/wallet.py::`; auth `Depends(UserManager.getCurrentUser)` + `Depends(getSession)` throughout), 3. API contracts (all under `/wallet`; chain: `main/controller/wallet_controller.py` → `main/service/wallet_service.py::` → `main/models/wallet.py::`; auth `Depends(UserManager.getCurrentUser)` + `Depends(getSession)` throughout), 3. API contracts (all under `/wallet`; chain: `main/controller/wallet_controller.py` → `main/service/wallet_service.py::` → `main/models/wallet.py::`; auth = wallet-local dependency on the **introspect contract** (user directive 2026-09-30): resolve the raw token (`X-Access-Token` → `Authorization: Bearer` → `mansa_token` cookie, order per `main/app/authentication/util.py:54-66`) → `introspectToken(db, raw)` (`main/app/authentication/introspect.py:14`) → `{userId, username, roles}` → `Roles.checkAccess(roles, Permission.WALLET)` (`main/utils/roles.py:29-39`) → `403` if absent; `Depends(getSession)` for the DB session), 4. Phased build plan (writing-plans: each phase independently reviewable; reviewer PASS per phase) (+19 more) ### Community 131 - "Community 131" -Cohesion: 0.14 -Nodes (13): Same input → same hash., Different inputs → different hashes., Returns 32-char hex string., TestContentHash, ALL(), _extractCredential(), _introspectUrl(), introspectUser() (+5 more) +Cohesion: 0.11 +Nodes (17): Same input → same hash., Different inputs → different hashes., Returns 32-char hex string., pack → unpack preserves values., Empty list roundtrips., 384-dim vector packs to 1536 bytes., TestContentHash, TestPackUnpack (+9 more) ### Community 132 - "Community 132" Cohesion: 0.25 -Nodes (7): code:python ("""add wallet_holdings and wallet_lots tables), code:python (import main.models.wallet), code:bash (git add migrations/versions/wallet_tables_20260904_add_walle), File Structure, Global Constraints, Task 2: Alembic migration for wallet tables, Wallet Management (Thoth/Iyagba) Implementation Plan +Nodes (7): code:python (from dataclasses import dataclass), code:bash (git add main/app/wallet/__init__.py main/app/wallet/math.py ), code:python (from datetime import date), File Structure, Global Constraints, Task 3: Pure derivation math, Wallet Management (Thoth/Iyagba) Implementation Plan ### Community 133 - "Community 133" Cohesion: 0.18 @@ -1200,12 +1215,12 @@ Cohesion: 0.11 Nodes (4): cache(), Tests for ResultCache., TestColumnValidator, TestResultCache ### Community 136 - "Community 136" -Cohesion: 0.12 -Nodes (10): Regression: is_string_dtype fails when column has strings + None (pandas 2.x)., Tests covering query.py lines 50-67., Tests covering query.py lines 50-67., Regression: is_string_dtype fails when column has strings + None (pandas 2.x)., Regression: is_string_dtype fails when column has strings + None (pandas 2.x)., Regression: is_string_dtype fails when column has strings + None (pandas 2.x)., Tests covering query.py lines 50-67., Tests covering query.py lines 50-67. (+2 more) +Cohesion: 0.18 +Nodes (12): _getDb(), Search user's saved memories, preferences, and past analysis context. Use t, Search user's saved memories, preferences, and past analysis context. Use t, Search user's saved memories, preferences, and past analysis context. Use, Search user's saved memories, preferences, and past analysis context. Use, Search user's saved memories, preferences, and past analysis context. Use, Search user's saved memories, preferences, and past analysis context. Use, Search user's saved memories, preferences, and past analysis context. Use (+4 more) ### Community 137 - "Community 137" Cohesion: 0.18 -Nodes (20): countMemories(), deleteMemory(), extract(), findSimilarKey(), fullTextSearch(), getClient(), getMatrix(), getMemoryLimit() (+12 more) +Nodes (15): buildSummary(), countTokens(), dedup(), extractDecisions(), extractMetrics(), extractSnapshots(), extractTickers(), extractToolCalls() (+7 more) ### Community 138 - "Community 138" Cohesion: 0.18 @@ -1216,8 +1231,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.04 -Nodes (51): Base, PrometheusMemory, PrometheusMemory, OrunmilaSandbox, MemoryManager, PrometheusMemory, All memory operations. Stateless class methods., PrometheusService (+43 more) +Cohesion: 0.05 +Nodes (49): PrometheusMemory, PrometheusMemory, MemoryManager, PrometheusMemory, All memory operations. Stateless class methods., PrometheusService, _count_memories(), _create_memory() (+41 more) ### Community 141 - "Community 141" Cohesion: 0.24 @@ -1249,19 +1264,19 @@ Nodes (3): categorizeColumns(), TestCategorizeColumns, TestCategorizeColumns ### Community 148 - "Community 148" Cohesion: 0.09 -Nodes (19): 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. (+11 more) +Nodes (20): Covers lines 114-115, 117-120, 122, 125: POST /prometheus/chat., Covers lines 114-115, 117-120, 122, 125: POST /prometheus/chat., Covers lines 109-136: POST /prometheus/chat/stream (SSE)., Covers lines 114-115, 117-120, 122: existing session with verified ownership., Covers lines 114-115, 117-120, 122: existing session with verified ownership., Covers lines 114-115, 117-120, 122: existing session with verified ownership., Covers lines 120-121: existing session with verified ownership., Covers lines 114-115, 117-120, 122, 125: POST /prometheus/chat. (+12 more) ### Community 149 - "Community 149" -Cohesion: 0.18 -Nodes (5): createSession(), getSessionById(), parseDeviceFields(), revokeSession(), validateSession() +Cohesion: 0.15 +Nodes (12): 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., save_memory(), embed(), Store a memory about the user's preferences, analysis results, or feedback., Store a memory about the user's preferences, analysis results, or feedback. (+4 more) ### Community 151 - "Community 151" Cohesion: 0.2 Nodes (3): MEMORY_TOOLS must be defined as a Tool wrapping FunctionDeclarations., MEMORY_TOOLS must be a list of callables with proper signatures., TestMemoryToolsDefinition ### Community 152 - "Community 152" -Cohesion: 0.18 -Nodes (12): _getDb(), Search user's saved memories, preferences, and past analysis context. Use t, Search user's saved memories, preferences, and past analysis context. Use t, Search user's saved memories, preferences, and past analysis context. Use, Search user's saved memories, preferences, and past analysis context. Use, Search user's saved memories, preferences, and past analysis context. Use, Search user's saved memories, preferences, and past analysis context. Use, Search user's saved memories, preferences, and past analysis context. Use (+4 more) +Cohesion: 0.16 +Nodes (23): get_wallet_allocation(), list_wallet_earnings(), narrate_positions(), Narrate the user's wallet positions in plain language. Read-only summary, Break wallet equity down by ticker or asset type. Read-only: never mutate, Break wallet equity down by ticker or asset type. Read-only: never mutate, List accrued earnings (dividends, JSCP) for a wallet. Read-only: never mu, List accrued earnings (dividends, JSCP) for a wallet. Read-only: never mu (+15 more) ### Community 153 - "Community 153" Cohesion: 0.11 @@ -1300,8 +1315,8 @@ Cohesion: 0.11 Nodes (18): Category 2: Async/Sync Inconsistencies (MEDIUM), Category 4: Caching & Memory (MEDIUM), Category 6: Configuration & Environment (LOW), Category 7: Code Quality (LOW), Executive Summary, Full Code Review Report, Issue 2.1 — All route handlers are synchronous, Issue 2.2 — ServiceManager runs uvicorn in daemon threads (+10 more) ### Community 162 - "Community 162" -Cohesion: 0.24 -Nodes (14): buildSummary(), countTokens(), dedup(), extractDecisions(), extractMetrics(), extractSnapshots(), extractTickers(), extractToolCalls() (+6 more) +Cohesion: 0.21 +Nodes (7): ResultCache — SHA256-keyed file-based cache for computed results., File-based cache keyed by SHA256 of code. Stores results as JSON under:, Return cached result dict or None if miss., Store result with timestamp., Delete all cached results for a session., Check if a result exists for the given code., ResultCache ### Community 163 - "Community 163" Cohesion: 0.22 @@ -1312,8 +1327,8 @@ Cohesion: 0.2 Nodes (9): AccordionItem, BarChart, ContentCard, DataTable, Divider, ProgressFill, StatCard, TabGroup (+1 more) ### Community 165 - "Community 165" -Cohesion: 0.29 -Nodes (6): Exercises the expiresAt-is-None branch (line 143)., Exercises the expiresAt-is-None branch (line 143)., Exercises the expiresAt-is-None branch (line 143)., Exercises the expiresAt-is-None branch (line 143)., Exercises the expiresAt-is-None branch (line 143)., Exercises the expiresAt-is-None branch (line 143). +Cohesion: 0.18 +Nodes (6): buildSystemPrompt(), getClient(), persistEvent(), newTokenCache(), dispatchToolCall(), dispatchToolCall() ### Community 166 - "Community 166" Cohesion: 0.22 @@ -1336,8 +1351,8 @@ Cohesion: 0.25 Nodes (8): padding, direction, pad_id, pad_to_multiple_of, pad_token, pad_type_id, strategy, Fixed ### Community 172 - "Community 172" -Cohesion: 0.14 -Nodes (19): AuthenticationManager, SessionManager, PrometheusChatManager, Cover getGoogleSSO (lines 6-14)., Cover getGoogleSSO (lines 6-14)., Cover __init__ and updateDates., Cover __init__ and updateDates (lines 22-37)., Cover streamMessage in agent.py. (+11 more) +Cohesion: 0.2 +Nodes (9): introspectToken(), verifyAccessToken(), introspect(), 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. (+1 more) ### Community 173 - "Community 173" Cohesion: 0.25 @@ -1380,13 +1395,17 @@ Cohesion: 0.14 Nodes (14): 3.0 Verified ground truth, 3.10 Migration sequence + verification, 3.1 Target topology, 3.2 Worker-container extraction, 3.3 nginx upstream evolution — validated against the user's plan, 3.4 TODO 13 migration — drop `{service}_HOST`/`{service}_PORT`, 3.5 Redis — exactly two jobs, 3.6 Cache strategy across boxes (+6 more) ### Community 184 - "Community 184" -Cohesion: 0.33 -Nodes (4): Integration tests for all query optimizations, All optimizations should be implemented, Query filter should use ticker index, TestQueryOptimization +Cohesion: 0.11 +Nodes (12): TestCleanup, 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, cleanup() (+4 more) ### Community 185 - "Community 185" Cohesion: 0.38 Nodes (7): code:python (import pytest), code:python (from __future__ import annotations), code:bash (git add main/app/prometheus/context.py tests/test_context.py), Phase 4: ToolContext (Bundled Dispatch Dependencies), Phase 4: ToolContext (Replace God Function), Task 5: ToolContext — Dataclass for Agent Use, Task 5: ToolContext — Single Dispatch Object +### Community 186 - "Community 186" +Cohesion: 0.11 +Nodes (25): listFields(), Discover available field names before querying /historical or /fundamental., Discover available field names before querying /historical or /fundamental., Discover available field names before querying /historical or /fundamental., Discover available field names before querying /historical or /fundamental., Discover available field names before querying /historical or /fundamental., Discover available field names before querying /historical or /fundamental., Discover available field names before querying /historical or /fundamental. (+17 more) + ### Community 187 - "Community 187" Cohesion: 0.25 Nodes (7): DEVELOPER:, PREMIUM:, Priorities (active order, 2026-09-29), Prometheus, STOCKS_API, USER:, User structure defined by string roles: @@ -1396,12 +1415,12 @@ Cohesion: 0.11 Nodes (6): Tests for run.py /status endpoint — covers status response structure., Create a test client for the status endpoint without running lifespan., Create a test client for the status endpoint without running lifespan., statusClient(), TestScraperTrigger, TestStatusEndpoint ### Community 189 - "Community 189" -Cohesion: 0.36 -Nodes (4): countTokens(), getTokenizer(), PrometheusSummarizer, smartTruncate() +Cohesion: 0.33 +Nodes (3): buildClient(), connect(), MCPClientPool ### Community 190 - "Community 190" -Cohesion: 0.29 -Nodes (6): Exercises the tzinfo-is-None branch (line 144-148)., Exercises the tzinfo-is-None branch (line 144-148)., Exercises the tzinfo-is-None branch (line 144-148)., Exercises the tzinfo-is-None branch (line 144-148)., Exercises the tzinfo-is-None branch (line 144-148)., Exercises the tzinfo-is-None branch (line 144-148). +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 191 - "Community 191" Cohesion: 0.33 @@ -1416,8 +1435,8 @@ Cohesion: 0.33 Nodes (6): normalizer, clean_text, handle_chinese_chars, lowercase, strip_accents, type ### Community 194 - "Community 194" -Cohesion: 0.21 -Nodes (15): compactCotations(), compactRow(), compactValue(), compressResponse(), fixHeaders(), getAbbr(), getNest(), Abbreviation map for a frame (dependency-injected; no cache import). Result (+7 more) +Cohesion: 0.18 +Nodes (11): 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., Covers lines 48-49: jwt.ExpiredSignatureError., Covers lines 45-51: verifyAccessToken with expired and invalid tokens., Covers lines 48-49: jwt.ExpiredSignatureError. (+3 more) ### Community 195 - "Community 195" Cohesion: 0.33 @@ -1428,8 +1447,8 @@ Cohesion: 0.33 Nodes (5): cls_token, mask_token, pad_token, sep_token, unk_token ### Community 197 - "Community 197" -Cohesion: 0.17 -Nodes (12): getHistorical(), Get year-based historical financial data for Brazilian B3 stocks. Returns, Get year-based historical financial data for Brazilian B3 stocks. Returns, Get year-based historical financial data for Brazilian B3 stocks. Returns, Get year-based historical financial data for Brazilian B3 stocks. Returns, Get year-based historical financial data for Brazilian B3 stocks. Returns, Get year-based historical financial data for Brazilian B3 stocks. Returns, Get year-based historical financial data for Brazilian B3 stocks. Returns (+4 more) +Cohesion: 0.1 +Nodes (15): 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, 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) ### Community 198 - "Community 198" Cohesion: 0.33 @@ -1520,12 +1539,12 @@ Cohesion: 0.4 Nodes (5): model, continuing_subword_prefix, max_input_chars_per_word, type, unk_token ### Community 221 - "Community 221" -Cohesion: 0.2 -Nodes (9): Covers lines 143, 145, 147-148: POST /user/sessions/revoke-all., Covers lines 143, 145, 147-148: POST /user/sessions/revoke-all., Covers lines 143, 145, 147-148., Covers lines 143, 145, 147-148., Covers lines 143, 145, 147-148: POST /user/sessions/revoke-all., Covers lines 143, 145, 147-148., Covers lines 143, 145, 147-148: POST /user/sessions/revoke-all., Covers lines 143, 145, 147-148. (+1 more) +Cohesion: 0.16 +Nodes (14): execute_code(), Store a value in the harness state for this session. Use this to save inter, Execute Python code in an isolated sandbox. Use for quantitative analysis,, 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 222 - "Community 222" -Cohesion: 0.18 -Nodes (11): listFields(), Discover available field names before querying /historical or /fundamental., Discover available field names before querying /historical or /fundamental., Discover available field names before querying /historical or /fundamental., Discover available field names before querying /historical or /fundamental., Discover available field names before querying /historical or /fundamental., Discover available field names before querying /historical or /fundamental., Discover available field names before querying /historical or /fundamental. (+3 more) +Cohesion: 0.1 +Nodes (19): _downloadModel(), getEmbeddingModel(), initialize(), initialize(), OrunmilaService, initialize(), P5: register memory maintenance on the shared scheduler. Kept in this ser, registerMemoryMaintenanceJob() (+11 more) ### Community 223 - "Community 223" Cohesion: 0.4 @@ -1559,6 +1578,10 @@ Nodes (5): code:python (import pytest), code:python (import hashlib), code:bash Cohesion: 0.18 Nodes (11): 2.2.1 Complexity hotspots table (H1–H17 condensed to P0/P1/P2), 2.2.2 Blob inventory (LOC table + SRP evidence), 2.2.3 Mass data loads, 2.2.4 Phased fix roadmap (P0/P1/P2), §2.2 CODE EFFICIENCY — O(n²), Complexity & Blob Anti-Patterns, code:block4 (scraper.py:44 671 LOC — mass loads: SELECT * fetchma), code:powershell (ruff check . && ruff format --check .), code:powershell (pytest tests/test_stocks_cache_concurrency.py -v # ThreadPo) (+3 more) +### Community 231 - "Community 231" +Cohesion: 0.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 232 - "Community 232" Cohesion: 0.4 Nodes (5): Bucket A: Security Fixes (quick wins, 30 min), Bucket B: DB Session Cleanup (medium, 1-2 hrs), Bucket C: Testing (medium, 2-3 hrs), Bucket D: Infrastructure (large, 4+ hrs), Recommended Delegation Buckets @@ -1568,8 +1591,8 @@ Cohesion: 0.4 Nodes (5): 8. Build Sequence (4 phases, each independently shippable), Phase 0 — Sandbox foundation (1-2 days, no user-facing change), Phase 1 — MCP exposure of STOCKS_API (1 day), Phase 2 — Refactor PROMETHEUS to agentic (3-5 days, the big one), Phase 3 — Hardening (1-2 days, can ship incrementally) ### Community 234 - "Community 234" -Cohesion: 0.32 -Nodes (14): create(), delete_file(), destroy(), execute(), getClient(), getOrCreate(), hostPath(), list_files() (+6 more) +Cohesion: 0.07 +Nodes (37): chat_stream(), downloadWorkspaceFile(), getHistory(), resumeChatStream(), updateSessionTitle(), verifySessionOwnsership(), OrunmilaSandbox, create() (+29 more) ### Community 236 - "Community 236" Cohesion: 0.5 @@ -1616,8 +1639,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.29 +Nodes (11): compactCotations(), compactRow(), compactValue(), compressResponse(), fixHeaders(), getAbbr(), getNest(), Abbreviation map for a frame (dependency-injected; no cache import). Result (+3 more) ### Community 252 - "Community 252" Cohesion: 0.5 @@ -1636,8 +1659,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.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) +Cohesion: 0.12 +Nodes (11): 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., Score below threshold + accessCount=0 + 90+ days → archived., Score below threshold + accessCount=0 + 90+ days → archived., Low score but accessed recently → not archived. (+3 more) ### Community 258 - "Community 258" Cohesion: 0.67 @@ -1660,8 +1683,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.17 -Nodes (4): POST /memories rejects missing key., POST /memories rejects missing value., Full integration tests using mocked MemoryManager., TestMemoryEndpointsIntegration +Cohesion: 0.1 +Nodes (9): B3Scraper, getCurrentSelic(), getInitialData(), calculateInvestingScore(), initialize(), P5: register the scraper cron jobs on the shared scheduler. Kept in this, registerScraperJobs(), runScraper() (+1 more) ### Community 475 - "Community 475" Cohesion: 0.15 @@ -1691,6 +1714,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.17 +Nodes (17): fetchLivePrices(), fetchXangoScores(), getPositions(), getRebalance(), pricePass(), XANGO quality score per ticker (0-100 scale). One fundamental read per tick, XANGO quality score per ticker (0-100 scale). One fundamental read per ti, XANGO quality score per ticker (0-100 scale). One fundamental read per tick (+9 more) + ### 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 @@ -1728,44 +1755,40 @@ 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.05 -Nodes (37): 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 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 (+29 more) +Cohesion: 0.13 +Nodes (13): Covers lines 100-104, 106: GET /user/sessions/current., Covers lines 100-104, 106: GET /user/sessions/current., Covers lines 100-104, 106: session found., Covers lines 100-104, 106: session found., Covers lines 100-104, 106: GET /user/sessions/current., Covers lines 100-104, 106: session found., Covers line 104: session not found., Covers line 104: session not found. (+5 more) ### Community 495 - "Community 495" Cohesion: 0.05 Nodes (42): 0. The blockers, ranked, 1.1 Process model — exactly one process, several threads, 1.1 Runtime topology — one process, many threads, 1.2 Cache (post-refactor) — RAM sharing works, 1.2 The cache is already the right shape for multi-process, 1.3 Per-process resources that multiply with N workers, 1.3 Per-process state that multiplies with N, 1. Verified current state (+34 more) ### Community 497 - "Community 497" -Cohesion: 0.19 -Nodes (5): buildSystemPrompt(), getClient(), persistEvent(), OrunmilaCompactor, newTokenCache() +Cohesion: 0.17 +Nodes (7): Tests for dynamic ticker index feature, Ticker index should be built when cache is loaded, Ticker index should contain all tickers from cache, Ticker index should be case-insensitive, Looking up ticker should return valid row index, Ticker index should be rebuilt when cache refreshes, TestTickerIndex ### Community 498 - "Community 498" -Cohesion: 0.33 -Nodes (5): Tests for optimized search filtering, Filter should use ticker index for O(1) lookup, Tests for optimized search filtering, Filter should use ticker index for O(1) lookup, TestFilterBySearchTerms +Cohesion: 0.04 +Nodes (42): 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. (+34 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.16 -Nodes (17): createStoredApiKey(), hashApiKey(), initVerifyClient(), isValidStoredKey(), _serviceToken(), verifyAPIKey(), _verifyUrl(), Tests to increase coverage for query.py, key.py, and cache.py in stocks_api. (+9 more) +Cohesion: 0.13 +Nodes (21): generateKey(), createKey(), createStoredApiKey(), hashApiKey(), initVerifyClient(), isValidStoredKey(), _serviceToken(), verifyAPIKey() (+13 more) ### Community 501 - "Community 501" Cohesion: 0.22 Nodes (3): getCurrentSession(), getSessions(), sessionToDict() ### Community 502 - "Community 502" -Cohesion: 0.11 -Nodes (15): Tests for connection pool configuration, Tests for connection pool configuration, Stocks engine should have optimized pool settings, Stocks engine should have optimized pool settings, Tests for lazy JSON deserialization, Tests for lazy JSON deserialization, Query manager should have deserialize method, Query manager should have deserialize method (+7 more) - -### Community 503 - "Community 503" Cohesion: 0.17 -Nodes (7): Tests for dynamic ticker index feature, Ticker index should be built when cache is loaded, Ticker index should contain all tickers from cache, Ticker index should be case-insensitive, Looking up ticker should return valid row index, Ticker index should be rebuilt when cache refreshes, TestTickerIndex +Nodes (7): OrunmilaMemory, OrunmilaSession, Orunmila, createSession(), OrunmilaChatManager, MemoryCandidate, OrunmilaMemory -### Community 504 - "Community 504" -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 +### Community 503 - "Community 503" +Cohesion: 0.32 +Nodes (4): memoryMaintenance(), _create(), After 10 cycles, preference (0.99^10) > context (0.90^10)., TestTypeAwareDecay ### Community 505 - "Community 505" Cohesion: 0.33 @@ -1787,41 +1810,41 @@ Nodes (5): Disputed (already litigated — needs your ruling to proceed), Held o Cohesion: 0.6 Nodes (3): bench(), main(), stats() +### Community 511 - "Community 511" +Cohesion: 0.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 512 - "Community 512" Cohesion: 0.18 Nodes (11): 2.0 Grounding: what the code actually does, 2.1 Hypotheses, 2.3 Scenarios, 2.4 Protocol, 2.5 Metrics, 2.6 Acceptance thresholds — **ALL PROPOSED, freeze after first real run**, 2.7 Results doc layout, 2.8 Feeding `/status` (TODO 14) (+3 more) ### Community 517 - "Community 517" -Cohesion: 0.2 -Nodes (16): baseFrame(), deserializeJsonColumns(), envelope(), fetchLivePayload(), filterBySearchTerms(), _filterCotationByDate(), filterCotationData(), finalize() (+8 more) - -### Community 518 - "Community 518" -Cohesion: 0.11 -Nodes (12): create_memories(), Zero access but score still above threshold → not archived., Already archived memories are skipped., Already archived memories are skipped., Helper to create memories with controlled baseScore, lastAccessedAt, accessCount, Helper to create memories with controlled baseScore, lastAccessedAt, accessCount, Decay applies to ALL active memories, not just accessed ones., Decay applies to ALL active memories, not just accessed ones. (+4 more) +Cohesion: 0.26 +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 519 - "Community 519" -Cohesion: 0.26 -Nodes (10): introspectToken(), verifyAccessToken(), introspect(), FastAPI, addRole(), addRoleToUser(), getCurrentUser(), getRolesList() (+2 more) +Cohesion: 0.12 +Nodes (7): Cover all methods in authentication.py (lines 13-75)., Cover all methods in authentication.py (lines 13-75)., Cover all methods in authentication.py (lines 13-75)., Cover all methods in authentication.py (lines 13-75)., Cover all methods in authentication.py (lines 13-75)., Cover all methods in authentication.py (lines 13-75)., TestAuthenticationManager ### Community 520 - "Community 520" Cohesion: 0.16 Nodes (9): pd.NA is not a string, so lambda returns it unchanged., All four SPECIAL_COLS should parse correctly when mixed with None., pd.NA is not a string, so lambda returns it unchanged., pd.NA is not a string, so lambda returns it unchanged., pd.NA is not a string, so lambda returns it unchanged., pd.NA is not a string, so lambda returns it unchanged., All four SPECIAL_COLS should parse correctly when mixed with None., All four SPECIAL_COLS should parse correctly when mixed with None. (+1 more) ### Community 521 - "Community 521" -Cohesion: 0.33 -Nodes (3): buildClient(), connect(), MCPClientPool +Cohesion: 0.29 +Nodes (7): check_cache(), Read a file from the sandbox filesystem. Args: path: Absolute pa, List files in the workspace directory. Args: path: Directory pat, Upload a file to the sandbox filesystem. Use this to push data files (CSV,, Check if a computed result exists in the cache. Use before executing expens, read_sandbox_file(), upload_to_sandbox() ### Community 522 - "Community 522" Cohesion: 0.18 Nodes (11): 2.0 Grounding: what the code actually does, 2.1 Hypotheses, 2.3 Scenarios, 2.4 Protocol, 2.5 Metrics, 2.6 Acceptance thresholds — **ALL PROPOSED, freeze after first real run**, 2.7 Results doc layout, 2.8 Feeding `/status` (TODO 14) (+3 more) ### Community 523 - "Community 523" -Cohesion: 0.24 -Nodes (5): lifespan(), status(), checkDatabaseConnection(), checkSingleDb(), runMigrations() +Cohesion: 0.18 +Nodes (5): createSession(), getSessionById(), parseDeviceFields(), revokeSession(), validateSession() ### Community 524 - "Community 524" -Cohesion: 0.11 -Nodes (17): 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., Covers lines 48-49: jwt.ExpiredSignatureError., Covers lines 45-51: verifyAccessToken with expired and invalid tokens., Covers lines 48-49: jwt.ExpiredSignatureError. (+9 more) +Cohesion: 0.36 +Nodes (4): countTokens(), getTokenizer(), PrometheusSummarizer, smartTruncate() ### Community 525 - "Community 525" Cohesion: 0.11 @@ -1832,12 +1855,16 @@ Cohesion: 0.33 Nodes (7): buildKey(), clearAll(), getMatrix(), invalidateUser(), runAwait(), main(), One-shot: renormalize stored embeddings to unit norm. Usage: python scripts/back ### Community 528 - "Community 528" -Cohesion: 0.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.57 +Nodes (6): addRole(), addRoleToUser(), getCurrentUser(), getRolesList(), hasRole(), toDict() ### Community 529 - "Community 529" -Cohesion: 0.33 -Nodes (6): dispatchToolCall must route memory tool names via TOOL_REGISTRY., dispatchToolCall must route memory tool names to executeMemoryTool., dispatchToolCall must route memory tool names to executeMemoryTool., dispatchToolCall must route memory tool names to executeMemoryTool., dispatchToolCall must route memory tool names to executeMemoryTool., TestDispatchRoutesMemoryTools +Cohesion: 0.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 530 - "Community 530" +Cohesion: 0.2 +Nodes (10): code:bash (git add ), code:python (from main.models.base import Base), code:python (from sqlalchemy import Column, Date, Enum, ForeignKey, Integ), code:bash (git add main/models/wallet.py tests/test_wallet_models.py), code:python (import main.models.wallet # noqa: F401), code:bash (git add migrations/env.py migrations/versions/_wallet_t), Review Focus, Task 2: Wallet ORM models (5 tables, `user_db`) (+2 more) ### Community 532 - "Community 532" Cohesion: 0.5 @@ -1852,16 +1879,16 @@ 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.18 -Nodes (11): client(), TestClient with all routers mounted — no lifespan (no DB/service init). O, TestClient with all routers mounted — no lifespan (no DB/service init). O, TestClient with all routers mounted — no lifespan (no DB/service init). O, TestClient with all routers mounted — no lifespan (no DB/service init). O, TestClient with all routers mounted — no lifespan (no DB/service init). O, TestClient with stocks router + verifyAPIKey + getCurrentUser overrides., TestClient with all routers mounted — no lifespan (no DB/service init). O (+3 more) +Cohesion: 0.27 +Nodes (10): get_wallet_performance(), Compute time-weighted return, volatility, and dividends for a wallet or ticker., Compute time-weighted return, volatility, and dividends for a wallet or ticker., fetchCachedClose(), fetchMarketDividends(), fetchPadraoCloses(), stocksApiBase(), stocksApiHeaders() (+2 more) ### Community 536 - "Community 536" -Cohesion: 0.14 -Nodes (12): initialize(), P5: register memory maintenance on the shared scheduler. Kept in this ser, registerMemoryMaintenanceJob(), initialize(), P5: register the session-cleanup job on the shared scheduler. Kept in thi, registerSessionCleanupJobs(), UserService, getSharedScheduler() (+4 more) +Cohesion: 0.33 +Nodes (3): initialize(), MCPDetectMiddleware, StocksAPIService ### Community 538 - "Community 538" -Cohesion: 0.14 -Nodes (13): dispatchToolCall(), execute_code(), list_files(), Read a file from the workspace. Args: path: Path to the file (e., Write a file to the workspace. Use this to save data files (CSV, JSON, scri, List files in the workspace directory. Args: path: Directory pat, Get a download link for a workspace file to share with the user. Use this, Search user's saved memories, preferences, and past analysis context. Use (+5 more) +Cohesion: 0.25 +Nodes (8): Read a file from the workspace. Args: path: Path to the file (e., Read a file from the workspace. Args: path: Path to the file (e., Read a file from the workspace. Args: path: Path to the file (e., Read a file from the workspace. Args: path: Path to the file (e., Read a file from the sandbox filesystem. Args: path: Absolute pa, Read a file from the sandbox filesystem. Args: path: Absolute pa, Read a file from the workspace. Args: path: Path to the file (e., read_file() ### Community 539 - "Community 539" Cohesion: 0.22 @@ -1872,8 +1899,8 @@ Cohesion: 0.29 Nodes (6): code:python (import argparse), code:bash (git add bench/bench_memory_vector.py), Global Constraints, Lane 4: Before/After Bench Implementation Plan, Task 1: Bench script with synthetic scale sweep, Task 2: Record baseline and post-lane numbers ### Community 541 - "Community 541" -Cohesion: 0.2 -Nodes (9): Covers lines 66, 68-72, 74: GET /user/sessions., Covers lines 66, 68-72, 74: GET /user/sessions., Covers lines 66, 68-72, 74: full sessions listing., Covers lines 66, 68-72, 74: full sessions listing., Covers lines 66, 68-72, 74: GET /user/sessions., Covers lines 66, 68-72, 74: full sessions listing., Covers lines 66, 68-72, 74: GET /user/sessions., Covers lines 66, 68-72, 74: full sessions listing. (+1 more) +Cohesion: 0.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 542 - "Community 542" Cohesion: 0.5 @@ -1883,13 +1910,17 @@ Nodes (3): at, label, rows Cohesion: 0.2 Nodes (9): Invalid date format raises exception (line 132)., Invalid date format raises exception (line 132)., Invalid date format raises exception (line 132)., Invalid date format raises exception (line 132)., Invalid date format raises exception (line 132)., Invalid date format raises exception (line 132)., Invalid date format raises exception (line 132)., Invalid date format raises exception (line 132). (+1 more) +### Community 544 - "Community 544" +Cohesion: 0.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 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.16 -Nodes (14): execute_code(), Store a value in the harness state for this session. Use this to save inter, Execute Python code in an isolated sandbox. Use for quantitative analysis,, Execute Python code in an isolated sandbox. Use for quantitative analysis,, Execute Python code in an isolated sandbox. Use for quantitative analysis,, Execute Python code in an isolated sandbox. Use for quantitative analysis,, Execute Python code in an isolated sandbox. Use for quantitative analysis,, Execute Python code in an isolated sandbox. Use for quantitative analysis, (+6 more) +Cohesion: 0.29 +Nodes (6): GET /cotations without search returns 422., GET /cotations without search returns 422., GET /cotations without search returns 422., GET /cotations without search returns 422., GET /cotations without search returns 422., GET /cotations without search returns 422. ### Community 547 - "Community 547" Cohesion: 0.33 @@ -1943,65 +1974,65 @@ Nodes (3): Current code (exact), Lane contracts (interfaces between lanes), Vect 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.22 -Nodes (4): Authentication System, Google OAuth, JWT Authentication, TestSessionExpiryConfig +### Community 561 - "Community 561" +Cohesion: 0.1 +Nodes (9): 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(), Tests for main/utils/http_session.py — covers all branches. (+1 more) ### Community 563 - "Community 563" Cohesion: 0.33 -Nodes (5): Tests for optimized search filtering, Tests for optimized search filtering, Filter should use ticker index for O(1) lookup, Filter should use ticker index for O(1) lookup, TestFilterBySearchTerms +Nodes (5): Every function in TOOL_REGISTRY must have Gemini-safe signatures. Custom cl, Every function in TOOL_REGISTRY must have Gemini-safe signatures. Custom cl, Regression: HarnessState must never leak into tool signatures., Regression: HarnessState must never leak into tool signatures., TestGeminiCompatibility ### Community 564 - "Community 564" -Cohesion: 0.22 -Nodes (6): Store a memory about the user's preferences, analysis results, or feedback., save_memory(), batchCosineSimilarity(), contentHash(), embed(), normalizeRows() +Cohesion: 0.27 +Nodes (33): Base, BaseModel, EarningsSync, WalletCreate, Earning, Holding, Snapshot, Target (+25 more) ### Community 565 - "Community 565" Cohesion: 0.33 Nodes (6): Tests covering key.py lines 48-66., Tests covering key.py lines 48-66., Tests covering key.py lines 48-66., Tests covering key.py lines 48-66., Tests covering key.py lines 48-66., TestCreateKey -### Community 566 - "Community 566" -Cohesion: 0.33 -Nodes (5): Non-JSON-dict/list string is left as-is., Non-JSON-dict/list string is left as-is., Non-JSON-dict/list string is left as-is., Non-JSON-dict/list string is left as-is., Non-JSON-dict/list string is left as-is. - ### Community 567 - "Community 567" Cohesion: 0.14 Nodes (11): Integration tests for the verifyAPIKey function., Test successful API key verification., Integration tests for the verifyAPIKey function., Test API key verification when quota is exceeded., Test API key verification with invalid key., Test API key verification with missing key., Test API key verification with invalid key., Test that API key system can be disabled. (+3 more) -### Community 568 - "Community 568" -Cohesion: 0.11 -Nodes (16): Covers lines 13, 17, 19-20, 22-27: UserManager.addRoleToUser., Covers lines 13, 17, 19-20, 22-27: UserManager.addRoleToUser., Covers lines 17, 22-27: user found, role not present, role added., Covers lines 17, 22-27: user found, role not present, role added., Covers lines 13, 17, 19-20, 22-27: UserManager.addRoleToUser., Covers lines 17, 22-27: user found, role not present, role added., Covers lines 13, 17, 19-20, 22-27: UserManager.addRoleToUser., Covers lines 17, 22-27: user found, role not present, role added. (+8 more) - ### Community 569 - "Community 569" -Cohesion: 0.14 -Nodes (8): initialize(), initialize(), OrunmilaService, initialize(), MCPDetectMiddleware, StocksAPIService, getApp(), runAll() +Cohesion: 0.39 +Nodes (8): _build_error_response(), buildErrorResponse(), generic_exception_handler(), genericExceptionHandler(), http_exception_handler(), httpExceptionHandler(), validation_exception_handler(), validationExceptionHandler() ### Community 570 - "Community 570" Cohesion: 0.33 Nodes (6): 2.2 Tooling, code:bash (# Windows/Docker Desktop: do NOT use --network host (the Lin), code:bash (curl -s -o /dev/null -w '%header{x-cache-status}\n' -H "X-AP), code:bash (docker stats --no-stream --format "{{.Name}},{{.CPUPerc}},{{), code:bash (docker exec api sh -c "pidstat -w -p 1 1 30" # if sysst), code:block15 (tests/perf/nginx/) ### Community 571 - "Community 571" -Cohesion: 0.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.25 +Nodes (8): code:python (TIPO_MAP = {"Dividendo": "Div", "JCP": "JSCP", "Juros Sobre ), code:python (from freezegun import freeze_time), code:bash (git add main/service/wallet_service.py main/controller/walle), code:python (def _flat_series_with_one_div(url, params=None, headers=None), code:bash (git add main/service/wallet_service.py main/controller/walle), Goal 2 — P2 earnings + performance (starts only after Goal 1 complete), Task P2-2: Earnings sync (accrue + transition, pull-based), Task P2-3: Performance windows (on-demand reconstruction, no new table) ### Community 572 - "Community 572" -Cohesion: 0.39 -Nodes (8): _build_error_response(), buildErrorResponse(), generic_exception_handler(), genericExceptionHandler(), http_exception_handler(), httpExceptionHandler(), validation_exception_handler(), validationExceptionHandler() +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 573 - "Community 573" -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() +Cohesion: 0.29 +Nodes (6): Global Constraints, Goal 3 — P3+ assist + narration (starts only after Goal 2 complete), Mansa Wallet Implementation Plan (P1 + P2 + P3+), Task P3-0: Write the P3+ detailed plan (required before P3-1/P3-2), Task P3-1: Ratings-assist tuning (gated on the P3+ plan), Task P3-2: Orunmila narration tools (gated on the P3+ plan) ### Community 574 - "Community 574" -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.12 +Nodes (13): create_memories(), Decay happens first, then archive check with new scores., Decay happens first, then archive check with new scores., 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, Helper to create memories with controlled baseScore, lastAccessedAt, accessCount, Decay applies to ALL active memories, not just accessed ones. (+5 more) + +### Community 575 - "Community 575" +Cohesion: 0.13 +Nodes (8): create_entry_route(), delete_entry_route(), list_earnings_route(), list_entries_route(), serialize_earning(), serialize_entry(), serialize_holding(), update_entry_route() + +### Community 576 - "Community 576" +Cohesion: 0.1 +Nodes (5): FastAPI, Tests for inline pagination params (used in user + prometheus controllers)., TestPaginationParams, PaginationParams, createWallet() ### 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). +Nodes (5): Non-JSON-dict/list string is left as-is., Non-JSON-dict/list string is left as-is., Non-JSON-dict/list string is left as-is., Non-JSON-dict/list string is left as-is., Non-JSON-dict/list string is left as-is. ### Community 578 - "Community 578" -Cohesion: 0.47 -Nodes (3): TestCleanup, cleanup(), Close the main thread's session at interpreter shutdown. +Cohesion: 0.29 +Nodes (7): code:python (def make_wallet_client(mock_identity=None, db=None):), code:python (import main.models.wallet # noqa: F401), code:python (def test_list_wallets_returns_only_mine(dbSession):), code:python (from sqlalchemy.orm import Session), code:python (from fastapi import APIRouter, Depends), code:bash (git add main/controller/wallet_controller.py main/service/wa), Task 5: Wallets CRUD + mount + `make_wallet_client` ### Community 579 - "Community 579" Cohesion: 0.33 @@ -2019,41 +2050,37 @@ Nodes (8): 1. Feature inventory + nav structure, 2. User lifecycle end-to-end, 3 Cohesion: 0.13 Nodes (14): 1.1 Functional (per surface; tags: EXISTS = build on it, PARTIAL = half reusable, MISSING = greenfield), 1.2 Non-functional, 1. Requirements, 2. Domain model, 3. API contracts (all under `/api/wallet`; chain: `main/controller/wallet_controller.py` → `main/service/wallet_service.py::` → `main/models/wallet.py::`; auth `Depends(UserManager.getCurrentUser)` + `Depends(getSession)` throughout), 4. Phased build plan (writing-plans: each phase independently reviewable; reviewer PASS per phase), 5. Risks / assumptions (honest flags carried over — do not treat as fact), 6.1 DB & migrations (`user_db`) — READY, 2 actions (+6 more) -### Community 584 - "Community 584" -Cohesion: 0.32 -Nodes (4): memoryMaintenance(), _create(), After 10 cycles, preference (0.99^10) > context (0.90^10)., TestTypeAwareDecay - ### Community 585 - "Community 585" Cohesion: 0.33 -Nodes (5): Every function in TOOL_REGISTRY must have Gemini-safe signatures. Custom cl, Every function in TOOL_REGISTRY must have Gemini-safe signatures. Custom cl, Regression: HarnessState must never leak into tool signatures., Regression: HarnessState must never leak into tool signatures., TestGeminiCompatibility +Nodes (5): Environment, Standing rules (do not re-derive), Swarm protocol (all three goals), The three goals (sequential — one at a time, never parallel), Wallet Orchestrator Prompt (P1 + P2 + P3+ — one goal per scope) ### Community 586 - "Community 586" -Cohesion: 0.24 -Nodes (4): Pytest Testing, PrometheusSettings, TestSandboxConfig, TestConfig +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 587 - "Community 587" -Cohesion: 0.4 -Nodes (5): Category 8: Testing Gaps (MEDIUM), Issue 8.1 — No integration tests for full request lifecycle, Issue 8.2 — No tests for scraper, stocks query, or cache, Issue 8.3 — No tests for Google OAuth callback, Issue 8.4 — No tests for session cleanup +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 588 - "Community 588" -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.33 +Nodes (5): Tests for optimized search filtering, Tests for optimized search filtering, Filter should use ticker index for O(1) lookup, Filter should use ticker index for O(1) lookup, TestFilterBySearchTerms ### Community 589 - "Community 589" -Cohesion: 0.33 -Nodes (6): makeChat must include MEMORY_TOOLS alongside MCP sessions., makeChat must include MEMORY_TOOLS alongside MCP sessions., makeChat must include MEMORY_TOOLS alongside MCP sessions., makeChat must include MEMORY_TOOLS alongside MCP sessions., makeChat must include MEMORY_TOOLS alongside MCP sessions., TestMakeChatIncludesMemoryTools +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 590 - "Community 590" -Cohesion: 0.29 -Nodes (5): buildClient(), connect(), ensureFastmcp(), MCPClientPool, _parseServers() +Cohesion: 0.43 +Nodes (4): _extractCredential(), _introspectUrl(), introspectUser(), _serviceToken() ### Community 591 - "Community 591" Cohesion: 0.4 Nodes (4): 0. Purpose and constraints, Next actions (not in scope here), nginx Scaling Plan — reverse proxy + response cache for `/stocks`, and the multi-server evolution, Open decisions (blocking or product-owned) ### Community 592 - "Community 592" -Cohesion: 0.17 -Nodes (7): 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)., TestDecayAndArchiveTogether +Cohesion: 0.4 +Nodes (4): getGoogleSSO(), googleLogin(), test_get_google_sso_default_redirect(), test_get_google_sso_with_redirect() ### Community 593 - "Community 593" Cohesion: 0.5 @@ -2067,6 +2094,10 @@ Nodes (4): 1.4 Phase P1 — cache locations, TTL table, directives, code:nginx ( Cohesion: 0.19 Nodes (7): Tests for thread safety utilities (Issues 5 & 6). Issue 5: DiscordHandler use, Verify getSession returns thread-local sessions under concurrency., getSession() must give each thread its own Session., connectivity.checkServiceConnection must call getSession(), not use a global Ses, connectivity.checkServiceConnection must call getSession(), not use a global Ses, TestConcurrentGetSession, TestConcurrentHttpProxy +### Community 596 - "Community 596" +Cohesion: 0.4 +Nodes (5): Tests covering key.py lines 15-40. Uses asyncio.run() since pytest-asyncio, Tests covering key.py lines 15-40. Uses asyncio.run() since pytest-asyncio, Tests covering key.py lines 15-40. Uses asyncio.run() since pytest-asyncio, Tests covering key.py lines 15-40. Uses asyncio.run() since pytest-asyncio, TestVerifyAPIKey + ### Community 597 - "Community 597" Cohesion: 0.5 Nodes (4): 1.3 Phase P0 — nginx service + config skeleton, code:yaml (nginx:), code:nginx (proxy_cache_path /var/cache/nginx/stocks), code:nginx (upstream stocks_api {) @@ -2076,67 +2107,131 @@ Cohesion: 0.5 Nodes (4): 1.4 Phase P1 — cache locations, TTL table, directives, code:nginx (proxy_pass http://stocks_api;), code:nginx (server {), code:bash (K=sk_test_...; U='http://localhost/stocks/historical?search=) ### Community 599 - "Community 599" -Cohesion: 0.33 -Nodes (10): Tests for main/utils/logging_config.py — covers DiscordHandler branches., test_discord_disabled(), test_discord_no_webhook(), test_exception_in_submit(), test_level_below_error(), test_message_truncation(), test_submit_called_on_error(), test_with_exception_info() (+2 more) +Cohesion: 0.38 +Nodes (9): Tests for main/utils/logging_config.py — covers DiscordHandler branches., test_discord_disabled(), test_discord_no_webhook(), test_exception_in_submit(), test_level_below_error(), test_message_truncation(), test_submit_called_on_error(), test_with_exception_info() (+1 more) ### Community 600 - "Community 600" -Cohesion: 0.22 -Nodes (7): Integration tests for all query optimizations, Integration tests for all query optimizations, All optimizations should be implemented, All optimizations should be implemented, Query filter should use ticker index, Query filter should use ticker index, TestQueryOptimization +Cohesion: 0.4 +Nodes (5): code:python (def test_permission_enum_values():), code:python (class Permission(IntFlag):), code:markdown (| `USER` | `WALLET` — default on registration |), code:bash (git add main/utils/roles.py tests/test_roles.py docs/authent), Task 1: `Permission.WALLET` on the base role + ripple fixes -### Community 602 - "Community 602" -Cohesion: 0.32 -Nodes (7): create_memory(), createMemory(), _downloadModel(), embed(), getEmbeddingModel(), executeMemoryTool(), executeMemoryTool() +### Community 601 - "Community 601" +Cohesion: 0.4 +Nodes (5): code:python (import requests), code:python (import os), code:python (def fetchCachedClose(ticker: str) -> float | None:), code:bash (git add main/service/wallet_service.py main/controller/walle), Task 7: Positions — live-price join over HTTP ### Community 603 - "Community 603" -Cohesion: 0.4 -Nodes (5): Tests covering key.py lines 15-40. Uses asyncio.run() since pytest-asyncio, Tests covering key.py lines 15-40. Uses asyncio.run() since pytest-asyncio, Tests covering key.py lines 15-40. Uses asyncio.run() since pytest-asyncio, Tests covering key.py lines 15-40. Uses asyncio.run() since pytest-asyncio, TestVerifyAPIKey +Cohesion: 0.29 +Nodes (6): Covers lines 48-49: user not in DB., Covers lines 48-49: user not in DB., Covers lines 48-49: user not in DB., Covers lines 48-49: user not in DB., Covers lines 48-49: user not in DB., Covers line 16: empty password raises ValueError. ### Community 604 - "Community 604" 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 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 605 - "Community 605" -Cohesion: 0.29 -Nodes (6): Covers line 18: GET /stocks/health., Covers line 18: GET /stocks/health., Covers line 18: GET /stocks/health., Covers line 18: GET /stocks/health., Covers line 18: GET /stocks/health., TestStocksApiHealth +Cohesion: 0.4 +Nodes (5): execute_code(), 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, ### Community 606 - "Community 606" -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.2 +Nodes (9): 1. Orunmila's loop today, 2. Where Orunmila is already ahead — do not rebuild, 3. The 12 modern patterns vs Orunmila, 4. P0 — reliability (do first, each one PR), 5. P1 — context quality (biggest behavior delta per line), 6. P2 — structural (larger, sequenced after P0/P1), 7. P3 / later — deliberate scope, not accidents, 8. Sources (+1 more) + +### Community 607 - "Community 607" +Cohesion: 0.5 +Nodes (4): code:python (from fastapi import Depends, FastAPI), code:python (import logging), code:bash (git add main/app/wallet/auth.py tests/test_wallet_auth.py), Task 4: Wallet auth dependency (introspect contract + raw-token resolver) ### Community 608 - "Community 608" -Cohesion: 0.27 -Nodes (4): Test that invalid API key returns zero rows affected., Test that multiple API keys have independent quotas., Test that invalid API key returns zero rows affected., Test that multiple API keys have independent quotas. +Cohesion: 0.5 +Nodes (4): code:python (from main.models.wallet import Earning), code:python (class Earning(Base):), code:bash (git add main/models/wallet.py migrations/versions/_wall), Task P2-1: `Earning` model + second migration revision + +### Community 609 - "Community 609" +Cohesion: 0.33 +Nodes (3): batchCosineSimilarity(), contentHash(), normalizeRows() + +### Community 610 - "Community 610" +Cohesion: 0.2 +Nodes (9): Covers lines 66, 68-72, 74: GET /user/sessions., Covers lines 66, 68-72, 74: GET /user/sessions., Covers lines 66, 68-72, 74: full sessions listing., Covers lines 66, 68-72, 74: full sessions listing., Covers lines 66, 68-72, 74: GET /user/sessions., Covers lines 66, 68-72, 74: full sessions listing., Covers lines 66, 68-72, 74: GET /user/sessions., Covers lines 66, 68-72, 74: full sessions listing. (+1 more) + +### Community 611 - "Community 611" +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 612 - "Community 612" +Cohesion: 0.67 +Nodes (3): code:python (def test_summary_math_and_snapshot_upsert(dbSession, monkeyp), code:bash (git add main/service/wallet_service.py main/controller/walle), Task 8: Summary + snapshots + allocation + targets + ratings + +### Community 613 - "Community 613" +Cohesion: 0.11 +Nodes (15): Tests for connection pool configuration, Tests for connection pool configuration, Stocks engine should have optimized pool settings, Stocks engine should have optimized pool settings, Tests for lazy JSON deserialization, Tests for lazy JSON deserialization, Query manager should have deserialize method, Query manager should have deserialize method (+7 more) + +### Community 614 - "Community 614" +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 616 - "Community 616" +Cohesion: 0.4 +Nodes (5): list_files(), 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, List files in the workspace directory. Args: path: Directory pat + +### Community 617 - "Community 617" +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 618 - "Community 618" -Cohesion: 0.5 -Nodes (4): code:python (from dataclasses import dataclass), code:bash (git add main/app/wallet/__init__.py main/app/wallet/math.py ), code:python (from datetime import date), Task 3: Pure derivation math +Cohesion: 0.2 +Nodes (16): baseFrame(), deserializeJsonColumns(), envelope(), fetchLivePayload(), filterBySearchTerms(), _filterCotationByDate(), filterCotationData(), finalize() (+8 more) + +### Community 620 - "Community 620" +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 621 - "Community 621" -Cohesion: 0.83 -Nodes (4): getMatrix(), getMatrixAsync(), matrixKey(), matrixUserTag() +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 623 - "Community 623" -Cohesion: 0.67 -Nodes (3): checkServiceConnection — success, not found, errors., checkServiceConnection — success, not found, errors., TestCheckServiceConnection +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 624 - "Community 624" -Cohesion: 0.67 -Nodes (3): checkMySqlConnection — success, errors, engine=None paths., checkMySqlConnection — success, errors, engine=None paths., TestCheckMySqlConnection +### Community 625 - "Community 625" +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 627 - "Community 627" +Cohesion: 0.29 +Nodes (6): Exercises the tzinfo-is-None branch (line 144-148)., Exercises the tzinfo-is-None branch (line 144-148)., Exercises the tzinfo-is-None branch (line 144-148)., Exercises the tzinfo-is-None branch (line 144-148)., Exercises the tzinfo-is-None branch (line 144-148)., Exercises the tzinfo-is-None branch (line 144-148). + +### Community 628 - "Community 628" +Cohesion: 0.29 +Nodes (6): Exercises the expiresAt-is-None branch (line 143)., Exercises the expiresAt-is-None branch (line 143)., Exercises the expiresAt-is-None branch (line 143)., Exercises the expiresAt-is-None branch (line 143)., Exercises the expiresAt-is-None branch (line 143)., Exercises the expiresAt-is-None branch (line 143). + +### Community 630 - "Community 630" +Cohesion: 0.33 +Nodes (6): makeChat must include MEMORY_TOOLS alongside MCP sessions., makeChat must include MEMORY_TOOLS alongside MCP sessions., makeChat must include MEMORY_TOOLS alongside MCP sessions., makeChat must include MEMORY_TOOLS alongside MCP sessions., makeChat must include MEMORY_TOOLS alongside MCP sessions., TestMakeChatIncludesMemoryTools + +### Community 632 - "Community 632" +Cohesion: 0.5 +Nodes (3): getWalletIdentity(), requireWalletOwnership(), resolveRawToken() + +### Community 633 - "Community 633" +Cohesion: 0.5 +Nodes (4): code:python (def test_compra_average_includes_costs(dbSession):), code:python (from datetime import date), code:bash (git add main/service/wallet_service.py main/controller/walle), Task 6: Entries ledger + holdings recalc (avg-price engine) + +### Community 634 - "Community 634" +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 ## Knowledge Gaps -- **3360 isolated node(s):** `$schema`, `style`, `rsc`, `tsx`, `config` (+3355 more) +- **3493 isolated node(s):** `$schema`, `style`, `rsc`, `tsx`, `config` (+3488 more) These have ≤1 connection - possible missing edges or undocumented components. - **243 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 586` to `Authentication Core`, `Frontend Components`, `Community 129`, `Data Models & Types`, `Community 131`, `Community 518`, `Community 519`, `Community 135`, `Community 138`, `Community 140`, `Community 527`, `Community 16`, `Community 18`, `Community 147`, `Community 24`, `Community 25`, `Community 27`, `Community 29`, `Community 32`, `Community 33`, `Community 40`, `Community 44`, `Community 560`, `Community 49`, `Community 51`, `Community 186`, `Community 59`, `Community 188`, `Community 61`, `Community 584`, `Community 595`, `Community 599`, `Community 474`, `Community 604`, `Community 93`, `Community 477`, `Community 611`, `Community 100`, `Community 101`, `Community 491`, `Community 500`, `Community 502`, `Community 120`, `Community 251`, `Community 511`?** - _High betweenness centrality (0.078) - this node is a cross-community bridge._ -- **Why does `FastAPI` connect `Community 519` to `Community 129`, `Community 131`, `Community 517`, `Community 523`, `Community 18`, `Community 147`, `Community 33`, `Community 34`, `Community 40`, `Community 560`, `Community 569`, `Community 186`, `Community 58`, `Community 572`, `Community 68`, `Community 71`, `Community 73`, `Community 81`, `Community 84`, `Community 604`, `Community 477`, `Community 482`, `Community 612`, `Community 491`, `Community 500`, `Community 501`, `Community 120`, `Community 511`?** - _High betweenness centrality (0.050) - this node is a cross-community bridge._ -- **Why does `UserManager` connect `Community 45` to `Community 256`, `Prometheus Agent`, `Community 519`, `Community 136`, `Prometheus Memory`, `Community 524`, `Community 141`, `User Roles & Permissions`, `Community 148`, `Community 22`, `Community 28`, `Community 541`, `Community 37`, `Community 172`, `Community 47`, `Community 565`, `Community 568`, `Community 58`, `Community 61`, `Community 67`, `Community 474`, `Community 603`, `Community 605`, `Community 221`, `Community 99`, `Community 107`, `Community 493`, `Community 112`, `Community 114`, `Community 120`?** - _High betweenness centrality (0.027) - this node is a cross-community bridge._ +- **Why does `Pytest Testing` connect `Community 561` to `Authentication Core`, `Frontend Components`, `Community 129`, `Data Models & Types`, `Community 131`, `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 40`, `Community 44`, `Community 49`, `Community 51`, `Community 59`, `Community 188`, `Community 61`, `Community 574`, `Community 576`, `Community 72`, `Community 586`, `Community 595`, `Community 599`, `Community 93`, `Community 477`, `Community 98`, `Community 100`, `Community 613`, `Community 102`, `Community 231`, `Community 504`, `Community 107`, `Community 491`, `Community 500`, `Community 503`, `Community 120`?** + _High betweenness centrality (0.070) - this node is a cross-community bridge._ +- **Why does `FastAPI` connect `Community 576` to `Community 129`, `Community 528`, `Community 18`, `Community 147`, `Community 152`, `Community 26`, `Community 33`, `Community 34`, `Community 40`, `Community 172`, `Community 54`, `Community 569`, `Community 58`, `Community 59`, `Community 575`, `Community 67`, `Community 68`, `Community 197`, `Community 71`, `Community 73`, `Community 590`, `Community 84`, `Community 120`, `Community 477`, `Community 98`, `Community 101`, `Community 504`, `Community 618`, `Community 107`, `Community 234`, `Community 491`, `Community 112`, `Community 500`, `Community 501`, `Community 632`?** + _High betweenness centrality (0.063) - this node is a cross-community bridge._ +- **Why does `UserManager` connect `Community 45` to `Prometheus Agent`, `Prometheus Memory`, `Community 140`, `Community 141`, `User Roles & Permissions`, `Community 528`, `Community 529`, `Community 148`, `Community 22`, `Community 28`, `Community 37`, `Community 47`, `Community 565`, `Community 58`, `Community 61`, `Community 63`, `Community 194`, `Community 72`, `Community 596`, `Community 610`, `Community 99`, `Community 614`, `Community 493`, `Community 112`, `Community 498`, `Community 114`, `Community 120`, `Community 511`?** + _High betweenness centrality (0.034) - this node is a cross-community bridge._ - **Are the 72 inferred relationships involving `StocksCacheManager` (e.g. with `TestStocksCacheManager` and `TestVerifyAPIKey`) actually correct?** _`StocksCacheManager` has 72 INFERRED edges - model-reasoned connections that need verification._ - **Are the 52 inferred relationships involving `HarnessState` (e.g. with `Prometheus` and `.streamMessage()`) actually correct?** diff --git a/graphify-out/graph.json b/graphify-out/graph.json index 7eda6a52..da973be1 100644 --- a/graphify-out/graph.json +++ b/graphify-out/graph.json @@ -237,7 +237,7 @@ "source_file": "config.py", "source_location": "L90", "id": "server_config_config", - "community": 45, + "community": 564, "norm_label": "config" }, { @@ -264,43 +264,43 @@ "source_file": "run.py", "source_location": "L1", "id": "run_py", - "community": 523, + "community": 59, "norm_label": "run.py" }, { "label": "lifespan()", "file_type": "code", "source_file": "run.py", - "source_location": "L28", + "source_location": "L29", "id": "server_run_lifespan", - "community": 523, + "community": 59, "norm_label": "lifespan()" }, { "label": "health()", "file_type": "code", "source_file": "run.py", - "source_location": "L73", + "source_location": "L82", "id": "server_run_health", - "community": 523, + "community": 59, "norm_label": "health()" }, { "label": "status()", "file_type": "code", "source_file": "run.py", - "source_location": "L78", + "source_location": "L87", "id": "server_run_status", - "community": 523, + "community": 59, "norm_label": "status()" }, { "label": "triggerScraper()", "file_type": "code", "source_file": "run.py", - "source_location": "L112", + "source_location": "L122", "id": "server_run_triggerscraper", - "community": 523, + "community": 59, "norm_label": "triggerscraper()" }, { @@ -2190,7 +2190,7 @@ "source_file": "main/app/authentication/authentication.py", "source_location": "L1", "id": "main_app_authentication_authentication_py", - "community": 612, + "community": 112, "norm_label": "authentication.py" }, { @@ -2199,7 +2199,7 @@ "source_file": "main/app/authentication/authentication.py", "source_location": "L14", "id": "authentication_authentication_authenticationmanager", - "community": 172, + "community": 112, "norm_label": "authenticationmanager" }, { @@ -2208,7 +2208,7 @@ "source_file": "main/app/authentication/authentication.py", "source_location": "L16", "id": "authentication_authentication_createuseraccount", - "community": 612, + "community": 43, "norm_label": "createuseraccount()" }, { @@ -2217,7 +2217,7 @@ "source_file": "main/app/authentication/authentication.py", "source_location": "L51", "id": "authentication_authentication_authenticategoogleuser", - "community": 612, + "community": 112, "norm_label": "authenticategoogleuser()" }, { @@ -2235,7 +2235,7 @@ "source_file": "main/app/authentication/authentication.py", "source_location": "L79", "id": "authentication_authentication_resolveuniqueusername", - "community": 612, + "community": 112, "norm_label": "resolveuniqueusername()" }, { @@ -2253,7 +2253,7 @@ "source_file": "main/app/authentication/introspect.py", "source_location": "L1", "id": "main_app_authentication_introspect_py", - "community": 519, + "community": 172, "norm_label": "introspect.py" }, { @@ -2262,7 +2262,7 @@ "source_file": "main/app/authentication/introspect.py", "source_location": "L14", "id": "authentication_introspect_introspecttoken", - "community": 519, + "community": 172, "norm_label": "introspecttoken()" }, { @@ -2271,7 +2271,7 @@ "source_file": "main/app/authentication/session.py", "source_location": "L1", "id": "main_app_authentication_session_py", - "community": 149, + "community": 523, "norm_label": "session.py" }, { @@ -2280,7 +2280,7 @@ "source_file": "main/app/authentication/session.py", "source_location": "L13", "id": "authentication_session_parsedevicefields", - "community": 149, + "community": 523, "norm_label": "parsedevicefields()" }, { @@ -2289,7 +2289,7 @@ "source_file": "main/app/authentication/session.py", "source_location": "L30", "id": "authentication_session_sessionmanager", - "community": 172, + "community": 112, "norm_label": "sessionmanager" }, { @@ -2298,7 +2298,7 @@ "source_file": "main/app/authentication/session.py", "source_location": "L32", "id": "authentication_session_createsession", - "community": 149, + "community": 523, "norm_label": "createsession()" }, { @@ -2307,7 +2307,7 @@ "source_file": "main/app/authentication/session.py", "source_location": "L68", "id": "authentication_session_getusersessions", - "community": 149, + "community": 523, "norm_label": "getusersessions()" }, { @@ -2316,7 +2316,7 @@ "source_file": "main/app/authentication/session.py", "source_location": "L73", "id": "authentication_session_getsessionbyid", - "community": 149, + "community": 523, "norm_label": "getsessionbyid()" }, { @@ -2325,7 +2325,7 @@ "source_file": "main/app/authentication/session.py", "source_location": "L80", "id": "authentication_session_getcurrentsession", - "community": 149, + "community": 523, "norm_label": "getcurrentsession()" }, { @@ -2334,7 +2334,7 @@ "source_file": "main/app/authentication/session.py", "source_location": "L92", "id": "authentication_session_revokesession", - "community": 149, + "community": 523, "norm_label": "revokesession()" }, { @@ -2343,7 +2343,7 @@ "source_file": "main/app/authentication/session.py", "source_location": "L109", "id": "authentication_session_revokeallsessions", - "community": 149, + "community": 523, "norm_label": "revokeallsessions()" }, { @@ -2352,7 +2352,7 @@ "source_file": "main/app/authentication/session.py", "source_location": "L122", "id": "authentication_session_revokeallexcept", - "community": 149, + "community": 523, "norm_label": "revokeallexcept()" }, { @@ -2361,7 +2361,7 @@ "source_file": "main/app/authentication/session.py", "source_location": "L132", "id": "authentication_session_updatelastactive", - "community": 149, + "community": 523, "norm_label": "updatelastactive()" }, { @@ -2370,7 +2370,7 @@ "source_file": "main/app/authentication/session.py", "source_location": "L142", "id": "authentication_session_validatesession", - "community": 149, + "community": 523, "norm_label": "validatesession()" }, { @@ -2379,7 +2379,7 @@ "source_file": "main/app/authentication/sso.py", "source_location": "L1", "id": "main_app_authentication_sso_py", - "community": 58, + "community": 592, "norm_label": "sso.py" }, { @@ -2388,7 +2388,7 @@ "source_file": "main/app/authentication/sso.py", "source_location": "L6", "id": "authentication_sso_getgooglesso", - "community": 58, + "community": 592, "norm_label": "getgooglesso()" }, { @@ -2397,7 +2397,7 @@ "source_file": "main/app/authentication/util.py", "source_location": "L1", "id": "main_app_authentication_util_py", - "community": 560, + "community": 107, "norm_label": "util.py" }, { @@ -2433,7 +2433,7 @@ "source_file": "main/app/authentication/util.py", "source_location": "L44", "id": "authentication_util_verifyaccesstoken", - "community": 519, + "community": 172, "norm_label": "verifyaccesstoken()" }, { @@ -2451,7 +2451,7 @@ "source_file": "main/app/orunmila/agent.py", "source_location": "L1", "id": "main_app_orunmila_agent_py", - "community": 497, + "community": 165, "norm_label": "agent.py" }, { @@ -2460,7 +2460,7 @@ "source_file": "main/app/orunmila/agent.py", "source_location": "L25", "id": "orunmila_agent_safefilter", - "community": 497, + "community": 165, "norm_label": "safefilter()" }, { @@ -2469,7 +2469,7 @@ "source_file": "main/app/orunmila/agent.py", "source_location": "L31", "id": "orunmila_agent_persistevent", - "community": 497, + "community": 165, "norm_label": "persistevent()" }, { @@ -2478,7 +2478,7 @@ "source_file": "main/app/orunmila/agent.py", "source_location": "L45", "id": "orunmila_agent_getclient", - "community": 497, + "community": 165, "norm_label": "getclient()" }, { @@ -2487,7 +2487,7 @@ "source_file": "main/app/orunmila/agent.py", "source_location": "L208", "id": "orunmila_agent_orunmila", - "community": 45, + "community": 502, "norm_label": "orunmila" }, { @@ -2496,7 +2496,7 @@ "source_file": "main/app/orunmila/agent.py", "source_location": "L209", "id": "orunmila_agent_orunmila_init", - "community": 497, + "community": 165, "norm_label": ".__init__()" }, { @@ -2505,7 +2505,7 @@ "source_file": "main/app/orunmila/agent.py", "source_location": "L213", "id": "orunmila_agent_buildsystemprompt", - "community": 497, + "community": 165, "norm_label": "buildsystemprompt()" }, { @@ -2514,7 +2514,7 @@ "source_file": "main/app/orunmila/agent.py", "source_location": "L242", "id": "orunmila_agent_orunmila_makechat", - "community": 497, + "community": 165, "norm_label": ".makechat()" }, { @@ -2523,7 +2523,7 @@ "source_file": "main/app/orunmila/agent.py", "source_location": "L253", "id": "orunmila_agent_orunmila_streammessage", - "community": 497, + "community": 165, "norm_label": ".streammessage()" }, { @@ -2532,7 +2532,7 @@ "source_file": "main/app/orunmila/chat.py", "source_location": "L1", "id": "main_app_orunmila_chat_py", - "community": 231, + "community": 502, "norm_label": "chat.py" }, { @@ -2541,7 +2541,7 @@ "source_file": "main/app/orunmila/chat.py", "source_location": "L13", "id": "orunmila_chat_orunmilachatmanager", - "community": 45, + "community": 502, "norm_label": "orunmilachatmanager" }, { @@ -2550,7 +2550,7 @@ "source_file": "main/app/orunmila/chat.py", "source_location": "L15", "id": "orunmila_chat_getusersessions", - "community": 231, + "community": 502, "norm_label": "getusersessions()" }, { @@ -2559,7 +2559,7 @@ "source_file": "main/app/orunmila/chat.py", "source_location": "L34", "id": "orunmila_chat_createsession", - "community": 231, + "community": 502, "norm_label": "createsession()" }, { @@ -2568,7 +2568,7 @@ "source_file": "main/app/orunmila/chat.py", "source_location": "L42", "id": "orunmila_chat_updatesessiontitle", - "community": 231, + "community": 502, "norm_label": "updatesessiontitle()" }, { @@ -2577,7 +2577,7 @@ "source_file": "main/app/orunmila/chat.py", "source_location": "L53", "id": "orunmila_chat_appendhistory", - "community": 231, + "community": 502, "norm_label": "appendhistory()" }, { @@ -2586,7 +2586,7 @@ "source_file": "main/app/orunmila/chat.py", "source_location": "L72", "id": "orunmila_chat_gethistory", - "community": 231, + "community": 502, "norm_label": "gethistory()" }, { @@ -2595,7 +2595,7 @@ "source_file": "main/app/orunmila/chat.py", "source_location": "L93", "id": "orunmila_chat_deletesession", - "community": 231, + "community": 502, "norm_label": "deletesession()" }, { @@ -2604,7 +2604,7 @@ "source_file": "main/app/orunmila/chat.py", "source_location": "L107", "id": "orunmila_chat_verifysessionownership", - "community": 231, + "community": 502, "norm_label": "verifysessionownership()" }, { @@ -2613,7 +2613,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L1", "id": "main_app_orunmila_compact_py", - "community": 162, + "community": 137, "norm_label": "compact.py" }, { @@ -2622,7 +2622,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L35", "id": "orunmila_compact_gettokenizer", - "community": 162, + "community": 137, "norm_label": "gettokenizer()" }, { @@ -2631,7 +2631,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L47", "id": "orunmila_compact_counttokens", - "community": 162, + "community": 137, "norm_label": "counttokens()" }, { @@ -2640,7 +2640,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L64", "id": "orunmila_compact_getstocksfieldsurl", - "community": 162, + "community": 137, "norm_label": "getstocksfieldsurl()" }, { @@ -2649,7 +2649,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L68", "id": "orunmila_compact_istransientfieldserror", - "community": 162, + "community": 137, "norm_label": "istransientfieldserror()" }, { @@ -2658,7 +2658,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L83", "id": "orunmila_compact_fetchfieldspayload", - "community": 162, + "community": 137, "norm_label": "fetchfieldspayload()" }, { @@ -2667,7 +2667,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L89", "id": "orunmila_compact_loadfielddata", - "community": 162, + "community": 137, "norm_label": "loadfielddata()" }, { @@ -2676,7 +2676,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L105", "id": "orunmila_compact_getmetricregex", - "community": 162, + "community": 137, "norm_label": "getmetricregex()" }, { @@ -2685,7 +2685,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L119", "id": "orunmila_compact_dedup", - "community": 162, + "community": 137, "norm_label": "dedup()" }, { @@ -2694,7 +2694,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L123", "id": "orunmila_compact_extracttickers", - "community": 162, + "community": 137, "norm_label": "extracttickers()" }, { @@ -2703,7 +2703,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L127", "id": "orunmila_compact_extractmetrics", - "community": 162, + "community": 137, "norm_label": "extractmetrics()" }, { @@ -2712,7 +2712,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L131", "id": "orunmila_compact_extractdecisions", - "community": 162, + "community": 137, "norm_label": "extractdecisions()" }, { @@ -2721,7 +2721,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L145", "id": "orunmila_compact_extractsnapshots", - "community": 162, + "community": 137, "norm_label": "extractsnapshots()" }, { @@ -2730,7 +2730,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L158", "id": "orunmila_compact_extracttoolcalls", - "community": 162, + "community": 137, "norm_label": "extracttoolcalls()" }, { @@ -2739,7 +2739,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L174", "id": "orunmila_compact_buildsummary", - "community": 162, + "community": 137, "norm_label": "buildsummary()" }, { @@ -2748,7 +2748,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L195", "id": "orunmila_compact_orunmilacompactor", - "community": 497, + "community": 137, "norm_label": "orunmilacompactor" }, { @@ -2757,7 +2757,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L196", "id": "orunmila_compact_orunmilacompactor_shouldcompact", - "community": 497, + "community": 137, "norm_label": ".shouldcompact()" }, { @@ -2766,7 +2766,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L213", "id": "orunmila_compact_orunmilacompactor_getcompactablechunk", - "community": 497, + "community": 137, "norm_label": ".getcompactablechunk()" }, { @@ -2775,7 +2775,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L222", "id": "orunmila_compact_orunmilacompactor_extractepisode", - "community": 162, + "community": 137, "norm_label": ".extractepisode()" }, { @@ -2784,7 +2784,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L244", "id": "orunmila_compact_orunmilacompactor_consolidate", - "community": 497, + "community": 137, "norm_label": ".consolidate()" }, { @@ -2793,7 +2793,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L271", "id": "orunmila_compact_orunmilacompactor_compact", - "community": 497, + "community": 137, "norm_label": ".compact()" }, { @@ -2802,7 +2802,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L310", "id": "orunmila_compact_orunmilacompactor_getepisodes", - "community": 497, + "community": 137, "norm_label": ".getepisodes()" }, { @@ -2811,7 +2811,7 @@ "source_file": "main/app/orunmila/mcp.py", "source_location": "L1", "id": "main_app_orunmila_mcp_py", - "community": 521, + "community": 189, "norm_label": "mcp.py" }, { @@ -2820,7 +2820,7 @@ "source_file": "main/app/orunmila/mcp.py", "source_location": "L21", "id": "orunmila_mcp_buildclient", - "community": 521, + "community": 189, "norm_label": "buildclient()" }, { @@ -2829,7 +2829,7 @@ "source_file": "main/app/orunmila/mcp.py", "source_location": "L29", "id": "orunmila_mcp_connect", - "community": 521, + "community": 189, "norm_label": "connect()" }, { @@ -2838,7 +2838,7 @@ "source_file": "main/app/orunmila/mcp.py", "source_location": "L36", "id": "orunmila_mcp_mcpclientpool", - "community": 521, + "community": 189, "norm_label": "mcpclientpool" }, { @@ -2847,7 +2847,7 @@ "source_file": "main/app/orunmila/mcp.py", "source_location": "L37", "id": "orunmila_mcp_mcpclientpool_init", - "community": 521, + "community": 189, "norm_label": ".__init__()" }, { @@ -2856,7 +2856,7 @@ "source_file": "main/app/orunmila/mcp.py", "source_location": "L42", "id": "orunmila_mcp_mcpclientpool_initialize", - "community": 521, + "community": 189, "norm_label": ".initialize()" }, { @@ -2865,7 +2865,7 @@ "source_file": "main/app/orunmila/mcp.py", "source_location": "L56", "id": "orunmila_mcp_mcpclientpool_getclients", - "community": 521, + "community": 189, "norm_label": ".getclients()" }, { @@ -2874,7 +2874,7 @@ "source_file": "main/app/orunmila/mcp.py", "source_location": "L63", "id": "orunmila_mcp_mcpclientpool_healthcheck", - "community": 521, + "community": 189, "norm_label": ".healthcheck()" }, { @@ -2883,7 +2883,7 @@ "source_file": "main/app/orunmila/mcp.py", "source_location": "L75", "id": "orunmila_mcp_mcpclientpool_reconnect", - "community": 521, + "community": 189, "norm_label": ".reconnect()" }, { @@ -2892,7 +2892,7 @@ "source_file": "main/app/orunmila/mcp.py", "source_location": "L90", "id": "orunmila_mcp_mcpclientpool_close", - "community": 521, + "community": 189, "norm_label": ".close()" }, { @@ -2901,7 +2901,7 @@ "source_file": "main/app/orunmila/memory.py", "source_location": "L1", "id": "main_app_orunmila_memory_py", - "community": 137, + "community": 88, "norm_label": "memory.py" }, { @@ -2910,7 +2910,7 @@ "source_file": "main/app/orunmila/memory.py", "source_location": "L35", "id": "orunmila_memory_getmatrix", - "community": 137, + "community": 88, "norm_label": "getmatrix()" }, { @@ -2919,7 +2919,7 @@ "source_file": "main/app/orunmila/memory.py", "source_location": "L53", "id": "orunmila_memory_invalidateuser", - "community": 137, + "community": 88, "norm_label": "invalidateuser()" }, { @@ -2928,7 +2928,7 @@ "source_file": "main/app/orunmila/memory.py", "source_location": "L57", "id": "orunmila_memory_clearall", - "community": 137, + "community": 88, "norm_label": "clearall()" }, { @@ -2937,7 +2937,7 @@ "source_file": "main/app/orunmila/memory.py", "source_location": "L64", "id": "orunmila_memory_memorycandidate", - "community": 45, + "community": 502, "norm_label": "memorycandidate" }, { @@ -2946,7 +2946,7 @@ "source_file": "", "source_location": "", "id": "basemodel", - "community": 45, + "community": 564, "norm_label": "basemodel" }, { @@ -2955,7 +2955,7 @@ "source_file": "main/app/orunmila/memory.py", "source_location": "L90", "id": "orunmila_memory_newtokencache", - "community": 497, + "community": 165, "norm_label": "newtokencache()" }, { @@ -2964,7 +2964,7 @@ "source_file": "main/app/orunmila/memory.py", "source_location": "L97", "id": "orunmila_memory_getclient", - "community": 137, + "community": 88, "norm_label": "getclient()" }, { @@ -2973,7 +2973,7 @@ "source_file": "main/app/orunmila/memory.py", "source_location": "L104", "id": "orunmila_memory_minmax", - "community": 137, + "community": 88, "norm_label": "minmax()" }, { @@ -2982,7 +2982,7 @@ "source_file": "main/app/orunmila/memory.py", "source_location": "L113", "id": "orunmila_memory_normalizekey", - "community": 137, + "community": 88, "norm_label": "normalizekey()" }, { @@ -2991,7 +2991,7 @@ "source_file": "main/app/orunmila/memory.py", "source_location": "L120", "id": "orunmila_memory_findsimilarkey", - "community": 137, + "community": 88, "norm_label": "findsimilarkey()" }, { @@ -3000,7 +3000,7 @@ "source_file": "main/app/orunmila/memory.py", "source_location": "L140", "id": "orunmila_memory_scorerow", - "community": 137, + "community": 88, "norm_label": "scorerow()" }, { @@ -3009,7 +3009,7 @@ "source_file": "main/app/orunmila/memory.py", "source_location": "L152", "id": "orunmila_memory_scorerecency", - "community": 137, + "community": 88, "norm_label": "scorerecency()" }, { @@ -3018,7 +3018,7 @@ "source_file": "main/app/orunmila/memory.py", "source_location": "L162", "id": "orunmila_memory_scorecandidates", - "community": 137, + "community": 88, "norm_label": "scorecandidates()" }, { @@ -3027,7 +3027,7 @@ "source_file": "main/app/orunmila/memory.py", "source_location": "L179", "id": "orunmila_memory_sumtokens", - "community": 162, + "community": 137, "norm_label": "sumtokens()" }, { @@ -3036,7 +3036,7 @@ "source_file": "main/app/orunmila/memory.py", "source_location": "L194", "id": "orunmila_memory_orunmilamemory", - "community": 45, + "community": 502, "norm_label": "orunmilamemory" }, { @@ -3045,7 +3045,7 @@ "source_file": "main/app/orunmila/memory.py", "source_location": "L196", "id": "orunmila_memory_getmemorylimit", - "community": 137, + "community": 88, "norm_label": "getmemorylimit()" }, { @@ -3054,7 +3054,7 @@ "source_file": "main/app/orunmila/memory.py", "source_location": "L202", "id": "orunmila_memory_countmemories", - "community": 137, + "community": 88, "norm_label": "countmemories()" }, { @@ -3063,7 +3063,7 @@ "source_file": "main/app/orunmila/memory.py", "source_location": "L211", "id": "orunmila_memory_touch", - "community": 137, + "community": 88, "norm_label": "touch()" }, { @@ -3072,7 +3072,7 @@ "source_file": "main/app/orunmila/memory.py", "source_location": "L222", "id": "orunmila_memory_upsertmemory", - "community": 137, + "community": 88, "norm_label": "upsertmemory()" }, { @@ -3081,7 +3081,7 @@ "source_file": "main/app/orunmila/memory.py", "source_location": "L286", "id": "orunmila_memory_search", - "community": 137, + "community": 88, "norm_label": "search()" }, { @@ -3090,7 +3090,7 @@ "source_file": "main/app/orunmila/memory.py", "source_location": "L349", "id": "orunmila_memory_fulltextsearch", - "community": 137, + "community": 88, "norm_label": "fulltextsearch()" }, { @@ -3099,7 +3099,7 @@ "source_file": "main/app/orunmila/memory.py", "source_location": "L407", "id": "orunmila_memory_getusermemories", - "community": 137, + "community": 88, "norm_label": "getusermemories()" }, { @@ -3108,7 +3108,7 @@ "source_file": "main/app/orunmila/memory.py", "source_location": "L432", "id": "orunmila_memory_deletememory", - "community": 137, + "community": 88, "norm_label": "deletememory()" }, { @@ -3117,7 +3117,7 @@ "source_file": "main/app/orunmila/memory.py", "source_location": "L450", "id": "orunmila_memory_extract", - "community": 137, + "community": 88, "norm_label": "extract()" }, { @@ -3171,7 +3171,7 @@ "source_file": "main/app/orunmila/sandbox.py", "source_location": "L51", "id": "orunmila_sandbox_sandboxmanager", - "community": 45, + "community": 234, "norm_label": "sandboxmanager" }, { @@ -3391,229 +3391,409 @@ "norm_label": ".forward()" }, { - "label": "tools.py", + "label": "vector.py", "file_type": "code", - "source_file": "main/app/orunmila/tools.py", + "source_file": "main/app/orunmila/vector.py", "source_location": "L1", - "id": "main_app_orunmila_tools_py", - "community": 538, - "norm_label": "tools.py" + "id": "main_app_orunmila_vector_py", + "community": 609, + "norm_label": "vector.py" + }, + { + "label": "normalizeRows()", + "file_type": "code", + "source_file": "main/app/orunmila/vector.py", + "source_location": "L10", + "id": "orunmila_vector_normalizerows", + "community": 609, + "norm_label": "normalizerows()" + }, + { + "label": "embed()", + "file_type": "code", + "source_file": "main/app/orunmila/vector.py", + "source_location": "L15", + "id": "orunmila_vector_embed", + "community": 149, + "norm_label": "embed()" + }, + { + "label": "decodeEmbeddings()", + "file_type": "code", + "source_file": "main/app/orunmila/vector.py", + "source_location": "L19", + "id": "orunmila_vector_decodeembeddings", + "community": 609, + "norm_label": "decodeembeddings()" + }, + { + "label": "batchCosineSimilarity()", + "file_type": "code", + "source_file": "main/app/orunmila/vector.py", + "source_location": "L41", + "id": "orunmila_vector_batchcosinesimilarity", + "community": 609, + "norm_label": "batchcosinesimilarity()" + }, + { + "label": "contentHash()", + "file_type": "code", + "source_file": "main/app/orunmila/vector.py", + "source_location": "L51", + "id": "orunmila_vector_contenthash", + "community": 609, + "norm_label": "contenthash()" + }, + { + "label": "toVectorString()", + "file_type": "code", + "source_file": "main/app/orunmila/vector.py", + "source_location": "L55", + "id": "orunmila_vector_tovectorstring", + "community": 609, + "norm_label": "tovectorstring()" + }, + { + "label": "fromVectorString()", + "file_type": "code", + "source_file": "main/app/orunmila/vector.py", + "source_location": "L59", + "id": "orunmila_vector_fromvectorstring", + "community": 609, + "norm_label": "fromvectorstring()" + }, + { + "label": "getRelevanceScore()", + "file_type": "code", + "source_file": "main/app/orunmila/vector.py", + "source_location": "L71", + "id": "orunmila_vector_getrelevancescore", + "community": 88, + "norm_label": "getrelevancescore()" + }, + { + "label": "context.py", + "file_type": "code", + "source_file": "main/app/orunmila/tools/context.py", + "source_location": "L1", + "id": "main_app_orunmila_tools_context_py", + "community": 101, + "norm_label": "context.py" + }, + { + "label": "popAuthSession()", + "file_type": "code", + "source_file": "main/app/orunmila/tools/context.py", + "source_location": "L7", + "id": "tools_context_popauthsession", + "community": 101, + "norm_label": "popauthsession()" + }, + { + "label": "closeOwnSession()", + "file_type": "code", + "source_file": "main/app/orunmila/tools/context.py", + "source_location": "L24", + "id": "tools_context_closeownsession", + "community": 101, + "norm_label": "closeownsession()" + }, + { + "label": "Shared auth-guard + own-SessionLocal convention every tool repeats. Returns", + "file_type": "rationale", + "source_file": "main/app/orunmila/tools/context.py", + "source_location": "L8", + "id": "tools_context_rationale_8", + "community": 101, + "norm_label": "shared auth-guard + own-sessionlocal convention every tool repeats. returns" + }, + { + "label": "memory.py", + "file_type": "code", + "source_file": "main/app/orunmila/tools/memory.py", + "source_location": "L1", + "id": "main_app_orunmila_tools_memory_py", + "community": 149, + "norm_label": "memory.py" }, { "label": "search_memory()", "file_type": "code", - "source_file": "main/app/orunmila/tools.py", - "source_location": "L20", - "id": "orunmila_tools_search_memory", - "community": 538, + "source_file": "main/app/orunmila/tools/memory.py", + "source_location": "L8", + "id": "tools_memory_search_memory", + "community": 149, "norm_label": "search_memory()" }, { "label": "save_memory()", "file_type": "code", - "source_file": "main/app/orunmila/tools.py", - "source_location": "L51", - "id": "orunmila_tools_save_memory", - "community": 564, + "source_file": "main/app/orunmila/tools/memory.py", + "source_location": "L33", + "id": "tools_memory_save_memory", + "community": 149, "norm_label": "save_memory()" }, + { + "label": "Search user's saved memories, preferences, and past analysis context. Use t", + "file_type": "rationale", + "source_file": "main/app/orunmila/tools/memory.py", + "source_location": "L9", + "id": "tools_memory_rationale_9", + "community": 149, + "norm_label": "search user's saved memories, preferences, and past analysis context. use t" + }, + { + "label": "Store a memory about the user's preferences, analysis results, or feedback.", + "file_type": "rationale", + "source_file": "main/app/orunmila/tools/memory.py", + "source_location": "L34", + "id": "tools_memory_rationale_34", + "community": 149, + "norm_label": "store a memory about the user's preferences, analysis results, or feedback." + }, + { + "label": "sandbox.py", + "file_type": "code", + "source_file": "main/app/orunmila/tools/sandbox.py", + "source_location": "L1", + "id": "main_app_orunmila_tools_sandbox_py", + "community": 234, + "norm_label": "sandbox.py" + }, { "label": "execute_code()", "file_type": "code", - "source_file": "main/app/orunmila/tools.py", - "source_location": "L93", - "id": "orunmila_tools_execute_code", - "community": 538, + "source_file": "main/app/orunmila/tools/sandbox.py", + "source_location": "L11", + "id": "tools_sandbox_execute_code", + "community": 234, "norm_label": "execute_code()" }, { "label": "read_file()", "file_type": "code", - "source_file": "main/app/orunmila/tools.py", - "source_location": "L114", - "id": "orunmila_tools_read_file", - "community": 538, + "source_file": "main/app/orunmila/tools/sandbox.py", + "source_location": "L32", + "id": "tools_sandbox_read_file", + "community": 234, "norm_label": "read_file()" }, { "label": "write_file()", "file_type": "code", - "source_file": "main/app/orunmila/tools.py", - "source_location": "L128", - "id": "orunmila_tools_write_file", - "community": 538, + "source_file": "main/app/orunmila/tools/sandbox.py", + "source_location": "L46", + "id": "tools_sandbox_write_file", + "community": 234, "norm_label": "write_file()" }, { "label": "list_files()", "file_type": "code", - "source_file": "main/app/orunmila/tools.py", - "source_location": "L144", - "id": "orunmila_tools_list_files", - "community": 538, + "source_file": "main/app/orunmila/tools/sandbox.py", + "source_location": "L62", + "id": "tools_sandbox_list_files", + "community": 234, "norm_label": "list_files()" }, { "label": "serve_file()", "file_type": "code", - "source_file": "main/app/orunmila/tools.py", - "source_location": "L157", - "id": "orunmila_tools_serve_file", - "community": 538, + "source_file": "main/app/orunmila/tools/sandbox.py", + "source_location": "L75", + "id": "tools_sandbox_serve_file", + "community": 234, "norm_label": "serve_file()" }, { - "label": "dispatchToolCall()", - "file_type": "code", - "source_file": "main/app/orunmila/tools.py", - "source_location": "L190", - "id": "orunmila_tools_dispatchtoolcall", - "community": 538, - "norm_label": "dispatchtoolcall()" - }, - { - "label": "Search user's saved memories, preferences, and past analysis context. Use", + "label": "Execute Python code in an isolated sandbox. Use for quantitative analysis, s", "file_type": "rationale", - "source_file": "main/app/orunmila/tools.py", - "source_location": "L21", - "id": "orunmila_tools_rationale_21", - "community": 538, - "norm_label": "search user's saved memories, preferences, and past analysis context. use" + "source_file": "main/app/orunmila/tools/sandbox.py", + "source_location": "L12", + "id": "tools_sandbox_rationale_12", + "community": 234, + "norm_label": "execute python code in an isolated sandbox. use for quantitative analysis, s" }, { - "label": "Store a memory about the user's preferences, analysis results, or feedback.", + "label": "Read a file from the workspace. Args: path: Path to the file (e.g.,", "file_type": "rationale", - "source_file": "main/app/orunmila/tools.py", - "source_location": "L52", - "id": "orunmila_tools_rationale_52", - "community": 564, - "norm_label": "store a memory about the user's preferences, analysis results, or feedback." + "source_file": "main/app/orunmila/tools/sandbox.py", + "source_location": "L33", + "id": "tools_sandbox_rationale_33", + "community": 234, + "norm_label": "read a file from the workspace. args: path: path to the file (e.g.," }, { - "label": "Execute Python code in an isolated sandbox. Use for quantitative analysis,", + "label": "Write a file to the workspace. Use this to save data files (CSV, JSON, scrip", "file_type": "rationale", - "source_file": "main/app/orunmila/tools.py", - "source_location": "L94", - "id": "orunmila_tools_rationale_94", - "community": 538, - "norm_label": "execute python code in an isolated sandbox. use for quantitative analysis," + "source_file": "main/app/orunmila/tools/sandbox.py", + "source_location": "L47", + "id": "tools_sandbox_rationale_47", + "community": 234, + "norm_label": "write a file to the workspace. use this to save data files (csv, json, scrip" }, { - "label": "Read a file from the workspace. Args: path: Path to the file (e.", + "label": "List files in the workspace directory. Args: path: Directory path t", "file_type": "rationale", - "source_file": "main/app/orunmila/tools.py", - "source_location": "L115", - "id": "orunmila_tools_rationale_115", - "community": 538, - "norm_label": "read a file from the workspace. args: path: path to the file (e." + "source_file": "main/app/orunmila/tools/sandbox.py", + "source_location": "L63", + "id": "tools_sandbox_rationale_63", + "community": 234, + "norm_label": "list files in the workspace directory. args: path: directory path t" }, { - "label": "Write a file to the workspace. Use this to save data files (CSV, JSON, scri", + "label": "Get a download link for a workspace file to share with the user. Use this w", "file_type": "rationale", - "source_file": "main/app/orunmila/tools.py", - "source_location": "L129", - "id": "orunmila_tools_rationale_129", - "community": 538, - "norm_label": "write a file to the workspace. use this to save data files (csv, json, scri" + "source_file": "main/app/orunmila/tools/sandbox.py", + "source_location": "L76", + "id": "tools_sandbox_rationale_76", + "community": 234, + "norm_label": "get a download link for a workspace file to share with the user. use this w" }, { - "label": "List files in the workspace directory. Args: path: Directory pat", - "file_type": "rationale", - "source_file": "main/app/orunmila/tools.py", - "source_location": "L145", - "id": "orunmila_tools_rationale_145", - "community": 538, - "norm_label": "list files in the workspace directory. args: path: directory pat" + "label": "wallet.py", + "file_type": "code", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L1", + "id": "main_app_orunmila_tools_wallet_py", + "community": 101, + "norm_label": "wallet.py" }, { - "label": "Get a download link for a workspace file to share with the user. Use this", - "file_type": "rationale", - "source_file": "main/app/orunmila/tools.py", - "source_location": "L158", - "id": "orunmila_tools_rationale_158", - "community": 538, - "norm_label": "get a download link for a workspace file to share with the user. use this" + "label": "ensureOwnership()", + "file_type": "code", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L15", + "id": "tools_wallet_ensureownership", + "community": 101, + "norm_label": "ensureownership()" }, { - "label": "vector.py", + "label": "wallet_positions()", "file_type": "code", - "source_file": "main/app/orunmila/vector.py", - "source_location": "L1", - "id": "main_app_orunmila_vector_py", - "community": 564, - "norm_label": "vector.py" + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L27", + "id": "tools_wallet_wallet_positions", + "community": 101, + "norm_label": "wallet_positions()" }, { - "label": "normalizeRows()", + "label": "wallet_summary()", "file_type": "code", - "source_file": "main/app/orunmila/vector.py", - "source_location": "L10", - "id": "orunmila_vector_normalizerows", - "community": 564, - "norm_label": "normalizerows()" + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L52", + "id": "tools_wallet_wallet_summary", + "community": 101, + "norm_label": "wallet_summary()" }, { - "label": "embed()", + "label": "wallet_allocation()", "file_type": "code", - "source_file": "main/app/orunmila/vector.py", - "source_location": "L15", - "id": "orunmila_vector_embed", - "community": 564, - "norm_label": "embed()" + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L77", + "id": "tools_wallet_wallet_allocation", + "community": 101, + "norm_label": "wallet_allocation()" }, { - "label": "decodeEmbeddings()", + "label": "list_wallet_earnings()", "file_type": "code", - "source_file": "main/app/orunmila/vector.py", - "source_location": "L19", - "id": "orunmila_vector_decodeembeddings", - "community": 564, - "norm_label": "decodeembeddings()" + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L104", + "id": "tools_wallet_list_wallet_earnings", + "community": 101, + "norm_label": "list_wallet_earnings()" }, { - "label": "batchCosineSimilarity()", + "label": "wallet_performance()", "file_type": "code", - "source_file": "main/app/orunmila/vector.py", - "source_location": "L41", - "id": "orunmila_vector_batchcosinesimilarity", - "community": 564, - "norm_label": "batchcosinesimilarity()" + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L148", + "id": "tools_wallet_wallet_performance", + "community": 101, + "norm_label": "wallet_performance()" }, { - "label": "contentHash()", + "label": "wallet_rebalance()", "file_type": "code", - "source_file": "main/app/orunmila/vector.py", - "source_location": "L51", - "id": "orunmila_vector_contenthash", - "community": 564, - "norm_label": "contenthash()" + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L185", + "id": "tools_wallet_wallet_rebalance", + "community": 101, + "norm_label": "wallet_rebalance()" }, { - "label": "toVectorString()", - "file_type": "code", - "source_file": "main/app/orunmila/vector.py", - "source_location": "L55", - "id": "orunmila_vector_tovectorstring", - "community": 564, - "norm_label": "tovectorstring()" + "label": "List wallet holdings with live prices, equity, allocation, and buy signals.", + "file_type": "rationale", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L28", + "id": "tools_wallet_rationale_28", + "community": 101, + "norm_label": "list wallet holdings with live prices, equity, allocation, and buy signals." }, { - "label": "fromVectorString()", + "label": "Summarize applied capital, equity, and variation for a wallet. Read-only: n", + "file_type": "rationale", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L53", + "id": "tools_wallet_rationale_53", + "community": 101, + "norm_label": "summarize applied capital, equity, and variation for a wallet. read-only: n" + }, + { + "label": "Break wallet equity down by ticker or asset type. Read-only: never mutates", + "file_type": "rationale", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L78", + "id": "tools_wallet_rationale_78", + "community": 101, + "norm_label": "break wallet equity down by ticker or asset type. read-only: never mutates" + }, + { + "label": "List accrued earnings (dividends, JSCP) for a wallet. Read-only: never muta", + "file_type": "rationale", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L105", + "id": "tools_wallet_rationale_105", + "community": 101, + "norm_label": "list accrued earnings (dividends, jscp) for a wallet. read-only: never muta" + }, + { + "label": "Compute time-weighted return, volatility, and dividends for a wallet or ticker.", + "file_type": "rationale", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L149", + "id": "tools_wallet_rationale_149", + "community": 101, + "norm_label": "compute time-weighted return, volatility, and dividends for a wallet or ticker." + }, + { + "label": "Show weight-share rebalance deltas per ticker (buy/sell/hold). Read-only: n", + "file_type": "rationale", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L186", + "id": "tools_wallet_rationale_186", + "community": 101, + "norm_label": "show weight-share rebalance deltas per ticker (buy/sell/hold). read-only: n" + }, + { + "label": "__init__.py", "file_type": "code", - "source_file": "main/app/orunmila/vector.py", - "source_location": "L59", - "id": "orunmila_vector_fromvectorstring", - "community": 564, - "norm_label": "fromvectorstring()" + "source_file": "main/app/orunmila/tools/__init__.py", + "source_location": "L1", + "id": "main_app_orunmila_tools_init_py", + "community": 165, + "norm_label": "__init__.py" }, { - "label": "getRelevanceScore()", + "label": "dispatchToolCall()", "file_type": "code", - "source_file": "main/app/orunmila/vector.py", - "source_location": "L71", - "id": "orunmila_vector_getrelevancescore", - "community": 137, - "norm_label": "getrelevancescore()" + "source_file": "main/app/orunmila/tools/__init__.py", + "source_location": "L35", + "id": "tools_init_dispatchtoolcall", + "community": 165, + "norm_label": "dispatchtoolcall()" }, { "label": "scraper.py", @@ -3621,187 +3801,187 @@ "source_file": "main/app/scraper_b3/scraper.py", "source_location": "L1", "id": "main_app_scraper_b3_scraper_py", - "community": 21, + "community": 474, "norm_label": "scraper.py" }, { "label": "getCurrentSelic()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L29", + "source_location": "L30", "id": "scraper_b3_scraper_getcurrentselic", - "community": 21, + "community": 474, "norm_label": "getcurrentselic()" }, { "label": "B3Scraper", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L38", + "source_location": "L41", "id": "scraper_b3_scraper_b3scraper", - "community": 21, + "community": 474, "norm_label": "b3scraper" }, { "label": ".__init__()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L39", + "source_location": "L42", "id": "scraper_b3_scraper_b3scraper_init", - "community": 21, + "community": 474, "norm_label": ".__init__()" }, { "label": "getInitialData()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L53", + "source_location": "L56", "id": "scraper_b3_scraper_getinitialdata", - "community": 21, + "community": 474, "norm_label": "getinitialdata()" }, { "label": "historicalRentability()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L108", + "source_location": "L111", "id": "scraper_b3_scraper_historicalrentability", - "community": 21, + "community": 474, "norm_label": "historicalrentability()" }, { "label": "historicalDividends()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L131", + "source_location": "L134", "id": "scraper_b3_scraper_historicaldividends", - "community": 21, + "community": 474, "norm_label": "historicaldividends()" }, { "label": "historicalDividendYields()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L164", + "source_location": "L167", "id": "scraper_b3_scraper_historicaldividendyields", - "community": 21, + "community": 474, "norm_label": "historicaldividendyields()" }, { "label": "historicalRevenue()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L192", + "source_location": "L195", "id": "scraper_b3_scraper_historicalrevenue", - "community": 21, + "community": 474, "norm_label": "historicalrevenue()" }, { "label": "historicalCotationProfits()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L213", + "source_location": "L216", "id": "scraper_b3_scraper_historicalcotationprofits", - "community": 21, + "community": 474, "norm_label": "historicalcotationprofits()" }, { "label": ".historicalCotationProfits_Oceans14()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L226", + "source_location": "L229", "id": "scraper_b3_scraper_b3scraper_historicalcotationprofits_oceans14", - "community": 21, + "community": 474, "norm_label": ".historicalcotationprofits_oceans14()" }, { "label": "historicalCotations()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L239", + "source_location": "L242", "id": "scraper_b3_scraper_historicalcotations", - "community": 21, + "community": 474, "norm_label": "historicalcotations()" }, { "label": "tagAlong()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L256", + "source_location": "L259", "id": "scraper_b3_scraper_tagalong", - "community": 21, + "community": 474, "norm_label": "tagalong()" }, { "label": "stockNews()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L277", + "source_location": "L280", "id": "scraper_b3_scraper_stocknews", - "community": 21, + "community": 474, "norm_label": "stocknews()" }, { "label": ".fundamentalIndicators()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L290", + "source_location": "L293", "id": "scraper_b3_scraper_b3scraper_fundamentalindicators", - "community": 21, + "community": 474, "norm_label": ".fundamentalindicators()" }, { "label": ".processTicker()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L413", + "source_location": "L416", "id": "scraper_b3_scraper_b3scraper_processticker", - "community": 21, + "community": 474, "norm_label": ".processticker()" }, { "label": ".scrapeStocks()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L444", + "source_location": "L447", "id": "scraper_b3_scraper_b3scraper_scrapestocks", - "community": 21, + "community": 474, "norm_label": ".scrapestocks()" }, { "label": ".reorderColumns()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L491", + "source_location": "L494", "id": "scraper_b3_scraper_b3scraper_reordercolumns", - "community": 21, + "community": 474, "norm_label": ".reordercolumns()" }, { "label": ".serializeComplexTypes()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L500", + "source_location": "L503", "id": "scraper_b3_scraper_b3scraper_serializecomplextypes", - "community": 21, + "community": 474, "norm_label": ".serializecomplextypes()" }, { "label": ".exportJson()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L519", + "source_location": "L522", "id": "scraper_b3_scraper_b3scraper_exportjson", - "community": 21, + "community": 474, "norm_label": ".exportjson()" }, { "label": ".exportMysql()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L527", + "source_location": "L530", "id": "scraper_b3_scraper_b3scraper_exportmysql", - "community": 21, + "community": 474, "norm_label": ".exportmysql()" }, { @@ -3810,7 +3990,7 @@ "source_file": "main/app/scraper_b3/xango.py", "source_location": "L1", "id": "main_app_scraper_b3_xango_py", - "community": 21, + "community": 474, "norm_label": "xango.py" }, { @@ -3819,7 +3999,7 @@ "source_file": "main/app/scraper_b3/xango.py", "source_location": "L15", "id": "scraper_b3_xango_calculateinvestingscore", - "community": 21, + "community": 474, "norm_label": "calculateinvestingscore()" }, { @@ -3900,7 +4080,7 @@ "source_file": "main/app/stocks_api/cache.py", "source_location": "L47", "id": "stocks_api_cache_stockscachemanager_cachescheduler", - "community": 536, + "community": 82, "norm_label": ".cachescheduler()" }, { @@ -3927,7 +4107,7 @@ "source_file": "main/app/stocks_api/compress.py", "source_location": "L1", "id": "main_app_stocks_api_compress_py", - "community": 194, + "community": 251, "norm_label": "compress.py" }, { @@ -3936,7 +4116,7 @@ "source_file": "main/app/stocks_api/compress.py", "source_location": "L30", "id": "stocks_api_compress_getabbr", - "community": 194, + "community": 251, "norm_label": "getabbr()" }, { @@ -3945,7 +4125,7 @@ "source_file": "main/app/stocks_api/compress.py", "source_location": "L43", "id": "stocks_api_compress_getnest", - "community": 194, + "community": 251, "norm_label": "getnest()" }, { @@ -3963,7 +4143,7 @@ "source_file": "main/app/stocks_api/compress.py", "source_location": "L65", "id": "stocks_api_compress_compactvalue", - "community": 194, + "community": 251, "norm_label": "compactvalue()" }, { @@ -3972,7 +4152,7 @@ "source_file": "main/app/stocks_api/compress.py", "source_location": "L86", "id": "stocks_api_compress_compactrow", - "community": 194, + "community": 251, "norm_label": "compactrow()" }, { @@ -3981,7 +4161,7 @@ "source_file": "main/app/stocks_api/compress.py", "source_location": "L116", "id": "stocks_api_compress_compactcotations", - "community": 194, + "community": 251, "norm_label": "compactcotations()" }, { @@ -3990,7 +4170,7 @@ "source_file": "main/app/stocks_api/compress.py", "source_location": "L151", "id": "stocks_api_compress_compressresponse", - "community": 194, + "community": 251, "norm_label": "compressresponse()" }, { @@ -4089,7 +4269,7 @@ "source_file": "main/app/stocks_api/query.py", "source_location": "L1", "id": "main_app_stocks_api_query_py", - "community": 517, + "community": 618, "norm_label": "query.py" }, { @@ -4098,7 +4278,7 @@ "source_file": "main/app/stocks_api/query.py", "source_location": "L19", "id": "stocks_api_query_sanitizenanvalues", - "community": 63, + "community": 517, "norm_label": "sanitizenanvalues()" }, { @@ -4116,7 +4296,7 @@ "source_file": "main/app/stocks_api/query.py", "source_location": "L55", "id": "stocks_api_query_baseframe", - "community": 517, + "community": 618, "norm_label": "baseframe()" }, { @@ -4125,7 +4305,7 @@ "source_file": "main/app/stocks_api/query.py", "source_location": "L68", "id": "stocks_api_query_validatefields", - "community": 517, + "community": 618, "norm_label": "validatefields()" }, { @@ -4134,7 +4314,7 @@ "source_file": "main/app/stocks_api/query.py", "source_location": "L81", "id": "stocks_api_query_envelope", - "community": 517, + "community": 618, "norm_label": "envelope()" }, { @@ -4143,7 +4323,7 @@ "source_file": "main/app/stocks_api/query.py", "source_location": "L92", "id": "stocks_api_query_finalize", - "community": 517, + "community": 618, "norm_label": "finalize()" }, { @@ -4152,7 +4332,7 @@ "source_file": "main/app/stocks_api/query.py", "source_location": "L125", "id": "stocks_api_query_deserializejsoncolumns", - "community": 517, + "community": 618, "norm_label": "deserializejsoncolumns()" }, { @@ -4161,7 +4341,7 @@ "source_file": "main/app/stocks_api/query.py", "source_location": "L156", "id": "stocks_api_query_filterbysearchterms", - "community": 517, + "community": 618, "norm_label": "filterbysearchterms()" }, { @@ -4170,7 +4350,7 @@ "source_file": "main/app/stocks_api/query.py", "source_location": "L174", "id": "stocks_api_query_queryhistorical", - "community": 517, + "community": 618, "norm_label": "queryhistorical()" }, { @@ -4179,7 +4359,7 @@ "source_file": "main/app/stocks_api/query.py", "source_location": "L231", "id": "stocks_api_query_queryfundamental", - "community": 517, + "community": 618, "norm_label": "queryfundamental()" }, { @@ -4188,7 +4368,7 @@ "source_file": "main/app/stocks_api/query.py", "source_location": "L294", "id": "stocks_api_query_querycotations", - "community": 517, + "community": 618, "norm_label": "querycotations()" }, { @@ -4197,7 +4377,7 @@ "source_file": "main/app/stocks_api/query.py", "source_location": "L335", "id": "stocks_api_query_istransientliveerror", - "community": 517, + "community": 618, "norm_label": "istransientliveerror()" }, { @@ -4206,7 +4386,7 @@ "source_file": "main/app/stocks_api/query.py", "source_location": "L350", "id": "stocks_api_query_fetchlivepayload", - "community": 517, + "community": 618, "norm_label": "fetchlivepayload()" }, { @@ -4215,7 +4395,7 @@ "source_file": "main/app/stocks_api/query.py", "source_location": "L359", "id": "stocks_api_query_querylivecotation", - "community": 517, + "community": 618, "norm_label": "querylivecotation()" }, { @@ -4224,25 +4404,25 @@ "source_file": "main/app/stocks_api/sync_cache.py", "source_location": "L1", "id": "main_app_stocks_api_sync_cache_py", - "community": 562, + "community": 615, "norm_label": "sync_cache.py" }, { "label": "cache()", "file_type": "code", "source_file": "main/app/stocks_api/sync_cache.py", - "source_location": "L14", + "source_location": "L15", "id": "stocks_api_sync_cache_cache", - "community": 562, + "community": 615, "norm_label": "cache()" }, { "label": "clearEndpointCache()", "file_type": "code", "source_file": "main/app/stocks_api/sync_cache.py", - "source_location": "L36", + "source_location": "L43", "id": "stocks_api_sync_cache_clearendpointcache", - "community": 562, + "community": 615, "norm_label": "clearendpointcache()" }, { @@ -4260,7 +4440,7 @@ "source_file": "main/app/stocks_api/util.py", "source_location": "L17", "id": "stocks_api_util_dedupabbrev", - "community": 194, + "community": 186, "norm_label": "dedupabbrev()" }, { @@ -4269,7 +4449,7 @@ "source_file": "main/app/stocks_api/util.py", "source_location": "L26", "id": "stocks_api_util_autoabbreviate", - "community": 194, + "community": 186, "norm_label": "autoabbreviate()" }, { @@ -4278,7 +4458,7 @@ "source_file": "main/app/stocks_api/util.py", "source_location": "L49", "id": "stocks_api_util_generateabbreviations", - "community": 194, + "community": 186, "norm_label": "generateabbreviations()" }, { @@ -4314,7 +4494,7 @@ "source_file": "main/app/stocks_api/util.py", "source_location": "L98", "id": "stocks_api_util_detectnestedfields", - "community": 194, + "community": 186, "norm_label": "detectnestedfields()" }, { @@ -4323,7 +4503,7 @@ "source_file": "main/app/user/user.py", "source_location": "L1", "id": "main_app_user_user_py", - "community": 519, + "community": 528, "norm_label": "user.py" }, { @@ -4341,7 +4521,7 @@ "source_file": "main/app/user/user.py", "source_location": "L17", "id": "user_user_getroleslist", - "community": 519, + "community": 528, "norm_label": "getroleslist()" }, { @@ -4350,9 +4530,414 @@ "source_file": "main/app/user/user.py", "source_location": "L23", "id": "user_user_getcurrentuser", - "community": 519, + "community": 528, "norm_label": "getcurrentuser()" }, + { + "label": "earnings.py", + "file_type": "code", + "source_file": "main/app/wallet/earnings.py", + "source_location": "L1", + "id": "main_app_wallet_earnings_py", + "community": 152, + "norm_label": "earnings.py" + }, + { + "label": "EarningsManager", + "file_type": "code", + "source_file": "main/app/wallet/earnings.py", + "source_location": "L24", + "id": "wallet_earnings_earningsmanager", + "community": 564, + "norm_label": "earningsmanager" + }, + { + "label": "syncEarnings()", + "file_type": "code", + "source_file": "main/app/wallet/earnings.py", + "source_location": "L26", + "id": "wallet_earnings_syncearnings", + "community": 152, + "norm_label": "syncearnings()" + }, + { + "label": "listEarnings()", + "file_type": "code", + "source_file": "main/app/wallet/earnings.py", + "source_location": "L109", + "id": "wallet_earnings_listearnings", + "community": 152, + "norm_label": "listearnings()" + }, + { + "label": "entries.py", + "file_type": "code", + "source_file": "main/app/wallet/entries.py", + "source_location": "L1", + "id": "main_app_wallet_entries_py", + "community": 152, + "norm_label": "entries.py" + }, + { + "label": "EntryCreate", + "file_type": "code", + "source_file": "main/app/wallet/entries.py", + "source_location": "L16", + "id": "wallet_entries_entrycreate", + "community": 564, + "norm_label": "entrycreate" + }, + { + "label": "EntryUpdate", + "file_type": "code", + "source_file": "main/app/wallet/entries.py", + "source_location": "L27", + "id": "wallet_entries_entryupdate", + "community": 564, + "norm_label": "entryupdate" + }, + { + "label": "EntriesManager", + "file_type": "code", + "source_file": "main/app/wallet/entries.py", + "source_location": "L34", + "id": "wallet_entries_entriesmanager", + "community": 564, + "norm_label": "entriesmanager" + }, + { + "label": "applyEntries()", + "file_type": "code", + "source_file": "main/app/wallet/entries.py", + "source_location": "L36", + "id": "wallet_entries_applyentries", + "community": 152, + "norm_label": "applyentries()" + }, + { + "label": "recalcHolding()", + "file_type": "code", + "source_file": "main/app/wallet/entries.py", + "source_location": "L55", + "id": "wallet_entries_recalcholding", + "community": 152, + "norm_label": "recalcholding()" + }, + { + "label": "addEntry()", + "file_type": "code", + "source_file": "main/app/wallet/entries.py", + "source_location": "L90", + "id": "wallet_entries_addentry", + "community": 152, + "norm_label": "addentry()" + }, + { + "label": "listEntries()", + "file_type": "code", + "source_file": "main/app/wallet/entries.py", + "source_location": "L124", + "id": "wallet_entries_listentries", + "community": 152, + "norm_label": "listentries()" + }, + { + "label": "updateEntry()", + "file_type": "code", + "source_file": "main/app/wallet/entries.py", + "source_location": "L139", + "id": "wallet_entries_updateentry", + "community": 152, + "norm_label": "updateentry()" + }, + { + "label": "deleteEntry()", + "file_type": "code", + "source_file": "main/app/wallet/entries.py", + "source_location": "L171", + "id": "wallet_entries_deleteentry", + "community": 152, + "norm_label": "deleteentry()" + }, + { + "label": "positionAtDate()", + "file_type": "code", + "source_file": "main/app/wallet/entries.py", + "source_location": "L196", + "id": "wallet_entries_positionatdate", + "community": 152, + "norm_label": "positionatdate()" + }, + { + "label": "market_data.py", + "file_type": "code", + "source_file": "main/app/wallet/market_data.py", + "source_location": "L1", + "id": "main_app_wallet_market_data_py", + "community": 535, + "norm_label": "market_data.py" + }, + { + "label": "MarketDataManager", + "file_type": "code", + "source_file": "main/app/wallet/market_data.py", + "source_location": "L19", + "id": "wallet_market_data_marketdatamanager", + "community": 564, + "norm_label": "marketdatamanager" + }, + { + "label": "fetchLivePrices()", + "file_type": "code", + "source_file": "main/app/wallet/market_data.py", + "source_location": "L22", + "id": "wallet_market_data_fetchliveprices", + "community": 482, + "norm_label": "fetchliveprices()" + }, + { + "label": "fetchMarketDividends()", + "file_type": "code", + "source_file": "main/app/wallet/market_data.py", + "source_location": "L48", + "id": "wallet_market_data_fetchmarketdividends", + "community": 535, + "norm_label": "fetchmarketdividends()" + }, + { + "label": "fetchPadraoCloses()", + "file_type": "code", + "source_file": "main/app/wallet/market_data.py", + "source_location": "L68", + "id": "wallet_market_data_fetchpadraocloses", + "community": 535, + "norm_label": "fetchpadraocloses()" + }, + { + "label": "performance.py", + "file_type": "code", + "source_file": "main/app/wallet/performance.py", + "source_location": "L1", + "id": "main_app_wallet_performance_py", + "community": 535, + "norm_label": "performance.py" + }, + { + "label": "PerformanceManager", + "file_type": "code", + "source_file": "main/app/wallet/performance.py", + "source_location": "L23", + "id": "wallet_performance_performancemanager", + "community": 564, + "norm_label": "performancemanager" + }, + { + "label": "cachedPerformance()", + "file_type": "code", + "source_file": "main/app/wallet/performance.py", + "source_location": "L29", + "id": "wallet_performance_cachedperformance", + "community": 535, + "norm_label": "cachedperformance()" + }, + { + "label": "getPerformance()", + "file_type": "code", + "source_file": "main/app/wallet/performance.py", + "source_location": "L154", + "id": "wallet_performance_getperformance", + "community": 535, + "norm_label": "getperformance()" + }, + { + "label": "positions.py", + "file_type": "code", + "source_file": "main/app/wallet/positions.py", + "source_location": "L1", + "id": "main_app_wallet_positions_py", + "community": 482, + "norm_label": "positions.py" + }, + { + "label": "PositionsManager", + "file_type": "code", + "source_file": "main/app/wallet/positions.py", + "source_location": "L19", + "id": "wallet_positions_positionsmanager", + "community": 564, + "norm_label": "positionsmanager" + }, + { + "label": "fetchXangoScores()", + "file_type": "code", + "source_file": "main/app/wallet/positions.py", + "source_location": "L22", + "id": "wallet_positions_fetchxangoscores", + "community": 482, + "norm_label": "fetchxangoscores()" + }, + { + "label": "weightOf()", + "file_type": "code", + "source_file": "main/app/wallet/positions.py", + "source_location": "L47", + "id": "wallet_positions_weightof", + "community": 482, + "norm_label": "weightof()" + }, + { + "label": "pricePass()", + "file_type": "code", + "source_file": "main/app/wallet/positions.py", + "source_location": "L51", + "id": "wallet_positions_pricepass", + "community": 482, + "norm_label": "pricepass()" + }, + { + "label": "rebalanceDeltas()", + "file_type": "code", + "source_file": "main/app/wallet/positions.py", + "source_location": "L73", + "id": "wallet_positions_rebalancedeltas", + "community": 482, + "norm_label": "rebalancedeltas()" + }, + { + "label": "getPositions()", + "file_type": "code", + "source_file": "main/app/wallet/positions.py", + "source_location": "L88", + "id": "wallet_positions_getpositions", + "community": 482, + "norm_label": "getpositions()" + }, + { + "label": "getRebalance()", + "file_type": "code", + "source_file": "main/app/wallet/positions.py", + "source_location": "L133", + "id": "wallet_positions_getrebalance", + "community": 482, + "norm_label": "getrebalance()" + }, + { + "label": "summary.py", + "file_type": "code", + "source_file": "main/app/wallet/summary.py", + "source_location": "L1", + "id": "main_app_wallet_summary_py", + "community": 152, + "norm_label": "summary.py" + }, + { + "label": "TargetUpsert", + "file_type": "code", + "source_file": "main/app/wallet/summary.py", + "source_location": "L17", + "id": "wallet_summary_targetupsert", + "community": 564, + "norm_label": "targetupsert" + }, + { + "label": "RatingUpsert", + "file_type": "code", + "source_file": "main/app/wallet/summary.py", + "source_location": "L24", + "id": "wallet_summary_ratingupsert", + "community": 564, + "norm_label": "ratingupsert" + }, + { + "label": "SummaryManager", + "file_type": "code", + "source_file": "main/app/wallet/summary.py", + "source_location": "L30", + "id": "wallet_summary_summarymanager", + "community": 564, + "norm_label": "summarymanager" + }, + { + "label": "getSummary()", + "file_type": "code", + "source_file": "main/app/wallet/summary.py", + "source_location": "L32", + "id": "wallet_summary_getsummary", + "community": 152, + "norm_label": "getsummary()" + }, + { + "label": "getAllocation()", + "file_type": "code", + "source_file": "main/app/wallet/summary.py", + "source_location": "L91", + "id": "wallet_summary_getallocation", + "community": 152, + "norm_label": "getallocation()" + }, + { + "label": "upsertTarget()", + "file_type": "code", + "source_file": "main/app/wallet/summary.py", + "source_location": "L122", + "id": "wallet_summary_upserttarget", + "community": 152, + "norm_label": "upserttarget()" + }, + { + "label": "set_rating()", + "file_type": "code", + "source_file": "main/app/wallet/summary.py", + "source_location": "L151", + "id": "wallet_summary_set_rating", + "community": 152, + "norm_label": "set_rating()" + }, + { + "label": "wallets.py", + "file_type": "code", + "source_file": "main/app/wallet/wallets.py", + "source_location": "L1", + "id": "main_app_wallet_wallets_py", + "community": 576, + "norm_label": "wallets.py" + }, + { + "label": "WalletsManager", + "file_type": "code", + "source_file": "main/app/wallet/wallets.py", + "source_location": "L11", + "id": "wallet_wallets_walletsmanager", + "community": 564, + "norm_label": "walletsmanager" + }, + { + "label": "getWallet()", + "file_type": "code", + "source_file": "main/app/wallet/wallets.py", + "source_location": "L13", + "id": "wallet_wallets_getwallet", + "community": 152, + "norm_label": "getwallet()" + }, + { + "label": "createWallet()", + "file_type": "code", + "source_file": "main/app/wallet/wallets.py", + "source_location": "L20", + "id": "wallet_wallets_createwallet", + "community": 576, + "norm_label": "createwallet()" + }, + { + "label": "listWallets()", + "file_type": "code", + "source_file": "main/app/wallet/wallets.py", + "source_location": "L28", + "id": "wallet_wallets_listwallets", + "community": 576, + "norm_label": "listwallets()" + }, { "label": "authentication_controller.py", "file_type": "code", @@ -4431,7 +5016,7 @@ "source_file": "main/controller/authentication_controller.py", "source_location": "L154", "id": "controller_authentication_controller_introspect", - "community": 519, + "community": 172, "norm_label": "introspect()" }, { @@ -4440,7 +5025,7 @@ "source_file": "main/controller/authentication_controller.py", "source_location": "L180", "id": "controller_authentication_controller_googlelogin", - "community": 58, + "community": 592, "norm_label": "googlelogin()" }, { @@ -4458,7 +5043,7 @@ "source_file": "main/controller/orunmila_controller.py", "source_location": "L1", "id": "main_controller_orunmila_controller_py", - "community": 68, + "community": 234, "norm_label": "orunmila_controller.py" }, { @@ -4467,7 +5052,7 @@ "source_file": "main/controller/orunmila_controller.py", "source_location": "L26", "id": "controller_orunmila_controller_verifysessionownsership", - "community": 68, + "community": 234, "norm_label": "verifysessionownsership()" }, { @@ -4476,7 +5061,7 @@ "source_file": "main/controller/orunmila_controller.py", "source_location": "L32", "id": "controller_orunmila_controller_health", - "community": 68, + "community": 234, "norm_label": "health()" }, { @@ -4485,7 +5070,7 @@ "source_file": "main/controller/orunmila_controller.py", "source_location": "L37", "id": "controller_orunmila_controller_getsessions", - "community": 68, + "community": 234, "norm_label": "getsessions()" }, { @@ -4494,7 +5079,7 @@ "source_file": "main/controller/orunmila_controller.py", "source_location": "L56", "id": "controller_orunmila_controller_updatesessiontitle", - "community": 68, + "community": 234, "norm_label": "updatesessiontitle()" }, { @@ -4503,7 +5088,7 @@ "source_file": "main/controller/orunmila_controller.py", "source_location": "L71", "id": "controller_orunmila_controller_gethistory", - "community": 68, + "community": 234, "norm_label": "gethistory()" }, { @@ -4512,7 +5097,7 @@ "source_file": "main/controller/orunmila_controller.py", "source_location": "L90", "id": "controller_orunmila_controller_deletesession", - "community": 68, + "community": 234, "norm_label": "deletesession()" }, { @@ -4521,7 +5106,7 @@ "source_file": "main/controller/orunmila_controller.py", "source_location": "L103", "id": "controller_orunmila_controller_chat_stream", - "community": 68, + "community": 234, "norm_label": "chat_stream()" }, { @@ -4530,7 +5115,7 @@ "source_file": "main/controller/orunmila_controller.py", "source_location": "L154", "id": "controller_orunmila_controller_resumechatstream", - "community": 68, + "community": 234, "norm_label": "resumechatstream()" }, { @@ -4539,7 +5124,7 @@ "source_file": "main/controller/orunmila_controller.py", "source_location": "L166", "id": "controller_orunmila_controller_deleteworkspacefile", - "community": 68, + "community": 234, "norm_label": "deleteworkspacefile()" }, { @@ -4548,7 +5133,7 @@ "source_file": "main/controller/orunmila_controller.py", "source_location": "L179", "id": "controller_orunmila_controller_downloadworkspacefile", - "community": 68, + "community": 234, "norm_label": "downloadworkspacefile()" }, { @@ -4557,7 +5142,7 @@ "source_file": "main/controller/orunmila_controller.py", "source_location": "L195", "id": "controller_orunmila_controller_listworkspacefiles", - "community": 68, + "community": 234, "norm_label": "listworkspacefiles()" }, { @@ -4566,7 +5151,7 @@ "source_file": "main/controller/stocksapi_controller.py", "source_location": "L1", "id": "main_controller_stocksapi_controller_py", - "community": 81, + "community": 197, "norm_label": "stocksapi_controller.py" }, { @@ -4575,7 +5160,7 @@ "source_file": "main/controller/stocksapi_controller.py", "source_location": "L28", "id": "controller_stocksapi_controller_health", - "community": 81, + "community": 197, "norm_label": "health()" }, { @@ -4584,7 +5169,7 @@ "source_file": "main/controller/stocksapi_controller.py", "source_location": "L44", "id": "controller_stocksapi_controller_listfields", - "community": 222, + "community": 186, "norm_label": "listfields()" }, { @@ -4629,7 +5214,7 @@ "source_file": "main/controller/stocksapi_controller.py", "source_location": "L45", "id": "controller_stocksapi_controller_rationale_45", - "community": 222, + "community": 186, "norm_label": "discover available field names before querying /historical or /fundamental." }, { @@ -4749,6 +5334,195 @@ "community": 501, "norm_label": "revokeallsessions()" }, + { + "label": "wallet_controller.py", + "file_type": "code", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L1", + "id": "main_controller_wallet_controller_py", + "community": 575, + "norm_label": "wallet_controller.py" + }, + { + "label": "WalletCreate", + "file_type": "code", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L24", + "id": "controller_wallet_controller_walletcreate", + "community": 564, + "norm_label": "walletcreate" + }, + { + "label": "create_wallet_route()", + "file_type": "code", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L29", + "id": "controller_wallet_controller_create_wallet_route", + "community": 575, + "norm_label": "create_wallet_route()" + }, + { + "label": "list_wallets_route()", + "file_type": "code", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L39", + "id": "controller_wallet_controller_list_wallets_route", + "community": 575, + "norm_label": "list_wallets_route()" + }, + { + "label": "serialize_holding()", + "file_type": "code", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L49", + "id": "controller_wallet_controller_serialize_holding", + "community": 575, + "norm_label": "serialize_holding()" + }, + { + "label": "serialize_entry()", + "file_type": "code", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L55", + "id": "controller_wallet_controller_serialize_entry", + "community": 575, + "norm_label": "serialize_entry()" + }, + { + "label": "create_entry_route()", + "file_type": "code", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L70", + "id": "controller_wallet_controller_create_entry_route", + "community": 575, + "norm_label": "create_entry_route()" + }, + { + "label": "list_entries_route()", + "file_type": "code", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L80", + "id": "controller_wallet_controller_list_entries_route", + "community": 575, + "norm_label": "list_entries_route()" + }, + { + "label": "update_entry_route()", + "file_type": "code", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L93", + "id": "controller_wallet_controller_update_entry_route", + "community": 575, + "norm_label": "update_entry_route()" + }, + { + "label": "delete_entry_route()", + "file_type": "code", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L104", + "id": "controller_wallet_controller_delete_entry_route", + "community": 575, + "norm_label": "delete_entry_route()" + }, + { + "label": "list_positions_route()", + "file_type": "code", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L114", + "id": "controller_wallet_controller_list_positions_route", + "community": 575, + "norm_label": "list_positions_route()" + }, + { + "label": "get_rebalance_route()", + "file_type": "code", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L123", + "id": "controller_wallet_controller_get_rebalance_route", + "community": 575, + "norm_label": "get_rebalance_route()" + }, + { + "label": "get_summary_route()", + "file_type": "code", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L132", + "id": "controller_wallet_controller_get_summary_route", + "community": 575, + "norm_label": "get_summary_route()" + }, + { + "label": "get_allocation_route()", + "file_type": "code", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L141", + "id": "controller_wallet_controller_get_allocation_route", + "community": 575, + "norm_label": "get_allocation_route()" + }, + { + "label": "upsert_target_route()", + "file_type": "code", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L151", + "id": "controller_wallet_controller_upsert_target_route", + "community": 575, + "norm_label": "upsert_target_route()" + }, + { + "label": "set_rating_route()", + "file_type": "code", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L166", + "id": "controller_wallet_controller_set_rating_route", + "community": 575, + "norm_label": "set_rating_route()" + }, + { + "label": "EarningsSync", + "file_type": "code", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L175", + "id": "controller_wallet_controller_earningssync", + "community": 564, + "norm_label": "earningssync" + }, + { + "label": "serialize_earning()", + "file_type": "code", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L179", + "id": "controller_wallet_controller_serialize_earning", + "community": 575, + "norm_label": "serialize_earning()" + }, + { + "label": "list_earnings_route()", + "file_type": "code", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L190", + "id": "controller_wallet_controller_list_earnings_route", + "community": 575, + "norm_label": "list_earnings_route()" + }, + { + "label": "sync_earnings_route()", + "file_type": "code", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L200", + "id": "controller_wallet_controller_sync_earnings_route", + "community": 575, + "norm_label": "sync_earnings_route()" + }, + { + "label": "get_performance_route()", + "file_type": "code", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L209", + "id": "controller_wallet_controller_get_performance_route", + "community": 575, + "norm_label": "get_performance_route()" + }, { "label": "base.py", "file_type": "code", @@ -4773,7 +5547,7 @@ "source_file": "main/models/memory.py", "source_location": "L8", "id": "models_memory_orunmilamemory", - "community": 45, + "community": 502, "norm_label": "orunmilamemory" }, { @@ -4782,7 +5556,7 @@ "source_file": "", "source_location": "", "id": "base", - "community": 140, + "community": 564, "norm_label": "base" }, { @@ -4791,7 +5565,7 @@ "source_file": "main/models/orunmila.py", "source_location": "L1", "id": "main_models_orunmila_py", - "community": 231, + "community": 502, "norm_label": "orunmila.py" }, { @@ -4800,7 +5574,7 @@ "source_file": "main/models/orunmila.py", "source_location": "L7", "id": "models_orunmila_orunmilasession", - "community": 231, + "community": 502, "norm_label": "orunmilasession" }, { @@ -4818,7 +5592,7 @@ "source_file": "main/models/sandbox.py", "source_location": "L5", "id": "models_sandbox_orunmilasandbox", - "community": 140, + "community": 234, "norm_label": "orunmilasandbox" }, { @@ -4929,13 +5703,76 @@ "community": 44, "norm_label": "usersession" }, + { + "label": "wallet.py", + "file_type": "code", + "source_file": "main/models/wallet.py", + "source_location": "L1", + "id": "main_models_wallet_py", + "community": 564, + "norm_label": "wallet.py" + }, + { + "label": "Wallet", + "file_type": "code", + "source_file": "main/models/wallet.py", + "source_location": "L18", + "id": "models_wallet_wallet", + "community": 564, + "norm_label": "wallet" + }, + { + "label": "Holding", + "file_type": "code", + "source_file": "main/models/wallet.py", + "source_location": "L28", + "id": "models_wallet_holding", + "community": 564, + "norm_label": "holding" + }, + { + "label": "Transaction", + "file_type": "code", + "source_file": "main/models/wallet.py", + "source_location": "L43", + "id": "models_wallet_transaction", + "community": 564, + "norm_label": "transaction" + }, + { + "label": "Target", + "file_type": "code", + "source_file": "main/models/wallet.py", + "source_location": "L58", + "id": "models_wallet_target", + "community": 564, + "norm_label": "target" + }, + { + "label": "Snapshot", + "file_type": "code", + "source_file": "main/models/wallet.py", + "source_location": "L70", + "id": "models_wallet_snapshot", + "community": 564, + "norm_label": "snapshot" + }, + { + "label": "Earning", + "file_type": "code", + "source_file": "main/models/wallet.py", + "source_location": "L87", + "id": "models_wallet_earning", + "community": 564, + "norm_label": "earning" + }, { "label": "authentication_service.py", "file_type": "code", "source_file": "main/service/authentication_service.py", "source_location": "L1", "id": "main_service_authentication_service_py", - "community": 569, + "community": 222, "norm_label": "authentication_service.py" }, { @@ -4944,7 +5781,7 @@ "source_file": "main/service/authentication_service.py", "source_location": "L5", "id": "service_authentication_service_authenticationservice", - "community": 45, + "community": 564, "norm_label": "authenticationservice" }, { @@ -4953,7 +5790,7 @@ "source_file": "main/service/authentication_service.py", "source_location": "L7", "id": "service_authentication_service_initialize", - "community": 569, + "community": 222, "norm_label": "initialize()" }, { @@ -4962,7 +5799,7 @@ "source_file": "main/service/orunmila_service.py", "source_location": "L1", "id": "main_service_orunmila_service_py", - "community": 569, + "community": 222, "norm_label": "orunmila_service.py" }, { @@ -4971,7 +5808,7 @@ "source_file": "main/service/orunmila_service.py", "source_location": "L23", "id": "service_orunmila_service_memorymaintenance", - "community": 137, + "community": 88, "norm_label": "memorymaintenance()" }, { @@ -4980,7 +5817,7 @@ "source_file": "main/service/orunmila_service.py", "source_location": "L65", "id": "service_orunmila_service_orunmilaservice", - "community": 569, + "community": 222, "norm_label": "orunmilaservice" }, { @@ -4989,7 +5826,7 @@ "source_file": "main/service/orunmila_service.py", "source_location": "L67", "id": "service_orunmila_service_initialize", - "community": 569, + "community": 222, "norm_label": "initialize()" }, { @@ -4998,7 +5835,7 @@ "source_file": "main/service/scraper_service.py", "source_location": "L1", "id": "main_service_scraper_service_py", - "community": 21, + "community": 474, "norm_label": "scraper_service.py" }, { @@ -5007,7 +5844,7 @@ "source_file": "main/service/scraper_service.py", "source_location": "L13", "id": "service_scraper_service_runscraper", - "community": 21, + "community": 474, "norm_label": "runscraper()" }, { @@ -5016,7 +5853,7 @@ "source_file": "main/service/scraper_service.py", "source_location": "L23", "id": "service_scraper_service_registerscraperjobs", - "community": 21, + "community": 474, "norm_label": "registerscraperjobs()" }, { @@ -5025,7 +5862,7 @@ "source_file": "main/service/scraper_service.py", "source_location": "L49", "id": "service_scraper_service_scraperservice", - "community": 21, + "community": 474, "norm_label": "scraperservice" }, { @@ -5034,7 +5871,7 @@ "source_file": "main/service/scraper_service.py", "source_location": "L51", "id": "service_scraper_service_initialize", - "community": 21, + "community": 474, "norm_label": "initialize()" }, { @@ -5043,7 +5880,7 @@ "source_file": "main/service/stocksapi_service.py", "source_location": "L1", "id": "main_service_stocksapi_service_py", - "community": 569, + "community": 536, "norm_label": "stocksapi_service.py" }, { @@ -5052,7 +5889,7 @@ "source_file": "main/service/stocksapi_service.py", "source_location": "L10", "id": "service_stocksapi_service_mcpdetectmiddleware", - "community": 569, + "community": 536, "norm_label": "mcpdetectmiddleware" }, { @@ -5061,7 +5898,7 @@ "source_file": "main/service/stocksapi_service.py", "source_location": "L11", "id": "service_stocksapi_service_mcpdetectmiddleware_init", - "community": 569, + "community": 536, "norm_label": ".__init__()" }, { @@ -5070,7 +5907,7 @@ "source_file": "main/service/stocksapi_service.py", "source_location": "L14", "id": "service_stocksapi_service_mcpdetectmiddleware_call", - "community": 569, + "community": 536, "norm_label": ".__call__()" }, { @@ -5079,7 +5916,7 @@ "source_file": "main/service/stocksapi_service.py", "source_location": "L25", "id": "service_stocksapi_service_stocksapiservice", - "community": 569, + "community": 536, "norm_label": "stocksapiservice" }, { @@ -5088,7 +5925,7 @@ "source_file": "main/service/stocksapi_service.py", "source_location": "L27", "id": "service_stocksapi_service_initialize", - "community": 569, + "community": 536, "norm_label": "initialize()" }, { @@ -5097,7 +5934,7 @@ "source_file": "main/service/user_service.py", "source_location": "L1", "id": "main_service_user_service_py", - "community": 536, + "community": 222, "norm_label": "user_service.py" }, { @@ -5106,7 +5943,7 @@ "source_file": "main/service/user_service.py", "source_location": "L17", "id": "service_user_service_removeinactivesessions", - "community": 536, + "community": 222, "norm_label": "removeinactivesessions()" }, { @@ -5115,7 +5952,7 @@ "source_file": "main/service/user_service.py", "source_location": "L42", "id": "service_user_service_userservice", - "community": 536, + "community": 222, "norm_label": "userservice" }, { @@ -5124,7 +5961,34 @@ "source_file": "main/service/user_service.py", "source_location": "L44", "id": "service_user_service_initialize", - "community": 536, + "community": 222, + "norm_label": "initialize()" + }, + { + "label": "wallet_service.py", + "file_type": "code", + "source_file": "main/service/wallet_service.py", + "source_location": "L1", + "id": "main_service_wallet_service_py", + "community": 54, + "norm_label": "wallet_service.py" + }, + { + "label": "WalletService", + "file_type": "code", + "source_file": "main/service/wallet_service.py", + "source_location": "L9", + "id": "service_wallet_service_walletservice", + "community": 54, + "norm_label": "walletservice" + }, + { + "label": "initialize()", + "file_type": "code", + "source_file": "main/service/wallet_service.py", + "source_location": "L11", + "id": "service_wallet_service_initialize", + "community": 222, "norm_label": "initialize()" }, { @@ -5133,7 +5997,7 @@ "source_file": "main/utils/connectivity.py", "source_location": "L1", "id": "main_utils_connectivity_py", - "community": 523, + "community": 59, "norm_label": "connectivity.py" }, { @@ -5142,7 +6006,7 @@ "source_file": "main/utils/connectivity.py", "source_location": "L11", "id": "utils_connectivity_checkdatabaseconnection", - "community": 523, + "community": 59, "norm_label": "checkdatabaseconnection()" }, { @@ -5160,7 +6024,7 @@ "source_file": "main/utils/errors.py", "source_location": "L1", "id": "main_utils_errors_py", - "community": 572, + "community": 569, "norm_label": "errors.py" }, { @@ -5196,7 +6060,7 @@ "source_file": "main/utils/errors.py", "source_location": "L26", "id": "utils_errors_builderrorresponse", - "community": 572, + "community": 569, "norm_label": "builderrorresponse()" }, { @@ -5205,7 +6069,7 @@ "source_file": "main/utils/errors.py", "source_location": "L36", "id": "utils_errors_httpexceptionhandler", - "community": 572, + "community": 569, "norm_label": "httpexceptionhandler()" }, { @@ -5214,7 +6078,7 @@ "source_file": "main/utils/errors.py", "source_location": "L43", "id": "utils_errors_validationexceptionhandler", - "community": 572, + "community": 569, "norm_label": "validationexceptionhandler()" }, { @@ -5223,7 +6087,7 @@ "source_file": "main/utils/errors.py", "source_location": "L55", "id": "utils_errors_genericexceptionhandler", - "community": 572, + "community": 569, "norm_label": "genericexceptionhandler()" }, { @@ -5241,7 +6105,7 @@ "source_file": "main/utils/http_session.py", "source_location": "L1", "id": "main_utils_http_session_py", - "community": 574, + "community": 184, "norm_label": "http_session.py" }, { @@ -5250,7 +6114,7 @@ "source_file": "main/utils/http_session.py", "source_location": "L8", "id": "utils_http_session_getsession", - "community": 574, + "community": 184, "norm_label": "getsession()" }, { @@ -5313,7 +6177,7 @@ "source_file": "main/utils/migrator.py", "source_location": "L1", "id": "main_utils_migrator_py", - "community": 523, + "community": 59, "norm_label": "migrator.py" }, { @@ -5322,7 +6186,7 @@ "source_file": "main/utils/migrator.py", "source_location": "L8", "id": "utils_migrator_runmigrations", - "community": 523, + "community": 59, "norm_label": "runmigrations()" }, { @@ -5367,7 +6231,7 @@ "source_file": "main/utils/roles.py", "source_location": "L1", "id": "main_utils_roles_py", - "community": 131, + "community": 590, "norm_label": "roles.py" }, { @@ -5376,7 +6240,7 @@ "source_file": "main/utils/roles.py", "source_location": "L5", "id": "utils_roles_permission", - "community": 45, + "community": 140, "norm_label": "permission" }, { @@ -5392,7 +6256,7 @@ "label": "ALL()", "file_type": "code", "source_file": "main/utils/roles.py", - "source_location": "L13", + "source_location": "L15", "id": "utils_roles_all", "community": 131, "norm_label": "all()" @@ -5401,7 +6265,7 @@ "label": "Roles", "file_type": "code", "source_file": "main/utils/roles.py", - "source_location": "L17", + "source_location": "L19", "id": "utils_roles_roles", "community": 45, "norm_label": "roles" @@ -5410,18 +6274,18 @@ "label": "checkAccess()", "file_type": "code", "source_file": "main/utils/roles.py", - "source_location": "L29", + "source_location": "L31", "id": "utils_roles_checkaccess", - "community": 131, + "community": 590, "norm_label": "checkaccess()" }, { "label": "requirePermission()", "file_type": "code", "source_file": "main/utils/roles.py", - "source_location": "L42", + "source_location": "L44", "id": "utils_roles_requirepermission", - "community": 131, + "community": 590, "norm_label": "requirepermission()" }, { @@ -5430,7 +6294,7 @@ "source_file": "main/utils/scheduler.py", "source_location": "L1", "id": "main_utils_scheduler_py", - "community": 536, + "community": 222, "norm_label": "scheduler.py" }, { @@ -5439,7 +6303,7 @@ "source_file": "main/utils/scheduler.py", "source_location": "L10", "id": "utils_scheduler_getsharedscheduler", - "community": 536, + "community": 222, "norm_label": "getsharedscheduler()" }, { @@ -5448,7 +6312,7 @@ "source_file": "main/utils/scheduler.py", "source_location": "L19", "id": "utils_scheduler_registerjob", - "community": 536, + "community": 222, "norm_label": "registerjob()" }, { @@ -5457,7 +6321,7 @@ "source_file": "main/utils/service_manager.py", "source_location": "L1", "id": "main_utils_service_manager_py", - "community": 569, + "community": 59, "norm_label": "service_manager.py" }, { @@ -5466,7 +6330,7 @@ "source_file": "main/utils/service_manager.py", "source_location": "L19", "id": "utils_service_manager_getapp", - "community": 569, + "community": 222, "norm_label": "getapp()" }, { @@ -5475,7 +6339,7 @@ "source_file": "main/utils/service_manager.py", "source_location": "L43", "id": "utils_service_manager_runall", - "community": 569, + "community": 59, "norm_label": "runall()" }, { @@ -5484,7 +6348,7 @@ "source_file": "main/utils/models/loader.py", "source_location": "L1", "id": "main_utils_models_loader_py", - "community": 602, + "community": 222, "norm_label": "loader.py" }, { @@ -5493,7 +6357,7 @@ "source_file": "main/utils/models/loader.py", "source_location": "L12", "id": "models_loader_getembeddingmodel", - "community": 602, + "community": 222, "norm_label": "getembeddingmodel()" }, { @@ -5518,7 +6382,7 @@ "label": "getDatabaseUrl()", "file_type": "code", "source_file": "migrations/env.py", - "source_location": "L27", + "source_location": "L29", "id": "migrations_env_getdatabaseurl", "community": 240, "norm_label": "getdatabaseurl()" @@ -5527,7 +6391,7 @@ "label": "runMigrationsOffline()", "file_type": "code", "source_file": "migrations/env.py", - "source_location": "L31", + "source_location": "L33", "id": "migrations_env_runmigrationsoffline", "community": 240, "norm_label": "runmigrationsoffline()" @@ -5536,7 +6400,7 @@ "label": "runMigrationsOnline()", "file_type": "code", "source_file": "migrations/env.py", - "source_location": "L43", + "source_location": "L45", "id": "migrations_env_runmigrationsonline", "community": 240, "norm_label": "runmigrationsonline()" @@ -5613,6 +6477,42 @@ "community": 241, "norm_label": "user sessions table revision id: 4a2f1c9e3b5d revises: 25af7ad931e7 create" }, + { + "label": "73211a401c34_wallet_tables.py", + "file_type": "code", + "source_file": "migrations/versions/73211a401c34_wallet_tables.py", + "source_location": "L1", + "id": "migrations_versions_73211a401c34_wallet_tables_py", + "community": 622, + "norm_label": "73211a401c34_wallet_tables.py" + }, + { + "label": "upgrade()", + "file_type": "code", + "source_file": "migrations/versions/73211a401c34_wallet_tables.py", + "source_location": "L22", + "id": "versions_73211a401c34_wallet_tables_upgrade", + "community": 622, + "norm_label": "upgrade()" + }, + { + "label": "downgrade()", + "file_type": "code", + "source_file": "migrations/versions/73211a401c34_wallet_tables.py", + "source_location": "L104", + "id": "versions_73211a401c34_wallet_tables_downgrade", + "community": 622, + "norm_label": "downgrade()" + }, + { + "label": "wallet tables Revision ID: 73211a401c34 Revises: f7a8b9c0d1e2 Create Date:", + "file_type": "rationale", + "source_file": "migrations/versions/73211a401c34_wallet_tables.py", + "source_location": "L1", + "id": "versions_73211a401c34_wallet_tables_rationale_1", + "community": 622, + "norm_label": "wallet tables revision id: 73211a401c34 revises: f7a8b9c0d1e2 create date:" + }, { "label": "9f3b339dde20_drop_unused_user_sessions_columns.py", "file_type": "code", @@ -5802,6 +6702,42 @@ "community": 242, "norm_label": "drop embeddingmodel and embeddingversion columns revision id: c2e4f6a8b0c1 r" }, + { + "label": "c4d1e8f2a917_wallet_earnings.py", + "file_type": "code", + "source_file": "migrations/versions/c4d1e8f2a917_wallet_earnings.py", + "source_location": "L1", + "id": "migrations_versions_c4d1e8f2a917_wallet_earnings_py", + "community": 624, + "norm_label": "c4d1e8f2a917_wallet_earnings.py" + }, + { + "label": "upgrade()", + "file_type": "code", + "source_file": "migrations/versions/c4d1e8f2a917_wallet_earnings.py", + "source_location": "L27", + "id": "versions_c4d1e8f2a917_wallet_earnings_upgrade", + "community": 624, + "norm_label": "upgrade()" + }, + { + "label": "downgrade()", + "file_type": "code", + "source_file": "migrations/versions/c4d1e8f2a917_wallet_earnings.py", + "source_location": "L51", + "id": "versions_c4d1e8f2a917_wallet_earnings_downgrade", + "community": 624, + "norm_label": "downgrade()" + }, + { + "label": "wallet earnings Revision ID: c4d1e8f2a917 Revises: 73211a401c34 Create Date: 20", + "file_type": "rationale", + "source_file": "migrations/versions/c4d1e8f2a917_wallet_earnings.py", + "source_location": "L1", + "id": "versions_c4d1e8f2a917_wallet_earnings_rationale_1", + "community": 624, + "norm_label": "wallet earnings revision id: c4d1e8f2a917 revises: 73211a401c34 create date: 20" + }, { "label": "d3df3fc5ca72_rename_memory_base_score.py", "file_type": "code", @@ -5865,6 +6801,42 @@ "community": 243, "norm_label": "add prometheus_sandboxes table revision id: d3e4f5a6b7c8 revises: c2e4f6a8b0" }, + { + "label": "d4e5f6a7b8c9_drop_dead_holding_columns.py", + "file_type": "code", + "source_file": "migrations/versions/d4e5f6a7b8c9_drop_dead_holding_columns.py", + "source_location": "L1", + "id": "migrations_versions_d4e5f6a7b8c9_drop_dead_holding_columns_py", + "community": 629, + "norm_label": "d4e5f6a7b8c9_drop_dead_holding_columns.py" + }, + { + "label": "upgrade()", + "file_type": "code", + "source_file": "migrations/versions/d4e5f6a7b8c9_drop_dead_holding_columns.py", + "source_location": "L24", + "id": "versions_d4e5f6a7b8c9_drop_dead_holding_columns_upgrade", + "community": 629, + "norm_label": "upgrade()" + }, + { + "label": "downgrade()", + "file_type": "code", + "source_file": "migrations/versions/d4e5f6a7b8c9_drop_dead_holding_columns.py", + "source_location": "L32", + "id": "versions_d4e5f6a7b8c9_drop_dead_holding_columns_downgrade", + "community": 629, + "norm_label": "downgrade()" + }, + { + "label": "drop dead holding columns Revision ID: d4e5f6a7b8c9 Revises: c4d1e8f2a917 Creat", + "file_type": "rationale", + "source_file": "migrations/versions/d4e5f6a7b8c9_drop_dead_holding_columns.py", + "source_location": "L1", + "id": "versions_d4e5f6a7b8c9_drop_dead_holding_columns_rationale_1", + "community": 629, + "norm_label": "drop dead holding columns revision id: d4e5f6a7b8c9 revises: c4d1e8f2a917 creat" + }, { "label": "e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories.py", "file_type": "code", @@ -6193,7 +7165,7 @@ "label": "User structure defined by string roles:", "file_type": "document", "source_file": "TODO.md", - "source_location": "L39", + "source_location": "L43", "id": "server_todo_user_structure_defined_by_string_roles", "community": 187, "norm_label": "user structure defined by string roles:" @@ -6202,7 +7174,7 @@ "label": "USER:", "file_type": "document", "source_file": "TODO.md", - "source_location": "L48", + "source_location": "L52", "id": "server_todo_user", "community": 187, "norm_label": "user:" @@ -6211,7 +7183,7 @@ "label": "PREMIUM:", "file_type": "document", "source_file": "TODO.md", - "source_location": "L51", + "source_location": "L55", "id": "server_todo_premium", "community": 187, "norm_label": "premium:" @@ -6220,7 +7192,7 @@ "label": "DEVELOPER:", "file_type": "document", "source_file": "TODO.md", - "source_location": "L54", + "source_location": "L58", "id": "server_todo_developer", "community": 187, "norm_label": "developer:" @@ -7066,7 +8038,7 @@ "label": "2. User lifecycle end-to-end", "file_type": "document", "source_file": "docs/superpowers/investidor10-wallet-research.md", - "source_location": "L30", + "source_location": "L29", "id": "superpowers_investidor10_wallet_research_2_user_lifecycle_end_to_end", "community": 539, "norm_label": "2. user lifecycle end-to-end" @@ -7075,7 +8047,7 @@ "label": "3. Wallet API reference", "file_type": "document", "source_file": "docs/superpowers/investidor10-wallet-research.md", - "source_location": "L40", + "source_location": "L39", "id": "superpowers_investidor10_wallet_research_3_wallet_api_reference", "community": 539, "norm_label": "3. wallet api reference" @@ -7084,7 +8056,7 @@ "label": "4. Data model inference (from payloads, no DB access)", "file_type": "document", "source_file": "docs/superpowers/investidor10-wallet-research.md", - "source_location": "L65", + "source_location": "L64", "id": "superpowers_investidor10_wallet_research_4_data_model_inference_from_payloads_no_db_access", "community": 539, "norm_label": "4. data model inference (from payloads, no db access)" @@ -7093,7 +8065,7 @@ "label": "5. Product logic", "file_type": "document", "source_file": "docs/superpowers/investidor10-wallet-research.md", - "source_location": "L74", + "source_location": "L73", "id": "superpowers_investidor10_wallet_research_5_product_logic", "community": 539, "norm_label": "5. product logic" @@ -7102,7 +8074,7 @@ "label": "5b. Gaps / unverified (do not treat as fact)", "file_type": "document", "source_file": "docs/superpowers/investidor10-wallet-research.md", - "source_location": "L82", + "source_location": "L81", "id": "superpowers_investidor10_wallet_research_5b_gaps_unverified_do_not_treat_as_fact", "community": 539, "norm_label": "5b. gaps / unverified (do not treat as fact)" @@ -7111,7 +8083,7 @@ "label": "6. Concrete Mansa proposal (build first \u2192 later; minimal sketches)", "file_type": "document", "source_file": "docs/superpowers/investidor10-wallet-research.md", - "source_location": "L86", + "source_location": "L85", "id": "superpowers_investidor10_wallet_research_6_concrete_mansa_proposal_build_first_later_minimal_sketches", "community": 539, "norm_label": "6. concrete mansa proposal (build first \u2192 later; minimal sketches)" @@ -7165,25 +8137,25 @@ "label": "2. Domain model", "file_type": "document", "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L38", + "source_location": "L47", "id": "superpowers_investidor10_wallet_spec_2_domain_model", "community": 130, "norm_label": "2. domain model" }, { - "label": "3. API contracts (all under `/wallet`; chain: `main/controller/wallet_controller.py` \u2192 `main/service/wallet_service.py::` \u2192 `main/models/wallet.py::`; auth `Depends(UserManager.getCurrentUser)` + `Depends(getSession)` throughout)", + "label": "3. API contracts (all under `/wallet`; chain: `main/controller/wallet_controller.py` \u2192 `main/service/wallet_service.py::` \u2192 `main/models/wallet.py::`; auth = wallet-local dependency on the **introspect contract** (user directive 2026-09-30): resolve the raw token (`X-Access-Token` \u2192 `Authorization: Bearer` \u2192 `mansa_token` cookie, order per `main/app/authentication/util.py:54-66`) \u2192 `introspectToken(db, raw)` (`main/app/authentication/introspect.py:14`) \u2192 `{userId, username, roles}` \u2192 `Roles.checkAccess(roles, Permission.WALLET)` (`main/utils/roles.py:29-39`) \u2192 `403` if absent; `Depends(getSession)` for the DB session)", "file_type": "document", "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L49", - "id": "superpowers_investidor10_wallet_spec_3_api_contracts_all_under_wallet_chain_main_controller_wallet_controller_py_main_service_wallet_service_py_fn_main_models_wallet_py_model_auth_depends_usermanager_getcurrentuser_depends_getsession_throughout", + "source_location": "L58", + "id": "superpowers_investidor10_wallet_spec_3_api_contracts_all_under_wallet_chain_main_controller_wallet_controller_py_main_service_wallet_service_py_fn_main_models_wallet_py_model_auth_wallet_local_dependency_on_the_introspect_contract_user_directive_2026_09_30_resolve_the_raw_token_x_access_token_authorization_bearer_mansa_token_cookie_order_per_main_app_authentication_util_py_54_66_introspecttoken_db_raw_main_app_authentication_introspect_py_14_userid_username_roles_roles_checkaccess_roles_permission_wallet_main_utils_roles_py_29_39_403_if_absent_depends_getsession_for_the_db_session", "community": 130, - "norm_label": "3. api contracts (all under `/wallet`; chain: `main/controller/wallet_controller.py` \u2192 `main/service/wallet_service.py::` \u2192 `main/models/wallet.py::`; auth `depends(usermanager.getcurrentuser)` + `depends(getsession)` throughout)" + "norm_label": "3. api contracts (all under `/wallet`; chain: `main/controller/wallet_controller.py` \u2192 `main/service/wallet_service.py::` \u2192 `main/models/wallet.py::`; auth = wallet-local dependency on the **introspect contract** (user directive 2026-09-30): resolve the raw token (`x-access-token` \u2192 `authorization: bearer` \u2192 `mansa_token` cookie, order per `main/app/authentication/util.py:54-66`) \u2192 `introspecttoken(db, raw)` (`main/app/authentication/introspect.py:14`) \u2192 `{userid, username, roles}` \u2192 `roles.checkaccess(roles, permission.wallet)` (`main/utils/roles.py:29-39`) \u2192 `403` if absent; `depends(getsession)` for the db session)" }, { "label": "4. Phased build plan (writing-plans: each phase independently reviewable; reviewer PASS per phase)", "file_type": "document", "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L66", + "source_location": "L75", "id": "superpowers_investidor10_wallet_spec_4_phased_build_plan_writing_plans_each_phase_independently_reviewable_reviewer_pass_per_phase", "community": 130, "norm_label": "4. phased build plan (writing-plans: each phase independently reviewable; reviewer pass per phase)" @@ -7192,7 +8164,7 @@ "label": "5. Risks / assumptions (honest flags carried over \u2014 do not treat as fact)", "file_type": "document", "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L72", + "source_location": "L80", "id": "superpowers_investidor10_wallet_spec_5_risks_assumptions_honest_flags_carried_over_do_not_treat_as_fact", "community": 130, "norm_label": "5. risks / assumptions (honest flags carried over \u2014 do not treat as fact)" @@ -7201,7 +8173,7 @@ "label": "6. Readiness assessment (s3, verified 2026-09-29) \u2014 prerequisites before P1", "file_type": "document", "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L81", + "source_location": "L89", "id": "superpowers_investidor10_wallet_spec_6_readiness_assessment_s3_verified_2026_09_29_prerequisites_before_p1", "community": 130, "norm_label": "6. readiness assessment (s3, verified 2026-09-29) \u2014 prerequisites before p1" @@ -7210,7 +8182,7 @@ "label": "6.1 DB & migrations (`user_db`) \u2014 CONTESTED (\u00a77.1): 3 actions, incl. one destructive autogenerate risk", "file_type": "document", "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L87", + "source_location": "L95", "id": "superpowers_investidor10_wallet_spec_6_1_db_migrations_user_db_contested_7_1_3_actions_incl_one_destructive_autogenerate_risk", "community": 130, "norm_label": "6.1 db & migrations (`user_db`) \u2014 contested (\u00a77.1): 3 actions, incl. one destructive autogenerate risk" @@ -7219,7 +8191,7 @@ "label": "6.2 Stocks/price access \u2014 CONFIRMED + extended (\u00a77.2)", "file_type": "document", "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L94", + "source_location": "L102", "id": "superpowers_investidor10_wallet_spec_6_2_stocks_price_access_confirmed_extended_7_2", "community": 130, "norm_label": "6.2 stocks/price access \u2014 confirmed + extended (\u00a77.2)" @@ -7228,25 +8200,25 @@ "label": "6.3 Wiring / auth / tests \u2014 CONTESTED (\u00a77.3): mounting TRUE; gating + test seams missing", "file_type": "document", "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L100", + "source_location": "L108", "id": "superpowers_investidor10_wallet_spec_6_3_wiring_auth_tests_contested_7_3_mounting_true_gating_test_seams_missing", "community": 130, "norm_label": "6.3 wiring / auth / tests \u2014 contested (\u00a77.3): mounting true; gating + test seams missing" }, { - "label": "6.4 Scraper pipeline (P2 dividends / has_b3) \u2014 CONTESTED (\u00a77.4): data present; source/staleness gaps", + "label": "6.4 Scraper pipeline (P2 dividends) \u2014 CONTESTED (\u00a77.4): data present; source/staleness gaps", "file_type": "document", "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L106", - "id": "superpowers_investidor10_wallet_spec_6_4_scraper_pipeline_p2_dividends_has_b3_contested_7_4_data_present_source_staleness_gaps", + "source_location": "L115", + "id": "superpowers_investidor10_wallet_spec_6_4_scraper_pipeline_p2_dividends_contested_7_4_data_present_source_staleness_gaps", "community": 130, - "norm_label": "6.4 scraper pipeline (p2 dividends / has_b3) \u2014 contested (\u00a77.4): data present; source/staleness gaps" + "norm_label": "6.4 scraper pipeline (p2 dividends) \u2014 contested (\u00a77.4): data present; source/staleness gaps" }, { "label": "6.5 Ordered actions before P1 code", "file_type": "document", "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L112", + "source_location": "L121", "id": "superpowers_investidor10_wallet_spec_6_5_ordered_actions_before_p1_code", "community": 130, "norm_label": "6.5 ordered actions before p1 code" @@ -7255,7 +8227,7 @@ "label": "7. Independent re-verification (swarm s4, 2026-09-29) \u2014 corrections to \u00a76", "file_type": "document", "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L121", + "source_location": "L130", "id": "superpowers_investidor10_wallet_spec_7_independent_re_verification_swarm_s4_2026_09_29_corrections_to_6", "community": 130, "norm_label": "7. independent re-verification (swarm s4, 2026-09-29) \u2014 corrections to \u00a76" @@ -7264,7 +8236,7 @@ "label": "7.1 DB & migrations \u2014 \u00a76.1 CONTESTED: 3 actions, one destructive risk", "file_type": "document", "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L125", + "source_location": "L134", "id": "superpowers_investidor10_wallet_spec_7_1_db_migrations_6_1_contested_3_actions_one_destructive_risk", "community": 130, "norm_label": "7.1 db & migrations \u2014 \u00a76.1 contested: 3 actions, one destructive risk" @@ -7273,7 +8245,7 @@ "label": "7.2 Stocks/price access \u2014 \u00a76.2 CONFIRMED, incomplete", "file_type": "document", "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L133", + "source_location": "L142", "id": "superpowers_investidor10_wallet_spec_7_2_stocks_price_access_6_2_confirmed_incomplete", "community": 130, "norm_label": "7.2 stocks/price access \u2014 \u00a76.2 confirmed, incomplete" @@ -7282,7 +8254,7 @@ "label": "7.3 Wiring / auth / tests \u2014 \u00a76.3 CONTESTED (mounting TRUE)", "file_type": "document", "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L143", + "source_location": "L154", "id": "superpowers_investidor10_wallet_spec_7_3_wiring_auth_tests_6_3_contested_mounting_true", "community": 130, "norm_label": "7.3 wiring / auth / tests \u2014 \u00a76.3 contested (mounting true)" @@ -7291,7 +8263,7 @@ "label": "7.4 Scraper pipeline \u2014 \u00a76.4 CONTESTED", "file_type": "document", "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L150", + "source_location": "L164", "id": "superpowers_investidor10_wallet_spec_7_4_scraper_pipeline_6_4_contested", "community": 130, "norm_label": "7.4 scraper pipeline \u2014 \u00a76.4 contested" @@ -7300,7 +8272,7 @@ "label": "7.5 Revised pre-P1 actions (supersedes \u00a76.5)", "file_type": "document", "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L159", + "source_location": "L173", "id": "superpowers_investidor10_wallet_spec_7_5_revised_pre_p1_actions_supersedes_6_5", "community": 130, "norm_label": "7.5 revised pre-p1 actions (supersedes \u00a76.5)" @@ -7827,6 +8799,96 @@ "community": 579, "norm_label": "next actions (not in scope here)" }, + { + "label": "orunmila-harness-gaps.md", + "file_type": "document", + "source_file": "docs/superpowers/orunmila-harness-gaps.md", + "source_location": "L1", + "id": "docs_superpowers_orunmila_harness_gaps_md", + "community": 606, + "norm_label": "orunmila-harness-gaps.md" + }, + { + "label": "Orunmila Harness-Loop Gap Analysis", + "file_type": "document", + "source_file": "docs/superpowers/orunmila-harness-gaps.md", + "source_location": "L1", + "id": "superpowers_orunmila_harness_gaps_orunmila_harness_loop_gap_analysis", + "community": 606, + "norm_label": "orunmila harness-loop gap analysis" + }, + { + "label": "1. Orunmila's loop today", + "file_type": "document", + "source_file": "docs/superpowers/orunmila-harness-gaps.md", + "source_location": "L5", + "id": "superpowers_orunmila_harness_gaps_1_orunmila_s_loop_today", + "community": 606, + "norm_label": "1. orunmila's loop today" + }, + { + "label": "2. Where Orunmila is already ahead \u2014 do not rebuild", + "file_type": "document", + "source_file": "docs/superpowers/orunmila-harness-gaps.md", + "source_location": "L9", + "id": "superpowers_orunmila_harness_gaps_2_where_orunmila_is_already_ahead_do_not_rebuild", + "community": 606, + "norm_label": "2. where orunmila is already ahead \u2014 do not rebuild" + }, + { + "label": "3. The 12 modern patterns vs Orunmila", + "file_type": "document", + "source_file": "docs/superpowers/orunmila-harness-gaps.md", + "source_location": "L16", + "id": "superpowers_orunmila_harness_gaps_3_the_12_modern_patterns_vs_orunmila", + "community": 606, + "norm_label": "3. the 12 modern patterns vs orunmila" + }, + { + "label": "4. P0 \u2014 reliability (do first, each one PR)", + "file_type": "document", + "source_file": "docs/superpowers/orunmila-harness-gaps.md", + "source_location": "L33", + "id": "superpowers_orunmila_harness_gaps_4_p0_reliability_do_first_each_one_pr", + "community": 606, + "norm_label": "4. p0 \u2014 reliability (do first, each one pr)" + }, + { + "label": "5. P1 \u2014 context quality (biggest behavior delta per line)", + "file_type": "document", + "source_file": "docs/superpowers/orunmila-harness-gaps.md", + "source_location": "L39", + "id": "superpowers_orunmila_harness_gaps_5_p1_context_quality_biggest_behavior_delta_per_line", + "community": 606, + "norm_label": "5. p1 \u2014 context quality (biggest behavior delta per line)" + }, + { + "label": "6. P2 \u2014 structural (larger, sequenced after P0/P1)", + "file_type": "document", + "source_file": "docs/superpowers/orunmila-harness-gaps.md", + "source_location": "L47", + "id": "superpowers_orunmila_harness_gaps_6_p2_structural_larger_sequenced_after_p0_p1", + "community": 606, + "norm_label": "6. p2 \u2014 structural (larger, sequenced after p0/p1)" + }, + { + "label": "7. P3 / later \u2014 deliberate scope, not accidents", + "file_type": "document", + "source_file": "docs/superpowers/orunmila-harness-gaps.md", + "source_location": "L54", + "id": "superpowers_orunmila_harness_gaps_7_p3_later_deliberate_scope_not_accidents", + "community": 606, + "norm_label": "7. p3 / later \u2014 deliberate scope, not accidents" + }, + { + "label": "8. Sources", + "file_type": "document", + "source_file": "docs/superpowers/orunmila-harness-gaps.md", + "source_location": "L60", + "id": "superpowers_orunmila_harness_gaps_8_sources", + "community": 606, + "norm_label": "8. sources" + }, { "label": "uvicorn-worker-scaling-plan.md", "file_type": "document", @@ -7980,6 +9042,60 @@ "community": 495, "norm_label": "8. evidence index" }, + { + "label": "wallet-orchestrator-prompt.md", + "file_type": "document", + "source_file": "docs/superpowers/wallet-orchestrator-prompt.md", + "source_location": "L1", + "id": "docs_superpowers_wallet_orchestrator_prompt_md", + "community": 585, + "norm_label": "wallet-orchestrator-prompt.md" + }, + { + "label": "Wallet Orchestrator Prompt (P1 + P2 + P3+ \u2014 one goal per scope)", + "file_type": "document", + "source_file": "docs/superpowers/wallet-orchestrator-prompt.md", + "source_location": "L1", + "id": "superpowers_wallet_orchestrator_prompt_wallet_orchestrator_prompt_p1_p2_p3_one_goal_per_scope", + "community": 585, + "norm_label": "wallet orchestrator prompt (p1 + p2 + p3+ \u2014 one goal per scope)" + }, + { + "label": "The three goals (sequential \u2014 one at a time, never parallel)", + "file_type": "document", + "source_file": "docs/superpowers/wallet-orchestrator-prompt.md", + "source_location": "L10", + "id": "superpowers_wallet_orchestrator_prompt_the_three_goals_sequential_one_at_a_time_never_parallel", + "community": 585, + "norm_label": "the three goals (sequential \u2014 one at a time, never parallel)" + }, + { + "label": "Swarm protocol (all three goals)", + "file_type": "document", + "source_file": "docs/superpowers/wallet-orchestrator-prompt.md", + "source_location": "L30", + "id": "superpowers_wallet_orchestrator_prompt_swarm_protocol_all_three_goals", + "community": 585, + "norm_label": "swarm protocol (all three goals)" + }, + { + "label": "Standing rules (do not re-derive)", + "file_type": "document", + "source_file": "docs/superpowers/wallet-orchestrator-prompt.md", + "source_location": "L40", + "id": "superpowers_wallet_orchestrator_prompt_standing_rules_do_not_re_derive", + "community": 585, + "norm_label": "standing rules (do not re-derive)" + }, + { + "label": "Environment", + "file_type": "document", + "source_file": "docs/superpowers/wallet-orchestrator-prompt.md", + "source_location": "L78", + "id": "superpowers_wallet_orchestrator_prompt_environment", + "community": 585, + "norm_label": "environment" + }, { "label": "stocks-cache-ttl.md", "file_type": "document", @@ -9714,7 +10830,7 @@ "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", "source_location": "L166", "id": "plans_2026_09_04_wallet_management_task_2_alembic_migration_for_wallet_tables", - "community": 132, + "community": 623, "norm_label": "task 2: alembic migration for wallet tables" }, { @@ -9723,7 +10839,7 @@ "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", "source_location": "L189", "id": "plans_2026_09_04_wallet_management_codeblock_6", - "community": 132, + "community": 623, "norm_label": "code:python (\"\"\"add wallet_holdings and wallet_lots tables)" }, { @@ -9732,7 +10848,7 @@ "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", "source_location": "L248", "id": "plans_2026_09_04_wallet_management_codeblock_7", - "community": 132, + "community": 623, "norm_label": "code:python (import main.models.wallet)" }, { @@ -9741,7 +10857,7 @@ "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", "source_location": "L262", "id": "plans_2026_09_04_wallet_management_codeblock_8", - "community": 132, + "community": 623, "norm_label": "code:bash (git add migrations/versions/wallet_tables_20260904_add_walle)" }, { @@ -9750,7 +10866,7 @@ "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", "source_location": "L269", "id": "plans_2026_09_04_wallet_management_task_3_pure_derivation_math", - "community": 618, + "community": 132, "norm_label": "task 3: pure derivation math" }, { @@ -9759,7 +10875,7 @@ "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", "source_location": "L281", "id": "plans_2026_09_04_wallet_management_codeblock_9", - "community": 618, + "community": 132, "norm_label": "code:python (from datetime import date)" }, { @@ -9768,7 +10884,7 @@ "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", "source_location": "L325", "id": "plans_2026_09_04_wallet_management_codeblock_10", - "community": 618, + "community": 132, "norm_label": "code:python (from dataclasses import dataclass)" }, { @@ -9777,7 +10893,7 @@ "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", "source_location": "L384", "id": "plans_2026_09_04_wallet_management_codeblock_11", - "community": 618, + "community": 132, "norm_label": "code:bash (git add main/app/wallet/__init__.py main/app/wallet/math.py )" }, { @@ -10675,7 +11791,7 @@ "label": "code:yaml (nginx:)", "file_type": "document", "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", - "source_location": "L131", + "source_location": "L135", "id": "plans_2026_09_29_nginx_response_cache_codeblock_6", "community": 126, "norm_label": "code:yaml (nginx:)" @@ -10684,7 +11800,7 @@ "label": "code:yaml (volumes:)", "file_type": "document", "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", - "source_location": "L152", + "source_location": "L156", "id": "plans_2026_09_29_nginx_response_cache_codeblock_7", "community": 126, "norm_label": "code:yaml (volumes:)" @@ -10693,7 +11809,7 @@ "label": "code:powershell (docker compose config -q)", "file_type": "document", "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", - "source_location": "L164", + "source_location": "L168", "id": "plans_2026_09_29_nginx_response_cache_codeblock_8", "community": 126, "norm_label": "code:powershell (docker compose config -q)" @@ -10702,7 +11818,7 @@ "label": "code:bash (git add docker-compose.yml nginx/conf.d/00-http-common.conf )", "file_type": "document", "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", - "source_location": "L176", + "source_location": "L180", "id": "plans_2026_09_29_nginx_response_cache_codeblock_9", "community": 126, "norm_label": "code:bash (git add docker-compose.yml nginx/conf.d/00-http-common.conf )" @@ -10711,7 +11827,7 @@ "label": "Task 2: Cached locations, shared proxy snippet, mirrored TTLs", "file_type": "document", "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", - "source_location": "L183", + "source_location": "L187", "id": "plans_2026_09_29_nginx_response_cache_task_2_cached_locations_shared_proxy_snippet_mirrored_ttls", "community": 126, "norm_label": "task 2: cached locations, shared proxy snippet, mirrored ttls" @@ -10720,7 +11836,7 @@ "label": "code:powershell ($U = \"http://localhost/stocks/cotations?search=PETR4\")", "file_type": "document", "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", - "source_location": "L195", + "source_location": "L199", "id": "plans_2026_09_29_nginx_response_cache_codeblock_10", "community": 126, "norm_label": "code:powershell ($u = \"http://localhost/stocks/cotations?search=petr4\")" @@ -10729,7 +11845,7 @@ "label": "code:nginx (proxy_pass http://stocks_api;)", "file_type": "document", "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", - "source_location": "L206", + "source_location": "L210", "id": "plans_2026_09_29_nginx_response_cache_codeblock_11", "community": 126, "norm_label": "code:nginx (proxy_pass http://stocks_api;)" @@ -10738,7 +11854,7 @@ "label": "code:nginx (# Exact-match on purpose: a prefix match on /stocks/cotation)", "file_type": "document", "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", - "source_location": "L246", + "source_location": "L249", "id": "plans_2026_09_29_nginx_response_cache_codeblock_12", "community": 126, "norm_label": "code:nginx (# exact-match on purpose: a prefix match on /stocks/cotation)" @@ -10747,7 +11863,7 @@ "label": "code:powershell (docker exec nginx nginx -t; if ($?) { docker exec nginx ngin)", "file_type": "document", "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", - "source_location": "L282", + "source_location": "L283", "id": "plans_2026_09_29_nginx_response_cache_codeblock_13", "community": 126, "norm_label": "code:powershell (docker exec nginx nginx -t; if ($?) { docker exec nginx ngin)" @@ -10756,7 +11872,7 @@ "label": "code:bash (git add nginx/conf.d/20-stocks.conf nginx/snippets/stocks-pr)", "file_type": "document", "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", - "source_location": "L295", + "source_location": "L296", "id": "plans_2026_09_29_nginx_response_cache_codeblock_14", "community": 126, "norm_label": "code:bash (git add nginx/conf.d/20-stocks.conf nginx/snippets/stocks-pr)" @@ -10765,7 +11881,7 @@ "label": "Task 3: Measure the GIL relief and record it", "file_type": "document", "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", - "source_location": "L302", + "source_location": "L303", "id": "plans_2026_09_29_nginx_response_cache_task_3_measure_the_gil_relief_and_record_it", "community": 126, "norm_label": "task 3: measure the gil relief and record it" @@ -10774,52 +11890,43 @@ "label": "code:powershell (docker stats --no-stream --format \"{{.Name}},{{.CPUPerc}},{{)", "file_type": "document", "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", - "source_location": "L314", + "source_location": "L315", "id": "plans_2026_09_29_nginx_response_cache_codeblock_15", "community": 126, "norm_label": "code:powershell (docker stats --no-stream --format \"{{.name}},{{.cpuperc}},{{)" }, { - "label": "code:powershell ($U = \"http://localhost/stocks/cotations?search=PETR4\")", + "label": "code:powershell ($env:PERF_API_KEY=\"sk-...\" # all three make targets below )", "file_type": "document", "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", - "source_location": "L321", + "source_location": "L322", "id": "plans_2026_09_29_nginx_response_cache_codeblock_16", "community": 126, - "norm_label": "code:powershell ($u = \"http://localhost/stocks/cotations?search=petr4\")" + "norm_label": "code:powershell ($env:perf_api_key=\"sk-...\" # all three make targets below )" }, { - "label": "code:powershell ($D = \"http://localhost:3200/stocks/cotations?search=PETR4\")", + "label": "code:powershell (make perf-direct # same load at api:3200 (requires $env:P)", "file_type": "document", "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", - "source_location": "L333", + "source_location": "L335", "id": "plans_2026_09_29_nginx_response_cache_codeblock_17", "community": 126, - "norm_label": "code:powershell ($d = \"http://localhost:3200/stocks/cotations?search=petr4\")" + "norm_label": "code:powershell (make perf-direct # same load at api:3200 (requires $env:p)" }, { "label": "code:markdown (# nginx response cache \u2014 GIL-relief measurement)", "file_type": "document", "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", - "source_location": "L346", + "source_location": "L349", "id": "plans_2026_09_29_nginx_response_cache_codeblock_18", "community": 126, "norm_label": "code:markdown (# nginx response cache \u2014 gil-relief measurement)" }, - { - "label": "code:bash (.\\ci.ps1)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", - "source_location": "L367", - "id": "plans_2026_09_29_nginx_response_cache_codeblock_19", - "community": 126, - "norm_label": "code:bash (.\\ci.ps1)" - }, { "label": "Execution Handoff", "file_type": "document", "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", - "source_location": "L375", + "source_location": "L374", "id": "plans_2026_09_29_nginx_response_cache_execution_handoff", "community": 126, "norm_label": "execution handoff" @@ -11598,6 +12705,663 @@ "community": 86, "norm_label": "execution handoff" }, + { + "label": "2026-09-30-wallet-p1.md", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L1", + "id": "docs_superpowers_plans_2026_09_30_wallet_p1_md", + "community": 573, + "norm_label": "2026-09-30-wallet-p1.md" + }, + { + "label": "Mansa Wallet Implementation Plan (P1 + P2 + P3+)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L1", + "id": "plans_2026_09_30_wallet_p1_mansa_wallet_implementation_plan_p1_p2_p3", + "community": 573, + "norm_label": "mansa wallet implementation plan (p1 + p2 + p3+)" + }, + { + "label": "Global Constraints", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L13", + "id": "plans_2026_09_30_wallet_p1_global_constraints", + "community": 573, + "norm_label": "global constraints" + }, + { + "label": "Review Focus", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L29", + "id": "plans_2026_09_30_wallet_p1_review_focus", + "community": 530, + "norm_label": "review focus" + }, + { + "label": "Task 1: `Permission.WALLET` on the base role + ripple fixes", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L43", + "id": "plans_2026_09_30_wallet_p1_task_1_permission_wallet_on_the_base_role_ripple_fixes", + "community": 600, + "norm_label": "task 1: `permission.wallet` on the base role + ripple fixes" + }, + { + "label": "code:python (def test_permission_enum_values():)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L60", + "id": "plans_2026_09_30_wallet_p1_codeblock_1", + "community": 600, + "norm_label": "code:python (def test_permission_enum_values():)" + }, + { + "label": "code:python (class Permission(IntFlag):)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L93", + "id": "plans_2026_09_30_wallet_p1_codeblock_2", + "community": 600, + "norm_label": "code:python (class permission(intflag):)" + }, + { + "label": "code:markdown (| `USER` | `WALLET` \u2014 default on registration |)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L115", + "id": "plans_2026_09_30_wallet_p1_codeblock_3", + "community": 600, + "norm_label": "code:markdown (| `user` | `wallet` \u2014 default on registration |)" + }, + { + "label": "code:bash (git add main/utils/roles.py tests/test_roles.py docs/authent)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L124", + "id": "plans_2026_09_30_wallet_p1_codeblock_4", + "community": 600, + "norm_label": "code:bash (git add main/utils/roles.py tests/test_roles.py docs/authent)" + }, + { + "label": "Task 2: Wallet ORM models (5 tables, `user_db`)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L131", + "id": "plans_2026_09_30_wallet_p1_task_2_wallet_orm_models_5_tables_user_db", + "community": 530, + "norm_label": "task 2: wallet orm models (5 tables, `user_db`)" + }, + { + "label": "code:python (from main.models.base import Base)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L143", + "id": "plans_2026_09_30_wallet_p1_codeblock_5", + "community": 530, + "norm_label": "code:python (from main.models.base import base)" + }, + { + "label": "code:python (from sqlalchemy import Column, Date, Enum, ForeignKey, Integ)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L172", + "id": "plans_2026_09_30_wallet_p1_codeblock_6", + "community": 530, + "norm_label": "code:python (from sqlalchemy import column, date, enum, foreignkey, integ)" + }, + { + "label": "code:bash (git add main/models/wallet.py tests/test_wallet_models.py)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L258", + "id": "plans_2026_09_30_wallet_p1_codeblock_7", + "community": 530, + "norm_label": "code:bash (git add main/models/wallet.py tests/test_wallet_models.py)" + }, + { + "label": "Task 3: Alembic revision for the wallet tables (needs MySQL)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L265", + "id": "plans_2026_09_30_wallet_p1_task_3_alembic_revision_for_the_wallet_tables_needs_mysql", + "community": 530, + "norm_label": "task 3: alembic revision for the wallet tables (needs mysql)" + }, + { + "label": "code:python (import main.models.wallet # noqa: F401)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L282", + "id": "plans_2026_09_30_wallet_p1_codeblock_8", + "community": 530, + "norm_label": "code:python (import main.models.wallet # noqa: f401)" + }, + { + "label": "code:bash (git add migrations/env.py migrations/versions/_wallet_t)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L309", + "id": "plans_2026_09_30_wallet_p1_codeblock_9", + "community": 530, + "norm_label": "code:bash (git add migrations/env.py migrations/versions/_wallet_t)" + }, + { + "label": "Task 4: Wallet auth dependency (introspect contract + raw-token resolver)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L316", + "id": "plans_2026_09_30_wallet_p1_task_4_wallet_auth_dependency_introspect_contract_raw_token_resolver", + "community": 607, + "norm_label": "task 4: wallet auth dependency (introspect contract + raw-token resolver)" + }, + { + "label": "code:python (from fastapi import Depends, FastAPI)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L328", + "id": "plans_2026_09_30_wallet_p1_codeblock_10", + "community": 607, + "norm_label": "code:python (from fastapi import depends, fastapi)" + }, + { + "label": "code:python (import logging)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L395", + "id": "plans_2026_09_30_wallet_p1_codeblock_11", + "community": 607, + "norm_label": "code:python (import logging)" + }, + { + "label": "code:bash (git add main/app/wallet/auth.py tests/test_wallet_auth.py)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L445", + "id": "plans_2026_09_30_wallet_p1_codeblock_12", + "community": 607, + "norm_label": "code:bash (git add main/app/wallet/auth.py tests/test_wallet_auth.py)" + }, + { + "label": "Task 5: Wallets CRUD + mount + `make_wallet_client`", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L452", + "id": "plans_2026_09_30_wallet_p1_task_5_wallets_crud_mount_make_wallet_client", + "community": 578, + "norm_label": "task 5: wallets crud + mount + `make_wallet_client`" + }, + { + "label": "code:python (def make_wallet_client(mock_identity=None, db=None):)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L467", + "id": "plans_2026_09_30_wallet_p1_codeblock_13", + "community": 578, + "norm_label": "code:python (def make_wallet_client(mock_identity=none, db=none):)" + }, + { + "label": "code:python (import main.models.wallet # noqa: F401)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L491", + "id": "plans_2026_09_30_wallet_p1_codeblock_14", + "community": 578, + "norm_label": "code:python (import main.models.wallet # noqa: f401)" + }, + { + "label": "code:python (def test_list_wallets_returns_only_mine(dbSession):)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L515", + "id": "plans_2026_09_30_wallet_p1_codeblock_15", + "community": 578, + "norm_label": "code:python (def test_list_wallets_returns_only_mine(dbsession):)" + }, + { + "label": "code:python (from sqlalchemy.orm import Session)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L553", + "id": "plans_2026_09_30_wallet_p1_codeblock_16", + "community": 578, + "norm_label": "code:python (from sqlalchemy.orm import session)" + }, + { + "label": "code:python (from fastapi import APIRouter, Depends)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L573", + "id": "plans_2026_09_30_wallet_p1_codeblock_17", + "community": 578, + "norm_label": "code:python (from fastapi import apirouter, depends)" + }, + { + "label": "code:bash (git add main/controller/wallet_controller.py main/service/wa)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L620", + "id": "plans_2026_09_30_wallet_p1_codeblock_18", + "community": 578, + "norm_label": "code:bash (git add main/controller/wallet_controller.py main/service/wa)" + }, + { + "label": "Task 6: Entries ledger + holdings recalc (avg-price engine)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L627", + "id": "plans_2026_09_30_wallet_p1_task_6_entries_ledger_holdings_recalc_avg_price_engine", + "community": 633, + "norm_label": "task 6: entries ledger + holdings recalc (avg-price engine)" + }, + { + "label": "code:python (def test_compra_average_includes_costs(dbSession):)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L642", + "id": "plans_2026_09_30_wallet_p1_codeblock_19", + "community": 633, + "norm_label": "code:python (def test_compra_average_includes_costs(dbsession):)" + }, + { + "label": "code:python (from datetime import date)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L691", + "id": "plans_2026_09_30_wallet_p1_codeblock_20", + "community": 633, + "norm_label": "code:python (from datetime import date)" + }, + { + "label": "code:bash (git add main/service/wallet_service.py main/controller/walle)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L782", + "id": "plans_2026_09_30_wallet_p1_codeblock_21", + "community": 633, + "norm_label": "code:bash (git add main/service/wallet_service.py main/controller/walle)" + }, + { + "label": "Task 7: Positions \u2014 live-price join over HTTP", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L789", + "id": "plans_2026_09_30_wallet_p1_task_7_positions_live_price_join_over_http", + "community": 601, + "norm_label": "task 7: positions \u2014 live-price join over http" + }, + { + "label": "code:python (import requests)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L804", + "id": "plans_2026_09_30_wallet_p1_codeblock_22", + "community": 601, + "norm_label": "code:python (import requests)" + }, + { + "label": "code:python (import os)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L888", + "id": "plans_2026_09_30_wallet_p1_codeblock_23", + "community": 601, + "norm_label": "code:python (import os)" + }, + { + "label": "code:python (def fetchCachedClose(ticker: str) -> float | None:)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L926", + "id": "plans_2026_09_30_wallet_p1_codeblock_24", + "community": 601, + "norm_label": "code:python (def fetchcachedclose(ticker: str) -> float | none:)" + }, + { + "label": "code:bash (git add main/service/wallet_service.py main/controller/walle)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L957", + "id": "plans_2026_09_30_wallet_p1_codeblock_25", + "community": 601, + "norm_label": "code:bash (git add main/service/wallet_service.py main/controller/walle)" + }, + { + "label": "Task 8: Summary + snapshots + allocation + targets + ratings", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L964", + "id": "plans_2026_09_30_wallet_p1_task_8_summary_snapshots_allocation_targets_ratings", + "community": 612, + "norm_label": "task 8: summary + snapshots + allocation + targets + ratings" + }, + { + "label": "code:python (def test_summary_math_and_snapshot_upsert(dbSession, monkeyp)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L979", + "id": "plans_2026_09_30_wallet_p1_codeblock_26", + "community": 612, + "norm_label": "code:python (def test_summary_math_and_snapshot_upsert(dbsession, monkeyp)" + }, + { + "label": "code:bash (git add main/service/wallet_service.py main/controller/walle)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L1022", + "id": "plans_2026_09_30_wallet_p1_codeblock_27", + "community": 612, + "norm_label": "code:bash (git add main/service/wallet_service.py main/controller/walle)" + }, + { + "label": "Task 9: Full gate \u2014 `.\\ci.ps1` green, coverage, fallout", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L1029", + "id": "plans_2026_09_30_wallet_p1_task_9_full_gate_ci_ps1_green_coverage_fallout", + "community": 530, + "norm_label": "task 9: full gate \u2014 `.\\ci.ps1` green, coverage, fallout" + }, + { + "label": "code:bash (git add )", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L1051", + "id": "plans_2026_09_30_wallet_p1_codeblock_28", + "community": 530, + "norm_label": "code:bash (git add )" + }, + { + "label": "Goal 2 \u2014 P2 earnings + performance (starts only after Goal 1 complete)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L1060", + "id": "plans_2026_09_30_wallet_p1_goal_2_p2_earnings_performance_starts_only_after_goal_1_complete", + "community": 571, + "norm_label": "goal 2 \u2014 p2 earnings + performance (starts only after goal 1 complete)" + }, + { + "label": "Task P2-1: `Earning` model + second migration revision", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L1064", + "id": "plans_2026_09_30_wallet_p1_task_p2_1_earning_model_second_migration_revision", + "community": 608, + "norm_label": "task p2-1: `earning` model + second migration revision" + }, + { + "label": "code:python (from main.models.wallet import Earning)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L1080", + "id": "plans_2026_09_30_wallet_p1_codeblock_29", + "community": 608, + "norm_label": "code:python (from main.models.wallet import earning)" + }, + { + "label": "code:python (class Earning(Base):)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L1108", + "id": "plans_2026_09_30_wallet_p1_codeblock_30", + "community": 608, + "norm_label": "code:python (class earning(base):)" + }, + { + "label": "code:bash (git add main/models/wallet.py migrations/versions/_wall)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L1139", + "id": "plans_2026_09_30_wallet_p1_codeblock_31", + "community": 608, + "norm_label": "code:bash (git add main/models/wallet.py migrations/versions/_wall)" + }, + { + "label": "Task P2-2: Earnings sync (accrue + transition, pull-based)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L1146", + "id": "plans_2026_09_30_wallet_p1_task_p2_2_earnings_sync_accrue_transition_pull_based", + "community": 571, + "norm_label": "task p2-2: earnings sync (accrue + transition, pull-based)" + }, + { + "label": "code:python (TIPO_MAP = {\"Dividendo\": \"Div\", \"JCP\": \"JSCP\", \"Juros Sobre )", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L1159", + "id": "plans_2026_09_30_wallet_p1_codeblock_32", + "community": 571, + "norm_label": "code:python (tipo_map = {\"dividendo\": \"div\", \"jcp\": \"jscp\", \"juros sobre )" + }, + { + "label": "code:python (from freezegun import freeze_time)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L1167", + "id": "plans_2026_09_30_wallet_p1_codeblock_33", + "community": 571, + "norm_label": "code:python (from freezegun import freeze_time)" + }, + { + "label": "code:bash (git add main/service/wallet_service.py main/controller/walle)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L1229", + "id": "plans_2026_09_30_wallet_p1_codeblock_34", + "community": 571, + "norm_label": "code:bash (git add main/service/wallet_service.py main/controller/walle)" + }, + { + "label": "Task P2-3: Performance windows (on-demand reconstruction, no new table)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L1236", + "id": "plans_2026_09_30_wallet_p1_task_p2_3_performance_windows_on_demand_reconstruction_no_new_table", + "community": 571, + "norm_label": "task p2-3: performance windows (on-demand reconstruction, no new table)" + }, + { + "label": "code:python (def _flat_series_with_one_div(url, params=None, headers=None)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L1251", + "id": "plans_2026_09_30_wallet_p1_codeblock_35", + "community": 571, + "norm_label": "code:python (def _flat_series_with_one_div(url, params=none, headers=none)" + }, + { + "label": "code:bash (git add main/service/wallet_service.py main/controller/walle)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L1297", + "id": "plans_2026_09_30_wallet_p1_codeblock_36", + "community": 571, + "norm_label": "code:bash (git add main/service/wallet_service.py main/controller/walle)" + }, + { + "label": "Goal 3 \u2014 P3+ assist + narration (starts only after Goal 2 complete)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L1304", + "id": "plans_2026_09_30_wallet_p1_goal_3_p3_assist_narration_starts_only_after_goal_2_complete", + "community": 573, + "norm_label": "goal 3 \u2014 p3+ assist + narration (starts only after goal 2 complete)" + }, + { + "label": "Task P3-0: Write the P3+ detailed plan (required before P3-1/P3-2)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L1308", + "id": "plans_2026_09_30_wallet_p1_task_p3_0_write_the_p3_detailed_plan_required_before_p3_1_p3_2", + "community": 573, + "norm_label": "task p3-0: write the p3+ detailed plan (required before p3-1/p3-2)" + }, + { + "label": "Task P3-1: Ratings-assist tuning (gated on the P3+ plan)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L1312", + "id": "plans_2026_09_30_wallet_p1_task_p3_1_ratings_assist_tuning_gated_on_the_p3_plan", + "community": 573, + "norm_label": "task p3-1: ratings-assist tuning (gated on the p3+ plan)" + }, + { + "label": "Task P3-2: Orunmila narration tools (gated on the P3+ plan)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L1316", + "id": "plans_2026_09_30_wallet_p1_task_p3_2_orunmila_narration_tools_gated_on_the_p3_plan", + "community": 573, + "norm_label": "task p3-2: orunmila narration tools (gated on the p3+ plan)" + }, + { + "label": "2026-10-01-wallet-p3.md", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-10-01-wallet-p3.md", + "source_location": "L1", + "id": "docs_superpowers_plans_2026_10_01_wallet_p3_md", + "community": 104, + "norm_label": "2026-10-01-wallet-p3.md" + }, + { + "label": "Mansa Wallet P3+ Detailed Plan (assist + narration)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-10-01-wallet-p3.md", + "source_location": "L1", + "id": "plans_2026_10_01_wallet_p3_mansa_wallet_p3_detailed_plan_assist_narration", + "community": 104, + "norm_label": "mansa wallet p3+ detailed plan (assist + narration)" + }, + { + "label": "Global Constraints", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-10-01-wallet-p3.md", + "source_location": "L13", + "id": "plans_2026_10_01_wallet_p3_global_constraints", + "community": 104, + "norm_label": "global constraints" + }, + { + "label": "Review Focus", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-10-01-wallet-p3.md", + "source_location": "L31", + "id": "plans_2026_10_01_wallet_p3_review_focus", + "community": 104, + "norm_label": "review focus" + }, + { + "label": "Task P3-1: Ratings-assist tuning \u2014 XANGO-informed `buy_flag` (gated on this plan)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-10-01-wallet-p3.md", + "source_location": "L45", + "id": "plans_2026_10_01_wallet_p3_task_p3_1_ratings_assist_tuning_xango_informed_buy_flag_gated_on_this_plan", + "community": 104, + "norm_label": "task p3-1: ratings-assist tuning \u2014 xango-informed `buy_flag` (gated on this plan)" + }, + { + "label": "code:python (buyFlag = ()", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-10-01-wallet-p3.md", + "source_location": "L58", + "id": "plans_2026_10_01_wallet_p3_codeblock_1", + "community": 104, + "norm_label": "code:python (buyflag = ()" + }, + { + "label": "code:python (XANGO_WEIGHTS = {\"underweight\": 0.45, \"rating\": 0.25, \"xango)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-10-01-wallet-p3.md", + "source_location": "L68", + "id": "plans_2026_10_01_wallet_p3_codeblock_2", + "community": 104, + "norm_label": "code:python (xango_weights = {\"underweight\": 0.45, \"rating\": 0.25, \"xango)" + }, + { + "label": "code:python (import hashlib)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-10-01-wallet-p3.md", + "source_location": "L83", + "id": "plans_2026_10_01_wallet_p3_codeblock_3", + "community": 104, + "norm_label": "code:python (import hashlib)" + }, + { + "label": "code:bash (git add main/app/wallet/wallet_service.py tests/test_wallet_)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-10-01-wallet-p3.md", + "source_location": "L178", + "id": "plans_2026_10_01_wallet_p3_codeblock_4", + "community": 104, + "norm_label": "code:bash (git add main/app/wallet/wallet_service.py tests/test_wallet_)" + }, + { + "label": "Task P3-2: Orunmila narration tools \u2014 `narrate-positions` first (gated on this plan)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-10-01-wallet-p3.md", + "source_location": "L185", + "id": "plans_2026_10_01_wallet_p3_task_p3_2_orunmila_narration_tools_narrate_positions_first_gated_on_this_plan", + "community": 104, + "norm_label": "task p3-2: orunmila narration tools \u2014 `narrate-positions` first (gated on this plan)" + }, + { + "label": "code:python (async def narrate_positions(wallet_id: int, **_) -> dict:)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-10-01-wallet-p3.md", + "source_location": "L198", + "id": "plans_2026_10_01_wallet_p3_codeblock_5", + "community": 104, + "norm_label": "code:python (async def narrate_positions(wallet_id: int, **_) -> dict:)" + }, + { + "label": "code:python (import asyncio)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-10-01-wallet-p3.md", + "source_location": "L227", + "id": "plans_2026_10_01_wallet_p3_codeblock_6", + "community": 104, + "norm_label": "code:python (import asyncio)" + }, + { + "label": "code:bash (git add main/app/orunmila/tools.py tests/test_orunmila_walle)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-10-01-wallet-p3.md", + "source_location": "L300", + "id": "plans_2026_10_01_wallet_p3_codeblock_7", + "community": 104, + "norm_label": "code:bash (git add main/app/orunmila/tools.py tests/test_orunmila_walle)" + }, + { + "label": "Out of scope for P3 (unchanged from spec \u00a74 / Goal 3)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-10-01-wallet-p3.md", + "source_location": "L307", + "id": "plans_2026_10_01_wallet_p3_out_of_scope_for_p3_unchanged_from_spec_4_goal_3", + "community": 104, + "norm_label": "out of scope for p3 (unchanged from spec \u00a74 / goal 3)" + }, + { + "label": "Standing rules carried over", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-10-01-wallet-p3.md", + "source_location": "L311", + "id": "plans_2026_10_01_wallet_p3_standing_rules_carried_over", + "community": 104, + "norm_label": "standing rules carried over" + }, + { + "label": "Finding-(9) charter-gap note", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-10-01-wallet-p3.md", + "source_location": "L315", + "id": "plans_2026_10_01_wallet_p3_finding_9_charter_gap_note", + "community": 104, + "norm_label": "finding-(9) charter-gap note" + }, { "label": "2026-09-04-wallet-design.md", "file_type": "document", @@ -11959,22241 +13723,23663 @@ "norm_label": "10. plans and follow-ups" }, { - "label": "Drop every cached endpoint body \u2014 called when the feather frame is replaced.", + "label": "Compute time-weighted return, volatility, and dividends for a wallet or ticker.", "file_type": "rationale", - "source_file": "main/app/stocks_api/sync_cache.py", - "source_location": "L38", - "community": 562, - "norm_label": "drop every cached endpoint body \u2014 called when the feather frame is replaced.", - "id": "stocks_api_sync_cache_rationale_38" + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L151", + "community": 101, + "norm_label": "compute time-weighted return, volatility, and dividends for a wallet or ticker.", + "id": "tools_wallet_rationale_151" }, { - "label": "_runtimeConf()", - "file_type": "code", - "source_file": "main/app/stocks_api/build.py", - "source_location": "L50", - "community": 82, - "norm_label": "_runtimeconf()", - "id": "stocks_api_build_runtimeconf" + "label": "Show weight-share rebalance deltas per ticker (buy/sell/hold). Read-only: n", + "file_type": "rationale", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L188", + "community": 101, + "norm_label": "show weight-share rebalance deltas per ticker (buy/sell/hold). read-only: n", + "id": "tools_wallet_rationale_188" }, { - "label": "Feather build / read helpers for the stocks cache. Owns the on-disk layout (CAC", - "file_type": "rationale", - "source_file": "main/app/stocks_api/build.py", + "label": "wallet_service.py", + "file_type": "code", + "source_file": "main/app/wallet/wallet_service.py", "source_location": "L1", - "community": 82, - "norm_label": "feather build / read helpers for the stocks cache. owns the on-disk layout (cac", - "id": "stocks_api_build_rationale_1" + "community": 68, + "norm_label": "wallet_service.py", + "id": "main_app_wallet_wallet_service_py" }, { - "label": "Return (engine, featherPath, nestedPath), preferring live values on the cach", + "label": "XANGO quality score per ticker (0-100 scale). One fundamental read per", "file_type": "rationale", - "source_file": "main/app/stocks_api/build.py", - "source_location": "L51", - "community": 82, - "norm_label": "return (engine, featherpath, nestedpath), preferring live values on the cach", - "id": "stocks_api_build_rationale_51" + "source_file": "main/app/wallet/positions.py", + "source_location": "L23", + "community": 637, + "norm_label": "xango quality score per ticker (0-100 scale). one fundamental read per", + "id": "wallet_positions_rationale_23" }, { - "label": "Abbreviation map for a frame (dependency-injected; no cache import). Result", + "label": "Weight-share deltas on backend floats: target_i = w_i/\u03a3w, targetEquity = target_", "file_type": "rationale", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L31", - "community": 194, - "norm_label": "abbreviation map for a frame (dependency-injected; no cache import). result", - "id": "stocks_api_compress_rationale_31" + "source_file": "main/app/wallet/positions.py", + "source_location": "L83", + "community": 626, + "norm_label": "weight-share deltas on backend floats: target_i = w_i/\u03c3w, targetequity = target_", + "id": "wallet_positions_rationale_83" }, { - "label": "Nested-field map for a frame plus its nested sample (same memo policy).", + "label": "Search user's saved memories, preferences, and past analysis context. Use t", "file_type": "rationale", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L51", - "community": 194, - "norm_label": "nested-field map for a frame plus its nested sample (same memo policy).", - "id": "stocks_api_compress_rationale_51" + "source_file": "main/app/orunmila/tools/memory.py", + "source_location": "L8", + "community": 149, + "norm_label": "search user's saved memories, preferences, and past analysis context. use t", + "id": "tools_memory_rationale_8" }, { - "label": "Pure DataFrame helpers for the stocks feather cache (no I/O, no imports from sib", + "label": "Store a memory about the user's preferences, analysis results, or feedback.", "file_type": "rationale", - "source_file": "main/app/stocks_api/frame.py", + "source_file": "main/app/orunmila/tools/memory.py", + "source_location": "L33", + "community": 149, + "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", + "id": "tools_memory_rationale_33" + }, + { + "label": "get_wallet_positions()", + "file_type": "code", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L27", + "community": 101, + "norm_label": "get_wallet_positions()", + "id": "tools_wallet_get_wallet_positions" + }, + { + "label": "get_wallet_summary()", + "file_type": "code", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L52", + "community": 101, + "norm_label": "get_wallet_summary()", + "id": "tools_wallet_get_wallet_summary" + }, + { + "label": "get_wallet_allocation()", + "file_type": "code", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L77", + "community": 101, + "norm_label": "get_wallet_allocation()", + "id": "tools_wallet_get_wallet_allocation" + }, + { + "label": "get_wallet_performance()", + "file_type": "code", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L148", + "community": 101, + "norm_label": "get_wallet_performance()", + "id": "tools_wallet_get_wallet_performance" + }, + { + "label": "get_wallet_rebalance()", + "file_type": "code", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L187", + "community": 101, + "norm_label": "get_wallet_rebalance()", + "id": "tools_wallet_get_wallet_rebalance" + }, + { + "label": "tools.py", + "file_type": "code", + "source_file": "main/app/orunmila/tools.py", "source_location": "L1", - "community": 82, - "norm_label": "pure dataframe helpers for the stocks feather cache (no i/o, no imports from sib", - "id": "stocks_api_frame_rationale_1" + "community": 67, + "norm_label": "tools.py", + "id": "main_app_orunmila_tools_py" }, { - "label": "Return (engine, featherPath, nestedPath), preferring live values on the cach", - "file_type": "rationale", - "source_file": "main/app/stocks_api/build.py", - "source_location": "L47", - "community": 82, - "norm_label": "return (engine, featherpath, nestedpath), preferring live values on the cach", - "id": "stocks_api_build_rationale_47" + "label": "search_memory()", + "file_type": "code", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L27", + "community": 67, + "norm_label": "search_memory()", + "id": "orunmila_tools_search_memory" }, { - "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": "save_memory()", + "file_type": "code", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L58", + "community": 149, + "norm_label": "save_memory()", + "id": "orunmila_tools_save_memory" }, { - "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": "L235", - "community": 169, - "norm_label": "get 10-year daily price history (cotation) for brazilian b3 stocks. retur", - "id": "controller_stocksapi_controller_rationale_235" + "label": "execute_code()", + "file_type": "code", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L100", + "community": 605, + "norm_label": "execute_code()", + "id": "orunmila_tools_execute_code" }, { - "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": "L289", - "community": 81, - "norm_label": "get real-time price quotation for a single brazilian b3 stock. returns th", - "id": "controller_stocksapi_controller_rationale_289" + "label": "read_file()", + "file_type": "code", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L121", + "community": 67, + "norm_label": "read_file()", + "id": "orunmila_tools_read_file" }, { - "label": "optimizeDtypes()", + "label": "write_file()", "file_type": "code", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L43", - "community": 82, - "norm_label": "optimizedtypes()", - "id": "stocks_api_cache_optimizedtypes" + "source_file": "main/app/orunmila/tools.py", + "source_location": "L135", + "community": 67, + "norm_label": "write_file()", + "id": "orunmila_tools_write_file" }, { - "label": "arrowTypeFor()", + "label": "list_files()", "file_type": "code", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L63", - "community": 82, - "norm_label": "arrowtypefor()", - "id": "stocks_api_cache_arrowtypefor" + "source_file": "main/app/orunmila/tools.py", + "source_location": "L151", + "community": 616, + "norm_label": "list_files()", + "id": "orunmila_tools_list_files" }, { - "label": "buildFeatherCache()", + "label": "serve_file()", "file_type": "code", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L80", - "community": 82, - "norm_label": "buildfeathercache()", - "id": "stocks_api_cache_buildfeathercache" + "source_file": "main/app/orunmila/tools.py", + "source_location": "L164", + "community": 234, + "norm_label": "serve_file()", + "id": "orunmila_tools_serve_file" }, { - "label": "tryBuildLock()", + "label": "get_wallet_positions()", "file_type": "code", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L171", - "community": 82, - "norm_label": "trybuildlock()", - "id": "stocks_api_cache_trybuildlock" + "source_file": "main/app/orunmila/tools.py", + "source_location": "L189", + "community": 67, + "norm_label": "get_wallet_positions()", + "id": "orunmila_tools_get_wallet_positions" }, { - "label": "sortCacheFrame()", + "label": "get_wallet_summary()", "file_type": "code", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L188", - "community": 82, - "norm_label": "sortcacheframe()", - "id": "stocks_api_cache_sortcacheframe" + "source_file": "main/app/orunmila/tools.py", + "source_location": "L225", + "community": 67, + "norm_label": "get_wallet_summary()", + "id": "orunmila_tools_get_wallet_summary" }, { - "label": "buildTickerIndex()", + "label": "get_wallet_allocation()", "file_type": "code", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L198", - "community": 82, - "norm_label": "buildtickerindex()", - "id": "stocks_api_cache_buildtickerindex" + "source_file": "main/app/orunmila/tools.py", + "source_location": "L261", + "community": 152, + "norm_label": "get_wallet_allocation()", + "id": "orunmila_tools_get_wallet_allocation" }, { - "label": "readFeatherDataFrame()", + "label": "list_wallet_earnings()", "file_type": "code", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L207", - "community": 82, - "norm_label": "readfeatherdataframe()", - "id": "stocks_api_cache_readfeatherdataframe" + "source_file": "main/app/orunmila/tools.py", + "source_location": "L299", + "community": 152, + "norm_label": "list_wallet_earnings()", + "id": "orunmila_tools_list_wallet_earnings" }, { - "label": "Priorities (active order, 2026-09-29)", - "file_type": "document", - "source_file": "TODO.md", - "source_location": "L1", - "community": 187, - "norm_label": "priorities (active order, 2026-09-29)", - "id": "server_todo_priorities_active_order_2026_09_29" + "label": "get_wallet_performance()", + "file_type": "code", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L354", + "community": 535, + "norm_label": "get_wallet_performance()", + "id": "orunmila_tools_get_wallet_performance" }, { - "label": "Discover available field names before querying /historical or /fundamental.", - "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L47", - "community": 222, - "norm_label": "discover available field names before querying /historical or /fundamental.", - "id": "controller_stocksapi_controller_rationale_47" + "label": "get_wallet_rebalance()", + "file_type": "code", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L404", + "community": 67, + "norm_label": "get_wallet_rebalance()", + "id": "orunmila_tools_get_wallet_rebalance" }, { - "label": "Get year-based historical financial data for Brazilian B3 stocks. Returns", + "label": "dispatchToolCall()", + "file_type": "code", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L457", + "community": 165, + "norm_label": "dispatchtoolcall()", + "id": "orunmila_tools_dispatchtoolcall" + }, + { + "label": "Search user's saved memories, preferences, and past analysis context. Use", "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/orunmila/tools.py", + "source_location": "L28", + "community": 67, + "norm_label": "search user's saved memories, preferences, and past analysis context. use", + "id": "orunmila_tools_rationale_28" }, { - "label": "Get point-in-time fundamental/valuation data for Brazilian B3 stocks. Ret", + "label": "Store a memory about the user's preferences, analysis results, or feedback.", "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" + "source_file": "main/app/orunmila/tools.py", + "source_location": "L59", + "community": 149, + "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", + "id": "orunmila_tools_rationale_59" }, { - "label": "Get 10-year daily price history (cotation) for Brazilian B3 stocks. Retur", + "label": "Execute Python code in an isolated sandbox. Use for quantitative analysis,", "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" + "source_file": "main/app/orunmila/tools.py", + "source_location": "L101", + "community": 605, + "norm_label": "execute python code in an isolated sandbox. use for quantitative analysis,", + "id": "orunmila_tools_rationale_101" }, { - "label": "Get real-time price quotation for a single Brazilian B3 stock. Returns th", + "label": "Read a file from the workspace. Args: path: Path to the file (e.", "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" + "source_file": "main/app/orunmila/tools.py", + "source_location": "L122", + "community": 67, + "norm_label": "read a file from the workspace. args: path: path to the file (e.", + "id": "orunmila_tools_rationale_122" }, { - "label": "Discover available field names before querying /historical or /fundamental.", + "label": "Write a file to the workspace. Use this to save data files (CSV, JSON, scri", "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L39", - "community": 222, - "norm_label": "discover available field names before querying /historical or /fundamental.", - "id": "controller_stocksapi_controller_rationale_39" + "source_file": "main/app/orunmila/tools.py", + "source_location": "L136", + "community": 67, + "norm_label": "write a file to the workspace. use this to save data files (csv, json, scri", + "id": "orunmila_tools_rationale_136" }, { - "label": "Get year-based historical financial data for Brazilian B3 stocks. Returns", + "label": "List files in the workspace directory. Args: path: Directory pat", "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L95", - "community": 197, - "norm_label": "get year-based historical financial data for brazilian b3 stocks. returns", - "id": "controller_stocksapi_controller_rationale_95" + "source_file": "main/app/orunmila/tools.py", + "source_location": "L152", + "community": 616, + "norm_label": "list files in the workspace directory. args: path: directory pat", + "id": "orunmila_tools_rationale_152" }, { - "label": "Get point-in-time fundamental/valuation data for Brazilian B3 stocks. Ret", + "label": "Get a download link for a workspace file to share with the user. Use this", "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L160", - "community": 157, - "norm_label": "get point-in-time fundamental/valuation data for brazilian b3 stocks. ret", - "id": "controller_stocksapi_controller_rationale_160" + "source_file": "main/app/orunmila/tools.py", + "source_location": "L165", + "community": 234, + "norm_label": "get a download link for a workspace file to share with the user. use this", + "id": "orunmila_tools_rationale_165" }, { - "label": "Get 10-year daily price history (cotation) for Brazilian B3 stocks. Retur", + "label": "List wallet holdings with live prices, equity, allocation, and buy signals.", "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L228", - "community": 169, - "norm_label": "get 10-year daily price history (cotation) for brazilian b3 stocks. retur", - "id": "controller_stocksapi_controller_rationale_228" + "source_file": "main/app/orunmila/tools.py", + "source_location": "L190", + "community": 67, + "norm_label": "list wallet holdings with live prices, equity, allocation, and buy signals.", + "id": "orunmila_tools_rationale_190" }, { - "label": "Get real-time price quotation for a single Brazilian B3 stock. Returns th", + "label": "Summarize applied capital, equity, and variation for a wallet. Read-only:", "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L282", - "community": 81, - "norm_label": "get real-time price quotation for a single brazilian b3 stock. returns th", - "id": "controller_stocksapi_controller_rationale_282" + "source_file": "main/app/orunmila/tools.py", + "source_location": "L226", + "community": 67, + "norm_label": "summarize applied capital, equity, and variation for a wallet. read-only:", + "id": "orunmila_tools_rationale_226" }, { - "label": "Uvicorn Worker Scaling \u2014 Verified State and Evaluated Plan", - "file_type": "document", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L1", - "community": 495, - "norm_label": "uvicorn worker scaling \u2014 verified state and evaluated plan", - "id": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_scaling_verified_state_and_evaluated_plan" + "label": "Break wallet equity down by ticker or asset type. Read-only: never mutate", + "file_type": "rationale", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L262", + "community": 152, + "norm_label": "break wallet equity down by ticker or asset type. read-only: never mutate", + "id": "orunmila_tools_rationale_262" }, { - "label": "1. Verified current state (file:line)", - "file_type": "document", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L13", - "community": 495, - "norm_label": "1. verified current state (file:line)", - "id": "superpowers_uvicorn_worker_scaling_plan_1_verified_current_state_file_line" + "label": "List accrued earnings (dividends, JSCP) for a wallet. Read-only: never mu", + "file_type": "rationale", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L300", + "community": 152, + "norm_label": "list accrued earnings (dividends, jscp) for a wallet. read-only: never mu", + "id": "orunmila_tools_rationale_300" }, { - "label": "1.1 Runtime topology \u2014 one process, many threads", - "file_type": "document", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L15", - "community": 495, - "norm_label": "1.1 runtime topology \u2014 one process, many threads", - "id": "superpowers_uvicorn_worker_scaling_plan_1_1_runtime_topology_one_process_many_threads" + "label": "Compute time-weighted return, volatility, and dividends for a wallet or ticker.", + "file_type": "rationale", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L357", + "community": 535, + "norm_label": "compute time-weighted return, volatility, and dividends for a wallet or ticker.", + "id": "orunmila_tools_rationale_357" }, { - "label": "1.2 The cache is already the right shape for multi-process", - "file_type": "document", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L33", - "community": 495, - "norm_label": "1.2 the cache is already the right shape for multi-process", - "id": "superpowers_uvicorn_worker_scaling_plan_1_2_the_cache_is_already_the_right_shape_for_multi_process" + "label": "Show weight-share rebalance deltas per ticker (buy/sell/hold). Read-only:", + "file_type": "rationale", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L405", + "community": 67, + "norm_label": "show weight-share rebalance deltas per ticker (buy/sell/hold). read-only:", + "id": "orunmila_tools_rationale_405" }, { - "label": "1.3 Per-process state that multiplies with N", - "file_type": "document", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L48", - "community": 495, - "norm_label": "1.3 per-process state that multiplies with n", - "id": "superpowers_uvicorn_worker_scaling_plan_1_3_per_process_state_that_multiplies_with_n" + "label": "Shared live-price/equity pass for positions + rebalance (single source, no dupli", + "file_type": "rationale", + "source_file": "main/app/wallet/positions.py", + "source_location": "L61", + "community": 638, + "norm_label": "shared live-price/equity pass for positions + rebalance (single source, no dupli", + "id": "wallet_positions_rationale_61" }, { - "label": "2. Options evaluated", - "file_type": "document", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L60", - "community": 495, - "norm_label": "2. options evaluated", - "id": "superpowers_uvicorn_worker_scaling_plan_2_options_evaluated" + "label": "Weight-share deltas on backend floats: target_i = w_i/\u03a3w, targetEquity = target_", + "file_type": "rationale", + "source_file": "main/app/wallet/positions.py", + "source_location": "L84", + "community": 639, + "norm_label": "weight-share deltas on backend floats: target_i = w_i/\u03c3w, targetequity = target_", + "id": "wallet_positions_rationale_84" }, { - "label": "3. Exact required changes (before raising N)", - "file_type": "document", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L74", - "community": 495, - "norm_label": "3. exact required changes (before raising n)", - "id": "superpowers_uvicorn_worker_scaling_plan_3_exact_required_changes_before_raising_n" + "label": "Search user's saved memories, preferences, and past analysis context. Use", + "file_type": "rationale", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L23", + "community": 67, + "norm_label": "search user's saved memories, preferences, and past analysis context. use", + "id": "orunmila_tools_rationale_23" }, { - "label": "4. Risks and open items", - "file_type": "document", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L87", - "community": 495, - "norm_label": "4. risks and open items", - "id": "superpowers_uvicorn_worker_scaling_plan_4_risks_and_open_items" + "label": "Store a memory about the user's preferences, analysis results, or feedback.", + "file_type": "rationale", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L54", + "community": 149, + "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", + "id": "orunmila_tools_rationale_54" }, { - "label": "5. Baseline (measured)", - "file_type": "document", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L100", - "community": 495, - "norm_label": "5. baseline (measured)", - "id": "superpowers_uvicorn_worker_scaling_plan_5_baseline_measured" + "label": "Execute Python code in an isolated sandbox. Use for quantitative analysis,", + "file_type": "rationale", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L96", + "community": 605, + "norm_label": "execute python code in an isolated sandbox. use for quantitative analysis,", + "id": "orunmila_tools_rationale_96" }, { - "label": "6. Evaluation of the user's `docs/nginx-scaling-plan.md`", - "file_type": "document", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L106", - "community": 495, - "norm_label": "6. evaluation of the user's `docs/nginx-scaling-plan.md`", - "id": "superpowers_uvicorn_worker_scaling_plan_6_evaluation_of_the_user_s_docs_nginx_scaling_plan_md" + "label": "Read a file from the workspace. Args: path: Path to the file (e.", + "file_type": "rationale", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L117", + "community": 67, + "norm_label": "read a file from the workspace. args: path: path to the file (e.", + "id": "orunmila_tools_rationale_117" }, { - "label": "7. What is out of scope (separate plan)", - "file_type": "document", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L121", - "community": 495, - "norm_label": "7. what is out of scope (separate plan)", - "id": "superpowers_uvicorn_worker_scaling_plan_7_what_is_out_of_scope_separate_plan" + "label": "Write a file to the workspace. Use this to save data files (CSV, JSON, scri", + "file_type": "rationale", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L131", + "community": 67, + "norm_label": "write a file to the workspace. use this to save data files (csv, json, scri", + "id": "orunmila_tools_rationale_131" }, { - "label": "3. API contracts (all under `/api/wallet`; chain: `main/controller/wallet_controller.py` \u2192 `main/service/wallet_service.py::` \u2192 `main/models/wallet.py::`; auth `Depends(UserManager.getCurrentUser)` + `Depends(getSession)` throughout)", - "file_type": "document", - "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L49", - "community": 130, - "norm_label": "3. api contracts (all under `/api/wallet`; chain: `main/controller/wallet_controller.py` \u2192 `main/service/wallet_service.py::` \u2192 `main/models/wallet.py::`; auth `depends(usermanager.getcurrentuser)` + `depends(getsession)` throughout)", - "id": "superpowers_investidor10_wallet_spec_3_api_contracts_all_under_api_wallet_chain_main_controller_wallet_controller_py_main_service_wallet_service_py_fn_main_models_wallet_py_model_auth_depends_usermanager_getcurrentuser_depends_getsession_throughout" + "label": "List files in the workspace directory. Args: path: Directory pat", + "file_type": "rationale", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L147", + "community": 616, + "norm_label": "list files in the workspace directory. args: path: directory pat", + "id": "orunmila_tools_rationale_147" }, { - "label": "Uvicorn Worker Scaling \u2014 Verified State + Evaluated Plan", - "file_type": "document", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L1", - "community": 495, - "norm_label": "uvicorn worker scaling \u2014 verified state + evaluated plan", - "id": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_scaling_verified_state_evaluated_plan" + "label": "Get a download link for a workspace file to share with the user. Use this", + "file_type": "rationale", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L160", + "community": 234, + "norm_label": "get a download link for a workspace file to share with the user. use this", + "id": "orunmila_tools_rationale_160" }, { - "label": "1. Verified current state", - "file_type": "document", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L8", - "community": 495, - "norm_label": "1. verified current state", - "id": "superpowers_uvicorn_worker_scaling_plan_1_verified_current_state" + "label": "List wallet holdings with live prices, equity, allocation, and buy signals.", + "file_type": "rationale", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L185", + "community": 67, + "norm_label": "list wallet holdings with live prices, equity, allocation, and buy signals.", + "id": "orunmila_tools_rationale_185" }, { - "label": "1.1 Process model \u2014 exactly one process, several threads", - "file_type": "document", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L10", - "community": 495, - "norm_label": "1.1 process model \u2014 exactly one process, several threads", - "id": "superpowers_uvicorn_worker_scaling_plan_1_1_process_model_exactly_one_process_several_threads" + "label": "Summarize applied capital, equity, and variation for a wallet. Read-only:", + "file_type": "rationale", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L224", + "community": 67, + "norm_label": "summarize applied capital, equity, and variation for a wallet. read-only:", + "id": "orunmila_tools_rationale_224" }, { - "label": "1.2 Cache (post-refactor) \u2014 RAM sharing works", - "file_type": "document", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L23", - "community": 495, - "norm_label": "1.2 cache (post-refactor) \u2014 ram sharing works", - "id": "superpowers_uvicorn_worker_scaling_plan_1_2_cache_post_refactor_ram_sharing_works" + "label": "Break wallet equity down by ticker or asset type. Read-only: never mutate", + "file_type": "rationale", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L263", + "community": 152, + "norm_label": "break wallet equity down by ticker or asset type. read-only: never mutate", + "id": "orunmila_tools_rationale_263" }, { - "label": "1.3 Per-process resources that multiply with N workers", - "file_type": "document", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L27", - "community": 495, - "norm_label": "1.3 per-process resources that multiply with n workers", - "id": "superpowers_uvicorn_worker_scaling_plan_1_3_per_process_resources_that_multiply_with_n_workers" + "label": "List accrued earnings (dividends, JSCP) for a wallet. Read-only: never mu", + "file_type": "rationale", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L304", + "community": 152, + "norm_label": "list accrued earnings (dividends, jscp) for a wallet. read-only: never mu", + "id": "orunmila_tools_rationale_304" }, { - "label": "2. The blocking defect (must fix before N > 1)", - "file_type": "document", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L40", - "community": 495, - "norm_label": "2. the blocking defect (must fix before n > 1)", - "id": "superpowers_uvicorn_worker_scaling_plan_2_the_blocking_defect_must_fix_before_n_1" + "label": "Compute time-weighted return, volatility, and dividends for a wallet or ticker.", + "file_type": "rationale", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L364", + "community": 535, + "norm_label": "compute time-weighted return, volatility, and dividends for a wallet or ticker.", + "id": "orunmila_tools_rationale_364" }, { - "label": "code:block1 (275: lockFile = tryBuildLock())", - "file_type": "document", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L44", - "community": 495, - "norm_label": "code:block1 (275: lockfile = trybuildlock())", - "id": "superpowers_uvicorn_worker_scaling_plan_codeblock_1" + "label": "Show weight-share rebalance deltas per ticker (buy/sell/hold). Read-only:", + "file_type": "rationale", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L415", + "community": 67, + "norm_label": "show weight-share rebalance deltas per ticker (buy/sell/hold). read-only:", + "id": "orunmila_tools_rationale_415" }, { - "label": "3. Options evaluated", - "file_type": "document", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L66", - "community": 495, - "norm_label": "3. options evaluated", - "id": "superpowers_uvicorn_worker_scaling_plan_3_options_evaluated" + "label": "fetchCachedClose()", + "file_type": "code", + "source_file": "main/app/wallet/market_data.py", + "source_location": "L42", + "community": 535, + "norm_label": "fetchcachedclose()", + "id": "wallet_market_data_fetchcachedclose" }, { - "label": "4. Recommended plan", - "file_type": "document", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L79", - "community": 495, - "norm_label": "4. recommended plan", - "id": "superpowers_uvicorn_worker_scaling_plan_4_recommended_plan" + "label": "XANGO quality score per ticker (0-100 scale). One fundamental read per", + "file_type": "rationale", + "source_file": "main/app/wallet/positions.py", + "source_location": "L20", + "community": 648, + "norm_label": "xango quality score per ticker (0-100 scale). one fundamental read per", + "id": "wallet_positions_rationale_20" }, { - "label": "Phase 0 \u2014 Measure (half a day, no infra)", - "file_type": "document", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L81", - "community": 495, - "norm_label": "phase 0 \u2014 measure (half a day, no infra)", - "id": "superpowers_uvicorn_worker_scaling_plan_phase_0_measure_half_a_day_no_infra" + "label": "Shared live-price/equity pass for positions + rebalance (single source, no dupli", + "file_type": "rationale", + "source_file": "main/app/wallet/positions.py", + "source_location": "L58", + "community": 649, + "norm_label": "shared live-price/equity pass for positions + rebalance (single source, no dupli", + "id": "wallet_positions_rationale_58" }, { - "label": "Phase 1 \u2014 Correctness fixes (required before any N > 1)", - "file_type": "document", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L87", - "community": 495, - "norm_label": "phase 1 \u2014 correctness fixes (required before any n > 1)", - "id": "superpowers_uvicorn_worker_scaling_plan_phase_1_correctness_fixes_required_before_any_n_1" + "label": "Weight-share deltas on backend floats: target_i = w_i/\u03a3w, targetEquity = target_", + "file_type": "rationale", + "source_file": "main/app/wallet/positions.py", + "source_location": "L80", + "community": 650, + "norm_label": "weight-share deltas on backend floats: target_i = w_i/\u03c3w, targetequity = target_", + "id": "wallet_positions_rationale_80" }, { - "label": "Phase 2 \u2014 Enable workers on one host (option c)", - "file_type": "document", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L93", - "community": 495, - "norm_label": "phase 2 \u2014 enable workers on one host (option c)", - "id": "superpowers_uvicorn_worker_scaling_plan_phase_2_enable_workers_on_one_host_option_c" + "label": "XANGO quality score per ticker (0-100 scale). One fundamental read per ti", + "file_type": "rationale", + "source_file": "main/app/wallet/positions.py", + "source_location": "L19", + "community": 482, + "norm_label": "xango quality score per ticker (0-100 scale). one fundamental read per ti", + "id": "wallet_positions_rationale_19" }, { - "label": "Phase 3 \u2014 Multi-host (only if you split boxes)", - "file_type": "document", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L99", - "community": 495, - "norm_label": "phase 3 \u2014 multi-host (only if you split boxes)", - "id": "superpowers_uvicorn_worker_scaling_plan_phase_3_multi_host_only_if_you_split_boxes" + "label": "Shared live-price/equity pass for positions + rebalance (single source, no dupli", + "file_type": "rationale", + "source_file": "main/app/wallet/positions.py", + "source_location": "L57", + "community": 482, + "norm_label": "shared live-price/equity pass for positions + rebalance (single source, no dupli", + "id": "wallet_positions_rationale_57" }, { - "label": "5. Evaluation of the existing scaling plan (recovered from git)", - "file_type": "document", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L109", - "community": 495, - "norm_label": "5. evaluation of the existing scaling plan (recovered from git)", - "id": "superpowers_uvicorn_worker_scaling_plan_5_evaluation_of_the_existing_scaling_plan_recovered_from_git" + "label": "Weight-share deltas on backend floats: target_i = w_i/\u03a3w, targetEquity = target_", + "file_type": "rationale", + "source_file": "main/app/wallet/positions.py", + "source_location": "L79", + "community": 482, + "norm_label": "weight-share deltas on backend floats: target_i = w_i/\u03c3w, targetequity = target_", + "id": "wallet_positions_rationale_79" }, { - "label": "6. Risks / open items", - "file_type": "document", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L122", - "community": 495, - "norm_label": "6. risks / open items", - "id": "superpowers_uvicorn_worker_scaling_plan_6_risks_open_items" + "label": "narrate_positions()", + "file_type": "code", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L183", + "community": 152, + "norm_label": "narrate_positions()", + "id": "orunmila_tools_narrate_positions" }, { - "label": "uvicorn-worker-scaling-plan.md", - "file_type": "document", - "source_file": "docs/uvicorn-worker-scaling-plan.md", - "source_location": "L1", - "community": 487, - "norm_label": "uvicorn-worker-scaling-plan.md", - "id": "docs_uvicorn_worker_scaling_plan_md" + "label": "Search user's saved memories, preferences, and past analysis context. Use", + "file_type": "rationale", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L22", + "community": 67, + "norm_label": "search user's saved memories, preferences, and past analysis context. use", + "id": "orunmila_tools_rationale_22" }, { - "label": "Uvicorn Worker Scaling \u2014 Verified State + Evaluated Plan", - "file_type": "document", - "source_file": "docs/uvicorn-worker-scaling-plan.md", - "source_location": "L1", - "community": 487, - "norm_label": "uvicorn worker scaling \u2014 verified state + evaluated plan", - "id": "docs_uvicorn_worker_scaling_plan_uvicorn_worker_scaling_verified_state_evaluated_plan" - }, - { - "label": "1. Verified current state", - "file_type": "document", - "source_file": "docs/uvicorn-worker-scaling-plan.md", - "source_location": "L8", - "community": 487, - "norm_label": "1. verified current state", - "id": "docs_uvicorn_worker_scaling_plan_1_verified_current_state" + "label": "Store a memory about the user's preferences, analysis results, or feedback.", + "file_type": "rationale", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L53", + "community": 149, + "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", + "id": "orunmila_tools_rationale_53" }, { - "label": "1.1 Process model \u2014 exactly one process, several threads", - "file_type": "document", - "source_file": "docs/uvicorn-worker-scaling-plan.md", - "source_location": "L10", - "community": 487, - "norm_label": "1.1 process model \u2014 exactly one process, several threads", - "id": "docs_uvicorn_worker_scaling_plan_1_1_process_model_exactly_one_process_several_threads" + "label": "Execute Python code in an isolated sandbox. Use for quantitative analysis,", + "file_type": "rationale", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L95", + "community": 605, + "norm_label": "execute python code in an isolated sandbox. use for quantitative analysis,", + "id": "orunmila_tools_rationale_95" }, { - "label": "1.2 Cache (post-refactor) \u2014 RAM sharing works", - "file_type": "document", - "source_file": "docs/uvicorn-worker-scaling-plan.md", - "source_location": "L23", - "community": 487, - "norm_label": "1.2 cache (post-refactor) \u2014 ram sharing works", - "id": "docs_uvicorn_worker_scaling_plan_1_2_cache_post_refactor_ram_sharing_works" + "label": "Read a file from the workspace. Args: path: Path to the file (e.", + "file_type": "rationale", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L116", + "community": 67, + "norm_label": "read a file from the workspace. args: path: path to the file (e.", + "id": "orunmila_tools_rationale_116" }, { - "label": "1.3 Per-process resources that multiply with N workers", - "file_type": "document", - "source_file": "docs/uvicorn-worker-scaling-plan.md", - "source_location": "L27", - "community": 487, - "norm_label": "1.3 per-process resources that multiply with n workers", - "id": "docs_uvicorn_worker_scaling_plan_1_3_per_process_resources_that_multiply_with_n_workers" + "label": "Write a file to the workspace. Use this to save data files (CSV, JSON, scri", + "file_type": "rationale", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L130", + "community": 67, + "norm_label": "write a file to the workspace. use this to save data files (csv, json, scri", + "id": "orunmila_tools_rationale_130" }, { - "label": "2. The blocking defect (must fix before N > 1)", - "file_type": "document", - "source_file": "docs/uvicorn-worker-scaling-plan.md", - "source_location": "L40", - "community": 487, - "norm_label": "2. the blocking defect (must fix before n > 1)", - "id": "docs_uvicorn_worker_scaling_plan_2_the_blocking_defect_must_fix_before_n_1" + "label": "List files in the workspace directory. Args: path: Directory pat", + "file_type": "rationale", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L146", + "community": 616, + "norm_label": "list files in the workspace directory. args: path: directory pat", + "id": "orunmila_tools_rationale_146" }, { - "label": "code:block1 (275: lockFile = tryBuildLock())", - "file_type": "document", - "source_file": "docs/uvicorn-worker-scaling-plan.md", - "source_location": "L44", - "community": 487, - "norm_label": "code:block1 (275: lockfile = trybuildlock())", - "id": "docs_uvicorn_worker_scaling_plan_codeblock_1" + "label": "Get a download link for a workspace file to share with the user. Use this", + "file_type": "rationale", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L159", + "community": 234, + "norm_label": "get a download link for a workspace file to share with the user. use this", + "id": "orunmila_tools_rationale_159" }, { - "label": "3. Options evaluated", - "file_type": "document", - "source_file": "docs/uvicorn-worker-scaling-plan.md", - "source_location": "L66", - "community": 487, - "norm_label": "3. options evaluated", - "id": "docs_uvicorn_worker_scaling_plan_3_options_evaluated" + "label": "Narrate the user's wallet positions in plain language. Read-only summary", + "file_type": "rationale", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L184", + "community": 152, + "norm_label": "narrate the user's wallet positions in plain language. read-only summary", + "id": "orunmila_tools_rationale_184" }, { - "label": "4. Recommended plan", - "file_type": "document", - "source_file": "docs/uvicorn-worker-scaling-plan.md", - "source_location": "L79", - "community": 487, - "norm_label": "4. recommended plan", - "id": "docs_uvicorn_worker_scaling_plan_4_recommended_plan" + "label": "XANGO quality score per ticker (0-100 scale). One fundamental read per tick", + "file_type": "rationale", + "source_file": "main/app/wallet/positions.py", + "source_location": "L18", + "community": 482, + "norm_label": "xango quality score per ticker (0-100 scale). one fundamental read per tick", + "id": "wallet_positions_rationale_18" }, { - "label": "Phase 0 \u2014 Measure (half a day, no infra)", - "file_type": "document", - "source_file": "docs/uvicorn-worker-scaling-plan.md", - "source_location": "L81", - "community": 487, - "norm_label": "phase 0 \u2014 measure (half a day, no infra)", - "id": "docs_uvicorn_worker_scaling_plan_phase_0_measure_half_a_day_no_infra" + "label": "Shared live-price/equity pass for positions + rebalance (single source, no dupli", + "file_type": "rationale", + "source_file": "main/app/wallet/positions.py", + "source_location": "L56", + "community": 482, + "norm_label": "shared live-price/equity pass for positions + rebalance (single source, no dupli", + "id": "wallet_positions_rationale_56" }, { - "label": "Phase 1 \u2014 Correctness fixes (required before any N > 1)", - "file_type": "document", - "source_file": "docs/uvicorn-worker-scaling-plan.md", - "source_location": "L87", - "community": 487, - "norm_label": "phase 1 \u2014 correctness fixes (required before any n > 1)", - "id": "docs_uvicorn_worker_scaling_plan_phase_1_correctness_fixes_required_before_any_n_1" + "label": "Weight-share deltas on backend floats: target_i = w_i/\u03a3w, targetEquity = target_", + "file_type": "rationale", + "source_file": "main/app/wallet/positions.py", + "source_location": "L78", + "community": 482, + "norm_label": "weight-share deltas on backend floats: target_i = w_i/\u03c3w, targetequity = target_", + "id": "wallet_positions_rationale_78" }, { - "label": "Phase 2 \u2014 Enable workers on one host (option c)", - "file_type": "document", - "source_file": "docs/uvicorn-worker-scaling-plan.md", - "source_location": "L93", - "community": 487, - "norm_label": "phase 2 \u2014 enable workers on one host (option c)", - "id": "docs_uvicorn_worker_scaling_plan_phase_2_enable_workers_on_one_host_option_c" + "label": "scoreBuyFlag()", + "file_type": "code", + "source_file": "main/app/wallet/positions.py", + "source_location": "L52", + "community": 482, + "norm_label": "scorebuyflag()", + "id": "wallet_positions_scorebuyflag" }, { - "label": "Phase 3 \u2014 Multi-host (only if you split boxes)", - "file_type": "document", - "source_file": "docs/uvicorn-worker-scaling-plan.md", - "source_location": "L99", - "community": 487, - "norm_label": "phase 3 \u2014 multi-host (only if you split boxes)", - "id": "docs_uvicorn_worker_scaling_plan_phase_3_multi_host_only_if_you_split_boxes" + "label": "XANGO quality score per ticker (0-100 scale). One fundamental read per tick", + "file_type": "rationale", + "source_file": "main/app/wallet/positions.py", + "source_location": "L21", + "community": 482, + "norm_label": "xango quality score per ticker (0-100 scale). one fundamental read per tick", + "id": "wallet_positions_rationale_21" }, { - "label": "5. Evaluation of the existing scaling plan (recovered from git)", - "file_type": "document", - "source_file": "docs/uvicorn-worker-scaling-plan.md", - "source_location": "L109", - "community": 487, - "norm_label": "5. evaluation of the existing scaling plan (recovered from git)", - "id": "docs_uvicorn_worker_scaling_plan_5_evaluation_of_the_existing_scaling_plan_recovered_from_git" + "label": "XANGO-informed buy flag (pure function, deterministic, no learned params).", + "file_type": "rationale", + "source_file": "main/app/wallet/positions.py", + "source_location": "L59", + "community": 482, + "norm_label": "xango-informed buy flag (pure function, deterministic, no learned params).", + "id": "wallet_positions_rationale_59" }, { - "label": "6. Risks / open items", - "file_type": "document", - "source_file": "docs/uvicorn-worker-scaling-plan.md", - "source_location": "L122", - "community": 487, - "norm_label": "6. risks / open items", - "id": "docs_uvicorn_worker_scaling_plan_6_risks_open_items" + "label": "XANGO-informed buy flag (pure function, deterministic, no learned params).", + "file_type": "rationale", + "source_file": "main/app/wallet/positions.py", + "source_location": "L36", + "community": 482, + "norm_label": "xango-informed buy flag (pure function, deterministic, no learned params).", + "id": "wallet_positions_rationale_36" }, { - "label": "6.1 DB & migrations (`user_db`) \u2014 READY, 2 actions", - "file_type": "document", - "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L85", - "community": 130, - "norm_label": "6.1 db & migrations (`user_db`) \u2014 ready, 2 actions", - "id": "superpowers_investidor10_wallet_spec_6_1_db_migrations_user_db_ready_2_actions" + "label": "auth.py", + "file_type": "code", + "source_file": "main/app/wallet/auth.py", + "source_location": "L1", + "community": 632, + "norm_label": "auth.py", + "id": "main_app_wallet_auth_py" }, { - "label": "6.2 Stocks/price access \u2014 READY for full-series; ONE new helper needed", - "file_type": "document", - "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L92", - "community": 130, - "norm_label": "6.2 stocks/price access \u2014 ready for full-series; one new helper needed", - "id": "superpowers_investidor10_wallet_spec_6_2_stocks_price_access_ready_for_full_series_one_new_helper_needed" + "label": "resolveRawToken()", + "file_type": "code", + "source_file": "main/app/wallet/auth.py", + "source_location": "L13", + "community": 632, + "norm_label": "resolverawtoken()", + "id": "wallet_auth_resolverawtoken" }, { - "label": "6.3 Wiring / auth / tests \u2014 READY", - "file_type": "document", - "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L98", - "community": 130, - "norm_label": "6.3 wiring / auth / tests \u2014 ready", - "id": "superpowers_investidor10_wallet_spec_6_3_wiring_auth_tests_ready" + "label": "getWalletIdentity()", + "file_type": "code", + "source_file": "main/app/wallet/auth.py", + "source_location": "L26", + "community": 632, + "norm_label": "getwalletidentity()", + "id": "wallet_auth_getwalletidentity" }, { - "label": "6.4 Scraper pipeline (P2 dividends / has_b3) \u2014 READY (public sources only)", - "file_type": "document", - "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L104", - "community": 130, - "norm_label": "6.4 scraper pipeline (p2 dividends / has_b3) \u2014 ready (public sources only)", - "id": "superpowers_investidor10_wallet_spec_6_4_scraper_pipeline_p2_dividends_has_b3_ready_public_sources_only" + "label": "requireWalletUser()", + "file_type": "code", + "source_file": "main/app/wallet/auth.py", + "source_location": "L30", + "community": 632, + "norm_label": "requirewalletuser()", + "id": "wallet_auth_requirewalletuser" }, { - "label": "investidor10-wallet-research.md", - "file_type": "document", - "source_file": "docs/investidor10-wallet-research.md", - "source_location": "L1", - "community": 582, - "norm_label": "investidor10-wallet-research.md", - "id": "docs_investidor10_wallet_research_md" + "label": "requireWalletOwnership()", + "file_type": "code", + "source_file": "main/app/wallet/auth.py", + "source_location": "L36", + "community": 632, + "norm_label": "requirewalletownership()", + "id": "wallet_auth_requirewalletownership" }, { - "label": "Investidor10 Wallet \u2014 Empirical Research for Mansa", - "file_type": "document", - "source_file": "docs/investidor10-wallet-research.md", - "source_location": "L1", - "community": 582, - "norm_label": "investidor10 wallet \u2014 empirical research for mansa", - "id": "docs_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa" + "label": "stocksApiBase()", + "file_type": "code", + "source_file": "main/app/wallet/market_data.py", + "source_location": "L16", + "community": 535, + "norm_label": "stocksapibase()", + "id": "wallet_market_data_stocksapibase" }, { - "label": "1. Feature inventory + nav structure", - "file_type": "document", - "source_file": "docs/investidor10-wallet-research.md", - "source_location": "L10", - "community": 582, - "norm_label": "1. feature inventory + nav structure", - "id": "docs_investidor10_wallet_research_1_feature_inventory_nav_structure" + "label": "stocksApiHeaders()", + "file_type": "code", + "source_file": "main/app/wallet/market_data.py", + "source_location": "L20", + "community": 535, + "norm_label": "stocksapiheaders()", + "id": "wallet_market_data_stocksapiheaders" }, { - "label": "2. User lifecycle end-to-end", - "file_type": "document", - "source_file": "docs/investidor10-wallet-research.md", - "source_location": "L30", - "community": 582, - "norm_label": "2. user lifecycle end-to-end", - "id": "docs_investidor10_wallet_research_2_user_lifecycle_end_to_end" + "label": "getOwnedWallet()", + "file_type": "code", + "source_file": "main/app/wallet/wallets.py", + "source_location": "L11", + "community": 152, + "norm_label": "getownedwallet()", + "id": "wallet_wallets_getownedwallet" }, { - "label": "3. Wallet API reference", - "file_type": "document", - "source_file": "docs/investidor10-wallet-research.md", - "source_location": "L40", - "community": 582, - "norm_label": "3. wallet api reference", - "id": "docs_investidor10_wallet_research_3_wallet_api_reference" + "label": "fetchXangoScores()", + "file_type": "code", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L36", + "community": 68, + "norm_label": "fetchxangoscores()", + "id": "wallet_wallet_service_fetchxangoscores" }, { - "label": "4. Data model inference (from payloads, no DB access)", - "file_type": "document", - "source_file": "docs/investidor10-wallet-research.md", - "source_location": "L65", - "community": 582, - "norm_label": "4. data model inference (from payloads, no db access)", - "id": "docs_investidor10_wallet_research_4_data_model_inference_from_payloads_no_db_access" + "label": "scoreBuyFlag()", + "file_type": "code", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L48", + "community": 68, + "norm_label": "scorebuyflag()", + "id": "wallet_wallet_service_scorebuyflag" }, { - "label": "5. Product logic", - "file_type": "document", - "source_file": "docs/investidor10-wallet-research.md", - "source_location": "L74", - "community": 582, - "norm_label": "5. product logic", - "id": "docs_investidor10_wallet_research_5_product_logic" + "label": "createWallet()", + "file_type": "code", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L98", + "community": 68, + "norm_label": "createwallet()", + "id": "wallet_wallet_service_createwallet" }, { - "label": "5b. Gaps / unverified (do not treat as fact)", - "file_type": "document", - "source_file": "docs/investidor10-wallet-research.md", - "source_location": "L82", - "community": 582, - "norm_label": "5b. gaps / unverified (do not treat as fact)", - "id": "docs_investidor10_wallet_research_5b_gaps_unverified_do_not_treat_as_fact" + "label": "listWallets()", + "file_type": "code", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L106", + "community": 68, + "norm_label": "listwallets()", + "id": "wallet_wallet_service_listwallets" }, { - "label": "6. Concrete Mansa proposal (build first \u2192 later; minimal sketches)", - "file_type": "document", - "source_file": "docs/investidor10-wallet-research.md", - "source_location": "L86", - "community": 582, - "norm_label": "6. concrete mansa proposal (build first \u2192 later; minimal sketches)", - "id": "docs_investidor10_wallet_research_6_concrete_mansa_proposal_build_first_later_minimal_sketches" + "label": "EntryCreate", + "file_type": "code", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L110", + "community": 564, + "norm_label": "entrycreate", + "id": "wallet_wallet_service_entrycreate" }, { - "label": "investidor10-wallet-spec.md", - "file_type": "document", - "source_file": "docs/investidor10-wallet-spec.md", - "source_location": "L1", - "community": 583, - "norm_label": "investidor10-wallet-spec.md", - "id": "docs_investidor10_wallet_spec_md" + "label": "EntryUpdate", + "file_type": "code", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L121", + "community": 564, + "norm_label": "entryupdate", + "id": "wallet_wallet_service_entryupdate" }, { - "label": "Mansa Wallet \u2014 Spec-Driven Implementation Spec", - "file_type": "document", - "source_file": "docs/investidor10-wallet-spec.md", - "source_location": "L1", - "community": 583, - "norm_label": "mansa wallet \u2014 spec-driven implementation spec", - "id": "docs_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec" + "label": "getOwnedWallet()", + "file_type": "code", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L128", + "community": 68, + "norm_label": "getownedwallet()", + "id": "wallet_wallet_service_getownedwallet" }, { - "label": "1. Requirements", - "file_type": "document", - "source_file": "docs/investidor10-wallet-spec.md", - "source_location": "L12", - "community": 583, - "norm_label": "1. requirements", - "id": "docs_investidor10_wallet_spec_1_requirements" + "label": "applyEntries()", + "file_type": "code", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L138", + "community": 68, + "norm_label": "applyentries()", + "id": "wallet_wallet_service_applyentries" }, { - "label": "1.1 Functional (per surface; tags: EXISTS = build on it, PARTIAL = half reusable, MISSING = greenfield)", - "file_type": "document", - "source_file": "docs/investidor10-wallet-spec.md", - "source_location": "L14", - "community": 583, - "norm_label": "1.1 functional (per surface; tags: exists = build on it, partial = half reusable, missing = greenfield)", - "id": "docs_investidor10_wallet_spec_1_1_functional_per_surface_tags_exists_build_on_it_partial_half_reusable_missing_greenfield" + "label": "recalcHolding()", + "file_type": "code", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L154", + "community": 68, + "norm_label": "recalcholding()", + "id": "wallet_wallet_service_recalcholding" }, { - "label": "1.2 Non-functional", - "file_type": "document", - "source_file": "docs/investidor10-wallet-spec.md", - "source_location": "L28", - "community": 583, - "norm_label": "1.2 non-functional", - "id": "docs_investidor10_wallet_spec_1_2_non_functional" + "label": "addEntry()", + "file_type": "code", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L178", + "community": 68, + "norm_label": "addentry()", + "id": "wallet_wallet_service_addentry" }, { - "label": "2. Domain model", - "file_type": "document", - "source_file": "docs/investidor10-wallet-spec.md", - "source_location": "L38", - "community": 583, - "norm_label": "2. domain model", - "id": "docs_investidor10_wallet_spec_2_domain_model" + "label": "listEntries()", + "file_type": "code", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L204", + "community": 68, + "norm_label": "listentries()", + "id": "wallet_wallet_service_listentries" }, { - "label": "3. API contracts (all under `/api/wallet`; chain: `main/controller/wallet_controller.py` \u2192 `main/service/wallet_service.py::` \u2192 `main/models/wallet.py::`; auth `Depends(UserManager.getCurrentUser)` + `Depends(getSession)` throughout)", - "file_type": "document", - "source_file": "docs/investidor10-wallet-spec.md", - "source_location": "L49", - "community": 583, - "norm_label": "3. api contracts (all under `/api/wallet`; chain: `main/controller/wallet_controller.py` \u2192 `main/service/wallet_service.py::` \u2192 `main/models/wallet.py::`; auth `depends(usermanager.getcurrentuser)` + `depends(getsession)` throughout)", - "id": "docs_investidor10_wallet_spec_3_api_contracts_all_under_api_wallet_chain_main_controller_wallet_controller_py_main_service_wallet_service_py_fn_main_models_wallet_py_model_auth_depends_usermanager_getcurrentuser_depends_getsession_throughout" + "label": "updateEntry()", + "file_type": "code", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L216", + "community": 68, + "norm_label": "updateentry()", + "id": "wallet_wallet_service_updateentry" }, { - "label": "4. Phased build plan (writing-plans: each phase independently reviewable; reviewer PASS per phase)", - "file_type": "document", - "source_file": "docs/investidor10-wallet-spec.md", - "source_location": "L66", - "community": 583, - "norm_label": "4. phased build plan (writing-plans: each phase independently reviewable; reviewer pass per phase)", - "id": "docs_investidor10_wallet_spec_4_phased_build_plan_writing_plans_each_phase_independently_reviewable_reviewer_pass_per_phase" + "label": "deleteEntry()", + "file_type": "code", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L238", + "community": 68, + "norm_label": "deleteentry()", + "id": "wallet_wallet_service_deleteentry" }, { - "label": "5. Risks / assumptions (honest flags carried over \u2014 do not treat as fact)", - "file_type": "document", - "source_file": "docs/investidor10-wallet-spec.md", - "source_location": "L72", - "community": 583, - "norm_label": "5. risks / assumptions (honest flags carried over \u2014 do not treat as fact)", - "id": "docs_investidor10_wallet_spec_5_risks_assumptions_honest_flags_carried_over_do_not_treat_as_fact" + "label": "stocksApiBase()", + "file_type": "code", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L259", + "community": 68, + "norm_label": "stocksapibase()", + "id": "wallet_wallet_service_stocksapibase" }, { - "label": "6. Readiness assessment (s3, verified 2026-09-29) \u2014 prerequisites before P1", - "file_type": "document", - "source_file": "docs/investidor10-wallet-spec.md", - "source_location": "L81", - "community": 583, - "norm_label": "6. readiness assessment (s3, verified 2026-09-29) \u2014 prerequisites before p1", - "id": "docs_investidor10_wallet_spec_6_readiness_assessment_s3_verified_2026_09_29_prerequisites_before_p1" + "label": "stocksApiHeaders()", + "file_type": "code", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L263", + "community": 68, + "norm_label": "stocksapiheaders()", + "id": "wallet_wallet_service_stocksapiheaders" }, { - "label": "6.1 DB & migrations (`user_db`) \u2014 READY, 2 actions", - "file_type": "document", - "source_file": "docs/investidor10-wallet-spec.md", - "source_location": "L85", - "community": 583, - "norm_label": "6.1 db & migrations (`user_db`) \u2014 ready, 2 actions", - "id": "docs_investidor10_wallet_spec_6_1_db_migrations_user_db_ready_2_actions" + "label": "fetchLivePrices()", + "file_type": "code", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L268", + "community": 68, + "norm_label": "fetchliveprices()", + "id": "wallet_wallet_service_fetchliveprices" }, { - "label": "6.2 Stocks/price access \u2014 READY for full-series; ONE new helper needed", - "file_type": "document", - "source_file": "docs/investidor10-wallet-spec.md", - "source_location": "L92", - "community": 583, - "norm_label": "6.2 stocks/price access \u2014 ready for full-series; one new helper needed", - "id": "docs_investidor10_wallet_spec_6_2_stocks_price_access_ready_for_full_series_one_new_helper_needed" + "label": "fetchCachedClose()", + "file_type": "code", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L293", + "community": 68, + "norm_label": "fetchcachedclose()", + "id": "wallet_wallet_service_fetchcachedclose" }, { - "label": "6.3 Wiring / auth / tests \u2014 READY", - "file_type": "document", - "source_file": "docs/investidor10-wallet-spec.md", - "source_location": "L98", - "community": 583, - "norm_label": "6.3 wiring / auth / tests \u2014 ready", - "id": "docs_investidor10_wallet_spec_6_3_wiring_auth_tests_ready" + "label": "getPositions()", + "file_type": "code", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L313", + "community": 68, + "norm_label": "getpositions()", + "id": "wallet_wallet_service_getpositions" }, { - "label": "6.4 Scraper pipeline (P2 dividends / has_b3) \u2014 READY (public sources only)", - "file_type": "document", - "source_file": "docs/investidor10-wallet-spec.md", - "source_location": "L104", - "community": 583, - "norm_label": "6.4 scraper pipeline (p2 dividends / has_b3) \u2014 ready (public sources only)", - "id": "docs_investidor10_wallet_spec_6_4_scraper_pipeline_p2_dividends_has_b3_ready_public_sources_only" + "label": "TargetUpsert", + "file_type": "code", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L377", + "community": 564, + "norm_label": "targetupsert", + "id": "wallet_wallet_service_targetupsert" }, { - "label": "6.5 Ordered actions before P1 code", - "file_type": "document", - "source_file": "docs/investidor10-wallet-spec.md", - "source_location": "L110", - "community": 583, - "norm_label": "6.5 ordered actions before p1 code", - "id": "docs_investidor10_wallet_spec_6_5_ordered_actions_before_p1_code" + "label": "RatingUpsert", + "file_type": "code", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L384", + "community": 564, + "norm_label": "ratingupsert", + "id": "wallet_wallet_service_ratingupsert" }, { - "label": "nginx-scaling-plan.md", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L1", - "community": 591, - "norm_label": "nginx-scaling-plan.md", - "id": "docs_nginx_scaling_plan_md" + "label": "getSummary()", + "file_type": "code", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L390", + "community": 68, + "norm_label": "getsummary()", + "id": "wallet_wallet_service_getsummary" }, { - "label": "nginx Scaling Plan \u2014 reverse proxy + response cache for `/stocks`, and the multi-server evolution", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L1", - "community": 591, - "norm_label": "nginx scaling plan \u2014 reverse proxy + response cache for `/stocks`, and the multi-server evolution", - "id": "docs_nginx_scaling_plan_nginx_scaling_plan_reverse_proxy_response_cache_for_stocks_and_the_multi_server_evolution" + "label": "getAllocation()", + "file_type": "code", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L441", + "community": 68, + "norm_label": "getallocation()", + "id": "wallet_wallet_service_getallocation" }, { - "label": "0. Purpose and constraints", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L11", - "community": 591, - "norm_label": "0. purpose and constraints", - "id": "docs_nginx_scaling_plan_0_purpose_and_constraints" + "label": "upsertTarget()", + "file_type": "code", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L467", + "community": 68, + "norm_label": "upserttarget()", + "id": "wallet_wallet_service_upserttarget" }, { - "label": "Part 1 \u2014 Implementation plan", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L31", - "community": 475, - "norm_label": "part 1 \u2014 implementation plan", - "id": "docs_nginx_scaling_plan_part_1_implementation_plan" + "label": "set_rating()", + "file_type": "code", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L493", + "community": 68, + "norm_label": "set_rating()", + "id": "wallet_wallet_service_set_rating" }, { - "label": "1.1 Architecture decision", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L33", - "community": 475, - "norm_label": "1.1 architecture decision", - "id": "docs_nginx_scaling_plan_1_1_architecture_decision" + "label": "positionAtDate()", + "file_type": "code", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L504", + "community": 68, + "norm_label": "positionatdate()", + "id": "wallet_wallet_service_positionatdate" }, { - "label": "1.2 File layout", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L46", - "community": 475, - "norm_label": "1.2 file layout", - "id": "docs_nginx_scaling_plan_1_2_file_layout" + "label": "fetchMarketDividends()", + "file_type": "code", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L511", + "community": 68, + "norm_label": "fetchmarketdividends()", + "id": "wallet_wallet_service_fetchmarketdividends" }, { - "label": "code:block1 (nginx/)", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L49", - "community": 475, - "norm_label": "code:block1 (nginx/)", - "id": "docs_nginx_scaling_plan_codeblock_1" + "label": "syncEarnings()", + "file_type": "code", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L529", + "community": 68, + "norm_label": "syncearnings()", + "id": "wallet_wallet_service_syncearnings" }, { - "label": "1.3 Phase P0 \u2014 nginx service + config skeleton", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L63", - "community": 593, - "norm_label": "1.3 phase p0 \u2014 nginx service + config skeleton", - "id": "docs_nginx_scaling_plan_1_3_phase_p0_nginx_service_config_skeleton" + "label": "listEarnings()", + "file_type": "code", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L596", + "community": 68, + "norm_label": "listearnings()", + "id": "wallet_wallet_service_listearnings" }, { - "label": "code:yaml (nginx:)", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L65", - "community": 593, - "norm_label": "code:yaml (nginx:)", - "id": "docs_nginx_scaling_plan_codeblock_2" + "label": "fetchPadraoCloses()", + "file_type": "code", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L607", + "community": 68, + "norm_label": "fetchpadraocloses()", + "id": "wallet_wallet_service_fetchpadraocloses" }, { - "label": "code:nginx (proxy_cache_path /var/cache/nginx/stocks)", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L85", - "community": 593, - "norm_label": "code:nginx (proxy_cache_path /var/cache/nginx/stocks)", - "id": "docs_nginx_scaling_plan_codeblock_3" + "label": "cachedPerformance()", + "file_type": "code", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L630", + "community": 68, + "norm_label": "cachedperformance()", + "id": "wallet_wallet_service_cachedperformance" }, { - "label": "code:nginx (upstream stocks_api {)", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L106", - "community": 593, - "norm_label": "code:nginx (upstream stocks_api {)", - "id": "docs_nginx_scaling_plan_codeblock_4" + "label": "getPerformance()", + "file_type": "code", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L733", + "community": 68, + "norm_label": "getperformance()", + "id": "wallet_wallet_service_getperformance" }, { - "label": "1.4 Phase P1 \u2014 cache locations, TTL table, directives", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L119", - "community": 594, - "norm_label": "1.4 phase p1 \u2014 cache locations, ttl table, directives", - "id": "docs_nginx_scaling_plan_1_4_phase_p1_cache_locations_ttl_table_directives" + "label": "XANGO quality score per ticker (0-100 scale). Stub: no HTTP score endpoin", + "file_type": "rationale", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L37", + "community": 68, + "norm_label": "xango quality score per ticker (0-100 scale). stub: no http score endpoin", + "id": "wallet_wallet_service_rationale_37" }, { - "label": "code:nginx (proxy_pass http://stocks_api;)", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L122", - "community": 594, - "norm_label": "code:nginx (proxy_pass http://stocks_api;)", - "id": "docs_nginx_scaling_plan_codeblock_5" + "label": "XANGO-informed buy flag (pure function, deterministic, no learned params).", + "file_type": "rationale", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L55", + "community": 68, + "norm_label": "xango-informed buy flag (pure function, deterministic, no learned params).", + "id": "wallet_wallet_service_rationale_55" }, { - "label": "code:nginx (server {)", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L153", - "community": 594, - "norm_label": "code:nginx (server {)", - "id": "docs_nginx_scaling_plan_codeblock_6" + "label": "Search user's saved memories, preferences, and past analysis context. Use", + "file_type": "rationale", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L21", + "community": 67, + "norm_label": "search user's saved memories, preferences, and past analysis context. use", + "id": "orunmila_tools_rationale_21" }, { - "label": "code:bash (K=sk_test_...; U='http://localhost/stocks/historical?search=)", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L209", - "community": 594, - "norm_label": "code:bash (k=sk_test_...; u='http://localhost/stocks/historical?search=)", - "id": "docs_nginx_scaling_plan_codeblock_7" + "label": "Store a memory about the user's preferences, analysis results, or feedback.", + "file_type": "rationale", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L52", + "community": 149, + "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", + "id": "orunmila_tools_rationale_52" }, { - "label": "1.5 Phase P2 \u2014 port scheme, worker containers, keepalive", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L218", - "community": 475, - "norm_label": "1.5 phase p2 \u2014 port scheme, worker containers, keepalive", - "id": "docs_nginx_scaling_plan_1_5_phase_p2_port_scheme_worker_containers_keepalive" + "label": "Execute Python code in an isolated sandbox. Use for quantitative analysis,", + "file_type": "rationale", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L94", + "community": 605, + "norm_label": "execute python code in an isolated sandbox. use for quantitative analysis,", + "id": "orunmila_tools_rationale_94" }, { - "label": "code:yaml (stocksapi:)", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L224", - "community": 475, - "norm_label": "code:yaml (stocksapi:)", - "id": "docs_nginx_scaling_plan_codeblock_8" + "label": "Read a file from the workspace. Args: path: Path to the file (e.", + "file_type": "rationale", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L115", + "community": 67, + "norm_label": "read a file from the workspace. args: path: path to the file (e.", + "id": "orunmila_tools_rationale_115" }, { - "label": "1.6 Phase P3 \u2014 remote VPS upstreams + health strategy", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L244", - "community": 475, - "norm_label": "1.6 phase p3 \u2014 remote vps upstreams + health strategy", - "id": "docs_nginx_scaling_plan_1_6_phase_p3_remote_vps_upstreams_health_strategy" + "label": "Write a file to the workspace. Use this to save data files (CSV, JSON, scri", + "file_type": "rationale", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L129", + "community": 67, + "norm_label": "write a file to the workspace. use this to save data files (csv, json, scri", + "id": "orunmila_tools_rationale_129" }, { - "label": "code:nginx (upstream stocks_api {)", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L246", - "community": 475, - "norm_label": "code:nginx (upstream stocks_api {)", - "id": "docs_nginx_scaling_plan_codeblock_9" + "label": "List files in the workspace directory. Args: path: Directory pat", + "file_type": "rationale", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L145", + "community": 616, + "norm_label": "list files in the workspace directory. args: path: directory pat", + "id": "orunmila_tools_rationale_145" }, { - "label": "code:nginx (proxy_next_upstream error timeout http_502 http_503 http_504)", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L258", - "community": 475, - "norm_label": "code:nginx (proxy_next_upstream error timeout http_502 http_503 http_504)", - "id": "docs_nginx_scaling_plan_codeblock_10" + "label": "Get a download link for a workspace file to share with the user. Use this", + "file_type": "rationale", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L158", + "community": 234, + "norm_label": "get a download link for a workspace file to share with the user. use this", + "id": "orunmila_tools_rationale_158" }, { - "label": "1.7 Phase P4 \u2014 handoff design (no code in this plan)", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L276", - "community": 475, - "norm_label": "1.7 phase p4 \u2014 handoff design (no code in this plan)", - "id": "docs_nginx_scaling_plan_1_7_phase_p4_handoff_design_no_code_in_this_plan" + "label": "create_wallet()", + "file_type": "code", + "source_file": "main/service/wallet_service.py", + "source_location": "L32", + "community": 54, + "norm_label": "create_wallet()", + "id": "service_wallet_service_create_wallet" }, { - "label": "1.8 Quota / rate-limit semantics after caching", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L287", - "community": 475, - "norm_label": "1.8 quota / rate-limit semantics after caching", - "id": "docs_nginx_scaling_plan_1_8_quota_rate_limit_semantics_after_caching" + "label": "list_wallets()", + "file_type": "code", + "source_file": "main/service/wallet_service.py", + "source_location": "L40", + "community": 54, + "norm_label": "list_wallets()", + "id": "service_wallet_service_list_wallets" }, { - "label": "1.9 Anti-scraping note (TODO 17)", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L299", - "community": 475, - "norm_label": "1.9 anti-scraping note (todo 17)", - "id": "docs_nginx_scaling_plan_1_9_anti_scraping_note_todo_17" + "label": "EntryCreate", + "file_type": "code", + "source_file": "main/service/wallet_service.py", + "source_location": "L44", + "community": 564, + "norm_label": "entrycreate", + "id": "service_wallet_service_entrycreate" }, { - "label": "1.10 Edge cases / risks (implementation)", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L303", - "community": 475, - "norm_label": "1.10 edge cases / risks (implementation)", - "id": "docs_nginx_scaling_plan_1_10_edge_cases_risks_implementation" + "label": "EntryUpdate", + "file_type": "code", + "source_file": "main/service/wallet_service.py", + "source_location": "L55", + "community": 564, + "norm_label": "entryupdate", + "id": "service_wallet_service_entryupdate" }, { - "label": "Part 2 \u2014 Benchmark plan", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L314", - "community": 512, - "norm_label": "part 2 \u2014 benchmark plan", - "id": "docs_nginx_scaling_plan_part_2_benchmark_plan" + "label": "_get_owned_wallet()", + "file_type": "code", + "source_file": "main/service/wallet_service.py", + "source_location": "L62", + "community": 54, + "norm_label": "_get_owned_wallet()", + "id": "service_wallet_service_get_owned_wallet" }, { - "label": "2.0 Grounding: what the code actually does", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L316", - "community": 512, - "norm_label": "2.0 grounding: what the code actually does", - "id": "docs_nginx_scaling_plan_2_0_grounding_what_the_code_actually_does" + "label": "_apply_entries()", + "file_type": "code", + "source_file": "main/service/wallet_service.py", + "source_location": "L72", + "community": 54, + "norm_label": "_apply_entries()", + "id": "service_wallet_service_apply_entries" }, { - "label": "2.1 Hypotheses", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L348", - "community": 512, - "norm_label": "2.1 hypotheses", - "id": "docs_nginx_scaling_plan_2_1_hypotheses" + "label": "recalc_holding()", + "file_type": "code", + "source_file": "main/service/wallet_service.py", + "source_location": "L88", + "community": 54, + "norm_label": "recalc_holding()", + "id": "service_wallet_service_recalc_holding" }, { - "label": "2.2 Tooling", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L357", - "community": 570, - "norm_label": "2.2 tooling", - "id": "docs_nginx_scaling_plan_2_2_tooling" + "label": "add_entry()", + "file_type": "code", + "source_file": "main/service/wallet_service.py", + "source_location": "L112", + "community": 54, + "norm_label": "add_entry()", + "id": "service_wallet_service_add_entry" }, { - "label": "code:bash (# Windows/Docker Desktop: do NOT use --network host (the Lin)", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L360", - "community": 570, - "norm_label": "code:bash (# windows/docker desktop: do not use --network host (the lin)", - "id": "docs_nginx_scaling_plan_codeblock_11" + "label": "list_entries()", + "file_type": "code", + "source_file": "main/service/wallet_service.py", + "source_location": "L138", + "community": 54, + "norm_label": "list_entries()", + "id": "service_wallet_service_list_entries" }, { - "label": "code:bash (curl -s -o /dev/null -w '%header{x-cache-status}\\n' -H \"X-AP)", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L373", - "community": 570, - "norm_label": "code:bash (curl -s -o /dev/null -w '%header{x-cache-status}\\n' -h \"x-ap)", - "id": "docs_nginx_scaling_plan_codeblock_12" + "label": "update_entry()", + "file_type": "code", + "source_file": "main/service/wallet_service.py", + "source_location": "L150", + "community": 54, + "norm_label": "update_entry()", + "id": "service_wallet_service_update_entry" }, { - "label": "code:bash (docker stats --no-stream --format \"{{.Name}},{{.CPUPerc}},{{)", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L381", - "community": 570, - "norm_label": "code:bash (docker stats --no-stream --format \"{{.name}},{{.cpuperc}},{{)", - "id": "docs_nginx_scaling_plan_codeblock_13" + "label": "delete_entry()", + "file_type": "code", + "source_file": "main/service/wallet_service.py", + "source_location": "L172", + "community": 54, + "norm_label": "delete_entry()", + "id": "service_wallet_service_delete_entry" }, { - "label": "code:bash (docker exec api sh -c \"pidstat -w -p 1 1 30\" # if sysst)", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L387", - "community": 570, - "norm_label": "code:bash (docker exec api sh -c \"pidstat -w -p 1 1 30\" # if sysst)", - "id": "docs_nginx_scaling_plan_codeblock_14" + "label": "stocksApiBase()", + "file_type": "code", + "source_file": "main/service/wallet_service.py", + "source_location": "L193", + "community": 54, + "norm_label": "stocksapibase()", + "id": "service_wallet_service_stocksapibase" }, { - "label": "code:block15 (tests/perf/nginx/)", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L398", - "community": 570, - "norm_label": "code:block15 (tests/perf/nginx/)", - "id": "docs_nginx_scaling_plan_codeblock_15" + "label": "stocksApiHeaders()", + "file_type": "code", + "source_file": "main/service/wallet_service.py", + "source_location": "L197", + "community": 54, + "norm_label": "stocksapiheaders()", + "id": "service_wallet_service_stocksapiheaders" }, { - "label": "2.3 Scenarios", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L407", - "community": 512, - "norm_label": "2.3 scenarios", - "id": "docs_nginx_scaling_plan_2_3_scenarios" + "label": "fetchLivePrices()", + "file_type": "code", + "source_file": "main/service/wallet_service.py", + "source_location": "L202", + "community": 54, + "norm_label": "fetchliveprices()", + "id": "service_wallet_service_fetchliveprices" }, { - "label": "2.4 Protocol", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L419", - "community": 512, - "norm_label": "2.4 protocol", - "id": "docs_nginx_scaling_plan_2_4_protocol" + "label": "fetchCachedClose()", + "file_type": "code", + "source_file": "main/service/wallet_service.py", + "source_location": "L227", + "community": 54, + "norm_label": "fetchcachedclose()", + "id": "service_wallet_service_fetchcachedclose" }, { - "label": "2.5 Metrics", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L430", - "community": 512, - "norm_label": "2.5 metrics", - "id": "docs_nginx_scaling_plan_2_5_metrics" + "label": "get_positions()", + "file_type": "code", + "source_file": "main/service/wallet_service.py", + "source_location": "L247", + "community": 54, + "norm_label": "get_positions()", + "id": "service_wallet_service_get_positions" }, { - "label": "2.6 Acceptance thresholds \u2014 **ALL PROPOSED, freeze after first real run**", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L434", - "community": 512, - "norm_label": "2.6 acceptance thresholds \u2014 **all proposed, freeze after first real run**", - "id": "docs_nginx_scaling_plan_2_6_acceptance_thresholds_all_proposed_freeze_after_first_real_run" + "label": "TargetUpsert", + "file_type": "code", + "source_file": "main/service/wallet_service.py", + "source_location": "L306", + "community": 564, + "norm_label": "targetupsert", + "id": "service_wallet_service_targetupsert" }, { - "label": "2.7 Results doc layout", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L451", - "community": 512, - "norm_label": "2.7 results doc layout", - "id": "docs_nginx_scaling_plan_2_7_results_doc_layout" + "label": "RatingUpsert", + "file_type": "code", + "source_file": "main/service/wallet_service.py", + "source_location": "L313", + "community": 564, + "norm_label": "ratingupsert", + "id": "service_wallet_service_ratingupsert" }, { - "label": "code:block16 (docs/benchmarks/nginx/)", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L453", - "community": 512, - "norm_label": "code:block16 (docs/benchmarks/nginx/)", - "id": "docs_nginx_scaling_plan_codeblock_16" + "label": "get_summary()", + "file_type": "code", + "source_file": "main/service/wallet_service.py", + "source_location": "L319", + "community": 54, + "norm_label": "get_summary()", + "id": "service_wallet_service_get_summary" }, { - "label": "2.8 Feeding `/status` (TODO 14)", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L460", - "community": 512, - "norm_label": "2.8 feeding `/status` (todo 14)", - "id": "docs_nginx_scaling_plan_2_8_feeding_status_todo_14" + "label": "get_allocation()", + "file_type": "code", + "source_file": "main/service/wallet_service.py", + "source_location": "L370", + "community": 54, + "norm_label": "get_allocation()", + "id": "service_wallet_service_get_allocation" }, { - "label": "2.9 Benchmark risks", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L466", - "community": 512, - "norm_label": "2.9 benchmark risks", - "id": "docs_nginx_scaling_plan_2_9_benchmark_risks" + "label": "upsert_target()", + "file_type": "code", + "source_file": "main/service/wallet_service.py", + "source_location": "L396", + "community": 54, + "norm_label": "upsert_target()", + "id": "service_wallet_service_upsert_target" }, { - "label": "Part 3 \u2014 Future scaling evolution + risks", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L477", - "community": 183, - "norm_label": "part 3 \u2014 future scaling evolution + risks", - "id": "docs_nginx_scaling_plan_part_3_future_scaling_evolution_risks" + "label": "set_rating()", + "file_type": "code", + "source_file": "main/service/wallet_service.py", + "source_location": "L422", + "community": 54, + "norm_label": "set_rating()", + "id": "service_wallet_service_set_rating" }, { - "label": "3.0 Verified ground truth", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L479", - "community": 183, - "norm_label": "3.0 verified ground truth", - "id": "docs_nginx_scaling_plan_3_0_verified_ground_truth" + "label": "position_at_date()", + "file_type": "code", + "source_file": "main/service/wallet_service.py", + "source_location": "L433", + "community": 54, + "norm_label": "position_at_date()", + "id": "service_wallet_service_position_at_date" }, { - "label": "3.1 Target topology", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L496", - "community": 183, - "norm_label": "3.1 target topology", - "id": "docs_nginx_scaling_plan_3_1_target_topology" + "label": "fetchMarketDividends()", + "file_type": "code", + "source_file": "main/service/wallet_service.py", + "source_location": "L440", + "community": 54, + "norm_label": "fetchmarketdividends()", + "id": "service_wallet_service_fetchmarketdividends" }, { - "label": "code:block17 (NODE A NODE B)", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L501", - "community": 183, - "norm_label": "code:block17 (node a node b)", - "id": "docs_nginx_scaling_plan_codeblock_17" + "label": "sync_earnings()", + "file_type": "code", + "source_file": "main/service/wallet_service.py", + "source_location": "L458", + "community": 54, + "norm_label": "sync_earnings()", + "id": "service_wallet_service_sync_earnings" }, { - "label": "3.2 Worker-container extraction", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L513", - "community": 183, - "norm_label": "3.2 worker-container extraction", - "id": "docs_nginx_scaling_plan_3_2_worker_container_extraction" + "label": "list_earnings()", + "file_type": "code", + "source_file": "main/service/wallet_service.py", + "source_location": "L525", + "community": 54, + "norm_label": "list_earnings()", + "id": "service_wallet_service_list_earnings" }, { - "label": "3.3 nginx upstream evolution \u2014 validated against the user's plan", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L530", - "community": 183, - "norm_label": "3.3 nginx upstream evolution \u2014 validated against the user's plan", - "id": "docs_nginx_scaling_plan_3_3_nginx_upstream_evolution_validated_against_the_user_s_plan" + "label": "fetchPadraoCloses()", + "file_type": "code", + "source_file": "main/service/wallet_service.py", + "source_location": "L536", + "community": 54, + "norm_label": "fetchpadraocloses()", + "id": "service_wallet_service_fetchpadraocloses" }, { - "label": "code:nginx (upstream stocks_api { server 10.0.0.12:3200 max_fails=3 fail)", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L534", - "community": 183, - "norm_label": "code:nginx (upstream stocks_api { server 10.0.0.12:3200 max_fails=3 fail)", - "id": "docs_nginx_scaling_plan_codeblock_18" + "label": "_cachedPerformance()", + "file_type": "code", + "source_file": "main/service/wallet_service.py", + "source_location": "L559", + "community": 54, + "norm_label": "_cachedperformance()", + "id": "service_wallet_service_cachedperformance" }, { - "label": "3.4 TODO 13 migration \u2014 drop `{service}_HOST`/`{service}_PORT`", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L551", - "community": 183, - "norm_label": "3.4 todo 13 migration \u2014 drop `{service}_host`/`{service}_port`", - "id": "docs_nginx_scaling_plan_3_4_todo_13_migration_drop_service_host_service_port" + "label": "get_performance()", + "file_type": "code", + "source_file": "main/service/wallet_service.py", + "source_location": "L662", + "community": 54, + "norm_label": "get_performance()", + "id": "service_wallet_service_get_performance" }, { - "label": "3.5 Redis \u2014 exactly two jobs", + "label": "3. API contracts (all under `/wallet`; chain: `main/controller/wallet_controller.py` \u2192 `main/service/wallet_service.py::` \u2192 `main/models/wallet.py::`; auth `Depends(UserManager.getCurrentUser)` + `Depends(getSession)` throughout)", "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L558", - "community": 183, - "norm_label": "3.5 redis \u2014 exactly two jobs", - "id": "docs_nginx_scaling_plan_3_5_redis_exactly_two_jobs" + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L49", + "community": 130, + "norm_label": "3. api contracts (all under `/wallet`; chain: `main/controller/wallet_controller.py` \u2192 `main/service/wallet_service.py::` \u2192 `main/models/wallet.py::`; auth `depends(usermanager.getcurrentuser)` + `depends(getsession)` throughout)", + "id": "superpowers_investidor10_wallet_spec_3_api_contracts_all_under_wallet_chain_main_controller_wallet_controller_py_main_service_wallet_service_py_fn_main_models_wallet_py_model_auth_depends_usermanager_getcurrentuser_depends_getsession_throughout" }, { - "label": "3.6 Cache strategy across boxes", + "label": "6.4 Scraper pipeline (P2 dividends / has_b3) \u2014 CONTESTED (\u00a77.4): data present; source/staleness gaps", "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L574", - "community": 183, - "norm_label": "3.6 cache strategy across boxes", - "id": "docs_nginx_scaling_plan_3_6_cache_strategy_across_boxes" + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L106", + "community": 130, + "norm_label": "6.4 scraper pipeline (p2 dividends / has_b3) \u2014 contested (\u00a77.4): data present; source/staleness gaps", + "id": "superpowers_investidor10_wallet_spec_6_4_scraper_pipeline_p2_dividends_has_b3_contested_7_4_data_present_source_staleness_gaps" }, { - "label": "3.7 Autoscaling story (TODO 11)", + "label": "code:bash (.\\ci.ps1)", "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L580", - "community": 183, - "norm_label": "3.7 autoscaling story (todo 11)", - "id": "docs_nginx_scaling_plan_3_7_autoscaling_story_todo_11" + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L367", + "community": 126, + "norm_label": "code:bash (.\\ci.ps1)", + "id": "plans_2026_09_29_nginx_response_cache_codeblock_19" }, { - "label": "3.8 ForgeVM interplay (TODO 12)", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L585", - "community": 183, - "norm_label": "3.8 forgevm interplay (todo 12)", - "id": "docs_nginx_scaling_plan_3_8_forgevm_interplay_todo_12" + "label": "Drop every cached endpoint body \u2014 called when the feather frame is replaced.", + "file_type": "rationale", + "source_file": "main/app/stocks_api/sync_cache.py", + "source_location": "L38", + "community": 615, + "norm_label": "drop every cached endpoint body \u2014 called when the feather frame is replaced.", + "id": "stocks_api_sync_cache_rationale_38" }, { - "label": "3.9 Risk register", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L589", - "community": 183, - "norm_label": "3.9 risk register", - "id": "docs_nginx_scaling_plan_3_9_risk_register" + "label": "_runtimeConf()", + "file_type": "code", + "source_file": "main/app/stocks_api/build.py", + "source_location": "L50", + "community": 82, + "norm_label": "_runtimeconf()", + "id": "stocks_api_build_runtimeconf" }, { - "label": "3.10 Migration sequence + verification", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L609", - "community": 183, - "norm_label": "3.10 migration sequence + verification", - "id": "docs_nginx_scaling_plan_3_10_migration_sequence_verification" + "label": "Feather build / read helpers for the stocks cache. Owns the on-disk layout (CAC", + "file_type": "rationale", + "source_file": "main/app/stocks_api/build.py", + "source_location": "L1", + "community": 82, + "norm_label": "feather build / read helpers for the stocks cache. owns the on-disk layout (cac", + "id": "stocks_api_build_rationale_1" }, { - "label": "Open decisions (blocking or product-owned)", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L628", - "community": 591, - "norm_label": "open decisions (blocking or product-owned)", - "id": "docs_nginx_scaling_plan_open_decisions_blocking_or_product_owned" + "label": "Return (engine, featherPath, nestedPath), preferring live values on the cach", + "file_type": "rationale", + "source_file": "main/app/stocks_api/build.py", + "source_location": "L51", + "community": 82, + "norm_label": "return (engine, featherpath, nestedpath), preferring live values on the cach", + "id": "stocks_api_build_rationale_51" }, { - "label": "Next actions (not in scope here)", - "file_type": "document", - "source_file": "docs/nginx-scaling-plan.md", - "source_location": "L636", - "community": 591, - "norm_label": "next actions (not in scope here)", - "id": "docs_nginx_scaling_plan_next_actions_not_in_scope_here" + "label": "Abbreviation map for a frame (dependency-injected; no cache import). Result", + "file_type": "rationale", + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L31", + "community": 251, + "norm_label": "abbreviation map for a frame (dependency-injected; no cache import). result", + "id": "stocks_api_compress_rationale_31" }, { - "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": "Nested-field map for a frame plus its nested sample (same memo policy).", + "file_type": "rationale", + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L51", + "community": 251, + "norm_label": "nested-field map for a frame plus its nested sample (same memo policy).", + "id": "stocks_api_compress_rationale_51" }, { - "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": "Pure DataFrame helpers for the stocks feather cache (no I/O, no imports from sib", + "file_type": "rationale", + "source_file": "main/app/stocks_api/frame.py", + "source_location": "L1", + "community": 82, + "norm_label": "pure dataframe helpers for the stocks feather cache (no i/o, no imports from sib", + "id": "stocks_api_frame_rationale_1" }, { - "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": "Return (engine, featherPath, nestedPath), preferring live values on the cach", + "file_type": "rationale", + "source_file": "main/app/stocks_api/build.py", + "source_location": "L47", + "community": 82, + "norm_label": "return (engine, featherpath, nestedpath), preferring live values on the cach", + "id": "stocks_api_build_rationale_47" }, { - "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": "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": "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": "Get 10-year daily price history (cotation) for Brazilian B3 stocks. Retur", + "file_type": "rationale", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L235", + "community": 169, + "norm_label": "get 10-year daily price history (cotation) for brazilian b3 stocks. retur", + "id": "controller_stocksapi_controller_rationale_235" }, { - "label": "verifyServiceKey()", + "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": "L289", + "community": 81, + "norm_label": "get real-time price quotation for a single brazilian b3 stock. returns th", + "id": "controller_stocksapi_controller_rationale_289" + }, + { + "label": "optimizeDtypes()", "file_type": "code", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L277", - "community": 58, - "norm_label": "verifyservicekey()", - "id": "controller_authentication_controller_verifyservicekey" + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L43", + "community": 82, + "norm_label": "optimizedtypes()", + "id": "stocks_api_cache_optimizedtypes" }, { - "label": "_serviceToken()", + "label": "arrowTypeFor()", "file_type": "code", - "source_file": "main/utils/roles.py", + "source_file": "main/app/stocks_api/cache.py", "source_location": "L63", - "community": 131, - "norm_label": "_servicetoken()", - "id": "utils_roles_servicetoken" + "community": 82, + "norm_label": "arrowtypefor()", + "id": "stocks_api_cache_arrowtypefor" }, { - "label": "_introspectUrl()", + "label": "buildFeatherCache()", "file_type": "code", - "source_file": "main/utils/roles.py", - "source_location": "L69", - "community": 131, - "norm_label": "_introspecturl()", - "id": "utils_roles_introspecturl" + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L80", + "community": 82, + "norm_label": "buildfeathercache()", + "id": "stocks_api_cache_buildfeathercache" }, { - "label": "_extractCredential()", + "label": "tryBuildLock()", "file_type": "code", - "source_file": "main/utils/roles.py", - "source_location": "L75", - "community": 131, - "norm_label": "_extractcredential()", - "id": "utils_roles_extractcredential" + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L171", + "community": 82, + "norm_label": "trybuildlock()", + "id": "stocks_api_cache_trybuildlock" }, { - "label": "introspectUser()", + "label": "sortCacheFrame()", "file_type": "code", - "source_file": "main/utils/roles.py", - "source_location": "L92", - "community": 131, - "norm_label": "introspectuser()", - "id": "utils_roles_introspectuser" + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L188", + "community": 82, + "norm_label": "sortcacheframe()", + "id": "stocks_api_cache_sortcacheframe" }, { - "label": "PrometheusSettings", + "label": "buildTickerIndex()", "file_type": "code", - "source_file": "config.py", - "source_location": "L59", - "community": 586, - "norm_label": "prometheussettings", - "id": "server_config_prometheussettings" + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L198", + "community": 82, + "norm_label": "buildtickerindex()", + "id": "stocks_api_cache_buildtickerindex" }, { - "label": "agent.py", + "label": "readFeatherDataFrame()", "file_type": "code", - "source_file": "main/app/prometheus/agent.py", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L207", + "community": 82, + "norm_label": "readfeatherdataframe()", + "id": "stocks_api_cache_readfeatherdataframe" + }, + { + "label": "Priorities (active order, 2026-09-29)", + "file_type": "document", + "source_file": "TODO.md", "source_location": "L1", - "community": 116, - "norm_label": "agent.py", - "id": "main_app_prometheus_agent_py" + "community": 187, + "norm_label": "priorities (active order, 2026-09-29)", + "id": "server_todo_priorities_active_order_2026_09_29" }, { - "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": "Discover available field names before querying /historical or /fundamental.", + "file_type": "rationale", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L47", + "community": 186, + "norm_label": "discover available field names before querying /historical or /fundamental.", + "id": "controller_stocksapi_controller_rationale_47" }, { - "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": "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": "getClient()", - "file_type": "code", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L45", - "community": 116, - "norm_label": "getclient()", - "id": "prometheus_agent_getclient" + "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": "Prometheus", - "file_type": "code", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L208", - "community": 116, - "norm_label": "prometheus", - "id": "prometheus_agent_prometheus" + "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": ".__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": "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": "buildSystemPrompt()", - "file_type": "code", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L213", - "community": 116, - "norm_label": "buildsystemprompt()", - "id": "prometheus_agent_buildsystemprompt" + "label": "Discover available field names before querying /historical or /fundamental.", + "file_type": "rationale", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L39", + "community": 186, + "norm_label": "discover available field names before querying /historical or /fundamental.", + "id": "controller_stocksapi_controller_rationale_39" }, { - "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": "Get year-based historical financial data for Brazilian B3 stocks. Returns", + "file_type": "rationale", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L95", + "community": 197, + "norm_label": "get year-based historical financial data for brazilian b3 stocks. returns", + "id": "controller_stocksapi_controller_rationale_95" }, { - "label": ".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": "Get point-in-time fundamental/valuation data for Brazilian B3 stocks. Ret", + "file_type": "rationale", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L160", + "community": 157, + "norm_label": "get point-in-time fundamental/valuation data for brazilian b3 stocks. ret", + "id": "controller_stocksapi_controller_rationale_160" }, { - "label": "chat.py", - "file_type": "code", - "source_file": "main/app/prometheus/chat.py", + "label": "Get 10-year daily price history (cotation) for Brazilian B3 stocks. Retur", + "file_type": "rationale", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L228", + "community": 169, + "norm_label": "get 10-year daily price history (cotation) for brazilian b3 stocks. retur", + "id": "controller_stocksapi_controller_rationale_228" + }, + { + "label": "Get real-time price quotation for a single Brazilian B3 stock. Returns th", + "file_type": "rationale", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L282", + "community": 81, + "norm_label": "get real-time price quotation for a single brazilian b3 stock. returns th", + "id": "controller_stocksapi_controller_rationale_282" + }, + { + "label": "Uvicorn Worker Scaling \u2014 Verified State and Evaluated Plan", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", "source_location": "L1", - "community": 125, - "norm_label": "chat.py", - "id": "main_app_prometheus_chat_py" + "community": 495, + "norm_label": "uvicorn worker scaling \u2014 verified state and evaluated plan", + "id": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_scaling_verified_state_and_evaluated_plan" }, { - "label": "PrometheusChatManager", - "file_type": "code", - "source_file": "main/app/prometheus/chat.py", + "label": "1. Verified current state (file:line)", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", "source_location": "L13", - "community": 172, - "norm_label": "prometheuschatmanager", - "id": "prometheus_chat_prometheuschatmanager" + "community": 495, + "norm_label": "1. verified current state (file:line)", + "id": "superpowers_uvicorn_worker_scaling_plan_1_verified_current_state_file_line" }, { - "label": "getUserSessions()", - "file_type": "code", - "source_file": "main/app/prometheus/chat.py", + "label": "1.1 Runtime topology \u2014 one process, many threads", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", "source_location": "L15", - "community": 125, - "norm_label": "getusersessions()", - "id": "prometheus_chat_getusersessions" + "community": 495, + "norm_label": "1.1 runtime topology \u2014 one process, many threads", + "id": "superpowers_uvicorn_worker_scaling_plan_1_1_runtime_topology_one_process_many_threads" }, { - "label": "createSession()", - "file_type": "code", - "source_file": "main/app/prometheus/chat.py", + "label": "1.2 The cache is already the right shape for multi-process", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", "source_location": "L33", - "community": 125, - "norm_label": "createsession()", - "id": "prometheus_chat_createsession" + "community": 495, + "norm_label": "1.2 the cache is already the right shape for multi-process", + "id": "superpowers_uvicorn_worker_scaling_plan_1_2_the_cache_is_already_the_right_shape_for_multi_process" }, { - "label": "updateSessionTitle()", - "file_type": "code", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L41", - "community": 125, - "norm_label": "updatesessiontitle()", - "id": "prometheus_chat_updatesessiontitle" + "label": "1.3 Per-process state that multiplies with N", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L48", + "community": 495, + "norm_label": "1.3 per-process state that multiplies with n", + "id": "superpowers_uvicorn_worker_scaling_plan_1_3_per_process_state_that_multiplies_with_n" }, { - "label": "appendHistory()", - "file_type": "code", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L52", - "community": 125, - "norm_label": "appendhistory()", - "id": "prometheus_chat_appendhistory" + "label": "2. Options evaluated", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L60", + "community": 495, + "norm_label": "2. options evaluated", + "id": "superpowers_uvicorn_worker_scaling_plan_2_options_evaluated" }, { - "label": "getHistory()", - "file_type": "code", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L71", - "community": 125, - "norm_label": "gethistory()", - "id": "prometheus_chat_gethistory" + "label": "3. Exact required changes (before raising N)", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L74", + "community": 495, + "norm_label": "3. exact required changes (before raising n)", + "id": "superpowers_uvicorn_worker_scaling_plan_3_exact_required_changes_before_raising_n" }, { - "label": "deleteSession()", - "file_type": "code", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L92", - "community": 125, - "norm_label": "deletesession()", - "id": "prometheus_chat_deletesession" + "label": "4. Risks and open items", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L87", + "community": 495, + "norm_label": "4. risks and open items", + "id": "superpowers_uvicorn_worker_scaling_plan_4_risks_and_open_items" }, { - "label": "verifySessionOwnership()", - "file_type": "code", - "source_file": "main/app/prometheus/chat.py", + "label": "5. Baseline (measured)", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L100", + "community": 495, + "norm_label": "5. baseline (measured)", + "id": "superpowers_uvicorn_worker_scaling_plan_5_baseline_measured" + }, + { + "label": "6. Evaluation of the user's `docs/nginx-scaling-plan.md`", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", "source_location": "L106", - "community": 125, - "norm_label": "verifysessionownership()", - "id": "prometheus_chat_verifysessionownership" + "community": 495, + "norm_label": "6. evaluation of the user's `docs/nginx-scaling-plan.md`", + "id": "superpowers_uvicorn_worker_scaling_plan_6_evaluation_of_the_user_s_docs_nginx_scaling_plan_md" }, { - "label": "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": "7. What is out of scope (separate plan)", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L121", + "community": 495, + "norm_label": "7. what is out of scope (separate plan)", + "id": "superpowers_uvicorn_worker_scaling_plan_7_what_is_out_of_scope_separate_plan" }, { - "label": "getTokenizer()", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L35", - "community": 53, - "norm_label": "gettokenizer()", - "id": "prometheus_compact_gettokenizer" + "label": "3. API contracts (all under `/api/wallet`; chain: `main/controller/wallet_controller.py` \u2192 `main/service/wallet_service.py::` \u2192 `main/models/wallet.py::`; auth `Depends(UserManager.getCurrentUser)` + `Depends(getSession)` throughout)", + "file_type": "document", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L49", + "community": 130, + "norm_label": "3. api contracts (all under `/api/wallet`; chain: `main/controller/wallet_controller.py` \u2192 `main/service/wallet_service.py::` \u2192 `main/models/wallet.py::`; auth `depends(usermanager.getcurrentuser)` + `depends(getsession)` throughout)", + "id": "superpowers_investidor10_wallet_spec_3_api_contracts_all_under_api_wallet_chain_main_controller_wallet_controller_py_main_service_wallet_service_py_fn_main_models_wallet_py_model_auth_depends_usermanager_getcurrentuser_depends_getsession_throughout" }, { - "label": "countTokens()", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L47", - "community": 53, - "norm_label": "counttokens()", - "id": "prometheus_compact_counttokens" + "label": "Uvicorn Worker Scaling \u2014 Verified State + Evaluated Plan", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L1", + "community": 495, + "norm_label": "uvicorn worker scaling \u2014 verified state + evaluated plan", + "id": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_scaling_verified_state_evaluated_plan" }, { - "label": "getStocksFieldsUrl()", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L64", - "community": 80, - "norm_label": "getstocksfieldsurl()", - "id": "prometheus_compact_getstocksfieldsurl" + "label": "1. Verified current state", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L8", + "community": 495, + "norm_label": "1. verified current state", + "id": "superpowers_uvicorn_worker_scaling_plan_1_verified_current_state" }, { - "label": "isTransientFieldsError()", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L68", - "community": 80, - "norm_label": "istransientfieldserror()", - "id": "prometheus_compact_istransientfieldserror" + "label": "1.1 Process model \u2014 exactly one process, several threads", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L10", + "community": 495, + "norm_label": "1.1 process model \u2014 exactly one process, several threads", + "id": "superpowers_uvicorn_worker_scaling_plan_1_1_process_model_exactly_one_process_several_threads" }, { - "label": "fetchFieldsPayload()", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L83", - "community": 80, - "norm_label": "fetchfieldspayload()", - "id": "prometheus_compact_fetchfieldspayload" + "label": "1.2 Cache (post-refactor) \u2014 RAM sharing works", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L23", + "community": 495, + "norm_label": "1.2 cache (post-refactor) \u2014 ram sharing works", + "id": "superpowers_uvicorn_worker_scaling_plan_1_2_cache_post_refactor_ram_sharing_works" }, { - "label": "loadFieldData()", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L89", - "community": 80, - "norm_label": "loadfielddata()", - "id": "prometheus_compact_loadfielddata" + "label": "1.3 Per-process resources that multiply with N workers", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L27", + "community": 495, + "norm_label": "1.3 per-process resources that multiply with n workers", + "id": "superpowers_uvicorn_worker_scaling_plan_1_3_per_process_resources_that_multiply_with_n_workers" }, { - "label": "getMetricRegex()", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L105", - "community": 80, - "norm_label": "getmetricregex()", - "id": "prometheus_compact_getmetricregex" + "label": "2. The blocking defect (must fix before N > 1)", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L40", + "community": 495, + "norm_label": "2. the blocking defect (must fix before n > 1)", + "id": "superpowers_uvicorn_worker_scaling_plan_2_the_blocking_defect_must_fix_before_n_1" }, { - "label": "dedup()", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L119", - "community": 80, - "norm_label": "dedup()", - "id": "prometheus_compact_dedup" + "label": "code:block1 (275: lockFile = tryBuildLock())", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L44", + "community": 495, + "norm_label": "code:block1 (275: lockfile = trybuildlock())", + "id": "superpowers_uvicorn_worker_scaling_plan_codeblock_1" }, { - "label": "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. Options evaluated", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L66", + "community": 495, + "norm_label": "3. options evaluated", + "id": "superpowers_uvicorn_worker_scaling_plan_3_options_evaluated" }, { - "label": "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. Recommended plan", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L79", + "community": 495, + "norm_label": "4. recommended plan", + "id": "superpowers_uvicorn_worker_scaling_plan_4_recommended_plan" }, { - "label": "extractDecisions()", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L131", - "community": 80, - "norm_label": "extractdecisions()", - "id": "prometheus_compact_extractdecisions" + "label": "Phase 0 \u2014 Measure (half a day, no infra)", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L81", + "community": 495, + "norm_label": "phase 0 \u2014 measure (half a day, no infra)", + "id": "superpowers_uvicorn_worker_scaling_plan_phase_0_measure_half_a_day_no_infra" }, { - "label": "extractSnapshots()", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L145", - "community": 80, - "norm_label": "extractsnapshots()", - "id": "prometheus_compact_extractsnapshots" + "label": "Phase 1 \u2014 Correctness fixes (required before any N > 1)", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L87", + "community": 495, + "norm_label": "phase 1 \u2014 correctness fixes (required before any n > 1)", + "id": "superpowers_uvicorn_worker_scaling_plan_phase_1_correctness_fixes_required_before_any_n_1" }, { - "label": "extractToolCalls()", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L158", - "community": 80, - "norm_label": "extracttoolcalls()", - "id": "prometheus_compact_extracttoolcalls" + "label": "Phase 2 \u2014 Enable workers on one host (option c)", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L93", + "community": 495, + "norm_label": "phase 2 \u2014 enable workers on one host (option c)", + "id": "superpowers_uvicorn_worker_scaling_plan_phase_2_enable_workers_on_one_host_option_c" }, { - "label": "buildSummary()", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L174", - "community": 80, - "norm_label": "buildsummary()", - "id": "prometheus_compact_buildsummary" + "label": "Phase 3 \u2014 Multi-host (only if you split boxes)", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L99", + "community": 495, + "norm_label": "phase 3 \u2014 multi-host (only if you split boxes)", + "id": "superpowers_uvicorn_worker_scaling_plan_phase_3_multi_host_only_if_you_split_boxes" }, { - "label": "PrometheusCompactor", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L195", - "community": 80, - "norm_label": "prometheuscompactor", - "id": "prometheus_compact_prometheuscompactor" + "label": "5. Evaluation of the existing scaling plan (recovered from git)", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L109", + "community": 495, + "norm_label": "5. evaluation of the existing scaling plan (recovered from git)", + "id": "superpowers_uvicorn_worker_scaling_plan_5_evaluation_of_the_existing_scaling_plan_recovered_from_git" }, { - "label": ".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": "6. Risks / open items", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L122", + "community": 495, + "norm_label": "6. risks / open items", + "id": "superpowers_uvicorn_worker_scaling_plan_6_risks_open_items" }, { - "label": ".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": "uvicorn-worker-scaling-plan.md", + "file_type": "document", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L1", + "community": 487, + "norm_label": "uvicorn-worker-scaling-plan.md", + "id": "docs_uvicorn_worker_scaling_plan_md" }, { - "label": ".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": "Uvicorn Worker Scaling \u2014 Verified State + Evaluated Plan", + "file_type": "document", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L1", + "community": 487, + "norm_label": "uvicorn worker scaling \u2014 verified state + evaluated plan", + "id": "docs_uvicorn_worker_scaling_plan_uvicorn_worker_scaling_verified_state_evaluated_plan" }, { - "label": ".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": "1. Verified current state", + "file_type": "document", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L8", + "community": 487, + "norm_label": "1. verified current state", + "id": "docs_uvicorn_worker_scaling_plan_1_verified_current_state" }, { - "label": ".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": "1.1 Process model \u2014 exactly one process, several threads", + "file_type": "document", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L10", + "community": 487, + "norm_label": "1.1 process model \u2014 exactly one process, several threads", + "id": "docs_uvicorn_worker_scaling_plan_1_1_process_model_exactly_one_process_several_threads" }, { - "label": ".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": "1.2 Cache (post-refactor) \u2014 RAM sharing works", + "file_type": "document", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L23", + "community": 487, + "norm_label": "1.2 cache (post-refactor) \u2014 ram sharing works", + "id": "docs_uvicorn_worker_scaling_plan_1_2_cache_post_refactor_ram_sharing_works" }, { - "label": "mcp.py", - "file_type": "code", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L1", - "community": 590, - "norm_label": "mcp.py", - "id": "main_app_prometheus_mcp_py" + "label": "1.3 Per-process resources that multiply with N workers", + "file_type": "document", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L27", + "community": 487, + "norm_label": "1.3 per-process resources that multiply with n workers", + "id": "docs_uvicorn_worker_scaling_plan_1_3_per_process_resources_that_multiply_with_n_workers" }, { - "label": "buildClient()", - "file_type": "code", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L21", - "community": 590, - "norm_label": "buildclient()", - "id": "prometheus_mcp_buildclient" + "label": "2. The blocking defect (must fix before N > 1)", + "file_type": "document", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L40", + "community": 487, + "norm_label": "2. the blocking defect (must fix before n > 1)", + "id": "docs_uvicorn_worker_scaling_plan_2_the_blocking_defect_must_fix_before_n_1" }, { - "label": "connect()", - "file_type": "code", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L29", - "community": 590, - "norm_label": "connect()", - "id": "prometheus_mcp_connect" + "label": "code:block1 (275: lockFile = tryBuildLock())", + "file_type": "document", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L44", + "community": 487, + "norm_label": "code:block1 (275: lockfile = trybuildlock())", + "id": "docs_uvicorn_worker_scaling_plan_codeblock_1" }, { - "label": "MCPClientPool", - "file_type": "code", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L36", - "community": 590, - "norm_label": "mcpclientpool", - "id": "prometheus_mcp_mcpclientpool" + "label": "3. Options evaluated", + "file_type": "document", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L66", + "community": 487, + "norm_label": "3. options evaluated", + "id": "docs_uvicorn_worker_scaling_plan_3_options_evaluated" }, { - "label": ".__init__()", - "file_type": "code", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L37", - "community": 590, - "norm_label": ".__init__()", - "id": "prometheus_mcp_mcpclientpool_init" + "label": "4. Recommended plan", + "file_type": "document", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L79", + "community": 487, + "norm_label": "4. recommended plan", + "id": "docs_uvicorn_worker_scaling_plan_4_recommended_plan" }, { - "label": ".initialize()", - "file_type": "code", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L42", - "community": 590, - "norm_label": ".initialize()", - "id": "prometheus_mcp_mcpclientpool_initialize" + "label": "Phase 0 \u2014 Measure (half a day, no infra)", + "file_type": "document", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L81", + "community": 487, + "norm_label": "phase 0 \u2014 measure (half a day, no infra)", + "id": "docs_uvicorn_worker_scaling_plan_phase_0_measure_half_a_day_no_infra" }, { - "label": ".getClients()", - "file_type": "code", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L56", - "community": 590, - "norm_label": ".getclients()", - "id": "prometheus_mcp_mcpclientpool_getclients" + "label": "Phase 1 \u2014 Correctness fixes (required before any N > 1)", + "file_type": "document", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L87", + "community": 487, + "norm_label": "phase 1 \u2014 correctness fixes (required before any n > 1)", + "id": "docs_uvicorn_worker_scaling_plan_phase_1_correctness_fixes_required_before_any_n_1" }, { - "label": ".healthCheck()", - "file_type": "code", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L63", - "community": 590, - "norm_label": ".healthcheck()", - "id": "prometheus_mcp_mcpclientpool_healthcheck" + "label": "Phase 2 \u2014 Enable workers on one host (option c)", + "file_type": "document", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L93", + "community": 487, + "norm_label": "phase 2 \u2014 enable workers on one host (option c)", + "id": "docs_uvicorn_worker_scaling_plan_phase_2_enable_workers_on_one_host_option_c" }, { - "label": ".reconnect()", - "file_type": "code", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L75", - "community": 590, - "norm_label": ".reconnect()", - "id": "prometheus_mcp_mcpclientpool_reconnect" + "label": "Phase 3 \u2014 Multi-host (only if you split boxes)", + "file_type": "document", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L99", + "community": 487, + "norm_label": "phase 3 \u2014 multi-host (only if you split boxes)", + "id": "docs_uvicorn_worker_scaling_plan_phase_3_multi_host_only_if_you_split_boxes" }, { - "label": ".close()", - "file_type": "code", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L90", - "community": 590, - "norm_label": ".close()", - "id": "prometheus_mcp_mcpclientpool_close" + "label": "5. Evaluation of the existing scaling plan (recovered from git)", + "file_type": "document", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L109", + "community": 487, + "norm_label": "5. evaluation of the existing scaling plan (recovered from git)", + "id": "docs_uvicorn_worker_scaling_plan_5_evaluation_of_the_existing_scaling_plan_recovered_from_git" }, { - "label": "memory.py", - "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L1", - "community": 53, - "norm_label": "memory.py", - "id": "main_app_prometheus_memory_py" + "label": "6. Risks / open items", + "file_type": "document", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L122", + "community": 487, + "norm_label": "6. risks / open items", + "id": "docs_uvicorn_worker_scaling_plan_6_risks_open_items" }, { - "label": "getMatrix()", - "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L35", - "community": 621, - "norm_label": "getmatrix()", - "id": "prometheus_memory_getmatrix" + "label": "6.1 DB & migrations (`user_db`) \u2014 READY, 2 actions", + "file_type": "document", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L85", + "community": 130, + "norm_label": "6.1 db & migrations (`user_db`) \u2014 ready, 2 actions", + "id": "superpowers_investidor10_wallet_spec_6_1_db_migrations_user_db_ready_2_actions" }, { - "label": "invalidateUser()", - "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L53", - "community": 53, - "norm_label": "invalidateuser()", - "id": "prometheus_memory_invalidateuser" + "label": "6.2 Stocks/price access \u2014 READY for full-series; ONE new helper needed", + "file_type": "document", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L92", + "community": 130, + "norm_label": "6.2 stocks/price access \u2014 ready for full-series; one new helper needed", + "id": "superpowers_investidor10_wallet_spec_6_2_stocks_price_access_ready_for_full_series_one_new_helper_needed" }, { - "label": "clearAll()", - "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L57", - "community": 53, - "norm_label": "clearall()", - "id": "prometheus_memory_clearall" + "label": "6.3 Wiring / auth / tests \u2014 READY", + "file_type": "document", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L98", + "community": 130, + "norm_label": "6.3 wiring / auth / tests \u2014 ready", + "id": "superpowers_investidor10_wallet_spec_6_3_wiring_auth_tests_ready" }, { - "label": "MemoryCandidate", - "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L64", - "community": 45, - "norm_label": "memorycandidate", - "id": "prometheus_memory_memorycandidate" + "label": "6.4 Scraper pipeline (P2 dividends / has_b3) \u2014 READY (public sources only)", + "file_type": "document", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L104", + "community": 130, + "norm_label": "6.4 scraper pipeline (p2 dividends / has_b3) \u2014 ready (public sources only)", + "id": "superpowers_investidor10_wallet_spec_6_4_scraper_pipeline_p2_dividends_has_b3_ready_public_sources_only" }, { - "label": "newTokenCache()", - "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L90", - "community": 116, - "norm_label": "newtokencache()", - "id": "prometheus_memory_newtokencache" + "label": "investidor10-wallet-research.md", + "file_type": "document", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L1", + "community": 582, + "norm_label": "investidor10-wallet-research.md", + "id": "docs_investidor10_wallet_research_md" }, { - "label": "getClient()", - "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L97", - "community": 53, - "norm_label": "getclient()", - "id": "prometheus_memory_getclient" + "label": "Investidor10 Wallet \u2014 Empirical Research for Mansa", + "file_type": "document", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L1", + "community": 582, + "norm_label": "investidor10 wallet \u2014 empirical research for mansa", + "id": "docs_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa" }, { - "label": "minMax()", - "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L104", - "community": 104, - "norm_label": "minmax()", - "id": "prometheus_memory_minmax" + "label": "1. Feature inventory + nav structure", + "file_type": "document", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L10", + "community": 582, + "norm_label": "1. feature inventory + nav structure", + "id": "docs_investidor10_wallet_research_1_feature_inventory_nav_structure" }, { - "label": "normalizeKey()", - "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L113", - "community": 63, - "norm_label": "normalizekey()", - "id": "prometheus_memory_normalizekey" + "label": "2. User lifecycle end-to-end", + "file_type": "document", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L30", + "community": 582, + "norm_label": "2. user lifecycle end-to-end", + "id": "docs_investidor10_wallet_research_2_user_lifecycle_end_to_end" }, { - "label": "findSimilarKey()", - "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L120", - "community": 53, - "norm_label": "findsimilarkey()", - "id": "prometheus_memory_findsimilarkey" + "label": "3. Wallet API reference", + "file_type": "document", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L40", + "community": 582, + "norm_label": "3. wallet api reference", + "id": "docs_investidor10_wallet_research_3_wallet_api_reference" }, { - "label": "scoreRow()", - "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L140", - "community": 104, - "norm_label": "scorerow()", - "id": "prometheus_memory_scorerow" + "label": "4. Data model inference (from payloads, no DB access)", + "file_type": "document", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L65", + "community": 582, + "norm_label": "4. data model inference (from payloads, no db access)", + "id": "docs_investidor10_wallet_research_4_data_model_inference_from_payloads_no_db_access" }, { - "label": "scoreRecency()", - "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L152", - "community": 104, - "norm_label": "scorerecency()", - "id": "prometheus_memory_scorerecency" + "label": "5. Product logic", + "file_type": "document", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L74", + "community": 582, + "norm_label": "5. product logic", + "id": "docs_investidor10_wallet_research_5_product_logic" }, { - "label": "scoreCandidates()", - "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L162", - "community": 104, - "norm_label": "scorecandidates()", - "id": "prometheus_memory_scorecandidates" + "label": "5b. Gaps / unverified (do not treat as fact)", + "file_type": "document", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L82", + "community": 582, + "norm_label": "5b. gaps / unverified (do not treat as fact)", + "id": "docs_investidor10_wallet_research_5b_gaps_unverified_do_not_treat_as_fact" }, { - "label": "sumTokens()", - "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L179", - "community": 53, - "norm_label": "sumtokens()", - "id": "prometheus_memory_sumtokens" + "label": "6. Concrete Mansa proposal (build first \u2192 later; minimal sketches)", + "file_type": "document", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L86", + "community": 582, + "norm_label": "6. concrete mansa proposal (build first \u2192 later; minimal sketches)", + "id": "docs_investidor10_wallet_research_6_concrete_mansa_proposal_build_first_later_minimal_sketches" }, { - "label": "PrometheusMemory", - "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L194", - "community": 140, - "norm_label": "prometheusmemory", - "id": "prometheus_memory_prometheusmemory" + "label": "investidor10-wallet-spec.md", + "file_type": "document", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L1", + "community": 583, + "norm_label": "investidor10-wallet-spec.md", + "id": "docs_investidor10_wallet_spec_md" }, { - "label": "getMemoryLimit()", - "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L196", - "community": 53, - "norm_label": "getmemorylimit()", - "id": "prometheus_memory_getmemorylimit" + "label": "Mansa Wallet \u2014 Spec-Driven Implementation Spec", + "file_type": "document", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L1", + "community": 583, + "norm_label": "mansa wallet \u2014 spec-driven implementation spec", + "id": "docs_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec" }, { - "label": "countMemories()", - "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L202", - "community": 53, - "norm_label": "countmemories()", - "id": "prometheus_memory_countmemories" + "label": "1. Requirements", + "file_type": "document", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L12", + "community": 583, + "norm_label": "1. requirements", + "id": "docs_investidor10_wallet_spec_1_requirements" }, { - "label": "touch()", - "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L211", - "community": 53, - "norm_label": "touch()", - "id": "prometheus_memory_touch" + "label": "1.1 Functional (per surface; tags: EXISTS = build on it, PARTIAL = half reusable, MISSING = greenfield)", + "file_type": "document", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L14", + "community": 583, + "norm_label": "1.1 functional (per surface; tags: exists = build on it, partial = half reusable, missing = greenfield)", + "id": "docs_investidor10_wallet_spec_1_1_functional_per_surface_tags_exists_build_on_it_partial_half_reusable_missing_greenfield" }, { - "label": "upsertMemory()", - "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L222", - "community": 53, - "norm_label": "upsertmemory()", - "id": "prometheus_memory_upsertmemory" + "label": "1.2 Non-functional", + "file_type": "document", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L28", + "community": 583, + "norm_label": "1.2 non-functional", + "id": "docs_investidor10_wallet_spec_1_2_non_functional" }, { - "label": "search()", - "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L286", - "community": 104, - "norm_label": "search()", - "id": "prometheus_memory_search" + "label": "2. Domain model", + "file_type": "document", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L38", + "community": 583, + "norm_label": "2. domain model", + "id": "docs_investidor10_wallet_spec_2_domain_model" }, { - "label": "fullTextSearch()", - "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L349", - "community": 104, - "norm_label": "fulltextsearch()", - "id": "prometheus_memory_fulltextsearch" + "label": "3. API contracts (all under `/api/wallet`; chain: `main/controller/wallet_controller.py` \u2192 `main/service/wallet_service.py::` \u2192 `main/models/wallet.py::`; auth `Depends(UserManager.getCurrentUser)` + `Depends(getSession)` throughout)", + "file_type": "document", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L49", + "community": 583, + "norm_label": "3. api contracts (all under `/api/wallet`; chain: `main/controller/wallet_controller.py` \u2192 `main/service/wallet_service.py::` \u2192 `main/models/wallet.py::`; auth `depends(usermanager.getcurrentuser)` + `depends(getsession)` throughout)", + "id": "docs_investidor10_wallet_spec_3_api_contracts_all_under_api_wallet_chain_main_controller_wallet_controller_py_main_service_wallet_service_py_fn_main_models_wallet_py_model_auth_depends_usermanager_getcurrentuser_depends_getsession_throughout" }, { - "label": "getUserMemories()", - "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L407", - "community": 53, - "norm_label": "getusermemories()", - "id": "prometheus_memory_getusermemories" + "label": "4. Phased build plan (writing-plans: each phase independently reviewable; reviewer PASS per phase)", + "file_type": "document", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L66", + "community": 583, + "norm_label": "4. phased build plan (writing-plans: each phase independently reviewable; reviewer pass per phase)", + "id": "docs_investidor10_wallet_spec_4_phased_build_plan_writing_plans_each_phase_independently_reviewable_reviewer_pass_per_phase" }, { - "label": "deleteMemory()", - "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L432", - "community": 53, - "norm_label": "deletememory()", - "id": "prometheus_memory_deletememory" + "label": "5. Risks / assumptions (honest flags carried over \u2014 do not treat as fact)", + "file_type": "document", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L72", + "community": 583, + "norm_label": "5. risks / assumptions (honest flags carried over \u2014 do not treat as fact)", + "id": "docs_investidor10_wallet_spec_5_risks_assumptions_honest_flags_carried_over_do_not_treat_as_fact" }, { - "label": "extract()", - "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L450", - "community": 53, - "norm_label": "extract()", - "id": "prometheus_memory_extract" + "label": "6. Readiness assessment (s3, verified 2026-09-29) \u2014 prerequisites before P1", + "file_type": "document", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L81", + "community": 583, + "norm_label": "6. readiness assessment (s3, verified 2026-09-29) \u2014 prerequisites before p1", + "id": "docs_investidor10_wallet_spec_6_readiness_assessment_s3_verified_2026_09_29_prerequisites_before_p1" }, { - "label": "sandbox.py", - "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L1", - "community": 69, - "norm_label": "sandbox.py", - "id": "main_app_prometheus_sandbox_py" + "label": "6.1 DB & migrations (`user_db`) \u2014 READY, 2 actions", + "file_type": "document", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L85", + "community": 583, + "norm_label": "6.1 db & migrations (`user_db`) \u2014 ready, 2 actions", + "id": "docs_investidor10_wallet_spec_6_1_db_migrations_user_db_ready_2_actions" }, { - "label": "lockFor()", - "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L18", - "community": 69, - "norm_label": "lockfor()", - "id": "prometheus_sandbox_lockfor" + "label": "6.2 Stocks/price access \u2014 READY for full-series; ONE new helper needed", + "file_type": "document", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L92", + "community": 583, + "norm_label": "6.2 stocks/price access \u2014 ready for full-series; one new helper needed", + "id": "docs_investidor10_wallet_spec_6_2_stocks_price_access_ready_for_full_series_one_new_helper_needed" }, { - "label": "getClient()", - "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L24", - "community": 69, - "norm_label": "getclient()", - "id": "prometheus_sandbox_getclient" + "label": "6.3 Wiring / auth / tests \u2014 READY", + "file_type": "document", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L98", + "community": 583, + "norm_label": "6.3 wiring / auth / tests \u2014 ready", + "id": "docs_investidor10_wallet_spec_6_3_wiring_auth_tests_ready" }, { - "label": "hostPath()", - "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L32", - "community": 69, - "norm_label": "hostpath()", - "id": "prometheus_sandbox_hostpath" + "label": "6.4 Scraper pipeline (P2 dividends / has_b3) \u2014 READY (public sources only)", + "file_type": "document", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L104", + "community": 583, + "norm_label": "6.4 scraper pipeline (p2 dividends / has_b3) \u2014 ready (public sources only)", + "id": "docs_investidor10_wallet_spec_6_4_scraper_pipeline_p2_dividends_has_b3_ready_public_sources_only" }, { - "label": "sandboxPath()", - "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L46", - "community": 69, - "norm_label": "sandboxpath()", - "id": "prometheus_sandbox_sandboxpath" + "label": "6.5 Ordered actions before P1 code", + "file_type": "document", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L110", + "community": 583, + "norm_label": "6.5 ordered actions before p1 code", + "id": "docs_investidor10_wallet_spec_6_5_ordered_actions_before_p1_code" }, { - "label": "SandboxManager", - "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L51", - "community": 2, - "norm_label": "sandboxmanager", - "id": "prometheus_sandbox_sandboxmanager" + "label": "nginx-scaling-plan.md", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L1", + "community": 591, + "norm_label": "nginx-scaling-plan.md", + "id": "docs_nginx_scaling_plan_md" }, { - "label": "create()", - "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L53", - "community": 69, - "norm_label": "create()", - "id": "prometheus_sandbox_create" + "label": "nginx Scaling Plan \u2014 reverse proxy + response cache for `/stocks`, and the multi-server evolution", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L1", + "community": 591, + "norm_label": "nginx scaling plan \u2014 reverse proxy + response cache for `/stocks`, and the multi-server evolution", + "id": "docs_nginx_scaling_plan_nginx_scaling_plan_reverse_proxy_response_cache_for_stocks_and_the_multi_server_evolution" }, { - "label": "destroy()", - "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L69", - "community": 69, - "norm_label": "destroy()", - "id": "prometheus_sandbox_destroy" + "label": "0. Purpose and constraints", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L11", + "community": 591, + "norm_label": "0. purpose and constraints", + "id": "docs_nginx_scaling_plan_0_purpose_and_constraints" }, { - "label": "getOrCreate()", - "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L81", - "community": 69, - "norm_label": "getorcreate()", - "id": "prometheus_sandbox_getorcreate" + "label": "Part 1 \u2014 Implementation plan", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L31", + "community": 475, + "norm_label": "part 1 \u2014 implementation plan", + "id": "docs_nginx_scaling_plan_part_1_implementation_plan" }, { - "label": "execute()", - "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L128", - "community": 69, - "norm_label": "execute()", - "id": "prometheus_sandbox_execute" + "label": "1.1 Architecture decision", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L33", + "community": 475, + "norm_label": "1.1 architecture decision", + "id": "docs_nginx_scaling_plan_1_1_architecture_decision" }, { - "label": "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": "1.2 File layout", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L46", + "community": 475, + "norm_label": "1.2 file layout", + "id": "docs_nginx_scaling_plan_1_2_file_layout" }, { - "label": "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": "code:block1 (nginx/)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L49", + "community": 475, + "norm_label": "code:block1 (nginx/)", + "id": "docs_nginx_scaling_plan_codeblock_1" }, { - "label": "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": "1.3 Phase P0 \u2014 nginx service + config skeleton", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L63", + "community": 593, + "norm_label": "1.3 phase p0 \u2014 nginx service + config skeleton", + "id": "docs_nginx_scaling_plan_1_3_phase_p0_nginx_service_config_skeleton" }, { - "label": "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": "code:yaml (nginx:)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L65", + "community": 593, + "norm_label": "code:yaml (nginx:)", + "id": "docs_nginx_scaling_plan_codeblock_2" }, { - "label": "syncToSandbox()", - "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L210", - "community": 69, - "norm_label": "synctosandbox()", - "id": "prometheus_sandbox_synctosandbox" + "label": "code:nginx (proxy_cache_path /var/cache/nginx/stocks)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L85", + "community": 593, + "norm_label": "code:nginx (proxy_cache_path /var/cache/nginx/stocks)", + "id": "docs_nginx_scaling_plan_codeblock_3" }, { - "label": "syncFromSandbox()", - "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L229", - "community": 69, - "norm_label": "syncfromsandbox()", - "id": "prometheus_sandbox_syncfromsandbox" + "label": "code:nginx (upstream stocks_api {)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L106", + "community": 593, + "norm_label": "code:nginx (upstream stocks_api {)", + "id": "docs_nginx_scaling_plan_codeblock_4" }, { - "label": "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": "1.4 Phase P1 \u2014 cache locations, TTL table, directives", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L119", + "community": 594, + "norm_label": "1.4 phase p1 \u2014 cache locations, ttl table, directives", + "id": "docs_nginx_scaling_plan_1_4_phase_p1_cache_locations_ttl_table_directives" }, { - "label": "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": "code:nginx (proxy_pass http://stocks_api;)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L122", + "community": 594, + "norm_label": "code:nginx (proxy_pass http://stocks_api;)", + "id": "docs_nginx_scaling_plan_codeblock_5" }, { - "label": ".__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": "code:nginx (server {)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L153", + "community": 594, + "norm_label": "code:nginx (server {)", + "id": "docs_nginx_scaling_plan_codeblock_6" }, { - "label": ".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": "code:bash (K=sk_test_...; U='http://localhost/stocks/historical?search=)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L209", + "community": 594, + "norm_label": "code:bash (k=sk_test_...; u='http://localhost/stocks/historical?search=)", + "id": "docs_nginx_scaling_plan_codeblock_7" }, { - "label": "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": "1.5 Phase P2 \u2014 port scheme, worker containers, keepalive", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L218", + "community": 475, + "norm_label": "1.5 phase p2 \u2014 port scheme, worker containers, keepalive", + "id": "docs_nginx_scaling_plan_1_5_phase_p2_port_scheme_worker_containers_keepalive" }, { - "label": ".__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": "code:yaml (stocksapi:)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L224", + "community": 475, + "norm_label": "code:yaml (stocksapi:)", + "id": "docs_nginx_scaling_plan_codeblock_8" }, { - "label": ".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": "1.6 Phase P3 \u2014 remote VPS upstreams + health strategy", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L244", + "community": 475, + "norm_label": "1.6 phase p3 \u2014 remote vps upstreams + health strategy", + "id": "docs_nginx_scaling_plan_1_6_phase_p3_remote_vps_upstreams_health_strategy" }, { - "label": ".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": "code:nginx (upstream stocks_api {)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L246", + "community": 475, + "norm_label": "code:nginx (upstream stocks_api {)", + "id": "docs_nginx_scaling_plan_codeblock_9" }, { - "label": ".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": "code:nginx (proxy_next_upstream error timeout http_502 http_503 http_504)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L258", + "community": 475, + "norm_label": "code:nginx (proxy_next_upstream error timeout http_502 http_503 http_504)", + "id": "docs_nginx_scaling_plan_codeblock_10" }, { - "label": ".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": "1.7 Phase P4 \u2014 handoff design (no code in this plan)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L276", + "community": 475, + "norm_label": "1.7 phase p4 \u2014 handoff design (no code in this plan)", + "id": "docs_nginx_scaling_plan_1_7_phase_p4_handoff_design_no_code_in_this_plan" }, { - "label": ".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": "1.8 Quota / rate-limit semantics after caching", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L287", + "community": 475, + "norm_label": "1.8 quota / rate-limit semantics after caching", + "id": "docs_nginx_scaling_plan_1_8_quota_rate_limit_semantics_after_caching" }, { - "label": ".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": "1.9 Anti-scraping note (TODO 17)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L299", + "community": 475, + "norm_label": "1.9 anti-scraping note (todo 17)", + "id": "docs_nginx_scaling_plan_1_9_anti_scraping_note_todo_17" }, { - "label": ".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": "1.10 Edge cases / risks (implementation)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L303", + "community": 475, + "norm_label": "1.10 edge cases / risks (implementation)", + "id": "docs_nginx_scaling_plan_1_10_edge_cases_risks_implementation" }, { - "label": ".forward()", - "file_type": "code", - "source_file": "main/app/prometheus/stream_bus.py", - "source_location": "L112", - "community": 210, - "norm_label": ".forward()", - "id": "prometheus_stream_bus_streambus_forward" + "label": "Part 2 \u2014 Benchmark plan", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L314", + "community": 512, + "norm_label": "part 2 \u2014 benchmark plan", + "id": "docs_nginx_scaling_plan_part_2_benchmark_plan" }, { - "label": "tools.py", - "file_type": "code", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L1", - "community": 571, - "norm_label": "tools.py", - "id": "main_app_prometheus_tools_py" + "label": "2.0 Grounding: what the code actually does", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L316", + "community": 512, + "norm_label": "2.0 grounding: what the code actually does", + "id": "docs_nginx_scaling_plan_2_0_grounding_what_the_code_actually_does" }, { - "label": "search_memory()", - "file_type": "code", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L20", - "community": 152, - "norm_label": "search_memory()", - "id": "prometheus_tools_search_memory" + "label": "2.1 Hypotheses", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L348", + "community": 512, + "norm_label": "2.1 hypotheses", + "id": "docs_nginx_scaling_plan_2_1_hypotheses" }, { - "label": "save_memory()", - "file_type": "code", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L51", - "community": 528, - "norm_label": "save_memory()", - "id": "prometheus_tools_save_memory" + "label": "2.2 Tooling", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L357", + "community": 570, + "norm_label": "2.2 tooling", + "id": "docs_nginx_scaling_plan_2_2_tooling" }, { - "label": "execute_code()", - "file_type": "code", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L93", - "community": 546, - "norm_label": "execute_code()", - "id": "prometheus_tools_execute_code" + "label": "code:bash (# Windows/Docker Desktop: do NOT use --network host (the Lin)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L360", + "community": 570, + "norm_label": "code:bash (# windows/docker desktop: do not use --network host (the lin)", + "id": "docs_nginx_scaling_plan_codeblock_11" }, { - "label": "read_file()", - "file_type": "code", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L114", - "community": 573, - "norm_label": "read_file()", - "id": "prometheus_tools_read_file" + "label": "code:bash (curl -s -o /dev/null -w '%header{x-cache-status}\\n' -H \"X-AP)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L373", + "community": 570, + "norm_label": "code:bash (curl -s -o /dev/null -w '%header{x-cache-status}\\n' -h \"x-ap)", + "id": "docs_nginx_scaling_plan_codeblock_12" }, { - "label": "write_file()", - "file_type": "code", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L128", - "community": 525, - "norm_label": "write_file()", - "id": "prometheus_tools_write_file" + "label": "code:bash (docker stats --no-stream --format \"{{.Name}},{{.CPUPerc}},{{)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L381", + "community": 570, + "norm_label": "code:bash (docker stats --no-stream --format \"{{.name}},{{.cpuperc}},{{)", + "id": "docs_nginx_scaling_plan_codeblock_13" }, { - "label": "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": "code:bash (docker exec api sh -c \"pidstat -w -p 1 1 30\" # if sysst)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L387", + "community": 570, + "norm_label": "code:bash (docker exec api sh -c \"pidstat -w -p 1 1 30\" # if sysst)", + "id": "docs_nginx_scaling_plan_codeblock_14" }, { - "label": "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": "code:block15 (tests/perf/nginx/)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L398", + "community": 570, + "norm_label": "code:block15 (tests/perf/nginx/)", + "id": "docs_nginx_scaling_plan_codeblock_15" }, { - "label": "dispatchToolCall()", - "file_type": "code", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L190", - "community": 49, - "norm_label": "dispatchtoolcall()", - "id": "prometheus_tools_dispatchtoolcall" + "label": "2.3 Scenarios", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L407", + "community": 512, + "norm_label": "2.3 scenarios", + "id": "docs_nginx_scaling_plan_2_3_scenarios" }, { - "label": "Search user's saved memories, preferences, and past analysis context. Use", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L21", - "community": 152, - "norm_label": "search user's saved memories, preferences, and past analysis context. use", - "id": "prometheus_tools_rationale_21" + "label": "2.4 Protocol", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L419", + "community": 512, + "norm_label": "2.4 protocol", + "id": "docs_nginx_scaling_plan_2_4_protocol" }, { - "label": "Store a memory about the user's preferences, analysis results, or feedback.", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L52", - "community": 528, - "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", - "id": "prometheus_tools_rationale_52" + "label": "2.5 Metrics", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L430", + "community": 512, + "norm_label": "2.5 metrics", + "id": "docs_nginx_scaling_plan_2_5_metrics" }, { - "label": "Execute Python code in an isolated sandbox. Use for quantitative analysis,", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L94", - "community": 546, - "norm_label": "execute python code in an isolated sandbox. use for quantitative analysis,", - "id": "prometheus_tools_rationale_94" + "label": "2.6 Acceptance thresholds \u2014 **ALL PROPOSED, freeze after first real run**", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L434", + "community": 512, + "norm_label": "2.6 acceptance thresholds \u2014 **all proposed, freeze after first real run**", + "id": "docs_nginx_scaling_plan_2_6_acceptance_thresholds_all_proposed_freeze_after_first_real_run" }, { - "label": "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": "L115", - "community": 573, - "norm_label": "read a file from the workspace. args: path: path to the file (e.", - "id": "prometheus_tools_rationale_115" + "label": "2.7 Results doc layout", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L451", + "community": 512, + "norm_label": "2.7 results doc layout", + "id": "docs_nginx_scaling_plan_2_7_results_doc_layout" }, { - "label": "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": "L129", - "community": 525, - "norm_label": "write a file to the workspace. use this to save data files (csv, json, scri", - "id": "prometheus_tools_rationale_129" + "label": "code:block16 (docs/benchmarks/nginx/)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L453", + "community": 512, + "norm_label": "code:block16 (docs/benchmarks/nginx/)", + "id": "docs_nginx_scaling_plan_codeblock_16" }, { - "label": "List files in the workspace directory. Args: path: Directory pat", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L145", - "community": 525, - "norm_label": "list files in the workspace directory. args: path: directory pat", - "id": "prometheus_tools_rationale_145" + "label": "2.8 Feeding `/status` (TODO 14)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L460", + "community": 512, + "norm_label": "2.8 feeding `/status` (todo 14)", + "id": "docs_nginx_scaling_plan_2_8_feeding_status_todo_14" }, { - "label": "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": "L158", - "community": 525, - "norm_label": "get a download link for a workspace file to share with the user. use this", - "id": "prometheus_tools_rationale_158" + "label": "2.9 Benchmark risks", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L466", + "community": 512, + "norm_label": "2.9 benchmark risks", + "id": "docs_nginx_scaling_plan_2_9_benchmark_risks" }, { - "label": "vector.py", - "file_type": "code", - "source_file": "main/app/prometheus/vector.py", - "source_location": "L1", - "community": 104, - "norm_label": "vector.py", - "id": "main_app_prometheus_vector_py" + "label": "Part 3 \u2014 Future scaling evolution + risks", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L477", + "community": 183, + "norm_label": "part 3 \u2014 future scaling evolution + risks", + "id": "docs_nginx_scaling_plan_part_3_future_scaling_evolution_risks" }, { - "label": "normalizeRows()", - "file_type": "code", - "source_file": "main/app/prometheus/vector.py", - "source_location": "L10", - "community": 104, - "norm_label": "normalizerows()", - "id": "prometheus_vector_normalizerows" + "label": "3.0 Verified ground truth", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L479", + "community": 183, + "norm_label": "3.0 verified ground truth", + "id": "docs_nginx_scaling_plan_3_0_verified_ground_truth" }, { - "label": "embed()", - "file_type": "code", - "source_file": "main/app/prometheus/vector.py", - "source_location": "L15", - "community": 104, - "norm_label": "embed()", - "id": "prometheus_vector_embed" + "label": "3.1 Target topology", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L496", + "community": 183, + "norm_label": "3.1 target topology", + "id": "docs_nginx_scaling_plan_3_1_target_topology" }, { - "label": "decodeEmbeddings()", - "file_type": "code", - "source_file": "main/app/prometheus/vector.py", - "source_location": "L19", - "community": 104, - "norm_label": "decodeembeddings()", - "id": "prometheus_vector_decodeembeddings" + "label": "code:block17 (NODE A NODE B)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L501", + "community": 183, + "norm_label": "code:block17 (node a node b)", + "id": "docs_nginx_scaling_plan_codeblock_17" }, { - "label": "batchCosineSimilarity()", - "file_type": "code", - "source_file": "main/app/prometheus/vector.py", - "source_location": "L41", - "community": 104, - "norm_label": "batchcosinesimilarity()", - "id": "prometheus_vector_batchcosinesimilarity" + "label": "3.2 Worker-container extraction", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L513", + "community": 183, + "norm_label": "3.2 worker-container extraction", + "id": "docs_nginx_scaling_plan_3_2_worker_container_extraction" }, { - "label": "contentHash()", - "file_type": "code", - "source_file": "main/app/prometheus/vector.py", - "source_location": "L51", - "community": 53, - "norm_label": "contenthash()", - "id": "prometheus_vector_contenthash" + "label": "3.3 nginx upstream evolution \u2014 validated against the user's plan", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L530", + "community": 183, + "norm_label": "3.3 nginx upstream evolution \u2014 validated against the user's plan", + "id": "docs_nginx_scaling_plan_3_3_nginx_upstream_evolution_validated_against_the_user_s_plan" }, { - "label": "toVectorString()", - "file_type": "code", - "source_file": "main/app/prometheus/vector.py", - "source_location": "L55", - "community": 104, - "norm_label": "tovectorstring()", - "id": "prometheus_vector_tovectorstring" + "label": "code:nginx (upstream stocks_api { server 10.0.0.12:3200 max_fails=3 fail)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L534", + "community": 183, + "norm_label": "code:nginx (upstream stocks_api { server 10.0.0.12:3200 max_fails=3 fail)", + "id": "docs_nginx_scaling_plan_codeblock_18" }, { - "label": "fromVectorString()", - "file_type": "code", - "source_file": "main/app/prometheus/vector.py", - "source_location": "L59", - "community": 104, - "norm_label": "fromvectorstring()", - "id": "prometheus_vector_fromvectorstring" + "label": "3.4 TODO 13 migration \u2014 drop `{service}_HOST`/`{service}_PORT`", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L551", + "community": 183, + "norm_label": "3.4 todo 13 migration \u2014 drop `{service}_host`/`{service}_port`", + "id": "docs_nginx_scaling_plan_3_4_todo_13_migration_drop_service_host_service_port" }, { - "label": "getRelevanceScore()", - "file_type": "code", - "source_file": "main/app/prometheus/vector.py", - "source_location": "L71", - "community": 27, - "norm_label": "getrelevancescore()", - "id": "prometheus_vector_getrelevancescore" + "label": "3.5 Redis \u2014 exactly two jobs", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L558", + "community": 183, + "norm_label": "3.5 redis \u2014 exactly two jobs", + "id": "docs_nginx_scaling_plan_3_5_redis_exactly_two_jobs" }, { - "label": "prometheus_controller.py", - "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L1", - "community": 84, - "norm_label": "prometheus_controller.py", - "id": "main_controller_prometheus_controller_py" + "label": "3.6 Cache strategy across boxes", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L574", + "community": 183, + "norm_label": "3.6 cache strategy across boxes", + "id": "docs_nginx_scaling_plan_3_6_cache_strategy_across_boxes" }, { - "label": "verifySessionOwnsership()", - "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L26", - "community": 84, - "norm_label": "verifysessionownsership()", - "id": "controller_prometheus_controller_verifysessionownsership" + "label": "3.7 Autoscaling story (TODO 11)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L580", + "community": 183, + "norm_label": "3.7 autoscaling story (todo 11)", + "id": "docs_nginx_scaling_plan_3_7_autoscaling_story_todo_11" }, { - "label": "health()", - "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L32", - "community": 84, - "norm_label": "health()", - "id": "controller_prometheus_controller_health" + "label": "3.8 ForgeVM interplay (TODO 12)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L585", + "community": 183, + "norm_label": "3.8 forgevm interplay (todo 12)", + "id": "docs_nginx_scaling_plan_3_8_forgevm_interplay_todo_12" }, { - "label": "getSessions()", - "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L37", - "community": 84, - "norm_label": "getsessions()", - "id": "controller_prometheus_controller_getsessions" + "label": "3.9 Risk register", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L589", + "community": 183, + "norm_label": "3.9 risk register", + "id": "docs_nginx_scaling_plan_3_9_risk_register" }, { - "label": "updateSessionTitle()", - "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L56", - "community": 84, - "norm_label": "updatesessiontitle()", - "id": "controller_prometheus_controller_updatesessiontitle" + "label": "3.10 Migration sequence + verification", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L609", + "community": 183, + "norm_label": "3.10 migration sequence + verification", + "id": "docs_nginx_scaling_plan_3_10_migration_sequence_verification" }, { - "label": "getHistory()", + "label": "Open decisions (blocking or product-owned)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L628", + "community": 591, + "norm_label": "open decisions (blocking or product-owned)", + "id": "docs_nginx_scaling_plan_open_decisions_blocking_or_product_owned" + }, + { + "label": "Next actions (not in scope here)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L636", + "community": 591, + "norm_label": "next actions (not in scope here)", + "id": "docs_nginx_scaling_plan_next_actions_not_in_scope_here" + }, + { + "label": "_serviceToken()", "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L71", - "community": 84, - "norm_label": "gethistory()", - "id": "controller_prometheus_controller_gethistory" + "source_file": "main/app/stocks_api/key.py", + "source_location": "L18", + "community": 500, + "norm_label": "_servicetoken()", + "id": "stocks_api_key_servicetoken" }, { - "label": "deleteSession()", + "label": "_verifyUrl()", "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L90", - "community": 84, - "norm_label": "deletesession()", - "id": "controller_prometheus_controller_deletesession" + "source_file": "main/app/stocks_api/key.py", + "source_location": "L22", + "community": 500, + "norm_label": "_verifyurl()", + "id": "stocks_api_key_verifyurl" }, { - "label": "chat_stream()", + "label": "initVerifyClient()", "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L103", - "community": 84, - "norm_label": "chat_stream()", - "id": "controller_prometheus_controller_chat_stream" + "source_file": "main/app/stocks_api/key.py", + "source_location": "L26", + "community": 500, + "norm_label": "initverifyclient()", + "id": "stocks_api_key_initverifyclient" }, { - "label": "resumeChatStream()", + "label": "closeVerifyClient()", "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L154", - "community": 84, - "norm_label": "resumechatstream()", - "id": "controller_prometheus_controller_resumechatstream" + "source_file": "main/app/stocks_api/key.py", + "source_location": "L33", + "community": 500, + "norm_label": "closeverifyclient()", + "id": "stocks_api_key_closeverifyclient" }, { - "label": "deleteWorkspaceFile()", + "label": "requireServiceToken()", "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L166", - "community": 84, - "norm_label": "deleteworkspacefile()", - "id": "controller_prometheus_controller_deleteworkspacefile" + "source_file": "main/controller/authentication_controller.py", + "source_location": "L245", + "community": 58, + "norm_label": "requireservicetoken()", + "id": "controller_authentication_controller_requireservicetoken" }, { - "label": "downloadWorkspaceFile()", + "label": "verifyServiceKey()", "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L179", - "community": 84, - "norm_label": "downloadworkspacefile()", - "id": "controller_prometheus_controller_downloadworkspacefile" + "source_file": "main/controller/authentication_controller.py", + "source_location": "L277", + "community": 58, + "norm_label": "verifyservicekey()", + "id": "controller_authentication_controller_verifyservicekey" }, { - "label": "listWorkspaceFiles()", + "label": "_serviceToken()", "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L195", - "community": 84, - "norm_label": "listworkspacefiles()", - "id": "controller_prometheus_controller_listworkspacefiles" + "source_file": "main/utils/roles.py", + "source_location": "L63", + "community": 590, + "norm_label": "_servicetoken()", + "id": "utils_roles_servicetoken" }, { - "label": "PrometheusMemory", + "label": "_introspectUrl()", "file_type": "code", - "source_file": "main/models/memory.py", - "source_location": "L8", - "community": 140, - "norm_label": "prometheusmemory", - "id": "models_memory_prometheusmemory" + "source_file": "main/utils/roles.py", + "source_location": "L69", + "community": 590, + "norm_label": "_introspecturl()", + "id": "utils_roles_introspecturl" }, { - "label": "prometheus.py", + "label": "_extractCredential()", "file_type": "code", - "source_file": "main/models/prometheus.py", - "source_location": "L1", - "community": 61, - "norm_label": "prometheus.py", - "id": "main_models_prometheus_py" + "source_file": "main/utils/roles.py", + "source_location": "L75", + "community": 590, + "norm_label": "_extractcredential()", + "id": "utils_roles_extractcredential" }, { - "label": "PrometheusSession", + "label": "introspectUser()", "file_type": "code", - "source_file": "main/models/prometheus.py", - "source_location": "L7", - "community": 61, - "norm_label": "prometheussession", - "id": "models_prometheus_prometheussession" + "source_file": "main/utils/roles.py", + "source_location": "L92", + "community": 590, + "norm_label": "introspectuser()", + "id": "utils_roles_introspectuser" }, { - "label": "PrometheusSandbox", + "label": "PrometheusSettings", "file_type": "code", - "source_file": "main/models/sandbox.py", - "source_location": "L5", - "community": 4, - "norm_label": "prometheussandbox", - "id": "models_sandbox_prometheussandbox" + "source_file": "config.py", + "source_location": "L59", + "community": 102, + "norm_label": "prometheussettings", + "id": "server_config_prometheussettings" }, { - "label": "prometheus_service.py", + "label": "agent.py", "file_type": "code", - "source_file": "main/service/prometheus_service.py", + "source_file": "main/app/prometheus/agent.py", "source_location": "L1", - "community": 536, - "norm_label": "prometheus_service.py", - "id": "main_service_prometheus_service_py" + "community": 116, + "norm_label": "agent.py", + "id": "main_app_prometheus_agent_py" }, { - "label": "memoryMaintenance()", + "label": "safeFilter()", "file_type": "code", - "source_file": "main/service/prometheus_service.py", - "source_location": "L23", - "community": 584, - "norm_label": "memorymaintenance()", - "id": "service_prometheus_service_memorymaintenance" + "source_file": "main/app/prometheus/agent.py", + "source_location": "L25", + "community": 116, + "norm_label": "safefilter()", + "id": "prometheus_agent_safefilter" }, { - "label": "PrometheusService", + "label": "persistEvent()", "file_type": "code", - "source_file": "main/service/prometheus_service.py", - "source_location": "L65", - "community": 140, - "norm_label": "prometheusservice", - "id": "service_prometheus_service_prometheusservice" + "source_file": "main/app/prometheus/agent.py", + "source_location": "L31", + "community": 116, + "norm_label": "persistevent()", + "id": "prometheus_agent_persistevent" }, { - "label": "initialize()", + "label": "getClient()", "file_type": "code", - "source_file": "main/service/prometheus_service.py", - "source_location": "L67", - "community": 536, - "norm_label": "initialize()", - "id": "service_prometheus_service_initialize" + "source_file": "main/app/prometheus/agent.py", + "source_location": "L45", + "community": 116, + "norm_label": "getclient()", + "id": "prometheus_agent_getclient" }, { - "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": "Prometheus", + "file_type": "code", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L208", + "community": 116, + "norm_label": "prometheus", + "id": "prometheus_agent_prometheus" }, { - "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": ".__init__()", + "file_type": "code", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L209", + "community": 116, + "norm_label": ".__init__()", + "id": "prometheus_agent_prometheus_init" }, { - "label": "code: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": "buildSystemPrompt()", + "file_type": "code", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L213", + "community": 116, + "norm_label": "buildsystemprompt()", + "id": "prometheus_agent_buildsystemprompt" }, { - "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": ".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: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": ".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": "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": "chat.py", + "file_type": "code", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L1", + "community": 125, + "norm_label": "chat.py", + "id": "main_app_prometheus_chat_py" }, { - "label": "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": "PrometheusChatManager", + "file_type": "code", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L13", + "community": 112, + "norm_label": "prometheuschatmanager", + "id": "prometheus_chat_prometheuschatmanager" }, { - "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": "getUserSessions()", + "file_type": "code", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L15", + "community": 125, + "norm_label": "getusersessions()", + "id": "prometheus_chat_getusersessions" }, { - "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": "createSession()", + "file_type": "code", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L33", + "community": 125, + "norm_label": "createsession()", + "id": "prometheus_chat_createsession" }, { - "label": "Usage", - "file_type": "document", - "source_file": "docs/authentication.md", - "source_location": "L9", - "community": 41, - "norm_label": "usage", - "id": "docs_authentication_usage" + "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": "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": "appendHistory()", + "file_type": "code", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L52", + "community": 125, + "norm_label": "appendhistory()", + "id": "prometheus_chat_appendhistory" }, { - "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": "getHistory()", + "file_type": "code", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L71", + "community": 125, + "norm_label": "gethistory()", + "id": "prometheus_chat_gethistory" }, { - "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": "deleteSession()", + "file_type": "code", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L92", + "community": 125, + "norm_label": "deletesession()", + "id": "prometheus_chat_deletesession" }, { - "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": "verifySessionOwnership()", + "file_type": "code", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L106", + "community": 125, + "norm_label": "verifysessionownership()", + "id": "prometheus_chat_verifysessionownership" }, { - "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": "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": "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": "getTokenizer()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L35", + "community": 80, + "norm_label": "gettokenizer()", + "id": "prometheus_compact_gettokenizer" }, { - "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": "countTokens()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L47", + "community": 80, + "norm_label": "counttokens()", + "id": "prometheus_compact_counttokens" }, { - "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": "getStocksFieldsUrl()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L64", + "community": 80, + "norm_label": "getstocksfieldsurl()", + "id": "prometheus_compact_getstocksfieldsurl" }, { - "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": "isTransientFieldsError()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L68", + "community": 80, + "norm_label": "istransientfieldserror()", + "id": "prometheus_compact_istransientfieldserror" }, { - "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": "fetchFieldsPayload()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L83", + "community": 80, + "norm_label": "fetchfieldspayload()", + "id": "prometheus_compact_fetchfieldspayload" }, { - "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": "loadFieldData()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L89", + "community": 80, + "norm_label": "loadfielddata()", + "id": "prometheus_compact_loadfielddata" }, { - "label": "Brazilian Stocks Market Scraper", - "file_type": "document", - "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": "getMetricRegex()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L105", + "community": 80, + "norm_label": "getmetricregex()", + "id": "prometheus_compact_getmetricregex" }, { - "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": "dedup()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L119", + "community": 80, + "norm_label": "dedup()", + "id": "prometheus_compact_dedup" }, { - "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": "extractTickers()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L123", + "community": 80, + "norm_label": "extracttickers()", + "id": "prometheus_compact_extracttickers" }, { - "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": "extractMetrics()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L127", + "community": 80, + "norm_label": "extractmetrics()", + "id": "prometheus_compact_extractmetrics" }, { - "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": "extractDecisions()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L131", + "community": 80, + "norm_label": "extractdecisions()", + "id": "prometheus_compact_extractdecisions" }, { - "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": "extractSnapshots()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L145", + "community": 80, + "norm_label": "extractsnapshots()", + "id": "prometheus_compact_extractsnapshots" }, { - "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": "extractToolCalls()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L158", + "community": 80, + "norm_label": "extracttoolcalls()", + "id": "prometheus_compact_extracttoolcalls" }, { - "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": "buildSummary()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L174", + "community": 80, + "norm_label": "buildsummary()", + "id": "prometheus_compact_buildsummary" }, { - "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": "PrometheusCompactor", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L195", + "community": 80, + "norm_label": "prometheuscompactor", + "id": "prometheus_compact_prometheuscompactor" }, { - "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": ".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": "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": ".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": "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": ".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": "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": ".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": "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": ".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": "License", - "file_type": "document", - "source_file": "docs/scraper_b3.md", - "source_location": "L131", - "community": 83, - "norm_label": "license", - "id": "docs_scraper_b3_license" + "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": "SWARMS.md", - "file_type": "document", - "source_file": "SWARMS.md", + "label": "mcp.py", + "file_type": "code", + "source_file": "main/app/prometheus/mcp.py", "source_location": "L1", - "community": 263, - "norm_label": "swarms.md", - "id": "swarms_md" + "community": 105, + "norm_label": "mcp.py", + "id": "main_app_prometheus_mcp_py" }, { - "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": "buildClient()", + "file_type": "code", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L21", + "community": 105, + "norm_label": "buildclient()", + "id": "prometheus_mcp_buildclient" }, { - "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": "connect()", + "file_type": "code", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L29", + "community": 105, + "norm_label": "connect()", + "id": "prometheus_mcp_connect" }, { - "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": "MCPClientPool", + "file_type": "code", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L36", + "community": 105, + "norm_label": "mcpclientpool", + "id": "prometheus_mcp_mcpclientpool" }, { - "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": ".__init__()", + "file_type": "code", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L37", + "community": 105, + "norm_label": ".__init__()", + "id": "prometheus_mcp_mcpclientpool_init" }, { - "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": ".initialize()", + "file_type": "code", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L42", + "community": 105, + "norm_label": ".initialize()", + "id": "prometheus_mcp_mcpclientpool_initialize" }, { - "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": ".getClients()", + "file_type": "code", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L56", + "community": 105, + "norm_label": ".getclients()", + "id": "prometheus_mcp_mcpclientpool_getclients" }, { - "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": ".healthCheck()", + "file_type": "code", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L63", + "community": 105, + "norm_label": ".healthcheck()", + "id": "prometheus_mcp_mcpclientpool_healthcheck" }, { - "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": ".reconnect()", + "file_type": "code", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L75", + "community": 105, + "norm_label": ".reconnect()", + "id": "prometheus_mcp_mcpclientpool_reconnect" }, { - "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": ".close()", + "file_type": "code", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L90", + "community": 105, + "norm_label": ".close()", + "id": "prometheus_mcp_mcpclientpool_close" }, { - "label": "Prometheus", - "file_type": "document", - "source_file": "docs/prometheus.md", + "label": "memory.py", + "file_type": "code", + "source_file": "main/app/prometheus/memory.py", "source_location": "L1", - "community": 156, - "norm_label": "prometheus", - "id": "docs_prometheus_prometheus" - }, - { - "label": "Usage", - "file_type": "document", - "source_file": "docs/prometheus.md", - "source_location": "L9", - "community": 156, - "norm_label": "usage", - "id": "docs_prometheus_usage" + "community": 53, + "norm_label": "memory.py", + "id": "main_app_prometheus_memory_py" }, { - "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": "getMatrix()", + "file_type": "code", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L35", + "community": 53, + "norm_label": "getmatrix()", + "id": "prometheus_memory_getmatrix" }, { - "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": "invalidateUser()", + "file_type": "code", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L53", + "community": 53, + "norm_label": "invalidateuser()", + "id": "prometheus_memory_invalidateuser" }, { - "label": "Workflow", - "file_type": "document", - "source_file": "docs/prometheus.md", - "source_location": "L55", - "community": 156, - "norm_label": "workflow", - "id": "docs_prometheus_workflow" + "label": "clearAll()", + "file_type": "code", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L57", + "community": 53, + "norm_label": "clearall()", + "id": "prometheus_memory_clearall" }, { - "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": "MemoryCandidate", + "file_type": "code", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L64", + "community": 564, + "norm_label": "memorycandidate", + "id": "prometheus_memory_memorycandidate" }, { - "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": "newTokenCache()", + "file_type": "code", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L90", + "community": 53, + "norm_label": "newtokencache()", + "id": "prometheus_memory_newtokencache" }, { - "label": "License", - "file_type": "document", - "source_file": "docs/prometheus.md", - "source_location": "L74", - "community": 156, - "norm_label": "license", - "id": "docs_prometheus_license" + "label": "getClient()", + "file_type": "code", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L97", + "community": 53, + "norm_label": "getclient()", + "id": "prometheus_memory_getclient" }, { - "label": "PONYTAIL.md", - "file_type": "document", - "source_file": "PONYTAIL.md", - "source_location": "L1", - "community": 509, - "norm_label": "ponytail.md", - "id": "ponytail_md" + "label": "minMax()", + "file_type": "code", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L104", + "community": 53, + "norm_label": "minmax()", + "id": "prometheus_memory_minmax" }, { - "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": "normalizeKey()", + "file_type": "code", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L113", + "community": 53, + "norm_label": "normalizekey()", + "id": "prometheus_memory_normalizekey" }, { - "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": "findSimilarKey()", + "file_type": "code", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L120", + "community": 53, + "norm_label": "findsimilarkey()", + "id": "prometheus_memory_findsimilarkey" }, { - "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": "scoreRow()", + "file_type": "code", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L140", + "community": 53, + "norm_label": "scorerow()", + "id": "prometheus_memory_scorerow" }, { - "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": "scoreRecency()", + "file_type": "code", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L152", + "community": 53, + "norm_label": "scorerecency()", + "id": "prometheus_memory_scorerecency" }, { - "label": "Refused", - "file_type": "document", - "source_file": "PONYTAIL.md", - "source_location": "L78", - "community": 509, - "norm_label": "refused", - "id": "server_ponytail_refused" + "label": "scoreCandidates()", + "file_type": "code", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L162", + "community": 53, + "norm_label": "scorecandidates()", + "id": "prometheus_memory_scorecandidates" }, { - "label": "getDeviceName()", + "label": "sumTokens()", "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/memory.py", + "source_location": "L179", + "community": 53, + "norm_label": "sumtokens()", + "id": "prometheus_memory_sumtokens" }, { - "label": "walk()", + "label": "PrometheusMemory", "file_type": "code", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L46", - "community": 194, - "norm_label": "walk()", - "id": "stocks_api_compress_walk" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L194", + "community": 140, + "norm_label": "prometheusmemory", + "id": "prometheus_memory_prometheusmemory" }, { - "label": "toColumnar()", + "label": "getMemoryLimit()", "file_type": "code", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L75", - "community": 194, - "norm_label": "tocolumnar()", - "id": "stocks_api_compress_tocolumnar" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L196", + "community": 53, + "norm_label": "getmemorylimit()", + "id": "prometheus_memory_getmemorylimit" }, { - "label": "fixHeaders()", + "label": "countMemories()", "file_type": "code", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L84", - "community": 194, - "norm_label": "fixheaders()", - "id": "stocks_api_compress_fixheaders" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L202", + "community": 53, + "norm_label": "countmemories()", + "id": "prometheus_memory_countmemories" }, { - "label": "StocksQueryManager", + "label": "touch()", "file_type": "code", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L54", - "community": 63, - "norm_label": "stocksquerymanager", - "id": "stocks_api_query_stocksquerymanager" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L211", + "community": 53, + "norm_label": "touch()", + "id": "prometheus_memory_touch" }, { - "label": ".__init__()", + "label": "upsertMemory()", "file_type": "code", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L55", - "community": 63, - "norm_label": ".__init__()", - "id": "stocks_api_query_stocksquerymanager_init" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L222", + "community": 53, + "norm_label": "upsertmemory()", + "id": "prometheus_memory_upsertmemory" }, { - "label": ".baseFrame()", + "label": "search()", "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": "L286", + "community": 53, + "norm_label": "search()", + "id": "prometheus_memory_search" }, { - "label": ".finalize()", + "label": "fullTextSearch()", "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": "L349", + "community": 53, + "norm_label": "fulltextsearch()", + "id": "prometheus_memory_fulltextsearch" }, { - "label": ".deserializeJsonColumns()", + "label": "getUserMemories()", "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": "L407", + "community": 27, + "norm_label": "getusermemories()", + "id": "prometheus_memory_getusermemories" }, { - "label": ".filterBySearchTerms()", + "label": "deleteMemory()", "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": "L432", + "community": 53, + "norm_label": "deletememory()", + "id": "prometheus_memory_deletememory" }, { - "label": ".queryHistorical()", + "label": "extract()", "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": "L450", + "community": 53, + "norm_label": "extract()", + "id": "prometheus_memory_extract" }, { - "label": ".queryFundamental()", + "label": "sandbox.py", "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/sandbox.py", + "source_location": "L1", + "community": 69, + "norm_label": "sandbox.py", + "id": "main_app_prometheus_sandbox_py" }, { - "label": ".queryCotations()", + "label": "lockFor()", "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/sandbox.py", + "source_location": "L18", + "community": 69, + "norm_label": "lockfor()", + "id": "prometheus_sandbox_lockfor" }, { - "label": ".queryLiveCotation()", + "label": "getClient()", "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" + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L24", + "community": 69, + "norm_label": "getclient()", + "id": "prometheus_sandbox_getclient" }, { - "label": "getHistoricalFields()", + "label": "hostPath()", "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/sandbox.py", + "source_location": "L32", + "community": 69, + "norm_label": "hostpath()", + "id": "prometheus_sandbox_hostpath" }, { - "label": "getFundamentalColumns()", + "label": "sandboxPath()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L93", - "community": 80, - "norm_label": "getfundamentalcolumns()", - "id": "prometheus_compact_getfundamentalcolumns" + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L46", + "community": 69, + "norm_label": "sandboxpath()", + "id": "prometheus_sandbox_sandboxpath" }, { - "label": "invalidateFieldData()", + "label": "SandboxManager", "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/sandbox.py", + "source_location": "L51", + "community": 2, + "norm_label": "sandboxmanager", + "id": "prometheus_sandbox_sandboxmanager" }, { - "label": "matrixKey()", + "label": "create()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L31", - "community": 621, - "norm_label": "matrixkey()", - "id": "prometheus_memory_matrixkey" + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L53", + "community": 69, + "norm_label": "create()", + "id": "prometheus_sandbox_create" }, { - "label": "matrixUserTag()", + "label": "destroy()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L38", - "community": 621, - "norm_label": "matrixusertag()", - "id": "prometheus_memory_matrixusertag" + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L69", + "community": 69, + "norm_label": "destroy()", + "id": "prometheus_sandbox_destroy" }, { - "label": "countTokensCached()", + "label": "getOrCreate()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L450", - "community": 53, - "norm_label": "counttokenscached()", - "id": "prometheus_memory_counttokenscached" + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L81", + "community": 69, + "norm_label": "getorcreate()", + "id": "prometheus_sandbox_getorcreate" }, { - "label": "sync_cache()", + "label": "execute()", "file_type": "code", - "source_file": "main/app/stocks_api/sync_cache.py", - "source_location": "L13", - "community": 562, - "norm_label": "sync_cache()", - "id": "stocks_api_sync_cache_sync_cache" + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L128", + "community": 69, + "norm_label": "execute()", + "id": "prometheus_sandbox_execute" }, { - "label": "write_bytes()", + "label": "read_file()", "file_type": "code", "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L194", + "source_location": "L164", "community": 69, - "norm_label": "write_bytes()", - "id": "prometheus_sandbox_write_bytes" + "norm_label": "read_file()", + "id": "prometheus_sandbox_read_file" }, { - "label": "ensureFastmcp()", + "label": "write_file()", "file_type": "code", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L10", - "community": 590, - "norm_label": "ensurefastmcp()", - "id": "prometheus_mcp_ensurefastmcp" + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L171", + "community": 69, + "norm_label": "write_file()", + "id": "prometheus_sandbox_write_file" }, { - "label": "getMatrixAsync()", + "label": "list_files()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "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": 621, - "norm_label": "getmatrixasync()", - "id": "prometheus_memory_getmatrixasync" + "community": 210, + "norm_label": ".publish()", + "id": "prometheus_stream_bus_streambus_publish" }, { - "label": "invalidateUserAsync()", + "label": ".subscribe()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L55", - "community": 53, - "norm_label": "invalidateuserasync()", - "id": "prometheus_memory_invalidateuserasync" + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L46", + "community": 210, + "norm_label": ".subscribe()", + "id": "prometheus_stream_bus_streambus_subscribe" }, { - "label": "clearAllAsync()", + "label": ".unsubscribe()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/prometheus/stream_bus.py", "source_location": "L59", - "community": 53, - "norm_label": "clearallasync()", - "id": "prometheus_memory_clearallasync" + "community": 210, + "norm_label": ".unsubscribe()", + "id": "prometheus_stream_bus_streambus_unsubscribe" }, { - "label": "upsertMemoryAsync()", + "label": ".startRun()", "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/stream_bus.py", + "source_location": "L64", + "community": 210, + "norm_label": ".startrun()", + "id": "prometheus_stream_bus_streambus_startrun" }, { - "label": "searchAsync()", + "label": ".eventGenerator()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L333", - "community": 104, - "norm_label": "searchasync()", - "id": "prometheus_memory_searchasync" + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L86", + "community": 210, + "norm_label": ".eventgenerator()", + "id": "prometheus_stream_bus_streambus_eventgenerator" }, { - "label": "deleteMemoryAsync()", + "label": ".streamResponse()", "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/stream_bus.py", + "source_location": "L109", + "community": 210, + "norm_label": ".streamresponse()", + "id": "prometheus_stream_bus_streambus_streamresponse" }, { - "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": ".forward()", + "file_type": "code", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L112", + "community": 210, + "norm_label": ".forward()", + "id": "prometheus_stream_bus_streambus_forward" }, { - "label": "Store a memory about the user's preferences, analysis results, or feedback.", - "file_type": "rationale", + "label": "tools.py", + "file_type": "code", "source_file": "main/app/prometheus/tools.py", - "source_location": "L50", - "community": 528, - "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", - "id": "prometheus_tools_rationale_50" + "source_location": "L1", + "community": 521, + "norm_label": "tools.py", + "id": "main_app_prometheus_tools_py" }, { - "label": "Execute Python code in an isolated sandbox. Use for quantitative analysis,", - "file_type": "rationale", + "label": "search_memory()", + "file_type": "code", "source_file": "main/app/prometheus/tools.py", - "source_location": "L91", - "community": 546, - "norm_label": "execute python code in an isolated sandbox. use for quantitative analysis,", - "id": "prometheus_tools_rationale_91" + "source_location": "L20", + "community": 136, + "norm_label": "search_memory()", + "id": "prometheus_tools_search_memory" }, { - "label": "Read a file from the workspace. Args: path: Path to the file (e.", - "file_type": "rationale", + "label": "save_memory()", + "file_type": "code", "source_file": "main/app/prometheus/tools.py", - "source_location": "L112", - "community": 573, - "norm_label": "read a file from the workspace. args: path: path to the file (e.", - "id": "prometheus_tools_rationale_112" + "source_location": "L51", + "community": 190, + "norm_label": "save_memory()", + "id": "prometheus_tools_save_memory" }, { - "label": "Write a file to the workspace. Use this to save data files (CSV, JSON, scri", - "file_type": "rationale", + "label": "execute_code()", + "file_type": "code", "source_file": "main/app/prometheus/tools.py", - "source_location": "L126", - "community": 525, - "norm_label": "write a file to the workspace. use this to save data files (csv, json, scri", - "id": "prometheus_tools_rationale_126" + "source_location": "L93", + "community": 221, + "norm_label": "execute_code()", + "id": "prometheus_tools_execute_code" }, { - "label": "List files in the workspace directory. Args: path: Directory pat", - "file_type": "rationale", + "label": "read_file()", + "file_type": "code", "source_file": "main/app/prometheus/tools.py", - "source_location": "L142", - "community": 571, - "norm_label": "list files in the workspace directory. args: path: directory pat", - "id": "prometheus_tools_rationale_142" + "source_location": "L114", + "community": 538, + "norm_label": "read_file()", + "id": "prometheus_tools_read_file" }, { - "label": "Get a download link for a workspace file to share with the user. Use this", - "file_type": "rationale", + "label": "write_file()", + "file_type": "code", "source_file": "main/app/prometheus/tools.py", - "source_location": "L155", + "source_location": "L128", "community": 525, - "norm_label": "get a download link for a workspace file to share with the user. use this", - "id": "prometheus_tools_rationale_155" + "norm_label": "write_file()", + "id": "prometheus_tools_write_file" }, { - "label": "Write-Fix()", + "label": "list_files()", "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": "L144", + "community": 525, + "norm_label": "list_files()", + "id": "prometheus_tools_list_files" }, { - "label": "saveMessage()", + "label": "serve_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": "L157", + "community": 525, + "norm_label": "serve_file()", + "id": "prometheus_tools_serve_file" }, { - "label": "saveLoopEvent()", + "label": "dispatchToolCall()", "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": "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", - "community": 152, + "source_location": "L21", + "community": 136, "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": 528, + "source_location": "L52", + "community": 190, "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", - "community": 546, + "source_location": "L94", + "community": 221, "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": 573, + "source_location": "L115", + "community": 538, "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", + "source_location": "L129", "community": 525, "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", + "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", + "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": 21, + "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": 81, - "norm_label": "jsonbytesresponse", - "id": "controller_stocksapi_controller_jsonbytesresponse" + "source_file": "main/app/prometheus/vector.py", + "source_location": "L10", + "community": 21, + "norm_label": "normalizerows()", + "id": "prometheus_vector_normalizerows" }, { - "label": "FastAPIResponse", + "label": "embed()", "file_type": "code", - "source_file": "", - "source_location": "", - "community": 81, - "norm_label": "fastapiresponse", - "id": "fastapiresponse" + "source_file": "main/app/prometheus/vector.py", + "source_location": "L15", + "community": 53, + "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": 81, - "norm_label": ".render()", - "id": "controller_stocksapi_controller_jsonbytesresponse_render" + "source_file": "main/app/prometheus/vector.py", + "source_location": "L19", + "community": 21, + "norm_label": "decodeembeddings()", + "id": "prometheus_vector_decodeembeddings" }, { - "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": "batchCosineSimilarity()", + "file_type": "code", + "source_file": "main/app/prometheus/vector.py", + "source_location": "L41", + "community": 21, + "norm_label": "batchcosinesimilarity()", + "id": "prometheus_vector_batchcosinesimilarity" }, { - "label": "matrix_cache.py", + "label": "contentHash()", "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": "L51", + "community": 53, + "norm_label": "contenthash()", + "id": "prometheus_vector_contenthash" }, { - "label": "buildKey()", + "label": "toVectorString()", "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/app/prometheus/vector.py", + "source_location": "L55", + "community": 21, + "norm_label": "tovectorstring()", + "id": "prometheus_vector_tovectorstring" }, { - "label": "runAwait()", + "label": "fromVectorString()", "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/app/prometheus/vector.py", + "source_location": "L59", + "community": 21, + "norm_label": "fromvectorstring()", + "id": "prometheus_vector_fromvectorstring" }, { - "label": "getMatrix()", + "label": "getRelevanceScore()", "file_type": "code", - "source_file": "main/app/prometheus/matrix_cache.py", - "source_location": "L32", - "community": 526, - "norm_label": "getmatrix()", - "id": "prometheus_matrix_cache_getmatrix" + "source_file": "main/app/prometheus/vector.py", + "source_location": "L71", + "community": 27, + "norm_label": "getrelevancescore()", + "id": "prometheus_vector_getrelevancescore" }, { - "label": "invalidateUser()", + "label": "prometheus_controller.py", "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": "L1", + "community": 84, + "norm_label": "prometheus_controller.py", + "id": "main_controller_prometheus_controller_py" }, { - "label": "clearAll()", + "label": "verifySessionOwnsership()", "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": "L26", + "community": 84, + "norm_label": "verifysessionownsership()", + "id": "controller_prometheus_controller_verifysessionownsership" }, { - "label": "bench_memory_vector.py", + "label": "health()", "file_type": "code", - "source_file": "bench/bench_memory_vector.py", - "source_location": "L1", - "community": 104, - "norm_label": "bench_memory_vector.py", - "id": "bench_bench_memory_vector_py" + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L32", + "community": 84, + "norm_label": "health()", + "id": "controller_prometheus_controller_health" }, { - "label": "benchOnce()", + "label": "getSessions()", "file_type": "code", - "source_file": "bench/bench_memory_vector.py", - "source_location": "L14", - "community": 104, - "norm_label": "benchonce()", - "id": "bench_bench_memory_vector_benchonce" + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L37", + "community": 84, + "norm_label": "getsessions()", + "id": "controller_prometheus_controller_getsessions" }, { - "label": "main()", + "label": "updateSessionTitle()", "file_type": "code", - "source_file": "bench/bench_memory_vector.py", - "source_location": "L41", - "community": 104, - "norm_label": "main()", - "id": "bench_bench_memory_vector_main" + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L56", + "community": 84, + "norm_label": "updatesessiontitle()", + "id": "controller_prometheus_controller_updatesessiontitle" }, { - "label": "20260912T190329Z-baseline.json", + "label": "getHistory()", "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": "L71", + "community": 84, + "norm_label": "gethistory()", + "id": "controller_prometheus_controller_gethistory" }, { - "label": "label", + "label": "deleteSession()", "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": "L90", + "community": 84, + "norm_label": "deletesession()", + "id": "controller_prometheus_controller_deletesession" }, { - "label": "at", + "label": "chat_stream()", "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": "L103", + "community": 84, + "norm_label": "chat_stream()", + "id": "controller_prometheus_controller_chat_stream" }, { - "label": "rows", + "label": "resumeChatStream()", "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": "L154", + "community": 84, + "norm_label": "resumechatstream()", + "id": "controller_prometheus_controller_resumechatstream" }, { - "label": "20260912T192904Z-baseline.json", + "label": "deleteWorkspaceFile()", "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/controller/prometheus_controller.py", + "source_location": "L166", + "community": 84, + "norm_label": "deleteworkspacefile()", + "id": "controller_prometheus_controller_deleteworkspacefile" }, { - "label": "label", + "label": "downloadWorkspaceFile()", "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/controller/prometheus_controller.py", + "source_location": "L179", + "community": 84, + "norm_label": "downloadworkspacefile()", + "id": "controller_prometheus_controller_downloadworkspacefile" }, { - "label": "at", + "label": "listWorkspaceFiles()", "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/controller/prometheus_controller.py", + "source_location": "L195", + "community": 84, + "norm_label": "listworkspacefiles()", + "id": "controller_prometheus_controller_listworkspacefiles" }, { - "label": "rows", + "label": "PrometheusMemory", "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/memory.py", + "source_location": "L8", + "community": 140, + "norm_label": "prometheusmemory", + "id": "models_memory_prometheusmemory" }, { - "label": "backfill_normalize_embeddings.py", + "label": "prometheus.py", "file_type": "code", - "source_file": "scripts/backfill_normalize_embeddings.py", + "source_file": "main/models/prometheus.py", "source_location": "L1", - "community": 526, - "norm_label": "backfill_normalize_embeddings.py", - "id": "scripts_backfill_normalize_embeddings_py" + "community": 61, + "norm_label": "prometheus.py", + "id": "main_models_prometheus_py" }, { - "label": "main()", + "label": "PrometheusSession", "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/models/prometheus.py", + "source_location": "L7", + "community": 61, + "norm_label": "prometheussession", + "id": "models_prometheus_prometheussession" }, { - "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": "PrometheusSandbox", + "file_type": "code", + "source_file": "main/models/sandbox.py", + "source_location": "L5", + "community": 4, + "norm_label": "prometheussandbox", + "id": "models_sandbox_prometheussandbox" }, { - "label": "vector-scaleup-runbook.md", - "file_type": "document", - "source_file": "docs/vector-scaleup-runbook.md", + "label": "prometheus_service.py", + "file_type": "code", + "source_file": "main/service/prometheus_service.py", "source_location": "L1", - "community": 492, - "norm_label": "vector-scaleup-runbook.md", - "id": "docs_vector_scaleup_runbook_md" + "community": 222, + "norm_label": "prometheus_service.py", + "id": "main_service_prometheus_service_py" }, { - "label": "Vector Scale-Up Runbook", - "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" + "label": "memoryMaintenance()", + "file_type": "code", + "source_file": "main/service/prometheus_service.py", + "source_location": "L23", + "community": 503, + "norm_label": "memorymaintenance()", + "id": "service_prometheus_service_memorymaintenance" }, { - "label": "Baseline (lane 4)", - "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" + "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": "Move triggers (any one fires the migration)", + "label": "initialize()", + "file_type": "code", + "source_file": "main/service/prometheus_service.py", + "source_location": "L67", + "community": 222, + "norm_label": "initialize()", + "id": "service_prometheus_service_initialize" + }, + { + "label": "Upgrade to Developer Starter", "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": "L41", + "community": 23, + "norm_label": "upgrade to developer starter", + "id": "docs_user_upgrade_to_developer_starter" }, { - "label": "Options", + "label": "Upgrade to Developer Enterprise", "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": "L47", + "community": 23, + "norm_label": "upgrade to developer enterprise", + "id": "docs_user_upgrade_to_developer_enterprise" }, { - "label": "Export recipe", + "label": "code:bash (curl -X DELETE -H \"Authorization: Bearer \" http://loc)", "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": "L116", + "community": 23, + "norm_label": "code:bash (curl -x delete -h \"authorization: bearer \" http://loc)", + "id": "docs_user_codeblock_11" }, { - "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": "L120", + "community": 23, + "norm_label": "code:json ({)", + "id": "docs_user_codeblock_12" }, { - "label": "Lane 1: Normalized Embeddings + Dot-Product Search Implementation Plan", + "label": "code:bash (curl -X POST -H \"Authorization: Bearer \" http://local)", "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": "L129", + "community": 23, + "norm_label": "code:bash (curl -x post -h \"authorization: bearer \" http://local)", + "id": "docs_user_codeblock_13" }, { - "label": "Global Constraints", + "label": "code:json ({)", "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": "L133", + "community": 23, + "norm_label": "code:json ({)", + "id": "docs_user_codeblock_14" }, { - "label": "Task 1: Normalize on encode + row-normalize helper", + "label": "Permission System", "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": "L140", + "community": 23, + "norm_label": "permission system", + "id": "docs_user_permission_system" }, { - "label": "code:python (import numpy as np)", + "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": "L37", - "community": 499, - "norm_label": "code:python (import numpy as np)", - "id": "plans_2026_09_12_lane1_vector_normalize_codeblock_1" + "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": "code:python (def normalizeRows(matrix: np.ndarray) -> np.ndarray:)", + "label": "code:mermaid (graph TD)", "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/user.md", + "source_location": "L158", + "community": 23, + "norm_label": "code:mermaid (graph td)", + "id": "docs_user_codeblock_16" }, { - "label": "code:bash (git add main/app/prometheus/vector.py tests/test_vector_norm)", + "label": "Usage", "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": "L9", + "community": 41, + "norm_label": "usage", + "id": "docs_authentication_usage" }, { - "label": "Task 2: Backfill existing rows to unit norm", + "label": "Profile (Me)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane1-vector-normalize.md", + "source_file": "docs/authentication.md", + "source_location": "L77", + "community": 41, + "norm_label": "profile (me)", + "id": "docs_authentication_profile_me" + }, + { + "label": "code:bash (# Redirect your browser to:)", + "file_type": "document", + "source_file": "docs/authentication.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" + "community": 41, + "norm_label": "code:bash (# redirect your browser to:)", + "id": "docs_authentication_codeblock_7" }, { - "label": "code:python (\"\"\"One-shot: renormalize stored embeddings to unit norm. Usa)", + "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": "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": "L104", + "community": 41, + "norm_label": "code:bash (get http://localhost:3200/auth/google)", + "id": "docs_authentication_codeblock_8" }, { - "label": "code:bash (git add scripts/backfill_normalize_embeddings.py)", + "label": "Google Callback", "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": "L108", + "community": 41, + "norm_label": "google callback", + "id": "docs_authentication_google_callback" }, { - "label": "2026-09-12-lane2-memory-query-path.md", + "label": "Device Detection", "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": "L130", + "community": 41, + "norm_label": "device detection", + "id": "docs_authentication_device_detection" }, { - "label": "Lane 2: Memory Query-Path Fix Implementation Plan", + "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": "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": "L144", + "community": 41, + "norm_label": "session management", + "id": "docs_authentication_session_management" }, { - "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/authentication.md", + "source_location": "L156", + "community": 41, + "norm_label": "code:mermaid (graph td)", + "id": "docs_authentication_codeblock_9" }, { - "label": "Task 1: Two-phase candidate load with deferred BLOBs", + "label": "code:mermaid (graph TD)", "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/orunmila.md", + "source_location": "L55", + "community": 490, + "norm_label": "code:mermaid (graph td)", + "id": "docs_orunmila_codeblock_3" }, { - "label": "code:python (def test_search_defersEmbeddingBlob(db):)", + "label": "API Key Verification", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", + "source_file": "docs/stocks_api.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" + "community": 65, + "norm_label": "api key verification", + "id": "docs_stocks_api_api_key_verification" }, { - "label": "code:python (from contextlib import contextmanager)", + "label": "Key Management", "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": "L45", + "community": 65, + "norm_label": "key management", + "id": "docs_stocks_api_key_management" }, { - "label": "code:python (from sqlalchemy.orm import defer)", + "label": "code:json ({)", "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/stocks_api.md", + "source_location": "L94", + "community": 65, + "norm_label": "code:json ({)", + "id": "docs_stocks_api_codeblock_9" }, { - "label": "code:bash (git add main/app/prometheus/memory.py tests/test_memory_sear)", + "label": "Brazilian Stocks Market Scraper", "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": "L1", + "community": 83, + "norm_label": "brazilian stocks market scraper", + "id": "docs_scraper_b3_brazilian_stocks_market_scraper" }, { - "label": "Task 2: Fuse vector, FULLTEXT and recency scores", + "label": "Usage", "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": "L5", + "community": 83, + "norm_label": "usage", + "id": "docs_scraper_b3_usage" }, { - "label": "code:python (def test_search_fusesFulltextOverVectorOnly(db):)", + "label": "Output Format", "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": "L27", + "community": 83, + "norm_label": "output format", + "id": "docs_scraper_b3_output_format" }, { - "label": "code:python (def minMax(values: list[float]) -> list[float]:)", + "label": "MySQL Table (b3_stocks)", "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": "L29", + "community": 83, + "norm_label": "mysql table (b3_stocks)", + "id": "docs_scraper_b3_mysql_table_b3_stocks" }, { - "label": "code:bash (git add main/app/prometheus/memory.py tests/test_memory_sear)", + "label": "Sample Record", "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": "L38", + "community": 83, + "norm_label": "sample record", + "id": "docs_scraper_b3_sample_record" }, { - "label": "2026-09-12-lane4-vector-bench.md", + "label": "code:json ({)", "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": "L40", + "community": 83, + "norm_label": "code:json ({)", + "id": "docs_scraper_b3_codeblock_2" }, { - "label": "Lane 4: Before/After Bench Implementation Plan", + "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": "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": "L55", + "community": 83, + "norm_label": "xango", + "id": "docs_scraper_b3_xang\u00f4" }, { - "label": "Global Constraints", + "label": "Global Score Function", "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": "L60", + "community": 83, + "norm_label": "global score function", + "id": "docs_scraper_b3_global_score_function" }, { - "label": "Task 1: Bench script with synthetic scale sweep", + "label": "Engines", "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": "L69", + "community": 83, + "norm_label": "engines", + "id": "docs_scraper_b3_engines" }, { - "label": "code:python (import argparse)", + "label": "Profit Quality Gate ($M_{profit}$)", "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": "L71", + "community": 83, + "norm_label": "profit quality gate ($m_{profit}$)", + "id": "docs_scraper_b3_profit_quality_gate_m_profit" }, { - "label": "code:bash (git add bench/bench_memory_vector.py)", + "label": "Fundamental Engine ($\\Phi$)", "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": "L76", + "community": 83, + "norm_label": "fundamental engine ($\\phi$)", + "id": "docs_scraper_b3_fundamental_engine_phi" }, { - "label": "Task 2: Record baseline and post-lane numbers", + "label": "Risk-Quality Engine ($\\Omega$)", "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": "L89", + "community": 83, + "norm_label": "risk-quality engine ($\\omega$)", + "id": "docs_scraper_b3_risk_quality_engine_omega" }, { - "label": "2026-09-12-lane5-vector-scaleup.md", + "label": "Constraint Engine ($\\Lambda$)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane5-vector-scaleup.md", + "source_file": "docs/scraper_b3.md", + "source_location": "L101", + "community": 83, + "norm_label": "constraint engine ($\\lambda$)", + "id": "docs_scraper_b3_constraint_engine_lambda" + }, + { + "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": "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": 523, + "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": 251, + "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": 251, + "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": 251, + "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": 517, + "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": 517, + "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": 517, + "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": 517, + "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": 517, + "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": 21, - "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": 517, + "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": 536, - "norm_label": "registersessioncleanupjobs()", - "id": "service_user_service_registersessioncleanupjobs" + "source_file": "main/app/stocks_api/query.py", + "source_location": "L153", + "community": 517, + "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": 536, - "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": 517, + "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": 517, + "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": 517, + "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": 53, + "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": 615, + "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": 105, + "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": 53, + "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": 136, + "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": 190, + "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": 221, + "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": 538, + "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": 525, + "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": 521, + "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": 525, + "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": 136, + "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": 190, + "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": 221, + "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": 538, + "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": 525, + "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": 525, + "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": 197, + "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": 197, + "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": 197, + "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "\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": "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": "\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": "bench_memory_vector.py", + "file_type": "code", + "source_file": "bench/bench_memory_vector.py", + "source_location": "L1", + "community": 21, + "norm_label": "bench_memory_vector.py", + "id": "bench_bench_memory_vector_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": "benchOnce()", + "file_type": "code", + "source_file": "bench/bench_memory_vector.py", + "source_location": "L14", + "community": 21, + "norm_label": "benchonce()", + "id": "bench_bench_memory_vector_benchonce" }, { - "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": "main()", + "file_type": "code", + "source_file": "bench/bench_memory_vector.py", + "source_location": "L41", + "community": 21, + "norm_label": "main()", + "id": "bench_bench_memory_vector_main" }, { - "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": "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": "\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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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.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": "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": "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": "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: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": "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": "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": "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": "C.4 Barrel impact V6", + "label": "vector-scaleup-runbook.md", "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" + "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": "code:python (from main.models.user import User)", + "label": "Vector Scale-Up Runbook", "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" + "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": "C.5 Kernel leak V7 \u2014 `config.py:126` + `main/utils/roles.py:43`", + "label": "Baseline (lane 4)", "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" + "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": "code:python (engine = create_engine()", + "label": "Move triggers (any one fires the migration)", "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" + "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": "code:python (@staticmethod)", + "label": "Options", "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" + "source_file": "docs/vector-scaleup-runbook.md", + "source_location": "L18", + "community": 492, + "norm_label": "options", + "id": "docs_vector_scaleup_runbook_options" }, { - "label": "Appendix D: Deletion Matrix Drill \u2014 Why STOCKS_API Deleted Breaks SCRAPER Hard", + "label": "Export recipe", "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" + "source_file": "docs/vector-scaleup-runbook.md", + "source_location": "L26", + "community": 492, + "norm_label": "export recipe", + "id": "docs_vector_scaleup_runbook_export_recipe" }, { - "label": "D.1 STOCKS_API deletion simulation", + "label": "2026-09-12-lane1-vector-normalize.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/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": "D.2 Full deletion matrix re-stated with evidence keys", + "label": "Lane 1: Normalized Embeddings + Dot-Product Search Implementation Plan", "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/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": "D.3 God-provider explanation", + "label": "Global Constraints", "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/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": "Appendix E: Shared-Kernel Deep Dive (should-be-kernel vs leak)", + "label": "Task 1: Normalize on encode + row-normalize helper", "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/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": "E.1 Should-be-kernel (keep, but relocate)", + "label": "code:python (import numpy as np)", "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/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": "E.2 Leak (must fix \u2014 app\u2192kernel or kernel\u2192app violation)", + "label": "code:python (def normalizeRows(matrix: np.ndarray) -> np.ndarray:)", "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/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": "E.3 Per-violation target after fix (re-stated from \u00a72.1.6 for audit traceability)", + "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": "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": "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": "Appendix F: CI Gate & Graphify Verification Details", + "label": "Task 2: Backfill existing rows to unit norm", "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": "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.1 import-linter contract (Phase 2)", + "label": "code:python (\"\"\"One-shot: renormalize stored embeddings to unit norm. Usa)", "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": "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:ini (# setup.cfg or .importlinter)", + "label": "code:bash (git add scripts/backfill_normalize_embeddings.py)", "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": "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": "code:toml (# pyproject.toml)", + "label": "2026-09-12-lane2-memory-query-path.md", "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-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": "F.2 ci.ps1 gate insertion", + "label": "Lane 2: Memory Query-Path Fix Implementation Plan", "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-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" }, { - "label": "code:powershell (# ci.ps1 \u2014 insertion)", + "label": "Global Constraints", "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-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": "code:powershell (ruff check --select TID251 . # TID251 = banned-api)", + "label": "Task 1: Two-phase candidate load with deferred BLOBs", "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-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": "F.3 Graphify verification", + "label": "code:python (def test_search_defersEmbeddingBlob(db):)", "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-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": "code:powershell (graphify update .)", + "label": "code:python (from contextlib import contextmanager)", "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-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": "Appendix G: Cross-References & Session Traceability", + "label": "code:python (from sqlalchemy.orm import defer)", "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": "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_REVIEW_REPORT_20260903.md", + "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": "L1", - "community": 56, - "norm_label": "code_review_report_20260903.md", - "id": "code_review_report_20260903_md" + "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": "Code Review Report \u2014 Mansa Server (FastAPI, B3)", + "label": "Task 2: Fuse vector, FULLTEXT and recency scores", "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": "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": "1. Summary table (category, count, priority P0-P3)", + "label": "code:python (def test_search_fusesFulltextOverVectorOnly(db):)", "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": "L128", + "community": 214, + "norm_label": "code:python (def test_search_fusesfulltextovervectoronly(db):)", + "id": "plans_2026_09_12_lane2_memory_query_path_codeblock_5" }, { - "label": "2. Architecture", + "label": "code:python (def minMax(values: list[float]) -> list[float]:)", "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": "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": "V1 \u2014 SCRAPER \u2192 STOCKS_API (hard, P0)", + "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": "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": "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": "V2 \u2014 PROMETHEUS \u2192 STOCKS_API (soft/lazy, P1)", + "label": "2026-09-12-lane4-vector-bench.md", "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-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": "code:python (from config import stocksEngine)", + "label": "Lane 4: Before/After Bench Implementation Plan", "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-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": "V3/V4/V5 \u2014 USER \u2194 AUTH cycle (P1, contained as combined)", + "label": "Global Constraints", "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-lane4-vector-bench.md", + "source_location": "L16", + "community": 540, + "norm_label": "global constraints", + "id": "plans_2026_09_12_lane4_vector_bench_global_constraints" }, { - "label": "V6 \u2014 Barrel `main/models/__init__.py:1-6` (P1)", + "label": "Task 1: Bench script with synthetic scale sweep", "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-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": "V7 \u2014 Shared-kernel leak + inversion (P1)", + "label": "code:python (import argparse)", "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-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": "A7 \u2014 Controller\u2192App bypass (P1)", + "label": "code:bash (git add bench/bench_memory_vector.py)", "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-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": "A8 \u2014 DB engine split ambiguity (P1)", + "label": "Task 2: Record baseline and post-lane numbers", "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": "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": "A9 \u2014 Config god + localhost allowlist (P2)", + "label": "2026-09-12-lane5-vector-scaleup.md", "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-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": "A10 \u2014 God nodes `StocksCacheManager` / `UserManager` (P2)", + "label": "Lane 5: Scale-Up Readiness Implementation Plan", "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-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": "Deletion matrix (strict, re-verified)", + "label": "Global Constraints", "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-lane5-vector-scaleup.md", + "source_location": "L15", + "community": 213, + "norm_label": "global constraints", + "id": "plans_2026_09_12_lane5_vector_scaleup_global_constraints" }, { - "label": "3. Security", + "label": "Task 1: Vector string codec (independent \u2014 run anytime)", "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-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": "C1 \u2014 ForgeVM unauthenticated RCE surface (Critical, P0)", + "label": "code:python (from main.app.prometheus.vector import toVectorString, fromV)", "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-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": "H1 \u2014 Logout cookie never cleared (P1)", + "label": "code:python (def toVectorString(vec: list[float]) -> str:)", "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-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": "H2 \u2014 Scraper trigger exposed by DEBUG default (P1)", + "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": "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": "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": "H3 \u2014 Stocks API has no HTTP rate limit (P1)", + "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": "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": "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": "M1 \u2014 SSE error leak (P1)", + "label": "code:python (import numpy as np)", "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": "L101", + "community": 213, + "norm_label": "code:python (import numpy as np)", + "id": "plans_2026_09_12_lane5_vector_scaleup_codeblock_4" }, { - "label": "M2 \u2014 Session GC leaves expired-active rows (P2)", + "label": "code:python (import numpy as np)", "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": "L129", + "community": 213, + "norm_label": "code:python (import numpy as np)", + "id": "plans_2026_09_12_lane5_vector_scaleup_codeblock_5" }, { - "label": "M3 \u2014 JWT sessionId handling (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": "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": "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": "M4 \u2014 Cookie `Secure` flag silently off behind proxy (P2)", + "label": "Task 3: Scale-up runbook (gated on Task 2)", "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": "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": "Positives (verified, keep)", + "label": "code:bash (git add docs/vector-scaleup-runbook.md)", "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": "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": "4. Inefficiencies", + "label": "2026-09-12-vector-lanes-spec.md", "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-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": "P1 \u2014 Per-request full-DataFrame pandas sorts (P1)", + "label": "Vector Lanes Spec (1, 2, 4, 5)", "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-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": "P2 \u2014 zstd compress/decompress per cell (P1)", + "label": "Current code (exact)", "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-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": "P3 \u2014 No request coalescing / thundering herd (P2)", + "label": "Lane contracts (interfaces between lanes)", "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-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": "P4 \u2014 Prometheus N+1 + embed-on-loop (P1)", - "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" + "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": "P5 \u2014 Four independent schedulers (P2)", - "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" + "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": "P6 \u2014 `mem://` only + sync/async bridge cost (P2)", - "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" + "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": "P7 \u2014 Scraper throughput (P2)", - "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" + "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": "5. Useless modules", - "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" + "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": "Safe-to-delete (P2, no importer found)", - "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" + "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": "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": "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": "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": "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": "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": "ContentCard", + "file_type": "code", + "source_file": "frontend/src/lib/prometheus-components.jsx", + "source_location": "L123", + "community": 164, + "norm_label": "contentcard", + "id": "lib_prometheus_components_contentcard" }, { - "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": "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": "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": "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": "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": "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": "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": "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": "P1: first-occurrence index over a sortCacheFrame-sorted frame. The cache", + "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": "P5: register the scraper cron jobs on the shared scheduler. Kept in this", "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" + "source_file": "main/service/scraper_service.py", + "source_location": "L23", + "community": 474, + "norm_label": "p5: register the scraper cron jobs on the shared scheduler. kept in this", + "id": "service_scraper_service_rationale_23" }, { - "label": "registerMemoryMaintenanceJob()", + "label": "registerSessionCleanupJobs()", "file_type": "code", - "source_file": "main/service/prometheus_service.py", - "source_location": "L60", - "community": 536, - "norm_label": "registermemorymaintenancejob()", - "id": "service_prometheus_service_registermemorymaintenancejob" + "source_file": "main/service/user_service.py", + "source_location": "L46", + "community": 222, + "norm_label": "registersessioncleanupjobs()", + "id": "service_user_service_registersessioncleanupjobs" }, { - "label": "P5: register memory maintenance on the shared scheduler. Kept in this ser", + "label": "P5: register the session-cleanup job on the shared scheduler. Kept in thi", "file_type": "rationale", - "source_file": "main/service/prometheus_service.py", - "source_location": "L61", - "community": 536, - "norm_label": "p5: register memory maintenance on the shared scheduler. kept in this ser", - "id": "service_prometheus_service_rationale_61" + "source_file": "main/service/user_service.py", + "source_location": "L47", + "community": 222, + "norm_label": "p5: register the session-cleanup job on the shared scheduler. kept in thi", + "id": "service_user_service_rationale_47" }, { - "label": "P5: single shared BackgroundScheduler for all services. Replaces the 4 per-serv", - "file_type": "rationale", - "source_file": "main/utils/scheduler.py", + "label": "CODE_REVIEW_REPORT_FINAL.md", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT_FINAL.md", "source_location": "L1", - "community": 536, - "norm_label": "p5: single shared backgroundscheduler for all services. replaces the 4 per-serv", - "id": "utils_scheduler_rationale_1" + "community": 212, + "norm_label": "code_review_report_final.md", + "id": "code_review_report_final_md" }, { - "label": "Return the process-wide scheduler, starting it on first use.", - "file_type": "rationale", - "source_file": "main/utils/scheduler.py", - "source_location": "L33", - "community": 536, - "norm_label": "return the process-wide scheduler, starting it on first use.", - "id": "utils_scheduler_rationale_33" + "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": "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": 536, - "norm_label": "register func on the shared scheduler (replaces any same-id job). trigger i", - "id": "utils_scheduler_rationale_43" + "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": "Discover available field names before querying /historical or /fundamental.", - "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L36", - "community": 222, - "norm_label": "discover available field names before querying /historical or /fundamental.", - "id": "controller_stocksapi_controller_rationale_36" + "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 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": "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 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": "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": "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": "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": "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": "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": "Discover available field names before querying /historical or /fundamental.", - "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L40", - "community": 222, - "norm_label": "discover available field names before querying /historical or /fundamental.", - "id": "controller_stocksapi_controller_rationale_40" + "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": "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": "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": "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": "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": "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": "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": "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": "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": "registry", + "label": "__init__.py", "file_type": "code", - "source_file": "frontend/src/components/MdocMessage.jsx", - "source_location": "L4", - "community": 211, - "norm_label": "registry", - "id": "components_mdocmessage_registry" + "source_file": "main/models/__init__.py", + "source_location": "L1", + "community": 271, + "norm_label": "__init__.py", + "id": "main_models_init_py" }, { - "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_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": "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 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": "_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": "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": "FieldRegistry", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L89", - "community": 544, - "norm_label": "fieldregistry", - "id": "prometheus_compact_fieldregistry" + "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": ".buildUrl()", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L94", - "community": 544, - "norm_label": ".buildurl()", - "id": "prometheus_compact_fieldregistry_buildurl" + "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": ".fetchFields()", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L99", - "community": 544, - "norm_label": ".fetchfields()", - "id": "prometheus_compact_fieldregistry_fetchfields" + "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": ".getFields()", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L120", - "community": 544, - "norm_label": ".getfields()", - "id": "prometheus_compact_fieldregistry_getfields" + "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": ".buildMetricRegex()", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L127", - "community": 544, - "norm_label": ".buildmetricregex()", - "id": "prometheus_compact_fieldregistry_buildmetricregex" + "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": ".getMetricRegex()", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L134", - "community": 544, - "norm_label": ".getmetricregex()", - "id": "prometheus_compact_fieldregistry_getmetricregex" + "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": ".__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": "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": "_getDb()", - "file_type": "code", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L18", - "community": 152, - "norm_label": "_getdb()", - "id": "prometheus_tools_getdb" + "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": "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": "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": "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": 528, - "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", - "id": "prometheus_tools_rationale_54" + "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": "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": 546, - "norm_label": "execute python code in an isolated sandbox. use for quantitative analysis,", - "id": "prometheus_tools_rationale_92" + "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": "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": 573, - "norm_label": "read a file from the workspace. args: path: path to the file (e.", - "id": "prometheus_tools_rationale_113" + "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": "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": 525, - "norm_label": "write a file to the workspace. use this to save data files (csv, json, scri", - "id": "prometheus_tools_rationale_127" + "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": "List files in the workspace directory. Args: path: Directory pat", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L143", - "community": 525, - "norm_label": "list files in the workspace directory. args: path: directory pat", - "id": "prometheus_tools_rationale_143" + "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 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": "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": "._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": "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": "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": "\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": "Discover available field names before querying /historical or /fundamental.", - "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L48", - "community": 222, - "norm_label": "discover available field names before querying /historical or /fundamental.", - "id": "controller_stocksapi_controller_rationale_48" + "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": "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": "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": "L169", - "community": 157, - "norm_label": "get point-in-time fundamental/valuation data for brazilian b3 stocks. ret", - "id": "controller_stocksapi_controller_rationale_169" + "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": "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: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": "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": "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": "ServiceManager", - "file_type": "code", - "source_file": "main/utils/service_manager.py", - "source_location": "L15", - "community": 45, - "norm_label": "servicemanager", - "id": "utils_service_manager_servicemanager" + "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": "onExtractionDone()", - "file_type": "code", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L26", - "community": 116, - "norm_label": "onextractiondone()", - "id": "prometheus_agent_onextractiondone" + "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": "spawnExtraction()", - "file_type": "code", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L34", - "community": 116, - "norm_label": "spawnextraction()", - "id": "prometheus_agent_spawnextraction" + "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": "_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": "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": "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: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": "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": "\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": "uploadWorkspaceFile()", - "file_type": "code", - "source_file": "frontend/src/api.js", - "source_location": "L117", - "community": 5, - "norm_label": "uploadworkspacefile()", - "id": "src_api_uploadworkspacefile" + "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": "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": "\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": "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": "\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": "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": "\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": "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": "\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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": 525, - "norm_label": "write a file to the workspace. use this to save data files (csv, json, scri", - "id": "prometheus_tools_rationale_122" + "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": "List files in the workspace directory. Args: path: Directory pat", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L135", - "community": 525, - "norm_label": "list files in the workspace directory. args: path: directory pat", - "id": "prometheus_tools_rationale_135" + "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": "_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": "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": "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": "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": "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": "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": "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": "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": "stats()", - "file_type": "code", - "source_file": "scaling_benchmark.py", - "source_location": "L19", - "community": 489, - "norm_label": "stats()", - "id": "server_scaling_benchmark_stats" + "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": "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": "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": "main()", - "file_type": "code", - "source_file": "scaling_benchmark.py", - "source_location": "L50", - "community": 489, - "norm_label": "main()", - "id": "server_scaling_benchmark_main" + "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": "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": "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": "_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": "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": "sec()", - "file_type": "code", - "source_file": "_probe_host.py", - "source_location": "L6", - "community": 514, - "norm_label": "sec()", - "id": "server_probe_host_sec" + "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": "_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": "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": "sec()", - "file_type": "code", - "source_file": "_probe_stocks.py", - "source_location": "L6", - "community": 515, - "norm_label": "sec()", - "id": "server_probe_stocks_sec" + "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": "_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": "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": "sec()", - "file_type": "code", - "source_file": "_probe_stream.py", - "source_location": "L5", - "community": 516, - "norm_label": "sec()", - "id": "server_probe_stream_sec" + "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": "BaseMansaSettings", - "file_type": "code", - "source_file": "config.py", - "source_location": "L23", - "community": 102, - "norm_label": "basemansasettings", - "id": "server_config_basemansasettings" + "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": "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": "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": "DeviceInfo", - "file_type": "code", - "source_file": "main/app/authentication/device.py", - "source_location": "L6", - "community": 1, - "norm_label": "deviceinfo", - "id": "authentication_device_deviceinfo" + "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": "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: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": "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: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": "detectOS()", - "file_type": "code", - "source_file": "main/app/authentication/device.py", - "source_location": "L55", - "community": 1, - "norm_label": "detectos()", - "id": "authentication_device_detectos" + "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": "detectDeviceType()", - "file_type": "code", - "source_file": "main/app/authentication/device.py", - "source_location": "L79", - "community": 1, - "norm_label": "detectdevicetype()", - "id": "authentication_device_detectdevicetype" + "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": "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: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": ".invalidate()", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L139", - "community": 544, - "norm_label": ".invalidate()", - "id": "prometheus_compact_fieldregistry_invalidate" + "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": ".warmup()", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L145", - "community": 544, - "norm_label": ".warmup()", - "id": "prometheus_compact_fieldregistry_warmup" + "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": "charCount()", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L153", - "community": 53, - "norm_label": "charcount()", - "id": "prometheus_compact_charcount" + "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": "events.py", - "file_type": "code", - "source_file": "main/app/prometheus/events.py", + "label": "CODE_REVIEW_REPORT_20260903.md", + "file_type": "document", + "source_file": "CODE_REVIEW_REPORT_20260903.md", "source_location": "L1", - "community": 12, - "norm_label": "events.py", - "id": "main_app_prometheus_events_py" - }, - { - "label": "LoopLogger", - "file_type": "code", - "source_file": "main/app/prometheus/events.py", - "source_location": "L7", - "community": 12, - "norm_label": "looplogger", - "id": "prometheus_events_looplogger" + "community": 56, + "norm_label": "code_review_report_20260903.md", + "id": "code_review_report_20260903_md" }, { - "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 Review Report \u2014 Mansa Server (FastAPI, B3)", + "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" }, { - "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": "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": "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": "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": "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": "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": "toDict()", - "file_type": "code", - "source_file": "main/app/user/user.py", - "source_location": "L22", - "community": 519, - "norm_label": "todict()", - "id": "user_user_todict" + "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": "Sends pre-serialized JSON bytes without re-encoding (cache-friendly).", - "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L24", - "community": 81, - "norm_label": "sends pre-serialized json bytes without re-encoding (cache-friendly).", - "id": "controller_stocksapi_controller_rationale_24" + "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": "Discover available field names before querying /historical or /fundamental.", - "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", + "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": 222, - "norm_label": "discover available field names before querying /historical or /fundamental.", - "id": "controller_stocksapi_controller_rationale_49" - }, - { - "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" + "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": "createSession()", - "file_type": "code", - "source_file": "frontend/src/api.js", - "source_location": "L91", - "community": 5, - "norm_label": "createsession()", - "id": "src_api_createsession" + "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": "ToolChip()", - "file_type": "code", - "source_file": "frontend/src/components/AgentLoop.jsx", - "source_location": "L3", - "community": 150, - "norm_label": "toolchip()", - "id": "components_agentloop_toolchip" + "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": "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": "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": "response_cache.py", - "file_type": "code", - "source_file": "main/app/stocks_api/response_cache.py", - "source_location": "L1", - "community": 596, - "norm_label": "response_cache.py", - "id": "main_app_stocks_api_response_cache_py" + "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": "ResponseCache", - "file_type": "code", - "source_file": "main/app/stocks_api/response_cache.py", - "source_location": "L19", - "community": 596, - "norm_label": "responsecache", - "id": "stocks_api_response_cache_responsecache" + "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": ".__init__()", - "file_type": "code", - "source_file": "main/app/stocks_api/response_cache.py", - "source_location": "L20", - "community": 596, - "norm_label": ".__init__()", - "id": "stocks_api_response_cache_responsecache_init" + "label": "A10 \u2014 God nodes `StocksCacheManager` / `UserManager` (P2)", + "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" }, { - "label": ".makeKey()", - "file_type": "code", - "source_file": "main/app/stocks_api/response_cache.py", - "source_location": "L29", - "community": 596, - "norm_label": ".makekey()", - "id": "stocks_api_response_cache_responsecache_makekey" + "label": "Deletion matrix (strict, re-verified)", + "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" }, { - "label": ".get()", - "file_type": "code", - "source_file": "main/app/stocks_api/response_cache.py", - "source_location": "L34", - "community": 596, - "norm_label": ".get()", - "id": "stocks_api_response_cache_responsecache_get" + "label": "3. Security", + "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" }, { - "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": "C1 \u2014 ForgeVM unauthenticated RCE surface (Critical, P0)", + "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" }, { - "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": "H1 \u2014 Logout cookie never cleared (P1)", + "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" }, { - "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": "H2 \u2014 Scraper trigger exposed by DEBUG default (P1)", + "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" }, { - "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": "H3 \u2014 Stocks API has no HTTP rate limit (P1)", + "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" }, { - "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": "M1 \u2014 SSE error leak (P1)", + "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" }, { - "label": "generateKey()", - "file_type": "code", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L323", - "community": 26, - "norm_label": "generatekey()", - "id": "controller_stocksapi_controller_generatekey" + "label": "M2 \u2014 Session GC leaves expired-active rows (P2)", + "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" }, { - "label": "Discover available field names before querying /historical or /fundamental.", - "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L30", - "community": 222, - "norm_label": "discover available field names before querying /historical or /fundamental.", - "id": "controller_stocksapi_controller_rationale_30" + "label": "M3 \u2014 JWT sessionId handling (P2)", + "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" }, { - "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": "M4 \u2014 Cookie `Secure` flag silently off behind proxy (P2)", + "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" }, { - "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": "Positives (verified, keep)", + "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" }, { - "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": "4. Inefficiencies", + "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" }, { - "label": "2026-08-01-stocks-cache-zlib-compression.md", + "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": "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": "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": "Stocks Cache zlib Compression Implementation Plan", + "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": "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": "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": "Global Constraints", + "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": "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": "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": "File Structure", + "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": "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": "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": "Task 1: Remove the cotation date index", + "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": "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": "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 (import threading)", + "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": "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": "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 (# delete the whole buildCotationDateIndex function (lines 34)", + "label": "P7 \u2014 Scraper throughput (P2)", "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": "L198", + "community": 56, + "norm_label": "p7 \u2014 scraper throughput (p2)", + "id": "server_code_review_report_20260903_p7_scraper_throughput_p2" }, { - "label": "code:python (def filterCotationColumn(series: pd.Series, startDate, endDa)", + "label": "5. Useless modules", "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": "L206", + "community": 56, + "norm_label": "5. useless modules", + "id": "server_code_review_report_20260903_5_useless_modules" }, { - "label": "code:python (startDate, endDate = parseDateRange(dates))", + "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": "L153", - "community": 75, - "norm_label": "code:python (startdate, enddate = parsedaterange(dates))", - "id": "plans_2026_08_01_stocks_cache_zlib_compression_codeblock_4" - }, - { - "label": "code:python (startDate, endDate = parseDateRange(dates))", - "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" - }, - { - "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-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": "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": "Task 2: zlib-compress JSON cells at load, decompress at read", + "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": "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": "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 (import threading)", + "label": "Do NOT delete (explicit)", "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": "L231", + "community": 56, + "norm_label": "do not delete (explicit)", + "id": "server_code_review_report_20260903_do_not_delete_explicit" }, { - "label": "code:python (import zlib # add to existing imports)", + "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": "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": "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": "code:python (sampleCols = [c for c in COMPRESS_COLS if c in df.columns])", + "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": "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": "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:python (import zlib # add to existing imports)", - "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" + "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": "code:python (def parseJSON(x):)", - "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" + "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": "code:python (lambda x: ()", - "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" + "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": "code:python (lambda x: ()", - "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" + "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": "code:bash (git add main/app/stocks_api/cache.py main/app/stocks_api/que)", - "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" + "label": "registerMemoryMaintenanceJob()", + "file_type": "code", + "source_file": "main/service/prometheus_service.py", + "source_location": "L60", + "community": 222, + "norm_label": "registermemorymaintenancejob()", + "id": "service_prometheus_service_registermemorymaintenancejob" }, { - "label": "Task 3: Keep compressed column subfields in getNest()", - "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" + "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": 222, + "norm_label": "p5: register memory maintenance on the shared scheduler. kept in this ser", + "id": "service_prometheus_service_rationale_61" }, { - "label": "code:python (import threading)", - "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" + "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": 222, + "norm_label": "p5: single shared backgroundscheduler for all services. replaces the 4 per-serv", + "id": "utils_scheduler_rationale_1" }, { - "label": "code:python (def getNest() -> dict:)", - "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" + "label": "Return the process-wide scheduler, starting it on first use.", + "file_type": "rationale", + "source_file": "main/utils/scheduler.py", + "source_location": "L33", + "community": 222, + "norm_label": "return the process-wide scheduler, starting it on first use.", + "id": "utils_scheduler_rationale_33" }, { - "label": "code:bash (git add main/app/stocks_api/compress.py tests/test_stocks_ca)", - "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" + "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": 222, + "norm_label": "register func on the shared scheduler (replaces any same-id job). trigger i", + "id": "utils_scheduler_rationale_43" }, { - "label": "Task 4: Full verification", - "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" + "label": "Discover available field names before querying /historical or /fundamental.", + "file_type": "rationale", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L36", + "community": 186, + "norm_label": "discover available field names before querying /historical or /fundamental.", + "id": "controller_stocksapi_controller_rationale_36" }, { - "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": "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": "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": "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": "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": "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": "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": "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-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": "Discover available field names before querying /historical or /fundamental.", + "file_type": "rationale", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L40", + "community": 186, + "norm_label": "discover available field names before querying /historical or /fundamental.", + "id": "controller_stocksapi_controller_rationale_40" }, { - "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": "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": "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": "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": "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": "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": "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": "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": "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": "registry", + "file_type": "code", + "source_file": "frontend/src/components/MdocMessage.jsx", + "source_location": "L4", + "community": 211, + "norm_label": "registry", + "id": "components_mdocmessage_registry" }, { - "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": "preprocessGeminiTags()", + "file_type": "code", + "source_file": "frontend/src/components/MdocMessage.jsx", + "source_location": "L14", + "community": 211, + "norm_label": "preprocessgeminitags()", + "id": "components_mdocmessage_preprocessgeminitags" }, { - "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": "WorkspaceLink()", + "file_type": "code", + "source_file": "frontend/src/components/MdocMessage.jsx", + "source_location": "L61", + "community": 211, + "norm_label": "workspacelink()", + "id": "components_mdocmessage_workspacelink" }, { - "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": "_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": "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": "FieldRegistry", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L89", + "community": 584, + "norm_label": "fieldregistry", + "id": "prometheus_compact_fieldregistry" }, { - "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": ".buildUrl()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L94", + "community": 584, + "norm_label": ".buildurl()", + "id": "prometheus_compact_fieldregistry_buildurl" }, { - "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": ".fetchFields()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L99", + "community": 584, + "norm_label": ".fetchfields()", + "id": "prometheus_compact_fieldregistry_fetchfields" }, { - "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": ".getFields()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L120", + "community": 584, + "norm_label": ".getfields()", + "id": "prometheus_compact_fieldregistry_getfields" }, { - "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": ".buildMetricRegex()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L127", + "community": 584, + "norm_label": ".buildmetricregex()", + "id": "prometheus_compact_fieldregistry_buildmetricregex" }, { - "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": ".getMetricRegex()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L134", + "community": 584, + "norm_label": ".getmetricregex()", + "id": "prometheus_compact_fieldregistry_getmetricregex" }, { - "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": ".__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 (__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": "_getDb()", + "file_type": "code", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L18", + "community": 136, + "norm_label": "_getdb()", + "id": "prometheus_tools_getdb" }, { - "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": "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": 136, + "norm_label": "search user's saved memories, preferences, and past analysis context. use", + "id": "prometheus_tools_rationale_27" }, { - "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": "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": 190, + "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", + "id": "prometheus_tools_rationale_54" }, { - "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": "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": 221, + "norm_label": "execute python code in an isolated sandbox. use for quantitative analysis,", + "id": "prometheus_tools_rationale_92" }, { - "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": "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": 538, + "norm_label": "read a file from the workspace. args: path: path to the file (e.", + "id": "prometheus_tools_rationale_113" }, { - "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": "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": 525, + "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 (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": "List files in the workspace directory. Args: path: Directory pat", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L143", + "community": 525, + "norm_label": "list files in the workspace directory. args: path: directory pat", + "id": "prometheus_tools_rationale_143" }, { - "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": "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/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": "._executeQuery()", + "file_type": "code", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L110", + "community": 517, + "norm_label": "._executequery()", + "id": "stocks_api_query_stocksquerymanager_executequery" }, { - "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": "Shared query pipeline for historical and fundamental endpoints.", + "file_type": "rationale", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L123", + "community": 517, + "norm_label": "shared query pipeline for historical and fundamental endpoints.", + "id": "stocks_api_query_rationale_123" }, { - "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": "Discover available field names before querying /historical or /fundamental.", + "file_type": "rationale", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L48", + "community": 186, + "norm_label": "discover available field names before querying /historical or /fundamental.", + "id": "controller_stocksapi_controller_rationale_48" }, { - "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": "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": "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": "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": "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": "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": "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": "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": "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": "ServiceManager", + "file_type": "code", + "source_file": "main/utils/service_manager.py", + "source_location": "L15", + "community": 564, + "norm_label": "servicemanager", + "id": "utils_service_manager_servicemanager" }, { - "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": "onExtractionDone()", + "file_type": "code", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L26", + "community": 116, + "norm_label": "onextractiondone()", + "id": "prometheus_agent_onextractiondone" }, { - "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": "spawnExtraction()", + "file_type": "code", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L34", + "community": 116, + "norm_label": "spawnextraction()", + "id": "prometheus_agent_spawnextraction" }, { - "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": "_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": "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": "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": "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": "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": ".__getitem__()", + "label": "uploadWorkspaceFile()", "file_type": "code", - "source_file": "config.py", - "source_location": "L26", - "community": 102, - "norm_label": ".__getitem__()", - "id": "server_config_basemansasettings_getitem" + "source_file": "frontend/src/api.js", + "source_location": "L117", + "community": 5, + "norm_label": "uploadworkspacefile()", + "id": "src_api_uploadworkspacefile" }, { - "label": "test-streaming.js", + "label": "api.test.js", "file_type": "code", - "source_file": "frontend/test-streaming.js", + "source_file": "frontend/src/api.test.js", "source_location": "L1", - "community": 142, - "norm_label": "test-streaming.js", - "id": "frontend_test_streaming_js" + "community": 216, + "norm_label": "api.test.js", + "id": "frontend_src_api_test_js" }, { - "label": "simulateStream()", + "label": "sseResponse()", "file_type": "code", - "source_file": "frontend/test-streaming.js", - "source_location": "L37", - "community": 142, - "norm_label": "simulatestream()", - "id": "frontend_test_streaming_simulatestream" + "source_file": "frontend/src/api.test.js", + "source_location": "L4", + "community": 216, + "norm_label": "sseresponse()", + "id": "src_api_test_sseresponse" }, { - "label": "runParser()", + "label": "fetchMock", "file_type": "code", - "source_file": "frontend/test-streaming.js", - "source_location": "L45", - "community": 142, - "norm_label": "runparser()", - "id": "frontend_test_streaming_runparser" + "source_file": "frontend/src/api.test.js", + "source_location": "L23", + "community": 216, + "norm_label": "fetchmock", + "id": "src_api_test_fetchmock" }, { - "label": "chunkSizes", + "label": "onChunk", "file_type": "code", - "source_file": "frontend/test-streaming.js", - "source_location": "L117", - "community": 142, - "norm_label": "chunksizes", - "id": "frontend_test_streaming_chunksizes" + "source_file": "frontend/src/api.test.js", + "source_location": "L28", + "community": 216, + "norm_label": "onchunk", + "id": "src_api_test_onchunk" }, { - "label": "{ session, accumulated, lineCount, chunkIdx }", + "label": "onDone", "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": "frontend/src/api.test.js", + "source_location": "L29", + "community": 216, + "norm_label": "ondone", + "id": "src_api_test_ondone" }, { - "label": "evilChunks", + "label": "onCursor", "file_type": "code", - "source_file": "frontend/test-streaming.js", - "source_location": "L143", - "community": 142, - "norm_label": "evilchunks", - "id": "frontend_test_streaming_evilchunks" + "source_file": "frontend/src/api.test.js", + "source_location": "L30", + "community": 216, + "norm_label": "oncursor", + "id": "src_api_test_oncursor" }, { - "label": "lines", + "label": "onSession", "file_type": "code", - "source_file": "frontend/test-streaming.js", - "source_location": "L152", - "community": 142, - "norm_label": "lines", - "id": "frontend_test_streaming_lines" + "source_file": "frontend/src/api.test.js", + "source_location": "L31", + "community": 216, + "norm_label": "onsession", + "id": "src_api_test_onsession" }, { - "label": "trimmed", + "label": "file", "file_type": "code", - "source_file": "frontend/test-streaming.js", - "source_location": "L155", - "community": 142, - "norm_label": "trimmed", - "id": "frontend_test_streaming_trimmed" + "source_file": "frontend/src/api.test.js", + "source_location": "L113", + "community": 216, + "norm_label": "file", + "id": "src_api_test_file" }, { - "label": "data", + "label": "uploadWorkspaceFile()", "file_type": "code", - "source_file": "frontend/test-streaming.js", - "source_location": "L157", - "community": 142, - "norm_label": "data", - "id": "frontend_test_streaming_data" + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L147", + "community": 84, + "norm_label": "uploadworkspacefile()", + "id": "controller_prometheus_controller_uploadworkspacefile" }, { - "label": "event", - "file_type": "code", - "source_file": "frontend/test-streaming.js", - "source_location": "L160", - "community": 142, - "norm_label": "event", - "id": "frontend_test_streaming_event" + "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": 525, + "norm_label": "write a file to the workspace. use this to save data files (csv, json, scri", + "id": "prometheus_tools_rationale_122" }, { - "label": ".__new__()", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L94", - "community": 544, - "norm_label": ".__new__()", - "id": "prometheus_compact_fieldregistry_new" + "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": 525, + "norm_label": "list files in the workspace directory. args: path: directory pat", + "id": "prometheus_tools_rationale_135" }, { - "label": ".__new__()", + "label": "_get_client()", "file_type": "code", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L38", - "community": 590, - "norm_label": ".__new__()", - "id": "prometheus_mcp_mcpclientpool_new" + "source_file": "main/app/prometheus/agent.py", + "source_location": "L58", + "community": 116, + "norm_label": "_get_client()", + "id": "prometheus_agent_get_client" }, { - "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": "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": "hasRole()", - "file_type": "code", - "source_file": "main/app/user/user.py", - "source_location": "L28", - "community": 519, - "norm_label": "hasrole()", - "id": "user_user_hasrole" + "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": "addRoleToUser()", + "label": "scaling_benchmark.py", "file_type": "code", - "source_file": "main/app/user/user.py", - "source_location": "L44", - "community": 519, - "norm_label": "addroletouser()", - "id": "user_user_addroletouser" + "source_file": "scaling_benchmark.py", + "source_location": "L1", + "community": 489, + "norm_label": "scaling_benchmark.py", + "id": "scaling_benchmark_py" }, { - "label": "upgradeToDeveloperStarter()", + "label": "stats()", "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": "scaling_benchmark.py", + "source_location": "L19", + "community": 489, + "norm_label": "stats()", + "id": "server_scaling_benchmark_stats" }, { - "label": "upgradeToDeveloperEnterprise()", + "label": "hammer_measured()", "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": "scaling_benchmark.py", + "source_location": "L32", + "community": 489, + "norm_label": "hammer_measured()", + "id": "server_scaling_benchmark_hammer_measured" }, { - "label": "compressor.py", + "label": "main()", "file_type": "code", - "source_file": "main/app/stocks_api/compressor.py", - "source_location": "L1", - "community": 54, - "norm_label": "compressor.py", - "id": "main_app_stocks_api_compressor_py" + "source_file": "scaling_benchmark.py", + "source_location": "L50", + "community": 489, + "norm_label": "main()", + "id": "server_scaling_benchmark_main" }, { - "label": "getAbbr()", - "file_type": "code", - "source_file": "main/app/stocks_api/compressor.py", - "source_location": "L25", - "community": 54, - "norm_label": "getabbr()", - "id": "stocks_api_compressor_getabbr" + "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": "getNest()", + "label": "_probe_host.py", "file_type": "code", - "source_file": "main/app/stocks_api/compressor.py", - "source_location": "L36", - "community": 54, - "norm_label": "getnest()", - "id": "stocks_api_compressor_getnest" + "source_file": "_probe_host.py", + "source_location": "L1", + "community": 514, + "norm_label": "_probe_host.py", + "id": "probe_host_py" }, { - "label": "rebuildAbbrevs()", + "label": "sec()", "file_type": "code", - "source_file": "main/app/stocks_api/compressor.py", - "source_location": "L46", - "community": 82, - "norm_label": "rebuildabbrevs()", - "id": "stocks_api_compressor_rebuildabbrevs" + "source_file": "_probe_host.py", + "source_location": "L6", + "community": 514, + "norm_label": "sec()", + "id": "server_probe_host_sec" }, { - "label": "walk()", + "label": "_probe_stocks.py", "file_type": "code", - "source_file": "main/app/stocks_api/compressor.py", - "source_location": "L51", - "community": 54, - "norm_label": "walk()", - "id": "stocks_api_compressor_walk" + "source_file": "_probe_stocks.py", + "source_location": "L1", + "community": 515, + "norm_label": "_probe_stocks.py", + "id": "probe_stocks_py" }, { - "label": "compactValue()", + "label": "sec()", "file_type": "code", - "source_file": "main/app/stocks_api/compressor.py", - "source_location": "L59", - "community": 54, - "norm_label": "compactvalue()", - "id": "stocks_api_compressor_compactvalue" + "source_file": "_probe_stocks.py", + "source_location": "L6", + "community": 515, + "norm_label": "sec()", + "id": "server_probe_stocks_sec" }, { - "label": "toColumnar()", + "label": "_probe_stream.py", "file_type": "code", - "source_file": "main/app/stocks_api/compressor.py", - "source_location": "L80", - "community": 54, - "norm_label": "tocolumnar()", - "id": "stocks_api_compressor_tocolumnar" + "source_file": "_probe_stream.py", + "source_location": "L1", + "community": 516, + "norm_label": "_probe_stream.py", + "id": "probe_stream_py" }, { - "label": "fixHeaders()", + "label": "sec()", "file_type": "code", - "source_file": "main/app/stocks_api/compressor.py", - "source_location": "L89", - "community": 54, - "norm_label": "fixheaders()", - "id": "stocks_api_compressor_fixheaders" + "source_file": "_probe_stream.py", + "source_location": "L5", + "community": 516, + "norm_label": "sec()", + "id": "server_probe_stream_sec" }, { - "label": "compactRow()", + "label": "BaseMansaSettings", "file_type": "code", - "source_file": "main/app/stocks_api/compressor.py", - "source_location": "L98", - "community": 54, - "norm_label": "compactrow()", - "id": "stocks_api_compressor_compactrow" + "source_file": "config.py", + "source_location": "L23", + "community": 102, + "norm_label": "basemansasettings", + "id": "server_config_basemansasettings" }, { - "label": "compactCotations()", + "label": "device.py", "file_type": "code", - "source_file": "main/app/stocks_api/compressor.py", - "source_location": "L126", - "community": 54, - "norm_label": "compactcotations()", - "id": "stocks_api_compressor_compactcotations" + "source_file": "main/app/authentication/device.py", + "source_location": "L1", + "community": 1, + "norm_label": "device.py", + "id": "main_app_authentication_device_py" }, { - "label": "compressResponse()", + "label": "DeviceInfo", "file_type": "code", - "source_file": "main/app/stocks_api/compressor.py", - "source_location": "L160", - "community": 54, - "norm_label": "compressresponse()", - "id": "stocks_api_compressor_compressresponse" + "source_file": "main/app/authentication/device.py", + "source_location": "L6", + "community": 1, + "norm_label": "deviceinfo", + "id": "authentication_device_deviceinfo" }, { - "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": "parseUserAgent()", + "file_type": "code", + "source_file": "main/app/authentication/device.py", + "source_location": "L12", + "community": 1, + "norm_label": "parseuseragent()", + "id": "authentication_device_parseuseragent" }, { - "label": "Algorithmic Compression (`compact.py`) Implementation Plan", - "file_type": "document", - "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": "detectBrowser()", + "file_type": "code", + "source_file": "main/app/authentication/device.py", + "source_location": "L33", + "community": 1, + "norm_label": "detectbrowser()", + "id": "authentication_device_detectbrowser" }, { - "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" + "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": "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": "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 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": "cleanupExpiredSessions()", + "file_type": "code", + "source_file": "main/app/authentication/session.py", + "source_location": "L124", + "community": 523, + "norm_label": "cleanupexpiredsessions()", + "id": "authentication_session_cleanupexpiredsessions" }, { - "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": ".invalidate()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L139", + "community": 584, + "norm_label": ".invalidate()", + "id": "prometheus_compact_fieldregistry_invalidate" }, { - "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": ".warmup()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L145", + "community": 584, + "norm_label": ".warmup()", + "id": "prometheus_compact_fieldregistry_warmup" }, { - "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": "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/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": "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/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": "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 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": ".__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: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": ".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: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": "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/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": "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/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": "toDict()", + "file_type": "code", + "source_file": "main/app/user/user.py", + "source_location": "L22", + "community": 528, + "norm_label": "todict()", + "id": "user_user_todict" }, { - "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": "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: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": "Discover available field names before querying /historical or /fundamental.", + "file_type": "rationale", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L49", + "community": 186, + "norm_label": "discover available field names before querying /historical or /fundamental.", + "id": "controller_stocksapi_controller_rationale_49" }, { - "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": "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: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": "createSession()", + "file_type": "code", + "source_file": "frontend/src/api.js", + "source_location": "L91", + "community": 5, + "norm_label": "createsession()", + "id": "src_api_createsession" }, { - "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": "ToolChip()", + "file_type": "code", + "source_file": "frontend/src/components/AgentLoop.jsx", + "source_location": "L3", + "community": 150, + "norm_label": "toolchip()", + "id": "components_agentloop_toolchip" }, { - "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": "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": "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": "response_cache.py", + "file_type": "code", + "source_file": "main/app/stocks_api/response_cache.py", + "source_location": "L1", + "community": 602, + "norm_label": "response_cache.py", + "id": "main_app_stocks_api_response_cache_py" }, { - "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": "ResponseCache", + "file_type": "code", + "source_file": "main/app/stocks_api/response_cache.py", + "source_location": "L19", + "community": 602, + "norm_label": "responsecache", + "id": "stocks_api_response_cache_responsecache" }, { - "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": ".__init__()", + "file_type": "code", + "source_file": "main/app/stocks_api/response_cache.py", + "source_location": "L20", + "community": 602, + "norm_label": ".__init__()", + "id": "stocks_api_response_cache_responsecache_init" }, { - "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": ".makeKey()", + "file_type": "code", + "source_file": "main/app/stocks_api/response_cache.py", + "source_location": "L29", + "community": 602, + "norm_label": ".makekey()", + "id": "stocks_api_response_cache_responsecache_makekey" }, { - "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": ".get()", + "file_type": "code", + "source_file": "main/app/stocks_api/response_cache.py", + "source_location": "L34", + "community": 602, + "norm_label": ".get()", + "id": "stocks_api_response_cache_responsecache_get" }, { - "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": ".set()", + "file_type": "code", + "source_file": "main/app/stocks_api/response_cache.py", + "source_location": "L51", + "community": 517, + "norm_label": ".set()", + "id": "stocks_api_response_cache_responsecache_set" }, { - "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": "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: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 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": "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": "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": "2026-07-29-prometheus-performance.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": "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": "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": "Discover available field names before querying /historical or /fundamental.", + "file_type": "rationale", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L30", + "community": 186, + "norm_label": "discover available field names before querying /historical or /fundamental.", + "id": "controller_stocksapi_controller_rationale_30" + }, + { + "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_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", "source_location": "L1", - "community": 118, - "norm_label": "2026-07-29-prometheus-performance.md", - "id": "docs_superpowers_plans_2026_07_29_prometheus_performance_md" + "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": "Prometheus Performance: Connection Pooling + Caching + Pre-fetch", + "label": "Stocks Cache zlib Compression Implementation Plan", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", + "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.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" + "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": "Global Constraints", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", + "source_file": "docs/superpowers/plans/2026-08-01-stocks-cache-zlib-compression.md", "source_location": "L11", - "community": 118, + "community": 75, "norm_label": "global constraints", - "id": "plans_2026_07_29_prometheus_performance_global_constraints" - }, - { - "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" + "id": "plans_2026_08_01_stocks_cache_zlib_compression_global_constraints" }, { "label": "File Structure", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", - "source_location": "L30", - "community": 118, + "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_07_29_prometheus_performance_file_structure" + "id": "plans_2026_08_01_stocks_cache_zlib_compression_file_structure" }, { - "label": "Task 1: Create ResponseCache in stocks_api", + "label": "Task 1: Remove the cotation date index", "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" + "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 (# tests/test_stocks_api_response_cache.py)", + "label": "code:python (import threading)", "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" + "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 (# main/app/stocks_api/response_cache.py)", + "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": "L105", - "community": 118, - "norm_label": "code:python (# main/app/stocks_api/response_cache.py)", - "id": "plans_2026_07_29_prometheus_performance_codeblock_2" + "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:bash (git add main/app/stocks_api/response_cache.py tests/test_sto)", + "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": "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" + "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": "Task 2: Integrate ResponseCache into stocksapi_controller", + "label": "code:python (startDate, endDate = parseDateRange(dates))", "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" + "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:python (from main.app.stocks_api.response_cache import ResponseCache)", + "label": "code:python (startDate, endDate = parseDateRange(dates))", "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" + "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": "code:python (# Before the query call, add cache check:)", + "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-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" + "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": "code:bash (git add main/controller/stocksapi_controller.py)", + "label": "Task 2: zlib-compress JSON cells at load, decompress at read", "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" + "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": "Task 3: Create MCPClientPool \u2014 `mcp.py`", + "label": "code:python (import threading)", "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": "L198", + "community": 75, + "norm_label": "code:python (import threading)", + "id": "plans_2026_08_01_stocks_cache_zlib_compression_codeblock_7" }, { - "label": "code:python (# tests/test_mcp_pool.py)", + "label": "code:python (import zlib # add to existing imports)", "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": "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 (# main/app/prometheus/mcp.py)", + "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-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": "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/prometheus/mcp.py tests/test_mcp_pool.py)", + "label": "code:python (import zlib # add to existing imports)", "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": "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 4: Integrate Pool + Pre-fetch into agent.py", + "label": "code:python (def parseJSON(x):)", "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": "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 warmup(self):)", + "label": "code:python (lambda x: ()", "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": "L296", + "community": 75, + "norm_label": "code:python (lambda x: ()", + "id": "plans_2026_08_01_stocks_cache_zlib_compression_codeblock_12" }, { - "label": "code:python (from main.app.prometheus.mcp import MCPClientPool)", + "label": "code:python (lambda x: ()", "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": "L304", + "community": 75, + "norm_label": "code:python (lambda x: ()", + "id": "plans_2026_08_01_stocks_cache_zlib_compression_codeblock_13" }, { - "label": "code:python (mcpClients, sessions = await MCPClientPool().getClients())", + "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-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": "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" }, { - "label": "code:python (if MCPClientPool().clients is None:)", + "label": "Task 3: Keep compressed column subfields in getNest()", "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": "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:bash (git add main/app/prometheus/agent.py main/app/prometheus/com)", + "label": "code:python (import threading)", "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": "L343", + "community": 75, + "norm_label": "code:python (import threading)", + "id": "plans_2026_08_01_stocks_cache_zlib_compression_codeblock_15" }, { - "label": "2026-07-29-stocks-api-perf-optimizations.md", + "label": "code:python (def getNest() -> dict:)", "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": "L376", + "community": 75, + "norm_label": "code:python (def getnest() -> dict:)", + "id": "plans_2026_08_01_stocks_cache_zlib_compression_codeblock_16" }, { - "label": "Stocks API Performance Optimizations Implementation Plan", + "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": "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": "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": "Global Constraints", + "label": "Task 4: Full verification", "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": "L409", + "community": 75, + "norm_label": "task 4: full verification", + "id": "plans_2026_08_01_stocks_cache_zlib_compression_task_4_full_verification" }, { - "label": "Task 1: Vectorize filterCotationColumn with explode()", + "label": "code:bash (git status)", "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": "L434", + "community": 75, + "norm_label": "code:bash (git status)", + "id": "plans_2026_08_01_stocks_cache_zlib_compression_codeblock_18" }, { - "label": "code:python (def filterCotationColumn(series: pd.Series, startDate, endDa)", + "label": "Self-Review", "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": "L441", + "community": 75, + "norm_label": "self-review", + "id": "plans_2026_08_01_stocks_cache_zlib_compression_self_review" }, { - "label": "code:bash (git add main/app/stocks_api/query.py)", + "label": "Execution Handoff", "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": "L461", + "community": 75, + "norm_label": "execution handoff", + "id": "plans_2026_08_01_stocks_cache_zlib_compression_execution_handoff" }, { - "label": "Task 2: Pre-computed date index for O(1) range checks", - "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" + "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": "code:python (def buildCotationDateIndex(df: pd.DataFrame, col: str = \"COT)", + "label": "prometheus-memory-extraction-plan.md", "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/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": "code:python (def filterCotationColumn(series: pd.Series, startDate, endDa)", + "label": "Prometheus Self-Extracting Memories \u2014 Design", "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/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": "code:bash (git add main/app/stocks_api/cache.py main/app/stocks_api/que)", + "label": "1. Objective", "file_type": "document", - "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" + "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": "Task 3: Parquet disk cache for faster startup", + "label": "2. Survey (what exists)", "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/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": "code:python (PARQUET_PATH = Path(__file__).parent / \"stocks_cache.parquet)", + "label": "3. Design \u2014 threshold-triggered extraction (Part A)", "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/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": "code:bash (git add main/app/stocks_api/cache.py)", + "label": "4. Numerics", "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/prometheus-memory-extraction-plan.md", + "source_location": "L53", + "community": 476, + "norm_label": "4. numerics", + "id": "docs_prometheus_memory_extraction_plan_4_numerics" }, { - "label": "Task 4: Tests for new optimizations", + "label": "5. Improving memory tool usage (Part B)", "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/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": "code:python (import pandas as pd)", + "label": "6. Implementation", "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/prometheus-memory-extraction-plan.md", + "source_location": "L70", + "community": 476, + "norm_label": "6. implementation", + "id": "docs_prometheus_memory_extraction_plan_6_implementation" }, { - "label": "code:bash (git add tests/test_stocks_perf.py)", + "label": "7. Risks & mitigations", "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/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": "Task 5: Lint, format, and final verification", + "label": "2026-07-31-prometheus-self-extracting-memories.md", "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-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": "code:bash (git add -A)", + "label": "Prometheus Self-Extracting Memories Implementation Plan", "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-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": "2026-07-29-prometheus-performance-design.md", + "label": "Global Constraints", "file_type": "document", - "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" + "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": "Prometheus Performance: Connection Pooling + Caching + FieldRegistry Pre-fetch", + "label": "File Structure", "file_type": "document", - "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" + "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": "Global Constraints", + "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": "L12", - "community": 143, - "norm_label": "global constraints", - "id": "specs_2026_07_29_prometheus_performance_design_global_constraints" + "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": "1. Connection Pooling \u2014 `main/app/prometheus/mcp.py`", + "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": "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/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": "Problem", + "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": "L24", - "community": 143, - "norm_label": "problem", - "id": "specs_2026_07_29_prometheus_performance_design_problem" + "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": "Design", + "label": "code:python (__table_args__ = ()", "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/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": "code:python (class MCPClientPool:)", + "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": "L30", - "community": 143, - "norm_label": "code:python (class mcpclientpool:)", - "id": "specs_2026_07_29_prometheus_performance_design_codeblock_1" + "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": "Integration", + "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": "L57", - "community": 143, - "norm_label": "integration", - "id": "specs_2026_07_29_prometheus_performance_design_integration" + "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": "Edge Cases", + "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": "L63", - "community": 143, - "norm_label": "edge cases", - "id": "specs_2026_07_29_prometheus_performance_design_edge_cases" + "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": "2. Caching \u2014 `main/app/prometheus/cache.py`", + "label": "code:python (import json)", "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": "L159", + "community": 50, + "norm_label": "code:python (import json)", + "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_6" }, { - "label": "Problem", + "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": "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": "L272", + "community": 50, + "norm_label": "code:python (memory_extraction_token_budget = 32000)", + "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_7" }, { - "label": "Design", + "label": "code:python (import json)", "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": "L290", + "community": 50, + "norm_label": "code:python (import json)", + "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_8" }, { - "label": "code:python (TTL_MAP = {)", + "label": "code:python (EXTRACT_PROMPT = ()", "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": "L301", + "community": 50, + "norm_label": "code:python (extract_prompt = ()", + "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_9" }, { - "label": "Cache Key", + "label": "code:bash (git add main/app/prometheus/memory.py tests/test_memory_extr)", "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": "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": "Integration", + "label": "Task 3: Wire `extract()` into the pre-turn hook", "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": "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": "Edge Cases", + "label": "code:python (from unittest.mock import patch)", "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": "L409", + "community": 50, + "norm_label": "code:python (from unittest.mock import patch)", + "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_11" }, { - "label": "3. FieldRegistry Pre-fetch \u2014 `main/app/prometheus/compact.py`", + "label": "code:python (if session and session.history:)", "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": "L437", + "community": 50, + "norm_label": "code:python (if session and session.history:)", + "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_12" }, { - "label": "Problem", + "label": "code:python (if session and session.history:)", "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": "L444", + "community": 50, + "norm_label": "code:python (if session and session.history:)", + "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_13" }, { - "label": "Design", + "label": "code:bash (git add main/app/prometheus/agent.py tests/test_streammessag)", "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": "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": "code:python (def warmup(self):)", + "label": "Task 4: Harden the SYSTEM_PROMPT memory guidance", "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": "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": "Integration", + "label": "code:python (from main.app.prometheus.agent import SYSTEM_PROMPT)", "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": "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": "Files", + "label": "code:python (### Memory System)", "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": "L513", + "community": 50, + "norm_label": "code:python (### memory system)", + "id": "plans_2026_07_31_prometheus_self_extracting_memories_codeblock_16" }, { - "label": "state.py", + "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": "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": "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": "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": ".__getitem__()", "file_type": "code", - "source_file": "main/app/prometheus/state.py", + "source_file": "config.py", + "source_location": "L26", + "community": 102, + "norm_label": ".__getitem__()", + "id": "server_config_basemansasettings_getitem" + }, + { + "label": "test-streaming.js", + "file_type": "code", + "source_file": "frontend/test-streaming.js", "source_location": "L1", - "community": 8, - "norm_label": "state.py", - "id": "main_app_prometheus_state_py" + "community": 142, + "norm_label": "test-streaming.js", + "id": "frontend_test_streaming_js" }, { - "label": "HarnessState", + "label": "simulateStream()", "file_type": "code", - "source_file": "main/app/prometheus/state.py", - "source_location": "L6", - "community": 8, - "norm_label": "harnessstate", - "id": "prometheus_state_harnessstate" + "source_file": "frontend/test-streaming.js", + "source_location": "L37", + "community": 142, + "norm_label": "simulatestream()", + "id": "frontend_test_streaming_simulatestream" }, { - "label": ".__init__()", + "label": "runParser()", "file_type": "code", - "source_file": "main/app/prometheus/state.py", - "source_location": "L7", - "community": 8, - "norm_label": ".__init__()", - "id": "prometheus_state_harnessstate_init" + "source_file": "frontend/test-streaming.js", + "source_location": "L45", + "community": 142, + "norm_label": "runparser()", + "id": "frontend_test_streaming_runparser" }, { - "label": ".get()", + "label": "chunkSizes", "file_type": "code", - "source_file": "main/app/prometheus/state.py", - "source_location": "L11", - "community": 8, - "norm_label": ".get()", - "id": "prometheus_state_harnessstate_get" + "source_file": "frontend/test-streaming.js", + "source_location": "L117", + "community": 142, + "norm_label": "chunksizes", + "id": "frontend_test_streaming_chunksizes" }, { - "label": ".set()", + "label": "{ session, accumulated, lineCount, chunkIdx }", "file_type": "code", - "source_file": "main/app/prometheus/state.py", - "source_location": "L14", - "community": 63, - "norm_label": ".set()", - "id": "prometheus_state_harnessstate_set" + "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": ".toDict()", + "label": "evilChunks", "file_type": "code", - "source_file": "main/app/prometheus/state.py", - "source_location": "L18", - "community": 8, - "norm_label": ".todict()", - "id": "prometheus_state_harnessstate_todict" + "source_file": "frontend/test-streaming.js", + "source_location": "L143", + "community": 142, + "norm_label": "evilchunks", + "id": "frontend_test_streaming_evilchunks" }, { - "label": ".toContext()", + "label": "lines", "file_type": "code", - "source_file": "main/app/prometheus/state.py", - "source_location": "L21", - "community": 8, - "norm_label": ".tocontext()", - "id": "prometheus_state_harnessstate_tocontext" + "source_file": "frontend/test-streaming.js", + "source_location": "L152", + "community": 142, + "norm_label": "lines", + "id": "frontend_test_streaming_lines" }, { - "label": ".hasChanged()", + "label": "trimmed", "file_type": "code", - "source_file": "main/app/prometheus/state.py", - "source_location": "L26", - "community": 8, - "norm_label": ".haschanged()", - "id": "prometheus_state_harnessstate_haschanged" + "source_file": "frontend/test-streaming.js", + "source_location": "L155", + "community": 142, + "norm_label": "trimmed", + "id": "frontend_test_streaming_trimmed" }, { - "label": ".resetChanged()", + "label": "data", "file_type": "code", - "source_file": "main/app/prometheus/state.py", - "source_location": "L29", - "community": 8, - "norm_label": ".resetchanged()", - "id": "prometheus_state_harnessstate_resetchanged" + "source_file": "frontend/test-streaming.js", + "source_location": "L157", + "community": 142, + "norm_label": "data", + "id": "frontend_test_streaming_data" }, { - "label": ".clear()", + "label": "event", "file_type": "code", - "source_file": "main/app/prometheus/state.py", - "source_location": "L34", - "community": 8, - "norm_label": ".clear()", - "id": "prometheus_state_harnessstate_clear" + "source_file": "frontend/test-streaming.js", + "source_location": "L160", + "community": 142, + "norm_label": "event", + "id": "frontend_test_streaming_event" }, { - "label": "get_state()", + "label": ".__new__()", "file_type": "code", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L89", - "community": 16, - "norm_label": "get_state()", - "id": "prometheus_tools_get_state" + "source_file": "main/app/prometheus/compact.py", + "source_location": "L94", + "community": 584, + "norm_label": ".__new__()", + "id": "prometheus_compact_fieldregistry_new" }, { - "label": "set_state()", + "label": ".__new__()", "file_type": "code", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L104", - "community": 546, - "norm_label": "set_state()", - "id": "prometheus_tools_set_state" + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L38", + "community": 105, + "norm_label": ".__new__()", + "id": "prometheus_mcp_mcpclientpool_new" }, { - "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": 546, - "norm_label": "store a value in the harness state for this session. use this to save inter", - "id": "prometheus_tools_rationale_105" + "label": "addRole()", + "file_type": "code", + "source_file": "main/app/user/user.py", + "source_location": "L19", + "community": 528, + "norm_label": "addrole()", + "id": "user_user_addrole" }, { - "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": 546, - "norm_label": "execute python code in an isolated sandbox. use for quantitative analysis,", - "id": "prometheus_tools_rationale_123" + "label": "hasRole()", + "file_type": "code", + "source_file": "main/app/user/user.py", + "source_location": "L28", + "community": 528, + "norm_label": "hasrole()", + "id": "user_user_hasrole" }, { - "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": 525, - "norm_label": "read a file from the workspace. args: path: path to the file (e.", - "id": "prometheus_tools_rationale_144" + "label": "addRoleToUser()", + "file_type": "code", + "source_file": "main/app/user/user.py", + "source_location": "L44", + "community": 528, + "norm_label": "addroletouser()", + "id": "user_user_addroletouser" }, { - "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": 525, - "norm_label": "list files in the workspace directory. args: path: directory pat", - "id": "prometheus_tools_rationale_168" + "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": "_parseServers()", + "label": "upgradeToDeveloperEnterprise()", "file_type": "code", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L16", - "community": 590, - "norm_label": "_parseservers()", - "id": "prometheus_mcp_parseservers" + "source_file": "main/controller/user_controller.py", + "source_location": "L38", + "community": 501, + "norm_label": "upgradetodeveloperenterprise()", + "id": "controller_user_controller_upgradetodeveloperenterprise" }, { - "label": "email-carefs.md", - "file_type": "document", - "source_file": "email-carefs.md", + "label": "compressor.py", + "file_type": "code", + "source_file": "main/app/stocks_api/compressor.py", "source_location": "L1", - "community": 496, - "norm_label": "email-carefs.md", - "id": "email_carefs_md" + "community": 186, + "norm_label": "compressor.py", + "id": "main_app_stocks_api_compressor_py" }, { - "label": "checkMySqlConnection()", + "label": "getAbbr()", "file_type": "code", - "source_file": "main/utils/connectivity.py", - "source_location": "L13", - "community": 59, - "norm_label": "checkmysqlconnection()", - "id": "utils_connectivity_checkmysqlconnection" + "source_file": "main/app/stocks_api/compressor.py", + "source_location": "L25", + "community": 186, + "norm_label": "getabbr()", + "id": "stocks_api_compressor_getabbr" }, { - "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": "getNest()", + "file_type": "code", + "source_file": "main/app/stocks_api/compressor.py", + "source_location": "L36", + "community": 186, + "norm_label": "getnest()", + "id": "stocks_api_compressor_getnest" }, { - "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": "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": "**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": "walk()", + "file_type": "code", + "source_file": "main/app/stocks_api/compressor.py", + "source_location": "L51", + "community": 186, + "norm_label": "walk()", + "id": "stocks_api_compressor_walk" }, { - "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": "compactValue()", + "file_type": "code", + "source_file": "main/app/stocks_api/compressor.py", + "source_location": "L59", + "community": 186, + "norm_label": "compactvalue()", + "id": "stocks_api_compressor_compactvalue" }, { - "label": "**5.1 \u2014 Autentica\u00e7\u00e3o e Gerenciamento de Usu\u00e1rios**", - "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" + "label": "toColumnar()", + "file_type": "code", + "source_file": "main/app/stocks_api/compressor.py", + "source_location": "L80", + "community": 186, + "norm_label": "tocolumnar()", + "id": "stocks_api_compressor_tocolumnar" }, { - "label": "**5.2 \u2014 Stocks API \u2014 Dados Financeiros**", - "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" + "label": "fixHeaders()", + "file_type": "code", + "source_file": "main/app/stocks_api/compressor.py", + "source_location": "L89", + "community": 186, + "norm_label": "fixheaders()", + "id": "stocks_api_compressor_fixheaders" }, { - "label": "**5.3 \u2014 Prometheus \u2014 Chatbot Financeiro com IA**", - "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" + "label": "compactRow()", + "file_type": "code", + "source_file": "main/app/stocks_api/compressor.py", + "source_location": "L98", + "community": 186, + "norm_label": "compactrow()", + "id": "stocks_api_compressor_compactrow" }, { - "label": "**5.4 \u2014 Scraper B3 \u2014 Coleta de Dados**", - "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" + "label": "compactCotations()", + "file_type": "code", + "source_file": "main/app/stocks_api/compressor.py", + "source_location": "L126", + "community": 186, + "norm_label": "compactcotations()", + "id": "stocks_api_compressor_compactcotations" }, { - "label": "**5.5 \u2014 Thoth \u2014 Gest\u00e3o de Carteiras e Metas**", - "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" + "label": "compressResponse()", + "file_type": "code", + "source_file": "main/app/stocks_api/compressor.py", + "source_location": "L160", + "community": 186, + "norm_label": "compressresponse()", + "id": "stocks_api_compressor_compressresponse" }, { - "label": "**5.6 \u2014 Ma'at \u2014 Algoritmo de Stock Picking**", + "label": "2026-07-29-compact-algorithmic-compression.md", "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-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": "**5.7 \u2014 Ogum \u2014 Algo Trading e Automa\u00e7\u00e3o**", + "label": "Algorithmic Compression (`compact.py`) Implementation Plan", "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-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": "**6.1 \u2014 Usabilidade**", + "label": "Global Constraints", "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-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": "**6.1.1 \u2014 Interface do Usu\u00e1rio**", + "label": "File Structure", "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-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": "**6.2 \u2014 Seguran\u00e7a**", + "label": "Task 1: Create `compact.py` \u2014 FieldRegistry + Extraction Engine", "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-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": "**6.3 \u2014 Performance**", + "label": "code:python (# main/app/prometheus/compact.py)", "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-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": "**6.4 \u2014 Arquitetura**", + "label": "code:bash (python -c \")", "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-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": "checkSingleDb()", - "file_type": "code", - "source_file": "main/utils/connectivity.py", - "source_location": "L13", - "community": 523, - "norm_label": "checksingledb()", - "id": "utils_connectivity_checksingledb" + "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": "_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": "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": "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": "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": "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": "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": "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": "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": "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": "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": ".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": "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": ".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": "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": ".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": "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": ".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": "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": ".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": "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": "openMCPClients()", - "file_type": "code", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L232", - "community": 116, - "norm_label": "openmcpclients()", - "id": "prometheus_agent_openmcpclients" + "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": "Discover available field names before querying /historical or /fundamental.", - "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L27", - "community": 222, - "norm_label": "discover available field names before querying /historical or /fundamental.", - "id": "controller_stocksapi_controller_rationale_27" + "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": "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": "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": "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": "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": "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": "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": "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": "Task 1: Create ResponseCache \u2014 `cache.py`", + "label": "code:bash (grep -r \"from main.app.prometheus.summarizer\" main/ tests/)", "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" + "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": "Task 2: Create MCPClientPool \u2014 `mcp.py`", + "label": "code:bash (pytest tests/ -v)", "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" + "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": "Task 3: Integrate Pool + Cache + Pre-fetch into agent.py + tools.py", + "label": "code:bash (git add main/app/prometheus/_summarizer_legacy.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": "summarizer.py", - "file_type": "code", - "source_file": "main/app/prometheus/summarizer.py", - "source_location": "L1", - "community": 87, - "norm_label": "summarizer.py", - "id": "main_app_prometheus_summarizer_py" - }, - { - "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": "countTokens()", - "file_type": "code", - "source_file": "main/app/prometheus/summarizer.py", - "source_location": "L31", - "community": 87, - "norm_label": "counttokens()", - "id": "prometheus_summarizer_counttokens" + "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": "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 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": "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: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": ".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 (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": ".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: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": ".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": "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": ".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": "Prometheus Performance: Connection Pooling + Caching + Pre-fetch", + "file_type": "document", + "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": ".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": "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": "applyUpdate()", - "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L48", - "community": 53, - "norm_label": "applyupdate()", - "id": "prometheus_memory_applyupdate" + "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": ".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": "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": "Stocks API \u2014 Pandas-First Pattern", + "label": "Task 1: Create ResponseCache in stocks_api", "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-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": "Scraper B3 (Xango) \u2014 Batch Data Pipeline", + "label": "code:python (# tests/test_stocks_api_response_cache.py)", "file_type": "document", - "source_file": "AGENTS.md", + "source_file": "docs/superpowers/plans/2026-07-29-prometheus-performance.md", "source_location": "L54", - "community": 153, - "norm_label": "scraper b3 (xango) \u2014 batch data pipeline", - "id": "server_agents_scraper_b3_xango_batch_data_pipeline" + "community": 118, + "norm_label": "code:python (# tests/test_stocks_api_response_cache.py)", + "id": "plans_2026_07_29_prometheus_performance_codeblock_1" }, { - "label": "Auth/Users \u2014 Dual-Layer Session Security", + "label": "code:python (# main/app/stocks_api/response_cache.py)", "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-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": "Key Quirks", + "label": "code:bash (git add main/app/stocks_api/response_cache.py tests/test_sto)", "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-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": "Prometheus (AI Chat) \u2014 Strengths & Gaps", + "label": "Task 2: Integrate ResponseCache into stocksapi_controller", "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-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": "What It Does Well", + "label": "code:python (from main.app.stocks_api.response_cache import ResponseCache)", "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-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": "What It Should Be Doing (Gaps)", + "label": "code:python (# Before the query call, add cache check:)", "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-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": "Pandas-First Approach (80%+ Rule)", + "label": "code:bash (git add main/controller/stocksapi_controller.py)", "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-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": "Memory Keys", + "label": "Task 3: Create MCPClientPool \u2014 `mcp.py`", "file_type": "document", - "source_file": "AGENTS.md", - "source_location": "L97", - "community": 153, - "norm_label": "memory keys", - "id": "server_agents_memory_keys" - }, - { - "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": "_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": "countTokens()", - "file_type": "code", - "source_file": "main/app/prometheus/tokenizer.py", - "source_location": "L17", - "community": 87, - "norm_label": "counttokens()", - "id": "prometheus_tokenizer_counttokens" - }, - { - "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" + "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": "2026-07-19-stocks-api-perf.md", + "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": "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-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": "Stocks API Performance Optimization Plan", + "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": "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-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": "Global Constraints", + "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-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-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": "Task 1: Cache `categorizeColumns()` at build time", + "label": "Task 4: Integrate Pool + Pre-fetch into agent.py", "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-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": "code:python (class StocksCacheManager:)", + "label": "code:python (def warmup(self):)", "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-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": "code:python (from main.app.stocks_api.util import categorizeColumns)", + "label": "code:python (from main.app.prometheus.mcp import MCPClientPool)", "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-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": "code:python (# BEFORE (line 133):)", + "label": "code:python (mcpClients, sessions = await MCPClientPool().getClients())", "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-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": "code:python (# BEFORE (line 213):)", + "label": "code:python (if MCPClientPool().clients is None:)", "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-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": "code:python (def getAbbr() -> dict:)", + "label": "code:bash (git add main/app/prometheus/agent.py main/app/prometheus/com)", "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-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": "code:python (# BEFORE:)", + "label": "2026-07-29-stocks-api-perf-optimizations.md", "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-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": "code:bash (python -m pytest tests/ -q)", + "label": "Stocks API Performance Optimizations Implementation Plan", "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-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": "code:bash (git add main/app/stocks_api/cache.py main/app/stocks_api/que)", + "label": "Global Constraints", "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-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": "Task 2: Vectorize `filterCotationColumn()`", + "label": "Task 1: Vectorize filterCotationColumn with explode()", "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-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": "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, + "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_19_stocks_api_perf_codeblock_9" - }, - { - "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" + "id": "plans_2026_07_29_stocks_api_perf_optimizations_codeblock_1" }, { "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, + "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_19_stocks_api_perf_codeblock_11" - }, - { - "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" + "id": "plans_2026_07_29_stocks_api_perf_optimizations_codeblock_2" }, { - "label": "code:python (def filterBySearchTerms(self, df: pd.DataFrame, search: str))", + "label": "Task 2: Pre-computed date index for O(1) range checks", "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-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": "code:bash (python -m pytest tests/test_stocks*.py -q)", + "label": "code:python (def buildCotationDateIndex(df: pd.DataFrame, col: str = \"COT)", "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-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:bash (git add main/app/stocks_api/query.py)", + "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": "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-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 4: Batch JSON deserialization in `deserializeJsonColumns()`", + "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": "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-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 deserializeJsonColumns(self, df: pd.DataFrame) -> pd.Dat)", + "label": "Task 3: Parquet disk cache for faster startup", "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-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:bash (python -m pytest tests/test_stocks*.py -q)", + "label": "code:python (PARQUET_PATH = Path(__file__).parent / \"stocks_cache.parquet)", "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-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" }, { - "label": "code:bash (git add main/app/stocks_api/query.py)", + "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": "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-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 5: Pre-materialize per-ticker orjson bytes", + "label": "Task 4: Tests for new optimizations", "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-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 (class StocksCacheManager:)", + "label": "code:python (import pandas as pd)", "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-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 (def getCachedStocks(self, columns: list[str] | None = None, )", + "label": "code:bash (git add tests/test_stocks_perf.py)", "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-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:python (def getTickerHistorical(self, ticker: str) -> bytes | None:)", + "label": "Task 5: Lint, format, and final verification", "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-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": "code:bash (python -m pytest tests/test_stocks*.py -q)", + "label": "code:bash (git add -A)", "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-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:bash (git add main/app/stocks_api/cache.py)", + "label": "2026-07-29-prometheus-performance-design.md", "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/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": "Task 6: Full CI verification", + "label": "Prometheus Performance: Connection Pooling + Caching + FieldRegistry Pre-fetch", "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/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 (.\\ci.ps1 -Fast)", + "label": "Global Constraints", "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/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": "2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "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": "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/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": "Mem0 vs Prometheus Memory System \u2014 Comparison & Upgrade Plan", + "label": "Problem", "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/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": "Executive Summary: What Mem0 Does That We Don't", + "label": "Design", "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/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": "What We Already Do Well (Don't Replace)", + "label": "code:python (class MCPClientPool:)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-22-mem0-vs-prometheus-memory-comparison.md", + "source_file": "docs/superpowers/specs/2026-07-29-prometheus-performance-design.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" + "community": 143, + "norm_label": "code:python (class mcpclientpool:)", + "id": "specs_2026_07_29_prometheus_performance_design_codeblock_1" }, { - "label": "What We Should Adopt from Mem0", + "label": "Integration", "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/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": "Priority 1: Fix Critical Gaps", + "label": "Edge Cases", "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/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": "Priority 2: Improve Retrieval", + "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": "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/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": "Priority 3: Lifecycle Improvements", + "label": "Problem", "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/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": "Architectural Decisions", + "label": "Design", "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/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": "Decision 1: Keep MySQL, Don't Add a Vector DB", + "label": "code:python (TTL_MAP = {)", "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/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": "Decision 2: Keep Our Extraction, Don't Use LLM Distillation", + "label": "Cache Key", "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/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": "Decision 3: Add Graph Memory as MySQL Tables", + "label": "Integration", "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/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": "Decision 4: Use google-genai LocalTokenizer, Not tiktoken", + "label": "Edge Cases", "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/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": "Decision 5: INT8 ONNX, Don't Quantize Ourselves", + "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": "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/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": "File Structure", + "label": "Problem", "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/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:block1 (main/)", + "label": "Design", "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/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 1: INT8 Embedding Model", + "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": "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/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_embedding_model_uses_int8():)", + "label": "Integration", "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/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 (# main/utils/models/loader.py)", + "label": "Files", "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" + "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/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": "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 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": "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_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": ".__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 (# 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": ".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 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": ".set()", + "file_type": "code", + "source_file": "main/app/prometheus/state.py", + "source_location": "L14", + "community": 186, + "norm_label": ".set()", + "id": "prometheus_state_harnessstate_set" }, { - "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": ".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": "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": ".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": "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": ".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": "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": ".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": "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": ".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": "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": "get_state()", + "file_type": "code", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L89", + "community": 231, + "norm_label": "get_state()", + "id": "prometheus_tools_get_state" }, { - "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": "set_state()", + "file_type": "code", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L104", + "community": 221, + "norm_label": "set_state()", + "id": "prometheus_tools_set_state" }, { - "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": "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": 221, + "norm_label": "store a value in the harness state for this session. use this to save inter", + "id": "prometheus_tools_rationale_105" }, { - "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": "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": 221, + "norm_label": "execute python code in an isolated sandbox. use for quantitative analysis,", + "id": "prometheus_tools_rationale_123" }, { - "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": "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": 525, + "norm_label": "read a file from the workspace. args: path: path to the file (e.", + "id": "prometheus_tools_rationale_144" }, { - "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": "List files in the workspace directory. Args: path: Directory pat", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L168", + "community": 525, + "norm_label": "list files in the workspace directory. args: path: directory pat", + "id": "prometheus_tools_rationale_168" }, { - "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": "_parseServers()", + "file_type": "code", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L16", + "community": 105, + "norm_label": "_parseservers()", + "id": "prometheus_mcp_parseservers" }, { - "label": "Task 6: Hybrid Retrieval", + "label": "email-carefs.md", "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": "email-carefs.md", + "source_location": "L1", + "community": 496, + "norm_label": "email-carefs.md", + "id": "email_carefs_md" }, { - "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": "checkMySqlConnection()", + "file_type": "code", + "source_file": "main/utils/connectivity.py", + "source_location": "L13", + "community": 59, + "norm_label": "checkmysqlconnection()", + "id": "utils_connectivity_checkmysqlconnection" }, { - "label": "code:python (# main/app/prometheus/hybrid_search.py)", + "label": "1-RS_Mansa.docx.md", "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": "1-RS_Mansa.docx.md", + "source_location": "L1", + "community": 91, + "norm_label": "1-rs_mansa.docx.md", + "id": "1_rs_mansa_docx_md" }, { - "label": "code:bash (git add main/app/prometheus/hybrid_search.py tests/test_hybr)", + "label": "**1 Introdu\u00e7\u00e3o**", "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": "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": "Task 7: Temporal Reasoning", + "label": "**2 Escopo**", "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": "1-RS_Mansa.docx.md", + "source_location": "L41", + "community": 91, + "norm_label": "**2 escopo**", + "id": "server_1_rs_mansa_docx_2_escopo" }, { - "label": "code:python (def test_extract_temporal_info():)", + "label": "**3 Descri\u00e7\u00e3o do Projeto**", "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": "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": "code:python (# main/app/prometheus/temporal.py)", + "label": "**5.1 \u2014 Autentica\u00e7\u00e3o e Gerenciamento de Usu\u00e1rios**", "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": "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": "code:bash (git add main/app/prometheus/temporal.py main/models/memory.p)", + "label": "**5.2 \u2014 Stocks API \u2014 Dados Financeiros**", "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": "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": "Task 8: Session Scoping", + "label": "**5.3 \u2014 Prometheus \u2014 Chatbot Financeiro com IA**", "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": "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": "code:python (def test_session_scoped_memory(db_session, sample_user):)", + "label": "**5.4 \u2014 Scraper B3 \u2014 Coleta de Dados**", "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": "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": "code:python (# Add to main/models/memory.py)", + "label": "**5.5 \u2014 Thoth \u2014 Gest\u00e3o de Carteiras e Metas**", "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": "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": "code:bash (git add main/models/memory.py main/app/prometheus/memory.py )", + "label": "**5.6 \u2014 Ma'at \u2014 Algoritmo de Stock Picking**", "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" + "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": "Task 9: Memory Consolidation", + "label": "**5.7 \u2014 Ogum \u2014 Algo Trading e Automa\u00e7\u00e3o**", "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" + "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": "code:python (def test_consolidation_preserves_decisions():)", + "label": "**6.1 \u2014 Usabilidade**", "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" + "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": "code:python (# Add to main/app/prometheus/summarizer.py)", + "label": "**6.1.1 \u2014 Interface do Usu\u00e1rio**", "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" + "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": "code:bash (git add main/app/prometheus/summarizer.py tests/test_consoli)", + "label": "**6.2 \u2014 Seguran\u00e7a**", "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" + "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": "Self-Review Checklist", + "label": "**6.3 \u2014 Performance**", "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" + "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": "Execution Handoff", + "label": "**6.4 \u2014 Arquitetura**", "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" + "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": "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": "checkSingleDb()", + "file_type": "code", + "source_file": "main/utils/connectivity.py", + "source_location": "L13", + "community": 59, + "norm_label": "checksingledb()", + "id": "utils_connectivity_checksingledb" }, { - "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": 528, - "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", - "id": "prometheus_tools_rationale_44" + "label": "_summarizer_legacy.py", + "file_type": "code", + "source_file": "main/app/prometheus/_summarizer_legacy.py", + "source_location": "L1", + "community": 524, + "norm_label": "_summarizer_legacy.py", + "id": "main_app_prometheus_summarizer_legacy_py" }, { - "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": 16, - "norm_label": "retrieve values from the harness state. use this to recall intermediate results,", - "id": "prometheus_tools_rationale_81" + "label": "getTokenizer()", + "file_type": "code", + "source_file": "main/app/prometheus/_summarizer_legacy.py", + "source_location": "L19", + "community": 524, + "norm_label": "gettokenizer()", + "id": "prometheus_summarizer_legacy_gettokenizer" }, { - "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": 546, - "norm_label": "store a value in the harness state for this session. use this to save inter", - "id": "prometheus_tools_rationale_96" + "label": "countTokens()", + "file_type": "code", + "source_file": "main/app/prometheus/_summarizer_legacy.py", + "source_location": "L31", + "community": 524, + "norm_label": "counttokens()", + "id": "prometheus_summarizer_legacy_counttokens" }, { - "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": 546, - "norm_label": "execute python code in an isolated sandbox. use for quantitative analysis,", - "id": "prometheus_tools_rationale_114" + "label": "smartTruncate()", + "file_type": "code", + "source_file": "main/app/prometheus/_summarizer_legacy.py", + "source_location": "L44", + "community": 524, + "norm_label": "smarttruncate()", + "id": "prometheus_summarizer_legacy_smarttruncate" }, { - "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": 525, - "norm_label": "write a file to the workspace. use this to save data files (csv, json, scri", - "id": "prometheus_tools_rationale_146" + "label": "PrometheusSummarizer", + "file_type": "code", + "source_file": "main/app/prometheus/_summarizer_legacy.py", + "source_location": "L110", + "community": 524, + "norm_label": "prometheussummarizer", + "id": "prometheus_summarizer_legacy_prometheussummarizer" }, { - "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": ".shouldSummarize()", + "file_type": "code", + "source_file": "main/app/prometheus/_summarizer_legacy.py", + "source_location": "L111", + "community": 524, + "norm_label": ".shouldsummarize()", + "id": "prometheus_summarizer_legacy_prometheussummarizer_shouldsummarize" }, { - "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": ".getSummarizableChunk()", + "file_type": "code", + "source_file": "main/app/prometheus/_summarizer_legacy.py", + "source_location": "L117", + "community": 524, + "norm_label": ".getsummarizablechunk()", + "id": "prometheus_summarizer_legacy_prometheussummarizer_getsummarizablechunk" }, { - "label": "Prometheus Regrade \u2014 Full Code Review", - "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L1", - "community": 20, - "norm_label": "prometheus regrade \u2014 full code review", - "id": "server_prometheus_regrade_prometheus_regrade_full_code_review" + "label": ".consolidate()", + "file_type": "code", + "source_file": "main/app/prometheus/_summarizer_legacy.py", + "source_location": "L128", + "community": 524, + "norm_label": ".consolidate()", + "id": "prometheus_summarizer_legacy_prometheussummarizer_consolidate" }, { - "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": ".summarize()", + "file_type": "code", + "source_file": "main/app/prometheus/_summarizer_legacy.py", + "source_location": "L186", + "community": 524, + "norm_label": ".summarize()", + "id": "prometheus_summarizer_legacy_prometheussummarizer_summarize" }, { - "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": ".getEpisodes()", + "file_type": "code", + "source_file": "main/app/prometheus/_summarizer_legacy.py", + "source_location": "L237", + "community": 524, + "norm_label": ".getepisodes()", + "id": "prometheus_summarizer_legacy_prometheussummarizer_getepisodes" }, { - "label": "What's Good", - "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", + "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": "Discover available field names before querying /historical or /fundamental.", + "file_type": "rationale", + "source_file": "main/controller/stocksapi_controller.py", "source_location": "L27", - "community": 20, - "norm_label": "what's good", - "id": "server_prometheus_regrade_what_s_good" + "community": 186, + "norm_label": "discover available field names before querying /historical or /fundamental.", + "id": "controller_stocksapi_controller_rationale_27" }, { - "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": "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": "Recommendations", - "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L42", - "community": 20, - "norm_label": "recommendations", - "id": "server_prometheus_regrade_recommendations" + "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": "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": "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": "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": "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": "Issues Found", + "label": "Task 1: Create ResponseCache \u2014 `cache.py`", "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": "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": "Recommendations", + "label": "Task 2: Create MCPClientPool \u2014 `mcp.py`", "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L66", - "community": 20, - "norm_label": "recommendations", - "id": "server_prometheus_regrade_recommendations_66" + "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": "3. Loop Events (A-)", + "label": "Task 3: Integrate Pool + Cache + Pre-fetch into agent.py + tools.py", "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": "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": "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": "summarizer.py", + "file_type": "code", + "source_file": "main/app/prometheus/summarizer.py", + "source_location": "L1", + "community": 87, + "norm_label": "summarizer.py", + "id": "main_app_prometheus_summarizer_py" }, { - "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": "getTokenizer()", + "file_type": "code", + "source_file": "main/app/prometheus/summarizer.py", + "source_location": "L19", + "community": 87, + "norm_label": "gettokenizer()", + "id": "prometheus_summarizer_gettokenizer" }, { - "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": "countTokens()", + "file_type": "code", + "source_file": "main/app/prometheus/summarizer.py", + "source_location": "L31", + "community": 87, + "norm_label": "counttokens()", + "id": "prometheus_summarizer_counttokens" }, { - "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": "smartTruncate()", + "file_type": "code", + "source_file": "main/app/prometheus/summarizer.py", + "source_location": "L44", + "community": 87, + "norm_label": "smarttruncate()", + "id": "prometheus_summarizer_smarttruncate" }, { - "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": "PrometheusSummarizer", + "file_type": "code", + "source_file": "main/app/prometheus/summarizer.py", + "source_location": "L110", + "community": 87, + "norm_label": "prometheussummarizer", + "id": "prometheus_summarizer_prometheussummarizer" }, { - "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": ".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": "Recommendations", - "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L113", - "community": 20, - "norm_label": "recommendations", - "id": "server_prometheus_regrade_recommendations_113" + "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": "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": ".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": "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": ".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": "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": ".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": "Recommendations", - "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L138", - "community": 20, - "norm_label": "recommendations", - "id": "server_prometheus_regrade_recommendations_138" + "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": "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": ".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": "What's Good", + "label": "Stocks API \u2014 Pandas-First Pattern", "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" + "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": "Issues Found", + "label": "Scraper B3 (Xango) \u2014 Batch Data Pipeline", "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L154", - "community": 20, - "norm_label": "issues found", - "id": "server_prometheus_regrade_issues_found_154" + "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": "Recommendations", + "label": "Auth/Users \u2014 Dual-Layer Session Security", "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L161", - "community": 20, - "norm_label": "recommendations", - "id": "server_prometheus_regrade_recommendations_161" + "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": "7. Code Quality (B)", + "label": "Key Quirks", "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" + "source_file": "AGENTS.md", + "source_location": "L66", + "community": 153, + "norm_label": "key quirks", + "id": "server_agents_key_quirks" }, { - "label": "What's Good", + "label": "Prometheus (AI Chat) \u2014 Strengths & Gaps", "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" + "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": "Issues Found", + "label": "What It Does Well", "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L179", - "community": 20, - "norm_label": "issues found", - "id": "server_prometheus_regrade_issues_found_179" + "source_file": "AGENTS.md", + "source_location": "L78", + "community": 153, + "norm_label": "what it does well", + "id": "server_agents_what_it_does_well" }, { - "label": "Recommendations", + "label": "What It Should Be Doing (Gaps)", "file_type": "document", - "source_file": "PROMETHEUS_REGRADE.md", - "source_location": "L188", - "community": 20, - "norm_label": "recommendations", - "id": "server_prometheus_regrade_recommendations_188" + "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": "Top 5 Priority Fixes", + "label": "Pandas-First Approach (80%+ Rule)", "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" + "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": "What Changed Since Last Grade", + "label": "Memory Keys", "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" + "source_file": "AGENTS.md", + "source_location": "L97", + "community": 153, + "norm_label": "memory keys", + "id": "server_agents_memory_keys" }, { - "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": "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": "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_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": "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": "countTokens()", + "file_type": "code", + "source_file": "main/app/prometheus/tokenizer.py", + "source_location": "L17", + "community": 87, + "norm_label": "counttokens()", + "id": "prometheus_tokenizer_counttokens" }, { - "label": "2026-07-20-persist-loop-events.md", + "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_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.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" + "community": 64, + "norm_label": "2026-07-19-stocks-api-perf.md", + "id": "docs_superpowers_plans_2026_07_19_stocks_api_perf_md" }, { - "label": "Persist Agent Loop Events to DB", + "label": "Stocks API Performance Optimization Plan", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-07-20-persist-loop-events.md", + "source_file": "docs/superpowers/plans/2026-07-19-stocks-api-perf.md", "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": 64, + "norm_label": "stocks api performance optimization plan", + "id": "plans_2026_07_19_stocks_api_perf_stocks_api_performance_optimization_plan" }, { - "label": "Context", + "label": "Global Constraints", "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" + "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" }, { - "label": "Design", + "label": "Task 1: Cache `categorizeColumns()` at build time", "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" + "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": "code:json ([)", + "label": "code:python (class StocksCacheManager:)", "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" + "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": "Task 1: Save loop events to DB in streamMessage()", + "label": "code:python (from main.app.stocks_api.util import categorizeColumns)", "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" + "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": "code:python (@classmethod)", + "label": "code:python (# BEFORE (line 133):)", "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" + "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": "code:python (case \"tool_call\":)", + "label": "code:python (# BEFORE (line 213):)", "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" + "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": "code:python (case \"turn_end\":)", + "label": "code:python (def getAbbr() -> dict:)", "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" + "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": "code:bash (git add main/app/prometheus/agent.py main/app/prometheus/cha)", + "label": "code:python (# BEFORE:)", "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" + "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": "Task 2: Filter loop events from LLM history", + "label": "code:bash (python -m pytest tests/ -q)", "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" + "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": "code:python (@classmethod)", + "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-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" + "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": "code:bash (git add main/app/prometheus/chat.py)", + "label": "Task 2: Vectorize `filterCotationColumn()`", "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" + "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": "Task 3: Return full history (including loop events) to frontend", + "label": "code:python (def filterCotationColumn(series: pd.Series, startDate, endDa)", "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": "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": "code:python (@router.get(\"/history/{sessionId}/llm\"))", + "label": "code:bash (python -m pytest tests/test_stocks*.py -q)", "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": "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": "code:bash (git add main/controller/prometheus_controller.py)", + "label": "code:bash (git add main/app/stocks_api/query.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" + "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": "Task 4: Frontend \u2014 Load and display loop events from history", + "label": "Task 3: Vectorize `filterBySearchTerms()` fallback", "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": "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": "code:javascript (const loadHistory = async (sid) => {)", + "label": "code:python (def filterBySearchTerms(self, df: pd.DataFrame, search: str))", "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": "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": "code:jsx (export default function MessageList({ messages, toolEvents, )", + "label": "code:bash (python -m pytest tests/test_stocks*.py -q)", "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": "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": "code:javascript (const loadHistory = async (sid) => {)", + "label": "code:bash (git add main/app/stocks_api/query.py)", "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": "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": "code:jsx (export default function AgentLoop({ toolEvents, turnMetrics )", + "label": "Task 4: Batch JSON deserialization in `deserializeJsonColumns()`", "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": "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": "code:bash (git add frontend/src/App.jsx frontend/src/components/Message)", + "label": "code:python (def deserializeJsonColumns(self, df: pd.DataFrame) -> pd.Dat)", "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": "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": "Task 5: Test the full flow", + "label": "code:bash (python -m pytest tests/test_stocks*.py -q)", "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" + "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": "code:bash (docker-compose up -d --build)", + "label": "code:bash (git add main/app/stocks_api/query.py)", "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" + "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": "code:sql (SELECT COUNT(*) FROM prometheus WHERE JSON_CONTAINS_PATH(his)", + "label": "Task 5: Pre-materialize per-ticker orjson bytes", "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" + "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": "code:bash (git add -A)", + "label": "code:python (class StocksCacheManager:)", "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": "L305", + "community": 64, + "norm_label": "code:python (class stockscachemanager:)", + "id": "plans_2026_07_19_stocks_api_perf_codeblock_18" }, { - "label": "Summary of Changes", + "label": "code:python (def getCachedStocks(self, columns: list[str] | None = None, )", "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": "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": "Global Constraints", + "label": "code:python (def getTickerHistorical(self, ticker: str) -> bytes | None:)", "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": "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" + "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": "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": "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": "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: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": "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": "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": "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: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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "_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": "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": "Discover available field names before querying /historical or /fundamental.", - "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L26", - "community": 222, - "norm_label": "discover available field names before querying /historical or /fundamental.", - "id": "controller_stocksapi_controller_rationale_26" + "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": "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": "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": "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": "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": "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": "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": "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": "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": ".get()", - "file_type": "code", - "source_file": "config.py", - "source_location": "L24", - "community": 102, - "norm_label": ".get()", - "id": "server_config_basemansasettings_get" + "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": ".__getitem__()", - "file_type": "code", - "source_file": "config.py", - "source_location": "L54", - "community": 102, - "norm_label": ".__getitem__()", - "id": "server_config_usersettings_getitem" + "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": ".__getitem__()", - "file_type": "code", - "source_file": "config.py", - "source_location": "L73", - "community": 102, - "norm_label": ".__getitem__()", - "id": "server_config_stocksapisettings_getitem" + "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": ".__getitem__()", - "file_type": "code", - "source_file": "config.py", - "source_location": "L92", - "community": 102, - "norm_label": ".__getitem__()", - "id": "server_config_prometheussettings_getitem" + "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": ".__getitem__()", - "file_type": "code", - "source_file": "config.py", - "source_location": "L105", - "community": 102, - "norm_label": ".__getitem__()", - "id": "server_config_scrapersettings_getitem" + "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": ".__getitem__()", - "file_type": "code", - "source_file": "config.py", - "source_location": "L114", - "community": 102, - "norm_label": ".__getitem__()", - "id": "server_config_discordsettings_getitem" + "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": "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: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": ".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": "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": ".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: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": ".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: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": ".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": "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": "executeWithWorkspace()", - "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L161", - "community": 69, - "norm_label": "executewithworkspace()", - "id": "prometheus_sandbox_executewithworkspace" + "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": ".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": "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": ".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": "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": ".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": "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": ".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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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 (# 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": "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: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": "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": "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": "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": "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": "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 (# 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": "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: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": "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": "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": "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": "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_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": "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 (# 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": "{ 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/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": "{ 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": "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": "updateSummary()", - "file_type": "code", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L98", - "community": 125, - "norm_label": "updatesummary()", - "id": "prometheus_chat_updatesummary" + "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": ".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": "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": 136, + "norm_label": "search user's saved memories, preferences, and past analysis context. use", + "id": "prometheus_tools_rationale_18" }, { - "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": "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": 190, + "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", + "id": "prometheus_tools_rationale_44" }, { - "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": "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": 231, + "norm_label": "retrieve values from the harness state. use this to recall intermediate results,", + "id": "prometheus_tools_rationale_81" }, { - "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": "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": 221, + "norm_label": "store a value in the harness state for this session. use this to save inter", + "id": "prometheus_tools_rationale_96" }, { - "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": "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": 221, + "norm_label": "execute python code in an isolated sandbox. use for quantitative analysis,", + "id": "prometheus_tools_rationale_114" }, { - "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": "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": 525, + "norm_label": "write a file to the workspace. use this to save data files (csv, json, scri", + "id": "prometheus_tools_rationale_146" }, { - "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": "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": "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": "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": "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": "Prometheus Regrade \u2014 Full Code Review", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", + "source_location": "L1", + "community": 20, + "norm_label": "prometheus regrade \u2014 full code review", + "id": "server_prometheus_regrade_prometheus_regrade_full_code_review" }, { - "label": "hidden_size", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/config.json", + "label": "Grade Summary", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", "source_location": "L10", - "community": 62, - "norm_label": "hidden_size", - "id": "all_minilm_l6_v2_config_hidden_size" + "community": 20, + "norm_label": "grade summary", + "id": "server_prometheus_regrade_grade_summary" }, { - "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": "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": "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": "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": "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": "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": "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": "Recommendations", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", + "source_location": "L42", + "community": 20, + "norm_label": "recommendations", + "id": "server_prometheus_regrade_recommendations" }, { - "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": "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": "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": "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": "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": "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": "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": "Recommendations", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", + "source_location": "L66", + "community": 20, + "norm_label": "recommendations", + "id": "server_prometheus_regrade_recommendations_66" }, { - "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": "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": "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": "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": "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": "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": "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": "Recommendations", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", + "source_location": "L90", + "community": 20, + "norm_label": "recommendations", + "id": "server_prometheus_regrade_recommendations_90" }, { - "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": "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": "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": "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": "__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": "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": "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": "Recommendations", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", + "source_location": "L113", + "community": 20, + "norm_label": "recommendations", + "id": "server_prometheus_regrade_recommendations_113" }, { - "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": "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": "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": "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": "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": "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": "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": "Recommendations", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", + "source_location": "L138", + "community": 20, + "norm_label": "recommendations", + "id": "server_prometheus_regrade_recommendations_138" }, { - "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": "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": "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": "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": "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": "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": "special_tokens_map.json", - "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/special_tokens_map.json", - "source_location": "L1", - "community": 196, - "norm_label": "special_tokens_map.json", - "id": "main_utils_models_all_minilm_l6_v2_special_tokens_map_json" + "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": "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": "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": "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": "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": "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": "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": "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": "Recommendations", + "file_type": "document", + "source_file": "PROMETHEUS_REGRADE.md", + "source_location": "L188", + "community": 20, + "norm_label": "recommendations", + "id": "server_prometheus_regrade_recommendations_188" }, { - "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "strategy", - "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": 237, - "norm_label": "strategy", - "id": "all_minilm_l6_v2_tokenizer_truncation_strategy" + "community": 38, + "norm_label": "2026-07-20-persist-loop-events.md", + "id": "docs_superpowers_plans_2026_07_20_persist_loop_events_md" }, { - "label": "stride", - "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": 237, - "norm_label": "stride", - "id": "all_minilm_l6_v2_tokenizer_truncation_stride" + "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": 193, - "norm_label": "type", - "id": "all_minilm_l6_v2_tokenizer_normalizer_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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "[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": "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": "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_cls_id" + "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": "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_cls_ids" + "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": "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": "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": "[SEP]", - "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": 155, - "norm_label": "[sep]", - "id": "all_minilm_l6_v2_tokenizer_special_tokens_sep" + "community": 87, + "norm_label": "summarize conversation history into episode summaries.", + "id": "prometheus_summarizer_rationale_1" }, { - "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "max_input_chars_per_word", + "label": "_parse_date()", "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" + "source_file": "main/app/stocks_api/util.py", + "source_location": "L27", + "community": 73, + "norm_label": "_parse_date()", + "id": "stocks_api_util_parse_date" }, { - "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": "Discover available field names before querying /historical or /fundamental.", + "file_type": "rationale", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L26", + "community": 186, + "norm_label": "discover available field names before querying /historical or /fundamental.", + "id": "controller_stocksapi_controller_rationale_26" }, { - "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": "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": "[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": "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": "[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": "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": "[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": "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": "[unused3]", + "label": ".get()", "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" + "source_file": "config.py", + "source_location": "L24", + "community": 102, + "norm_label": ".get()", + "id": "server_config_basemansasettings_get" }, { - "label": "[unused4]", + "label": ".__getitem__()", "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" + "source_file": "config.py", + "source_location": "L54", + "community": 102, + "norm_label": ".__getitem__()", + "id": "server_config_usersettings_getitem" }, { - "label": "[unused5]", + "label": ".__getitem__()", "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" + "source_file": "config.py", + "source_location": "L73", + "community": 102, + "norm_label": ".__getitem__()", + "id": "server_config_stocksapisettings_getitem" }, { - "label": "[unused6]", + "label": ".__getitem__()", "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" + "source_file": "config.py", + "source_location": "L92", + "community": 102, + "norm_label": ".__getitem__()", + "id": "server_config_prometheussettings_getitem" }, { - "label": "[unused7]", + "label": ".__getitem__()", "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" + "source_file": "config.py", + "source_location": "L105", + "community": 102, + "norm_label": ".__getitem__()", + "id": "server_config_scrapersettings_getitem" }, { - "label": "[unused8]", + "label": ".__getitem__()", "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" + "source_file": "config.py", + "source_location": "L114", + "community": 102, + "norm_label": ".__getitem__()", + "id": "server_config_discordsettings_getitem" }, { - "label": "[unused9]", + "label": "generateFingerprint()", "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" + "source_file": "main/app/authentication/device.py", + "source_location": "L128", + "community": 1, + "norm_label": "generatefingerprint()", + "id": "authentication_device_generatefingerprint" }, { - "label": "[unused10]", + "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": "[unused10]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused10" + "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": "[unused11]", + "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": "[unused11]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused11" + "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": "[unused12]", + "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": "[unused12]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused12" + "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": "[unused13]", + "label": ".flush()", "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" + "source_file": "main/app/prometheus/events.py", + "source_location": "L43", + "community": 12, + "norm_label": ".flush()", + "id": "prometheus_events_looplogger_flush" }, { - "label": "[unused14]", + "label": "executeWithWorkspace()", "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" + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L161", + "community": 69, + "norm_label": "executewithworkspace()", + "id": "prometheus_sandbox_executewithworkspace" }, { - "label": "[unused15]", + "label": "isQuotaExceeded()", "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" + "source_file": "main/app/stocks_api/key.py", + "source_location": "L22", + "community": 37, + "norm_label": "isquotaexceeded()", + "id": "stocks_api_key_isquotaexceeded" }, { - "label": "[unused16]", + "label": "needsReset()", "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" + "source_file": "main/app/stocks_api/key.py", + "source_location": "L26", + "community": 37, + "norm_label": "needsreset()", + "id": "stocks_api_key_needsreset" }, { - "label": "[unused17]", + "label": "resetQuota()", "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" + "source_file": "main/app/stocks_api/key.py", + "source_location": "L37", + "community": 37, + "norm_label": "resetquota()", + "id": "stocks_api_key_resetquota" }, { - "label": "[unused18]", + "label": "incrementUsage()", "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" + "source_file": "main/app/stocks_api/key.py", + "source_location": "L42", + "community": 37, + "norm_label": "incrementusage()", + "id": "stocks_api_key_incrementusage" }, { - "label": "[unused19]", + "label": "getRemainingQuota()", "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" + "source_file": "main/app/stocks_api/key.py", + "source_location": "L46", + "community": 37, + "norm_label": "getremainingquota()", + "id": "stocks_api_key_getremainingquota" }, { - "label": "[unused20]", + "label": "keyToDict()", "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" + "source_file": "main/app/stocks_api/key.py", + "source_location": "L50", + "community": 37, + "norm_label": "keytodict()", + "id": "stocks_api_key_keytodict" }, { - "label": "[unused21]", + "label": "parseDateStart()", "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" + "source_file": "main/app/stocks_api/util.py", + "source_location": "L39", + "community": 73, + "norm_label": "parsedatestart()", + "id": "stocks_api_util_parsedatestart" }, { - "label": "[unused22]", + "label": "parseDateEnd()", "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": "L43", + "community": 73, + "norm_label": "parsedateend()", + "id": "stocks_api_util_parsedateend" }, { - "label": "[unused23]", + "label": ".toDict()", "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" + "source_file": "main/app/prometheus/state.py", + "source_location": "L18", + "community": 8, + "norm_label": ".todict()", + "id": "prometheus_state_harnessstate_toDict" }, { - "label": "[unused24]", + "label": ".toContext()", "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" + "source_file": "main/app/prometheus/state.py", + "source_location": "L21", + "community": 8, + "norm_label": ".tocontext()", + "id": "prometheus_state_harnessstate_toContext" }, { - "label": "[unused25]", + "label": ".hasChanged()", "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" + "source_file": "main/app/prometheus/state.py", + "source_location": "L26", + "community": 8, + "norm_label": ".haschanged()", + "id": "prometheus_state_harnessstate_hasChanged" }, { - "label": "[unused26]", + "label": ".resetChanged()", "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" + "source_file": "main/app/prometheus/state.py", + "source_location": "L29", + "community": 8, + "norm_label": ".resetchanged()", + "id": "prometheus_state_harnessstate_resetChanged" }, { - "label": "[unused27]", + "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": "[unused27]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused27" + "community": 505, + "norm_label": "api.test.js", + "id": "frontend_tests_api_test_js" }, { - "label": "[unused28]", + "label": "createMockReadableStream()", "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": "frontend/tests/api.test.js", + "source_location": "L4", + "community": 505, + "norm_label": "createmockreadablestream()", + "id": "tests_api_test_createmockreadablestream" }, { - "label": "[unused29]", + "label": "onChunk", "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": "frontend/tests/api.test.js", + "source_location": "L22", + "community": 505, + "norm_label": "onchunk", + "id": "tests_api_test_onchunk" }, { - "label": "[unused30]", + "label": "onDone", "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": "frontend/tests/api.test.js", + "source_location": "L23", + "community": 505, + "norm_label": "ondone", + "id": "tests_api_test_ondone" }, { - "label": "[unused31]", + "label": "onError", "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": "frontend/tests/api.test.js", + "source_location": "L24", + "community": 505, + "norm_label": "onerror", + "id": "tests_api_test_onerror" }, { - "label": "[unused32]", + "label": "events", "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": "frontend/tests/api.test.js", + "source_location": "L117", + "community": 505, + "norm_label": "events", + "id": "tests_api_test_events" }, { - "label": "[unused33]", + "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": "[unused33]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused33" + "community": 506, + "norm_label": "app.test.jsx", + "id": "frontend_tests_app_test_jsx" }, { - "label": "[unused34]", + "label": "chunks", "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": "frontend/tests/App.test.jsx", + "source_location": "L40", + "community": 506, + "norm_label": "chunks", + "id": "tests_app_test_chunks" }, { - "label": "[unused35]", + "label": "receivedChunks", "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": "frontend/tests/App.test.jsx", + "source_location": "L66", + "community": 506, + "norm_label": "receivedchunks", + "id": "tests_app_test_receivedchunks" }, { - "label": "[unused36]", + "label": "events", "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": "frontend/tests/App.test.jsx", + "source_location": "L68", + "community": 506, + "norm_label": "events", + "id": "tests_app_test_events" }, { - "label": "[unused37]", + "label": "onChunk", "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": "frontend/tests/App.test.jsx", + "source_location": "L84", + "community": 506, + "norm_label": "onchunk", + "id": "tests_app_test_onchunk" }, { - "label": "[unused38]", + "label": "onDone", "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": "frontend/tests/App.test.jsx", + "source_location": "L85", + "community": 506, + "norm_label": "ondone", + "id": "tests_app_test_ondone" }, { - "label": "[unused39]", + "label": "fullText", "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": "frontend/tests/App.test.jsx", + "source_location": "L92", + "community": 506, + "norm_label": "fulltext", + "id": "tests_app_test_fulltext" }, { - "label": "[unused40]", + "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": "[unused40]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused40" + "community": 211, + "norm_label": "mdocmessage.test.jsx", + "id": "frontend_tests_mdocmessage_test_jsx" }, { - "label": "[unused41]", + "label": "nodes", "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": "frontend/tests/MdocMessage.test.jsx", + "source_location": "L7", + "community": 211, + "norm_label": "nodes", + "id": "tests_mdocmessage_test_nodes" }, { - "label": "[unused42]", + "label": "{ container }", "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": "frontend/tests/MdocMessage.test.jsx", + "source_location": "L22", + "community": 211, + "norm_label": "{ container }", + "id": "tests_mdocmessage_test_container" }, { - "label": "[unused43]", + "label": "{ rerender }", "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": "frontend/tests/MdocMessage.test.jsx", + "source_location": "L40", + "community": 211, + "norm_label": "{ rerender }", + "id": "tests_mdocmessage_test_rerender" }, { - "label": "[unused44]", + "label": "updateSummary()", "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/prometheus/chat.py", + "source_location": "L98", + "community": 125, + "norm_label": "updatesummary()", + "id": "prometheus_chat_updatesummary" }, { - "label": "[unused45]", + "label": ".has_changed()", "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/prometheus/state.py", + "source_location": "L26", + "community": 8, + "norm_label": ".has_changed()", + "id": "prometheus_state_harnessstate_has_changed" }, { - "label": "[unused46]", + "label": ".reset_changed()", "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/prometheus/state.py", + "source_location": "L29", + "community": 8, + "norm_label": ".reset_changed()", + "id": "prometheus_state_harnessstate_reset_changed" }, { - "label": "[unused47]", + "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": "[unused47]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused47" + "community": 62, + "norm_label": "config.json", + "id": "main_utils_models_all_minilm_l6_v2_config_json" }, { - "label": "[unused48]", + "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": "[unused48]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused48" + "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": "[unused49]", + "label": "architectures", "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/utils/models/all-MiniLM-L6-v2/config.json", + "source_location": "L3", + "community": 62, + "norm_label": "architectures", + "id": "all_minilm_l6_v2_config_architectures" }, { - "label": "[unused50]", + "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": "[unused50]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused50" + "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": "[unused51]", + "label": "gradient_checkpointing", "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/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": "[unused52]", + "label": "hidden_act", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused52]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused52" + "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": "[unused53]", + "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": "[unused53]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused53" + "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": "[unused54]", + "label": "hidden_size", "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": "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": "[unused55]", + "label": "initializer_range", "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": "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": "[unused56]", + "label": "intermediate_size", "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": "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": "[unused57]", + "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": "[unused57]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused57" + "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": "[unused58]", + "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": "[unused58]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused58" + "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": "[unused59]", + "label": "model_type", "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": "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": "[unused60]", + "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": "[unused60]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused60" + "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": "[unused61]", + "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": "[unused61]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused61" + "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": "[unused62]", + "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": "[unused62]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused62" + "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": "[unused63]", + "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": "[unused63]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused63" + "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": "[unused64]", + "label": "transformers_version", "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": "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": "[unused65]", + "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": "[unused65]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused65" + "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": "[unused66]", + "label": "use_cache", "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": "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": "[unused67]", + "label": "vocab_size", "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": "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": "[unused68]", + "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": "[unused68]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused68" + "community": 219, + "norm_label": "config_sentence_transformers.json", + "id": "main_utils_models_all_minilm_l6_v2_config_sentence_transformers_json" }, { - "label": "[unused69]", + "label": "__version__", "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/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": "[unused70]", + "label": "sentence_transformers", "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/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": "[unused71]", + "label": "transformers", "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/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": "[unused72]", + "label": "pytorch", "file_type": "code", - "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", - "source_location": "L1", - "community": 0, - "norm_label": "[unused72]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused72" + "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": "[unused73]", + "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": "[unused73]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused73" + "community": 273, + "norm_label": "data_config.json", + "id": "main_utils_models_all_minilm_l6_v2_data_config_json" }, { - "label": "[unused74]", + "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": "[unused74]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused74" + "community": 274, + "norm_label": "modules.json", + "id": "main_utils_models_all_minilm_l6_v2_modules_json" }, { - "label": "[unused75]", + "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": "[unused75]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused75" + "community": 260, + "norm_label": "sentence_bert_config.json", + "id": "main_utils_models_all_minilm_l6_v2_sentence_bert_config_json" }, { - "label": "[unused76]", + "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": "[unused76]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused76" + "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": "[unused77]", + "label": "do_lower_case", "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": "L3", + "community": 260, + "norm_label": "do_lower_case", + "id": "all_minilm_l6_v2_sentence_bert_config_do_lower_case" + }, + { + "label": "special_tokens_map.json", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/special_tokens_map.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused77]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused77" + "community": 196, + "norm_label": "special_tokens_map.json", + "id": "main_utils_models_all_minilm_l6_v2_special_tokens_map_json" }, { - "label": "[unused78]", + "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": "[unused78]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused78" + "community": 196, + "norm_label": "unk_token", + "id": "all_minilm_l6_v2_special_tokens_map_unk_token" }, { - "label": "[unused79]", + "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": "[unused79]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused79" + "community": 196, + "norm_label": "sep_token", + "id": "all_minilm_l6_v2_special_tokens_map_sep_token" }, { - "label": "[unused80]", + "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": "[unused80]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused80" + "community": 196, + "norm_label": "pad_token", + "id": "all_minilm_l6_v2_special_tokens_map_pad_token" }, { - "label": "[unused81]", + "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": "[unused81]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused81" + "community": 196, + "norm_label": "cls_token", + "id": "all_minilm_l6_v2_special_tokens_map_cls_token" }, { - "label": "[unused82]", + "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": "[unused82]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused82" + "community": 196, + "norm_label": "mask_token", + "id": "all_minilm_l6_v2_special_tokens_map_mask_token" }, { - "label": "[unused83]", + "label": "tokenizer.json", "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" + "community": 154, + "norm_label": "tokenizer.json", + "id": "main_utils_models_all_minilm_l6_v2_tokenizer_json" }, { - "label": "[unused84]", + "label": "version", "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" + "community": 154, + "norm_label": "version", + "id": "all_minilm_l6_v2_tokenizer_version" }, { - "label": "[unused85]", + "label": "truncation", "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" + "community": 237, + "norm_label": "truncation", + "id": "all_minilm_l6_v2_tokenizer_truncation" }, { - "label": "[unused86]", + "label": "max_length", "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" + "community": 237, + "norm_label": "max_length", + "id": "all_minilm_l6_v2_tokenizer_truncation_max_length" }, { - "label": "[unused87]", + "label": "strategy", "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" + "community": 237, + "norm_label": "strategy", + "id": "all_minilm_l6_v2_tokenizer_truncation_strategy" }, { - "label": "[unused88]", + "label": "stride", "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" + "community": 237, + "norm_label": "stride", + "id": "all_minilm_l6_v2_tokenizer_truncation_stride" }, { - "label": "[unused89]", + "label": "padding", "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" + "community": 170, + "norm_label": "padding", + "id": "all_minilm_l6_v2_tokenizer_padding" }, { - "label": "[unused90]", + "label": "strategy", "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" + "community": 170, + "norm_label": "strategy", + "id": "all_minilm_l6_v2_tokenizer_padding_strategy" }, { - "label": "[unused91]", + "label": "Fixed", "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" + "community": 170, + "norm_label": "fixed", + "id": "all_minilm_l6_v2_tokenizer_strategy_fixed" }, { - "label": "[unused92]", + "label": "direction", "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" + "community": 170, + "norm_label": "direction", + "id": "all_minilm_l6_v2_tokenizer_padding_direction" }, { - "label": "[unused93]", + "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": "[unused93]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused93" + "community": 170, + "norm_label": "pad_to_multiple_of", + "id": "all_minilm_l6_v2_tokenizer_padding_pad_to_multiple_of" }, { - "label": "[unused94]", + "label": "pad_id", "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" + "community": 170, + "norm_label": "pad_id", + "id": "all_minilm_l6_v2_tokenizer_padding_pad_id" }, { - "label": "[unused95]", + "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": "[unused95]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused95" + "community": 170, + "norm_label": "pad_type_id", + "id": "all_minilm_l6_v2_tokenizer_padding_pad_type_id" }, { - "label": "[unused96]", + "label": "pad_token", "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" + "community": 170, + "norm_label": "pad_token", + "id": "all_minilm_l6_v2_tokenizer_padding_pad_token" }, { - "label": "[unused97]", + "label": "added_tokens", "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" + "community": 154, + "norm_label": "added_tokens", + "id": "all_minilm_l6_v2_tokenizer_added_tokens" }, { - "label": "[unused98]", + "label": "normalizer", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused98]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused98" + "community": 193, + "norm_label": "normalizer", + "id": "all_minilm_l6_v2_tokenizer_normalizer" }, { - "label": "[UNK]", + "label": "type", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unk]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unk" + "community": 193, + "norm_label": "type", + "id": "all_minilm_l6_v2_tokenizer_normalizer_type" }, { - "label": "[CLS]", + "label": "clean_text", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[cls]", - "id": "all_minilm_l6_v2_tokenizer_vocab_cls" + "community": 193, + "norm_label": "clean_text", + "id": "all_minilm_l6_v2_tokenizer_normalizer_clean_text" }, { - "label": "[SEP]", + "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": "[sep]", - "id": "all_minilm_l6_v2_tokenizer_vocab_sep" + "community": 193, + "norm_label": "handle_chinese_chars", + "id": "all_minilm_l6_v2_tokenizer_normalizer_handle_chinese_chars" }, { - "label": "[MASK]", + "label": "strip_accents", "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" + "community": 193, + "norm_label": "strip_accents", + "id": "all_minilm_l6_v2_tokenizer_normalizer_strip_accents" }, { - "label": "[unused99]", + "label": "lowercase", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused99]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused99" + "community": 193, + "norm_label": "lowercase", + "id": "all_minilm_l6_v2_tokenizer_normalizer_lowercase" }, { - "label": "[unused100]", + "label": "pre_tokenizer", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused100]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused100" + "community": 154, + "norm_label": "pre_tokenizer", + "id": "all_minilm_l6_v2_tokenizer_pre_tokenizer" }, { - "label": "[unused101]", + "label": "type", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused101]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused101" + "community": 154, + "norm_label": "type", + "id": "all_minilm_l6_v2_tokenizer_pre_tokenizer_type" }, { - "label": "[unused102]", + "label": "post_processor", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused102]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused102" + "community": 236, + "norm_label": "post_processor", + "id": "all_minilm_l6_v2_tokenizer_post_processor" }, { - "label": "[unused103]", + "label": "type", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused103]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused103" + "community": 236, + "norm_label": "type", + "id": "all_minilm_l6_v2_tokenizer_post_processor_type" }, { - "label": "[unused104]", + "label": "single", "file_type": "code", "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 0, - "norm_label": "[unused104]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused104" + "community": 236, + "norm_label": "single", + "id": "all_minilm_l6_v2_tokenizer_post_processor_single" }, { - "label": "[unused105]", + "label": "pair", "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": 236, + "norm_label": "pair", + "id": "all_minilm_l6_v2_tokenizer_post_processor_pair" }, { - "label": "[unused106]", + "label": "special_tokens", "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": 155, + "norm_label": "special_tokens", + "id": "all_minilm_l6_v2_tokenizer_post_processor_special_tokens" }, { - "label": "[unused107]", + "label": "[CLS]", "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": 155, + "norm_label": "[cls]", + "id": "all_minilm_l6_v2_tokenizer_special_tokens_cls" }, { - "label": "[unused108]", + "label": "id", "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": 155, + "norm_label": "id", + "id": "all_minilm_l6_v2_tokenizer_cls_id" }, { - "label": "[unused109]", + "label": "ids", "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": 155, + "norm_label": "ids", + "id": "all_minilm_l6_v2_tokenizer_cls_ids" }, { - "label": "[unused110]", + "label": "tokens", "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": 155, + "norm_label": "tokens", + "id": "all_minilm_l6_v2_tokenizer_cls_tokens" }, { - "label": "[unused111]", + "label": "[SEP]", "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": 155, + "norm_label": "[sep]", + "id": "all_minilm_l6_v2_tokenizer_special_tokens_sep" }, { - "label": "[unused112]", + "label": "id", "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": 155, + "norm_label": "id", + "id": "all_minilm_l6_v2_tokenizer_sep_id" }, { - "label": "[unused113]", + "label": "ids", "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": 155, + "norm_label": "ids", + "id": "all_minilm_l6_v2_tokenizer_sep_ids" }, { - "label": "[unused114]", + "label": "tokens", "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": 155, + "norm_label": "tokens", + "id": "all_minilm_l6_v2_tokenizer_sep_tokens" }, { - "label": "[unused115]", + "label": "decoder", "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": 154, + "norm_label": "decoder", + "id": "all_minilm_l6_v2_tokenizer_decoder" }, { - "label": "[unused116]", + "label": "type", "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": 154, + "norm_label": "type", + "id": "all_minilm_l6_v2_tokenizer_decoder_type" }, { - "label": "[unused117]", + "label": "prefix", "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": 154, + "norm_label": "prefix", + "id": "all_minilm_l6_v2_tokenizer_decoder_prefix" }, { - "label": "[unused118]", + "label": "cleanup", "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": 154, + "norm_label": "cleanup", + "id": "all_minilm_l6_v2_tokenizer_decoder_cleanup" }, { - "label": "[unused119]", + "label": "model", "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": 220, + "norm_label": "model", + "id": "all_minilm_l6_v2_tokenizer_model" }, { - "label": "[unused120]", + "label": "type", "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": 220, + "norm_label": "type", + "id": "all_minilm_l6_v2_tokenizer_model_type" }, { - "label": "[unused121]", + "label": "unk_token", "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": 220, + "norm_label": "unk_token", + "id": "all_minilm_l6_v2_tokenizer_model_unk_token" }, { - "label": "[unused122]", + "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": "[unused122]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused122" + "community": 220, + "norm_label": "continuing_subword_prefix", + "id": "all_minilm_l6_v2_tokenizer_model_continuing_subword_prefix" }, { - "label": "[unused123]", + "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": "[unused123]", - "id": "all_minilm_l6_v2_tokenizer_vocab_unused123" + "community": 220, + "norm_label": "max_input_chars_per_word", + "id": "all_minilm_l6_v2_tokenizer_model_max_input_chars_per_word" }, { - "label": "[unused124]", + "label": "vocab", "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" + "norm_label": "vocab", + "id": "all_minilm_l6_v2_tokenizer_model_vocab" }, { - "label": "[unused125]", + "label": "[PAD]", "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" + "norm_label": "[pad]", + "id": "all_minilm_l6_v2_tokenizer_vocab_pad" }, { - "label": "[unused126]", + "label": "[unused0]", "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" + "norm_label": "[unused0]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused0" }, { - "label": "[unused127]", + "label": "[unused1]", "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" + "norm_label": "[unused1]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused1" }, { - "label": "[unused128]", + "label": "[unused2]", "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" + "norm_label": "[unused2]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused2" }, { - "label": "[unused129]", + "label": "[unused3]", "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" + "norm_label": "[unused3]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused3" }, { - "label": "[unused130]", + "label": "[unused4]", "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" + "norm_label": "[unused4]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused4" }, { - "label": "[unused131]", + "label": "[unused5]", "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" + "norm_label": "[unused5]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused5" }, { - "label": "[unused132]", + "label": "[unused6]", "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" + "norm_label": "[unused6]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused6" }, { - "label": "[unused133]", + "label": "[unused7]", "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" + "norm_label": "[unused7]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused7" }, { - "label": "[unused134]", + "label": "[unused8]", "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" + "norm_label": "[unused8]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused8" }, { - "label": "[unused135]", + "label": "[unused9]", "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" + "norm_label": "[unused9]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused9" }, { - "label": "[unused136]", + "label": "[unused10]", "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" + "norm_label": "[unused10]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused10" }, { - "label": "[unused137]", + "label": "[unused11]", "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" + "norm_label": "[unused11]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused11" }, { - "label": "[unused138]", + "label": "[unused12]", "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" + "norm_label": "[unused12]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused12" }, { - "label": "[unused139]", + "label": "[unused13]", "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" + "norm_label": "[unused13]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused13" }, { - "label": "[unused140]", + "label": "[unused14]", "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" + "norm_label": "[unused14]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused14" }, { - "label": "[unused141]", + "label": "[unused15]", "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" + "norm_label": "[unused15]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused15" }, { - "label": "[unused142]", + "label": "[unused16]", "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" + "norm_label": "[unused16]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused16" }, { - "label": "[unused143]", + "label": "[unused17]", "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" + "norm_label": "[unused17]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused17" }, { - "label": "[unused144]", + "label": "[unused18]", "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" + "norm_label": "[unused18]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused18" }, { - "label": "[unused145]", + "label": "[unused19]", "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" + "norm_label": "[unused19]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused19" }, { - "label": "[unused146]", + "label": "[unused20]", "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" + "norm_label": "[unused20]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused20" }, { - "label": "[unused147]", + "label": "[unused21]", "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" + "norm_label": "[unused21]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused21" }, { - "label": "[unused148]", + "label": "[unused22]", "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" + "norm_label": "[unused22]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused22" }, { - "label": "[unused149]", + "label": "[unused23]", "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" + "norm_label": "[unused23]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused23" }, { - "label": "[unused150]", + "label": "[unused24]", "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": "[unused24]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused24" }, { - "label": "[unused151]", + "label": "[unused25]", "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": "[unused25]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused25" }, { - "label": "[unused152]", + "label": "[unused26]", "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": "[unused26]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused26" }, { - "label": "[unused153]", + "label": "[unused27]", "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": "[unused27]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused27" }, { - "label": "[unused154]", + "label": "[unused28]", "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": "[unused28]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused28" }, { - "label": "[unused155]", + "label": "[unused29]", "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": "[unused29]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused29" }, { - "label": "[unused156]", + "label": "[unused30]", "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": "[unused30]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused30" }, { - "label": "[unused157]", + "label": "[unused31]", "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": "[unused31]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused31" }, { - "label": "[unused158]", + "label": "[unused32]", "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": "[unused32]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused32" }, { - "label": "[unused159]", + "label": "[unused33]", "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": "[unused33]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused33" }, { - "label": "[unused160]", + "label": "[unused34]", "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": "[unused34]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused34" }, { - "label": "[unused161]", + "label": "[unused35]", "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": "[unused35]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused35" }, { - "label": "[unused162]", + "label": "[unused36]", "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": "[unused36]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused36" }, { - "label": "[unused163]", + "label": "[unused37]", "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": "[unused37]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused37" }, { - "label": "[unused164]", + "label": "[unused38]", "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": "[unused38]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused38" }, { - "label": "[unused165]", + "label": "[unused39]", "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": "[unused39]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused39" }, { - "label": "[unused166]", + "label": "[unused40]", "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": "[unused40]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused40" }, { - "label": "[unused167]", + "label": "[unused41]", "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": "[unused41]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused41" }, { - "label": "[unused168]", + "label": "[unused42]", "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": "[unused42]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused42" }, { - "label": "[unused169]", + "label": "[unused43]", "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": "[unused43]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused43" }, { - "label": "[unused170]", + "label": "[unused44]", "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": "[unused44]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused44" }, { - "label": "[unused171]", + "label": "[unused45]", "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": "[unused45]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused45" }, { - "label": "[unused172]", + "label": "[unused46]", "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": "[unused46]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused46" }, { - "label": "[unused173]", + "label": "[unused47]", "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": "[unused47]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused47" }, { - "label": "[unused174]", + "label": "[unused48]", "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": "[unused48]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused48" }, { - "label": "[unused175]", + "label": "[unused49]", "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": "[unused49]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused49" }, { - "label": "[unused176]", + "label": "[unused50]", "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": "[unused50]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused50" }, { - "label": "[unused177]", + "label": "[unused51]", "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": "[unused51]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused51" }, { - "label": "[unused178]", + "label": "[unused52]", "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": "[unused52]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused52" }, { - "label": "[unused179]", + "label": "[unused53]", "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": "[unused53]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused53" }, { - "label": "[unused180]", + "label": "[unused54]", "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": "[unused54]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused54" }, { - "label": "[unused181]", + "label": "[unused55]", "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": "[unused55]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused55" }, { - "label": "[unused182]", + "label": "[unused56]", "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": "[unused56]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused56" }, { - "label": "[unused183]", + "label": "[unused57]", "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": "[unused57]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused57" }, { - "label": "[unused184]", + "label": "[unused58]", "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": "[unused58]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused58" }, { - "label": "[unused185]", + "label": "[unused59]", "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": "[unused59]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused59" }, { - "label": "[unused186]", + "label": "[unused60]", "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": "[unused60]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused60" }, { - "label": "[unused187]", + "label": "[unused61]", "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": "[unused61]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused61" }, { - "label": "[unused188]", + "label": "[unused62]", "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": "[unused62]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused62" }, { - "label": "[unused189]", + "label": "[unused63]", "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": "[unused63]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused63" }, { - "label": "[unused190]", + "label": "[unused64]", "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": "[unused64]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused64" }, { - "label": "[unused191]", + "label": "[unused65]", "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": "[unused65]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused65" }, { - "label": "[unused192]", + "label": "[unused66]", "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": "[unused66]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused66" }, { - "label": "[unused193]", + "label": "[unused67]", "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": "[unused67]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused67" }, { - "label": "[unused194]", + "label": "[unused68]", "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": "[unused68]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused68" }, { - "label": "[unused195]", + "label": "[unused69]", "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": "[unused69]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused69" }, { - "label": "[unused196]", + "label": "[unused70]", "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": "[unused70]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused70" }, { - "label": "[unused197]", + "label": "[unused71]", "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": "[unused71]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused71" }, { - "label": "[unused198]", + "label": "[unused72]", "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": "[unused72]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused72" }, { - "label": "[unused199]", + "label": "[unused73]", "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": "[unused73]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused73" }, { - "label": "[unused200]", + "label": "[unused74]", "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": "[unused74]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused74" }, { - "label": "[unused201]", + "label": "[unused75]", "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": "[unused75]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused75" }, { - "label": "[unused202]", + "label": "[unused76]", "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": "[unused76]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused76" }, { - "label": "[unused203]", + "label": "[unused77]", "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": "[unused77]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused77" }, { - "label": "[unused204]", + "label": "[unused78]", "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": "[unused78]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused78" }, { - "label": "[unused205]", + "label": "[unused79]", "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": "[unused79]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused79" }, { - "label": "[unused206]", + "label": "[unused80]", "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": "[unused80]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused80" }, { - "label": "[unused207]", + "label": "[unused81]", "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": "[unused81]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused81" }, { - "label": "[unused208]", + "label": "[unused82]", "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": "[unused82]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused82" }, { - "label": "[unused209]", + "label": "[unused83]", "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": "[unused83]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused83" }, { - "label": "[unused210]", + "label": "[unused84]", "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": "[unused84]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused84" }, { - "label": "[unused211]", + "label": "[unused85]", "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": "[unused85]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused85" }, { - "label": "[unused212]", + "label": "[unused86]", "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": "[unused86]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused86" }, { - "label": "[unused213]", + "label": "[unused87]", "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": "[unused87]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused87" }, { - "label": "[unused214]", + "label": "[unused88]", "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": "[unused88]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused88" }, { - "label": "[unused215]", + "label": "[unused89]", "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": "[unused89]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused89" }, { - "label": "[unused216]", + "label": "[unused90]", "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": "[unused90]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused90" }, { - "label": "[unused217]", + "label": "[unused91]", "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": "[unused91]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused91" }, { - "label": "[unused218]", + "label": "[unused92]", "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": "[unused92]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused92" }, { - "label": "[unused219]", + "label": "[unused93]", "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": "[unused93]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused93" }, { - "label": "[unused220]", + "label": "[unused94]", "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": "[unused94]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused94" }, { - "label": "[unused221]", + "label": "[unused95]", "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": "[unused95]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused95" }, { - "label": "[unused222]", + "label": "[unused96]", "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": "[unused96]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused96" }, { - "label": "[unused223]", + "label": "[unused97]", "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": "[unused97]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused97" }, { - "label": "[unused224]", + "label": "[unused98]", "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": "[unused98]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused98" }, { - "label": "[unused225]", + "label": "[UNK]", "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": "[unk]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unk" }, { - "label": "[unused226]", + "label": "[CLS]", "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": "[cls]", + "id": "all_minilm_l6_v2_tokenizer_vocab_cls" }, { - "label": "[unused227]", + "label": "[SEP]", "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": "[sep]", + "id": "all_minilm_l6_v2_tokenizer_vocab_sep" }, { - "label": "[unused228]", + "label": "[MASK]", "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": "[mask]", + "id": "all_minilm_l6_v2_tokenizer_vocab_mask" }, { - "label": "[unused229]", + "label": "[unused99]", "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": "[unused99]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused99" }, { - "label": "[unused230]", + "label": "[unused100]", "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": "[unused100]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused100" }, { - "label": "[unused231]", + "label": "[unused101]", "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": "[unused101]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused101" }, { - "label": "[unused232]", + "label": "[unused102]", "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": "[unused102]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused102" }, { - "label": "[unused233]", + "label": "[unused103]", "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": "[unused103]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused103" }, { - "label": "[unused234]", + "label": "[unused104]", "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": "[unused104]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused104" }, { - "label": "[unused235]", + "label": "[unused105]", "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": "[unused105]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused105" }, { - "label": "[unused236]", + "label": "[unused106]", "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": "[unused106]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused106" }, { - "label": "[unused237]", + "label": "[unused107]", "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": "[unused107]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused107" }, { - "label": "[unused238]", + "label": "[unused108]", "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": "[unused108]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused108" }, { - "label": "[unused239]", + "label": "[unused109]", "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": "[unused109]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused109" }, { - "label": "[unused240]", + "label": "[unused110]", "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": "[unused110]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused110" }, { - "label": "[unused241]", + "label": "[unused111]", "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": "[unused111]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused111" }, { - "label": "[unused242]", + "label": "[unused112]", "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": "[unused112]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused112" }, { - "label": "[unused243]", + "label": "[unused113]", "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": "[unused113]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused113" }, { - "label": "[unused244]", + "label": "[unused114]", "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": "[unused114]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused114" }, { - "label": "[unused245]", + "label": "[unused115]", "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": "[unused115]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused115" }, { - "label": "[unused246]", + "label": "[unused116]", "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": "[unused116]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused116" }, { - "label": "[unused247]", + "label": "[unused117]", "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": "[unused117]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused117" }, { - "label": "[unused248]", + "label": "[unused118]", "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": "[unused118]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused118" }, { - "label": "[unused249]", + "label": "[unused119]", "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": "[unused119]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused119" }, { - "label": "[unused250]", + "label": "[unused120]", "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": "[unused120]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused120" }, { - "label": "[unused251]", + "label": "[unused121]", "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": "[unused121]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused121" }, { - "label": "[unused252]", + "label": "[unused122]", "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": "[unused122]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused122" }, { - "label": "[unused253]", + "label": "[unused123]", "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": "[unused123]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused123" }, { - "label": "[unused254]", + "label": "[unused124]", "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": "[unused124]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused124" }, { - "label": "[unused255]", + "label": "[unused125]", "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": "[unused125]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused125" }, { - "label": "[unused256]", + "label": "[unused126]", "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": "[unused126]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused126" }, { - "label": "[unused257]", + "label": "[unused127]", "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": "[unused127]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused127" }, { - "label": "[unused258]", + "label": "[unused128]", "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": "[unused128]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused128" }, { - "label": "[unused259]", + "label": "[unused129]", "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": "[unused129]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused129" }, { - "label": "[unused260]", + "label": "[unused130]", "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": "[unused130]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused130" }, { - "label": "[unused261]", + "label": "[unused131]", "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": "[unused131]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused131" }, { - "label": "[unused262]", + "label": "[unused132]", "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": "[unused132]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused132" }, { - "label": "[unused263]", + "label": "[unused133]", "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": "[unused133]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused133" }, { - "label": "[unused264]", + "label": "[unused134]", "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": "[unused134]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused134" }, { - "label": "[unused265]", + "label": "[unused135]", "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": "[unused135]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused135" }, { - "label": "[unused266]", + "label": "[unused136]", "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": "[unused136]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused136" }, { - "label": "[unused267]", + "label": "[unused137]", "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": "[unused137]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused137" }, { - "label": "[unused268]", + "label": "[unused138]", "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": "[unused138]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused138" }, { - "label": "[unused269]", + "label": "[unused139]", "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": "[unused139]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused139" }, { - "label": "[unused270]", + "label": "[unused140]", "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": "[unused140]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused140" }, { - "label": "[unused271]", + "label": "[unused141]", "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": "[unused141]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused141" }, { - "label": "[unused272]", + "label": "[unused142]", "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": "[unused142]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused142" }, { - "label": "[unused273]", + "label": "[unused143]", "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": "[unused143]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused143" }, { - "label": "[unused274]", + "label": "[unused144]", "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": "[unused144]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused144" }, { - "label": "[unused275]", + "label": "[unused145]", "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": "[unused145]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused145" }, { - "label": "[unused276]", + "label": "[unused146]", "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": "[unused146]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused146" }, { - "label": "[unused277]", + "label": "[unused147]", "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": "[unused147]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused147" }, { - "label": "[unused278]", + "label": "[unused148]", "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": "[unused148]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused148" }, { - "label": "[unused279]", + "label": "[unused149]", "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": "[unused149]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused149" }, { - "label": "[unused280]", + "label": "[unused150]", "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": "[unused150]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused150" }, { - "label": "[unused281]", + "label": "[unused151]", "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": "[unused151]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused151" }, { - "label": "[unused282]", + "label": "[unused152]", "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": "[unused152]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused152" }, { - "label": "[unused283]", + "label": "[unused153]", "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": "[unused153]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused153" }, { - "label": "[unused284]", + "label": "[unused154]", "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": "[unused154]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused154" }, { - "label": "[unused285]", + "label": "[unused155]", "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": "[unused155]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused155" }, { - "label": "[unused286]", + "label": "[unused156]", "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": "[unused156]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused156" }, { - "label": "[unused287]", + "label": "[unused157]", "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": "[unused157]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused157" }, { - "label": "[unused288]", + "label": "[unused158]", "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": "[unused158]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused158" }, { - "label": "[unused289]", + "label": "[unused159]", "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": "[unused159]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused159" }, { - "label": "[unused290]", + "label": "[unused160]", "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": "[unused160]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused160" }, { - "label": "[unused291]", + "label": "[unused161]", "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": "[unused161]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused161" }, { - "label": "[unused292]", + "label": "[unused162]", "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": "[unused162]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused162" }, { - "label": "[unused293]", + "label": "[unused163]", "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": "[unused163]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused163" }, { - "label": "[unused294]", + "label": "[unused164]", "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": "[unused164]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused164" }, { - "label": "[unused295]", + "label": "[unused165]", "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": "[unused165]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused165" }, { - "label": "[unused296]", + "label": "[unused166]", "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": "[unused166]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused166" }, { - "label": "[unused297]", + "label": "[unused167]", "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": "[unused167]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused167" }, { - "label": "[unused298]", + "label": "[unused168]", "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": "[unused168]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused168" }, { - "label": "[unused299]", + "label": "[unused169]", "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": "[unused169]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused169" }, { - "label": "[unused300]", + "label": "[unused170]", "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": "[unused170]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused170" }, { - "label": "[unused301]", + "label": "[unused171]", "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": "[unused171]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused171" }, { - "label": "[unused302]", + "label": "[unused172]", "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": "[unused172]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused172" }, { - "label": "[unused303]", + "label": "[unused173]", "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": "[unused173]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused173" }, { - "label": "[unused304]", + "label": "[unused174]", "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": "[unused174]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused174" }, { - "label": "[unused305]", + "label": "[unused175]", "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": "[unused175]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused175" }, { - "label": "[unused306]", + "label": "[unused176]", "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": "[unused176]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused176" }, { - "label": "[unused307]", + "label": "[unused177]", "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": "[unused177]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused177" }, { - "label": "[unused308]", + "label": "[unused178]", "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": "[unused178]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused178" }, { - "label": "[unused309]", + "label": "[unused179]", "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": "[unused179]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused179" }, { - "label": "[unused310]", + "label": "[unused180]", "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": "[unused180]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused180" }, { - "label": "[unused311]", + "label": "[unused181]", "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": "[unused181]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused181" }, { - "label": "[unused312]", + "label": "[unused182]", "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": "[unused182]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused182" }, { - "label": "[unused313]", + "label": "[unused183]", "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": "[unused183]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused183" }, { - "label": "[unused314]", + "label": "[unused184]", "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": "[unused184]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused184" }, { - "label": "[unused315]", + "label": "[unused185]", "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": "[unused185]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused185" }, { - "label": "[unused316]", + "label": "[unused186]", "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": "[unused186]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused186" }, { - "label": "[unused317]", + "label": "[unused187]", "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": "[unused187]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused187" }, { - "label": "[unused318]", + "label": "[unused188]", "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": "[unused188]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused188" }, { - "label": "[unused319]", + "label": "[unused189]", "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": "[unused189]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused189" }, { - "label": "[unused320]", + "label": "[unused190]", "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": "[unused190]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused190" }, { - "label": "[unused321]", + "label": "[unused191]", "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": "[unused191]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused191" }, { - "label": "[unused322]", + "label": "[unused192]", "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": "[unused192]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused192" }, { - "label": "[unused323]", + "label": "[unused193]", "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": "[unused193]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused193" }, { - "label": "[unused324]", + "label": "[unused194]", "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": "[unused194]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused194" }, { - "label": "[unused325]", + "label": "[unused195]", "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": "[unused195]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused195" }, { - "label": "[unused326]", + "label": "[unused196]", "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": "[unused196]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused196" }, { - "label": "[unused327]", + "label": "[unused197]", "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": "[unused197]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused197" }, { - "label": "[unused328]", + "label": "[unused198]", "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": "[unused198]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused198" }, { - "label": "[unused329]", + "label": "[unused199]", "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": "[unused199]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused199" }, { - "label": "[unused330]", + "label": "[unused200]", "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": "[unused200]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused200" }, { - "label": "[unused331]", + "label": "[unused201]", "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": "[unused201]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused201" }, { - "label": "[unused332]", + "label": "[unused202]", "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": "[unused202]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused202" }, { - "label": "[unused333]", + "label": "[unused203]", "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": "[unused203]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused203" }, { - "label": "[unused334]", + "label": "[unused204]", "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": "[unused204]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused204" }, { - "label": "[unused335]", + "label": "[unused205]", "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": "[unused205]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused205" }, { - "label": "[unused336]", + "label": "[unused206]", "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": "[unused206]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused206" }, { - "label": "[unused337]", + "label": "[unused207]", "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": "[unused207]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused207" }, { - "label": "[unused338]", + "label": "[unused208]", "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": "[unused208]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused208" }, { - "label": "[unused339]", + "label": "[unused209]", "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": "[unused209]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused209" }, { - "label": "[unused340]", + "label": "[unused210]", "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": "[unused210]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused210" }, { - "label": "[unused341]", + "label": "[unused211]", "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": "[unused211]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused211" }, { - "label": "[unused342]", + "label": "[unused212]", "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": "[unused212]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused212" }, { - "label": "[unused343]", + "label": "[unused213]", "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": "[unused213]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused213" }, { - "label": "[unused344]", + "label": "[unused214]", "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": "[unused214]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused214" }, { - "label": "[unused345]", + "label": "[unused215]", "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": "[unused215]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused215" }, { - "label": "[unused346]", + "label": "[unused216]", "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": "[unused216]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused216" }, { - "label": "[unused347]", + "label": "[unused217]", "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": "[unused217]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused217" }, { - "label": "[unused348]", + "label": "[unused218]", "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": "[unused218]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused218" }, { - "label": "[unused349]", + "label": "[unused219]", "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": "[unused219]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused219" }, { - "label": "[unused350]", + "label": "[unused220]", "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": "[unused220]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused220" }, { - "label": "[unused351]", + "label": "[unused221]", "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": "[unused221]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused221" }, { - "label": "[unused352]", + "label": "[unused222]", "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": "[unused222]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused222" }, { - "label": "[unused353]", + "label": "[unused223]", "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": "[unused223]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused223" }, { - "label": "[unused354]", + "label": "[unused224]", "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": "[unused224]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused224" }, { - "label": "[unused355]", + "label": "[unused225]", "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": "[unused225]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused225" }, { - "label": "[unused356]", + "label": "[unused226]", "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": "[unused226]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused226" }, { - "label": "[unused357]", + "label": "[unused227]", "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": "[unused227]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused227" }, { - "label": "[unused358]", + "label": "[unused228]", "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": "[unused228]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused228" }, { - "label": "[unused359]", + "label": "[unused229]", "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": "[unused229]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused229" }, { - "label": "[unused360]", + "label": "[unused230]", "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": "[unused230]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused230" }, { - "label": "[unused361]", + "label": "[unused231]", "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": "[unused231]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused231" }, { - "label": "[unused362]", + "label": "[unused232]", "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": "[unused232]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused232" }, { - "label": "[unused363]", + "label": "[unused233]", "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": "[unused233]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused233" }, { - "label": "[unused364]", + "label": "[unused234]", "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": "[unused234]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused234" }, { - "label": "[unused365]", + "label": "[unused235]", "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": "[unused235]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused235" }, { - "label": "[unused366]", + "label": "[unused236]", "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": "[unused236]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused236" }, { - "label": "[unused367]", + "label": "[unused237]", "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": "[unused237]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused237" }, { - "label": "[unused368]", + "label": "[unused238]", "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": "[unused238]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused238" }, { - "label": "[unused369]", + "label": "[unused239]", "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": "[unused239]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused239" }, { - "label": "[unused370]", + "label": "[unused240]", "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": "[unused240]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused240" }, { - "label": "[unused371]", + "label": "[unused241]", "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": "[unused241]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused241" }, { - "label": "[unused372]", + "label": "[unused242]", "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": "[unused242]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused242" }, { - "label": "[unused373]", + "label": "[unused243]", "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": "[unused243]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused243" }, { - "label": "[unused374]", + "label": "[unused244]", "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": "[unused244]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused244" }, { - "label": "[unused375]", + "label": "[unused245]", "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": "[unused245]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused245" }, { - "label": "[unused376]", + "label": "[unused246]", "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": "[unused246]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused246" }, { - "label": "[unused377]", + "label": "[unused247]", "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": "[unused247]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused247" }, { - "label": "[unused378]", + "label": "[unused248]", "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": "[unused248]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused248" }, { - "label": "[unused379]", + "label": "[unused249]", "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": "[unused249]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused249" }, { - "label": "[unused380]", + "label": "[unused250]", "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": "[unused250]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused250" }, { - "label": "[unused381]", + "label": "[unused251]", "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": "[unused251]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused251" }, { - "label": "[unused382]", + "label": "[unused252]", "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": "[unused252]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused252" }, { - "label": "[unused383]", + "label": "[unused253]", "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": "[unused253]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused253" }, { - "label": "[unused384]", + "label": "[unused254]", "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": "[unused254]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused254" }, { - "label": "[unused385]", + "label": "[unused255]", "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": "[unused255]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused255" }, { - "label": "[unused386]", + "label": "[unused256]", "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": "[unused256]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused256" }, { - "label": "[unused387]", + "label": "[unused257]", "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": "[unused257]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused257" }, { - "label": "[unused388]", + "label": "[unused258]", "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": "[unused258]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused258" }, { - "label": "[unused389]", + "label": "[unused259]", "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": "[unused259]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused259" }, { - "label": "[unused390]", + "label": "[unused260]", "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": "[unused260]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused260" }, { - "label": "[unused391]", + "label": "[unused261]", "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": "[unused261]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused261" }, { - "label": "[unused392]", + "label": "[unused262]", "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": "[unused262]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused262" }, { - "label": "[unused393]", + "label": "[unused263]", "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": "[unused263]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused263" }, { - "label": "[unused394]", + "label": "[unused264]", "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": "[unused264]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused264" }, { - "label": "[unused395]", + "label": "[unused265]", "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": "[unused265]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused265" }, { - "label": "[unused396]", + "label": "[unused266]", "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": "[unused266]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused266" }, { - "label": "[unused397]", + "label": "[unused267]", "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": "[unused267]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused267" }, { - "label": "[unused398]", + "label": "[unused268]", "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": "[unused268]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused268" }, { - "label": "[unused399]", + "label": "[unused269]", "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": "[unused269]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused269" }, { - "label": "[unused400]", + "label": "[unused270]", "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": "[unused270]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused270" }, { - "label": "[unused401]", + "label": "[unused271]", "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": "[unused271]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused271" }, { - "label": "[unused402]", + "label": "[unused272]", "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": "[unused272]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused272" }, { - "label": "[unused403]", + "label": "[unused273]", "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": "[unused273]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused273" }, { - "label": "[unused404]", + "label": "[unused274]", "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": "[unused274]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused274" }, { - "label": "[unused405]", + "label": "[unused275]", "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": "[unused275]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused275" }, { - "label": "[unused406]", + "label": "[unused276]", "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": "[unused276]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused276" }, { - "label": "[unused407]", + "label": "[unused277]", "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": "[unused277]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused277" }, { - "label": "[unused408]", + "label": "[unused278]", "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": "[unused278]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused278" }, { - "label": "[unused409]", + "label": "[unused279]", "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": "[unused279]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused279" }, { - "label": "[unused410]", + "label": "[unused280]", "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": "[unused280]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused280" }, { - "label": "[unused411]", + "label": "[unused281]", "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": "[unused281]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused281" }, { - "label": "[unused412]", + "label": "[unused282]", "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": "[unused282]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused282" }, { - "label": "[unused413]", + "label": "[unused283]", "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": "[unused283]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused283" }, { - "label": "[unused414]", + "label": "[unused284]", "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": "[unused284]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused284" }, { - "label": "[unused415]", + "label": "[unused285]", "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": "[unused285]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused285" }, { - "label": "[unused416]", + "label": "[unused286]", "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": "[unused286]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused286" }, { - "label": "[unused417]", + "label": "[unused287]", "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": "[unused287]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused287" }, { - "label": "[unused418]", + "label": "[unused288]", "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": "[unused288]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused288" }, { - "label": "[unused419]", + "label": "[unused289]", "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": "[unused289]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused289" }, { - "label": "[unused420]", + "label": "[unused290]", "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": "[unused290]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused290" }, { - "label": "[unused421]", + "label": "[unused291]", "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": "[unused291]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused291" }, { - "label": "[unused422]", + "label": "[unused292]", "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": "[unused292]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused292" }, { - "label": "[unused423]", + "label": "[unused293]", "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": "[unused293]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused293" }, { - "label": "[unused424]", + "label": "[unused294]", "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": "[unused294]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused294" }, { - "label": "[unused425]", + "label": "[unused295]", "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": "[unused295]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused295" }, { - "label": "[unused426]", + "label": "[unused296]", "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": "[unused296]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused296" }, { - "label": "[unused427]", + "label": "[unused297]", "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": "[unused297]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused297" }, { - "label": "[unused428]", + "label": "[unused298]", "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": "[unused298]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused298" }, { - "label": "[unused429]", + "label": "[unused299]", "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": "[unused299]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused299" }, { - "label": "[unused430]", + "label": "[unused300]", "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": "[unused300]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused300" }, { - "label": "[unused431]", + "label": "[unused301]", "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": "[unused301]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused301" }, { - "label": "[unused432]", + "label": "[unused302]", "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": "[unused302]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused302" }, { - "label": "[unused433]", + "label": "[unused303]", "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": "[unused303]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused303" }, { - "label": "[unused434]", + "label": "[unused304]", "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": "[unused304]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused304" }, { - "label": "[unused435]", + "label": "[unused305]", "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": "[unused305]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused305" }, { - "label": "[unused436]", + "label": "[unused306]", "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": "[unused306]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused306" }, { - "label": "[unused437]", + "label": "[unused307]", "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": "[unused307]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused307" }, { - "label": "[unused438]", + "label": "[unused308]", "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": "[unused308]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused308" }, { - "label": "[unused439]", + "label": "[unused309]", "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": "[unused309]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused309" }, { - "label": "[unused440]", + "label": "[unused310]", "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": "[unused310]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused310" }, { - "label": "[unused441]", + "label": "[unused311]", "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": "[unused311]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused311" }, { - "label": "[unused442]", + "label": "[unused312]", "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": "[unused312]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused312" }, { - "label": "[unused443]", + "label": "[unused313]", "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": "[unused313]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused313" }, { - "label": "[unused444]", + "label": "[unused314]", "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": "[unused314]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused314" }, { - "label": "[unused445]", + "label": "[unused315]", "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": "[unused315]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused315" }, { - "label": "[unused446]", + "label": "[unused316]", "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": "[unused316]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused316" }, { - "label": "[unused447]", + "label": "[unused317]", "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": "[unused317]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused317" }, { - "label": "[unused448]", + "label": "[unused318]", "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": "[unused318]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused318" }, { - "label": "[unused449]", + "label": "[unused319]", "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": "[unused319]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused319" }, { - "label": "tokenizer_config.json", + "label": "[unused320]", "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": "[unused320]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused320" }, { - "label": "do_lower_case", + "label": "[unused321]", "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": "[unused321]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused321" }, { - "label": "unk_token", + "label": "[unused322]", "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": "[unused322]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused322" }, { - "label": "sep_token", + "label": "[unused323]", "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": "[unused323]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused323" }, { - "label": "pad_token", + "label": "[unused324]", "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": "[unused324]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused324" }, { - "label": "cls_token", + "label": "[unused325]", "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": "[unused325]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused325" }, { - "label": "mask_token", + "label": "[unused326]", "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": "[unused326]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused326" }, { - "label": "tokenize_chinese_chars", + "label": "[unused327]", "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": "[unused327]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused327" }, { - "label": "strip_accents", + "label": "[unused328]", "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": "[unused328]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused328" }, { - "label": "name_or_path", + "label": "[unused329]", "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": "[unused329]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused329" }, { - "label": "do_basic_tokenize", + "label": "[unused330]", "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": "[unused330]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused330" }, { - "label": "never_split", + "label": "[unused331]", "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": "[unused331]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused331" }, { - "label": "tokenizer_class", + "label": "[unused332]", "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": "[unused332]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused332" }, { - "label": "model_max_length", + "label": "[unused333]", "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": "[unused333]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused333" }, { - "label": "config.json", + "label": "[unused334]", "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": "[unused334]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused334" }, { - "label": "word_embedding_dimension", + "label": "[unused335]", "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": "[unused335]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused335" }, { - "label": "pooling_mode_cls_token", + "label": "[unused336]", "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": "[unused336]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused336" }, { - "label": "pooling_mode_mean_tokens", + "label": "[unused337]", "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": "[unused337]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused337" }, { - "label": "pooling_mode_max_tokens", + "label": "[unused338]", "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": "[unused338]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused338" }, { - "label": "pooling_mode_mean_sqrt_len_tokens", + "label": "[unused339]", "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": "[unused339]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused339" }, { - "label": "conftest.py", + "label": "[unused340]", "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": "[unused340]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused340" }, { - "label": "_reset_rate_limiter()", + "label": "[unused341]", "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": "[unused341]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused341" }, { - "label": "pytest_configure()", + "label": "[unused342]", "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": "[unused342]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused342" }, { - "label": "_patch_secret_key()", + "label": "[unused343]", "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": "[unused343]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused343" }, { - "label": "dbSession()", + "label": "[unused344]", "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": "[unused344]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused344" }, { - "label": "sampleUserData()", + "label": "[unused345]", "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": "[unused345]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused345" }, { - "label": "sampleAPIKeyData()", + "label": "[unused346]", "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": "[unused346]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused346" }, { - "label": "samplePrometheusSessionData()", + "label": "[unused347]", "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": "[unused347]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused347" }, { - "label": "stocks_http_client()", + "label": "[unused348]", "file_type": "code", - "source_file": "tests/conftest.py", - "source_location": "L81", - "community": 535, - "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": "[unused348]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused348" }, { - "label": "client()", + "label": "[unused349]", "file_type": "code", - "source_file": "tests/conftest.py", - "source_location": "L106", - "community": 535, - "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": "[unused349]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused349" }, { - "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": "[unused350]", + "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" }, { - "label": "TestClient with stocks router + verifyAPIKey + getCurrentUser overrides.", - "file_type": "rationale", - "source_file": "tests/conftest.py", - "source_location": "L82", - "community": 535, - "norm_label": "testclient with stocks router + verifyapikey + getcurrentuser overrides.", - "id": "tests_conftest_rationale_82" + "label": "[unused351]", + "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" }, { - "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": 535, - "norm_label": "testclient with all routers mounted \u2014 no lifespan (no db/service init). o", - "id": "tests_conftest_rationale_107" + "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": "test_agent_sandbox_integration.py", + "label": "[unused353]", "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": "[unused353]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused353" }, { - "label": "TestPersistentSandboxLifecycle", + "label": "[unused354]", "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": "[unused354]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused354" }, { - "label": "test_stream_persists_sandbox()", + "label": "[unused355]", "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": "[unused355]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused355" }, { - "label": "test_sync_empty_workspace_skips_push()", + "label": "[unused356]", "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": "[unused356]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused356" }, { - "label": "test_no_create_in_agent_source()", + "label": "[unused357]", "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": "[unused357]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused357" }, { - "label": "Tests for agent <-> persistent sandbox integration (Task 3).", - "file_type": "rationale", - "source_file": "tests/test_agent_sandbox_integration.py", + "label": "[unused358]", + "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": "[unused358]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused358" }, { - "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": "[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": "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": "[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": "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": "[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": "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": "[unused362]", + "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" }, { - "label": "test_agent_state_integration.py", + "label": "[unused363]", "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": "[unused363]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused363" }, { - "label": "TestBuildSystemPromptState", + "label": "[unused364]", "file_type": "code", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L7", - "community": 504, - "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": "[unused364]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused364" }, { - "label": ".test_build_system_prompt_no_state()", + "label": "[unused365]", "file_type": "code", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L8", - "community": 504, - "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": "[unused365]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused365" }, { - "label": ".test_build_system_prompt_with_state()", + "label": "[unused366]", "file_type": "code", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L13", - "community": 504, - "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": "[unused366]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused366" }, { - "label": ".test_build_system_prompt_empty_state()", + "label": "[unused367]", "file_type": "code", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L21", - "community": 504, - "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": "[unused367]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused367" }, { - "label": ".test_build_system_prompt_state_after_memories()", + "label": "[unused368]", "file_type": "code", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L27", - "community": 504, - "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": "[unused368]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused368" }, { - "label": ".test_build_system_prompt_multiple_state_entries()", + "label": "[unused369]", "file_type": "code", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L37", - "community": 504, - "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": "[unused369]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused369" }, { - "label": "TestSendMessageStateIntegration", + "label": "[unused370]", "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": "[unused370]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused370" }, { - "label": "test_send_message_creates_harness_state()", + "label": "[unused371]", "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": "[unused371]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused371" }, { - "label": "TestStreamMessageStateIntegration", + "label": "[unused372]", "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": "[unused372]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused372" }, { - "label": "test_stream_message_creates_harness_state()", + "label": "[unused373]", "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": "[unused373]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused373" }, { - "label": "test_stream_message_passes_state_to_dispatch()", + "label": "[unused374]", "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": "[unused374]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused374" }, { - "label": "TestSystemPromptStateInstructions", + "label": "[unused375]", "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": "[unused375]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused375" }, { - "label": ".test_system_prompt_has_harness_state_section()", + "label": "[unused376]", "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": "[unused376]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused376" }, { - "label": ".test_system_prompt_has_memory_sync_section()", + "label": "[unused377]", "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" - }, - { - "label": "System prompt should work without state parameter.", - "file_type": "rationale", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L9", - "community": 504, - "norm_label": "system prompt should work without state parameter.", - "id": "tests_test_agent_state_integration_rationale_9" + "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": "System prompt should include state context when provided.", - "file_type": "rationale", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L14", - "community": 504, - "norm_label": "system prompt should include state context when provided.", - "id": "tests_test_agent_state_integration_rationale_14" + "label": "[unused378]", + "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" }, { - "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": 504, - "norm_label": "system prompt should not include state section when empty.", - "id": "tests_test_agent_state_integration_rationale_22" + "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": "State section should appear after memories section.", - "file_type": "rationale", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L28", - "community": 504, - "norm_label": "state section should appear after memories section.", - "id": "tests_test_agent_state_integration_rationale_28" + "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": "All state entries should appear in the prompt.", - "file_type": "rationale", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L38", - "community": 504, - "norm_label": "all state entries should appear in the prompt.", - "id": "tests_test_agent_state_integration_rationale_38" + "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": "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": "[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": "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": "[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": "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": "[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": "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": "[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": "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": "[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_api_key_quota_atomic.py", + "label": "[unused387]", "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": 604, - "norm_label": "test_api_key_quota_atomic.py", - "id": "tests_test_api_key_quota_atomic_py" + "community": 0, + "norm_label": "[unused387]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused387" }, { - "label": "sampleKeyData()", + "label": "[unused388]", "file_type": "code", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L18", - "community": 604, - "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": "[unused388]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused388" }, { - "label": "TestAtomicQuotaIncrement", + "label": "[unused389]", "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": "[unused389]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused389" }, { - "label": ".test_normal_quota_check_works()", + "label": "[unused390]", "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": "[unused390]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused390" }, { - "label": ".test_atomic_increment_prevents_overuse()", + "label": "[unused391]", "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": "[unused391]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused391" }, { - "label": ".test_concurrent_requests_serialized_at_db_level()", + "label": "[unused392]", "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": "[unused392]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused392" }, { - "label": ".test_request_at_exact_quota_limit()", + "label": "[unused393]", "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": "[unused393]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused393" }, { - "label": ".test_invalid_api_key_returns_zero_rows()", + "label": "[unused394]", "file_type": "code", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L150", - "community": 608, - "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": "[unused394]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused394" }, { - "label": ".test_multiple_keys_independent_quotas()", + "label": "[unused395]", "file_type": "code", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L164", - "community": 608, - "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": "[unused395]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused395" }, { - "label": ".test_increment_from_zero()", + "label": "[unused396]", "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": "[unused396]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused396" }, { - "label": "TestVerifyAPIKeyIntegration", + "label": "[unused397]", "file_type": "code", - "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" + "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_api_key_success()", + "label": "[unused398]", "file_type": "code", - "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" + "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_api_key_quota_exceeded()", + "label": "[unused399]", "file_type": "code", - "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" + "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_api_key_invalid()", + "label": "[unused400]", "file_type": "code", - "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" + "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_api_key_missing()", + "label": "[unused401]", "file_type": "code", - "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" + "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_verify_api_key_disabled()", + "label": "[unused402]", "file_type": "code", - "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" + "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": "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": "[unused403]", + "file_type": "code", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 604, - "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": "[unused403]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused403" }, { - "label": "Sample API key data for tests.", - "file_type": "rationale", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L19", - "community": 604, - "norm_label": "sample api key data for tests.", - "id": "tests_test_api_key_quota_atomic_rationale_19" + "label": "[unused404]", + "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" }, { - "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": "[unused405]", + "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" }, { - "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": "[unused406]", + "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" }, { - "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": "[unused407]", + "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" }, { - "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": "[unused408]", + "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" }, { - "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": "[unused409]", + "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" }, { - "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": 608, - "norm_label": "test that invalid api key returns zero rows affected.", - "id": "tests_test_api_key_quota_atomic_rationale_151" + "label": "[unused410]", + "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" }, { - "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": 608, - "norm_label": "test that multiple api keys have independent quotas.", - "id": "tests_test_api_key_quota_atomic_rationale_165" + "label": "[unused411]", + "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" }, { - "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": "[unused412]", + "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" }, { - "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": "[unused413]", + "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" }, { - "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": "[unused414]", + "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" }, { - "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": "[unused415]", + "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" }, { - "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": "[unused416]", + "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" }, { - "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": "[unused417]", + "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" }, { - "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": "[unused418]", + "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" }, { - "label": "test_auth_util.py", + "label": "[unused419]", "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": 560, - "norm_label": "test_auth_util.py", - "id": "tests_test_auth_util_py" + "community": 0, + "norm_label": "[unused419]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused419" }, { - "label": "TestAuthUtil", + "label": "[unused420]", "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": "[unused420]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused420" }, { - "label": ".test_hash_password_returns_string()", + "label": "[unused421]", "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": "[unused421]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused421" }, { - "label": ".test_hash_password_unique_hashes()", + "label": "[unused422]", "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": "[unused422]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused422" }, { - "label": ".test_verify_password_correct()", + "label": "[unused423]", "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": "[unused423]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused423" }, { - "label": ".test_verify_password_incorrect()", + "label": "[unused424]", "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": "[unused424]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused424" }, { - "label": ".test_verify_password_invalid_hash()", + "label": "[unused425]", "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": "[unused425]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused425" }, { - "label": ".test_verify_password_empty_password()", + "label": "[unused426]", "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": "[unused426]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused426" }, { - "label": ".test_create_access_token_default_expiry()", + "label": "[unused427]", "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": "[unused427]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused427" }, { - "label": ".test_create_access_token_custom_expiry()", + "label": "[unused428]", "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": "[unused428]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused428" }, { - "label": ".test_create_access_token_contains_data()", + "label": "[unused429]", "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": "[unused429]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused429" }, { - "label": "TestSessionExpiryConfig", + "label": "[unused430]", "file_type": "code", - "source_file": "tests/test_auth_util.py", - "source_location": "L69", - "community": 560, - "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": "[unused430]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused430" }, { - "label": ".test_session_expiry_days_is_30()", + "label": "[unused431]", "file_type": "code", - "source_file": "tests/test_auth_util.py", - "source_location": "L70", - "community": 560, - "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": "[unused431]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused431" }, { - "label": ".test_session_expiry_hours_calculation()", + "label": "[unused432]", "file_type": "code", - "source_file": "tests/test_auth_util.py", - "source_location": "L73", - "community": 560, - "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": "[unused432]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused432" }, { - "label": ".test_default_token_expiry_equals_30_days()", + "label": "[unused433]", "file_type": "code", - "source_file": "tests/test_auth_util.py", - "source_location": "L78", - "community": 560, - "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": "[unused433]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused433" }, { - "label": "TestAuthUtilEdgeCases", + "label": "[unused434]", "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": "[unused434]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused434" }, { - "label": ".test_verify_password_none_hash()", + "label": "[unused435]", "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": "[unused435]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused435" }, { - "label": ".test_verify_password_none_password()", + "label": "[unused436]", "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": "[unused436]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused436" }, { - "label": ".test_verify_password_both_none()", + "label": "[unused437]", "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": "[unused437]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused437" }, { - "label": ".test_create_access_token_with_empty_data()", + "label": "[unused438]", "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": "[unused438]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused438" }, { - "label": ".test_create_access_token_with_none_data()", + "label": "[unused439]", "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": "[unused439]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused439" }, { - "label": "test_config.py", + "label": "[unused440]", "file_type": "code", - "source_file": "tests/test_config.py", + "source_file": "main/utils/models/all-MiniLM-L6-v2/tokenizer.json", "source_location": "L1", - "community": 586, - "norm_label": "test_config.py", - "id": "tests_test_config_py" + "community": 0, + "norm_label": "[unused440]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused440" }, { - "label": "TestConfig", + "label": "[unused441]", "file_type": "code", - "source_file": "tests/test_config.py", - "source_location": "L5", - "community": 586, - "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": "[unused441]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused441" }, { - "label": ".test_stocks_api_getitem()", + "label": "[unused442]", "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": "[unused442]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused442" }, { - "label": ".test_prometheus_getitem()", + "label": "[unused443]", "file_type": "code", - "source_file": "tests/test_config.py", - "source_location": "L12", - "community": 586, - "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": "[unused443]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused443" }, { - "label": ".test_scraper_getitem()", + "label": "[unused444]", "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": "[unused444]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused444" }, { - "label": ".test_base_mansa_settings_get()", + "label": "[unused445]", "file_type": "code", - "source_file": "tests/test_config.py", - "source_location": "L22", - "community": 586, - "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": "[unused445]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused445" }, { - "label": "test_connectivity_coverage.py", + "label": "[unused446]", "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": "[unused446]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused446" }, { - "label": "TestCheckMySqlConnection", + "label": "[unused447]", "file_type": "code", - "source_file": "tests/test_connectivity_coverage.py", - "source_location": "L8", - "community": 624, - "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": "[unused447]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused447" }, { - "label": "test_both_engines_ok()", + "label": "[unused448]", "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": "[unused448]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused448" }, { - "label": "test_user_db_connection_error()", + "label": "[unused449]", "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": "[unused449]", + "id": "all_minilm_l6_v2_tokenizer_vocab_unused449" }, { - "label": "test_user_db_timeout()", + "label": "tokenizer_config.json", "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_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_user_db_generic_exception()", + "label": "do_lower_case", "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_config.json", + "source_location": "L1", + "community": 109, + "norm_label": "do_lower_case", + "id": "all_minilm_l6_v2_tokenizer_config_do_lower_case" }, { - "label": "test_user_engine_none()", + "label": "unk_token", "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_config.json", + "source_location": "L1", + "community": 109, + "norm_label": "unk_token", + "id": "all_minilm_l6_v2_tokenizer_config_unk_token" }, { - "label": "test_stocks_db_connection_error()", + "label": "sep_token", "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_config.json", + "source_location": "L1", + "community": 109, + "norm_label": "sep_token", + "id": "all_minilm_l6_v2_tokenizer_config_sep_token" }, { - "label": "test_stocks_db_timeout()", + "label": "pad_token", "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_config.json", + "source_location": "L1", + "community": 109, + "norm_label": "pad_token", + "id": "all_minilm_l6_v2_tokenizer_config_pad_token" }, { - "label": "test_stocks_db_generic_exception()", + "label": "cls_token", "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_config.json", + "source_location": "L1", + "community": 109, + "norm_label": "cls_token", + "id": "all_minilm_l6_v2_tokenizer_config_cls_token" }, { - "label": "test_stocks_engine_none()", + "label": "mask_token", "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_config.json", + "source_location": "L1", + "community": 109, + "norm_label": "mask_token", + "id": "all_minilm_l6_v2_tokenizer_config_mask_token" }, { - "label": "TestCheckServiceConnection", + "label": "tokenize_chinese_chars", "file_type": "code", - "source_file": "tests/test_connectivity_coverage.py", - "source_location": "L114", - "community": 623, - "norm_label": "testcheckserviceconnection", - "id": "tests_test_connectivity_coverage_testcheckserviceconnection" + "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_service_not_found()", + "label": "strip_accents", "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_config.json", + "source_location": "L1", + "community": 109, + "norm_label": "strip_accents", + "id": "all_minilm_l6_v2_tokenizer_config_strip_accents" }, { - "label": "test_stocks_api_health_ok()", + "label": "name_or_path", "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_config.json", + "source_location": "L1", + "community": 109, + "norm_label": "name_or_path", + "id": "all_minilm_l6_v2_tokenizer_config_name_or_path" }, { - "label": "test_non_stocks_prefix()", + "label": "do_basic_tokenize", "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_config.json", + "source_location": "L1", + "community": 109, + "norm_label": "do_basic_tokenize", + "id": "all_minilm_l6_v2_tokenizer_config_do_basic_tokenize" }, { - "label": "test_non_200_status()", + "label": "never_split", "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_config.json", + "source_location": "L1", + "community": 109, + "norm_label": "never_split", + "id": "all_minilm_l6_v2_tokenizer_config_never_split" }, { - "label": "test_connection_error()", + "label": "tokenizer_class", "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_config.json", + "source_location": "L1", + "community": 109, + "norm_label": "tokenizer_class", + "id": "all_minilm_l6_v2_tokenizer_config_tokenizer_class" }, { - "label": "test_timeout()", + "label": "model_max_length", "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_config.json", + "source_location": "L1", + "community": 109, + "norm_label": "model_max_length", + "id": "all_minilm_l6_v2_tokenizer_config_model_max_length" }, { - "label": "test_request_exception()", + "label": "config.json", "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/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_generic_exception()", + "label": "word_embedding_dimension", "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": "Tests for main/utils/connectivity.py \u2014 covers all branches.", - "file_type": "rationale", - "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" + "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": "checkMySqlConnection \u2014 success, errors, engine=None paths.", - "file_type": "rationale", - "source_file": "tests/test_connectivity_coverage.py", - "source_location": "L9", - "community": 624, - "norm_label": "checkmysqlconnection \u2014 success, errors, engine=none paths.", - "id": "tests_test_connectivity_coverage_rationale_9" + "label": "pooling_mode_cls_token", + "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" }, { - "label": "checkServiceConnection \u2014 success, not found, errors.", - "file_type": "rationale", - "source_file": "tests/test_connectivity_coverage.py", - "source_location": "L115", - "community": 623, - "norm_label": "checkserviceconnection \u2014 success, not found, errors.", - "id": "tests_test_connectivity_coverage_rationale_115" + "label": "pooling_mode_mean_tokens", + "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" }, { - "label": "test_controllers_coverage.py", + "label": "pooling_mode_max_tokens", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1", - "community": 120, - "norm_label": "test_controllers_coverage.py", - "id": "tests_test_controllers_coverage_py" + "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": "_make_auth_client()", + "label": "pooling_mode_mean_sqrt_len_tokens", "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/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": "_make_user_client()", + "label": "conftest.py", "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": "tests/conftest.py", + "source_location": "L1", + "community": 561, + "norm_label": "conftest.py", + "id": "tests_conftest_py" }, { - "label": "_make_prometheus_client()", + "label": "_reset_rate_limiter()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L57", - "community": 99, - "norm_label": "_make_prometheus_client()", - "id": "tests_test_controllers_coverage_make_prometheus_client" + "source_file": "tests/conftest.py", + "source_location": "L13", + "community": 561, + "norm_label": "_reset_rate_limiter()", + "id": "tests_conftest_reset_rate_limiter" }, { - "label": "_make_stocksapi_client()", + "label": "pytest_configure()", "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": "tests/conftest.py", + "source_location": "L20", + "community": 561, + "norm_label": "pytest_configure()", + "id": "tests_conftest_pytest_configure" }, { - "label": "TestIsSecureScheme", + "label": "_patch_secret_key()", "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": "tests/conftest.py", + "source_location": "L33", + "community": 561, + "norm_label": "_patch_secret_key()", + "id": "tests_conftest_patch_secret_key" }, { - "label": ".test_is_secure_https()", + "label": "dbSession()", "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": "tests/conftest.py", + "source_location": "L48", + "community": 561, + "norm_label": "dbsession()", + "id": "tests_conftest_dbsession" }, { - "label": ".test_is_secure_http()", + "label": "sampleUserData()", "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": "tests/conftest.py", + "source_location": "L60", + "community": 561, + "norm_label": "sampleuserdata()", + "id": "tests_conftest_sampleuserdata" }, { - "label": ".test_is_secure_no_scheme()", + "label": "sampleAPIKeyData()", "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": "tests/conftest.py", + "source_location": "L71", + "community": 561, + "norm_label": "sampleapikeydata()", + "id": "tests_conftest_sampleapikeydata" }, { - "label": "TestHealthEndpoint", + "label": "samplePrometheusSessionData()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L130", - "community": 45, - "norm_label": "testhealthendpoint", - "id": "tests_test_controllers_coverage_testhealthendpoint" + "source_file": "tests/conftest.py", + "source_location": "L76", + "community": 561, + "norm_label": "sampleprometheussessiondata()", + "id": "tests_conftest_sampleprometheussessiondata" }, { - "label": ".test_health_returns_ok()", + "label": "stocks_http_client()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L133", - "community": 45, - "norm_label": ".test_health_returns_ok()", - "id": "tests_test_controllers_coverage_testhealthendpoint_test_health_returns_ok" + "source_file": "tests/conftest.py", + "source_location": "L81", + "community": 544, + "norm_label": "stocks_http_client()", + "id": "tests_conftest_stocks_http_client" }, { - "label": "TestRegisterEndpoint", + "label": "client()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L146", - "community": 45, - "norm_label": "testregisterendpoint", - "id": "tests_test_controllers_coverage_testregisterendpoint" + "source_file": "tests/conftest.py", + "source_location": "L106", + "community": 544, + "norm_label": "client()", + "id": "tests_conftest_client" }, { - "label": "test_register_success()", - "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" + "label": "Reset slowapi in-memory rate limiter between every test.", + "file_type": "rationale", + "source_file": "tests/conftest.py", + "source_location": "L14", + "community": 561, + "norm_label": "reset slowapi in-memory rate limiter between every test.", + "id": "tests_conftest_rationale_14" }, { - "label": "test_register_auto_login_fails()", - "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" + "label": "Set required env vars before test collection. config.py eagerly instantia", + "file_type": "rationale", + "source_file": "tests/conftest.py", + "source_location": "L21", + "community": 561, + "norm_label": "set required env vars before test collection. config.py eagerly instantia", + "id": "tests_conftest_rationale_21" }, { - "label": "test_register_value_error()", - "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" + "label": "TestClient with stocks router + verifyAPIKey + getCurrentUser overrides.", + "file_type": "rationale", + "source_file": "tests/conftest.py", + "source_location": "L82", + "community": 544, + "norm_label": "testclient with stocks router + verifyapikey + getcurrentuser overrides.", + "id": "tests_conftest_rationale_82" }, { - "label": "test_register_generic_exception()", - "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" + "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": 544, + "norm_label": "testclient with all routers mounted \u2014 no lifespan (no db/service init). o", + "id": "tests_conftest_rationale_107" }, { - "label": "TestLoginEndpoint", + "label": "test_agent_sandbox_integration.py", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L215", - "community": 45, - "norm_label": "testloginendpoint", - "id": "tests_test_controllers_coverage_testloginendpoint" + "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_login_success()", + "label": "TestPersistentSandboxLifecycle", "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": "tests/test_agent_sandbox_integration.py", + "source_location": "L10", + "community": 24, + "norm_label": "testpersistentsandboxlifecycle", + "id": "tests_test_agent_sandbox_integration_testpersistentsandboxlifecycle" }, { - "label": "test_login_wrong_credentials()", + "label": "test_stream_persists_sandbox()", "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": "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": "TestLogoutEndpoint", + "label": "test_sync_empty_workspace_skips_push()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L257", - "community": 45, - "norm_label": "testlogoutendpoint", - "id": "tests_test_controllers_coverage_testlogoutendpoint" + "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": "test_logout_with_x_access_token()", + "label": "test_no_create_in_agent_source()", "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": "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_logout_with_bearer_header()", - "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" + "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_logout_with_invalid_session_id()", - "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" + "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": "test_logout_with_verification_error()", - "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" + "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_logout_without_token()", - "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" + "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": "test_logout_with_missing_user_and_session()", - "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" + "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": "TestGoogleLogin", + "label": "test_agent_state_integration.py", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L344", - "community": 45, - "norm_label": "testgooglelogin", - "id": "tests_test_controllers_coverage_testgooglelogin" + "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_google_login_with_redirect_url()", + "label": "TestBuildSystemPromptState", "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/test_agent_state_integration.py", + "source_location": "L7", + "community": 8, + "norm_label": "testbuildsystempromptstate", + "id": "tests_test_agent_state_integration_testbuildsystempromptstate" }, { - "label": "test_google_login_with_referer()", + "label": ".test_build_system_prompt_no_state()", "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/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": "TestGoogleCallback", + "label": ".test_build_system_prompt_with_state()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L390", - "community": 45, - "norm_label": "testgooglecallback", - "id": "tests_test_controllers_coverage_testgooglecallback" + "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_callback_new_user()", + "label": ".test_build_system_prompt_empty_state()", "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/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_callback_existing_user()", + "label": ".test_build_system_prompt_state_after_memories()", "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/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": "test_callback_no_user_info()", + "label": ".test_build_system_prompt_multiple_state_entries()", "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/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_callback_with_state_redirect()", + "label": "TestSendMessageStateIntegration", "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/test_agent_state_integration.py", + "source_location": "L47", + "community": 93, + "norm_label": "testsendmessagestateintegration", + "id": "tests_test_agent_state_integration_testsendmessagestateintegration" }, { - "label": "test_callback_generic_exception()", + "label": "test_send_message_creates_harness_state()", "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/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": "TestUserHealth", + "label": "TestStreamMessageStateIntegration", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L527", - "community": 45, - "norm_label": "testuserhealth", - "id": "tests_test_controllers_coverage_testuserhealth" + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L84", + "community": 93, + "norm_label": "teststreammessagestateintegration", + "id": "tests_test_agent_state_integration_teststreammessagestateintegration" }, { - "label": ".test_health()", + "label": "test_stream_message_creates_harness_state()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L530", - "community": 45, - "norm_label": ".test_health()", - "id": "tests_test_controllers_coverage_testuserhealth_test_health" + "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": "TestGetMe", + "label": "test_stream_message_passes_state_to_dispatch()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L541", - "community": 47, - "norm_label": "testgetme", - "id": "tests_test_controllers_coverage_testgetme" + "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": ".test_get_me()", + "label": "TestSystemPromptStateInstructions", "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" + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L186", + "community": 93, + "norm_label": "testsystempromptstateinstructions", + "id": "tests_test_agent_state_integration_testsystempromptstateinstructions" }, { - "label": "TestUpgradeEndpoints", + "label": ".test_system_prompt_has_harness_state_section()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L555", - "community": 47, - "norm_label": "testupgradeendpoints", - "id": "tests_test_controllers_coverage_testupgradeendpoints" + "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": ".test_upgrade_developer_starter_success()", + "label": ".test_system_prompt_has_memory_sync_section()", "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_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_upgrade_developer_starter_already_developer()", - "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" + "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_upgrade_developer_enterprise_success()", - "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" + "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_upgrade_developer_enterprise_already_developer()", - "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" + "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": "TestAdminAccess", - "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L595", - "community": 47, - "norm_label": "testadminaccess", - "id": "tests_test_controllers_coverage_testadminaccess" + "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_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": "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_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": "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": "TestGetSessions", - "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L614", - "community": 541, - "norm_label": "testgetsessions", - "id": "tests_test_controllers_coverage_testgetsessions" + "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_get_sessions()", - "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L617", - "community": 541, - "norm_label": ".test_get_sessions()", - "id": "tests_test_controllers_coverage_testgetsessions_test_get_sessions" + "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": "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": "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": ".test_get_current_session_found()", - "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" + "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_get_current_session_not_found()", + "label": "test_api_key_quota_atomic.py", "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_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": "TestRevokeSession", + "label": "sampleKeyData()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L727", - "community": 120, - "norm_label": "testrevokesession", - "id": "tests_test_controllers_coverage_testrevokesession" + "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_revoke_session_success()", + "label": "TestAtomicQuotaIncrement", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L730", - "community": 120, - "norm_label": ".test_revoke_session_success()", - "id": "tests_test_controllers_coverage_testrevokesession_test_revoke_session_success" + "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_revoke_session_not_found()", + "label": ".test_normal_quota_check_works()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L757", - "community": 120, - "norm_label": ".test_revoke_session_not_found()", - "id": "tests_test_controllers_coverage_testrevokesession_test_revoke_session_not_found" + "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": ".test_revoke_session_failure()", + "label": ".test_atomic_increment_prevents_overuse()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L779", - "community": 120, - "norm_label": ".test_revoke_session_failure()", - "id": "tests_test_controllers_coverage_testrevokesession_test_revoke_session_failure" + "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": "TestRevokeAllSessions", + "label": ".test_concurrent_requests_serialized_at_db_level()", "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_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": ".test_revoke_all_sessions()", + "label": ".test_request_at_exact_quota_limit()", "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_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": "TestPrometheusHealth", + "label": ".test_invalid_api_key_returns_zero_rows()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L835", - "community": 45, - "norm_label": "testprometheushealth", - "id": "tests_test_controllers_coverage_testprometheushealth" + "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": ".test_health()", + "label": ".test_multiple_keys_independent_quotas()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L838", - "community": 45, - "norm_label": ".test_health()", - "id": "tests_test_controllers_coverage_testprometheushealth_test_health" + "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": "TestPrometheusGetSessions", + "label": ".test_increment_from_zero()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L849", - "community": 99, - "norm_label": "testprometheusgetsessions", - "id": "tests_test_controllers_coverage_testprometheusgetsessions" + "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": ".test_get_sessions()", + "label": "TestVerifyAPIKeyIntegration", "file_type": "code", - "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" + "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": "TestPrometheusCreateSession", + "label": ".test_verify_api_key_success()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L867", - "community": 99, - "norm_label": "testprometheuscreatesession", - "id": "tests_test_controllers_coverage_testprometheuscreatesession" + "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_create_session()", + "label": ".test_verify_api_key_quota_exceeded()", "file_type": "code", - "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" + "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": "TestPrometheusUpdateSessionTitle", + "label": ".test_verify_api_key_invalid()", "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_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": ".test_update_title_success()", + "label": ".test_verify_api_key_missing()", "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" + "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_update_title_not_owner()", + "label": ".test_verify_api_key_disabled()", "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" + "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_update_title_not_found()", + "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": "L904", - "community": 99, - "norm_label": ".test_update_title_not_found()", - "id": "tests_test_controllers_coverage_testprometheusupdatesessiontitle_test_update_title_not_found" + "source_file": "tests/test_auth_util.py", + "source_location": "L1", + "community": 107, + "norm_label": "test_auth_util.py", + "id": "tests_test_auth_util_py" }, { - "label": "TestPrometheusGetHistory", + "label": "TestAuthUtil", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L915", - "community": 256, - "norm_label": "testprometheusgethistory", - "id": "tests_test_controllers_coverage_testprometheusgethistory" + "source_file": "tests/test_auth_util.py", + "source_location": "L14", + "community": 43, + "norm_label": "testauthutil", + "id": "tests_test_auth_util_testauthutil" }, { - "label": ".test_get_history_found()", + "label": ".test_hash_password_returns_string()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L918", - "community": 256, - "norm_label": ".test_get_history_found()", - "id": "tests_test_controllers_coverage_testprometheusgethistory_test_get_history_found" + "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": ".test_get_history_not_found()", + "label": ".test_hash_password_unique_hashes()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L962", - "community": 256, - "norm_label": ".test_get_history_not_found()", - "id": "tests_test_controllers_coverage_testprometheusgethistory_test_get_history_not_found" + "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": "TestPrometheusDeleteSession", + "label": ".test_verify_password_correct()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L997", - "community": 99, - "norm_label": "testprometheusdeletesession", - "id": "tests_test_controllers_coverage_testprometheusdeletesession" + "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_delete_session_success()", + "label": ".test_verify_password_incorrect()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1000", - "community": 99, - "norm_label": ".test_delete_session_success()", - "id": "tests_test_controllers_coverage_testprometheusdeletesession_test_delete_session_success" + "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_delete_session_not_found()", + "label": ".test_verify_password_invalid_hash()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1010", - "community": 99, - "norm_label": ".test_delete_session_not_found()", - "id": "tests_test_controllers_coverage_testprometheusdeletesession_test_delete_session_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": "TestPrometheusChat", + "label": ".test_verify_password_empty_password()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1020", - "community": 148, - "norm_label": "testprometheuschat", - "id": "tests_test_controllers_coverage_testprometheuschat" + "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_chat_new_session()", + "label": ".test_create_access_token_default_expiry()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1023", - "community": 148, - "norm_label": ".test_chat_new_session()", - "id": "tests_test_controllers_coverage_testprometheuschat_test_chat_new_session" + "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": ".test_chat_existing_session_verified()", + "label": ".test_create_access_token_custom_expiry()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1042", - "community": 148, - "norm_label": ".test_chat_existing_session_verified()", - "id": "tests_test_controllers_coverage_testprometheuschat_test_chat_existing_session_verified" + "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_chat_existing_session_not_owner()", + "label": ".test_create_access_token_contains_data()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1085", - "community": 148, - "norm_label": ".test_chat_existing_session_not_owner()", - "id": "tests_test_controllers_coverage_testprometheuschat_test_chat_existing_session_not_owner" + "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": ".test_chat_generic_exception()", + "label": "TestSessionExpiryConfig", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1121", - "community": 99, - "norm_label": ".test_chat_generic_exception()", - "id": "tests_test_controllers_coverage_testprometheuschat_test_chat_generic_exception" + "source_file": "tests/test_auth_util.py", + "source_location": "L69", + "community": 107, + "norm_label": "testsessionexpiryconfig", + "id": "tests_test_auth_util_testsessionexpiryconfig" }, { - "label": "TestStocksApiHealth", + "label": ".test_session_expiry_days_is_30()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1144", - "community": 605, - "norm_label": "teststocksapihealth", - "id": "tests_test_controllers_coverage_teststocksapihealth" + "source_file": "tests/test_auth_util.py", + "source_location": "L70", + "community": 107, + "norm_label": ".test_session_expiry_days_is_30()", + "id": "tests_test_auth_util_testsessionexpiryconfig_test_session_expiry_days_is_30" }, { - "label": ".test_health()", + "label": ".test_session_expiry_hours_calculation()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1147", - "community": 605, - "norm_label": ".test_health()", - "id": "tests_test_controllers_coverage_teststocksapihealth_test_health" + "source_file": "tests/test_auth_util.py", + "source_location": "L73", + "community": 107, + "norm_label": ".test_session_expiry_hours_calculation()", + "id": "tests_test_auth_util_testsessionexpiryconfig_test_session_expiry_hours_calculation" }, { - "label": "TestStocksApiHistorical", + "label": ".test_default_token_expiry_equals_30_days()", "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_auth_util.py", + "source_location": "L78", + "community": 107, + "norm_label": ".test_default_token_expiry_equals_30_days()", + "id": "tests_test_auth_util_testsessionexpiryconfig_test_default_token_expiry_equals_30_days" }, { - "label": ".test_get_historical()", + "label": "TestAuthUtilEdgeCases", "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_auth_util.py", + "source_location": "L89", + "community": 43, + "norm_label": "testauthutiledgecases", + "id": "tests_test_auth_util_testauthutiledgecases" }, { - "label": "TestStocksApiFundamental", + "label": ".test_verify_password_none_hash()", "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_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_get_fundamental()", + "label": ".test_verify_password_none_password()", "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_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": "TestStocksApiGenerateKey", + "label": ".test_verify_password_both_none()", "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_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": ".test_generate_key_permission_error()", + "label": ".test_create_access_token_with_empty_data()", "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_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": ".test_generate_key_admin_bypasses_permission_check()", + "label": ".test_create_access_token_with_none_data()", "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_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": ".test_generate_key_exception()", + "label": "test_config.py", "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_config.py", + "source_location": "L1", + "community": 102, + "norm_label": "test_config.py", + "id": "tests_test_config_py" }, { - "label": "TestAddRoleToUser", + "label": "TestConfig", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1229", - "community": 568, - "norm_label": "testaddroletouser", - "id": "tests_test_controllers_coverage_testaddroletouser" + "source_file": "tests/test_config.py", + "source_location": "L5", + "community": 102, + "norm_label": "testconfig", + "id": "tests_test_config_testconfig" }, { - "label": ".test_add_role_success()", + "label": ".test_stocks_api_getitem()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1232", - "community": 568, - "norm_label": ".test_add_role_success()", - "id": "tests_test_controllers_coverage_testaddroletouser_test_add_role_success" + "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": ".test_add_role_already_has_role()", + "label": ".test_prometheus_getitem()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1249", - "community": 493, - "norm_label": ".test_add_role_already_has_role()", - "id": "tests_test_controllers_coverage_testaddroletouser_test_add_role_already_has_role" + "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": ".test_add_role_user_not_found()", + "label": ".test_scraper_getitem()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1263", - "community": 568, - "norm_label": ".test_add_role_user_not_found()", - "id": "tests_test_controllers_coverage_testaddroletouser_test_add_role_user_not_found" + "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": "TestGetCurrentUser", + "label": ".test_base_mansa_settings_get()", "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_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": "._make_mock_request()", + "label": "test_connectivity_coverage.py", "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_connectivity_coverage.py", + "source_location": "L1", + "community": 59, + "norm_label": "test_connectivity_coverage.py", + "id": "tests_test_connectivity_coverage_py" }, { - "label": ".test_get_current_user_valid_session()", + "label": "TestCheckMySqlConnection", "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_connectivity_coverage.py", + "source_location": "L8", + "community": 59, + "norm_label": "testcheckmysqlconnection", + "id": "tests_test_connectivity_coverage_testcheckmysqlconnection" }, { - "label": ".test_get_current_user_session_revoked()", + "label": "test_both_engines_ok()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1307", - "community": 493, - "norm_label": ".test_get_current_user_session_revoked()", - "id": "tests_test_controllers_coverage_testgetcurrentuser_test_get_current_user_session_revoked" + "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": ".test_get_current_user_not_found()", + "label": "test_user_db_connection_error()", "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_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": ".test_get_current_user_generic_exception()", + "label": "test_user_db_timeout()", "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_connectivity_coverage.py", + "source_location": "L36", + "community": 59, + "norm_label": "test_user_db_timeout()", + "id": "tests_test_connectivity_coverage_test_user_db_timeout" }, { - "label": ".test_get_current_user_no_session_id()", + "label": "test_user_db_generic_exception()", "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_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": "TestHashPasswordEmpty", + "label": "test_user_engine_none()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1381", - "community": 45, - "norm_label": "testhashpasswordempty", - "id": "tests_test_controllers_coverage_testhashpasswordempty" + "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": ".test_empty_password_raises()", + "label": "test_stocks_db_connection_error()", "file_type": "code", - "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" + "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": "TestVerifyAccessToken", + "label": "test_stocks_db_timeout()", "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_connectivity_coverage.py", + "source_location": "L77", + "community": 59, + "norm_label": "test_stocks_db_timeout()", + "id": "tests_test_connectivity_coverage_test_stocks_db_timeout" }, { - "label": ".test_expired_token()", + "label": "test_stocks_db_generic_exception()", "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_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": ".test_invalid_token()", + "label": "test_stocks_engine_none()", "file_type": "code", - "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" + "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": "TestExtractTokenPayloadReRaise", + "label": "TestCheckServiceConnection", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1422", - "community": 114, - "norm_label": "testextracttokenpayloadreraise", - "id": "tests_test_controllers_coverage_testextracttokenpayloadreraise" + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L114", + "community": 59, + "norm_label": "testcheckserviceconnection", + "id": "tests_test_connectivity_coverage_testcheckserviceconnection" }, { - "label": ".test_http_exception_from_verify_propagates()", + "label": "test_service_not_found()", "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_connectivity_coverage.py", + "source_location": "L119", + "community": 59, + "norm_label": "test_service_not_found()", + "id": "tests_test_connectivity_coverage_test_service_not_found" }, { - "label": "TestManagerInit", + "label": "test_stocks_api_health_ok()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1441", - "community": 45, - "norm_label": "testmanagerinit", - "id": "tests_test_controllers_coverage_testmanagerinit" + "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": ".test_manager_init()", + "label": "test_non_stocks_prefix()", "file_type": "code", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1444", - "community": 45, - "norm_label": ".test_manager_init()", - "id": "tests_test_controllers_coverage_testmanagerinit_test_manager_init" + "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": "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_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": "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_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": "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_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": "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_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": "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_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 line 23: isSecureScheme helper.", + "label": "Tests for main/utils/connectivity.py \u2014 covers all branches.", "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" + "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 line 28: GET /auth/health.", + "label": "checkMySqlConnection \u2014 success, errors, engine=None paths.", "file_type": "rationale", - "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" + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L9", + "community": 59, + "norm_label": "checkmysqlconnection \u2014 success, errors, engine=none paths.", + "id": "tests_test_connectivity_coverage_rationale_9" }, { - "label": "Covers lines 44-54, 63, 66-71: register success, ValueError, generic Exception.", + "label": "checkServiceConnection \u2014 success, not found, errors.", "file_type": "rationale", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L147", - "community": 45, - "norm_label": "covers lines 44-54, 63, 66-71: register success, valueerror, generic exception.", - "id": "tests_test_controllers_coverage_rationale_147" + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L115", + "community": 59, + "norm_label": "checkserviceconnection \u2014 success, not found, errors.", + "id": "tests_test_connectivity_coverage_rationale_115" }, { - "label": "Covers lines 44-54, 63: successful registration + auto-login.", - "file_type": "rationale", + "label": "test_controllers_coverage.py", + "file_type": "code", "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" + "source_location": "L1", + "community": 120, + "norm_label": "test_controllers_coverage.py", + "id": "tests_test_controllers_coverage_py" }, { - "label": "Covers line 46: auto-login fails after registration.", - "file_type": "rationale", + "label": "_make_auth_client()", + "file_type": "code", "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" + "source_location": "L22", + "community": 120, + "norm_label": "_make_auth_client()", + "id": "tests_test_controllers_coverage_make_auth_client" }, { - "label": "Covers lines 66-68: ValueError during registration.", - "file_type": "rationale", + "label": "_make_user_client()", + "file_type": "code", "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" + "source_location": "L38", + "community": 47, + "norm_label": "_make_user_client()", + "id": "tests_test_controllers_coverage_make_user_client" }, { - "label": "Covers lines 69-71: generic Exception during registration.", - "file_type": "rationale", + "label": "_make_prometheus_client()", + "file_type": "code", "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" + "source_location": "L57", + "community": 99, + "norm_label": "_make_prometheus_client()", + "id": "tests_test_controllers_coverage_make_prometheus_client" }, { - "label": "Covers lines 87-93, 102: login success and failure paths.", - "file_type": "rationale", + "label": "_make_stocksapi_client()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L216", - "community": 45, - "norm_label": "covers lines 87-93, 102: login success and failure paths.", - "id": "tests_test_controllers_coverage_rationale_216" + "source_location": "L78", + "community": 14, + "norm_label": "_make_stocksapi_client()", + "id": "tests_test_controllers_coverage_make_stocksapi_client" }, { - "label": "Covers lines 87-93, 102: successful login.", - "file_type": "rationale", + "label": "TestIsSecureScheme", + "file_type": "code", "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" + "source_location": "L105", + "community": 58, + "norm_label": "testissecurescheme", + "id": "tests_test_controllers_coverage_testissecurescheme" }, { - "label": "Covers line 85: authenticateUser returns None.", - "file_type": "rationale", + "label": ".test_is_secure_https()", + "file_type": "code", "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" + "source_location": "L108", + "community": 58, + "norm_label": ".test_is_secure_https()", + "id": "tests_test_controllers_coverage_testissecurescheme_test_is_secure_https" }, { - "label": "Covers lines 107, 109-130, 133: logout token extraction and revocation.", - "file_type": "rationale", + "label": ".test_is_secure_http()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L258", - "community": 45, - "norm_label": "covers lines 107, 109-130, 133: logout token extraction and revocation.", - "id": "tests_test_controllers_coverage_rationale_258" + "source_location": "L115", + "community": 58, + "norm_label": ".test_is_secure_http()", + "id": "tests_test_controllers_coverage_testissecurescheme_test_is_secure_http" }, { - "label": "Covers lines 109, 115-125: logout with X-Access-Token header.", - "file_type": "rationale", + "label": ".test_is_secure_no_scheme()", + "file_type": "code", "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" + "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 111-113: token extracted from Authorization Bearer header.", - "file_type": "rationale", + "label": "TestHealthEndpoint", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L281", + "source_location": "L130", "community": 45, - "norm_label": "covers lines 111-113: token extracted from authorization bearer header.", - "id": "tests_test_controllers_coverage_rationale_281" + "norm_label": "testhealthendpoint", + "id": "tests_test_controllers_coverage_testhealthendpoint" }, { - "label": "sessionId is a string \u2014 revokeSession receives it as-is (str type).", - "file_type": "rationale", + "label": ".test_health_returns_ok()", + "file_type": "code", "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" + "source_location": "L133", + "community": 45, + "norm_label": ".test_health_returns_ok()", + "id": "tests_test_controllers_coverage_testhealthendpoint_test_health_returns_ok" }, { - "label": "Covers lines 126-128: verifyAccessToken raises Exception.", - "file_type": "rationale", + "label": "TestRegisterEndpoint", + "file_type": "code", "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" + "source_location": "L146", + "community": 120, + "norm_label": "testregisterendpoint", + "id": "tests_test_controllers_coverage_testregisterendpoint" }, { - "label": "Covers lines 109-113: no token provided at all.", - "file_type": "rationale", + "label": "test_register_success()", + "file_type": "code", "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" + "source_location": "L152", + "community": 120, + "norm_label": "test_register_success()", + "id": "tests_test_controllers_coverage_test_register_success" }, { - "label": "Covers line 120: userId or sessionId missing from payload.", - "file_type": "rationale", + "label": "test_register_auto_login_fails()", + "file_type": "code", "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" + "source_location": "L178", + "community": 120, + "norm_label": "test_register_auto_login_fails()", + "id": "tests_test_controllers_coverage_test_register_auto_login_fails" }, { - "label": "Covers lines 139, 141-149: googleLogin endpoint.", - "file_type": "rationale", + "label": "test_register_value_error()", + "file_type": "code", "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" + "source_location": "L191", + "community": 120, + "norm_label": "test_register_value_error()", + "id": "tests_test_controllers_coverage_test_register_value_error" }, { - "label": "Covers lines 139, 141-149: Google login with redirect_url query param.", - "file_type": "rationale", + "label": "test_register_generic_exception()", + "file_type": "code", "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" + "source_location": "L203", + "community": 120, + "norm_label": "test_register_generic_exception()", + "id": "tests_test_controllers_coverage_test_register_generic_exception" }, { - "label": "Covers line 143: redirect_url falls back to referer header.", - "file_type": "rationale", + "label": "TestLoginEndpoint", + "file_type": "code", "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" + "source_location": "L215", + "community": 120, + "norm_label": "testloginendpoint", + "id": "tests_test_controllers_coverage_testloginendpoint" }, { - "label": "Covers lines 155-156, 158, 160-168, 170-177, 179-184, 186, 190-204: googleCallba", - "file_type": "rationale", + "label": "test_login_success()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L391", - "community": 45, - "norm_label": "covers lines 155-156, 158, 160-168, 170-177, 179-184, 186, 190-204: googlecallba", - "id": "tests_test_controllers_coverage_rationale_391" + "source_location": "L221", + "community": 120, + "norm_label": "test_login_success()", + "id": "tests_test_controllers_coverage_test_login_success" }, { - "label": "Covers lines 160-168, 170-177, 179-184, 186, 197-198: new Google user.", - "file_type": "rationale", + "label": "test_login_wrong_credentials()", + "file_type": "code", "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" + "source_location": "L243", + "community": 120, + "norm_label": "test_login_wrong_credentials()", + "id": "tests_test_controllers_coverage_test_login_wrong_credentials" }, { - "label": "Covers lines 164, 171-173: existing Google user, no new account created.", - "file_type": "rationale", + "label": "TestLogoutEndpoint", + "file_type": "code", "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" + "source_location": "L257", + "community": 120, + "norm_label": "testlogoutendpoint", + "id": "tests_test_controllers_coverage_testlogoutendpoint" }, { - "label": "Covers line 165: verify_and_process returns None.", - "file_type": "rationale", + "label": "test_logout_with_x_access_token()", + "file_type": "code", "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" + "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 redirect path: sso_redirect cookie triggers RedirectResponse.", - "file_type": "rationale", + "label": "test_logout_with_bearer_header()", + "file_type": "code", "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_location": "L280", + "community": 120, + "norm_label": "test_logout_with_bearer_header()", + "id": "tests_test_controllers_coverage_test_logout_with_bearer_header" }, { - "label": "Covers lines 202-204: generic Exception in callback.", - "file_type": "rationale", + "label": "test_logout_with_invalid_session_id()", + "file_type": "code", "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_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 line 19: GET /user/health.", - "file_type": "rationale", + "label": "test_logout_with_verification_error()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L528", - "community": 45, - "norm_label": "covers line 19: get /user/health.", - "id": "tests_test_controllers_coverage_rationale_528" + "source_location": "L309", + "community": 120, + "norm_label": "test_logout_with_verification_error()", + "id": "tests_test_controllers_coverage_test_logout_with_verification_error" }, { - "label": "Covers line 24: GET /user/me returns currentUser.", - "file_type": "rationale", + "label": "test_logout_without_token()", + "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": "L321", + "community": 120, + "norm_label": "test_logout_without_token()", + "id": "tests_test_controllers_coverage_test_logout_without_token" }, { - "label": "Covers lines 31-32, 36, 43-44, 48: upgrade developer starter/enterprise.", - "file_type": "rationale", + "label": "test_logout_with_missing_user_and_session()", + "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": "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 53-54, 56: admin access granted / denied.", - "file_type": "rationale", + "label": "TestGoogleLogin", + "file_type": "code", "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" + "source_location": "L344", + "community": 45, + "norm_label": "testgooglelogin", + "id": "tests_test_controllers_coverage_testgooglelogin" }, { - "label": "Covers lines 66, 68-72, 74: GET /user/sessions.", - "file_type": "rationale", + "label": "test_google_login_with_redirect_url()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L615", - "community": 541, - "norm_label": "covers lines 66, 68-72, 74: get /user/sessions.", - "id": "tests_test_controllers_coverage_rationale_615" + "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 66, 68-72, 74: full sessions listing.", - "file_type": "rationale", + "label": "test_google_login_with_referer()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L618", - "community": 541, - "norm_label": "covers lines 66, 68-72, 74: full sessions listing.", - "id": "tests_test_controllers_coverage_rationale_618" + "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 100-104, 106: GET /user/sessions/current.", - "file_type": "rationale", + "label": "TestGoogleCallback", + "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": "L390", + "community": 120, + "norm_label": "testgooglecallback", + "id": "tests_test_controllers_coverage_testgooglecallback" }, { - "label": "Covers lines 100-104, 106: session found.", - "file_type": "rationale", + "label": "test_callback_new_user()", + "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": "L397", + "community": 120, + "norm_label": "test_callback_new_user()", + "id": "tests_test_controllers_coverage_test_callback_new_user" }, { - "label": "Covers line 104: session not found.", - "file_type": "rationale", + "label": "test_callback_existing_user()", + "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": "L433", + "community": 120, + "norm_label": "test_callback_existing_user()", + "id": "tests_test_controllers_coverage_test_callback_existing_user" }, { - "label": "Covers lines 126-136: DELETE /user/sessions/{sessionId}.", - "file_type": "rationale", + "label": "test_callback_no_user_info()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L728", + "source_location": "L460", "community": 120, - "norm_label": "covers lines 126-136: delete /user/sessions/{sessionid}.", - "id": "tests_test_controllers_coverage_rationale_728" + "norm_label": "test_callback_no_user_info()", + "id": "tests_test_controllers_coverage_test_callback_no_user_info" }, { - "label": "Covers lines 126, 131, 135-136.", - "file_type": "rationale", + "label": "test_callback_with_state_redirect()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L731", + "source_location": "L477", "community": 120, - "norm_label": "covers lines 126, 131, 135-136.", - "id": "tests_test_controllers_coverage_rationale_731" + "norm_label": "test_callback_with_state_redirect()", + "id": "tests_test_controllers_coverage_test_callback_with_state_redirect" }, { - "label": "Covers lines 127-129: session not found.", - "file_type": "rationale", + "label": "test_callback_generic_exception()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L758", + "source_location": "L510", "community": 120, - "norm_label": "covers lines 127-129: session not found.", - "id": "tests_test_controllers_coverage_rationale_758" + "norm_label": "test_callback_generic_exception()", + "id": "tests_test_controllers_coverage_test_callback_generic_exception" }, { - "label": "Covers lines 132-133: revokeSession returns False.", - "file_type": "rationale", + "label": "TestUserHealth", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L780", - "community": 120, - "norm_label": "covers lines 132-133: revokesession returns false.", - "id": "tests_test_controllers_coverage_rationale_780" + "source_location": "L527", + "community": 45, + "norm_label": "testuserhealth", + "id": "tests_test_controllers_coverage_testuserhealth" }, { - "label": "Covers lines 143, 145, 147-148: POST /user/sessions/revoke-all.", - "file_type": "rationale", + "label": ".test_health()", + "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": "L530", + "community": 45, + "norm_label": ".test_health()", + "id": "tests_test_controllers_coverage_testuserhealth_test_health" }, { - "label": "Covers lines 143, 145, 147-148.", - "file_type": "rationale", + "label": "TestGetMe", + "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": "L541", + "community": 47, + "norm_label": "testgetme", + "id": "tests_test_controllers_coverage_testgetme" }, { - "label": "Covers line 24: GET /prometheus/health.", - "file_type": "rationale", + "label": ".test_get_me()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L836", - "community": 45, - "norm_label": "covers line 24: get /prometheus/health.", - "id": "tests_test_controllers_coverage_rationale_836" + "source_location": "L544", + "community": 47, + "norm_label": ".test_get_me()", + "id": "tests_test_controllers_coverage_testgetme_test_get_me" }, { - "label": "Covers lines 33-36: GET /prometheus/sessions.", - "file_type": "rationale", + "label": "TestUpgradeEndpoints", + "file_type": "code", "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" + "source_location": "L555", + "community": 47, + "norm_label": "testupgradeendpoints", + "id": "tests_test_controllers_coverage_testupgradeendpoints" }, { - "label": "Covers line 52: POST /prometheus/sessions.", - "file_type": "rationale", + "label": ".test_upgrade_developer_starter_success()", + "file_type": "code", "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" + "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 lines 62-63, 65-68: PUT /prometheus/sessions/{sessionId}.", - "file_type": "rationale", + "label": ".test_upgrade_developer_starter_already_developer()", + "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": "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 65-68: title updated successfully.", - "file_type": "rationale", + "label": ".test_upgrade_developer_enterprise_success()", + "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": "L576", + "community": 47, + "norm_label": ".test_upgrade_developer_enterprise_success()", + "id": "tests_test_controllers_coverage_testupgradeendpoints_test_upgrade_developer_enterprise_success" }, { - "label": "Covers lines 62-63: not the session owner.", - "file_type": "rationale", + "label": ".test_upgrade_developer_enterprise_already_developer()", + "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": "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 66-67: session not found.", - "file_type": "rationale", + "label": "TestAdminAccess", + "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": "L595", + "community": 47, + "norm_label": "testadminaccess", + "id": "tests_test_controllers_coverage_testadminaccess" }, { - "label": "Covers lines 77, 83-84, 86: GET /prometheus/history/{sessionId}.", - "file_type": "rationale", + "label": ".test_admin_access_granted()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L916", - "community": 256, - "norm_label": "covers lines 77, 83-84, 86: get /prometheus/history/{sessionid}.", - "id": "tests_test_controllers_coverage_rationale_916" + "source_location": "L598", + "community": 47, + "norm_label": ".test_admin_access_granted()", + "id": "tests_test_controllers_coverage_testadminaccess_test_admin_access_granted" }, { - "label": "Covers lines 77, 86: session found with history.", - "file_type": "rationale", + "label": ".test_admin_access_denied()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L919", - "community": 256, - "norm_label": "covers lines 77, 86: session found with history.", - "id": "tests_test_controllers_coverage_rationale_919" + "source_location": "L605", + "community": 47, + "norm_label": ".test_admin_access_denied()", + "id": "tests_test_controllers_coverage_testadminaccess_test_admin_access_denied" }, { - "label": "Covers lines 83-84: session not found.", - "file_type": "rationale", + "label": "TestGetSessions", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L963", - "community": 256, - "norm_label": "covers lines 83-84: session not found.", - "id": "tests_test_controllers_coverage_rationale_963" + "source_location": "L614", + "community": 610, + "norm_label": "testgetsessions", + "id": "tests_test_controllers_coverage_testgetsessions" }, { - "label": "Covers lines 95-98: DELETE /prometheus/sessions/{sessionId}.", - "file_type": "rationale", + "label": ".test_get_sessions()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L998", - "community": 99, - "norm_label": "covers lines 95-98: delete /prometheus/sessions/{sessionid}.", - "id": "tests_test_controllers_coverage_rationale_998" + "source_location": "L617", + "community": 610, + "norm_label": ".test_get_sessions()", + "id": "tests_test_controllers_coverage_testgetsessions_test_get_sessions" }, { - "label": "Covers lines 95-98: session deleted.", - "file_type": "rationale", + "label": "TestGetCurrentSession", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1001", - "community": 99, - "norm_label": "covers lines 95-98: session deleted.", - "id": "tests_test_controllers_coverage_rationale_1001" + "source_location": "L668", + "community": 493, + "norm_label": "testgetcurrentsession", + "id": "tests_test_controllers_coverage_testgetcurrentsession" }, { - "label": "Covers lines 96-97: session not found.", - "file_type": "rationale", + "label": ".test_get_current_session_found()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1011", - "community": 99, - "norm_label": "covers lines 96-97: session not found.", - "id": "tests_test_controllers_coverage_rationale_1011" + "source_location": "L671", + "community": 493, + "norm_label": ".test_get_current_session_found()", + "id": "tests_test_controllers_coverage_testgetcurrentsession_test_get_current_session_found" }, { - "label": "Covers lines 109-136: POST /prometheus/chat/stream (SSE).", - "file_type": "rationale", + "label": ".test_get_current_session_not_found()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1021", - "community": 148, - "norm_label": "covers lines 109-136: post /prometheus/chat/stream (sse).", - "id": "tests_test_controllers_coverage_rationale_1021" + "source_location": "L704", + "community": 493, + "norm_label": ".test_get_current_session_not_found()", + "id": "tests_test_controllers_coverage_testgetcurrentsession_test_get_current_session_not_found" }, { - "label": "Covers lines 118-119: sessionId is None, new session created.", - "file_type": "rationale", + "label": "TestRevokeSession", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1024", - "community": 148, - "norm_label": "covers lines 118-119: sessionid is none, new session created.", - "id": "tests_test_controllers_coverage_rationale_1024" + "source_location": "L727", + "community": 498, + "norm_label": "testrevokesession", + "id": "tests_test_controllers_coverage_testrevokesession" }, { - "label": "Covers lines 120-121: existing session with verified ownership.", - "file_type": "rationale", + "label": ".test_revoke_session_success()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1043", - "community": 148, - "norm_label": "covers lines 120-121: existing session with verified ownership.", - "id": "tests_test_controllers_coverage_rationale_1043" + "source_location": "L730", + "community": 498, + "norm_label": ".test_revoke_session_success()", + "id": "tests_test_controllers_coverage_testrevokesession_test_revoke_session_success" }, { - "label": "Covers lines 120-121: session ownership check fails.", - "file_type": "rationale", + "label": ".test_revoke_session_not_found()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1086", - "community": 148, - "norm_label": "covers lines 120-121: session ownership check fails.", - "id": "tests_test_controllers_coverage_rationale_1086" + "source_location": "L757", + "community": 498, + "norm_label": ".test_revoke_session_not_found()", + "id": "tests_test_controllers_coverage_testrevokesession_test_revoke_session_not_found" }, { - "label": "Generic Exception in chat propagates via SSE error event.", - "file_type": "rationale", + "label": ".test_revoke_session_failure()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1122", - "community": 99, - "norm_label": "generic exception in chat propagates via sse error event.", - "id": "tests_test_controllers_coverage_rationale_1122" + "source_location": "L779", + "community": 498, + "norm_label": ".test_revoke_session_failure()", + "id": "tests_test_controllers_coverage_testrevokesession_test_revoke_session_failure" }, { - "label": "Covers line 18: GET /stocks/health.", - "file_type": "rationale", + "label": "TestRevokeAllSessions", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1145", - "community": 605, - "norm_label": "covers line 18: get /stocks/health.", - "id": "tests_test_controllers_coverage_rationale_1145" + "source_location": "L805", + "community": 498, + "norm_label": "testrevokeallsessions", + "id": "tests_test_controllers_coverage_testrevokeallsessions" }, { - "label": "Covers line 35: GET /stocks/historical.", - "file_type": "rationale", + "label": ".test_revoke_all_sessions()", + "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": "L808", + "community": 498, + "norm_label": ".test_revoke_all_sessions()", + "id": "tests_test_controllers_coverage_testrevokeallsessions_test_revoke_all_sessions" }, { - "label": "Covers line 47: GET /stocks/fundamental.", - "file_type": "rationale", + "label": "TestPrometheusHealth", + "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": "L835", + "community": 45, + "norm_label": "testprometheushealth", + "id": "tests_test_controllers_coverage_testprometheushealth" }, { - "label": "Covers lines 52-53, 57-63: GET /stocks/key/generate. NOTE: stocksapi_cont", - "file_type": "rationale", + "label": ".test_health()", + "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": "L838", + "community": 45, + "norm_label": ".test_health()", + "id": "tests_test_controllers_coverage_testprometheushealth_test_health" }, { - "label": "Covers lines 52-53: user without GENERATE_API_KEYS permission gets 403.", - "file_type": "rationale", + "label": "TestPrometheusGetSessions", + "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": "L849", + "community": 99, + "norm_label": "testprometheusgetsessions", + "id": "tests_test_controllers_coverage_testprometheusgetsessions" }, { - "label": "Covers lines 57-60: admin bypasses permission check and generates key.", - "file_type": "rationale", + "label": ".test_get_sessions()", + "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": "L852", + "community": 99, + "norm_label": ".test_get_sessions()", + "id": "tests_test_controllers_coverage_testprometheusgetsessions_test_get_sessions" }, { - "label": "Covers lines 61-63: exception during key generation (admin path).", - "file_type": "rationale", + "label": "TestPrometheusCreateSession", + "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": "L867", + "community": 99, + "norm_label": "testprometheuscreatesession", + "id": "tests_test_controllers_coverage_testprometheuscreatesession" }, { - "label": "Covers lines 13, 17, 19-20, 22-27: UserManager.addRoleToUser.", - "file_type": "rationale", + "label": ".test_create_session()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1230", - "community": 568, - "norm_label": "covers lines 13, 17, 19-20, 22-27: usermanager.addroletouser.", - "id": "tests_test_controllers_coverage_rationale_1230" + "source_location": "L870", + "community": 99, + "norm_label": ".test_create_session()", + "id": "tests_test_controllers_coverage_testprometheuscreatesession_test_create_session" }, { - "label": "Covers lines 17, 22-27: user found, role not present, role added.", - "file_type": "rationale", + "label": "TestPrometheusUpdateSessionTitle", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1233", - "community": 568, - "norm_label": "covers lines 17, 22-27: user found, role not present, role added.", - "id": "tests_test_controllers_coverage_rationale_1233" + "source_location": "L881", + "community": 99, + "norm_label": "testprometheusupdatesessiontitle", + "id": "tests_test_controllers_coverage_testprometheusupdatesessiontitle" }, { - "label": "Covers line 27: user already has the role.", - "file_type": "rationale", + "label": ".test_update_title_success()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1250", - "community": 493, - "norm_label": "covers line 27: user already has the role.", - "id": "tests_test_controllers_coverage_rationale_1250" + "source_location": "L884", + "community": 99, + "norm_label": ".test_update_title_success()", + "id": "tests_test_controllers_coverage_testprometheusupdatesessiontitle_test_update_title_success" }, { - "label": "Covers lines 19-20: user not found raises 404.", - "file_type": "rationale", + "label": ".test_update_title_not_owner()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1264", - "community": 568, - "norm_label": "covers lines 19-20: user not found raises 404.", - "id": "tests_test_controllers_coverage_rationale_1264" + "source_location": "L895", + "community": 99, + "norm_label": ".test_update_title_not_owner()", + "id": "tests_test_controllers_coverage_testprometheusupdatesessiontitle_test_update_title_not_owner" }, { - "label": "Covers lines 34, 36-38, 40-44, 46, 48-49, 51, 58-59, 61, 63-67: UserManager.getC", - "file_type": "rationale", + "label": ".test_update_title_not_found()", + "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": "L904", + "community": 99, + "norm_label": ".test_update_title_not_found()", + "id": "tests_test_controllers_coverage_testprometheusupdatesessiontitle_test_update_title_not_found" }, { - "label": "Covers lines 36-38, 40-44, 46, 48-49, 51, 58-59, 61: successful user retrieval.", - "file_type": "rationale", + "label": "TestPrometheusGetHistory", + "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": "L915", + "community": 498, + "norm_label": "testprometheusgethistory", + "id": "tests_test_controllers_coverage_testprometheusgethistory" }, { - "label": "Covers lines 42-44: session validation fails.", - "file_type": "rationale", + "label": ".test_get_history_found()", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1308", - "community": 493, - "norm_label": "covers lines 42-44: session validation fails.", - "id": "tests_test_controllers_coverage_rationale_1308" + "source_location": "L918", + "community": 498, + "norm_label": ".test_get_history_found()", + "id": "tests_test_controllers_coverage_testprometheusgethistory_test_get_history_found" }, { - "label": "Covers lines 48-49: user not in DB.", - "file_type": "rationale", + "label": ".test_get_history_not_found()", + "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": "L962", + "community": 498, + "norm_label": ".test_get_history_not_found()", + "id": "tests_test_controllers_coverage_testprometheusgethistory_test_get_history_not_found" }, { - "label": "Covers lines 65-67: unexpected exception.", - "file_type": "rationale", + "label": "TestPrometheusDeleteSession", + "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": "L997", + "community": 99, + "norm_label": "testprometheusdeletesession", + "id": "tests_test_controllers_coverage_testprometheusdeletesession" }, { - "label": "Covers lines 37-38, 46, 51, 58 (sessionId is None): skips session validation.", - "file_type": "rationale", + "label": ".test_delete_session_success()", + "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": "L1000", + "community": 99, + "norm_label": ".test_delete_session_success()", + "id": "tests_test_controllers_coverage_testprometheusdeletesession_test_delete_session_success" }, { - "label": "Covers line 16: empty password raises ValueError.", - "file_type": "rationale", + "label": ".test_delete_session_not_found()", + "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": "L1010", + "community": 99, + "norm_label": ".test_delete_session_not_found()", + "id": "tests_test_controllers_coverage_testprometheusdeletesession_test_delete_session_not_found" }, { - "label": "Covers lines 45-51: verifyAccessToken with expired and invalid tokens.", - "file_type": "rationale", + "label": "TestPrometheusChat", + "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": "L1020", + "community": 148, + "norm_label": "testprometheuschat", + "id": "tests_test_controllers_coverage_testprometheuschat" }, { - "label": "Covers lines 48-49: jwt.ExpiredSignatureError.", - "file_type": "rationale", + "label": ".test_chat_new_session()", + "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": "L1023", + "community": 99, + "norm_label": ".test_chat_new_session()", + "id": "tests_test_controllers_coverage_testprometheuschat_test_chat_new_session" }, { - "label": "Covers lines 50-51: jwt.InvalidTokenError.", - "file_type": "rationale", + "label": ".test_chat_existing_session_verified()", + "file_type": "code", "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" + "source_location": "L1042", + "community": 148, + "norm_label": ".test_chat_existing_session_verified()", + "id": "tests_test_controllers_coverage_testprometheuschat_test_chat_existing_session_verified" }, { - "label": "Covers line 67: extractTokenPayload re-raises HTTPException from verifyAccessTok", - "file_type": "rationale", + "label": ".test_chat_existing_session_not_owner()", + "file_type": "code", "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" + "source_location": "L1085", + "community": 148, + "norm_label": ".test_chat_existing_session_not_owner()", + "id": "tests_test_controllers_coverage_testprometheuschat_test_chat_existing_session_not_owner" }, { - "label": "Covers line 67: HTTPException raised by verifyAccessToken is re-raised.", - "file_type": "rationale", + "label": ".test_chat_generic_exception()", + "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": "L1121", + "community": 148, + "norm_label": ".test_chat_generic_exception()", + "id": "tests_test_controllers_coverage_testprometheuschat_test_chat_generic_exception" }, { - "label": "Covers line 13: UserManager.__init__.", - "file_type": "rationale", + "label": "TestStocksApiHealth", + "file_type": "code", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1442", + "source_location": "L1144", "community": 45, - "norm_label": "covers line 13: usermanager.__init__.", - "id": "tests_test_controllers_coverage_rationale_1442" + "norm_label": "teststocksapihealth", + "id": "tests_test_controllers_coverage_teststocksapihealth" }, { - "label": "test_device.py", + "label": ".test_health()", "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": "L1147", + "community": 45, + "norm_label": ".test_health()", + "id": "tests_test_controllers_coverage_teststocksapihealth_test_health" }, { - "label": "TestDeviceDetection", + "label": "TestStocksApiHistorical", "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": "L1158", + "community": 14, + "norm_label": "teststocksapihistorical", + "id": "tests_test_controllers_coverage_teststocksapihistorical" }, { - "label": ".test_parse_chrome_windows()", + "label": ".test_get_historical()", "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": "L1161", + "community": 14, + "norm_label": ".test_get_historical()", + "id": "tests_test_controllers_coverage_teststocksapihistorical_test_get_historical" }, { - "label": ".test_parse_firefox_windows()", + "label": "TestStocksApiFundamental", "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": "L1172", + "community": 14, + "norm_label": "teststocksapifundamental", + "id": "tests_test_controllers_coverage_teststocksapifundamental" }, { - "label": ".test_parse_safari_mac()", + "label": ".test_get_fundamental()", "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": "L1175", + "community": 14, + "norm_label": ".test_get_fundamental()", + "id": "tests_test_controllers_coverage_teststocksapifundamental_test_get_fundamental" }, { - "label": ".test_parse_chrome_android()", + "label": "TestStocksApiGenerateKey", "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": "L1186", + "community": 14, + "norm_label": "teststocksapigeneratekey", + "id": "tests_test_controllers_coverage_teststocksapigeneratekey" }, { - "label": ".test_parse_safari_iphone()", + "label": ".test_generate_key_permission_error()", "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": "L1194", + "community": 14, + "norm_label": ".test_generate_key_permission_error()", + "id": "tests_test_controllers_coverage_teststocksapigeneratekey_test_generate_key_permission_error" }, { - "label": ".test_parse_edge()", + "label": ".test_generate_key_admin_bypasses_permission_check()", "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": "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_parse_empty_user_agent()", + "label": ".test_generate_key_exception()", "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": "L1214", + "community": 14, + "norm_label": ".test_generate_key_exception()", + "id": "tests_test_controllers_coverage_teststocksapigeneratekey_test_generate_key_exception" }, { - "label": ".test_parse_none_user_agent()", + "label": "TestAddRoleToUser", "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": "L1229", + "community": 614, + "norm_label": "testaddroletouser", + "id": "tests_test_controllers_coverage_testaddroletouser" }, { - "label": ".test_generate_fingerprint_consistent()", + "label": ".test_add_role_success()", "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": "L1232", + "community": 617, + "norm_label": ".test_add_role_success()", + "id": "tests_test_controllers_coverage_testaddroletouser_test_add_role_success" }, { - "label": ".test_generate_fingerprint_different_inputs()", + "label": ".test_add_role_already_has_role()", "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": "L1249", + "community": 620, + "norm_label": ".test_add_role_already_has_role()", + "id": "tests_test_controllers_coverage_testaddroletouser_test_add_role_already_has_role" }, { - "label": ".test_generate_fingerprint_includes_language()", + "label": ".test_add_role_user_not_found()", "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": "L1263", + "community": 587, + "norm_label": ".test_add_role_user_not_found()", + "id": "tests_test_controllers_coverage_testaddroletouser_test_add_role_user_not_found" }, { - "label": "test_device_coverage.py", + "label": "TestGetCurrentUser", "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": "L1275", + "community": 529, + "norm_label": "testgetcurrentuser", + "id": "tests_test_controllers_coverage_testgetcurrentuser" }, { - "label": "TestDetectBrowser", + "label": "._make_mock_request()", "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": "L1278", + "community": 529, + "norm_label": "._make_mock_request()", + "id": "tests_test_controllers_coverage_testgetcurrentuser_make_mock_request" }, { - "label": ".test_edge_new()", + "label": ".test_get_current_user_valid_session()", "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": "L1282", + "community": 529, + "norm_label": ".test_get_current_user_valid_session()", + "id": "tests_test_controllers_coverage_testgetcurrentuser_test_get_current_user_valid_session" }, { - "label": ".test_edge_with_edge_suffix()", + "label": ".test_get_current_user_session_revoked()", "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": "L1307", + "community": 625, + "norm_label": ".test_get_current_user_session_revoked()", + "id": "tests_test_controllers_coverage_testgetcurrentuser_test_get_current_user_session_revoked" }, { - "label": ".test_chrome()", + "label": ".test_get_current_user_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": "L1323", + "community": 603, + "norm_label": ".test_get_current_user_not_found()", + "id": "tests_test_controllers_coverage_testgetcurrentuser_test_get_current_user_not_found" }, { - "label": ".test_firefox()", + "label": ".test_get_current_user_generic_exception()", "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": "L1340", + "community": 604, + "norm_label": ".test_get_current_user_generic_exception()", + "id": "tests_test_controllers_coverage_testgetcurrentuser_test_get_current_user_generic_exception" }, { - "label": ".test_firefox_fx_prefix()", + "label": ".test_get_current_user_no_session_id()", "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": "L1357", + "community": 611, + "norm_label": ".test_get_current_user_no_session_id()", + "id": "tests_test_controllers_coverage_testgetcurrentuser_test_get_current_user_no_session_id" }, { - "label": ".test_safari()", + "label": "TestHashPasswordEmpty", "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": "L1381", + "community": 45, + "norm_label": "testhashpasswordempty", + "id": "tests_test_controllers_coverage_testhashpasswordempty" }, { - "label": ".test_opera()", + "label": ".test_empty_password_raises()", "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": "L1384", + "community": 45, + "norm_label": ".test_empty_password_raises()", + "id": "tests_test_controllers_coverage_testhashpasswordempty_test_empty_password_raises" }, { - "label": ".test_opera_mini()", + "label": "TestVerifyAccessToken", "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": "L1391", + "community": 194, + "norm_label": "testverifyaccesstoken", + "id": "tests_test_controllers_coverage_testverifyaccesstoken" }, { - "label": ".test_brave()", + "label": ".test_expired_token()", "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": "L1394", + "community": 194, + "norm_label": ".test_expired_token()", + "id": "tests_test_controllers_coverage_testverifyaccesstoken_test_expired_token" }, { - "label": ".test_unknown_browser()", + "label": ".test_invalid_token()", "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": "L1410", + "community": 172, + "norm_label": ".test_invalid_token()", + "id": "tests_test_controllers_coverage_testverifyaccesstoken_test_invalid_token" }, { - "label": "TestDetectOS", + "label": "TestExtractTokenPayloadReRaise", "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": "L1422", + "community": 114, + "norm_label": "testextracttokenpayloadreraise", + "id": "tests_test_controllers_coverage_testextracttokenpayloadreraise" }, { - "label": ".test_windows_10()", + "label": ".test_http_exception_from_verify_propagates()", "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": "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_windows_81()", + "label": "TestManagerInit", "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": "L1441", + "community": 45, + "norm_label": "testmanagerinit", + "id": "tests_test_controllers_coverage_testmanagerinit" }, { - "label": ".test_windows_8()", + "label": ".test_manager_init()", "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": "L1444", + "community": 45, + "norm_label": ".test_manager_init()", + "id": "tests_test_controllers_coverage_testmanagerinit_test_manager_init" }, { - "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": "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_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": "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_macos()", - "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" + "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_ios()", - "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" + "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_ipados()", - "file_type": "code", - "source_file": "tests/test_device_coverage.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": "Covers line 23: isSecureScheme helper.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", "source_location": "L106", - "community": 1, - "norm_label": ".test_ipados()", - "id": "tests_test_device_coverage_testdetectos_test_ipados" + "community": 58, + "norm_label": "covers line 23: issecurescheme helper.", + "id": "tests_test_controllers_coverage_rationale_106" }, { - "label": ".test_android()", - "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" + "label": "Covers line 28: GET /auth/health.", + "file_type": "rationale", + "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_linux()", - "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" + "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": ".test_chrome_os()", - "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" + "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_freebsd()", - "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" + "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_netbsd()", - "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" + "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": ".test_unknown_os()", - "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" + "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": "TestDetectDeviceType", - "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L139", - "community": 1, - "norm_label": "testdetectdevicetype", - "id": "tests_test_device_coverage_testdetectdevicetype" + "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_desktop()", - "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" + "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_mobile_android()", - "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": "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_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" + "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_mobile_ipod()", - "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" + "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_mobile_windows_phone()", - "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" + "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_mobile_blackberry()", - "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" + "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_tablet_ipad()", - "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" + "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_tablet_tab()", - "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" + "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_tablet_sm_t()", - "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" + "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_kindle()", - "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" + "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": "TestGenerateFingerprint", - "file_type": "code", - "source_file": "tests/test_device_coverage.py", - "source_location": "L171", - "community": 1, - "norm_label": "testgeneratefingerprint", - "id": "tests_test_device_coverage_testgeneratefingerprint" + "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_basic()", - "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" + "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_with_language()", - "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" + "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": ".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": "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": "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": "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_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": "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_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": "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": ".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": "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_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 19: GET /user/health.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L528", + "community": 45, + "norm_label": "covers line 19: get /user/health.", + "id": "tests_test_controllers_coverage_rationale_528" }, { - "label": "Tests for main/app/authentication/device.py \u2014 covers all branches.", + "label": "Covers line 24: GET /user/me returns currentUser.", "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": "L542", + "community": 47, + "norm_label": "covers line 24: get /user/me returns currentuser.", + "id": "tests_test_controllers_coverage_rationale_542" }, { - "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 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": "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 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": "app()", - "file_type": "code", - "source_file": "tests/test_error_handlers.py", - "source_location": "L25", - "community": 120, - "norm_label": "app()", - "id": "tests_test_error_handlers_app" + "label": "Covers lines 66, 68-72, 74: GET /user/sessions.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L615", + "community": 610, + "norm_label": "covers lines 66, 68-72, 74: get /user/sessions.", + "id": "tests_test_controllers_coverage_rationale_615" }, { - "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-72, 74: full sessions listing.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L618", + "community": 610, + "norm_label": "covers lines 66, 68-72, 74: full sessions listing.", + "id": "tests_test_controllers_coverage_rationale_618" }, { - "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 100-104, 106: GET /user/sessions/current.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L669", + "community": 493, + "norm_label": "covers lines 100-104, 106: get /user/sessions/current.", + "id": "tests_test_controllers_coverage_rationale_669" }, { - "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 100-104, 106: session found.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L672", + "community": 493, + "norm_label": "covers lines 100-104, 106: session found.", + "id": "tests_test_controllers_coverage_rationale_672" }, { - "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 line 104: session not found.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L705", + "community": 493, + "norm_label": "covers line 104: session not found.", + "id": "tests_test_controllers_coverage_rationale_705" }, { - "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 lines 126-136: DELETE /user/sessions/{sessionId}.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L728", + "community": 498, + "norm_label": "covers lines 126-136: delete /user/sessions/{sessionid}.", + "id": "tests_test_controllers_coverage_rationale_728" }, { - "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 126, 131, 135-136.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L731", + "community": 498, + "norm_label": "covers lines 126, 131, 135-136.", + "id": "tests_test_controllers_coverage_rationale_731" }, { - "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 127-129: session not found.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L758", + "community": 498, + "norm_label": "covers lines 127-129: session not found.", + "id": "tests_test_controllers_coverage_rationale_758" }, { - "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 132-133: revokeSession returns False.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L780", + "community": 498, + "norm_label": "covers lines 132-133: revokesession returns false.", + "id": "tests_test_controllers_coverage_rationale_780" }, { - "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": "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": 498, + "norm_label": "covers lines 143, 145, 147-148: post /user/sessions/revoke-all.", + "id": "tests_test_controllers_coverage_rationale_806" }, { - "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 143, 145, 147-148.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L809", + "community": 498, + "norm_label": "covers lines 143, 145, 147-148.", + "id": "tests_test_controllers_coverage_rationale_809" }, { - "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 line 24: GET /prometheus/health.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L836", + "community": 45, + "norm_label": "covers line 24: get /prometheus/health.", + "id": "tests_test_controllers_coverage_rationale_836" }, { - "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 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_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 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_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 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": "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 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_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 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": "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 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_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 77, 83-84, 86: GET /prometheus/history/{sessionId}.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L916", + "community": 498, + "norm_label": "covers lines 77, 83-84, 86: get /prometheus/history/{sessionid}.", + "id": "tests_test_controllers_coverage_rationale_916" }, { - "label": "Tests for standardized error responses (errors.py).", + "label": "Covers lines 77, 86: session found with history.", "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": "L919", + "community": 498, + "norm_label": "covers lines 77, 86: session found with history.", + "id": "tests_test_controllers_coverage_rationale_919" }, { - "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 lines 83-84: session not found.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L963", + "community": 498, + "norm_label": "covers lines 83-84: session not found.", + "id": "tests_test_controllers_coverage_rationale_963" }, { - "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 95-98: DELETE /prometheus/sessions/{sessionId}.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L998", + "community": 99, + "norm_label": "covers lines 95-98: delete /prometheus/sessions/{sessionid}.", + "id": "tests_test_controllers_coverage_rationale_998" }, { - "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 lines 95-98: session deleted.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1001", + "community": 99, + "norm_label": "covers lines 95-98: session deleted.", + "id": "tests_test_controllers_coverage_rationale_1001" }, { - "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 lines 96-97: session not found.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1011", + "community": 99, + "norm_label": "covers lines 96-97: session not found.", + "id": "tests_test_controllers_coverage_rationale_1011" }, { - "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 109-136: POST /prometheus/chat/stream (SSE).", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1021", + "community": 148, + "norm_label": "covers lines 109-136: post /prometheus/chat/stream (sse).", + "id": "tests_test_controllers_coverage_rationale_1021" }, { - "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 118-119: sessionId is None, new session created.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1024", + "community": 99, + "norm_label": "covers lines 118-119: sessionid is none, new session created.", + "id": "tests_test_controllers_coverage_rationale_1024" }, { - "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 120-121: existing session with verified ownership.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1043", + "community": 148, + "norm_label": "covers lines 120-121: existing session with verified ownership.", + "id": "tests_test_controllers_coverage_rationale_1043" }, { - "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 120-121: session ownership check fails.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1086", + "community": 148, + "norm_label": "covers lines 120-121: session ownership check fails.", + "id": "tests_test_controllers_coverage_rationale_1086" }, { - "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": "Generic Exception in chat propagates via SSE error event.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1122", + "community": 148, + "norm_label": "generic exception in chat propagates via sse error event.", + "id": "tests_test_controllers_coverage_rationale_1122" }, { - "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 line 18: GET /stocks/health.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1145", + "community": 45, + "norm_label": "covers line 18: get /stocks/health.", + "id": "tests_test_controllers_coverage_rationale_1145" }, { - "label": "Tests for LoopLogger \u2014 appends events to history JSON list.", + "label": "Covers line 35: GET /stocks/historical.", "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": "L1159", + "community": 14, + "norm_label": "covers line 35: get /stocks/historical.", + "id": "tests_test_controllers_coverage_rationale_1159" }, { - "label": "Loop events coexist with user/assistant messages in the same history list.", + "label": "Covers line 47: GET /stocks/fundamental.", "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": "L1173", + "community": 14, + "norm_label": "covers line 47: get /stocks/fundamental.", + "id": "tests_test_controllers_coverage_rationale_1173" }, { - "label": "test_harness_state.py", - "file_type": "code", - "source_file": "tests/test_harness_state.py", - "source_location": "L1", - "community": 586, - "norm_label": "test_harness_state.py", - "id": "tests_test_harness_state_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": "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": "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 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_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 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": ".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 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_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 13, 17, 19-20, 22-27: UserManager.addRoleToUser.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1230", + "community": 614, + "norm_label": "covers lines 13, 17, 19-20, 22-27: usermanager.addroletouser.", + "id": "tests_test_controllers_coverage_rationale_1230" }, { - "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 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": 617, + "norm_label": "covers lines 17, 22-27: user found, role not present, role added.", + "id": "tests_test_controllers_coverage_rationale_1233" }, { - "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 line 27: user already has the role.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1250", + "community": 620, + "norm_label": "covers line 27: user already has the role.", + "id": "tests_test_controllers_coverage_rationale_1250" }, { - "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 lines 19-20: user not found raises 404.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1264", + "community": 587, + "norm_label": "covers lines 19-20: user not found raises 404.", + "id": "tests_test_controllers_coverage_rationale_1264" }, { - "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 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": 529, + "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_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 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": 529, + "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": ".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 42-44: session validation fails.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1308", + "community": 625, + "norm_label": "covers lines 42-44: session validation fails.", + "id": "tests_test_controllers_coverage_rationale_1308" }, { - "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 48-49: user not in DB.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1324", + "community": 603, + "norm_label": "covers lines 48-49: user not in db.", + "id": "tests_test_controllers_coverage_rationale_1324" }, { - "label": "test_http_session_coverage.py", - "file_type": "code", - "source_file": "tests/test_http_session_coverage.py", - "source_location": "L1", - "community": 611, - "norm_label": "test_http_session_coverage.py", - "id": "tests_test_http_session_coverage_py" + "label": "Covers lines 65-67: unexpected exception.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1341", + "community": 604, + "norm_label": "covers lines 65-67: unexpected exception.", + "id": "tests_test_controllers_coverage_rationale_1341" }, { - "label": "TestGetSession", - "file_type": "code", - "source_file": "tests/test_http_session_coverage.py", - "source_location": "L8", + "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": 611, - "norm_label": "testgetsession", - "id": "tests_test_http_session_coverage_testgetsession" + "norm_label": "covers lines 37-38, 46, 51, 58 (sessionid is none): skips session validation.", + "id": "tests_test_controllers_coverage_rationale_1358" }, { - "label": ".test_returns_same_session()", - "file_type": "code", - "source_file": "tests/test_http_session_coverage.py", - "source_location": "L9", - "community": 611, - "norm_label": ".test_returns_same_session()", - "id": "tests_test_http_session_coverage_testgetsession_test_returns_same_session" + "label": "Covers line 16: empty password raises ValueError.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1382", + "community": 194, + "norm_label": "covers line 16: empty password raises valueerror.", + "id": "tests_test_controllers_coverage_rationale_1382" }, { - "label": ".test_returns_requests_session()", - "file_type": "code", - "source_file": "tests/test_http_session_coverage.py", - "source_location": "L16", - "community": 611, - "norm_label": ".test_returns_requests_session()", - "id": "tests_test_http_session_coverage_testgetsession_test_returns_requests_session" + "label": "Covers lines 45-51: verifyAccessToken with expired and invalid tokens.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1392", + "community": 194, + "norm_label": "covers lines 45-51: verifyaccesstoken with expired and invalid tokens.", + "id": "tests_test_controllers_coverage_rationale_1392" }, { - "label": "Tests for main/utils/http_session.py \u2014 covers all branches.", + "label": "Covers lines 48-49: jwt.ExpiredSignatureError.", "file_type": "rationale", - "source_file": "tests/test_http_session_coverage.py", - "source_location": "L1", - "community": 611, - "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": "L1395", + "community": 194, + "norm_label": "covers lines 48-49: jwt.expiredsignatureerror.", + "id": "tests_test_controllers_coverage_rationale_1395" }, { - "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 50-51: jwt.InvalidTokenError.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1411", + "community": 172, + "norm_label": "covers lines 50-51: jwt.invalidtokenerror.", + "id": "tests_test_controllers_coverage_rationale_1411" }, { - "label": "TestRegisterValidation", - "file_type": "code", - "source_file": "tests/test_input_validation.py", - "source_location": "L14", - "community": 607, - "norm_label": "testregistervalidation", - "id": "tests_test_input_validation_testregistervalidation" + "label": "Covers line 67: extractTokenPayload re-raises HTTPException from verifyAccessTok", + "file_type": "rationale", + "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": ".test_valid_registration()", - "file_type": "code", - "source_file": "tests/test_input_validation.py", - "source_location": "L17", - "community": 607, - "norm_label": ".test_valid_registration()", - "id": "tests_test_input_validation_testregistervalidation_test_valid_registration" + "label": "Covers line 67: HTTPException raised by verifyAccessToken is re-raised.", + "file_type": "rationale", + "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_username_too_short()", - "file_type": "code", - "source_file": "tests/test_input_validation.py", - "source_location": "L25", - "community": 607, - "norm_label": ".test_username_too_short()", - "id": "tests_test_input_validation_testregistervalidation_test_username_too_short" + "label": "Covers line 13: UserManager.__init__.", + "file_type": "rationale", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1442", + "community": 45, + "norm_label": "covers line 13: usermanager.__init__.", + "id": "tests_test_controllers_coverage_rationale_1442" }, { - "label": ".test_username_too_long()", + "label": "test_device.py", "file_type": "code", - "source_file": "tests/test_input_validation.py", - "source_location": "L32", - "community": 607, - "norm_label": ".test_username_too_long()", - "id": "tests_test_input_validation_testregistervalidation_test_username_too_long" + "source_file": "tests/test_device.py", + "source_location": "L1", + "community": 1, + "norm_label": "test_device.py", + "id": "tests_test_device_py" }, { - "label": ".test_email_too_short()", + "label": "TestDeviceDetection", "file_type": "code", - "source_file": "tests/test_input_validation.py", - "source_location": "L39", - "community": 607, - "norm_label": ".test_email_too_short()", - "id": "tests_test_input_validation_testregistervalidation_test_email_too_short" + "source_file": "tests/test_device.py", + "source_location": "L10", + "community": 1, + "norm_label": "testdevicedetection", + "id": "tests_test_device_testdevicedetection" }, { - "label": ".test_password_too_short()", + "label": ".test_parse_chrome_windows()", "file_type": "code", - "source_file": "tests/test_input_validation.py", - "source_location": "L46", - "community": 607, - "norm_label": ".test_password_too_short()", - "id": "tests_test_input_validation_testregistervalidation_test_password_too_short" + "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": "TestLoginValidation", + "label": ".test_parse_firefox_windows()", "file_type": "code", - "source_file": "tests/test_input_validation.py", - "source_location": "L54", - "community": 610, - "norm_label": "testloginvalidation", - "id": "tests_test_input_validation_testloginvalidation" + "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_valid_login_payload()", + "label": ".test_parse_safari_mac()", "file_type": "code", - "source_file": "tests/test_input_validation.py", - "source_location": "L57", - "community": 610, - "norm_label": ".test_valid_login_payload()", - "id": "tests_test_input_validation_testloginvalidation_test_valid_login_payload" + "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_username_too_short()", + "label": ".test_parse_chrome_android()", "file_type": "code", - "source_file": "tests/test_input_validation.py", - "source_location": "L65", - "community": 610, - "norm_label": ".test_username_too_short()", - "id": "tests_test_input_validation_testloginvalidation_test_username_too_short" + "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" }, { - "label": ".test_password_too_short()", + "label": ".test_parse_safari_iphone()", "file_type": "code", - "source_file": "tests/test_input_validation.py", - "source_location": "L72", - "community": 610, - "norm_label": ".test_password_too_short()", - "id": "tests_test_input_validation_testloginvalidation_test_password_too_short" + "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" }, { - "label": "TestPrometheusSessionValidation", + "label": ".test_parse_edge()", "file_type": "code", - "source_file": "tests/test_input_validation.py", - "source_location": "L80", - "community": 25, - "norm_label": "testprometheussessionvalidation", - "id": "tests_test_input_validation_testprometheussessionvalidation" + "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_valid_create_session()", + "label": ".test_parse_empty_user_agent()", "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" + "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_empty_title()", + "label": ".test_parse_none_user_agent()", "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" + "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": ".test_title_too_long()", + "label": ".test_generate_fingerprint_consistent()", "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" + "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": "TestUpdateTitleValidation", + "label": ".test_generate_fingerprint_different_inputs()", "file_type": "code", - "source_file": "tests/test_input_validation.py", - "source_location": "L109", - "community": 25, - "norm_label": "testupdatetitlevalidation", - "id": "tests_test_input_validation_testupdatetitlevalidation" + "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_empty_title()", + "label": ".test_generate_fingerprint_includes_language()", "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" + "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_title_too_long()", + "label": "test_device_coverage.py", "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" + "source_file": "tests/test_device_coverage.py", + "source_location": "L1", + "community": 1, + "norm_label": "test_device_coverage.py", + "id": "tests_test_device_coverage_py" }, { - "label": "TestChatValidation", + "label": "TestDetectBrowser", "file_type": "code", - "source_file": "tests/test_input_validation.py", - "source_location": "L129", - "community": 609, - "norm_label": "testchatvalidation", - "id": "tests_test_input_validation_testchatvalidation" + "source_file": "tests/test_device_coverage.py", + "source_location": "L14", + "community": 1, + "norm_label": "testdetectbrowser", + "id": "tests_test_device_coverage_testdetectbrowser" }, { - "label": ".test_empty_text()", + "label": ".test_edge_new()", "file_type": "code", - "source_file": "tests/test_input_validation.py", - "source_location": "L132", - "community": 609, - "norm_label": ".test_empty_text()", - "id": "tests_test_input_validation_testchatvalidation_test_empty_text" + "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": ".test_text_too_long()", + "label": ".test_edge_with_edge_suffix()", "file_type": "code", - "source_file": "tests/test_input_validation.py", - "source_location": "L140", - "community": 609, - "norm_label": ".test_text_too_long()", - "id": "tests_test_input_validation_testchatvalidation_test_text_too_long" + "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": ".test_max_length_boundary()", + "label": ".test_chrome()", "file_type": "code", - "source_file": "tests/test_input_validation.py", - "source_location": "L148", - "community": 609, - "norm_label": ".test_max_length_boundary()", - "id": "tests_test_input_validation_testchatvalidation_test_max_length_boundary" + "source_file": "tests/test_device_coverage.py", + "source_location": "L28", + "community": 1, + "norm_label": ".test_chrome()", + "id": "tests_test_device_coverage_testdetectbrowser_test_chrome" }, { - "label": "TestMissingBody", + "label": ".test_firefox()", "file_type": "code", - "source_file": "tests/test_input_validation.py", - "source_location": "L158", - "community": 25, - "norm_label": "testmissingbody", - "id": "tests_test_input_validation_testmissingbody" + "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": ".test_register_missing_username()", + "label": ".test_firefox_fx_prefix()", "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" + "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" }, { - "label": ".test_register_missing_all()", + "label": ".test_safari()", "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" + "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_login_missing_fields()", + "label": ".test_opera()", "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" + "source_file": "tests/test_device_coverage.py", + "source_location": "L47", + "community": 1, + "norm_label": ".test_opera()", + "id": "tests_test_device_coverage_testdetectbrowser_test_opera" }, { - "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_opera_mini()", + "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" }, { - "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": 607, - "norm_label": "post /auth/register \u2014 validates username, email, password via body(...)", - "id": "tests_test_input_validation_rationale_15" + "label": ".test_brave()", + "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" }, { - "label": "POST /auth/login \u2014 validates username, password via Body(...)", - "file_type": "rationale", - "source_file": "tests/test_input_validation.py", - "source_location": "L55", - "community": 610, - "norm_label": "post /auth/login \u2014 validates username, password via body(...)", - "id": "tests_test_input_validation_rationale_55" + "label": ".test_unknown_browser()", + "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" }, { - "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": "TestDetectOS", + "file_type": "code", + "source_file": "tests/test_device_coverage.py", + "source_location": "L68", + "community": 1, + "norm_label": "testdetectos", + "id": "tests_test_device_coverage_testdetectos" }, { - "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_windows_10()", + "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" }, { - "label": "POST /prometheus/chat/stream \u2014 validates query via Body(...)", - "file_type": "rationale", - "source_file": "tests/test_input_validation.py", - "source_location": "L130", - "community": 609, - "norm_label": "post /prometheus/chat/stream \u2014 validates query via body(...)", - "id": "tests_test_input_validation_rationale_130" + "label": ".test_windows_81()", + "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" }, { - "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": ".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": "test_logging_config_coverage.py", + "label": ".test_windows_7()", "file_type": "code", - "source_file": "tests/test_logging_config_coverage.py", - "source_location": "L1", - "community": 599, - "norm_label": "test_logging_config_coverage.py", - "id": "tests_test_logging_config_coverage_py" + "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": "TestDiscordHandlerEmit", + "label": ".test_windows_phone()", "file_type": "code", - "source_file": "tests/test_logging_config_coverage.py", - "source_location": "L8", - "community": 599, - "norm_label": "testdiscordhandleremit", - "id": "tests_test_logging_config_coverage_testdiscordhandleremit" + "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": "._make_handler()", + "label": ".test_macos()", "file_type": "code", - "source_file": "tests/test_logging_config_coverage.py", - "source_location": "L9", - "community": 599, - "norm_label": "._make_handler()", - "id": "tests_test_logging_config_coverage_testdiscordhandleremit_make_handler" + "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": "._make_record()", + "label": ".test_ios()", "file_type": "code", - "source_file": "tests/test_logging_config_coverage.py", - "source_location": "L14", - "community": 599, - "norm_label": "._make_record()", - "id": "tests_test_logging_config_coverage_testdiscordhandleremit_make_record" + "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": "test_discord_disabled()", + "label": ".test_ipados()", "file_type": "code", - "source_file": "tests/test_logging_config_coverage.py", - "source_location": "L27", - "community": 599, - "norm_label": "test_discord_disabled()", - "id": "tests_test_logging_config_coverage_test_discord_disabled" + "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": "test_discord_no_webhook()", + "label": ".test_android()", "file_type": "code", - "source_file": "tests/test_logging_config_coverage.py", - "source_location": "L35", - "community": 599, - "norm_label": "test_discord_no_webhook()", - "id": "tests_test_logging_config_coverage_test_discord_no_webhook" + "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_level_below_error()", + "label": ".test_linux()", "file_type": "code", - "source_file": "tests/test_logging_config_coverage.py", - "source_location": "L43", - "community": 599, - "norm_label": "test_level_below_error()", - "id": "tests_test_logging_config_coverage_test_level_below_error" + "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_submit_called_on_error()", + "label": ".test_chrome_os()", "file_type": "code", - "source_file": "tests/test_logging_config_coverage.py", - "source_location": "L52", - "community": 599, - "norm_label": "test_submit_called_on_error()", - "id": "tests_test_logging_config_coverage_test_submit_called_on_error" + "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_message_truncation()", + "label": ".test_freebsd()", "file_type": "code", - "source_file": "tests/test_logging_config_coverage.py", - "source_location": "L62", - "community": 599, - "norm_label": "test_message_truncation()", - "id": "tests_test_logging_config_coverage_test_message_truncation" + "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_exception_in_submit()", + "label": ".test_netbsd()", "file_type": "code", - "source_file": "tests/test_logging_config_coverage.py", - "source_location": "L77", - "community": 599, - "norm_label": "test_exception_in_submit()", - "id": "tests_test_logging_config_coverage_test_exception_in_submit" + "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_with_exception_info()", + "label": ".test_unknown_os()", "file_type": "code", - "source_file": "tests/test_logging_config_coverage.py", - "source_location": "L88", - "community": 599, - "norm_label": "test_with_exception_info()", - "id": "tests_test_logging_config_coverage_test_with_exception_info" + "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": "TestSetupLogging", + "label": "TestDetectDeviceType", "file_type": "code", - "source_file": "tests/test_logging_config_coverage.py", - "source_location": "L103", - "community": 599, - "norm_label": "testsetuplogging", - "id": "tests_test_logging_config_coverage_testsetuplogging" + "source_file": "tests/test_device_coverage.py", + "source_location": "L139", + "community": 1, + "norm_label": "testdetectdevicetype", + "id": "tests_test_device_coverage_testdetectdevicetype" }, { - "label": "test_setup_discord_handler_enabled()", + "label": ".test_desktop()", "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_coverage.py", + "source_location": "L140", + "community": 1, + "norm_label": ".test_desktop()", + "id": "tests_test_device_coverage_testdetectdevicetype_test_desktop" }, { - "label": "test_setup_discord_handler_disabled()", + "label": ".test_mobile_android()", "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" + "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": "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": 599, - "norm_label": "tests for main/utils/logging_config.py \u2014 covers discordhandler branches.", - "id": "tests_test_logging_config_coverage_rationale_1" + "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" }, { - "label": "test_memory_dedup.py", + "label": ".test_mobile_ipod()", "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" + "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": "_create_memory()", + "label": ".test_mobile_windows_phone()", "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" + "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": "_count_memories()", + "label": ".test_mobile_blackberry()", "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" + "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": "_get_memory()", + "label": ".test_tablet_ipad()", "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" + "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": "TestExactSameKeyUpdates", + "label": ".test_tablet_tab()", "file_type": "code", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L28", - "community": 140, - "norm_label": "testexactsamekeyupdates", - "id": "tests_test_memory_dedup_testexactsamekeyupdates" + "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_exact_same_key_updates()", + "label": ".test_tablet_sm_t()", "file_type": "code", - "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" + "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": "TestSimilarKeyMerges", + "label": ".test_kindle()", "file_type": "code", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L36", - "community": 140, - "norm_label": "testsimilarkeymerges", - "id": "tests_test_memory_dedup_testsimilarkeymerges" + "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_similar_key_merges()", + "label": "TestGenerateFingerprint", "file_type": "code", - "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" + "source_file": "tests/test_device_coverage.py", + "source_location": "L171", + "community": 1, + "norm_label": "testgeneratefingerprint", + "id": "tests_test_device_coverage_testgeneratefingerprint" }, { - "label": "TestDifferentKeysNoMerge", + "label": ".test_basic()", "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": "L172", + "community": 1, + "norm_label": ".test_basic()", + "id": "tests_test_device_coverage_testgeneratefingerprint_test_basic" }, { - "label": ".test_different_keys_no_merge()", + "label": ".test_with_language()", "file_type": "code", - "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" + "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": "TestMergeBoostsScore", + "label": ".test_different_inputs_different_hash()", "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": "L181", + "community": 1, + "norm_label": ".test_different_inputs_different_hash()", + "id": "tests_test_device_coverage_testgeneratefingerprint_test_different_inputs_different_hash" }, { - "label": ".test_merge_boosts_score()", + "label": "TestParseUserAgent", "file_type": "code", - "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" + "source_file": "tests/test_device_coverage.py", + "source_location": "L187", + "community": 1, + "norm_label": "testparseuseragent", + "id": "tests_test_device_coverage_testparseuseragent" }, { - "label": "TestMergeIncrementsAccess", + "label": ".test_empty_ua()", "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": "L188", + "community": 1, + "norm_label": ".test_empty_ua()", + "id": "tests_test_device_coverage_testparseuseragent_test_empty_ua" }, { - "label": ".test_merge_increments_access()", + "label": ".test_none_ua()", "file_type": "code", - "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" + "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": "TestThresholdBoundary", + "label": ".test_full_chrome_windows()", "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": "L200", + "community": 1, + "norm_label": ".test_full_chrome_windows()", + "id": "tests_test_device_coverage_testparseuseragent_test_full_chrome_windows" }, { - "label": ".test_threshold_boundary()", + "label": ".test_full_safari_macos()", "file_type": "code", - "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" + "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": "Keys with Jaccard > 0.8 should merge.", + "label": "Tests for main/app/authentication/device.py \u2014 covers all branches.", "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" + "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": "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": "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": "Keys with Jaccard <= 0.8 should not merge.", - "file_type": "rationale", - "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": "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": "test_memory_maintenance.py", + "label": "app()", "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_error_handlers.py", + "source_location": "L25", + "community": 33, + "norm_label": "app()", + "id": "tests_test_error_handlers_app" }, { - "label": "brt()", + "label": "client()", "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_error_handlers.py", + "source_location": "L50", + "community": 33, + "norm_label": "client()", + "id": "tests_test_error_handlers_client" }, { - "label": "create_memories()", + "label": "TestErrorResponseModel", "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_error_handlers.py", + "source_location": "L54", + "community": 33, + "norm_label": "testerrorresponsemodel", + "id": "tests_test_error_handlers_testerrorresponsemodel" }, { - "label": "TestDecay", + "label": ".test_error_response_structure()", "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_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_active_memory_decays()", + "label": ".test_error_response_with_detail_and_request_id()", "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_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_zero_access_count_still_decays()", + "label": "TestRequestContextFilter", "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_error_handlers.py", + "source_location": "L79", + "community": 33, + "norm_label": "testrequestcontextfilter", + "id": "tests_test_error_handlers_testrequestcontextfilter" }, { - "label": ".test_high_score_decays_proportionally()", + "label": ".test_injects_request_id_from_contextvar()", "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_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_very_low_score_stays_above_zero()", + "label": ".test_empty_request_id_default()", "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_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_multiple_users_all_decayed()", + "label": "TestHTTPExceptionHandler", "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_error_handlers.py", + "source_location": "L99", + "community": 33, + "norm_label": "testhttpexceptionhandler", + "id": "tests_test_error_handlers_testhttpexceptionhandler" }, { - "label": "TestArchive", + "label": ".test_returns_structured_error()", "file_type": "code", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L84", - "community": 140, - "norm_label": "testarchive", - "id": "tests_test_memory_maintenance_testarchive" + "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": ".test_dead_memory_archived()", + "label": ".test_includes_request_id_header()", "file_type": "code", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L85", - "community": 614, - "norm_label": ".test_dead_memory_archived()", - "id": "tests_test_memory_maintenance_testarchive_test_dead_memory_archived" + "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_low_score_but_recent_not_archived()", + "label": "TestValidationExceptionHandler", "file_type": "code", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L92", - "community": 617, - "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_error_handlers.py", + "source_location": "L115", + "community": 33, + "norm_label": "testvalidationexceptionhandler", + "id": "tests_test_error_handlers_testvalidationexceptionhandler" }, { - "label": ".test_zero_access_but_high_score_not_archived()", + "label": ".test_returns_422_for_invalid_input()", "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_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_accessed_memory_not_archived()", + "label": ".test_returns_422_for_missing_body()", "file_type": "code", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L106", - "community": 613, - "norm_label": ".test_accessed_memory_not_archived()", - "id": "tests_test_memory_maintenance_testarchive_test_accessed_memory_not_archived" + "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": ".test_already_archived_not_double_archived()", + "label": ".test_valid_input_passes()", "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_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_multiple_users_independent_archive()", + "label": "TestGenericExceptionHandler", "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_error_handlers.py", + "source_location": "L137", + "community": 33, + "norm_label": "testgenericexceptionhandler", + "id": "tests_test_error_handlers_testgenericexceptionhandler" }, { - "label": "TestDecayAndArchiveTogether", + "label": ".test_returns_500_for_unhandled()", "file_type": "code", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L133", - "community": 592, - "norm_label": "testdecayandarchivetogether", - "id": "tests_test_memory_maintenance_testdecayandarchivetogether" + "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_decay_then_archive_check()", + "label": "TestSuccessPassthrough", "file_type": "code", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L134", - "community": 592, - "norm_label": ".test_decay_then_archive_check()", - "id": "tests_test_memory_maintenance_testdecayandarchivetogether_test_decay_then_archive_check" + "source_file": "tests/test_error_handlers.py", + "source_location": "L147", + "community": 33, + "norm_label": "testsuccesspassthrough", + "id": "tests_test_error_handlers_testsuccesspassthrough" }, { - "label": ".test_score_above_threshold_after_decay_not_archived()", + "label": ".test_ok_route_unaffected()", "file_type": "code", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L143", - "community": 592, - "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_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_score_just_below_threshold_archived()", - "file_type": "code", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L150", - "community": 592, - "norm_label": ".test_score_just_below_threshold_archived()", - "id": "tests_test_memory_maintenance_testdecayandarchivetogether_test_score_just_below_threshold_archived" + "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_days_just_below_threshold_not_archived()", + "label": "test_events.py", "file_type": "code", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L156", - "community": 592, - "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_events.py", + "source_location": "L1", + "community": 12, + "norm_label": "test_events.py", + "id": "tests_test_events_py" }, { - "label": ".test_days_just_above_threshold_archived()", + "label": "TestLoopLogger", "file_type": "code", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L163", - "community": 592, - "norm_label": ".test_days_just_above_threshold_archived()", - "id": "tests_test_memory_maintenance_testdecayandarchivetogether_test_days_just_above_threshold_archived" + "source_file": "tests/test_events.py", + "source_location": "L6", + "community": 12, + "norm_label": "testlooplogger", + "id": "tests_test_events_testlooplogger" }, { - "label": "TestEmptyDatabase", + "label": ".test_init_with_empty_history()", "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_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_no_memories_does_not_crash()", + "label": ".test_emit_tool_call_appends_to_history()", "file_type": "code", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L171", - "community": 584, - "norm_label": ".test_no_memories_does_not_crash()", - "id": "tests_test_memory_maintenance_testemptydatabase_test_no_memories_does_not_crash" + "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": "Helper to create memories with controlled baseScore, lastAccessedAt, accessCount", - "file_type": "rationale", - "source_file": "tests/test_memory_maintenance.py", + "label": ".test_emit_tool_result_appends_to_history()", + "file_type": "code", + "source_file": "tests/test_events.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": 614, - "norm_label": "score below threshold + accesscount=0 + 90+ days \u2192 archived.", - "id": "tests_test_memory_maintenance_rationale_86" + "community": 12, + "norm_label": ".test_emit_tool_result_appends_to_history()", + "id": "tests_test_events_testlooplogger_test_emit_tool_result_appends_to_history" }, { - "label": "Low score but accessed recently \u2192 not archived.", - "file_type": "rationale", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L93", - "community": 617, - "norm_label": "low score but accessed recently \u2192 not archived.", - "id": "tests_test_memory_maintenance_rationale_93" + "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": "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": ".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": "Even with low score, if accessed \u2192 not archived.", - "file_type": "rationale", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L107", - "community": 613, - "norm_label": "even with low score, if accessed \u2192 not archived.", - "id": "tests_test_memory_maintenance_rationale_107" + "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": "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_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": "Decay happens first, then archive check with new scores.", - "file_type": "rationale", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L135", - "community": 592, - "norm_label": "decay happens first, then archive check with new scores.", - "id": "tests_test_memory_maintenance_rationale_135" + "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": "Score that decays to >= threshold stays alive. 0.12 * 0.90 = 0.108 >= 0.1.", + "label": "Tests for LoopLogger \u2014 appends events to history JSON list.", "file_type": "rationale", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L144", - "community": 592, - "norm_label": "score that decays to >= threshold stays alive. 0.12 * 0.90 = 0.108 >= 0.1.", - "id": "tests_test_memory_maintenance_rationale_144" + "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": "89 days with low score \u2192 not archived (need > 90).", + "label": "Loop events coexist with user/assistant messages in the same history list.", "file_type": "rationale", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L157", - "community": 592, - "norm_label": "89 days with low score \u2192 not archived (need > 90).", - "id": "tests_test_memory_maintenance_rationale_157" + "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_manager.py", + "label": "test_harness_state.py", "file_type": "code", - "source_file": "tests/test_memory_manager.py", + "source_file": "tests/test_harness_state.py", "source_location": "L1", - "community": 140, - "norm_label": "test_memory_manager.py", - "id": "tests_test_memory_manager_py" + "community": 561, + "norm_label": "test_harness_state.py", + "id": "tests_test_harness_state_py" }, { - "label": "TestGetMemoryLimit", + "label": "TestHarnessState", "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_harness_state.py", + "source_location": "L5", + "community": 8, + "norm_label": "testharnessstate", + "id": "tests_test_harness_state_testharnessstate" }, { - "label": ".test_basic_user()", + "label": ".test_get_returns_none_when_empty()", "file_type": "code", - "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" + "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_premium_user()", + "label": ".test_get_returns_default_when_empty()", "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_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_admin_user()", + "label": ".test_set_and_get()", "file_type": "code", - "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" + "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": "TestUpsertMemory", + "label": ".test_set_overwrites()", "file_type": "code", - "source_file": "tests/test_memory_manager.py", + "source_file": "tests/test_harness_state.py", "source_location": "L19", - "community": 140, - "norm_label": "testupsertmemory", - "id": "tests_test_memory_manager_testupsertmemory" + "community": 8, + "norm_label": ".test_set_overwrites()", + "id": "tests_test_harness_state_testharnessstate_test_set_overwrites" }, { - "label": ".test_create()", + "label": ".test_has_changed_true_after_set()", "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_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_update()", + "label": ".test_has_changed_false_after_reset()", "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_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": ".test_unchanged()", + "label": ".test_toDict_returns_copy()", "file_type": "code", - "source_file": "tests/test_memory_manager.py", - "source_location": "L40", - "community": 140, - "norm_label": ".test_unchanged()", - "id": "tests_test_memory_manager_testupsertmemory_test_unchanged" + "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_limit_enforcement()", + "label": ".test_toContext_empty_when_no_data()", "file_type": "code", - "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" + "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_limit_not_enforced_without_roles()", + "label": ".test_toContext_formats_entries()", "file_type": "code", - "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" + "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_upsert_with_embedding()", + "label": ".test_clear_resets_all()", "file_type": "code", - "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" + "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": "TestCountMemories", + "label": "test_http_session_coverage.py", "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_http_session_coverage.py", + "source_location": "L1", + "community": 561, + "norm_label": "test_http_session_coverage.py", + "id": "tests_test_http_session_coverage_py" }, { - "label": ".test_counts_active()", + "label": "TestGetSession", "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_http_session_coverage.py", + "source_location": "L8", + "community": 561, + "norm_label": "testgetsession", + "id": "tests_test_http_session_coverage_testgetsession" }, { - "label": ".test_excludes_archived()", + "label": ".test_returns_same_session()", "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_http_session_coverage.py", + "source_location": "L9", + "community": 561, + "norm_label": ".test_returns_same_session()", + "id": "tests_test_http_session_coverage_testgetsession_test_returns_same_session" }, { - "label": ".test_counts_per_user()", + "label": ".test_returns_requests_session()", "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_http_session_coverage.py", + "source_location": "L16", + "community": 561, + "norm_label": ".test_returns_requests_session()", + "id": "tests_test_http_session_coverage_testgetsession_test_returns_requests_session" }, { - "label": "TestGetUserMemories", - "file_type": "code", - "source_file": "tests/test_memory_manager.py", - "source_location": "L101", - "community": 140, - "norm_label": "testgetusermemories", - "id": "tests_test_memory_manager_testgetusermemories" + "label": "Tests for main/utils/http_session.py \u2014 covers all branches.", + "file_type": "rationale", + "source_file": "tests/test_http_session_coverage.py", + "source_location": "L1", + "community": 561, + "norm_label": "tests for main/utils/http_session.py \u2014 covers all branches.", + "id": "tests_test_http_session_coverage_rationale_1" }, { - "label": ".test_returns_memories()", + "label": "test_input_validation.py", "file_type": "code", - "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" + "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_pagination()", + "label": "TestRegisterValidation", "file_type": "code", - "source_file": "tests/test_memory_manager.py", - "source_location": "L109", - "community": 140, - "norm_label": ".test_pagination()", - "id": "tests_test_memory_manager_testgetusermemories_test_pagination" + "source_file": "tests/test_input_validation.py", + "source_location": "L14", + "community": 25, + "norm_label": "testregistervalidation", + "id": "tests_test_input_validation_testregistervalidation" }, { - "label": ".test_excludes_archived()", + "label": ".test_valid_registration()", "file_type": "code", - "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" + "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": "TestDeleteMemory", + "label": ".test_username_too_short()", "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_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_soft_delete()", + "label": ".test_username_too_long()", "file_type": "code", - "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" + "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_delete_nonexistent()", + "label": ".test_email_too_short()", "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_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": ".test_delete_wrong_user()", + "label": ".test_password_too_short()", "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_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": "TestSearchFulltext", + "label": "TestLoginValidation", "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_input_validation.py", + "source_location": "L54", + "community": 25, + "norm_label": "testloginvalidation", + "id": "tests_test_input_validation_testloginvalidation" }, { - "label": ".test_search_after_create()", + "label": ".test_valid_login_payload()", "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_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_memory_tools_wiring.py", + "label": ".test_username_too_short()", "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_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": "TestMemoryToolFunctions", + "label": ".test_password_too_short()", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L23", - "community": 561, - "norm_label": "testmemorytoolfunctions", - "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions" + "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_search_memory_has_docstring()", + "label": "TestPrometheusSessionValidation", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L26", - "community": 561, - "norm_label": ".test_search_memory_has_docstring()", - "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions_test_search_memory_has_docstring" + "source_file": "tests/test_input_validation.py", + "source_location": "L80", + "community": 25, + "norm_label": "testprometheussessionvalidation", + "id": "tests_test_input_validation_testprometheussessionvalidation" }, { - "label": ".test_save_memory_has_docstring()", + "label": ".test_valid_create_session()", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L30", - "community": 561, - "norm_label": ".test_save_memory_has_docstring()", - "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions_test_save_memory_has_docstring" + "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_search_memory_signature()", + "label": ".test_empty_title()", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L34", - "community": 561, - "norm_label": ".test_search_memory_signature()", - "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions_test_search_memory_signature" + "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_save_memory_signature()", + "label": ".test_title_too_long()", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L39", - "community": 561, - "norm_label": ".test_save_memory_signature()", - "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions_test_save_memory_signature" + "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_search_memory_has_type_hints()", + "label": "TestUpdateTitleValidation", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L46", - "community": 561, - "norm_label": ".test_search_memory_has_type_hints()", - "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions_test_search_memory_has_type_hints" + "source_file": "tests/test_input_validation.py", + "source_location": "L109", + "community": 25, + "norm_label": "testupdatetitlevalidation", + "id": "tests_test_input_validation_testupdatetitlevalidation" }, { - "label": ".test_save_memory_has_type_hints()", + "label": ".test_empty_title()", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L50", - "community": 561, - "norm_label": ".test_save_memory_has_type_hints()", - "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions_test_save_memory_has_type_hints" + "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_memory_tools_is_list_of_callables()", + "label": ".test_title_too_long()", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L54", - "community": 561, - "norm_label": ".test_memory_tools_is_list_of_callables()", - "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions_test_memory_tools_is_list_of_callables" + "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_memory_tool_names_unchanged()", + "label": "TestChatValidation", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L60", - "community": 561, - "norm_label": ".test_memory_tool_names_unchanged()", - "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions_test_memory_tool_names_unchanged" + "source_file": "tests/test_input_validation.py", + "source_location": "L129", + "community": 25, + "norm_label": "testchatvalidation", + "id": "tests_test_input_validation_testchatvalidation" }, { - "label": "TestToolRegistry", + "label": ".test_empty_text()", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L64", - "community": 615, - "norm_label": "testtoolregistry", - "id": "tests_test_memory_tools_wiring_testtoolregistry" + "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_registry_contains_memory_tools()", + "label": ".test_text_too_long()", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L67", - "community": 615, - "norm_label": ".test_registry_contains_memory_tools()", - "id": "tests_test_memory_tools_wiring_testtoolregistry_test_registry_contains_memory_tools" + "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_registry_values_are_callable()", + "label": ".test_max_length_boundary()", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L71", - "community": 615, - "norm_label": ".test_registry_values_are_callable()", - "id": "tests_test_memory_tools_wiring_testtoolregistry_test_registry_values_are_callable" + "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_registry_matches_tool_names()", + "label": "TestMissingBody", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L75", - "community": 615, - "norm_label": ".test_registry_matches_tool_names()", - "id": "tests_test_memory_tools_wiring_testtoolregistry_test_registry_matches_tool_names" + "source_file": "tests/test_input_validation.py", + "source_location": "L158", + "community": 25, + "norm_label": "testmissingbody", + "id": "tests_test_input_validation_testmissingbody" }, { - "label": "TestMakeChatIncludesMemoryTools", + "label": ".test_register_missing_username()", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L79", - "community": 589, - "norm_label": "testmakechatincludesmemorytools", - "id": "tests_test_memory_tools_wiring_testmakechatincludesmemorytools" + "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_makeChat_tools_include_memory_tools()", + "label": ".test_register_missing_all()", "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_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": "TestDispatchRoutesMemoryTools", + "label": ".test_login_missing_fields()", "file_type": "code", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L112", - "community": 529, - "norm_label": "testdispatchroutesmemorytools", - "id": "tests_test_memory_tools_wiring_testdispatchroutesmemorytools" + "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_search_memory_routed_via_registry()", - "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" + "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_save_memory_routed_via_registry()", - "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" + "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_non_registry_tool_not_routed()", - "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" + "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": "TDD tests: verify memory tools are wired into the Prometheus agent. RED: Thes", + "label": "POST /prometheus/sessions \u2014 validates title via Body(...)", "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" + "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": "Verify the actual async tool functions have correct signatures.", + "label": "PUT /prometheus/sessions/{sessionId} \u2014 validates title via Body(...)", "file_type": "rationale", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L24", - "community": 561, - "norm_label": "verify the actual async tool functions have correct signatures.", - "id": "tests_test_memory_tools_wiring_rationale_24" + "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": "TOOL_REGISTRY pattern must work correctly.", + "label": "POST /prometheus/chat/stream \u2014 validates query via Body(...)", "file_type": "rationale", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L65", - "community": 615, - "norm_label": "tool_registry pattern must work correctly.", - "id": "tests_test_memory_tools_wiring_rationale_65" + "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": "makeChat must include MEMORY_TOOLS alongside MCP sessions.", + "label": "Test that endpoints reject requests with missing required fields.", "file_type": "rationale", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L80", - "community": 589, - "norm_label": "makechat must include memory_tools alongside mcp sessions.", - "id": "tests_test_memory_tools_wiring_rationale_80" + "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": "dispatchToolCall must route memory tool names via TOOL_REGISTRY.", - "file_type": "rationale", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L113", - "community": 529, - "norm_label": "dispatchtoolcall must route memory tool names via tool_registry.", - "id": "tests_test_memory_tools_wiring_rationale_113" + "label": "test_logging_config_coverage.py", + "file_type": "code", + "source_file": "tests/test_logging_config_coverage.py", + "source_location": "L1", + "community": 599, + "norm_label": "test_logging_config_coverage.py", + "id": "tests_test_logging_config_coverage_py" }, { - "label": "test_memory_types.py", + "label": "TestDiscordHandlerEmit", "file_type": "code", - "source_file": "tests/test_memory_types.py", - "source_location": "L1", - "community": 51, - "norm_label": "test_memory_types.py", - "id": "tests_test_memory_types_py" + "source_file": "tests/test_logging_config_coverage.py", + "source_location": "L8", + "community": 599, + "norm_label": "testdiscordhandleremit", + "id": "tests_test_logging_config_coverage_testdiscordhandleremit" }, { - "label": "TestVectorType", + "label": "._make_handler()", "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_logging_config_coverage.py", + "source_location": "L9", + "community": 599, + "norm_label": "._make_handler()", + "id": "tests_test_logging_config_coverage_testdiscordhandleremit_make_handler" }, { - "label": ".test_roundtrip()", + "label": "._make_record()", "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_logging_config_coverage.py", + "source_location": "L14", + "community": 599, + "norm_label": "._make_record()", + "id": "tests_test_logging_config_coverage_testdiscordhandleremit_make_record" }, { - "label": ".test_none_roundtrip()", + "label": "test_discord_disabled()", "file_type": "code", - "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" + "source_file": "tests/test_logging_config_coverage.py", + "source_location": "L27", + "community": 599, + "norm_label": "test_discord_disabled()", + "id": "tests_test_logging_config_coverage_test_discord_disabled" }, { - "label": ".test_wrong_dims_raises()", + "label": "test_discord_no_webhook()", "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_logging_config_coverage.py", + "source_location": "L35", + "community": 599, + "norm_label": "test_discord_no_webhook()", + "id": "tests_test_logging_config_coverage_test_discord_no_webhook" }, { - "label": ".test_preserves_negative_values()", + "label": "test_level_below_error()", "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_logging_config_coverage.py", + "source_location": "L43", + "community": 599, + "norm_label": "test_level_below_error()", + "id": "tests_test_logging_config_coverage_test_level_below_error" }, { - "label": ".test_large_random_vector()", + "label": "test_submit_called_on_error()", "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_logging_config_coverage.py", + "source_location": "L52", + "community": 599, + "norm_label": "test_submit_called_on_error()", + "id": "tests_test_logging_config_coverage_test_submit_called_on_error" }, { - "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_message_truncation()", + "file_type": "code", + "source_file": "tests/test_logging_config_coverage.py", + "source_location": "L62", + "community": 599, + "norm_label": "test_message_truncation()", + "id": "tests_test_logging_config_coverage_test_message_truncation" }, { - "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": "test_exception_in_submit()", + "file_type": "code", + "source_file": "tests/test_logging_config_coverage.py", + "source_location": "L77", + "community": 599, + "norm_label": "test_exception_in_submit()", + "id": "tests_test_logging_config_coverage_test_exception_in_submit" }, { - "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_with_exception_info()", + "file_type": "code", + "source_file": "tests/test_logging_config_coverage.py", + "source_location": "L88", + "community": 599, + "norm_label": "test_with_exception_info()", + "id": "tests_test_logging_config_coverage_test_with_exception_info" }, { - "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": "TestSetupLogging", + "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" }, { - "label": "VectorType: random 384-dim vector roundtrips.", + "label": "test_setup_discord_handler_enabled()", + "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" + }, + { + "label": "test_setup_discord_handler_disabled()", + "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_memory_types.py", - "source_location": "L38", - "community": 51, - "norm_label": "vectortype: random 384-dim vector roundtrips.", - "id": "tests_test_memory_types_rationale_38" + "source_file": "tests/test_logging_config_coverage.py", + "source_location": "L1", + "community": 599, + "norm_label": "tests for main/utils/logging_config.py \u2014 covers discordhandler branches.", + "id": "tests_test_logging_config_coverage_rationale_1" }, { - "label": "test_models.py", + "label": "test_memory_dedup.py", "file_type": "code", - "source_file": "tests/test_models.py", + "source_file": "tests/test_memory_dedup.py", "source_location": "L1", - "community": 61, - "norm_label": "test_models.py", - "id": "tests_test_models_py" + "community": 140, + "norm_label": "test_memory_dedup.py", + "id": "tests_test_memory_dedup_py" }, { - "label": "TestUserModel", + "label": "_create_memory()", "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_memory_dedup.py", + "source_location": "L8", + "community": 140, + "norm_label": "_create_memory()", + "id": "tests_test_memory_dedup_create_memory" }, { - "label": ".test_create_user()", + "label": "_count_memories()", "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_memory_dedup.py", + "source_location": "L12", + "community": 140, + "norm_label": "_count_memories()", + "id": "tests_test_memory_dedup_count_memories" }, { - "label": ".test_get_roles_list_default()", + "label": "_get_memory()", "file_type": "code", - "source_file": "tests/test_models.py", + "source_file": "tests/test_memory_dedup.py", + "source_location": "L20", + "community": 140, + "norm_label": "_get_memory()", + "id": "tests_test_memory_dedup_get_memory" + }, + { + "label": "TestExactSameKeyUpdates", + "file_type": "code", + "source_file": "tests/test_memory_dedup.py", "source_location": "L28", - "community": 61, - "norm_label": ".test_get_roles_list_default()", - "id": "tests_test_models_testusermodel_test_get_roles_list_default" + "community": 140, + "norm_label": "testexactsamekeyupdates", + "id": "tests_test_memory_dedup_testexactsamekeyupdates" }, { - "label": ".test_get_roles_list_single_role()", + "label": ".test_exact_same_key_updates()", "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_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": ".test_get_roles_list_multiple_roles()", + "label": "TestSimilarKeyMerges", "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_memory_dedup.py", + "source_location": "L36", + "community": 140, + "norm_label": "testsimilarkeymerges", + "id": "tests_test_memory_dedup_testsimilarkeymerges" }, { - "label": ".test_add_role_new()", + "label": ".test_similar_key_merges()", "file_type": "code", - "source_file": "tests/test_models.py", + "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": "TestDifferentKeysNoMerge", + "file_type": "code", + "source_file": "tests/test_memory_dedup.py", "source_location": "L46", - "community": 61, - "norm_label": ".test_add_role_new()", - "id": "tests_test_models_testusermodel_test_add_role_new" + "community": 140, + "norm_label": "testdifferentkeysnomerge", + "id": "tests_test_memory_dedup_testdifferentkeysnomerge" }, { - "label": ".test_add_role_existing()", + "label": ".test_different_keys_no_merge()", "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_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_has_role_true()", + "label": "TestMergeBoostsScore", "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_memory_dedup.py", + "source_location": "L55", + "community": 140, + "norm_label": "testmergeboostsscore", + "id": "tests_test_memory_dedup_testmergeboostsscore" }, { - "label": ".test_has_role_false()", + "label": ".test_merge_boosts_score()", "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_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_has_role_with_enum()", + "label": "TestMergeIncrementsAccess", "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_memory_dedup.py", + "source_location": "L64", + "community": 140, + "norm_label": "testmergeincrementsaccess", + "id": "tests_test_memory_dedup_testmergeincrementsaccess" }, { - "label": ".test_toDict()", + "label": ".test_merge_increments_access()", "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" + "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": "TestStocksAPIKeyModel", + "label": "TestThresholdBoundary", "file_type": "code", - "source_file": "tests/test_models.py", - "source_location": "L88", - "community": 37, - "norm_label": "teststocksapikeymodel", - "id": "tests_test_models_teststocksapikeymodel" + "source_file": "tests/test_memory_dedup.py", + "source_location": "L73", + "community": 140, + "norm_label": "testthresholdboundary", + "id": "tests_test_memory_dedup_testthresholdboundary" }, { - "label": ".test_create_api_key()", + "label": ".test_threshold_boundary()", "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_memory_dedup.py", + "source_location": "L74", + "community": 140, + "norm_label": ".test_threshold_boundary()", + "id": "tests_test_memory_dedup_testthresholdboundary_test_threshold_boundary" }, { - "label": ".test_is_quota_exceeded_true()", + "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": "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": "Keys with Jaccard <= 0.8 should not merge.", + "file_type": "rationale", + "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_memory_maintenance.py", "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_memory_maintenance.py", + "source_location": "L1", + "community": 574, + "norm_label": "test_memory_maintenance.py", + "id": "tests_test_memory_maintenance_py" }, { - "label": ".test_is_quota_exceeded_false()", + "label": "brt()", "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_memory_maintenance.py", + "source_location": "L18", + "community": 574, + "norm_label": "brt()", + "id": "tests_test_memory_maintenance_brt" }, { - "label": ".test_needs_reset_true_no_last_reset()", + "label": "create_memories()", "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_memory_maintenance.py", + "source_location": "L23", + "community": 574, + "norm_label": "create_memories()", + "id": "tests_test_memory_maintenance_create_memories" }, { - "label": ".test_needs_reset_true_expired()", + "label": "TestDecay", "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" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L46", + "community": 574, + "norm_label": "testdecay", + "id": "tests_test_memory_maintenance_testdecay" }, { - "label": ".test_needs_reset_false_recent()", + "label": ".test_active_memory_decays()", "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" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L47", + "community": 574, + "norm_label": ".test_active_memory_decays()", + "id": "tests_test_memory_maintenance_testdecay_test_active_memory_decays" }, { - "label": ".test_reset_quota()", + "label": ".test_zero_access_count_still_decays()", "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" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L54", + "community": 574, + "norm_label": ".test_zero_access_count_still_decays()", + "id": "tests_test_memory_maintenance_testdecay_test_zero_access_count_still_decays" }, { - "label": ".test_increment_usage()", + "label": ".test_high_score_decays_proportionally()", "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" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L61", + "community": 574, + "norm_label": ".test_high_score_decays_proportionally()", + "id": "tests_test_memory_maintenance_testdecay_test_high_score_decays_proportionally" }, { - "label": ".test_get_remaining_quota()", + "label": ".test_very_low_score_stays_above_zero()", "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" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L67", + "community": 574, + "norm_label": ".test_very_low_score_stays_above_zero()", + "id": "tests_test_memory_maintenance_testdecay_test_very_low_score_stays_above_zero" }, { - "label": ".test_get_remaining_quota_exceeded()", + "label": ".test_multiple_users_all_decayed()", "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" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L74", + "community": 574, + "norm_label": ".test_multiple_users_all_decayed()", + "id": "tests_test_memory_maintenance_testdecay_test_multiple_users_all_decayed" }, { - "label": ".test_toDict()", + "label": "TestArchive", "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" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L84", + "community": 256, + "norm_label": "testarchive", + "id": "tests_test_memory_maintenance_testarchive" }, { - "label": "TestPrometheusSessionModel", + "label": ".test_dead_memory_archived()", "file_type": "code", - "source_file": "tests/test_models.py", - "source_location": "L162", - "community": 61, - "norm_label": "testprometheussessionmodel", - "id": "tests_test_models_testprometheussessionmodel" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L85", + "community": 256, + "norm_label": ".test_dead_memory_archived()", + "id": "tests_test_memory_maintenance_testarchive_test_dead_memory_archived" }, { - "label": ".test_create_session()", + "label": ".test_low_score_but_recent_not_archived()", "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" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L92", + "community": 256, + "norm_label": ".test_low_score_but_recent_not_archived()", + "id": "tests_test_memory_maintenance_testarchive_test_low_score_but_recent_not_archived" }, { - "label": ".test_default_history()", + "label": ".test_zero_access_but_high_score_not_archived()", "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" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L99", + "community": 256, + "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_oauth_cookie_security.py", + "label": ".test_accessed_memory_not_archived()", "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_memory_maintenance.py", + "source_location": "L106", + "community": 256, + "norm_label": ".test_accessed_memory_not_archived()", + "id": "tests_test_memory_maintenance_testarchive_test_accessed_memory_not_archived" }, { - "label": "_make_callback_client()", + "label": ".test_already_archived_not_double_archived()", "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_memory_maintenance.py", + "source_location": "L113", + "community": 256, + "norm_label": ".test_already_archived_not_double_archived()", + "id": "tests_test_memory_maintenance_testarchive_test_already_archived_not_double_archived" }, { - "label": "_setup_callback_mocks()", + "label": ".test_multiple_users_independent_archive()", "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_memory_maintenance.py", + "source_location": "L123", + "community": 256, + "norm_label": ".test_multiple_users_independent_archive()", + "id": "tests_test_memory_maintenance_testarchive_test_multiple_users_independent_archive" }, { - "label": "TestOAuthCallbackTokenNotInURL", + "label": "TestDecayAndArchiveTogether", "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_memory_maintenance.py", + "source_location": "L133", + "community": 574, + "norm_label": "testdecayandarchivetogether", + "id": "tests_test_memory_maintenance_testdecayandarchivetogether" }, { - "label": "test_callback_with_state_redirect_no_token_in_url()", + "label": ".test_decay_then_archive_check()", "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_memory_maintenance.py", + "source_location": "L134", + "community": 574, + "norm_label": ".test_decay_then_archive_check()", + "id": "tests_test_memory_maintenance_testdecayandarchivetogether_test_decay_then_archive_check" }, { - "label": "test_callback_sets_httponly_cookie()", + "label": ".test_score_above_threshold_after_decay_not_archived()", "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_memory_maintenance.py", + "source_location": "L143", + "community": 635, + "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_callback_cookies_have_secure_flag()", + "label": ".test_score_just_below_threshold_archived()", "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_memory_maintenance.py", + "source_location": "L150", + "community": 574, + "norm_label": ".test_score_just_below_threshold_archived()", + "id": "tests_test_memory_maintenance_testdecayandarchivetogether_test_score_just_below_threshold_archived" }, { - "label": "test_callback_no_state_returns_json_with_token()", + "label": ".test_days_just_below_threshold_not_archived()", "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_memory_maintenance.py", + "source_location": "L156", + "community": 574, + "norm_label": ".test_days_just_below_threshold_not_archived()", + "id": "tests_test_memory_maintenance_testdecayandarchivetogether_test_days_just_below_threshold_not_archived" }, { - "label": "TestOAuthCallbackFrontendCompatibility", + "label": ".test_days_just_above_threshold_archived()", "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_memory_maintenance.py", + "source_location": "L163", + "community": 574, + "norm_label": ".test_days_just_above_threshold_archived()", + "id": "tests_test_memory_maintenance_testdecayandarchivetogether_test_days_just_above_threshold_archived" }, { - "label": "test_frontend_gets_token_from_cookie()", + "label": "TestEmptyDatabase", "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_memory_maintenance.py", + "source_location": "L170", + "community": 140, + "norm_label": "testemptydatabase", + "id": "tests_test_memory_maintenance_testemptydatabase" }, { - "label": "test_open_redirect_blocked()", + "label": ".test_no_memories_does_not_crash()", "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_memory_maintenance.py", + "source_location": "L171", + "community": 503, + "norm_label": ".test_no_memories_does_not_crash()", + "id": "tests_test_memory_maintenance_testemptydatabase_test_no_memories_does_not_crash" }, { - "label": "Tests for OAuth callback security - JWT token should NOT be in URL. Token is de", + "label": "Helper to create memories with controlled baseScore, lastAccessedAt, accessCount", "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" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L24", + "community": 574, + "norm_label": "helper to create memories with controlled basescore, lastaccessedat, accesscount", + "id": "tests_test_memory_maintenance_rationale_24" }, { - "label": "Return (client, app, mock_session) for testing Google callback.", + "label": "Decay applies to ALL active memories, not just accessed ones.", "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" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L55", + "community": 574, + "norm_label": "decay applies to all active memories, not just accessed ones.", + "id": "tests_test_memory_maintenance_rationale_55" }, { - "label": "Helper to setup common mock values for callback tests.", + "label": "baseScore should never reach exactly 0 from decay alone.", "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" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L68", + "community": 574, + "norm_label": "basescore should never reach exactly 0 from decay alone.", + "id": "tests_test_memory_maintenance_rationale_68" }, { - "label": "Verify JWT token is NOT leaked in redirect URL after OAuth callback.", + "label": "Score below threshold + accessCount=0 + 90+ days \u2192 archived.", "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" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L86", + "community": 256, + "norm_label": "score below threshold + accesscount=0 + 90+ days \u2192 archived.", + "id": "tests_test_memory_maintenance_rationale_86" }, { - "label": "Token must NOT appear in redirect URL \u2014 cookie only.", + "label": "Low score but accessed recently \u2192 not archived.", "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" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L93", + "community": 256, + "norm_label": "low score but accessed recently \u2192 not archived.", + "id": "tests_test_memory_maintenance_rationale_93" }, { - "label": "Cookie must be httponly (not accessible via JavaScript).", + "label": "Zero access but score still above threshold \u2192 not archived.", "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" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L100", + "community": 256, + "norm_label": "zero access but score still above threshold \u2192 not archived.", + "id": "tests_test_memory_maintenance_rationale_100" }, { - "label": "Cookie should have secure flag (HTTPS only).", + "label": "Even with low score, if accessed \u2192 not archived.", "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" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L107", + "community": 256, + "norm_label": "even with low score, if accessed \u2192 not archived.", + "id": "tests_test_memory_maintenance_rationale_107" }, { - "label": "When no state param, return JSON response (not redirect).", + "label": "Already archived memories are skipped.", "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" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L114", + "community": 256, + "norm_label": "already archived memories are skipped.", + "id": "tests_test_memory_maintenance_rationale_114" }, { - "label": "Verify frontend can still auth after OAuth redirect via cookie.", + "label": "Decay happens first, then archive check with new scores.", "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" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L135", + "community": 574, + "norm_label": "decay happens first, then archive check with new scores.", + "id": "tests_test_memory_maintenance_rationale_135" }, { - "label": "After OAuth redirect, httponly cookie contains the token.", + "label": "Score that decays to >= threshold stays alive. 0.12 * 0.90 = 0.108 >= 0.1.", "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" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L144", + "community": 635, + "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": "Non-localhost redirect URLs must be rejected.", + "label": "89 days with low score \u2192 not archived (need > 90).", "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" + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L157", + "community": 574, + "norm_label": "89 days with low score \u2192 not archived (need > 90).", + "id": "tests_test_memory_maintenance_rationale_157" }, { - "label": "test_pagination.py", + "label": "test_memory_manager.py", "file_type": "code", - "source_file": "tests/test_pagination.py", + "source_file": "tests/test_memory_manager.py", "source_location": "L1", - "community": 186, - "norm_label": "test_pagination.py", - "id": "tests_test_pagination_py" + "community": 140, + "norm_label": "test_memory_manager.py", + "id": "tests_test_memory_manager_py" }, { - "label": "app()", + "label": "TestGetMemoryLimit", "file_type": "code", - "source_file": "tests/test_pagination.py", - "source_location": "L14", - "community": 186, - "norm_label": "app()", - "id": "tests_test_pagination_app" + "source_file": "tests/test_memory_manager.py", + "source_location": "L8", + "community": 140, + "norm_label": "testgetmemorylimit", + "id": "tests_test_memory_manager_testgetmemorylimit" }, { - "label": "client()", + "label": ".test_basic_user()", "file_type": "code", - "source_file": "tests/test_pagination.py", - "source_location": "L35", - "community": 186, - "norm_label": "client()", - "id": "tests_test_pagination_client" + "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": "TestInlinePagination", + "label": ".test_premium_user()", "file_type": "code", - "source_file": "tests/test_pagination.py", - "source_location": "L39", - "community": 186, - "norm_label": "testinlinepagination", - "id": "tests_test_pagination_testinlinepagination" + "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_defaults()", + "label": ".test_admin_user()", "file_type": "code", - "source_file": "tests/test_pagination.py", - "source_location": "L40", - "community": 186, - "norm_label": ".test_defaults()", - "id": "tests_test_pagination_testinlinepagination_test_defaults" + "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_custom_limit()", + "label": "TestUpsertMemory", "file_type": "code", - "source_file": "tests/test_pagination.py", - "source_location": "L48", - "community": 186, - "norm_label": ".test_custom_limit()", - "id": "tests_test_pagination_testinlinepagination_test_custom_limit" + "source_file": "tests/test_memory_manager.py", + "source_location": "L19", + "community": 140, + "norm_label": "testupsertmemory", + "id": "tests_test_memory_manager_testupsertmemory" }, { - "label": ".test_custom_offset()", + "label": ".test_create()", "file_type": "code", - "source_file": "tests/test_pagination.py", - "source_location": "L54", - "community": 186, - "norm_label": ".test_custom_offset()", - "id": "tests_test_pagination_testinlinepagination_test_custom_offset" + "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_limit_and_offset()", + "label": ".test_update()", "file_type": "code", - "source_file": "tests/test_pagination.py", - "source_location": "L61", - "community": 186, - "norm_label": ".test_limit_and_offset()", - "id": "tests_test_pagination_testinlinepagination_test_limit_and_offset" + "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_limit_exceeds_max_rejected()", + "label": ".test_unchanged()", "file_type": "code", - "source_file": "tests/test_pagination.py", - "source_location": "L69", - "community": 186, - "norm_label": ".test_limit_exceeds_max_rejected()", - "id": "tests_test_pagination_testinlinepagination_test_limit_exceeds_max_rejected" + "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_limit_zero_rejected()", + "label": ".test_limit_enforcement()", "file_type": "code", - "source_file": "tests/test_pagination.py", - "source_location": "L73", - "community": 186, - "norm_label": ".test_limit_zero_rejected()", - "id": "tests_test_pagination_testinlinepagination_test_limit_zero_rejected" + "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_negative_offset_rejected()", + "label": ".test_limit_not_enforced_without_roles()", "file_type": "code", - "source_file": "tests/test_pagination.py", - "source_location": "L77", - "community": 186, - "norm_label": ".test_negative_offset_rejected()", - "id": "tests_test_pagination_testinlinepagination_test_negative_offset_rejected" + "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_offset_beyond_total()", + "label": ".test_upsert_with_embedding()", "file_type": "code", - "source_file": "tests/test_pagination.py", - "source_location": "L81", - "community": 186, - "norm_label": ".test_offset_beyond_total()", - "id": "tests_test_pagination_testinlinepagination_test_offset_beyond_total" + "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_limit_equals_max()", + "label": "TestCountMemories", "file_type": "code", - "source_file": "tests/test_pagination.py", - "source_location": "L86", - "community": 186, - "norm_label": ".test_limit_equals_max()", - "id": "tests_test_pagination_testinlinepagination_test_limit_equals_max" - }, - { - "label": "Tests for inline pagination params (used in user + prometheus controllers).", - "file_type": "rationale", - "source_file": "tests/test_pagination.py", - "source_location": "L1", - "community": 186, - "norm_label": "tests for inline pagination params (used in user + prometheus controllers).", - "id": "tests_test_pagination_rationale_1" + "source_file": "tests/test_memory_manager.py", + "source_location": "L80", + "community": 140, + "norm_label": "testcountmemories", + "id": "tests_test_memory_manager_testcountmemories" }, { - "label": "test_prometheus_auth_coverage.py", + "label": ".test_counts_active()", "file_type": "code", - "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" + "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": "TestPrometheusInit", + "label": ".test_excludes_archived()", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L26", - "community": 172, - "norm_label": "testprometheusinit", - "id": "tests_test_prometheus_auth_coverage_testprometheusinit" + "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_init_creates_client()", + "label": ".test_counts_per_user()", "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_manager.py", + "source_location": "L94", + "community": 140, + "norm_label": ".test_counts_per_user()", + "id": "tests_test_memory_manager_testcountmemories_test_counts_per_user" }, { - "label": "TestPrometheusSendMessage", + "label": "TestGetUserMemories", "file_type": "code", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L41", - "community": 172, + "source_file": "tests/test_memory_manager.py", + "source_location": "L101", + "community": 140, + "norm_label": "testgetusermemories", + "id": "tests_test_memory_manager_testgetusermemories" + }, + { + "label": ".test_returns_memories()", + "file_type": "code", + "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_pagination()", + "file_type": "code", + "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_excludes_archived()", + "file_type": "code", + "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": "TestDeleteMemory", + "file_type": "code", + "source_file": "tests/test_memory_manager.py", + "source_location": "L125", + "community": 140, + "norm_label": "testdeletememory", + "id": "tests_test_memory_manager_testdeletememory" + }, + { + "label": ".test_soft_delete()", + "file_type": "code", + "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_delete_nonexistent()", + "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" + }, + { + "label": ".test_delete_wrong_user()", + "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" + }, + { + "label": "TestSearchFulltext", + "file_type": "code", + "source_file": "tests/test_memory_manager.py", + "source_location": "L142", + "community": 140, + "norm_label": "testsearchfulltext", + "id": "tests_test_memory_manager_testsearchfulltext" + }, + { + "label": ".test_search_after_create()", + "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" + }, + { + "label": "test_memory_tools_wiring.py", + "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" + }, + { + "label": "TestMemoryToolFunctions", + "file_type": "code", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L23", + "community": 568, + "norm_label": "testmemorytoolfunctions", + "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions" + }, + { + "label": ".test_search_memory_has_docstring()", + "file_type": "code", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L26", + "community": 568, + "norm_label": ".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_memory_tools_wiring.py", + "source_location": "L30", + "community": 568, + "norm_label": ".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_memory_tools_wiring.py", + "source_location": "L34", + "community": 568, + "norm_label": ".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_memory_tools_wiring.py", + "source_location": "L39", + "community": 568, + "norm_label": ".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_memory_tools_wiring.py", + "source_location": "L46", + "community": 568, + "norm_label": ".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_memory_tools_wiring.py", + "source_location": "L50", + "community": 568, + "norm_label": ".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_memory_tools_wiring.py", + "source_location": "L54", + "community": 568, + "norm_label": ".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_memory_tools_wiring.py", + "source_location": "L60", + "community": 186, + "norm_label": ".test_memory_tool_names_unchanged()", + "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions_test_memory_tool_names_unchanged" + }, + { + "label": "TestToolRegistry", + "file_type": "code", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L64", + "community": 49, + "norm_label": "testtoolregistry", + "id": "tests_test_memory_tools_wiring_testtoolregistry" + }, + { + "label": ".test_registry_contains_memory_tools()", + "file_type": "code", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L67", + "community": 49, + "norm_label": ".test_registry_contains_memory_tools()", + "id": "tests_test_memory_tools_wiring_testtoolregistry_test_registry_contains_memory_tools" + }, + { + "label": ".test_registry_values_are_callable()", + "file_type": "code", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L71", + "community": 49, + "norm_label": ".test_registry_values_are_callable()", + "id": "tests_test_memory_tools_wiring_testtoolregistry_test_registry_values_are_callable" + }, + { + "label": ".test_registry_matches_tool_names()", + "file_type": "code", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L75", + "community": 49, + "norm_label": ".test_registry_matches_tool_names()", + "id": "tests_test_memory_tools_wiring_testtoolregistry_test_registry_matches_tool_names" + }, + { + "label": "TestMakeChatIncludesMemoryTools", + "file_type": "code", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L79", + "community": 630, + "norm_label": "testmakechatincludesmemorytools", + "id": "tests_test_memory_tools_wiring_testmakechatincludesmemorytools" + }, + { + "label": "test_makeChat_tools_include_memory_tools()", + "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" + }, + { + "label": "TestDispatchRoutesMemoryTools", + "file_type": "code", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L112", + "community": 621, + "norm_label": "testdispatchroutesmemorytools", + "id": "tests_test_memory_tools_wiring_testdispatchroutesmemorytools" + }, + { + "label": "test_search_memory_routed_via_registry()", + "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" + }, + { + "label": "test_save_memory_routed_via_registry()", + "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" + }, + { + "label": "test_non_registry_tool_not_routed()", + "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" + }, + { + "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": 568, + "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": 49, + "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": 630, + "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": 621, + "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_location": "L1", + "community": 51, + "norm_label": "test_memory_types.py", + "id": "tests_test_memory_types_py" + }, + { + "label": "TestVectorType", + "file_type": "code", + "source_file": "tests/test_memory_types.py", + "source_location": "L6", + "community": 51, + "norm_label": "testvectortype", + "id": "tests_test_memory_types_testvectortype" + }, + { + "label": ".test_roundtrip()", + "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" + }, + { + "label": ".test_none_roundtrip()", + "file_type": "code", + "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_wrong_dims_raises()", + "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" + }, + { + "label": ".test_preserves_negative_values()", + "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" + }, + { + "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_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": "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": "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": "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": "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_models.py", + "source_location": "L1", + "community": 61, + "norm_label": "test_models.py", + "id": "tests_test_models_py" + }, + { + "label": "TestUserModel", + "file_type": "code", + "source_file": "tests/test_models.py", + "source_location": "L17", + "community": 61, + "norm_label": "testusermodel", + "id": "tests_test_models_testusermodel" + }, + { + "label": ".test_create_user()", + "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" + }, + { + "label": ".test_get_roles_list_default()", + "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" + }, + { + "label": ".test_get_roles_list_single_role()", + "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" + }, + { + "label": ".test_get_roles_list_multiple_roles()", + "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" + }, + { + "label": ".test_add_role_new()", + "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" + }, + { + "label": ".test_add_role_existing()", + "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" + }, + { + "label": ".test_has_role_true()", + "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" + }, + { + "label": ".test_has_role_false()", + "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" + }, + { + "label": ".test_has_role_with_enum()", + "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" + }, + { + "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()", + "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" + }, + { + "label": ".test_is_quota_exceeded_true()", + "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" + }, + { + "label": ".test_is_quota_exceeded_false()", + "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" + }, + { + "label": ".test_needs_reset_true_no_last_reset()", + "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" + }, + { + "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": ".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": ".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": ".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": ".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": ".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": ".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": "TestPrometheusSessionModel", + "file_type": "code", + "source_file": "tests/test_models.py", + "source_location": "L162", + "community": 61, + "norm_label": "testprometheussessionmodel", + "id": "tests_test_models_testprometheussessionmodel" + }, + { + "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": ".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_oauth_cookie_security.py", + "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" + }, + { + "label": "_make_callback_client()", + "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" + }, + { + "label": "_setup_callback_mocks()", + "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" + }, + { + "label": "TestOAuthCallbackTokenNotInURL", + "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" + }, + { + "label": "test_callback_with_state_redirect_no_token_in_url()", + "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" + }, + { + "label": "test_callback_sets_httponly_cookie()", + "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" + }, + { + "label": "test_callback_cookies_have_secure_flag()", + "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" + }, + { + "label": "test_callback_no_state_returns_json_with_token()", + "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" + }, + { + "label": "TestOAuthCallbackFrontendCompatibility", + "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" + }, + { + "label": "test_frontend_gets_token_from_cookie()", + "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" + }, + { + "label": "test_open_redirect_blocked()", + "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" + }, + { + "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": "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" + }, + { + "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": "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": "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_pagination.py", + "source_location": "L1", + "community": 576, + "norm_label": "test_pagination.py", + "id": "tests_test_pagination_py" + }, + { + "label": "app()", + "file_type": "code", + "source_file": "tests/test_pagination.py", + "source_location": "L14", + "community": 576, + "norm_label": "app()", + "id": "tests_test_pagination_app" + }, + { + "label": "client()", + "file_type": "code", + "source_file": "tests/test_pagination.py", + "source_location": "L35", + "community": 576, + "norm_label": "client()", + "id": "tests_test_pagination_client" + }, + { + "label": "TestInlinePagination", + "file_type": "code", + "source_file": "tests/test_pagination.py", + "source_location": "L39", + "community": 562, + "norm_label": "testinlinepagination", + "id": "tests_test_pagination_testinlinepagination" + }, + { + "label": ".test_defaults()", + "file_type": "code", + "source_file": "tests/test_pagination.py", + "source_location": "L40", + "community": 562, + "norm_label": ".test_defaults()", + "id": "tests_test_pagination_testinlinepagination_test_defaults" + }, + { + "label": ".test_custom_limit()", + "file_type": "code", + "source_file": "tests/test_pagination.py", + "source_location": "L48", + "community": 562, + "norm_label": ".test_custom_limit()", + "id": "tests_test_pagination_testinlinepagination_test_custom_limit" + }, + { + "label": ".test_custom_offset()", + "file_type": "code", + "source_file": "tests/test_pagination.py", + "source_location": "L54", + "community": 562, + "norm_label": ".test_custom_offset()", + "id": "tests_test_pagination_testinlinepagination_test_custom_offset" + }, + { + "label": ".test_limit_and_offset()", + "file_type": "code", + "source_file": "tests/test_pagination.py", + "source_location": "L61", + "community": 562, + "norm_label": ".test_limit_and_offset()", + "id": "tests_test_pagination_testinlinepagination_test_limit_and_offset" + }, + { + "label": ".test_limit_exceeds_max_rejected()", + "file_type": "code", + "source_file": "tests/test_pagination.py", + "source_location": "L69", + "community": 562, + "norm_label": ".test_limit_exceeds_max_rejected()", + "id": "tests_test_pagination_testinlinepagination_test_limit_exceeds_max_rejected" + }, + { + "label": ".test_limit_zero_rejected()", + "file_type": "code", + "source_file": "tests/test_pagination.py", + "source_location": "L73", + "community": 562, + "norm_label": ".test_limit_zero_rejected()", + "id": "tests_test_pagination_testinlinepagination_test_limit_zero_rejected" + }, + { + "label": ".test_negative_offset_rejected()", + "file_type": "code", + "source_file": "tests/test_pagination.py", + "source_location": "L77", + "community": 562, + "norm_label": ".test_negative_offset_rejected()", + "id": "tests_test_pagination_testinlinepagination_test_negative_offset_rejected" + }, + { + "label": ".test_offset_beyond_total()", + "file_type": "code", + "source_file": "tests/test_pagination.py", + "source_location": "L81", + "community": 562, + "norm_label": ".test_offset_beyond_total()", + "id": "tests_test_pagination_testinlinepagination_test_offset_beyond_total" + }, + { + "label": ".test_limit_equals_max()", + "file_type": "code", + "source_file": "tests/test_pagination.py", + "source_location": "L86", + "community": 562, + "norm_label": ".test_limit_equals_max()", + "id": "tests_test_pagination_testinlinepagination_test_limit_equals_max" + }, + { + "label": "Tests for inline pagination params (used in user + prometheus controllers).", + "file_type": "rationale", + "source_file": "tests/test_pagination.py", + "source_location": "L1", + "community": 576, + "norm_label": "tests for inline pagination params (used in user + prometheus controllers).", + "id": "tests_test_pagination_rationale_1" + }, + { + "label": "test_prometheus_auth_coverage.py", + "file_type": "code", + "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": "TestPrometheusInit", + "file_type": "code", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L26", + "community": 112, + "norm_label": "testprometheusinit", + "id": "tests_test_prometheus_auth_coverage_testprometheusinit" + }, + { + "label": "test_init_creates_client()", + "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" + }, + { + "label": "TestPrometheusSendMessage", + "file_type": "code", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L41", + "community": 112, "norm_label": "testprometheussendmessage", "id": "tests_test_prometheus_auth_coverage_testprometheussendmessage" }, @@ -34256,7 +37442,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L248", - "community": 172, + "community": 112, "norm_label": ".test_init()", "id": "tests_test_prometheus_auth_coverage_testprometheuschatmanager_test_init" }, @@ -34418,7 +37604,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L469", - "community": 88, + "community": 519, "norm_label": "testauthenticationmanager", "id": "tests_test_prometheus_auth_coverage_testauthenticationmanager" }, @@ -34436,7 +37622,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L485", - "community": 88, + "community": 519, "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" }, @@ -34445,7 +37631,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L496", - "community": 88, + "community": 519, "norm_label": ".test_create_user_account_username_taken()", "id": "tests_test_prometheus_auth_coverage_testauthenticationmanager_test_create_user_account_username_taken" }, @@ -34454,7 +37640,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L510", - "community": 88, + "community": 519, "norm_label": ".test_create_user_account_email_taken()", "id": "tests_test_prometheus_auth_coverage_testauthenticationmanager_test_create_user_account_email_taken" }, @@ -34472,7 +37658,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L539", - "community": 88, + "community": 519, "norm_label": ".test_create_user_account_with_google_id()", "id": "tests_test_prometheus_auth_coverage_testauthenticationmanager_test_create_user_account_with_google_id" }, @@ -34481,7 +37667,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L548", - "community": 88, + "community": 519, "norm_label": ".test_authenticate_google_user_found()", "id": "tests_test_prometheus_auth_coverage_testauthenticationmanager_test_authenticate_google_user_found" }, @@ -34490,7 +37676,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L563", - "community": 88, + "community": 519, "norm_label": ".test_authenticate_google_user_not_found()", "id": "tests_test_prometheus_auth_coverage_testauthenticationmanager_test_authenticate_google_user_not_found" }, @@ -34499,7 +37685,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L572", - "community": 88, + "community": 519, "norm_label": ".test_authenticate_google_user_exception()", "id": "tests_test_prometheus_auth_coverage_testauthenticationmanager_test_authenticate_google_user_exception" }, @@ -34526,7 +37712,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L611", - "community": 88, + "community": 519, "norm_label": ".test_authenticate_user_not_found()", "id": "tests_test_prometheus_auth_coverage_testauthenticationmanager_test_authenticate_user_not_found" }, @@ -34535,7 +37721,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L620", - "community": 88, + "community": 519, "norm_label": ".test_authenticate_user_no_password_hash()", "id": "tests_test_prometheus_auth_coverage_testauthenticationmanager_test_authenticate_user_no_password_hash" }, @@ -34544,7 +37730,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L631", - "community": 88, + "community": 519, "norm_label": ".test_authenticate_user_exception()", "id": "tests_test_prometheus_auth_coverage_testauthenticationmanager_test_authenticate_user_exception" }, @@ -34733,7 +37919,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L881", - "community": 190, + "community": 627, "norm_label": ".test_validate_session_expired_naive_tz()", "id": "tests_test_prometheus_auth_coverage_testsessionmanager_test_validate_session_expired_naive_tz" }, @@ -34742,7 +37928,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L895", - "community": 165, + "community": 628, "norm_label": ".test_validate_session_no_expiry()", "id": "tests_test_prometheus_auth_coverage_testsessionmanager_test_validate_session_no_expiry" }, @@ -34751,7 +37937,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L914", - "community": 172, + "community": 112, "norm_label": "testsso", "id": "tests_test_prometheus_auth_coverage_testsso" }, @@ -34760,7 +37946,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L919", - "community": 58, + "community": 592, "norm_label": "test_get_google_sso_with_redirect()", "id": "tests_test_prometheus_auth_coverage_test_get_google_sso_with_redirect" }, @@ -34769,7 +37955,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L938", - "community": 58, + "community": 592, "norm_label": "test_get_google_sso_default_redirect()", "id": "tests_test_prometheus_auth_coverage_test_get_google_sso_default_redirect" }, @@ -34787,7 +37973,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L42", - "community": 172, + "community": 112, "norm_label": "cover streammessage in agent.py.", "id": "tests_test_prometheus_auth_coverage_rationale_42" }, @@ -34823,7 +38009,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L470", - "community": 88, + "community": 519, "norm_label": "cover all methods in authentication.py (lines 13-75).", "id": "tests_test_prometheus_auth_coverage_rationale_470" }, @@ -34841,7 +38027,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L882", - "community": 190, + "community": 627, "norm_label": "exercises the tzinfo-is-none branch (line 144-148).", "id": "tests_test_prometheus_auth_coverage_rationale_882" }, @@ -34850,7 +38036,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L896", - "community": 165, + "community": 628, "norm_label": "exercises the expiresat-is-none branch (line 143).", "id": "tests_test_prometheus_auth_coverage_rationale_896" }, @@ -34859,7 +38045,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L915", - "community": 172, + "community": 112, "norm_label": "cover getgooglesso (lines 6-14).", "id": "tests_test_prometheus_auth_coverage_rationale_915" }, @@ -34886,7 +38072,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L44", - "community": 530, + "community": 518, "norm_label": "testmemorytoolfunctions", "id": "tests_test_prometheus_tools_testmemorytoolfunctions" }, @@ -34895,7 +38081,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L45", - "community": 530, + "community": 518, "norm_label": ".test_search_memory_has_docstring()", "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_search_memory_has_docstring" }, @@ -34904,7 +38090,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L49", - "community": 530, + "community": 518, "norm_label": ".test_save_memory_has_docstring()", "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_save_memory_has_docstring" }, @@ -34913,7 +38099,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L53", - "community": 530, + "community": 518, "norm_label": ".test_search_memory_signature()", "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_search_memory_signature" }, @@ -34922,7 +38108,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L59", - "community": 530, + "community": 518, "norm_label": ".test_save_memory_signature()", "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_save_memory_signature" }, @@ -34931,7 +38117,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L66", - "community": 530, + "community": 518, "norm_label": ".test_search_memory_has_type_hints()", "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_search_memory_has_type_hints" }, @@ -34940,7 +38126,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L71", - "community": 530, + "community": 518, "norm_label": ".test_save_memory_has_type_hints()", "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_save_memory_has_type_hints" }, @@ -34949,7 +38135,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L77", - "community": 530, + "community": 518, "norm_label": ".test_memory_tools_is_list_of_callables()", "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_memory_tools_is_list_of_callables" }, @@ -34958,7 +38144,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L83", - "community": 530, + "community": 518, "norm_label": ".test_memory_tool_names_unchanged()", "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_memory_tool_names_unchanged" }, @@ -35048,7 +38234,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L126", - "community": 585, + "community": 563, "norm_label": "testgeminicompatibility", "id": "tests_test_prometheus_tools_testgeminicompatibility" }, @@ -35066,7 +38252,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L135", - "community": 585, + "community": 563, "norm_label": ".test_no_harnessstate_in_any_signature()", "id": "tests_test_prometheus_tools_testgeminicompatibility_test_no_harnessstate_in_any_signature" }, @@ -35075,7 +38261,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L151", - "community": 616, + "community": 631, "norm_label": "testtoolregistry", "id": "tests_test_prometheus_tools_testtoolregistry" }, @@ -35084,7 +38270,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L152", - "community": 616, + "community": 631, "norm_label": ".test_registry_contains_memory_tools()", "id": "tests_test_prometheus_tools_testtoolregistry_test_registry_contains_memory_tools" }, @@ -35093,7 +38279,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L156", - "community": 616, + "community": 631, "norm_label": ".test_registry_values_are_callable()", "id": "tests_test_prometheus_tools_testtoolregistry_test_registry_values_are_callable" }, @@ -35102,7 +38288,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L160", - "community": 616, + "community": 631, "norm_label": ".test_registry_matches_tool_names()", "id": "tests_test_prometheus_tools_testtoolregistry_test_registry_matches_tool_names" }, @@ -35120,7 +38306,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_tools.py", "source_location": "L127", - "community": 585, + "community": 563, "norm_label": "every function in tool_registry must have gemini-safe signatures. custom cl", "id": "tests_test_prometheus_tools_rationale_127" }, @@ -35129,7 +38315,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_tools.py", "source_location": "L136", - "community": 585, + "community": 563, "norm_label": "regression: harnessstate must never leak into tool signatures.", "id": "tests_test_prometheus_tools_rationale_136" }, @@ -35399,7 +38585,7 @@ "file_type": "code", "source_file": "tests/test_request_id.py", "source_location": "L1", - "community": 511, + "community": 504, "norm_label": "test_request_id.py", "id": "tests_test_request_id_py" }, @@ -35408,7 +38594,7 @@ "file_type": "code", "source_file": "tests/test_request_id.py", "source_location": "L14", - "community": 511, + "community": 504, "norm_label": "app()", "id": "tests_test_request_id_app" }, @@ -35417,7 +38603,7 @@ "file_type": "code", "source_file": "tests/test_request_id.py", "source_location": "L30", - "community": 511, + "community": 504, "norm_label": "client()", "id": "tests_test_request_id_client" }, @@ -35426,7 +38612,7 @@ "file_type": "code", "source_file": "tests/test_request_id.py", "source_location": "L34", - "community": 511, + "community": 504, "norm_label": "testrequestidmiddleware", "id": "tests_test_request_id_testrequestidmiddleware" }, @@ -35435,7 +38621,7 @@ "file_type": "code", "source_file": "tests/test_request_id.py", "source_location": "L35", - "community": 511, + "community": 504, "norm_label": ".test_generates_uuid_when_no_header()", "id": "tests_test_request_id_testrequestidmiddleware_test_generates_uuid_when_no_header" }, @@ -35444,7 +38630,7 @@ "file_type": "code", "source_file": "tests/test_request_id.py", "source_location": "L44", - "community": 511, + "community": 504, "norm_label": ".test_returns_generated_uuid_in_body()", "id": "tests_test_request_id_testrequestidmiddleware_test_returns_generated_uuid_in_body" }, @@ -35453,7 +38639,7 @@ "file_type": "code", "source_file": "tests/test_request_id.py", "source_location": "L51", - "community": 511, + "community": 504, "norm_label": ".test_uses_client_provided_request_id()", "id": "tests_test_request_id_testrequestidmiddleware_test_uses_client_provided_request_id" }, @@ -35462,7 +38648,7 @@ "file_type": "code", "source_file": "tests/test_request_id.py", "source_location": "L57", - "community": 511, + "community": 504, "norm_label": ".test_response_header_matches_request()", "id": "tests_test_request_id_testrequestidmiddleware_test_response_header_matches_request" }, @@ -35471,7 +38657,7 @@ "file_type": "code", "source_file": "tests/test_request_id.py", "source_location": "L62", - "community": 511, + "community": 504, "norm_label": ".test_different_requests_get_different_ids()", "id": "tests_test_request_id_testrequestidmiddleware_test_different_requests_get_different_ids" }, @@ -35480,7 +38666,7 @@ "file_type": "code", "source_file": "tests/test_request_id.py", "source_location": "L67", - "community": 511, + "community": 504, "norm_label": ".test_context_var_available_in_route()", "id": "tests_test_request_id_testrequestidmiddleware_test_context_var_available_in_route" }, @@ -35489,7 +38675,7 @@ "file_type": "code", "source_file": "tests/test_request_id.py", "source_location": "L72", - "community": 511, + "community": 504, "norm_label": ".test_empty_x_request_id_header_generates_uuid()", "id": "tests_test_request_id_testrequestidmiddleware_test_empty_x_request_id_header_generates_uuid" }, @@ -35498,7 +38684,7 @@ "file_type": "code", "source_file": "tests/test_request_id.py", "source_location": "L81", - "community": 511, + "community": 504, "norm_label": ".test_middleware_preserves_response_body()", "id": "tests_test_request_id_testrequestidmiddleware_test_middleware_preserves_response_body" }, @@ -36281,7 +39467,7 @@ "file_type": "code", "source_file": "tests/test_sandbox_tools.py", "source_location": "L6", - "community": 576, + "community": 566, "norm_label": "testsandboxtooldefinitions", "id": "tests_test_sandbox_tools_testsandboxtooldefinitions" }, @@ -36290,7 +39476,7 @@ "file_type": "code", "source_file": "tests/test_sandbox_tools.py", "source_location": "L7", - "community": 576, + "community": 566, "norm_label": ".test_execute_code_in_registry()", "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_execute_code_in_registry" }, @@ -36299,7 +39485,7 @@ "file_type": "code", "source_file": "tests/test_sandbox_tools.py", "source_location": "L10", - "community": 576, + "community": 566, "norm_label": ".test_read_file_in_registry()", "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_read_file_in_registry" }, @@ -36308,7 +39494,7 @@ "file_type": "code", "source_file": "tests/test_sandbox_tools.py", "source_location": "L13", - "community": 576, + "community": 566, "norm_label": ".test_write_file_in_registry()", "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_write_file_in_registry" }, @@ -36317,7 +39503,7 @@ "file_type": "code", "source_file": "tests/test_sandbox_tools.py", "source_location": "L16", - "community": 576, + "community": 566, "norm_label": ".test_list_files_in_registry()", "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_list_files_in_registry" }, @@ -36326,7 +39512,7 @@ "file_type": "code", "source_file": "tests/test_sandbox_tools.py", "source_location": "L19", - "community": 576, + "community": 566, "norm_label": ".test_execute_code_has_docstring()", "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_execute_code_has_docstring" }, @@ -36758,7 +39944,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L1", - "community": 16, + "community": 231, "norm_label": "test_state_tools.py", "id": "tests_test_state_tools_py" }, @@ -36767,7 +39953,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L15", - "community": 601, + "community": 16, "norm_label": "teststatetoolfunctions", "id": "tests_test_state_tools_teststatetoolfunctions" }, @@ -36776,7 +39962,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L16", - "community": 601, + "community": 16, "norm_label": ".test_get_state_has_docstring()", "id": "tests_test_state_tools_teststatetoolfunctions_test_get_state_has_docstring" }, @@ -36785,7 +39971,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L20", - "community": 601, + "community": 16, "norm_label": ".test_set_state_has_docstring()", "id": "tests_test_state_tools_teststatetoolfunctions_test_set_state_has_docstring" }, @@ -36794,7 +39980,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L24", - "community": 601, + "community": 16, "norm_label": ".test_get_state_signature()", "id": "tests_test_state_tools_teststatetoolfunctions_test_get_state_signature" }, @@ -36803,7 +39989,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L31", - "community": 601, + "community": 16, "norm_label": ".test_set_state_signature()", "id": "tests_test_state_tools_teststatetoolfunctions_test_set_state_signature" }, @@ -36812,7 +39998,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L38", - "community": 601, + "community": 16, "norm_label": ".test_get_state_has_type_hints()", "id": "tests_test_state_tools_teststatetoolfunctions_test_get_state_has_type_hints" }, @@ -36821,7 +40007,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L44", - "community": 601, + "community": 16, "norm_label": ".test_set_state_has_type_hints()", "id": "tests_test_state_tools_teststatetoolfunctions_test_set_state_has_type_hints" }, @@ -36830,7 +40016,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L50", - "community": 601, + "community": 16, "norm_label": ".test_state_tools_in_registry()", "id": "tests_test_state_tools_teststatetoolfunctions_test_state_tools_in_registry" }, @@ -36839,7 +40025,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L56", - "community": 601, + "community": 16, "norm_label": ".test_registry_has_all_tools()", "id": "tests_test_state_tools_teststatetoolfunctions_test_registry_has_all_tools" }, @@ -36848,7 +40034,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L60", - "community": 16, + "community": 231, "norm_label": "testgetstate", "id": "tests_test_state_tools_testgetstate" }, @@ -36857,7 +40043,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L62", - "community": 16, + "community": 231, "norm_label": "test_get_state_specific_key()", "id": "tests_test_state_tools_test_get_state_specific_key" }, @@ -36866,7 +40052,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L69", - "community": 16, + "community": 231, "norm_label": "test_get_state_all()", "id": "tests_test_state_tools_test_get_state_all" }, @@ -36875,7 +40061,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L77", - "community": 16, + "community": 231, "norm_label": "test_get_state_missing_key()", "id": "tests_test_state_tools_test_get_state_missing_key" }, @@ -36884,7 +40070,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L83", - "community": 16, + "community": 231, "norm_label": "test_get_state_no_state()", "id": "tests_test_state_tools_test_get_state_no_state" }, @@ -36893,7 +40079,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L88", - "community": 16, + "community": 231, "norm_label": "testsetstate", "id": "tests_test_state_tools_testsetstate" }, @@ -36902,7 +40088,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L90", - "community": 16, + "community": 231, "norm_label": "test_set_state()", "id": "tests_test_state_tools_test_set_state" }, @@ -36911,7 +40097,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L97", - "community": 546, + "community": 221, "norm_label": "test_set_state_no_state()", "id": "tests_test_state_tools_test_set_state_no_state" }, @@ -36920,7 +40106,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L102", - "community": 16, + "community": 231, "norm_label": "teststatedispatch", "id": "tests_test_state_tools_teststatedispatch" }, @@ -36929,7 +40115,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L104", - "community": 16, + "community": 231, "norm_label": "test_dispatch_get_state()", "id": "tests_test_state_tools_test_dispatch_get_state" }, @@ -36938,7 +40124,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L114", - "community": 16, + "community": 231, "norm_label": "test_dispatch_set_state()", "id": "tests_test_state_tools_test_dispatch_set_state" }, @@ -37208,7 +40394,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L152", - "community": 603, + "community": 596, "norm_label": "testverifyapikey", "id": "tests_test_stocks_api_coverage_testverifyapikey" }, @@ -37325,7 +40511,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L291", - "community": 26, + "community": 500, "norm_label": "test_create_key_new_user()", "id": "tests_test_stocks_api_coverage_test_create_key_new_user" }, @@ -37343,7 +40529,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L323", - "community": 26, + "community": 500, "norm_label": "test_create_key_exception_rollback()", "id": "tests_test_stocks_api_coverage_test_create_key_exception_rollback" }, @@ -37361,7 +40547,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L344", - "community": 63, + "community": 517, "norm_label": "._make_manager()", "id": "tests_test_stocks_api_coverage_testdeserializejsoncolumns_make_manager" }, @@ -37460,7 +40646,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L419", - "community": 577, + "community": 572, "norm_label": ".test_deserialize_float_nan_direct()", "id": "tests_test_stocks_api_coverage_testdeserializejsoncolumns_test_deserialize_float_nan_direct" }, @@ -37469,7 +40655,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L433", - "community": 566, + "community": 577, "norm_label": ".test_deserialize_non_nan_float()", "id": "tests_test_stocks_api_coverage_testdeserializejsoncolumns_test_deserialize_non_nan_float" }, @@ -37487,7 +40673,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L451", - "community": 136, + "community": 511, "norm_label": ".test_deserialize_mixed_string_none_parses_json()", "id": "tests_test_stocks_api_coverage_testdeserializejsoncolumns_test_deserialize_mixed_string_none_parses_json" }, @@ -37505,7 +40691,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L498", - "community": 136, + "community": 511, "norm_label": "testfilterbysearchterms", "id": "tests_test_stocks_api_coverage_testfilterbysearchterms" }, @@ -37514,7 +40700,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L501", - "community": 136, + "community": 511, "norm_label": "._make_manager()", "id": "tests_test_stocks_api_coverage_testfilterbysearchterms_make_manager" }, @@ -37523,7 +40709,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L509", - "community": 136, + "community": 511, "norm_label": ".test_filter_empty_search_returns_all()", "id": "tests_test_stocks_api_coverage_testfilterbysearchterms_test_filter_empty_search_returns_all" }, @@ -37532,7 +40718,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L515", - "community": 136, + "community": 511, "norm_label": ".test_filter_ticker_index_hit()", "id": "tests_test_stocks_api_coverage_testfilterbysearchterms_test_filter_ticker_index_hit" }, @@ -37541,7 +40727,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L523", - "community": 136, + "community": 511, "norm_label": ".test_filter_multiple_terms_index()", "id": "tests_test_stocks_api_coverage_testfilterbysearchterms_test_filter_multiple_terms_index" }, @@ -37550,7 +40736,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L530", - "community": 136, + "community": 511, "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" }, @@ -37559,7 +40745,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L538", - "community": 136, + "community": 511, "norm_label": ".test_filter_fallback_multiple_terms()", "id": "tests_test_stocks_api_coverage_testfilterbysearchterms_test_filter_fallback_multiple_terms" }, @@ -37568,7 +40754,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L545", - "community": 136, + "community": 511, "norm_label": ".test_filter_case_insensitive()", "id": "tests_test_stocks_api_coverage_testfilterbysearchterms_test_filter_case_insensitive" }, @@ -37586,7 +40772,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L556", - "community": 63, + "community": 517, "norm_label": "._make_manager()", "id": "tests_test_stocks_api_coverage_testqueryhistorical_make_manager" }, @@ -37739,7 +40925,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L701", - "community": 112, + "community": 63, "norm_label": ".test_historical_requires_search_fields_or_dates()", "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_historical_requires_search_fields_or_dates" }, @@ -37748,7 +40934,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L712", - "community": 112, + "community": 63, "norm_label": "testqueryfundamental", "id": "tests_test_stocks_api_coverage_testqueryfundamental" }, @@ -37766,7 +40952,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L725", - "community": 112, + "community": 63, "norm_label": ".test_cache_not_initialized_raises_503()", "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_cache_not_initialized_raises_503" }, @@ -37820,7 +41006,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L766", - "community": 17, + "community": 39, "norm_label": ".test_fundamental_with_invalid_date()", "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_with_invalid_date" }, @@ -37865,7 +41051,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L802", - "community": 112, + "community": 63, "norm_label": ".test_fundamental_exception_returns_500()", "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_exception_returns_500" }, @@ -37874,7 +41060,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L819", - "community": 17, + "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" }, @@ -37883,7 +41069,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L828", - "community": 17, + "community": 39, "norm_label": ".test_fundamental_no_time_column()", "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_no_time_column" }, @@ -37928,7 +41114,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L890", - "community": 39, + "community": 17, "norm_label": ".test_fundamental_search_fallback_string_match()", "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_search_fallback_string_match" }, @@ -37946,7 +41132,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L913", - "community": 112, + "community": 63, "norm_label": ".test_fundamental_excludes_cotacao_10y()", "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_excludes_cotacao_10y" }, @@ -38216,7 +41402,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1265", - "community": 588, + "community": 22, "norm_label": ".test_http_route_search_required()", "id": "tests_test_stocks_api_coverage_testquerylivecotation_test_http_route_search_required" }, @@ -38252,7 +41438,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1315", - "community": 606, + "community": 546, "norm_label": ".test_cotations_search_required()", "id": "tests_test_stocks_api_coverage_testquerylivecotation_test_cotations_search_required" }, @@ -38288,7 +41474,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L153", - "community": 603, + "community": 596, "norm_label": "tests covering key.py lines 15-40. uses asyncio.run() since pytest-asyncio", "id": "tests_test_stocks_api_coverage_rationale_153" }, @@ -38414,7 +41600,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L420", - "community": 577, + "community": 572, "norm_label": "replacenan handles direct float nan values (line 34).", "id": "tests_test_stocks_api_coverage_rationale_420" }, @@ -38423,7 +41609,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L434", - "community": 566, + "community": 577, "norm_label": "non-json-dict/list string is left as-is.", "id": "tests_test_stocks_api_coverage_rationale_434" }, @@ -38441,7 +41627,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L452", - "community": 136, + "community": 511, "norm_label": "regression: is_string_dtype fails when column has strings + none (pandas 2.x).", "id": "tests_test_stocks_api_coverage_rationale_452" }, @@ -38459,7 +41645,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L499", - "community": 136, + "community": 511, "norm_label": "tests covering query.py lines 50-67.", "id": "tests_test_stocks_api_coverage_rationale_499" }, @@ -38540,7 +41726,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L702", - "community": 112, + "community": 63, "norm_label": "calling with all none returns 400.", "id": "tests_test_stocks_api_coverage_rationale_702" }, @@ -38549,7 +41735,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L713", - "community": 112, + "community": 63, "norm_label": "tests covering query.py lines 142-202.", "id": "tests_test_stocks_api_coverage_rationale_713" }, @@ -38558,7 +41744,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L767", - "community": 17, + "community": 39, "norm_label": "invalid date -> inner 400 passes through (not wrapped as 500).", "id": "tests_test_stocks_api_coverage_rationale_767" }, @@ -38567,7 +41753,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L820", - "community": 17, + "community": 39, "norm_label": "search.strip() == '' should still dedup (line 181).", "id": "tests_test_stocks_api_coverage_rationale_820" }, @@ -38576,7 +41762,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L829", - "community": 17, + "community": 39, "norm_label": "dataframe without time column.", "id": "tests_test_stocks_api_coverage_rationale_829" }, @@ -38621,7 +41807,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L891", - "community": 39, + "community": 17, "norm_label": "search with no index match falls back to string startswith.", "id": "tests_test_stocks_api_coverage_rationale_891" }, @@ -38639,7 +41825,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L914", - "community": 112, + "community": 63, "norm_label": "cotacao 10y padrao and cotacao 10y ajustada belong to /cotations, not /fundament", "id": "tests_test_stocks_api_coverage_rationale_914" }, @@ -38711,7 +41897,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1266", - "community": 588, + "community": 22, "norm_label": "get /stocks/realtime-cotation without search returns 422.", "id": "tests_test_stocks_api_coverage_rationale_1266" }, @@ -38720,7 +41906,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1316", - "community": 606, + "community": 546, "norm_label": "get /cotations without search returns 422.", "id": "tests_test_stocks_api_coverage_rationale_1316" }, @@ -39737,7 +42923,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L21", - "community": 574, + "community": 184, "norm_label": "testgetsession", "id": "tests_test_thread_safety_testgetsession" }, @@ -39746,7 +42932,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L24", - "community": 574, + "community": 184, "norm_label": ".test_same_session_within_same_thread()", "id": "tests_test_thread_safety_testgetsession_test_same_session_within_same_thread" }, @@ -39755,7 +42941,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L32", - "community": 574, + "community": 184, "norm_label": ".test_different_sessions_in_different_threads()", "id": "tests_test_thread_safety_testgetsession_test_different_sessions_in_different_threads" }, @@ -39764,7 +42950,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L52", - "community": 574, + "community": 184, "norm_label": ".test_isolation_under_high_concurrency()", "id": "tests_test_thread_safety_testgetsession_test_isolation_under_high_concurrency" }, @@ -39773,7 +42959,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L73", - "community": 574, + "community": 184, "norm_label": ".test_session_is_requests_session()", "id": "tests_test_thread_safety_testgetsession_test_session_is_requests_session" }, @@ -39854,7 +43040,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L22", - "community": 574, + "community": 184, "norm_label": "verify that getsession() returns per-thread session instances.", "id": "tests_test_thread_safety_rationale_22" }, @@ -39863,7 +43049,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L25", - "community": 574, + "community": 184, "norm_label": "calling getsession() twice in the same thread returns the same object.", "id": "tests_test_thread_safety_rationale_25" }, @@ -39872,7 +43058,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L33", - "community": 574, + "community": 184, "norm_label": "two threads must not share a session object.", "id": "tests_test_thread_safety_rationale_33" }, @@ -39881,7 +43067,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L53", - "community": 574, + "community": 184, "norm_label": "with 20 concurrent threads, every thread must get its own session.", "id": "tests_test_thread_safety_rationale_53" }, @@ -39890,7 +43076,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L74", - "community": 574, + "community": 184, "norm_label": "the returned object must be a real requests.session.", "id": "tests_test_thread_safety_rationale_74" }, @@ -39962,7 +43148,7 @@ "file_type": "code", "source_file": "tests/test_type_aware_decay.py", "source_location": "L1", - "community": 584, + "community": 503, "norm_label": "test_type_aware_decay.py", "id": "tests_test_type_aware_decay_py" }, @@ -39971,7 +43157,7 @@ "file_type": "code", "source_file": "tests/test_type_aware_decay.py", "source_location": "L11", - "community": 584, + "community": 503, "norm_label": "_create()", "id": "tests_test_type_aware_decay_create" }, @@ -39980,7 +43166,7 @@ "file_type": "code", "source_file": "tests/test_type_aware_decay.py", "source_location": "L29", - "community": 584, + "community": 503, "norm_label": "testtypeawaredecay", "id": "tests_test_type_aware_decay_testtypeawaredecay" }, @@ -39989,7 +43175,7 @@ "file_type": "code", "source_file": "tests/test_type_aware_decay.py", "source_location": "L30", - "community": 584, + "community": 503, "norm_label": ".test_preference_decays_slowly()", "id": "tests_test_type_aware_decay_testtypeawaredecay_test_preference_decays_slowly" }, @@ -39998,7 +43184,7 @@ "file_type": "code", "source_file": "tests/test_type_aware_decay.py", "source_location": "L36", - "community": 584, + "community": 503, "norm_label": ".test_context_decays_fast()", "id": "tests_test_type_aware_decay_testtypeawaredecay_test_context_decays_fast" }, @@ -40007,7 +43193,7 @@ "file_type": "code", "source_file": "tests/test_type_aware_decay.py", "source_location": "L42", - "community": 584, + "community": 503, "norm_label": ".test_analysis_decays_normally()", "id": "tests_test_type_aware_decay_testtypeawaredecay_test_analysis_decays_normally" }, @@ -40016,7 +43202,7 @@ "file_type": "code", "source_file": "tests/test_type_aware_decay.py", "source_location": "L48", - "community": 584, + "community": 503, "norm_label": ".test_feedback_decays_medium()", "id": "tests_test_type_aware_decay_testtypeawaredecay_test_feedback_decays_medium" }, @@ -40025,7 +43211,7 @@ "file_type": "code", "source_file": "tests/test_type_aware_decay.py", "source_location": "L54", - "community": 584, + "community": 503, "norm_label": ".test_unknown_type_uses_default()", "id": "tests_test_type_aware_decay_testtypeawaredecay_test_unknown_type_uses_default" }, @@ -40034,7 +43220,7 @@ "file_type": "code", "source_file": "tests/test_type_aware_decay.py", "source_location": "L60", - "community": 584, + "community": 503, "norm_label": ".test_mixed_types_all_correct()", "id": "tests_test_type_aware_decay_testtypeawaredecay_test_mixed_types_all_correct" }, @@ -40043,7 +43229,7 @@ "file_type": "code", "source_file": "tests/test_type_aware_decay.py", "source_location": "L76", - "community": 584, + "community": 503, "norm_label": ".test_preference_survives_longer()", "id": "tests_test_type_aware_decay_testtypeawaredecay_test_preference_survives_longer" }, @@ -40052,7 +43238,7 @@ "file_type": "rationale", "source_file": "tests/test_type_aware_decay.py", "source_location": "L77", - "community": 584, + "community": 503, "norm_label": "after 10 cycles, preference (0.99^10) > context (0.90^10).", "id": "tests_test_type_aware_decay_rationale_77" }, @@ -40061,7 +43247,7 @@ "file_type": "code", "source_file": "tests/test_user_deps.py", "source_location": "L1", - "community": 519, + "community": 98, "norm_label": "test_user_deps.py", "id": "tests_test_user_deps_py" }, @@ -40205,7 +43391,7 @@ "file_type": "code", "source_file": "tests/test_vector_utils.py", "source_location": "L6", - "community": 72, + "community": 21, "norm_label": "testbatchcosinesimilarity", "id": "tests_test_vector_utils_testbatchcosinesimilarity" }, @@ -40214,7 +43400,7 @@ "file_type": "code", "source_file": "tests/test_vector_utils.py", "source_location": "L7", - "community": 72, + "community": 21, "norm_label": ".test_empty_matrix()", "id": "tests_test_vector_utils_testbatchcosinesimilarity_test_empty_matrix" }, @@ -40223,7 +43409,7 @@ "file_type": "code", "source_file": "tests/test_vector_utils.py", "source_location": "L11", - "community": 72, + "community": 21, "norm_label": ".test_single_row()", "id": "tests_test_vector_utils_testbatchcosinesimilarity_test_single_row" }, @@ -40232,7 +43418,7 @@ "file_type": "code", "source_file": "tests/test_vector_utils.py", "source_location": "L17", - "community": 72, + "community": 21, "norm_label": ".test_multiple_rows()", "id": "tests_test_vector_utils_testbatchcosinesimilarity_test_multiple_rows" }, @@ -40241,7 +43427,7 @@ "file_type": "code", "source_file": "tests/test_vector_utils.py", "source_location": "L32", - "community": 72, + "community": 21, "norm_label": ".test_zero_query()", "id": "tests_test_vector_utils_testbatchcosinesimilarity_test_zero_query" }, @@ -41627,7 +44813,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1120", - "community": 99, + "community": 148, "norm_label": "generic exception in chat propagates to fastapi's default 500 handler.", "id": "tests_test_controllers_coverage_rationale_1120" }, @@ -41636,7 +44822,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1138", - "community": 605, + "community": 45, "norm_label": "covers line 18: get /stocks/health.", "id": "tests_test_controllers_coverage_rationale_1138" }, @@ -41699,7 +44885,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1223", - "community": 568, + "community": 614, "norm_label": "covers lines 13, 17, 19-20, 22-27: usermanager.addroletouser.", "id": "tests_test_controllers_coverage_rationale_1223" }, @@ -41708,7 +44894,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1226", - "community": 568, + "community": 617, "norm_label": "covers lines 17, 22-27: user found, role not present, role added.", "id": "tests_test_controllers_coverage_rationale_1226" }, @@ -41717,7 +44903,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1243", - "community": 493, + "community": 620, "norm_label": "covers line 27: user already has the role.", "id": "tests_test_controllers_coverage_rationale_1243" }, @@ -41726,7 +44912,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1257", - "community": 568, + "community": 587, "norm_label": "covers lines 19-20: user not found raises 404.", "id": "tests_test_controllers_coverage_rationale_1257" }, @@ -41735,7 +44921,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1269", - "community": 493, + "community": 529, "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" }, @@ -41744,7 +44930,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1301", - "community": 493, + "community": 625, "norm_label": "covers lines 42-44: session validation fails.", "id": "tests_test_controllers_coverage_rationale_1301" }, @@ -41753,7 +44939,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1317", - "community": 493, + "community": 603, "norm_label": "covers lines 48-49: user not in db.", "id": "tests_test_controllers_coverage_rationale_1317" }, @@ -41762,7 +44948,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1334", - "community": 493, + "community": 604, "norm_label": "covers lines 65-67: unexpected exception.", "id": "tests_test_controllers_coverage_rationale_1334" }, @@ -41771,7 +44957,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1351", - "community": 493, + "community": 611, "norm_label": "covers lines 37-38, 46, 51, 58 (sessionid is none): skips session validation.", "id": "tests_test_controllers_coverage_rationale_1351" }, @@ -41789,7 +44975,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1385", - "community": 524, + "community": 194, "norm_label": "covers lines 45-51: verifyaccesstoken with expired and invalid tokens.", "id": "tests_test_controllers_coverage_rationale_1385" }, @@ -41798,7 +44984,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1388", - "community": 524, + "community": 194, "norm_label": "covers lines 48-49: jwt.expiredsignatureerror.", "id": "tests_test_controllers_coverage_rationale_1388" }, @@ -41807,7 +44993,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1404", - "community": 524, + "community": 172, "norm_label": "covers lines 50-51: jwt.invalidtokenerror.", "id": "tests_test_controllers_coverage_rationale_1404" }, @@ -41870,7 +45056,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L502", - "community": 88, + "community": 519, "norm_label": "cover all methods in authentication.py (lines 13-75).", "id": "tests_test_prometheus_auth_coverage_rationale_502" }, @@ -41888,7 +45074,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L914", - "community": 190, + "community": 627, "norm_label": "exercises the tzinfo-is-none branch (line 144-148).", "id": "tests_test_prometheus_auth_coverage_rationale_914" }, @@ -41897,7 +45083,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L928", - "community": 165, + "community": 628, "norm_label": "exercises the expiresat-is-none branch (line 143).", "id": "tests_test_prometheus_auth_coverage_rationale_928" }, @@ -41906,7 +45092,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L947", - "community": 172, + "community": 112, "norm_label": "cover getgooglesso (lines 6-14).", "id": "tests_test_prometheus_auth_coverage_rationale_947" }, @@ -41933,7 +45119,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L16", - "community": 152, + "community": 136, "norm_label": "search user's saved memories, preferences, and past analysis context. use", "id": "prometheus_tools_rationale_16" }, @@ -41942,7 +45128,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L42", - "community": 528, + "community": 190, "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", "id": "prometheus_tools_rationale_42" }, @@ -41951,7 +45137,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L79", - "community": 16, + "community": 231, "norm_label": "retrieve values from the harness state. use this to recall intermediate results,", "id": "prometheus_tools_rationale_79" }, @@ -41960,7 +45146,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L147", - "community": 573, + "community": 538, "norm_label": "read a file from the workspace. args: path: path to the file (e.", "id": "prometheus_tools_rationale_147" }, @@ -42266,7 +45452,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L131", - "community": 573, + "community": 538, "norm_label": "read a file from the sandbox filesystem. args: path: absolute pa", "id": "prometheus_tools_rationale_131" }, @@ -42464,7 +45650,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L130", - "community": 573, + "community": 538, "norm_label": "read a file from the sandbox filesystem. args: path: absolute pa", "id": "prometheus_tools_rationale_130" }, @@ -42473,7 +45659,7 @@ "file_type": "code", "source_file": "tests/test_agent_sandbox_integration.py", "source_location": "L7", - "community": 575, + "community": 560, "norm_label": "testagentsandboxintegration", "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration" }, @@ -42482,7 +45668,7 @@ "file_type": "code", "source_file": "tests/test_agent_sandbox_integration.py", "source_location": "L8", - "community": 575, + "community": 560, "norm_label": ".test_build_system_prompt_includes_sandbox_instructions()", "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_build_system_prompt_includes_sandbox_instructions" }, @@ -42491,7 +45677,7 @@ "file_type": "code", "source_file": "tests/test_agent_sandbox_integration.py", "source_location": "L14", - "community": 575, + "community": 560, "norm_label": ".test_build_system_prompt_includes_state_instructions()", "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_build_system_prompt_includes_state_instructions" }, @@ -42500,7 +45686,7 @@ "file_type": "code", "source_file": "tests/test_agent_sandbox_integration.py", "source_location": "L19", - "community": 575, + "community": 560, "norm_label": ".test_build_system_prompt_with_state()", "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_build_system_prompt_with_state" }, @@ -42590,7 +45776,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L15", - "community": 152, + "community": 136, "norm_label": "search user's saved memories, preferences, and past analysis context. use", "id": "prometheus_tools_rationale_15" }, @@ -42599,7 +45785,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L41", - "community": 528, + "community": 190, "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", "id": "prometheus_tools_rationale_41" }, @@ -42608,7 +45794,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L78", - "community": 16, + "community": 231, "norm_label": "retrieve values from the harness state. use this to recall intermediate results,", "id": "prometheus_tools_rationale_78" }, @@ -42617,7 +45803,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L93", - "community": 546, + "community": 221, "norm_label": "store a value in the harness state for this session. use this to save inter", "id": "prometheus_tools_rationale_93" }, @@ -44813,7 +47999,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L119", - "community": 546, + "community": 221, "norm_label": "test_set_state_no_state_returns_error()", "id": "tests_test_prometheus_tools_test_set_state_no_state_returns_error" }, @@ -44831,7 +48017,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_tools.py", "source_location": "L128", - "community": 585, + "community": 563, "norm_label": "every function in tool_registry must have gemini-safe signatures. custom cl", "id": "tests_test_prometheus_tools_rationale_128" }, @@ -44840,7 +48026,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_tools.py", "source_location": "L137", - "community": 585, + "community": 563, "norm_label": "regression: harnessstate must never leak into tool signatures.", "id": "tests_test_prometheus_tools_rationale_137" }, @@ -44849,7 +48035,7 @@ "file_type": "code", "source_file": "main/app/prometheus/cache.py", "source_location": "L1", - "community": 105, + "community": 162, "norm_label": "cache.py", "id": "main_app_prometheus_cache_py" }, @@ -44858,7 +48044,7 @@ "file_type": "code", "source_file": "main/app/prometheus/cache.py", "source_location": "L7", - "community": 105, + "community": 162, "norm_label": "resultcache", "id": "prometheus_cache_resultcache" }, @@ -44867,7 +48053,7 @@ "file_type": "code", "source_file": "main/app/prometheus/cache.py", "source_location": "L8", - "community": 105, + "community": 162, "norm_label": ".__init__()", "id": "prometheus_cache_resultcache_init" }, @@ -44876,7 +48062,7 @@ "file_type": "code", "source_file": "main/app/prometheus/cache.py", "source_location": "L11", - "community": 105, + "community": 162, "norm_label": ".cachepath()", "id": "prometheus_cache_resultcache_cachepath" }, @@ -44885,7 +48071,7 @@ "file_type": "code", "source_file": "main/app/prometheus/cache.py", "source_location": "L15", - "community": 105, + "community": 162, "norm_label": ".get()", "id": "prometheus_cache_resultcache_get" }, @@ -44894,7 +48080,7 @@ "file_type": "code", "source_file": "main/app/prometheus/cache.py", "source_location": "L21", - "community": 105, + "community": 162, "norm_label": ".set()", "id": "prometheus_cache_resultcache_set" }, @@ -44903,7 +48089,7 @@ "file_type": "code", "source_file": "main/app/prometheus/cache.py", "source_location": "L31", - "community": 105, + "community": 162, "norm_label": ".invalidate()", "id": "prometheus_cache_resultcache_invalidate" }, @@ -44912,7 +48098,7 @@ "file_type": "code", "source_file": "main/app/prometheus/cache.py", "source_location": "L38", - "community": 105, + "community": 162, "norm_label": ".exists()", "id": "prometheus_cache_resultcache_exists" }, @@ -44957,7 +48143,7 @@ "file_type": "code", "source_file": "main/app/prometheus/tools.py", "source_location": "L139", - "community": 571, + "community": 521, "norm_label": "read_sandbox_file()", "id": "prometheus_tools_read_sandbox_file" }, @@ -44966,7 +48152,7 @@ "file_type": "code", "source_file": "main/app/prometheus/tools.py", "source_location": "L151", - "community": 571, + "community": 521, "norm_label": "upload_to_sandbox()", "id": "prometheus_tools_upload_to_sandbox" }, @@ -44975,7 +48161,7 @@ "file_type": "code", "source_file": "main/app/prometheus/tools.py", "source_location": "L165", - "community": 571, + "community": 521, "norm_label": "check_cache()", "id": "prometheus_tools_check_cache" }, @@ -44984,7 +48170,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L17", - "community": 152, + "community": 136, "norm_label": "search user's saved memories, preferences, and past analysis context. use", "id": "prometheus_tools_rationale_17" }, @@ -44993,7 +48179,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L109", - "community": 546, + "community": 221, "norm_label": "execute python code in an isolated sandbox. use for quantitative analysis,", "id": "prometheus_tools_rationale_109" }, @@ -45002,7 +48188,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L140", - "community": 571, + "community": 521, "norm_label": "read a file from the sandbox filesystem. args: path: absolute pa", "id": "prometheus_tools_rationale_140" }, @@ -45011,7 +48197,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L152", - "community": 571, + "community": 521, "norm_label": "upload a file to the sandbox filesystem. use this to push data files (csv,", "id": "prometheus_tools_rationale_152" }, @@ -45020,7 +48206,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L166", - "community": 571, + "community": 521, "norm_label": "check if a computed result exists in the cache. use before executing expens", "id": "prometheus_tools_rationale_166" }, @@ -45029,7 +48215,7 @@ "file_type": "code", "source_file": "tests/test_agent_sandbox_integration.py", "source_location": "L9", - "community": 575, + "community": 560, "norm_label": ".test_build_system_prompt_no_state()", "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_build_system_prompt_no_state" }, @@ -45038,7 +48224,7 @@ "file_type": "code", "source_file": "tests/test_agent_sandbox_integration.py", "source_location": "L20", - "community": 575, + "community": 560, "norm_label": ".test_build_system_prompt_empty_state()", "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_build_system_prompt_empty_state" }, @@ -45047,7 +48233,7 @@ "file_type": "code", "source_file": "tests/test_agent_sandbox_integration.py", "source_location": "L25", - "community": 575, + "community": 560, "norm_label": ".test_system_prompt_includes_state_instructions()", "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_system_prompt_includes_state_instructions" }, @@ -45056,7 +48242,7 @@ "file_type": "code", "source_file": "tests/test_agent_sandbox_integration.py", "source_location": "L30", - "community": 575, + "community": 560, "norm_label": ".test_system_prompt_includes_sandbox_instructions()", "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_system_prompt_includes_sandbox_instructions" }, @@ -45065,7 +48251,7 @@ "file_type": "code", "source_file": "tests/test_agent_sandbox_integration.py", "source_location": "L34", - "community": 575, + "community": 560, "norm_label": ".test_system_prompt_includes_cache_instructions()", "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_system_prompt_includes_cache_instructions" }, @@ -45074,7 +48260,7 @@ "file_type": "code", "source_file": "tests/test_agent_sandbox_integration.py", "source_location": "L38", - "community": 575, + "community": 560, "norm_label": ".test_makechat_uses_tool_registry()", "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_makechat_uses_tool_registry" }, @@ -45245,7 +48431,7 @@ "file_type": "code", "source_file": "tests/test_config_sandbox.py", "source_location": "L1", - "community": 586, + "community": 102, "norm_label": "test_config_sandbox.py", "id": "tests_test_config_sandbox_py" }, @@ -45254,7 +48440,7 @@ "file_type": "code", "source_file": "tests/test_config_sandbox.py", "source_location": "L5", - "community": 586, + "community": 102, "norm_label": "testsandboxconfig", "id": "tests_test_config_sandbox_testsandboxconfig" }, @@ -45263,7 +48449,7 @@ "file_type": "code", "source_file": "tests/test_config_sandbox.py", "source_location": "L6", - "community": 586, + "community": 102, "norm_label": ".test_sandbox_defaults()", "id": "tests_test_config_sandbox_testsandboxconfig_test_sandbox_defaults" }, @@ -45272,7 +48458,7 @@ "file_type": "code", "source_file": "tests/test_config_sandbox.py", "source_location": "L13", - "community": 586, + "community": 102, "norm_label": ".test_sandbox_fields_exist()", "id": "tests_test_config_sandbox_testsandboxconfig_test_sandbox_fields_exist" }, @@ -45281,7 +48467,7 @@ "file_type": "code", "source_file": "tests/test_config_sandbox.py", "source_location": "L21", - "community": 586, + "community": 102, "norm_label": ".test_sandbox_types()", "id": "tests_test_config_sandbox_testsandboxconfig_test_sandbox_types" }, @@ -45542,7 +48728,7 @@ "file_type": "code", "source_file": "tests/test_sandbox_tools.py", "source_location": "L12", - "community": 576, + "community": 566, "norm_label": ".test_read_sandbox_file_in_registry()", "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_read_sandbox_file_in_registry" }, @@ -45551,7 +48737,7 @@ "file_type": "code", "source_file": "tests/test_sandbox_tools.py", "source_location": "L15", - "community": 576, + "community": 566, "norm_label": ".test_check_cache_in_registry()", "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_check_cache_in_registry" }, @@ -45560,7 +48746,7 @@ "file_type": "code", "source_file": "tests/test_sandbox_tools.py", "source_location": "L23", - "community": 576, + "community": 566, "norm_label": ".test_read_sandbox_file_has_docstring()", "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_read_sandbox_file_has_docstring" }, @@ -45569,7 +48755,7 @@ "file_type": "code", "source_file": "tests/test_sandbox_tools.py", "source_location": "L28", - "community": 576, + "community": 566, "norm_label": ".test_check_cache_has_docstring()", "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_check_cache_has_docstring" }, @@ -45902,7 +49088,7 @@ "file_type": "code", "source_file": "main/app/prometheus/cache.py", "source_location": "L19", - "community": 105, + "community": 162, "norm_label": "._cache_path()", "id": "prometheus_cache_resultcache_cache_path" }, @@ -45911,7 +49097,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/cache.py", "source_location": "L1", - "community": 105, + "community": 162, "norm_label": "resultcache \u2014 sha256-keyed file-based cache for computed results.", "id": "prometheus_cache_rationale_1" }, @@ -45920,7 +49106,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/cache.py", "source_location": "L10", - "community": 105, + "community": 162, "norm_label": "file-based cache keyed by sha256 of code. stores results as json under:", "id": "prometheus_cache_rationale_10" }, @@ -45929,7 +49115,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/cache.py", "source_location": "L24", - "community": 105, + "community": 162, "norm_label": "return cached result dict or none if miss.", "id": "prometheus_cache_rationale_24" }, @@ -45938,7 +49124,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/cache.py", "source_location": "L31", - "community": 105, + "community": 162, "norm_label": "store result with timestamp.", "id": "prometheus_cache_rationale_31" }, @@ -45947,7 +49133,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/cache.py", "source_location": "L42", - "community": 105, + "community": 162, "norm_label": "delete all cached results for a session.", "id": "prometheus_cache_rationale_42" }, @@ -45956,7 +49142,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/cache.py", "source_location": "L50", - "community": 105, + "community": 162, "norm_label": "check if a result exists for the given code.", "id": "prometheus_cache_rationale_50" }, @@ -46298,7 +49484,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L77", - "community": 16, + "community": 231, "norm_label": "retrieve values from the harness state. use this to recall intermediate results,", "id": "prometheus_tools_rationale_77" }, @@ -46361,7 +49547,7 @@ "file_type": "code", "source_file": "main/app/prometheus/tools.py", "source_location": "L104", - "community": 16, + "community": 231, "norm_label": "executestatetool()", "id": "prometheus_tools_executestatetool" }, @@ -46370,7 +49556,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L13", - "community": 152, + "community": 136, "norm_label": "search user's saved memories, preferences, and past analysis context. use t", "id": "prometheus_tools_rationale_13" }, @@ -46379,7 +49565,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L39", - "community": 528, + "community": 190, "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", "id": "prometheus_tools_rationale_39" }, @@ -46388,7 +49574,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L44", - "community": 601, + "community": 16, "norm_label": ".test_state_tools_is_list_of_callables()", "id": "tests_test_state_tools_teststatetoolfunctions_test_state_tools_is_list_of_callables" }, @@ -46397,7 +49583,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L50", - "community": 601, + "community": 16, "norm_label": ".test_state_tool_names()", "id": "tests_test_state_tools_teststatetoolfunctions_test_state_tool_names" }, @@ -46406,7 +49592,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L54", - "community": 16, + "community": 231, "norm_label": "testexecutestatetool", "id": "tests_test_state_tools_testexecutestatetool" }, @@ -46415,7 +49601,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L84", - "community": 16, + "community": 231, "norm_label": "test_unknown_tool()", "id": "tests_test_state_tools_test_unknown_tool" }, @@ -46442,7 +49628,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/state.py", "source_location": "L22", - "community": 63, + "community": 186, "norm_label": "store a value in state. marks state as changed for context injection.", "id": "prometheus_state_rationale_22" }, @@ -46496,7 +49682,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L12", - "community": 152, + "community": 136, "norm_label": "search user's saved memories, preferences, and past analysis context. use t", "id": "prometheus_tools_rationale_12" }, @@ -46505,7 +49691,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L38", - "community": 528, + "community": 190, "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", "id": "prometheus_tools_rationale_38" }, @@ -46559,7 +49745,7 @@ "file_type": "code", "source_file": "main/app/prometheus/tools.py", "source_location": "L46", - "community": 602, + "community": 116, "norm_label": "executememorytool()", "id": "prometheus_tools_executememorytool" }, @@ -46568,7 +49754,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L29", - "community": 528, + "community": 190, "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", "id": "prometheus_tools_rationale_29" }, @@ -46703,7 +49889,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L52", - "community": 589, + "community": 630, "norm_label": "makechat must include memory_tools alongside mcp sessions.", "id": "tests_test_memory_tools_wiring_rationale_52" }, @@ -46712,7 +49898,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L89", - "community": 529, + "community": 621, "norm_label": "dispatchtoolcall must route memory tool names to executememorytool.", "id": "tests_test_memory_tools_wiring_rationale_89" }, @@ -46739,7 +49925,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L57", - "community": 589, + "community": 630, "norm_label": "makechat must include memory_tools alongside mcp sessions.", "id": "tests_test_memory_tools_wiring_rationale_57" }, @@ -46748,7 +49934,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L92", - "community": 529, + "community": 621, "norm_label": "dispatchtoolcall must route memory tool names to executememorytool.", "id": "tests_test_memory_tools_wiring_rationale_92" }, @@ -46766,7 +49952,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_maintenance.py", "source_location": "L23", - "community": 518, + "community": 574, "norm_label": "helper to create memories with controlled basescore, lastaccessedat, accesscount", "id": "tests_test_memory_maintenance_rationale_23" }, @@ -46775,7 +49961,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_maintenance.py", "source_location": "L54", - "community": 518, + "community": 574, "norm_label": "decay applies to all active memories, not just accessed ones.", "id": "tests_test_memory_maintenance_rationale_54" }, @@ -46784,7 +49970,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_maintenance.py", "source_location": "L67", - "community": 518, + "community": 574, "norm_label": "basescore should never reach exactly 0 from decay alone.", "id": "tests_test_memory_maintenance_rationale_67" }, @@ -46793,7 +49979,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_maintenance.py", "source_location": "L85", - "community": 614, + "community": 256, "norm_label": "score below threshold + accesscount=0 + 90+ days \u2192 archived.", "id": "tests_test_memory_maintenance_rationale_85" }, @@ -46802,7 +49988,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_maintenance.py", "source_location": "L92", - "community": 617, + "community": 256, "norm_label": "low score but accessed recently \u2192 not archived.", "id": "tests_test_memory_maintenance_rationale_92" }, @@ -46811,7 +49997,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_maintenance.py", "source_location": "L99", - "community": 518, + "community": 256, "norm_label": "zero access but score still above threshold \u2192 not archived.", "id": "tests_test_memory_maintenance_rationale_99" }, @@ -46820,7 +50006,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_maintenance.py", "source_location": "L106", - "community": 613, + "community": 256, "norm_label": "even with low score, if accessed \u2192 not archived.", "id": "tests_test_memory_maintenance_rationale_106" }, @@ -46829,7 +50015,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_maintenance.py", "source_location": "L113", - "community": 518, + "community": 256, "norm_label": "already archived memories are skipped.", "id": "tests_test_memory_maintenance_rationale_113" }, @@ -46838,7 +50024,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_maintenance.py", "source_location": "L134", - "community": 592, + "community": 574, "norm_label": "decay happens first, then archive check with new scores.", "id": "tests_test_memory_maintenance_rationale_134" }, @@ -46847,7 +50033,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_maintenance.py", "source_location": "L143", - "community": 592, + "community": 635, "norm_label": "score that decays to >= threshold stays alive. 0.11 * 0.95 = 0.1045 >= 0.1.", "id": "tests_test_memory_maintenance_rationale_143" }, @@ -46856,7 +50042,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_maintenance.py", "source_location": "L156", - "community": 592, + "community": 574, "norm_label": "89 days with low score \u2192 not archived (need > 90).", "id": "tests_test_memory_maintenance_rationale_156" }, @@ -46865,7 +50051,7 @@ "file_type": "code", "source_file": "main/utils/models/loader.py", "source_location": "L23", - "community": 602, + "community": 116, "norm_label": "embed()", "id": "models_loader_embed" }, @@ -47045,7 +50231,7 @@ "file_type": "code", "source_file": "main/utils/models/loader.py", "source_location": "L11", - "community": 602, + "community": 222, "norm_label": "_downloadmodel()", "id": "models_loader_downloadmodel" }, @@ -47162,7 +50348,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1258", - "community": 568, + "community": 587, "norm_label": "covers lines 19-20: user not found raises 404.", "id": "tests_test_controllers_coverage_rationale_1258" }, @@ -47171,7 +50357,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1270", - "community": 493, + "community": 529, "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" }, @@ -47180,7 +50366,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1277", - "community": 493, + "community": 614, "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" }, @@ -47189,7 +50375,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1302", - "community": 493, + "community": 625, "norm_label": "covers lines 42-44: session validation fails.", "id": "tests_test_controllers_coverage_rationale_1302" }, @@ -47198,7 +50384,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1318", - "community": 493, + "community": 603, "norm_label": "covers lines 48-49: user not in db.", "id": "tests_test_controllers_coverage_rationale_1318" }, @@ -47207,7 +50393,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1335", - "community": 493, + "community": 604, "norm_label": "covers lines 65-67: unexpected exception.", "id": "tests_test_controllers_coverage_rationale_1335" }, @@ -47216,7 +50402,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1352", - "community": 493, + "community": 611, "norm_label": "covers lines 37-38, 46, 51, 58 (sessionid is none): skips session validation.", "id": "tests_test_controllers_coverage_rationale_1352" }, @@ -47234,7 +50420,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1386", - "community": 524, + "community": 194, "norm_label": "covers lines 45-51: verifyaccesstoken with expired and invalid tokens.", "id": "tests_test_controllers_coverage_rationale_1386" }, @@ -47243,7 +50429,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1389", - "community": 493, + "community": 604, "norm_label": "covers lines 48-49: jwt.expiredsignatureerror.", "id": "tests_test_controllers_coverage_rationale_1389" }, @@ -47252,7 +50438,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1405", - "community": 524, + "community": 172, "norm_label": "covers lines 50-51: jwt.invalidtokenerror.", "id": "tests_test_controllers_coverage_rationale_1405" }, @@ -47504,7 +50690,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L56", - "community": 589, + "community": 630, "norm_label": "makechat must include memory_tools alongside mcp sessions.", "id": "tests_test_memory_tools_wiring_rationale_56" }, @@ -47513,7 +50699,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L91", - "community": 529, + "community": 621, "norm_label": "dispatchtoolcall must route memory tool names to executememorytool.", "id": "tests_test_memory_tools_wiring_rationale_91" }, @@ -47522,7 +50708,7 @@ "file_type": "code", "source_file": "main/utils/vector.py", "source_location": "L1", - "community": 72, + "community": 131, "norm_label": "vector.py", "id": "main_utils_vector_py" }, @@ -47531,7 +50717,7 @@ "file_type": "code", "source_file": "main/utils/vector.py", "source_location": "L8", - "community": 72, + "community": 21, "norm_label": "batchcosinesimilarity()", "id": "utils_vector_batchcosinesimilarity" }, @@ -47837,7 +51023,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L48", - "community": 589, + "community": 630, "norm_label": "makechat must include memory_tools alongside mcp sessions.", "id": "tests_test_memory_tools_wiring_rationale_48" }, @@ -47846,7 +51032,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L76", - "community": 529, + "community": 621, "norm_label": "dispatchtoolcall must route memory tool names to executememorytool.", "id": "tests_test_memory_tools_wiring_rationale_76" }, @@ -47900,7 +51086,7 @@ "file_type": "code", "source_file": "main/app/prometheus/agent.py", "source_location": "L91", - "community": 602, + "community": 116, "norm_label": "executememorytool()", "id": "prometheus_agent_executememorytool" }, @@ -47936,7 +51122,7 @@ "file_type": "code", "source_file": "main/controller/prometheus_controller.py", "source_location": "L177", - "community": 602, + "community": 116, "norm_label": "creatememory()", "id": "controller_prometheus_controller_creatememory" }, @@ -47954,7 +51140,7 @@ "file_type": "code", "source_file": "tests/test_memory_controller.py", "source_location": "L1", - "community": 474, + "community": 72, "norm_label": "test_memory_controller.py", "id": "tests_test_memory_controller_py" }, @@ -47963,7 +51149,7 @@ "file_type": "code", "source_file": "tests/test_memory_controller.py", "source_location": "L10", - "community": 67, + "community": 72, "norm_label": "testmemorycontrollerroutes", "id": "tests_test_memory_controller_testmemorycontrollerroutes" }, @@ -47972,7 +51158,7 @@ "file_type": "code", "source_file": "tests/test_memory_controller.py", "source_location": "L11", - "community": 67, + "community": 72, "norm_label": ".test_get_memories_endpoint_exists()", "id": "tests_test_memory_controller_testmemorycontrollerroutes_test_get_memories_endpoint_exists" }, @@ -47981,7 +51167,7 @@ "file_type": "code", "source_file": "tests/test_memory_controller.py", "source_location": "L15", - "community": 67, + "community": 72, "norm_label": ".test_post_memories_endpoint_exists()", "id": "tests_test_memory_controller_testmemorycontrollerroutes_test_post_memories_endpoint_exists" }, @@ -47990,7 +51176,7 @@ "file_type": "code", "source_file": "tests/test_memory_controller.py", "source_location": "L19", - "community": 67, + "community": 72, "norm_label": ".test_delete_memories_endpoint_exists()", "id": "tests_test_memory_controller_testmemorycontrollerroutes_test_delete_memories_endpoint_exists" }, @@ -47999,7 +51185,7 @@ "file_type": "code", "source_file": "tests/test_memory_controller.py", "source_location": "L23", - "community": 67, + "community": 72, "norm_label": ".test_get_memories_rejects_unauthenticated()", "id": "tests_test_memory_controller_testmemorycontrollerroutes_test_get_memories_rejects_unauthenticated" }, @@ -48008,7 +51194,7 @@ "file_type": "code", "source_file": "tests/test_memory_controller.py", "source_location": "L38", - "community": 67, + "community": 72, "norm_label": ".test_get_memories_rejects_basic_user()", "id": "tests_test_memory_controller_testmemorycontrollerroutes_test_get_memories_rejects_basic_user" }, @@ -48017,7 +51203,7 @@ "file_type": "code", "source_file": "tests/test_memory_controller.py", "source_location": "L65", - "community": 474, + "community": 72, "norm_label": "testmemoryendpointsintegration", "id": "tests_test_memory_controller_testmemoryendpointsintegration" }, @@ -48026,7 +51212,7 @@ "file_type": "code", "source_file": "tests/test_memory_controller.py", "source_location": "L67", - "community": 474, + "community": 72, "norm_label": "test_get_memories_calls_manager()", "id": "tests_test_memory_controller_test_get_memories_calls_manager" }, @@ -48035,7 +51221,7 @@ "file_type": "code", "source_file": "tests/test_memory_controller.py", "source_location": "L90", - "community": 474, + "community": 72, "norm_label": "test_create_memory_calls_manager()", "id": "tests_test_memory_controller_test_create_memory_calls_manager" }, @@ -48044,7 +51230,7 @@ "file_type": "code", "source_file": "tests/test_memory_controller.py", "source_location": "L111", - "community": 474, + "community": 72, "norm_label": "test_create_memory_limit_reached()", "id": "tests_test_memory_controller_test_create_memory_limit_reached" }, @@ -48053,7 +51239,7 @@ "file_type": "code", "source_file": "tests/test_memory_controller.py", "source_location": "L126", - "community": 474, + "community": 72, "norm_label": "test_delete_memory_calls_manager()", "id": "tests_test_memory_controller_test_delete_memory_calls_manager" }, @@ -48062,7 +51248,7 @@ "file_type": "code", "source_file": "tests/test_memory_controller.py", "source_location": "L135", - "community": 474, + "community": 72, "norm_label": "test_delete_memory_not_found()", "id": "tests_test_memory_controller_test_delete_memory_not_found" }, @@ -48071,7 +51257,7 @@ "file_type": "code", "source_file": "tests/test_memory_controller.py", "source_location": "L141", - "community": 474, + "community": 72, "norm_label": ".test_create_memory_missing_key()", "id": "tests_test_memory_controller_testmemoryendpointsintegration_test_create_memory_missing_key" }, @@ -48080,7 +51266,7 @@ "file_type": "code", "source_file": "tests/test_memory_controller.py", "source_location": "L145", - "community": 474, + "community": 72, "norm_label": ".test_create_memory_missing_value()", "id": "tests_test_memory_controller_testmemoryendpointsintegration_test_create_memory_missing_value" }, @@ -48098,7 +51284,7 @@ "file_type": "rationale", "source_file": "main/utils/vector.py", "source_location": "L6", - "community": 72, + "community": 131, "norm_label": "vectorized cosine similarity: one query against n embeddings.", "id": "utils_vector_rationale_6" }, @@ -48620,7 +51806,7 @@ "file_type": "code", "source_file": "main/app/prometheus/memory.py", "source_location": "L138", - "community": 104, + "community": 53, "norm_label": "_fulltext_search()", "id": "prometheus_memory_fulltext_search" }, @@ -48746,7 +51932,7 @@ "file_type": "code", "source_file": "main/controller/prometheus_controller.py", "source_location": "L177", - "community": 602, + "community": 116, "norm_label": "create_memory()", "id": "controller_prometheus_controller_create_memory" }, @@ -48764,7 +51950,7 @@ "file_type": "code", "source_file": "main/utils/vector.py", "source_location": "L5", - "community": 72, + "community": 131, "norm_label": "pack_vector()", "id": "utils_vector_pack_vector" }, @@ -48773,7 +51959,7 @@ "file_type": "code", "source_file": "main/utils/vector.py", "source_location": "L11", - "community": 72, + "community": 131, "norm_label": "unpack_vector()", "id": "utils_vector_unpack_vector" }, @@ -48791,7 +51977,7 @@ "file_type": "code", "source_file": "main/utils/vector.py", "source_location": "L28", - "community": 72, + "community": 21, "norm_label": "batch_cosine_similarity()", "id": "utils_vector_batch_cosine_similarity" }, @@ -48809,7 +51995,7 @@ "file_type": "rationale", "source_file": "main/utils/vector.py", "source_location": "L12", - "community": 72, + "community": 131, "norm_label": "unpack mysql blob to float list.", "id": "utils_vector_rationale_12" }, @@ -48827,7 +52013,7 @@ "file_type": "rationale", "source_file": "main/utils/vector.py", "source_location": "L29", - "community": 72, + "community": 21, "norm_label": "vectorized cosine similarity: one query against n embeddings.", "id": "utils_vector_rationale_29" }, @@ -48845,7 +52031,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_controller.py", "source_location": "L11", - "community": 67, + "community": 72, "norm_label": "verify memory endpoints exist and are wired correctly.", "id": "tests_test_memory_controller_rationale_11" }, @@ -48854,7 +52040,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_controller.py", "source_location": "L14", - "community": 67, + "community": 72, "norm_label": "get /prometheus/memories exists.", "id": "tests_test_memory_controller_rationale_14" }, @@ -48863,7 +52049,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_controller.py", "source_location": "L20", - "community": 67, + "community": 72, "norm_label": "post /prometheus/memories exists.", "id": "tests_test_memory_controller_rationale_20" }, @@ -48872,7 +52058,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_controller.py", "source_location": "L25", - "community": 67, + "community": 72, "norm_label": "delete /prometheus/memories/{id} exists.", "id": "tests_test_memory_controller_rationale_25" }, @@ -48881,7 +52067,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_controller.py", "source_location": "L30", - "community": 67, + "community": 72, "norm_label": "get /memories requires authentication.", "id": "tests_test_memory_controller_rationale_30" }, @@ -48890,7 +52076,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_controller.py", "source_location": "L47", - "community": 67, + "community": 72, "norm_label": "get /memories requires use_prometheus (basic user role denied).", "id": "tests_test_memory_controller_rationale_47" }, @@ -48899,7 +52085,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_controller.py", "source_location": "L75", - "community": 474, + "community": 72, "norm_label": "full integration tests using mocked memorymanager.", "id": "tests_test_memory_controller_rationale_75" }, @@ -48953,7 +52139,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_controller.py", "source_location": "L141", - "community": 474, + "community": 72, "norm_label": "post /memories rejects missing key.", "id": "tests_test_memory_controller_rationale_141" }, @@ -48962,7 +52148,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_controller.py", "source_location": "L146", - "community": 474, + "community": 72, "norm_label": "post /memories rejects missing value.", "id": "tests_test_memory_controller_rationale_146" }, @@ -49133,7 +52319,7 @@ "file_type": "code", "source_file": "tests/test_vector_utils.py", "source_location": "L11", - "community": 72, + "community": 131, "norm_label": "testpackunpack", "id": "tests_test_vector_utils_testpackunpack" }, @@ -49142,7 +52328,7 @@ "file_type": "code", "source_file": "tests/test_vector_utils.py", "source_location": "L12", - "community": 72, + "community": 131, "norm_label": ".test_roundtrip()", "id": "tests_test_vector_utils_testpackunpack_test_roundtrip" }, @@ -49151,7 +52337,7 @@ "file_type": "code", "source_file": "tests/test_vector_utils.py", "source_location": "L20", - "community": 72, + "community": 131, "norm_label": ".test_empty()", "id": "tests_test_vector_utils_testpackunpack_test_empty" }, @@ -49160,7 +52346,7 @@ "file_type": "code", "source_file": "tests/test_vector_utils.py", "source_location": "L26", - "community": 72, + "community": 131, "norm_label": ".test_384_dims()", "id": "tests_test_vector_utils_testpackunpack_test_384_dims" }, @@ -49223,7 +52409,7 @@ "file_type": "rationale", "source_file": "tests/test_vector_utils.py", "source_location": "L13", - "community": 72, + "community": 131, "norm_label": "pack \u2192 unpack preserves values.", "id": "tests_test_vector_utils_rationale_13" }, @@ -49232,7 +52418,7 @@ "file_type": "rationale", "source_file": "tests/test_vector_utils.py", "source_location": "L21", - "community": 72, + "community": 131, "norm_label": "empty list roundtrips.", "id": "tests_test_vector_utils_rationale_21" }, @@ -49241,7 +52427,7 @@ "file_type": "rationale", "source_file": "tests/test_vector_utils.py", "source_location": "L27", - "community": 72, + "community": 131, "norm_label": "384-dim vector packs to 1536 bytes.", "id": "tests_test_vector_utils_rationale_27" }, @@ -49295,7 +52481,7 @@ "file_type": "rationale", "source_file": "tests/test_vector_utils.py", "source_location": "L68", - "community": 72, + "community": 21, "norm_label": "empty matrix \u2192 empty array.", "id": "tests_test_vector_utils_rationale_68" }, @@ -49304,7 +52490,7 @@ "file_type": "rationale", "source_file": "tests/test_vector_utils.py", "source_location": "L73", - "community": 72, + "community": 21, "norm_label": "single row matches cosine_similarity.", "id": "tests_test_vector_utils_rationale_73" }, @@ -49313,7 +52499,7 @@ "file_type": "rationale", "source_file": "tests/test_vector_utils.py", "source_location": "L80", - "community": 72, + "community": 21, "norm_label": "multiple rows ranked correctly.", "id": "tests_test_vector_utils_rationale_80" }, @@ -49322,7 +52508,7 @@ "file_type": "rationale", "source_file": "tests/test_vector_utils.py", "source_location": "L93", - "community": 72, + "community": 21, "norm_label": "zero query \u2192 all zeros.", "id": "tests_test_vector_utils_rationale_93" }, @@ -49628,7 +52814,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L492", - "community": 88, + "community": 519, "norm_label": "cover all methods in authentication.py (lines 13-75).", "id": "tests_test_prometheus_auth_coverage_rationale_492" }, @@ -49646,7 +52832,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L904", - "community": 190, + "community": 627, "norm_label": "exercises the tzinfo-is-none branch (line 144-148).", "id": "tests_test_prometheus_auth_coverage_rationale_904" }, @@ -49655,7 +52841,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L918", - "community": 165, + "community": 628, "norm_label": "exercises the expiresat-is-none branch (line 143).", "id": "tests_test_prometheus_auth_coverage_rationale_918" }, @@ -49664,7 +52850,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L937", - "community": 172, + "community": 112, "norm_label": "cover getgooglesso (lines 6-14).", "id": "tests_test_prometheus_auth_coverage_rationale_937" }, @@ -49907,7 +53093,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L27", - "community": 172, + "community": 112, "norm_label": "cover __init__ and updatedates.", "id": "tests_test_prometheus_auth_coverage_rationale_27" }, @@ -49916,7 +53102,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L58", - "community": 172, + "community": 112, "norm_label": "cover sendmessage and streammessage in agent.py.", "id": "tests_test_prometheus_auth_coverage_rationale_58" }, @@ -49934,7 +53120,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L398", - "community": 88, + "community": 519, "norm_label": "cover all methods in authentication.py (lines 13-75).", "id": "tests_test_prometheus_auth_coverage_rationale_398" }, @@ -49952,7 +53138,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L810", - "community": 190, + "community": 627, "norm_label": "exercises the tzinfo-is-none branch (line 144-148).", "id": "tests_test_prometheus_auth_coverage_rationale_810" }, @@ -49961,7 +53147,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L824", - "community": 165, + "community": 628, "norm_label": "exercises the expiresat-is-none branch (line 143).", "id": "tests_test_prometheus_auth_coverage_rationale_824" }, @@ -49970,7 +53156,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L843", - "community": 172, + "community": 112, "norm_label": "cover getgooglesso (lines 6-14).", "id": "tests_test_prometheus_auth_coverage_rationale_843" }, @@ -49979,7 +53165,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L26", - "community": 172, + "community": 112, "norm_label": "testprometheusgeneratorinit", "id": "tests_test_prometheus_auth_coverage_testprometheusgeneratorinit" }, @@ -49988,7 +53174,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L57", - "community": 172, + "community": 112, "norm_label": "testprometheusgeneratorexecuteworkflow", "id": "tests_test_prometheus_auth_coverage_testprometheusgeneratorexecuteworkflow" }, @@ -50177,7 +53363,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L664", - "community": 88, + "community": 519, "norm_label": "cover all methods in authentication.py (lines 13-75).", "id": "tests_test_prometheus_auth_coverage_rationale_664" }, @@ -50195,7 +53381,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L1076", - "community": 190, + "community": 627, "norm_label": "exercises the tzinfo-is-none branch (line 144-148).", "id": "tests_test_prometheus_auth_coverage_rationale_1076" }, @@ -50204,7 +53390,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L1090", - "community": 165, + "community": 628, "norm_label": "exercises the expiresat-is-none branch (line 143).", "id": "tests_test_prometheus_auth_coverage_rationale_1090" }, @@ -50213,7 +53399,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L1109", - "community": 172, + "community": 112, "norm_label": "cover getgooglesso (lines 6-14).", "id": "tests_test_prometheus_auth_coverage_rationale_1109" }, @@ -50330,7 +53516,7 @@ "file_type": "rationale", "source_file": "tests/conftest.py", "source_location": "L13", - "community": 251, + "community": 561, "norm_label": "set required env vars before test collection. config.py eagerly instantia", "id": "tests_conftest_rationale_13" }, @@ -50339,7 +53525,7 @@ "file_type": "rationale", "source_file": "tests/conftest.py", "source_location": "L74", - "community": 535, + "community": 544, "norm_label": "testclient with stocks router + verifyapikey + getcurrentuser overrides.", "id": "tests_conftest_rationale_74" }, @@ -50348,7 +53534,7 @@ "file_type": "rationale", "source_file": "tests/conftest.py", "source_location": "L99", - "community": 535, + "community": 544, "norm_label": "testclient with all routers mounted \u2014 no lifespan (no db/service init). o", "id": "tests_conftest_rationale_99" }, @@ -50402,7 +53588,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L611", - "community": 541, + "community": 610, "norm_label": "covers lines 66, 68-72, 74: get /user/sessions.", "id": "tests_test_controllers_coverage_rationale_611" }, @@ -50411,7 +53597,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L614", - "community": 541, + "community": 610, "norm_label": "covers lines 66, 68-72, 74: full sessions listing.", "id": "tests_test_controllers_coverage_rationale_614" }, @@ -50420,7 +53606,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L665", - "community": 107, + "community": 493, "norm_label": "covers lines 100-104, 106: get /user/sessions/current.", "id": "tests_test_controllers_coverage_rationale_665" }, @@ -50429,7 +53615,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L668", - "community": 107, + "community": 493, "norm_label": "covers lines 100-104, 106: session found.", "id": "tests_test_controllers_coverage_rationale_668" }, @@ -50438,7 +53624,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L701", - "community": 107, + "community": 493, "norm_label": "covers line 104: session not found.", "id": "tests_test_controllers_coverage_rationale_701" }, @@ -50447,7 +53633,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L724", - "community": 120, + "community": 498, "norm_label": "covers lines 126-136: delete /user/sessions/{sessionid}.", "id": "tests_test_controllers_coverage_rationale_724" }, @@ -50456,7 +53642,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L727", - "community": 120, + "community": 498, "norm_label": "covers lines 126, 131, 135-136.", "id": "tests_test_controllers_coverage_rationale_727" }, @@ -50465,7 +53651,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L754", - "community": 120, + "community": 498, "norm_label": "covers lines 127-129: session not found.", "id": "tests_test_controllers_coverage_rationale_754" }, @@ -50474,7 +53660,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L776", - "community": 120, + "community": 498, "norm_label": "covers lines 132-133: revokesession returns false.", "id": "tests_test_controllers_coverage_rationale_776" }, @@ -50483,7 +53669,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L802", - "community": 221, + "community": 498, "norm_label": "covers lines 143, 145, 147-148: post /user/sessions/revoke-all.", "id": "tests_test_controllers_coverage_rationale_802" }, @@ -50492,7 +53678,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L805", - "community": 221, + "community": 498, "norm_label": "covers lines 143, 145, 147-148.", "id": "tests_test_controllers_coverage_rationale_805" }, @@ -50564,7 +53750,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L912", - "community": 256, + "community": 498, "norm_label": "covers lines 77, 83-84, 86: get /prometheus/history/{sessionid}.", "id": "tests_test_controllers_coverage_rationale_912" }, @@ -50573,7 +53759,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L915", - "community": 256, + "community": 498, "norm_label": "covers lines 77, 86: session found with history.", "id": "tests_test_controllers_coverage_rationale_915" }, @@ -50582,7 +53768,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L959", - "community": 256, + "community": 498, "norm_label": "covers lines 83-84: session not found.", "id": "tests_test_controllers_coverage_rationale_959" }, @@ -50627,7 +53813,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1020", - "community": 148, + "community": 99, "norm_label": "covers lines 111-112: sessionid is none, new session created.", "id": "tests_test_controllers_coverage_rationale_1020" }, @@ -50654,7 +53840,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1116", - "community": 99, + "community": 148, "norm_label": "generic exception in chat propagates to fastapi's default 500 handler.", "id": "tests_test_controllers_coverage_rationale_1116" }, @@ -50663,7 +53849,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1134", - "community": 605, + "community": 45, "norm_label": "covers line 18: get /stocks/health.", "id": "tests_test_controllers_coverage_rationale_1134" }, @@ -50726,7 +53912,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1219", - "community": 568, + "community": 614, "norm_label": "covers lines 13, 17, 19-20, 22-27: usermanager.addroletouser.", "id": "tests_test_controllers_coverage_rationale_1219" }, @@ -50735,7 +53921,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1222", - "community": 568, + "community": 617, "norm_label": "covers lines 17, 22-27: user found, role not present, role added.", "id": "tests_test_controllers_coverage_rationale_1222" }, @@ -50744,7 +53930,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1239", - "community": 493, + "community": 620, "norm_label": "covers line 27: user already has the role.", "id": "tests_test_controllers_coverage_rationale_1239" }, @@ -50753,7 +53939,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1254", - "community": 568, + "community": 587, "norm_label": "covers lines 19-20: user not found raises 404.", "id": "tests_test_controllers_coverage_rationale_1254" }, @@ -50762,7 +53948,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1266", - "community": 493, + "community": 529, "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" }, @@ -50771,7 +53957,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1273", - "community": 493, + "community": 529, "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" }, @@ -50780,7 +53966,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1298", - "community": 493, + "community": 625, "norm_label": "covers lines 42-44: session validation fails.", "id": "tests_test_controllers_coverage_rationale_1298" }, @@ -50789,7 +53975,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1314", - "community": 493, + "community": 603, "norm_label": "covers lines 48-49: user not in db.", "id": "tests_test_controllers_coverage_rationale_1314" }, @@ -50798,7 +53984,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1331", - "community": 493, + "community": 604, "norm_label": "covers lines 65-67: unexpected exception.", "id": "tests_test_controllers_coverage_rationale_1331" }, @@ -50807,7 +53993,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1348", - "community": 493, + "community": 611, "norm_label": "covers lines 37-38, 46, 51, 58 (sessionid is none): skips session validation.", "id": "tests_test_controllers_coverage_rationale_1348" }, @@ -50816,7 +54002,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1372", - "community": 45, + "community": 603, "norm_label": "covers line 16: empty password raises valueerror.", "id": "tests_test_controllers_coverage_rationale_1372" }, @@ -50825,7 +54011,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1401", - "community": 524, + "community": 172, "norm_label": "covers lines 50-51: jwt.invalidtokenerror.", "id": "tests_test_controllers_coverage_rationale_1401" }, @@ -51014,7 +54200,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L609", - "community": 541, + "community": 610, "norm_label": "covers lines 66, 68-72, 74: get /user/sessions.", "id": "tests_test_controllers_coverage_rationale_609" }, @@ -51023,7 +54209,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L612", - "community": 541, + "community": 610, "norm_label": "covers lines 66, 68-72, 74: full sessions listing.", "id": "tests_test_controllers_coverage_rationale_612" }, @@ -51032,7 +54218,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L663", - "community": 107, + "community": 493, "norm_label": "covers lines 100-104, 106: get /user/sessions/current.", "id": "tests_test_controllers_coverage_rationale_663" }, @@ -51041,7 +54227,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L666", - "community": 107, + "community": 493, "norm_label": "covers lines 100-104, 106: session found.", "id": "tests_test_controllers_coverage_rationale_666" }, @@ -51050,7 +54236,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L699", - "community": 107, + "community": 493, "norm_label": "covers line 104: session not found.", "id": "tests_test_controllers_coverage_rationale_699" }, @@ -51059,7 +54245,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L722", - "community": 120, + "community": 498, "norm_label": "covers lines 126-136: delete /user/sessions/{sessionid}.", "id": "tests_test_controllers_coverage_rationale_722" }, @@ -51068,7 +54254,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L725", - "community": 120, + "community": 498, "norm_label": "covers lines 126, 131, 135-136.", "id": "tests_test_controllers_coverage_rationale_725" }, @@ -51077,7 +54263,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L752", - "community": 120, + "community": 498, "norm_label": "covers lines 127-129: session not found.", "id": "tests_test_controllers_coverage_rationale_752" }, @@ -51086,7 +54272,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L774", - "community": 120, + "community": 498, "norm_label": "covers lines 132-133: revokesession returns false.", "id": "tests_test_controllers_coverage_rationale_774" }, @@ -51095,7 +54281,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L800", - "community": 221, + "community": 498, "norm_label": "covers lines 143, 145, 147-148: post /user/sessions/revoke-all.", "id": "tests_test_controllers_coverage_rationale_800" }, @@ -51104,7 +54290,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L803", - "community": 221, + "community": 498, "norm_label": "covers lines 143, 145, 147-148.", "id": "tests_test_controllers_coverage_rationale_803" }, @@ -51176,7 +54362,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L910", - "community": 256, + "community": 498, "norm_label": "covers lines 77, 83-84, 86: get /prometheus/history/{sessionid}.", "id": "tests_test_controllers_coverage_rationale_910" }, @@ -51185,7 +54371,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L913", - "community": 256, + "community": 498, "norm_label": "covers lines 77, 86: session found with history.", "id": "tests_test_controllers_coverage_rationale_913" }, @@ -51194,7 +54380,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L957", - "community": 256, + "community": 498, "norm_label": "covers lines 83-84: session not found.", "id": "tests_test_controllers_coverage_rationale_957" }, @@ -51239,7 +54425,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1018", - "community": 148, + "community": 99, "norm_label": "covers lines 111-112: sessionid is none, new session created.", "id": "tests_test_controllers_coverage_rationale_1018" }, @@ -51266,7 +54452,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1115", - "community": 99, + "community": 148, "norm_label": "generic exception in chat propagates to fastapi's default 500 handler.", "id": "tests_test_controllers_coverage_rationale_1115" }, @@ -51275,7 +54461,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1133", - "community": 605, + "community": 45, "norm_label": "covers line 18: get /stocks/health.", "id": "tests_test_controllers_coverage_rationale_1133" }, @@ -51329,7 +54515,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1218", - "community": 568, + "community": 614, "norm_label": "covers lines 13, 17, 19-20, 22-27: usermanager.addroletouser.", "id": "tests_test_controllers_coverage_rationale_1218" }, @@ -51338,7 +54524,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1221", - "community": 568, + "community": 617, "norm_label": "covers lines 17, 22-27: user found, role not present, role added.", "id": "tests_test_controllers_coverage_rationale_1221" }, @@ -51347,7 +54533,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1238", - "community": 493, + "community": 620, "norm_label": "covers line 27: user already has the role.", "id": "tests_test_controllers_coverage_rationale_1238" }, @@ -51356,7 +54542,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1253", - "community": 568, + "community": 587, "norm_label": "covers lines 19-20: user not found raises 404.", "id": "tests_test_controllers_coverage_rationale_1253" }, @@ -51365,7 +54551,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1265", - "community": 493, + "community": 529, "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" }, @@ -51374,7 +54560,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1272", - "community": 493, + "community": 529, "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" }, @@ -51383,7 +54569,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1297", - "community": 493, + "community": 620, "norm_label": "covers lines 42-44: session validation fails.", "id": "tests_test_controllers_coverage_rationale_1297" }, @@ -51392,7 +54578,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1313", - "community": 493, + "community": 603, "norm_label": "covers lines 48-49: user not in db.", "id": "tests_test_controllers_coverage_rationale_1313" }, @@ -51401,7 +54587,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1330", - "community": 493, + "community": 604, "norm_label": "covers lines 65-67: unexpected exception.", "id": "tests_test_controllers_coverage_rationale_1330" }, @@ -51410,7 +54596,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1347", - "community": 493, + "community": 611, "norm_label": "covers lines 37-38, 46, 51, 58 (sessionid is none): skips session validation.", "id": "tests_test_controllers_coverage_rationale_1347" }, @@ -51428,7 +54614,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1381", - "community": 524, + "community": 194, "norm_label": "covers lines 45-51: verifyaccesstoken with expired and invalid tokens.", "id": "tests_test_controllers_coverage_rationale_1381" }, @@ -51437,7 +54623,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1384", - "community": 524, + "community": 194, "norm_label": "covers lines 48-49: jwt.expiredsignatureerror.", "id": "tests_test_controllers_coverage_rationale_1384" }, @@ -51446,7 +54632,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1400", - "community": 524, + "community": 172, "norm_label": "covers lines 50-51: jwt.invalidtokenerror.", "id": "tests_test_controllers_coverage_rationale_1400" }, @@ -51563,7 +54749,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/query.py", "source_location": "L42", - "community": 517, + "community": 618, "norm_label": "parsecotationdates()", "id": "stocks_api_query_parsecotationdates" }, @@ -51797,7 +54983,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L229", - "community": 603, + "community": 596, "norm_label": "tests covering key.py lines 15-40. uses asyncio.run() since pytest-asyncio", "id": "tests_test_stocks_api_coverage_rationale_229" }, @@ -51914,7 +55100,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L496", - "community": 577, + "community": 572, "norm_label": "replacenan handles direct float nan values (line 34).", "id": "tests_test_stocks_api_coverage_rationale_496" }, @@ -51923,7 +55109,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L510", - "community": 566, + "community": 577, "norm_label": "non-json-dict/list string is left as-is.", "id": "tests_test_stocks_api_coverage_rationale_510" }, @@ -51941,7 +55127,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L528", - "community": 136, + "community": 511, "norm_label": "regression: is_string_dtype fails when column has strings + none (pandas 2.x).", "id": "tests_test_stocks_api_coverage_rationale_528" }, @@ -51959,7 +55145,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L575", - "community": 136, + "community": 511, "norm_label": "tests covering query.py lines 50-67.", "id": "tests_test_stocks_api_coverage_rationale_575" }, @@ -52031,7 +55217,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L778", - "community": 112, + "community": 63, "norm_label": "calling with all none returns 400.", "id": "tests_test_stocks_api_coverage_rationale_778" }, @@ -52040,7 +55226,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L789", - "community": 112, + "community": 63, "norm_label": "tests covering query.py lines 142-202.", "id": "tests_test_stocks_api_coverage_rationale_789" }, @@ -52049,7 +55235,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L843", - "community": 17, + "community": 39, "norm_label": "invalid date -> inner 400 passes through (not wrapped as 500).", "id": "tests_test_stocks_api_coverage_rationale_843" }, @@ -52112,7 +55298,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L967", - "community": 39, + "community": 17, "norm_label": "search with no index match falls back to string startswith.", "id": "tests_test_stocks_api_coverage_rationale_967" }, @@ -52130,7 +55316,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L990", - "community": 112, + "community": 63, "norm_label": "cotacao 10y padrao and cotacao 10y ajustada belong to /cotations, not /fundament", "id": "tests_test_stocks_api_coverage_rationale_990" }, @@ -52202,7 +55388,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1342", - "community": 588, + "community": 22, "norm_label": "get /stocks/realtime-cotation without search returns 422.", "id": "tests_test_stocks_api_coverage_rationale_1342" }, @@ -52211,7 +55397,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1392", - "community": 606, + "community": 546, "norm_label": "get /cotations without search returns 422.", "id": "tests_test_stocks_api_coverage_rationale_1392" }, @@ -52337,7 +55523,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1344", - "community": 588, + "community": 22, "norm_label": "get /stocks/realtime-cotation without search returns 422.", "id": "tests_test_stocks_api_coverage_rationale_1344" }, @@ -52346,7 +55532,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1394", - "community": 606, + "community": 546, "norm_label": "get /cotations without search returns 422.", "id": "tests_test_stocks_api_coverage_rationale_1394" }, @@ -52526,7 +55712,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1400", - "community": 588, + "community": 22, "norm_label": "get /stocks/realtime-cotation without search returns 422.", "id": "tests_test_stocks_api_coverage_rationale_1400" }, @@ -52535,7 +55721,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1468", - "community": 606, + "community": 546, "norm_label": "get /cotations without search returns 422.", "id": "tests_test_stocks_api_coverage_rationale_1468" }, @@ -52562,7 +55748,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L228", - "community": 603, + "community": 596, "norm_label": "tests covering key.py lines 15-40. uses asyncio.run() since pytest-asyncio", "id": "tests_test_stocks_api_coverage_rationale_228" }, @@ -52679,7 +55865,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L495", - "community": 577, + "community": 572, "norm_label": "replacenan handles direct float nan values (line 34).", "id": "tests_test_stocks_api_coverage_rationale_495" }, @@ -52688,7 +55874,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L509", - "community": 566, + "community": 577, "norm_label": "non-json-dict/list string is left as-is.", "id": "tests_test_stocks_api_coverage_rationale_509" }, @@ -52706,7 +55892,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L527", - "community": 136, + "community": 511, "norm_label": "regression: is_string_dtype fails when column has strings + none (pandas 2.x).", "id": "tests_test_stocks_api_coverage_rationale_527" }, @@ -52724,7 +55910,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L574", - "community": 136, + "community": 511, "norm_label": "tests covering query.py lines 50-67.", "id": "tests_test_stocks_api_coverage_rationale_574" }, @@ -52805,7 +55991,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L777", - "community": 112, + "community": 63, "norm_label": "calling with all none returns 400.", "id": "tests_test_stocks_api_coverage_rationale_777" }, @@ -52814,7 +56000,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L788", - "community": 112, + "community": 63, "norm_label": "tests covering query.py lines 142-202.", "id": "tests_test_stocks_api_coverage_rationale_788" }, @@ -52823,7 +56009,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L895", - "community": 17, + "community": 39, "norm_label": "search.strip() == '' should still dedup (line 181).", "id": "tests_test_stocks_api_coverage_rationale_895" }, @@ -52832,7 +56018,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L904", - "community": 17, + "community": 39, "norm_label": "dataframe without time column.", "id": "tests_test_stocks_api_coverage_rationale_904" }, @@ -52868,7 +56054,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L964", - "community": 39, + "community": 17, "norm_label": "search with no index match falls back to string startswith.", "id": "tests_test_stocks_api_coverage_rationale_964" }, @@ -52886,7 +56072,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L986", - "community": 112, + "community": 63, "norm_label": "cotacao 10y padrao and cotacao 10y ajustada belong to /cotations, not /fundament", "id": "tests_test_stocks_api_coverage_rationale_986" }, @@ -52958,7 +56144,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1396", - "community": 588, + "community": 22, "norm_label": "get /stocks/realtime-cotation without search returns 422.", "id": "tests_test_stocks_api_coverage_rationale_1396" }, @@ -52967,7 +56153,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1464", - "community": 606, + "community": 546, "norm_label": "get /cotations without search returns 422.", "id": "tests_test_stocks_api_coverage_rationale_1464" }, @@ -52994,7 +56180,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1388", - "community": 588, + "community": 22, "norm_label": "get /stocks/realtime-cotation without search returns 422.", "id": "tests_test_stocks_api_coverage_rationale_1388" }, @@ -53003,7 +56189,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1456", - "community": 606, + "community": 546, "norm_label": "get /cotations without search returns 422.", "id": "tests_test_stocks_api_coverage_rationale_1456" }, @@ -53102,7 +56288,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L832", - "community": 17, + "community": 39, "norm_label": "invalid date -> inner 400 caught by outer except -> 500.", "id": "tests_test_stocks_api_coverage_rationale_832" }, @@ -53111,7 +56297,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L885", - "community": 17, + "community": 39, "norm_label": "search.strip() == '' should still dedup (line 181).", "id": "tests_test_stocks_api_coverage_rationale_885" }, @@ -53120,7 +56306,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L894", - "community": 17, + "community": 39, "norm_label": "dataframe without time column.", "id": "tests_test_stocks_api_coverage_rationale_894" }, @@ -53156,7 +56342,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L954", - "community": 39, + "community": 17, "norm_label": "search with no index match falls back to string startswith.", "id": "tests_test_stocks_api_coverage_rationale_954" }, @@ -53174,7 +56360,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L976", - "community": 112, + "community": 63, "norm_label": "cotacao 10y padrao and cotacao 10y ajustada belong to /cotations, not /fundament", "id": "tests_test_stocks_api_coverage_rationale_976" }, @@ -53723,7 +56909,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/query.py", "source_location": "L49", - "community": 517, + "community": 618, "norm_label": "filtercotationdata()", "id": "stocks_api_query_filtercotationdata" }, @@ -53813,7 +56999,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/query.py", "source_location": "L45", - "community": 517, + "community": 618, "norm_label": "_parsecotationdate()", "id": "stocks_api_query_parsecotationdate" }, @@ -53822,7 +57008,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/query.py", "source_location": "L55", - "community": 517, + "community": 618, "norm_label": "_filtercotationbydate()", "id": "stocks_api_query_filtercotationbydate" }, @@ -53831,7 +57017,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/query.py", "source_location": "L344", - "community": 63, + "community": 517, "norm_label": ".queryrealtimecotation()", "id": "stocks_api_query_stocksquerymanager_queryrealtimecotation" }, @@ -53840,7 +57026,7 @@ "file_type": "rationale", "source_file": "main/app/stocks_api/query.py", "source_location": "L46", - "community": 517, + "community": 618, "norm_label": "parse dd-mm-yyyy from cotacao 10y json data field. ponytail: stdlib datetime onl", "id": "stocks_api_query_rationale_46" }, @@ -53849,7 +57035,7 @@ "file_type": "rationale", "source_file": "main/app/stocks_api/query.py", "source_location": "L56", - "community": 517, + "community": 618, "norm_label": "filter cotacao 10y json entries by their inner data field (dd-mm-yyyy).", "id": "stocks_api_query_rationale_56" }, @@ -53858,7 +57044,7 @@ "file_type": "rationale", "source_file": "main/app/stocks_api/query.py", "source_location": "L345", - "community": 63, + "community": 517, "norm_label": "fetch live prices for b3 tickers via yfinance. b3 tickers must match", "id": "stocks_api_query_rationale_345" }, @@ -53867,7 +57053,7 @@ "file_type": "code", "source_file": "main/controller/stocksapi_controller.py", "source_location": "L63", - "community": 81, + "community": 197, "norm_label": "getrealtimecotation()", "id": "controller_stocksapi_controller_getrealtimecotation" }, @@ -53912,7 +57098,7 @@ "file_type": "code", "source_file": "main/app/prometheus/chat.py", "source_location": "L14", - "community": 172, + "community": 112, "norm_label": ".__init__()", "id": "prometheus_chat_prometheuschatmanager_init" }, @@ -53975,7 +57161,7 @@ "file_type": "code", "source_file": "main/controller/stocksapi_controller.py", "source_location": "L23", - "community": 81, + "community": 197, "norm_label": "apikeytest()", "id": "controller_stocksapi_controller_apikeytest" }, @@ -54029,7 +57215,7 @@ "file_type": "code", "source_file": "main/utils/http_session.py", "source_location": "L18", - "community": 578, + "community": 184, "norm_label": "cleanup()", "id": "utils_http_session_cleanup" }, @@ -54038,7 +57224,7 @@ "file_type": "code", "source_file": "main/utils/pagination.py", "source_location": "L1", - "community": 482, + "community": 576, "norm_label": "pagination.py", "id": "main_utils_pagination_py" }, @@ -54047,7 +57233,7 @@ "file_type": "code", "source_file": "main/utils/pagination.py", "source_location": "L4", - "community": 482, + "community": 576, "norm_label": "paginationparams", "id": "utils_pagination_paginationparams" }, @@ -54056,7 +57242,7 @@ "file_type": "code", "source_file": "main/utils/pagination.py", "source_location": "L5", - "community": 482, + "community": 576, "norm_label": ".__init__()", "id": "utils_pagination_paginationparams_init" }, @@ -54065,7 +57251,7 @@ "file_type": "rationale", "source_file": "tests/conftest.py", "source_location": "L9", - "community": 251, + "community": 561, "norm_label": "set required env vars before test collection. config.py eagerly instantia", "id": "tests_conftest_rationale_9" }, @@ -54074,7 +57260,7 @@ "file_type": "rationale", "source_file": "tests/conftest.py", "source_location": "L75", - "community": 535, + "community": 544, "norm_label": "testclient with all routers mounted \u2014 no lifespan (no db/service init). o", "id": "tests_conftest_rationale_75" }, @@ -54083,7 +57269,7 @@ "file_type": "code", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L20", - "community": 604, + "community": 26, "norm_label": "dbsession()", "id": "tests_test_api_key_quota_atomic_dbsession" }, @@ -54092,7 +57278,7 @@ "file_type": "rationale", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L21", - "community": 604, + "community": 26, "norm_label": "create an in-memory sqlite database for testing.", "id": "tests_test_api_key_quota_atomic_rationale_21" }, @@ -54101,7 +57287,7 @@ "file_type": "rationale", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L34", - "community": 604, + "community": 26, "norm_label": "sample api key data for tests.", "id": "tests_test_api_key_quota_atomic_rationale_34" }, @@ -54155,7 +57341,7 @@ "file_type": "rationale", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L166", - "community": 608, + "community": 26, "norm_label": "test that invalid api key returns zero rows affected.", "id": "tests_test_api_key_quota_atomic_rationale_166" }, @@ -54164,7 +57350,7 @@ "file_type": "rationale", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L180", - "community": 608, + "community": 26, "norm_label": "test that multiple api keys have independent quotas.", "id": "tests_test_api_key_quota_atomic_rationale_180" }, @@ -54254,7 +57440,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1194", - "community": 45, + "community": 14, "norm_label": "teststocksapikeytest", "id": "tests_test_controllers_coverage_teststocksapikeytest" }, @@ -54299,7 +57485,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L148", - "community": 45, + "community": 120, "norm_label": "covers lines 44-54, 63, 66-71: register success, valueerror, generic exception.", "id": "tests_test_controllers_coverage_rationale_148" }, @@ -54326,7 +57512,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L228", - "community": 45, + "community": 120, "norm_label": "covers lines 87-93, 102: login success and failure paths.", "id": "tests_test_controllers_coverage_rationale_228" }, @@ -54434,7 +57620,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L425", - "community": 45, + "community": 120, "norm_label": "covers lines 155-156, 158, 160-168, 170-177, 179-184, 186, 190-204: googlecallba", "id": "tests_test_controllers_coverage_rationale_425" }, @@ -54506,7 +57692,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L654", - "community": 541, + "community": 610, "norm_label": "covers lines 66, 68-72, 74: get /user/sessions.", "id": "tests_test_controllers_coverage_rationale_654" }, @@ -54515,7 +57701,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L657", - "community": 541, + "community": 610, "norm_label": "covers lines 66, 68-72, 74: full sessions listing.", "id": "tests_test_controllers_coverage_rationale_657" }, @@ -54524,7 +57710,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L708", - "community": 107, + "community": 493, "norm_label": "covers lines 100-104, 106: get /user/sessions/current.", "id": "tests_test_controllers_coverage_rationale_708" }, @@ -54533,7 +57719,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L711", - "community": 107, + "community": 493, "norm_label": "covers lines 100-104, 106: session found.", "id": "tests_test_controllers_coverage_rationale_711" }, @@ -54542,7 +57728,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L744", - "community": 107, + "community": 493, "norm_label": "covers line 104: session not found.", "id": "tests_test_controllers_coverage_rationale_744" }, @@ -54551,7 +57737,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L767", - "community": 120, + "community": 498, "norm_label": "covers lines 126-136: delete /user/sessions/{sessionid}.", "id": "tests_test_controllers_coverage_rationale_767" }, @@ -54560,7 +57746,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L770", - "community": 120, + "community": 498, "norm_label": "covers lines 126, 131, 135-136.", "id": "tests_test_controllers_coverage_rationale_770" }, @@ -54569,7 +57755,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L797", - "community": 120, + "community": 498, "norm_label": "covers lines 127-129: session not found.", "id": "tests_test_controllers_coverage_rationale_797" }, @@ -54578,7 +57764,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L819", - "community": 120, + "community": 498, "norm_label": "covers lines 132-133: revokesession returns false.", "id": "tests_test_controllers_coverage_rationale_819" }, @@ -54587,7 +57773,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L845", - "community": 221, + "community": 498, "norm_label": "covers lines 143, 145, 147-148: post /user/sessions/revoke-all.", "id": "tests_test_controllers_coverage_rationale_845" }, @@ -54596,7 +57782,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L848", - "community": 221, + "community": 498, "norm_label": "covers lines 143, 145, 147-148.", "id": "tests_test_controllers_coverage_rationale_848" }, @@ -54668,7 +57854,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L955", - "community": 256, + "community": 498, "norm_label": "covers lines 77, 83-84, 86: get /prometheus/history/{sessionid}.", "id": "tests_test_controllers_coverage_rationale_955" }, @@ -54677,7 +57863,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L958", - "community": 256, + "community": 498, "norm_label": "covers lines 77, 86: session found with history.", "id": "tests_test_controllers_coverage_rationale_958" }, @@ -54686,7 +57872,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1002", - "community": 256, + "community": 498, "norm_label": "covers lines 83-84: session not found.", "id": "tests_test_controllers_coverage_rationale_1002" }, @@ -54731,7 +57917,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1063", - "community": 148, + "community": 99, "norm_label": "covers lines 111-112: sessionid is none, new session created.", "id": "tests_test_controllers_coverage_rationale_1063" }, @@ -54758,7 +57944,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1160", - "community": 99, + "community": 148, "norm_label": "covers line 125, 126-128: generic exception in chat.", "id": "tests_test_controllers_coverage_rationale_1160" }, @@ -54767,7 +57953,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1181", - "community": 605, + "community": 45, "norm_label": "covers line 18: get /stocks/health.", "id": "tests_test_controllers_coverage_rationale_1181" }, @@ -54830,7 +58016,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1280", - "community": 568, + "community": 617, "norm_label": "covers lines 17, 22-27: user found, role not present, role added.", "id": "tests_test_controllers_coverage_rationale_1280" }, @@ -54839,7 +58025,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1312", - "community": 568, + "community": 587, "norm_label": "covers lines 19-20: user not found raises 404.", "id": "tests_test_controllers_coverage_rationale_1312" }, @@ -54848,7 +58034,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1356", - "community": 493, + "community": 625, "norm_label": "covers lines 42-44: session validation fails.", "id": "tests_test_controllers_coverage_rationale_1356" }, @@ -54857,7 +58043,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1406", - "community": 493, + "community": 611, "norm_label": "covers lines 37-38, 46, 51, 58 (sessionid is none): skips session validation.", "id": "tests_test_controllers_coverage_rationale_1406" }, @@ -54875,7 +58061,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1440", - "community": 524, + "community": 194, "norm_label": "covers lines 45-51: verifyaccesstoken with expired and invalid tokens.", "id": "tests_test_controllers_coverage_rationale_1440" }, @@ -54884,7 +58070,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1443", - "community": 524, + "community": 194, "norm_label": "covers lines 48-49: jwt.expiredsignatureerror.", "id": "tests_test_controllers_coverage_rationale_1443" }, @@ -54893,7 +58079,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1459", - "community": 524, + "community": 172, "norm_label": "covers lines 50-51: jwt.invalidtokenerror.", "id": "tests_test_controllers_coverage_rationale_1459" }, @@ -54929,7 +58115,7 @@ "file_type": "code", "source_file": "tests/test_http_session_coverage.py", "source_location": "L9", - "community": 611, + "community": 561, "norm_label": ".test_creates_new_session()", "id": "tests_test_http_session_coverage_testgetsession_test_creates_new_session" }, @@ -54938,7 +58124,7 @@ "file_type": "code", "source_file": "tests/test_http_session_coverage.py", "source_location": "L28", - "community": 578, + "community": 184, "norm_label": "testcleanup", "id": "tests_test_http_session_coverage_testcleanup" }, @@ -54947,7 +58133,7 @@ "file_type": "code", "source_file": "tests/test_http_session_coverage.py", "source_location": "L29", - "community": 578, + "community": 184, "norm_label": ".test_cleanup_closes_session()", "id": "tests_test_http_session_coverage_testcleanup_test_cleanup_closes_session" }, @@ -54956,7 +58142,7 @@ "file_type": "code", "source_file": "tests/test_http_session_coverage.py", "source_location": "L37", - "community": 578, + "community": 184, "norm_label": ".test_cleanup_no_session()", "id": "tests_test_http_session_coverage_testcleanup_test_cleanup_no_session" }, @@ -54965,7 +58151,7 @@ "file_type": "code", "source_file": "tests/test_http_session_coverage.py", "source_location": "L46", - "community": 578, + "community": 184, "norm_label": ".test_cleanup_exception_during_close()", "id": "tests_test_http_session_coverage_testcleanup_test_cleanup_exception_during_close" }, @@ -54992,7 +58178,7 @@ "file_type": "code", "source_file": "tests/test_pagination.py", "source_location": "L37", - "community": 482, + "community": 576, "norm_label": "testpaginationparams", "id": "tests_test_pagination_testpaginationparams" }, @@ -55001,7 +58187,7 @@ "file_type": "code", "source_file": "tests/test_pagination.py", "source_location": "L38", - "community": 482, + "community": 576, "norm_label": ".test_defaults()", "id": "tests_test_pagination_testpaginationparams_test_defaults" }, @@ -55010,7 +58196,7 @@ "file_type": "code", "source_file": "tests/test_pagination.py", "source_location": "L46", - "community": 482, + "community": 576, "norm_label": ".test_custom_limit()", "id": "tests_test_pagination_testpaginationparams_test_custom_limit" }, @@ -55019,7 +58205,7 @@ "file_type": "code", "source_file": "tests/test_pagination.py", "source_location": "L52", - "community": 482, + "community": 576, "norm_label": ".test_custom_offset()", "id": "tests_test_pagination_testpaginationparams_test_custom_offset" }, @@ -55028,7 +58214,7 @@ "file_type": "code", "source_file": "tests/test_pagination.py", "source_location": "L59", - "community": 482, + "community": 576, "norm_label": ".test_limit_and_offset()", "id": "tests_test_pagination_testpaginationparams_test_limit_and_offset" }, @@ -55037,7 +58223,7 @@ "file_type": "code", "source_file": "tests/test_pagination.py", "source_location": "L67", - "community": 482, + "community": 576, "norm_label": ".test_limit_exceeds_max_rejected()", "id": "tests_test_pagination_testpaginationparams_test_limit_exceeds_max_rejected" }, @@ -55046,7 +58232,7 @@ "file_type": "code", "source_file": "tests/test_pagination.py", "source_location": "L71", - "community": 482, + "community": 576, "norm_label": ".test_limit_zero_rejected()", "id": "tests_test_pagination_testpaginationparams_test_limit_zero_rejected" }, @@ -55055,7 +58241,7 @@ "file_type": "code", "source_file": "tests/test_pagination.py", "source_location": "L75", - "community": 482, + "community": 576, "norm_label": ".test_negative_offset_rejected()", "id": "tests_test_pagination_testpaginationparams_test_negative_offset_rejected" }, @@ -55064,7 +58250,7 @@ "file_type": "code", "source_file": "tests/test_pagination.py", "source_location": "L79", - "community": 482, + "community": 576, "norm_label": ".test_offset_beyond_total()", "id": "tests_test_pagination_testpaginationparams_test_offset_beyond_total" }, @@ -55073,7 +58259,7 @@ "file_type": "code", "source_file": "tests/test_pagination.py", "source_location": "L84", - "community": 482, + "community": 576, "norm_label": ".test_limit_equals_max()", "id": "tests_test_pagination_testpaginationparams_test_limit_equals_max" }, @@ -55082,7 +58268,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L28", - "community": 172, + "community": 112, "norm_label": "cover __init__ and updatedates (lines 22-37).", "id": "tests_test_prometheus_auth_coverage_rationale_28" }, @@ -55091,7 +58277,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L59", - "community": 172, + "community": 112, "norm_label": "cover executeworkflow (lines 39-363).", "id": "tests_test_prometheus_auth_coverage_rationale_59" }, @@ -55190,7 +58376,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L665", - "community": 88, + "community": 519, "norm_label": "cover all methods in authentication.py (lines 13-75).", "id": "tests_test_prometheus_auth_coverage_rationale_665" }, @@ -55208,7 +58394,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L1077", - "community": 190, + "community": 627, "norm_label": "exercises the tzinfo-is-none branch (line 144-148).", "id": "tests_test_prometheus_auth_coverage_rationale_1077" }, @@ -55217,7 +58403,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L1091", - "community": 165, + "community": 628, "norm_label": "exercises the expiresat-is-none branch (line 143).", "id": "tests_test_prometheus_auth_coverage_rationale_1091" }, @@ -55226,7 +58412,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L1110", - "community": 172, + "community": 112, "norm_label": "cover getgooglesso (lines 6-14).", "id": "tests_test_prometheus_auth_coverage_rationale_1110" }, @@ -55379,7 +58565,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L227", - "community": 603, + "community": 596, "norm_label": "tests covering key.py lines 15-40. uses asyncio.run() since pytest-asyncio", "id": "tests_test_stocks_api_coverage_rationale_227" }, @@ -55496,7 +58682,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L494", - "community": 577, + "community": 572, "norm_label": "replacenan handles direct float nan values (line 34).", "id": "tests_test_stocks_api_coverage_rationale_494" }, @@ -55505,7 +58691,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L508", - "community": 566, + "community": 577, "norm_label": "non-json-dict/list string is left as-is.", "id": "tests_test_stocks_api_coverage_rationale_508" }, @@ -55523,7 +58709,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L526", - "community": 136, + "community": 511, "norm_label": "regression: is_string_dtype fails when column has strings + none (pandas 2.x).", "id": "tests_test_stocks_api_coverage_rationale_526" }, @@ -55541,7 +58727,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L573", - "community": 136, + "community": 511, "norm_label": "tests covering query.py lines 50-67.", "id": "tests_test_stocks_api_coverage_rationale_573" }, @@ -55622,7 +58808,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L831", - "community": 17, + "community": 39, "norm_label": "invalid date -> inner 400 caught by outer except -> 500.", "id": "tests_test_stocks_api_coverage_rationale_831" }, @@ -55631,7 +58817,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L884", - "community": 17, + "community": 39, "norm_label": "search.strip() == '' should still dedup (line 181).", "id": "tests_test_stocks_api_coverage_rationale_884" }, @@ -55640,7 +58826,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L893", - "community": 17, + "community": 39, "norm_label": "dataframe without time column.", "id": "tests_test_stocks_api_coverage_rationale_893" }, @@ -55685,7 +58871,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L953", - "community": 39, + "community": 17, "norm_label": "search with no index match falls back to string startswith.", "id": "tests_test_stocks_api_coverage_rationale_953" }, @@ -55883,7 +59069,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L773", - "community": 112, + "community": 63, "norm_label": "tests covering query.py lines 142-202.", "id": "tests_test_stocks_api_coverage_rationale_773" }, @@ -55892,7 +59078,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L827", - "community": 17, + "community": 39, "norm_label": "invalid date -> inner 400 caught by outer except -> 500.", "id": "tests_test_stocks_api_coverage_rationale_827" }, @@ -55901,7 +59087,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L876", - "community": 17, + "community": 39, "norm_label": "search.strip() == '' should still dedup (line 181).", "id": "tests_test_stocks_api_coverage_rationale_876" }, @@ -55973,7 +59159,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L772", - "community": 112, + "community": 63, "norm_label": "tests covering query.py lines 142-202.", "id": "tests_test_stocks_api_coverage_rationale_772" }, @@ -55982,7 +59168,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L826", - "community": 17, + "community": 39, "norm_label": "invalid date -> inner 400 caught by outer except -> 500.", "id": "tests_test_stocks_api_coverage_rationale_826" }, @@ -56018,7 +59204,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L943", - "community": 39, + "community": 17, "norm_label": "search with no index match falls back to string startswith.", "id": "tests_test_stocks_api_coverage_rationale_943" }, @@ -56108,7 +59294,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L726", - "community": 112, + "community": 63, "norm_label": "tests covering query.py lines 142-202.", "id": "tests_test_stocks_api_coverage_rationale_726" }, @@ -56117,7 +59303,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L780", - "community": 17, + "community": 39, "norm_label": "invalid date -> inner 400 caught by outer except -> 500.", "id": "tests_test_stocks_api_coverage_rationale_780" }, @@ -56126,7 +59312,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L828", - "community": 17, + "community": 39, "norm_label": "search.strip() == '' should still dedup (line 181).", "id": "tests_test_stocks_api_coverage_rationale_828" }, @@ -56135,7 +59321,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L837", - "community": 17, + "community": 39, "norm_label": "dataframe without time column.", "id": "tests_test_stocks_api_coverage_rationale_837" }, @@ -56171,7 +59357,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L897", - "community": 39, + "community": 17, "norm_label": "search with no index match falls back to string startswith.", "id": "tests_test_stocks_api_coverage_rationale_897" }, @@ -56180,7 +59366,7 @@ "file_type": "rationale", "source_file": "tests/test_connectivity_coverage.py", "source_location": "L8", - "community": 624, + "community": 59, "norm_label": "checkmysqlconnection \u2014 success, errors, engine=none paths.", "id": "tests_test_connectivity_coverage_rationale_8" }, @@ -56189,7 +59375,7 @@ "file_type": "rationale", "source_file": "tests/test_connectivity_coverage.py", "source_location": "L105", - "community": 623, + "community": 59, "norm_label": "checkserviceconnection \u2014 success, not found, errors.", "id": "tests_test_connectivity_coverage_rationale_105" }, @@ -56279,7 +59465,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L727", - "community": 112, + "community": 63, "norm_label": "tests covering query.py lines 142-202.", "id": "tests_test_stocks_api_coverage_rationale_727" }, @@ -56288,7 +59474,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L781", - "community": 17, + "community": 39, "norm_label": "invalid date -> inner 400 caught by outer except -> 500.", "id": "tests_test_stocks_api_coverage_rationale_781" }, @@ -56297,7 +59483,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L838", - "community": 17, + "community": 39, "norm_label": "dataframe without time column.", "id": "tests_test_stocks_api_coverage_rationale_838" }, @@ -56360,7 +59546,7 @@ "file_type": "code", "source_file": "main/utils/errors.py", "source_location": "L27", - "community": 572, + "community": 569, "norm_label": "_build_error_response()", "id": "utils_errors_build_error_response" }, @@ -56369,7 +59555,7 @@ "file_type": "code", "source_file": "main/utils/errors.py", "source_location": "L37", - "community": 572, + "community": 569, "norm_label": "http_exception_handler()", "id": "utils_errors_http_exception_handler" }, @@ -56378,7 +59564,7 @@ "file_type": "code", "source_file": "main/utils/errors.py", "source_location": "L44", - "community": 572, + "community": 569, "norm_label": "validation_exception_handler()", "id": "utils_errors_validation_exception_handler" }, @@ -56387,7 +59573,7 @@ "file_type": "code", "source_file": "main/utils/errors.py", "source_location": "L56", - "community": 572, + "community": 569, "norm_label": "generic_exception_handler()", "id": "utils_errors_generic_exception_handler" }, @@ -56396,7 +59582,7 @@ "file_type": "code", "source_file": "main/utils/errors.py", "source_location": "L65", - "community": 120, + "community": 498, "norm_label": "register_error_handlers()", "id": "utils_errors_register_error_handlers" }, @@ -56405,7 +59591,7 @@ "file_type": "code", "source_file": "main/utils/http_session.py", "source_location": "L9", - "community": 574, + "community": 184, "norm_label": "get_session()", "id": "utils_http_session_get_session" }, @@ -56414,7 +59600,7 @@ "file_type": "rationale", "source_file": "main/utils/http_session.py", "source_location": "L10", - "community": 574, + "community": 184, "norm_label": "return a requests.session for the current thread. sessions are created la", "id": "utils_http_session_rationale_10" }, @@ -56423,7 +59609,7 @@ "file_type": "rationale", "source_file": "main/utils/http_session.py", "source_location": "L23", - "community": 578, + "community": 184, "norm_label": "close the main thread's session at interpreter shutdown.", "id": "utils_http_session_rationale_23" }, @@ -56828,7 +60014,7 @@ "file_type": "rationale", "source_file": "main/utils/http_session.py", "source_location": "L9", - "community": 574, + "community": 184, "norm_label": "return a requests.session for the current thread. sessions are created la", "id": "utils_http_session_rationale_9" }, @@ -56855,7 +60041,7 @@ "file_type": "code", "source_file": "main/service/user_service.py", "source_location": "L35", - "community": 536, + "community": 222, "norm_label": "inactivesessionsscheduler()", "id": "service_user_service_inactivesessionsscheduler" }, @@ -57206,7 +60392,7 @@ "file_type": "rationale", "source_file": "main/utils/errors.py", "source_location": "L68", - "community": 120, + "community": 498, "norm_label": "register exception handlers on the fastapi app. note: httpexception and r", "id": "utils_errors_rationale_68" }, @@ -57296,7 +60482,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L489", - "community": 577, + "community": 572, "norm_label": "replacenan handles direct float nan values (line 34).", "id": "tests_test_stocks_api_coverage_rationale_489" }, @@ -57305,7 +60491,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L503", - "community": 566, + "community": 577, "norm_label": "non-json-dict/list string is left as-is.", "id": "tests_test_stocks_api_coverage_rationale_503" }, @@ -57323,7 +60509,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L522", - "community": 136, + "community": 511, "norm_label": "tests covering query.py lines 50-67.", "id": "tests_test_stocks_api_coverage_rationale_522" }, @@ -57395,7 +60581,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L721", - "community": 112, + "community": 63, "norm_label": "tests covering query.py lines 142-202.", "id": "tests_test_stocks_api_coverage_rationale_721" }, @@ -57404,7 +60590,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L775", - "community": 17, + "community": 39, "norm_label": "invalid date -> inner 400 caught by outer except -> 500.", "id": "tests_test_stocks_api_coverage_rationale_775" }, @@ -57413,7 +60599,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" }, @@ -57449,7 +60635,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" }, @@ -57467,7 +60653,7 @@ "file_type": "rationale", "source_file": "tests/conftest.py", "source_location": "L62", - "community": 535, + "community": 544, "norm_label": "testclient with all routers mounted \u2014 no lifespan (no db/service init). o", "id": "tests_conftest_rationale_62" }, @@ -57476,7 +60662,7 @@ "file_type": "rationale", "source_file": "tests/conftest.py", "source_location": "L61", - "community": 535, + "community": 544, "norm_label": "testclient with all routers mounted \u2014 no lifespan (no db/service init). o", "id": "tests_conftest_rationale_61" }, @@ -57485,7 +60671,7 @@ "file_type": "rationale", "source_file": "tests/conftest.py", "source_location": "L57", - "community": 535, + "community": 544, "norm_label": "testclient with all routers mounted \u2014 no lifespan (no db/service init). o", "id": "tests_conftest_rationale_57" }, @@ -57494,7 +60680,7 @@ "file_type": "rationale", "source_file": "tests/conftest.py", "source_location": "L49", - "community": 535, + "community": 544, "norm_label": "testclient with all routers mounted \u2014 no lifespan (no db/service init). o", "id": "tests_conftest_rationale_49" }, @@ -57764,7 +60950,7 @@ "file_type": "document", "source_file": "CODE_REVIEW_REPORT.md", "source_location": "L217", - "community": 587, + "community": 634, "norm_label": "category 8: testing gaps (medium)", "id": "server_code_review_report_category_8_testing_gaps_medium" }, @@ -57773,7 +60959,7 @@ "file_type": "document", "source_file": "CODE_REVIEW_REPORT.md", "source_location": "L219", - "community": 587, + "community": 634, "norm_label": "issue 8.1 \u2014 no integration tests for full request lifecycle", "id": "server_code_review_report_issue_8_1_no_integration_tests_for_full_request_lifecycle" }, @@ -57782,7 +60968,7 @@ "file_type": "document", "source_file": "CODE_REVIEW_REPORT.md", "source_location": "L223", - "community": 587, + "community": 634, "norm_label": "issue 8.2 \u2014 no tests for scraper, stocks query, or cache", "id": "server_code_review_report_issue_8_2_no_tests_for_scraper_stocks_query_or_cache" }, @@ -57791,7 +60977,7 @@ "file_type": "document", "source_file": "CODE_REVIEW_REPORT.md", "source_location": "L230", - "community": 587, + "community": 634, "norm_label": "issue 8.3 \u2014 no tests for google oauth callback", "id": "server_code_review_report_issue_8_3_no_tests_for_google_oauth_callback" }, @@ -57800,7 +60986,7 @@ "file_type": "document", "source_file": "CODE_REVIEW_REPORT.md", "source_location": "L234", - "community": 587, + "community": 634, "norm_label": "issue 8.4 \u2014 no tests for session cleanup", "id": "server_code_review_report_issue_8_4_no_tests_for_session_cleanup" }, @@ -57863,7 +61049,7 @@ "file_type": "rationale", "source_file": "main/utils/errors.py", "source_location": "L67", - "community": 120, + "community": 498, "norm_label": "register exception handlers on the fastapi app. note: httpexception and r", "id": "utils_errors_rationale_67" }, @@ -57872,7 +61058,7 @@ "file_type": "code", "source_file": "main/app/authentication/session.py", "source_location": "L67", - "community": 149, + "community": 523, "norm_label": "getsessionbyidsafe()", "id": "authentication_session_getsessionbyidsafe" }, @@ -57881,7 +61067,7 @@ "file_type": "code", "source_file": "tests/test_stocks_cache.py", "source_location": "L1", - "community": 502, + "community": 613, "norm_label": "test_stocks_cache.py", "id": "tests_test_stocks_cache_py" }, @@ -57998,7 +61184,7 @@ "file_type": "code", "source_file": "tests/test_stocks_cache.py", "source_location": "L109", - "community": 502, + "community": 613, "norm_label": "testconnectionpool", "id": "tests_test_stocks_cache_testconnectionpool" }, @@ -58007,7 +61193,7 @@ "file_type": "code", "source_file": "tests/test_stocks_cache.py", "source_location": "L112", - "community": 502, + "community": 613, "norm_label": ".test_stocks_engine_has_pool_configuration()", "id": "tests_test_stocks_cache_testconnectionpool_test_stocks_engine_has_pool_configuration" }, @@ -58016,7 +61202,7 @@ "file_type": "code", "source_file": "tests/test_stocks_cache.py", "source_location": "L121", - "community": 502, + "community": 613, "norm_label": "testlazydeserialization", "id": "tests_test_stocks_cache_testlazydeserialization" }, @@ -58025,7 +61211,7 @@ "file_type": "code", "source_file": "tests/test_stocks_cache.py", "source_location": "L124", - "community": 502, + "community": 613, "norm_label": ".test_query_manager_has_deserialize_method()", "id": "tests_test_stocks_cache_testlazydeserialization_test_query_manager_has_deserialize_method" }, @@ -58034,7 +61220,7 @@ "file_type": "code", "source_file": "tests/test_stocks_cache.py", "source_location": "L135", - "community": 600, + "community": 589, "norm_label": "testqueryoptimization", "id": "tests_test_stocks_cache_testqueryoptimization" }, @@ -58043,7 +61229,7 @@ "file_type": "code", "source_file": "tests/test_stocks_cache.py", "source_location": "L138", - "community": 600, + "community": 589, "norm_label": ".test_all_optimizations_present()", "id": "tests_test_stocks_cache_testqueryoptimization_test_all_optimizations_present" }, @@ -58052,7 +61238,7 @@ "file_type": "code", "source_file": "tests/test_stocks_cache.py", "source_location": "L153", - "community": 600, + "community": 589, "norm_label": ".test_query_filter_uses_optimization()", "id": "tests_test_stocks_cache_testqueryoptimization_test_query_filter_uses_optimization" }, @@ -58124,7 +61310,7 @@ "file_type": "code", "source_file": "tests/test_stocks_cache.py", "source_location": "L299", - "community": 563, + "community": 588, "norm_label": "testfilterbysearchterms", "id": "tests_test_stocks_cache_testfilterbysearchterms" }, @@ -58133,7 +61319,7 @@ "file_type": "code", "source_file": "tests/test_stocks_cache.py", "source_location": "L302", - "community": 563, + "community": 588, "norm_label": ".test_filter_with_tickerindex()", "id": "tests_test_stocks_cache_testfilterbysearchterms_test_filter_with_tickerindex" }, @@ -58142,7 +61328,7 @@ "file_type": "code", "source_file": "tests/test_stocks_cache.py", "source_location": "L308", - "community": 502, + "community": 613, "norm_label": "testqueryperformance", "id": "tests_test_stocks_cache_testqueryperformance" }, @@ -58151,7 +61337,7 @@ "file_type": "code", "source_file": "tests/test_stocks_cache.py", "source_location": "L311", - "community": 502, + "community": 613, "norm_label": ".test_query_response_time_under_1_second()", "id": "tests_test_stocks_cache_testqueryperformance_test_query_response_time_under_1_second" }, @@ -58268,7 +61454,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L110", - "community": 502, + "community": 613, "norm_label": "tests for connection pool configuration", "id": "tests_test_stocks_cache_rationale_110" }, @@ -58277,7 +61463,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L113", - "community": 502, + "community": 613, "norm_label": "stocks engine should have optimized pool settings", "id": "tests_test_stocks_cache_rationale_113" }, @@ -58286,7 +61472,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L122", - "community": 502, + "community": 613, "norm_label": "tests for lazy json deserialization", "id": "tests_test_stocks_cache_rationale_122" }, @@ -58295,7 +61481,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L125", - "community": 502, + "community": 613, "norm_label": "query manager should have deserialize method", "id": "tests_test_stocks_cache_rationale_125" }, @@ -58304,7 +61490,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L136", - "community": 600, + "community": 589, "norm_label": "integration tests for all query optimizations", "id": "tests_test_stocks_cache_rationale_136" }, @@ -58313,7 +61499,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L139", - "community": 600, + "community": 589, "norm_label": "all optimizations should be implemented", "id": "tests_test_stocks_cache_rationale_139" }, @@ -58322,7 +61508,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L154", - "community": 600, + "community": 589, "norm_label": "query filter should use ticker index", "id": "tests_test_stocks_cache_rationale_154" }, @@ -58394,7 +61580,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L300", - "community": 563, + "community": 588, "norm_label": "tests for optimized search filtering", "id": "tests_test_stocks_cache_rationale_300" }, @@ -58403,7 +61589,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L303", - "community": 563, + "community": 588, "norm_label": "filter should use ticker index for o(1) lookup", "id": "tests_test_stocks_cache_rationale_303" }, @@ -58412,7 +61598,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L309", - "community": 502, + "community": 613, "norm_label": "performance tests for query operations", "id": "tests_test_stocks_cache_rationale_309" }, @@ -58421,7 +61607,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L312", - "community": 502, + "community": 613, "norm_label": "query should respond within 1 second", "id": "tests_test_stocks_cache_rationale_312" }, @@ -58556,7 +61742,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L112", - "community": 502, + "community": 613, "norm_label": "tests for connection pool configuration", "id": "tests_test_stocks_cache_rationale_112" }, @@ -58565,7 +61751,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L115", - "community": 502, + "community": 613, "norm_label": "stocks engine should have optimized pool settings", "id": "tests_test_stocks_cache_rationale_115" }, @@ -58574,7 +61760,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L124", - "community": 502, + "community": 613, "norm_label": "tests for lazy json deserialization", "id": "tests_test_stocks_cache_rationale_124" }, @@ -58583,7 +61769,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L127", - "community": 502, + "community": 613, "norm_label": "query manager should have deserialize method", "id": "tests_test_stocks_cache_rationale_127" }, @@ -58592,7 +61778,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L138", - "community": 600, + "community": 589, "norm_label": "integration tests for all query optimizations", "id": "tests_test_stocks_cache_rationale_138" }, @@ -58601,7 +61787,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L141", - "community": 600, + "community": 589, "norm_label": "all optimizations should be implemented", "id": "tests_test_stocks_cache_rationale_141" }, @@ -58610,7 +61796,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L156", - "community": 600, + "community": 589, "norm_label": "query filter should use ticker index", "id": "tests_test_stocks_cache_rationale_156" }, @@ -58682,7 +61868,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L302", - "community": 563, + "community": 588, "norm_label": "tests for optimized search filtering", "id": "tests_test_stocks_cache_rationale_302" }, @@ -58691,7 +61877,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L305", - "community": 563, + "community": 588, "norm_label": "filter should use ticker index for o(1) lookup", "id": "tests_test_stocks_cache_rationale_305" }, @@ -58700,7 +61886,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L311", - "community": 502, + "community": 613, "norm_label": "performance tests for query operations", "id": "tests_test_stocks_cache_rationale_311" }, @@ -58709,7 +61895,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L314", - "community": 502, + "community": 613, "norm_label": "query should respond within 1 second", "id": "tests_test_stocks_cache_rationale_314" }, @@ -58781,7 +61967,7 @@ "file_type": "code", "source_file": "tests/test_stocks_cache.py", "source_location": "L304", - "community": 563, + "community": 588, "norm_label": ".test_filter_with_tickerindex()", "id": "tests_test_stocks_cache_testfilterbysearchterms_test_filter_with_tickerIndex" }, @@ -58790,7 +61976,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L1", - "community": 101, + "community": 586, "norm_label": "test_stocks_optimization.py", "id": "tests_test_stocks_optimization_py" }, @@ -58799,7 +61985,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L17", - "community": 503, + "community": 497, "norm_label": "testtickerindex", "id": "tests_test_stocks_optimization_testtickerindex" }, @@ -58808,7 +61994,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L20", - "community": 503, + "community": 497, "norm_label": ".test_tickerindex_built_after_cache_load()", "id": "tests_test_stocks_optimization_testtickerindex_test_tickerIndex_built_after_cache_load" }, @@ -58817,7 +62003,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L28", - "community": 503, + "community": 497, "norm_label": ".test_tickerindex_contains_all_tickers()", "id": "tests_test_stocks_optimization_testtickerindex_test_tickerIndex_contains_all_tickers" }, @@ -58826,7 +62012,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L38", - "community": 503, + "community": 497, "norm_label": ".test_tickerindex_case_insensitive()", "id": "tests_test_stocks_optimization_testtickerindex_test_tickerIndex_case_insensitive" }, @@ -58835,7 +62021,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L47", - "community": 503, + "community": 497, "norm_label": ".test_ticker_lookup_returns_valid_index()", "id": "tests_test_stocks_optimization_testtickerindex_test_ticker_lookup_returns_valid_index" }, @@ -58844,7 +62030,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L58", - "community": 503, + "community": 497, "norm_label": ".test_tickerindex_rebuilt_on_cache_refresh()", "id": "tests_test_stocks_optimization_testtickerindex_test_tickerIndex_rebuilt_on_cache_refresh" }, @@ -58853,7 +62039,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L72", - "community": 101, + "community": 541, "norm_label": "testquerycaching", "id": "tests_test_stocks_optimization_testquerycaching" }, @@ -58862,7 +62048,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L75", - "community": 101, + "community": 541, "norm_label": ".test_cache_manager_has_caches_method()", "id": "tests_test_stocks_optimization_testquerycaching_test_cache_manager_has_caches_method" }, @@ -58871,7 +62057,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L83", - "community": 101, + "community": 541, "norm_label": ".test_querycache_ttl_configuration()", "id": "tests_test_stocks_optimization_testquerycaching_test_queryCache_ttl_configuration" }, @@ -58880,7 +62066,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L91", - "community": 101, + "community": 541, "norm_label": ".test_get_cached_stocks_respects_columns_parameter()", "id": "tests_test_stocks_optimization_testquerycaching_test_get_cached_stocks_respects_columns_parameter" }, @@ -58889,7 +62075,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L101", - "community": 101, + "community": 541, "norm_label": ".test_different_queries_not_cached()", "id": "tests_test_stocks_optimization_testquerycaching_test_different_queries_not_cached" }, @@ -58898,7 +62084,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L105", - "community": 101, + "community": 541, "norm_label": ".test_cache_expiry_after_ttl()", "id": "tests_test_stocks_optimization_testquerycaching_test_cache_expiry_after_ttl" }, @@ -58907,7 +62093,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L111", - "community": 101, + "community": 586, "norm_label": "testconnectionpool", "id": "tests_test_stocks_optimization_testconnectionpool" }, @@ -58916,7 +62102,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L114", - "community": 101, + "community": 586, "norm_label": ".test_stocks_engine_has_pool_configuration()", "id": "tests_test_stocks_optimization_testconnectionpool_test_stocks_engine_has_pool_configuration" }, @@ -58925,7 +62111,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L123", - "community": 101, + "community": 586, "norm_label": "testlazydeserialization", "id": "tests_test_stocks_optimization_testlazydeserialization" }, @@ -58934,7 +62120,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L126", - "community": 101, + "community": 586, "norm_label": ".test_query_manager_has_deserialize_method()", "id": "tests_test_stocks_optimization_testlazydeserialization_test_query_manager_has_deserialize_method" }, @@ -58943,7 +62129,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L137", - "community": 184, + "community": 586, "norm_label": "testqueryoptimization", "id": "tests_test_stocks_optimization_testqueryoptimization" }, @@ -58952,7 +62138,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L140", - "community": 184, + "community": 586, "norm_label": ".test_all_optimizations_present()", "id": "tests_test_stocks_optimization_testqueryoptimization_test_all_optimizations_present" }, @@ -58961,7 +62147,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L155", - "community": 184, + "community": 586, "norm_label": ".test_query_filter_uses_optimization()", "id": "tests_test_stocks_optimization_testqueryoptimization_test_query_filter_uses_optimization" }, @@ -59033,7 +62219,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L301", - "community": 498, + "community": 586, "norm_label": "testfilterbysearchterms", "id": "tests_test_stocks_optimization_testfilterbysearchterms" }, @@ -59042,7 +62228,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L304", - "community": 498, + "community": 586, "norm_label": ".test_filter_with_tickerindex()", "id": "tests_test_stocks_optimization_testfilterbysearchterms_test_filter_with_tickerIndex" }, @@ -59051,7 +62237,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L310", - "community": 101, + "community": 586, "norm_label": "testqueryperformance", "id": "tests_test_stocks_optimization_testqueryperformance" }, @@ -59060,7 +62246,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L313", - "community": 101, + "community": 586, "norm_label": ".test_query_response_time_under_1_second()", "id": "tests_test_stocks_optimization_testqueryperformance_test_query_response_time_under_1_second" }, @@ -59069,7 +62255,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L18", - "community": 503, + "community": 497, "norm_label": "tests for dynamic ticker index feature", "id": "tests_test_stocks_optimization_rationale_18" }, @@ -59078,7 +62264,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L21", - "community": 503, + "community": 497, "norm_label": "ticker index should be built when cache is loaded", "id": "tests_test_stocks_optimization_rationale_21" }, @@ -59087,7 +62273,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L29", - "community": 503, + "community": 497, "norm_label": "ticker index should contain all tickers from cache", "id": "tests_test_stocks_optimization_rationale_29" }, @@ -59096,7 +62282,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L39", - "community": 503, + "community": 497, "norm_label": "ticker index should be case-insensitive", "id": "tests_test_stocks_optimization_rationale_39" }, @@ -59105,7 +62291,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L48", - "community": 503, + "community": 497, "norm_label": "looking up ticker should return valid row index", "id": "tests_test_stocks_optimization_rationale_48" }, @@ -59114,7 +62300,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L59", - "community": 503, + "community": 497, "norm_label": "ticker index should be rebuilt when cache refreshes", "id": "tests_test_stocks_optimization_rationale_59" }, @@ -59123,7 +62309,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L73", - "community": 101, + "community": 541, "norm_label": "tests for query result caching", "id": "tests_test_stocks_optimization_rationale_73" }, @@ -59132,7 +62318,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L76", - "community": 101, + "community": 541, "norm_label": "cachemanager should track cached queries", "id": "tests_test_stocks_optimization_rationale_76" }, @@ -59141,7 +62327,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L84", - "community": 101, + "community": 541, "norm_label": "query cache should have configurable ttl", "id": "tests_test_stocks_optimization_rationale_84" }, @@ -59150,7 +62336,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L92", - "community": 101, + "community": 541, "norm_label": "getcachedstocks should support column filtering", "id": "tests_test_stocks_optimization_rationale_92" }, @@ -59159,7 +62345,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L102", - "community": 101, + "community": 541, "norm_label": "different query parameters should not share cache", "id": "tests_test_stocks_optimization_rationale_102" }, @@ -59168,7 +62354,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L106", - "community": 101, + "community": 541, "norm_label": "cache should expire after ttl", "id": "tests_test_stocks_optimization_rationale_106" }, @@ -59177,7 +62363,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L112", - "community": 101, + "community": 586, "norm_label": "tests for connection pool configuration", "id": "tests_test_stocks_optimization_rationale_112" }, @@ -59186,7 +62372,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L115", - "community": 101, + "community": 586, "norm_label": "stocks engine should have optimized pool settings", "id": "tests_test_stocks_optimization_rationale_115" }, @@ -59195,7 +62381,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L124", - "community": 101, + "community": 586, "norm_label": "tests for lazy json deserialization", "id": "tests_test_stocks_optimization_rationale_124" }, @@ -59204,7 +62390,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L127", - "community": 101, + "community": 586, "norm_label": "query manager should have deserialize method", "id": "tests_test_stocks_optimization_rationale_127" }, @@ -59213,7 +62399,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L138", - "community": 184, + "community": 586, "norm_label": "integration tests for all query optimizations", "id": "tests_test_stocks_optimization_rationale_138" }, @@ -59222,7 +62408,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L141", - "community": 184, + "community": 586, "norm_label": "all optimizations should be implemented", "id": "tests_test_stocks_optimization_rationale_141" }, @@ -59231,7 +62417,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L156", - "community": 184, + "community": 586, "norm_label": "query filter should use ticker index", "id": "tests_test_stocks_optimization_rationale_156" }, @@ -59303,7 +62489,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L302", - "community": 498, + "community": 586, "norm_label": "tests for optimized search filtering", "id": "tests_test_stocks_optimization_rationale_302" }, @@ -59312,7 +62498,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L305", - "community": 498, + "community": 586, "norm_label": "filter should use ticker index for o(1) lookup", "id": "tests_test_stocks_optimization_rationale_305" }, @@ -59321,7 +62507,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L311", - "community": 101, + "community": 586, "norm_label": "performance tests for query operations", "id": "tests_test_stocks_optimization_rationale_311" }, @@ -59330,7 +62516,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L314", - "community": 101, + "community": 586, "norm_label": "query should respond within 1 second", "id": "tests_test_stocks_optimization_rationale_314" }, @@ -59348,7 +62534,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L173", - "community": 498, + "community": 586, "norm_label": "tests for optimized search filtering", "id": "tests_test_stocks_optimization_rationale_173" }, @@ -59357,7 +62543,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L176", - "community": 498, + "community": 586, "norm_label": "filter should use ticker index for o(1) lookup", "id": "tests_test_stocks_optimization_rationale_176" }, @@ -59366,7 +62552,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L182", - "community": 101, + "community": 586, "norm_label": "performance tests for query operations", "id": "tests_test_stocks_optimization_rationale_182" }, @@ -59375,7 +62561,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L185", - "community": 101, + "community": 586, "norm_label": "query should respond within 1 second", "id": "tests_test_stocks_optimization_rationale_185" }, @@ -59658,7 +62844,7 @@ "label": "FastAPI", "file_type": "rationale", "source_file": "README.md", - "community": 519, + "community": 576, "norm_label": "fastapi", "id": "fastapi" }, @@ -59698,7 +62884,7 @@ "label": "Authentication System", "file_type": "document", "source_file": "docs/authentication.md", - "community": 560, + "community": 107, "norm_label": "authentication system", "id": "authentication" }, @@ -59706,7 +62892,7 @@ "label": "JWT Authentication", "file_type": "rationale", "source_file": "docs/authentication.md", - "community": 560, + "community": 107, "norm_label": "jwt authentication", "id": "jwt" }, @@ -59714,7 +62900,7 @@ "label": "Google OAuth", "file_type": "rationale", "source_file": "docs/authentication.md", - "community": 560, + "community": 107, "norm_label": "google oauth", "id": "google_oauth" }, @@ -59802,7 +62988,7 @@ "label": "Pytest Testing", "file_type": "rationale", "source_file": "pyproject.toml", - "community": 586, + "community": 561, "norm_label": "pytest testing", "id": "pytest" }, @@ -60426,6 +63612,26 @@ "source": "server_config_config", "target": "scraper_b3_scraper_b3scraper" }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/market_data.py", + "source_location": "L9", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_market_data_marketdatamanager", + "target": "server_config_config" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/positions.py", + "source_location": "L8", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_positions_positionsmanager", + "target": "server_config_config" + }, { "relation": "uses", "confidence": "INFERRED", @@ -60446,6 +63652,86 @@ "source": "server_config_config", "target": "utils_logging_config_discordhandler" }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L17", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_wallet_service_entrycreate", + "target": "server_config_config" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L17", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_wallet_service_entryupdate", + "target": "server_config_config" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L17", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_wallet_service_targetupsert", + "target": "server_config_config" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L17", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_wallet_service_ratingupsert", + "target": "server_config_config" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/service/wallet_service.py", + "source_location": "L13", + "weight": 0.8, + "confidence_score": 0.5, + "source": "service_wallet_service_entrycreate", + "target": "server_config_config" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/service/wallet_service.py", + "source_location": "L13", + "weight": 0.8, + "confidence_score": 0.5, + "source": "service_wallet_service_entryupdate", + "target": "server_config_config" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/service/wallet_service.py", + "source_location": "L13", + "weight": 0.8, + "confidence_score": 0.5, + "source": "service_wallet_service_targetupsert", + "target": "server_config_config" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/service/wallet_service.py", + "source_location": "L13", + "weight": 0.8, + "confidence_score": 0.5, + "source": "service_wallet_service_ratingupsert", + "target": "server_config_config" + }, { "relation": "uses", "confidence": "INFERRED", @@ -64962,6 +68248,17 @@ "source": "controller_authentication_controller_introspect", "target": "authentication_introspect_introspecttoken" }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/auth.py", + "source_location": "L27", + "weight": 1.0, + "source": "wallet_auth_getwalletidentity", + "target": "authentication_introspect_introspecttoken" + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -66072,6 +69369,17 @@ "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": "tools_init_dispatchtoolcall" + }, { "relation": "calls", "context": "call", @@ -67169,6 +70477,66 @@ "source": "orunmila_memory_memorycandidate", "target": "utils_roles_roles" }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "main/app/wallet/entries.py", + "source_location": "L15", + "weight": 1.0, + "confidence_score": 1.0, + "source": "wallet_entries_entrycreate", + "target": "basemodel" + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "main/app/wallet/entries.py", + "source_location": "L26", + "weight": 1.0, + "confidence_score": 1.0, + "source": "wallet_entries_entryupdate", + "target": "basemodel" + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "main/app/wallet/summary.py", + "source_location": "L17", + "weight": 1.0, + "confidence_score": 1.0, + "source": "wallet_summary_targetupsert", + "target": "basemodel" + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "main/app/wallet/summary.py", + "source_location": "L24", + "weight": 1.0, + "confidence_score": 1.0, + "source": "wallet_summary_ratingupsert", + "target": "basemodel" + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L17", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_wallet_controller_walletcreate", + "target": "basemodel" + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L160", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_wallet_controller_earningssync", + "target": "basemodel" + }, { "relation": "inherits", "confidence": "EXTRACTED", @@ -67179,6 +70547,86 @@ "source": "utils_errors_errorresponse", "target": "basemodel" }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L44", + "weight": 1.0, + "confidence_score": 1.0, + "source": "wallet_wallet_service_entrycreate", + "target": "basemodel" + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L55", + "weight": 1.0, + "confidence_score": 1.0, + "source": "wallet_wallet_service_entryupdate", + "target": "basemodel" + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L306", + "weight": 1.0, + "confidence_score": 1.0, + "source": "wallet_wallet_service_targetupsert", + "target": "basemodel" + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L313", + "weight": 1.0, + "confidence_score": 1.0, + "source": "wallet_wallet_service_ratingupsert", + "target": "basemodel" + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "main/service/wallet_service.py", + "source_location": "L26", + "weight": 1.0, + "confidence_score": 1.0, + "source": "service_wallet_service_entrycreate", + "target": "basemodel" + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "main/service/wallet_service.py", + "source_location": "L37", + "weight": 1.0, + "confidence_score": 1.0, + "source": "service_wallet_service_entryupdate", + "target": "basemodel" + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "main/service/wallet_service.py", + "source_location": "L293", + "weight": 1.0, + "confidence_score": 1.0, + "source": "service_wallet_service_targetupsert", + "target": "basemodel" + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "main/service/wallet_service.py", + "source_location": "L300", + "weight": 1.0, + "confidence_score": 1.0, + "source": "service_wallet_service_ratingupsert", + "target": "basemodel" + }, { "relation": "inherits", "confidence": "EXTRACTED", @@ -67769,10 +71217,10 @@ "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/orunmila/tools.py", - "source_location": "L169", + "source_file": "main/app/orunmila/tools/sandbox.py", + "source_location": "L87", "weight": 1.0, - "source": "orunmila_tools_serve_file", + "source": "tools_sandbox_serve_file", "target": "orunmila_sandbox_hostpath" }, { @@ -67786,6 +71234,17 @@ "source": "controller_orunmila_controller_downloadworkspacefile", "target": "orunmila_sandbox_hostpath" }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "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": "calls", "context": "call", @@ -68113,167 +71572,6 @@ "source": "orunmila_stream_bus_streambus_streamresponse", "target": "orunmila_stream_bus_streambus_eventgenerator" }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/orunmila/tools.py", - "source_location": "L20", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_orunmila_tools_py", - "target": "orunmila_tools_search_memory" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/orunmila/tools.py", - "source_location": "L51", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_orunmila_tools_py", - "target": "orunmila_tools_save_memory" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/orunmila/tools.py", - "source_location": "L93", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_orunmila_tools_py", - "target": "orunmila_tools_execute_code" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/orunmila/tools.py", - "source_location": "L114", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_orunmila_tools_py", - "target": "orunmila_tools_read_file" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/orunmila/tools.py", - "source_location": "L128", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_orunmila_tools_py", - "target": "orunmila_tools_write_file" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/orunmila/tools.py", - "source_location": "L144", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_orunmila_tools_py", - "target": "orunmila_tools_list_files" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/orunmila/tools.py", - "source_location": "L157", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_orunmila_tools_py", - "target": "orunmila_tools_serve_file" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/orunmila/tools.py", - "source_location": "L190", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_orunmila_tools_py", - "target": "orunmila_tools_dispatchtoolcall" - }, - { - "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": "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": "main/app/orunmila/tools.py", - "source_location": "L70", - "weight": 1.0, - "source": "orunmila_tools_save_memory", - "target": "orunmila_vector_embed" - }, - { - "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": "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": "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": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/orunmila/tools.py", - "source_location": "L145", - "weight": 1.0, - "confidence_score": 1.0, - "source": "orunmila_tools_rationale_145", - "target": "orunmila_tools_list_files" - }, - { - "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": "contains", "confidence": "EXTRACTED", @@ -68376,6 +71674,876 @@ "source": "orunmila_vector_embed", "target": "models_loader_getembeddingmodel" }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools/memory.py", + "source_location": "L47", + "weight": 1.0, + "source": "tools_memory_save_memory", + "target": "orunmila_vector_embed" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools.py", + "source_location": "L70", + "weight": 1.0, + "source": "orunmila_tools_save_memory", + "target": "orunmila_vector_embed" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/context.py", + "source_location": "L7", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_tools_context_py", + "target": "tools_context_popauthsession" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/context.py", + "source_location": "L24", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_tools_context_py", + "target": "tools_context_closeownsession" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/context.py", + "source_location": "L8", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tools_context_rationale_8", + "target": "tools_context_popauthsession" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools/memory.py", + "source_location": "L16", + "weight": 1.0, + "source": "tools_memory_search_memory", + "target": "tools_context_popauthsession" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools/memory.py", + "source_location": "L42", + "weight": 1.0, + "source": "tools_memory_save_memory", + "target": "tools_context_popauthsession" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L35", + "weight": 1.0, + "source": "tools_wallet_wallet_positions", + "target": "tools_context_popauthsession" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L60", + "weight": 1.0, + "source": "tools_wallet_wallet_summary", + "target": "tools_context_popauthsession" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L86", + "weight": 1.0, + "source": "tools_wallet_wallet_allocation", + "target": "tools_context_popauthsession" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L113", + "weight": 1.0, + "source": "tools_wallet_list_wallet_earnings", + "target": "tools_context_popauthsession" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L161", + "weight": 1.0, + "source": "tools_wallet_wallet_performance", + "target": "tools_context_popauthsession" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L195", + "weight": 1.0, + "source": "tools_wallet_wallet_rebalance", + "target": "tools_context_popauthsession" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L35", + "weight": 1.0, + "source": "tools_wallet_get_wallet_positions", + "target": "tools_context_popauthsession" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L60", + "weight": 1.0, + "source": "tools_wallet_get_wallet_summary", + "target": "tools_context_popauthsession" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L86", + "weight": 1.0, + "source": "tools_wallet_get_wallet_allocation", + "target": "tools_context_popauthsession" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L161", + "weight": 1.0, + "source": "tools_wallet_get_wallet_performance", + "target": "tools_context_popauthsession" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L195", + "weight": 1.0, + "source": "tools_wallet_get_wallet_rebalance", + "target": "tools_context_popauthsession" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools/memory.py", + "source_location": "L29", + "weight": 1.0, + "source": "tools_memory_search_memory", + "target": "tools_context_closeownsession" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools/memory.py", + "source_location": "L62", + "weight": 1.0, + "source": "tools_memory_save_memory", + "target": "tools_context_closeownsession" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L49", + "weight": 1.0, + "source": "tools_wallet_wallet_positions", + "target": "tools_context_closeownsession" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L74", + "weight": 1.0, + "source": "tools_wallet_wallet_summary", + "target": "tools_context_closeownsession" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L101", + "weight": 1.0, + "source": "tools_wallet_wallet_allocation", + "target": "tools_context_closeownsession" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L145", + "weight": 1.0, + "source": "tools_wallet_list_wallet_earnings", + "target": "tools_context_closeownsession" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L184", + "weight": 1.0, + "source": "tools_wallet_wallet_performance", + "target": "tools_context_closeownsession" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L209", + "weight": 1.0, + "source": "tools_wallet_wallet_rebalance", + "target": "tools_context_closeownsession" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L49", + "weight": 1.0, + "source": "tools_wallet_get_wallet_positions", + "target": "tools_context_closeownsession" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L74", + "weight": 1.0, + "source": "tools_wallet_get_wallet_summary", + "target": "tools_context_closeownsession" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L101", + "weight": 1.0, + "source": "tools_wallet_get_wallet_allocation", + "target": "tools_context_closeownsession" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L184", + "weight": 1.0, + "source": "tools_wallet_get_wallet_performance", + "target": "tools_context_closeownsession" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L209", + "weight": 1.0, + "source": "tools_wallet_get_wallet_rebalance", + "target": "tools_context_closeownsession" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/memory.py", + "source_location": "L7", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_tools_memory_py", + "target": "tools_memory_search_memory" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/memory.py", + "source_location": "L32", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_tools_memory_py", + "target": "tools_memory_save_memory" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/memory.py", + "source_location": "L9", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tools_memory_rationale_9", + "target": "tools_memory_search_memory" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/memory.py", + "source_location": "L8", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tools_memory_rationale_8", + "target": "tools_memory_search_memory" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/memory.py", + "source_location": "L34", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tools_memory_rationale_34", + "target": "tools_memory_save_memory" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/memory.py", + "source_location": "L33", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tools_memory_rationale_33", + "target": "tools_memory_save_memory" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/sandbox.py", + "source_location": "L11", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_tools_sandbox_py", + "target": "tools_sandbox_execute_code" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/sandbox.py", + "source_location": "L32", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_tools_sandbox_py", + "target": "tools_sandbox_read_file" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/sandbox.py", + "source_location": "L46", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_tools_sandbox_py", + "target": "tools_sandbox_write_file" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/sandbox.py", + "source_location": "L62", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_tools_sandbox_py", + "target": "tools_sandbox_list_files" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/sandbox.py", + "source_location": "L75", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_tools_sandbox_py", + "target": "tools_sandbox_serve_file" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/sandbox.py", + "source_location": "L12", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tools_sandbox_rationale_12", + "target": "tools_sandbox_execute_code" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/sandbox.py", + "source_location": "L33", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tools_sandbox_rationale_33", + "target": "tools_sandbox_read_file" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/sandbox.py", + "source_location": "L47", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tools_sandbox_rationale_47", + "target": "tools_sandbox_write_file" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/sandbox.py", + "source_location": "L63", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tools_sandbox_rationale_63", + "target": "tools_sandbox_list_files" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/sandbox.py", + "source_location": "L76", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tools_sandbox_rationale_76", + "target": "tools_sandbox_serve_file" + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L4", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_tools_wallet_py", + "target": "fastapi" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L15", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_tools_wallet_py", + "target": "tools_wallet_ensureownership" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L27", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_tools_wallet_py", + "target": "tools_wallet_wallet_positions" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L52", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_tools_wallet_py", + "target": "tools_wallet_wallet_summary" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L77", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_tools_wallet_py", + "target": "tools_wallet_wallet_allocation" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L104", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_tools_wallet_py", + "target": "tools_wallet_list_wallet_earnings" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L148", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_tools_wallet_py", + "target": "tools_wallet_wallet_performance" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L187", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_tools_wallet_py", + "target": "tools_wallet_wallet_rebalance" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L27", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_tools_wallet_py", + "target": "tools_wallet_get_wallet_positions" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L52", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_tools_wallet_py", + "target": "tools_wallet_get_wallet_summary" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L77", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_tools_wallet_py", + "target": "tools_wallet_get_wallet_allocation" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L148", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_tools_wallet_py", + "target": "tools_wallet_get_wallet_performance" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L187", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_tools_wallet_py", + "target": "tools_wallet_get_wallet_rebalance" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L40", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tools_wallet_wallet_positions", + "target": "tools_wallet_ensureownership" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L65", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tools_wallet_wallet_summary", + "target": "tools_wallet_ensureownership" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L91", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tools_wallet_wallet_allocation", + "target": "tools_wallet_ensureownership" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L118", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tools_wallet_list_wallet_earnings", + "target": "tools_wallet_ensureownership" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L172", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tools_wallet_wallet_performance", + "target": "tools_wallet_ensureownership" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L200", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tools_wallet_wallet_rebalance", + "target": "tools_wallet_ensureownership" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L40", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tools_wallet_get_wallet_positions", + "target": "tools_wallet_ensureownership" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L65", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tools_wallet_get_wallet_summary", + "target": "tools_wallet_ensureownership" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L91", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tools_wallet_get_wallet_allocation", + "target": "tools_wallet_ensureownership" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L172", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tools_wallet_get_wallet_performance", + "target": "tools_wallet_ensureownership" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L200", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tools_wallet_get_wallet_rebalance", + "target": "tools_wallet_ensureownership" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L28", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tools_wallet_rationale_28", + "target": "tools_wallet_wallet_positions" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L53", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tools_wallet_rationale_53", + "target": "tools_wallet_wallet_summary" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L78", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tools_wallet_rationale_78", + "target": "tools_wallet_wallet_allocation" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L105", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tools_wallet_rationale_105", + "target": "tools_wallet_list_wallet_earnings" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L149", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tools_wallet_rationale_149", + "target": "tools_wallet_wallet_performance" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L151", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tools_wallet_rationale_151", + "target": "tools_wallet_wallet_performance" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L186", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tools_wallet_rationale_186", + "target": "tools_wallet_wallet_rebalance" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L188", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tools_wallet_rationale_188", + "target": "tools_wallet_wallet_rebalance" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L28", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tools_wallet_rationale_28", + "target": "tools_wallet_get_wallet_positions" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L53", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tools_wallet_rationale_53", + "target": "tools_wallet_get_wallet_summary" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L78", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tools_wallet_rationale_78", + "target": "tools_wallet_get_wallet_allocation" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools/__init__.py", + "source_location": "L39", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_tools_init_py", + "target": "tools_init_dispatchtoolcall" + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -72706,12739 +76874,18900 @@ "target": "user_user_hasrole" }, { - "relation": "imports_from", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L6", + "source_file": "main/app/wallet/earnings.py", + "source_location": "L24", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_authentication_controller_py", - "target": "fastapi" + "source": "main_app_wallet_earnings_py", + "target": "wallet_earnings_earningsmanager" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L20", + "source_file": "main/app/wallet/earnings.py", + "source_location": "L24", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_authentication_controller_py", - "target": "controller_authentication_controller_issecurescheme" + "source": "main_app_wallet_earnings_py", + "target": "wallet_earnings_syncearnings" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L44", + "source_file": "main/app/wallet/earnings.py", + "source_location": "L104", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_authentication_controller_py", - "target": "controller_authentication_controller_resolvecookiedomain" + "source": "main_app_wallet_earnings_py", + "target": "wallet_earnings_listearnings" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/earnings.py", + "source_location": "L7", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_earnings_earningsmanager", + "target": "wallet_entries_entriesmanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/earnings.py", + "source_location": "L8", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_earnings_earningsmanager", + "target": "wallet_market_data_marketdatamanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/earnings.py", + "source_location": "L9", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_earnings_earningsmanager", + "target": "wallet_wallets_walletsmanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/earnings.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_earnings_earningsmanager", + "target": "models_wallet_earning" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/earnings.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_earnings_earningsmanager", + "target": "models_wallet_holding" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/earnings.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_earnings_earningsmanager", + "target": "models_wallet_transaction" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "controller_wallet_controller_walletcreate", + "target": "wallet_earnings_earningsmanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "controller_wallet_controller_earningssync", + "target": "wallet_earnings_earningsmanager" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/earnings.py", + "source_location": "L80", + "weight": 1.0, + "source": "wallet_earnings_syncearnings", + "target": "models_wallet_earning" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/earnings.py", + "source_location": "L25", + "weight": 1.0, + "source": "wallet_earnings_syncearnings", + "target": "wallet_wallets_getwallet" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/earnings.py", + "source_location": "L45", + "weight": 1.0, + "source": "wallet_earnings_syncearnings", + "target": "wallet_market_data_fetchmarketdividends" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/earnings.py", + "source_location": "L61", + "weight": 1.0, + "source": "wallet_earnings_syncearnings", + "target": "wallet_entries_positionatdate" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/earnings.py", + "source_location": "L25", + "weight": 1.0, + "source": "wallet_earnings_syncearnings", + "target": "wallet_wallets_getownedwallet" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools.py", + "source_location": "L333", + "weight": 1.0, + "source": "orunmila_tools_list_wallet_earnings", + "target": "wallet_earnings_listearnings" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/earnings.py", + "source_location": "L108", + "weight": 1.0, + "source": "wallet_earnings_listearnings", + "target": "wallet_wallets_getwallet" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools.py", + "source_location": "L224", + "weight": 1.0, + "source": "orunmila_tools_narrate_positions", + "target": "wallet_earnings_listearnings" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/earnings.py", + "source_location": "L105", + "weight": 1.0, + "source": "wallet_earnings_listearnings", + "target": "wallet_wallets_getownedwallet" + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "main/app/wallet/entries.py", + "source_location": "L5", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_wallet_entries_py", + "target": "fastapi" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L32", + "source_file": "main/app/wallet/entries.py", + "source_location": "L15", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_authentication_controller_py", - "target": "controller_authentication_controller_issuesessioncookie" + "source": "main_app_wallet_entries_py", + "target": "wallet_entries_entrycreate" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L24", + "source_file": "main/app/wallet/entries.py", + "source_location": "L26", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_authentication_controller_py", - "target": "controller_authentication_controller_health" + "source": "main_app_wallet_entries_py", + "target": "wallet_entries_entryupdate" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L29", + "source_file": "main/app/wallet/entries.py", + "source_location": "L33", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_authentication_controller_py", - "target": "controller_authentication_controller_register" + "source": "main_app_wallet_entries_py", + "target": "wallet_entries_entriesmanager" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L71", + "source_file": "main/app/wallet/entries.py", + "source_location": "L33", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_authentication_controller_py", - "target": "controller_authentication_controller_login" + "source": "main_app_wallet_entries_py", + "target": "wallet_entries_applyentries" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L100", + "source_file": "main/app/wallet/entries.py", + "source_location": "L52", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_authentication_controller_py", - "target": "controller_authentication_controller_logout" + "source": "main_app_wallet_entries_py", + "target": "wallet_entries_recalcholding" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L253", + "source_file": "main/app/wallet/entries.py", + "source_location": "L81", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_authentication_controller_py", - "target": "controller_authentication_controller_introspect" + "source": "main_app_wallet_entries_py", + "target": "wallet_entries_addentry" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L131", + "source_file": "main/app/wallet/entries.py", + "source_location": "L113", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_authentication_controller_py", - "target": "controller_authentication_controller_googlelogin" + "source": "main_app_wallet_entries_py", + "target": "wallet_entries_listentries" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L146", + "source_file": "main/app/wallet/entries.py", + "source_location": "L128", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_authentication_controller_py", - "target": "controller_authentication_controller_googlecallback" + "source": "main_app_wallet_entries_py", + "target": "wallet_entries_updateentry" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L245", + "source_file": "main/app/wallet/entries.py", + "source_location": "L158", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_authentication_controller_py", - "target": "controller_authentication_controller_requireservicetoken" + "source": "main_app_wallet_entries_py", + "target": "wallet_entries_deleteentry" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L277", + "source_file": "main/app/wallet/entries.py", + "source_location": "L183", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_authentication_controller_py", - "target": "controller_authentication_controller_verifyservicekey" + "source": "main_app_wallet_entries_py", + "target": "wallet_entries_positionatdate" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/entries.py", + "source_location": "L71", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_entries_entrycreate", + "target": "wallet_positions_positionsmanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/entries.py", + "source_location": "L9", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_entries_entrycreate", + "target": "wallet_wallets_walletsmanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/entries.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_entries_entrycreate", + "target": "models_wallet_holding" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/entries.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_entries_entrycreate", + "target": "models_wallet_transaction" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "controller_wallet_controller_walletcreate", + "target": "wallet_entries_entrycreate" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "controller_wallet_controller_earningssync", + "target": "wallet_entries_entrycreate" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/entries.py", + "source_location": "L71", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_entries_entryupdate", + "target": "wallet_positions_positionsmanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/entries.py", + "source_location": "L9", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_entries_entryupdate", + "target": "wallet_wallets_walletsmanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/entries.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_entries_entryupdate", + "target": "models_wallet_holding" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/entries.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_entries_entryupdate", + "target": "models_wallet_transaction" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "controller_wallet_controller_walletcreate", + "target": "wallet_entries_entryupdate" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "controller_wallet_controller_earningssync", + "target": "wallet_entries_entryupdate" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/entries.py", + "source_location": "L71", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_entries_entriesmanager", + "target": "wallet_positions_positionsmanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/entries.py", + "source_location": "L9", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_entries_entriesmanager", + "target": "wallet_wallets_walletsmanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/entries.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_entries_entriesmanager", + "target": "models_wallet_holding" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/entries.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_entries_entriesmanager", + "target": "models_wallet_transaction" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/performance.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_performance_performancemanager", + "target": "wallet_entries_entriesmanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L13", + "weight": 0.8, + "confidence_score": 0.5, + "source": "controller_wallet_controller_walletcreate", + "target": "wallet_entries_entriesmanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L13", + "weight": 0.8, + "confidence_score": 0.5, + "source": "controller_wallet_controller_earningssync", + "target": "wallet_entries_entriesmanager" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L39", + "source_file": "main/app/wallet/entries.py", + "source_location": "L67", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_authentication_controller_issecurescheme", - "target": "controller_authentication_controller_issuesessioncookie" + "source": "wallet_entries_recalcholding", + "target": "wallet_entries_applyentries" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L123", + "source_file": "main/app/wallet/entries.py", + "source_location": "L185", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_authentication_controller_issecurescheme", - "target": "controller_authentication_controller_logout" + "source": "wallet_entries_positionatdate", + "target": "wallet_entries_applyentries" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L114", + "source_file": "main/app/wallet/performance.py", + "source_location": "L61", "weight": 1.0, - "source": "controller_authentication_controller_issecurescheme", - "target": "tests_test_controllers_coverage_testissecurescheme_test_is_secure_https" + "source": "wallet_performance_cachedperformance", + "target": "wallet_entries_applyentries" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L121", + "confidence": "EXTRACTED", + "source_file": "main/app/wallet/entries.py", + "source_location": "L102", "weight": 1.0, - "source": "controller_authentication_controller_issecurescheme", - "target": "tests_test_controllers_coverage_testissecurescheme_test_is_secure_http" + "confidence_score": 1.0, + "source": "wallet_entries_addentry", + "target": "wallet_entries_recalcholding" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L128", + "confidence": "EXTRACTED", + "source_file": "main/app/wallet/entries.py", + "source_location": "L144", "weight": 1.0, - "source": "controller_authentication_controller_issecurescheme", - "target": "tests_test_controllers_coverage_testissecurescheme_test_is_secure_no_scheme" + "confidence_score": 1.0, + "source": "wallet_entries_updateentry", + "target": "wallet_entries_recalcholding" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L49", + "source_file": "main/app/wallet/entries.py", + "source_location": "L173", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_authentication_controller_issecurescheme", - "target": "controller_authentication_controller_register" + "source": "wallet_entries_deleteentry", + "target": "wallet_entries_recalcholding" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L87", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/entries.py", + "source_location": "L69", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_authentication_controller_issecurescheme", - "target": "controller_authentication_controller_login" + "source": "wallet_entries_recalcholding", + "target": "models_wallet_holding" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L176", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/entries.py", + "source_location": "L88", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_authentication_controller_issecurescheme", - "target": "controller_authentication_controller_googlecallback" + "source": "wallet_entries_addentry", + "target": "models_wallet_transaction" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L58", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/entries.py", + "source_location": "L82", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_authentication_controller_issuesessioncookie", - "target": "controller_authentication_controller_resolvecookiedomain" + "source": "wallet_entries_addentry", + "target": "wallet_wallets_getwallet" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L160", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/entries.py", + "source_location": "L82", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_authentication_controller_logout", - "target": "controller_authentication_controller_resolvecookiedomain" + "source": "wallet_entries_addentry", + "target": "wallet_wallets_getownedwallet" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L81", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/entries.py", + "source_location": "L116", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_authentication_controller_issuesessioncookie", - "target": "controller_authentication_controller_register" + "source": "wallet_entries_listentries", + "target": "wallet_wallets_getwallet" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L107", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/entries.py", + "source_location": "L116", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_authentication_controller_issuesessioncookie", - "target": "controller_authentication_controller_login" + "source": "wallet_entries_listentries", + "target": "wallet_wallets_getownedwallet" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L186", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/entries.py", + "source_location": "L134", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_authentication_controller_issuesessioncookie", - "target": "controller_authentication_controller_googlecallback" + "source": "wallet_entries_updateentry", + "target": "wallet_wallets_getwallet" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L257", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/entries.py", + "source_location": "L134", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_authentication_controller_introspect", - "target": "controller_authentication_controller_requireservicetoken" + "source": "wallet_entries_updateentry", + "target": "wallet_wallets_getownedwallet" }, { - "relation": "imports_from", - "context": "import", - "confidence": "EXTRACTED", - "source_file": "main/controller/orunmila_controller.py", - "source_location": "L5", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/entries.py", + "source_location": "L164", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_controller_orunmila_controller_py", - "target": "fastapi" + "source": "wallet_entries_deleteentry", + "target": "wallet_wallets_getwallet" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/controller/orunmila_controller.py", - "source_location": "L26", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/entries.py", + "source_location": "L164", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_controller_orunmila_controller_py", - "target": "controller_orunmila_controller_verifysessionownsership" + "source": "wallet_entries_deleteentry", + "target": "wallet_wallets_getownedwallet" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/orunmila_controller.py", - "source_location": "L32", + "source_file": "main/app/wallet/market_data.py", + "source_location": "L14", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_orunmila_controller_py", - "target": "controller_orunmila_controller_health" + "source": "main_app_wallet_market_data_py", + "target": "wallet_market_data_marketdatamanager" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/orunmila_controller.py", - "source_location": "L37", + "source_file": "main/app/wallet/market_data.py", + "source_location": "L25", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_orunmila_controller_py", - "target": "controller_orunmila_controller_getsessions" + "source": "main_app_wallet_market_data_py", + "target": "wallet_market_data_fetchliveprices" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/orunmila_controller.py", - "source_location": "L56", + "source_file": "main/app/wallet/market_data.py", + "source_location": "L70", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_orunmila_controller_py", - "target": "controller_orunmila_controller_updatesessiontitle" + "source": "main_app_wallet_market_data_py", + "target": "wallet_market_data_fetchmarketdividends" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/orunmila_controller.py", - "source_location": "L71", + "source_file": "main/app/wallet/market_data.py", + "source_location": "L88", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_orunmila_controller_py", - "target": "controller_orunmila_controller_gethistory" + "source": "main_app_wallet_market_data_py", + "target": "wallet_market_data_fetchpadraocloses" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/orunmila_controller.py", - "source_location": "L90", + "source_file": "main/app/wallet/market_data.py", + "source_location": "L50", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_orunmila_controller_py", - "target": "controller_orunmila_controller_deletesession" + "source": "main_app_wallet_market_data_py", + "target": "wallet_market_data_fetchcachedclose" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/orunmila_controller.py", - "source_location": "L103", + "source_file": "main/app/wallet/market_data.py", + "source_location": "L16", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_orunmila_controller_py", - "target": "controller_orunmila_controller_chat_stream" + "source": "main_app_wallet_market_data_py", + "target": "wallet_market_data_stocksapibase" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/orunmila_controller.py", - "source_location": "L154", + "source_file": "main/app/wallet/market_data.py", + "source_location": "L20", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_orunmila_controller_py", - "target": "controller_orunmila_controller_resumechatstream" + "source": "main_app_wallet_market_data_py", + "target": "wallet_market_data_stocksapiheaders" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/controller/orunmila_controller.py", - "source_location": "L166", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/performance.py", + "source_location": "L11", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_performance_performancemanager", + "target": "wallet_market_data_marketdatamanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/positions.py", + "source_location": "L9", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_positions_positionsmanager", + "target": "wallet_market_data_marketdatamanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/summary.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_summary_targetupsert", + "target": "wallet_market_data_marketdatamanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/summary.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_summary_ratingupsert", + "target": "wallet_market_data_marketdatamanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/summary.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_summary_summarymanager", + "target": "wallet_market_data_marketdatamanager" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/positions.py", + "source_location": "L61", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_controller_orunmila_controller_py", - "target": "controller_orunmila_controller_deleteworkspacefile" + "source": "wallet_positions_pricepass", + "target": "wallet_market_data_fetchliveprices" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/controller/orunmila_controller.py", - "source_location": "L179", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/summary.py", + "source_location": "L35", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_controller_orunmila_controller_py", - "target": "controller_orunmila_controller_downloadworkspacefile" + "source": "wallet_summary_getsummary", + "target": "wallet_market_data_fetchliveprices" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/controller/orunmila_controller.py", - "source_location": "L195", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/summary.py", + "source_location": "L93", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_controller_orunmila_controller_py", - "target": "controller_orunmila_controller_listworkspacefiles" + "source": "wallet_summary_getallocation", + "target": "wallet_market_data_fetchliveprices" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/positions.py", + "source_location": "L84", + "weight": 1.0, + "source": "wallet_positions_getpositions", + "target": "wallet_market_data_fetchliveprices" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/controller/orunmila_controller.py", - "source_location": "L62", + "source_file": "main/app/wallet/market_data.py", + "source_location": "L73", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_orunmila_controller_updatesessiontitle", - "target": "controller_orunmila_controller_verifysessionownsership" + "source": "wallet_market_data_fetchmarketdividends", + "target": "wallet_market_data_stocksapibase" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/controller/orunmila_controller.py", - "source_location": "L76", + "source_file": "main/app/wallet/market_data.py", + "source_location": "L75", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_orunmila_controller_gethistory", - "target": "controller_orunmila_controller_verifysessionownsership" + "source": "wallet_market_data_fetchmarketdividends", + "target": "wallet_market_data_stocksapiheaders" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/performance.py", + "source_location": "L47", + "weight": 1.0, + "source": "wallet_performance_cachedperformance", + "target": "wallet_market_data_fetchpadraocloses" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/controller/orunmila_controller.py", - "source_location": "L114", + "source_file": "main/app/wallet/market_data.py", + "source_location": "L91", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_orunmila_controller_chat_stream", - "target": "controller_orunmila_controller_verifysessionownsership" + "source": "wallet_market_data_fetchpadraocloses", + "target": "wallet_market_data_stocksapibase" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/controller/orunmila_controller.py", - "source_location": "L160", + "source_file": "main/app/wallet/market_data.py", + "source_location": "L93", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_orunmila_controller_resumechatstream", - "target": "controller_orunmila_controller_verifysessionownsership" + "source": "wallet_market_data_fetchpadraocloses", + "target": "wallet_market_data_stocksapiheaders" }, { - "relation": "imports_from", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L2", + "source_file": "main/app/wallet/performance.py", + "source_location": "L20", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_stocksapi_controller_py", - "target": "fastapi" + "source": "main_app_wallet_performance_py", + "target": "wallet_performance_performancemanager" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L16", + "source_file": "main/app/wallet/performance.py", + "source_location": "L21", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_stocksapi_controller_py", - "target": "controller_stocksapi_controller_health" + "source": "main_app_wallet_performance_py", + "target": "wallet_performance_cachedperformance" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L25", + "source_file": "main/app/wallet/performance.py", + "source_location": "L145", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_stocksapi_controller_py", - "target": "controller_stocksapi_controller_listfields" + "source": "main_app_wallet_performance_py", + "target": "wallet_performance_getperformance" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/performance.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_performance_performancemanager", + "target": "wallet_wallets_walletsmanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/performance.py", + "source_location": "L13", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_performance_performancemanager", + "target": "models_wallet_earning" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/performance.py", + "source_location": "L13", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_performance_performancemanager", + "target": "models_wallet_transaction" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L14", + "weight": 0.8, + "confidence_score": 0.5, + "source": "controller_wallet_controller_walletcreate", + "target": "wallet_performance_performancemanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L14", + "weight": 0.8, + "confidence_score": 0.5, + "source": "controller_wallet_controller_earningssync", + "target": "wallet_performance_performancemanager" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/wallet/performance.py", + "source_location": "L175", + "weight": 1.0, + "confidence_score": 1.0, + "source": "wallet_performance_getperformance", + "target": "wallet_performance_cachedperformance" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools.py", + "source_location": "L401", + "weight": 1.0, + "source": "orunmila_tools_get_wallet_performance", + "target": "wallet_performance_getperformance" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/performance.py", + "source_location": "L148", + "weight": 1.0, + "source": "wallet_performance_getperformance", + "target": "wallet_wallets_getwallet" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/performance.py", + "source_location": "L148", + "weight": 1.0, + "source": "wallet_performance_getperformance", + "target": "wallet_wallets_getownedwallet" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L24", + "source_file": "main/app/wallet/positions.py", + "source_location": "L16", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_stocksapi_controller_py", - "target": "controller_stocksapi_controller_gethistorical" + "source": "main_app_wallet_positions_py", + "target": "wallet_positions_positionsmanager" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L35", + "source_file": "main/app/wallet/positions.py", + "source_location": "L17", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_stocksapi_controller_py", - "target": "controller_stocksapi_controller_getfundamental" + "source": "main_app_wallet_positions_py", + "target": "wallet_positions_fetchxangoscores" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", + "source_file": "main/app/wallet/positions.py", "source_location": "L49", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_stocksapi_controller_py", - "target": "controller_stocksapi_controller_getcotations" + "source": "main_app_wallet_positions_py", + "target": "wallet_positions_weightof" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L60", + "source_file": "main/app/wallet/positions.py", + "source_location": "L53", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_stocksapi_controller_py", - "target": "controller_stocksapi_controller_getlivecotation" + "source": "main_app_wallet_positions_py", + "target": "wallet_positions_pricepass" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L23", + "source_file": "main/app/wallet/positions.py", + "source_location": "L75", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_stocksapi_controller_py", - "target": "controller_stocksapi_controller_jsonbytesresponse" + "source": "main_app_wallet_positions_py", + "target": "wallet_positions_rebalancedeltas" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L46", + "source_file": "main/app/wallet/positions.py", + "source_location": "L79", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_stocksapi_controller_py", - "target": "controller_stocksapi_controller_generatekey" + "source": "main_app_wallet_positions_py", + "target": "wallet_positions_getpositions" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L63", + "source_file": "main/app/wallet/positions.py", + "source_location": "L138", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_stocksapi_controller_py", - "target": "controller_stocksapi_controller_getrealtimecotation" + "source": "main_app_wallet_positions_py", + "target": "wallet_positions_getrebalance" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L20", + "source_file": "main/app/wallet/positions.py", + "source_location": "L29", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_stocksapi_controller_py", - "target": "controller_stocksapi_controller_apikeytest" + "source": "main_app_wallet_positions_py", + "target": "wallet_positions_scorebuyflag" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/positions.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_positions_positionsmanager", + "target": "wallet_wallets_walletsmanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/positions.py", + "source_location": "L11", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_positions_positionsmanager", + "target": "models_wallet_holding" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/positions.py", + "source_location": "L11", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_positions_positionsmanager", + "target": "models_wallet_target" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L15", + "weight": 0.8, + "confidence_score": 0.5, + "source": "controller_wallet_controller_walletcreate", + "target": "wallet_positions_positionsmanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L15", + "weight": 0.8, + "confidence_score": 0.5, + "source": "controller_wallet_controller_earningssync", + "target": "wallet_positions_positionsmanager" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L45", + "source_file": "main/app/wallet/positions.py", + "source_location": "L19", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_45", - "target": "controller_stocksapi_controller_listfields" + "source": "wallet_positions_rationale_19", + "target": "wallet_positions_fetchxangoscores" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L47", + "source_file": "main/app/wallet/positions.py", + "source_location": "L18", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_47", - "target": "controller_stocksapi_controller_listfields" + "source": "wallet_positions_rationale_18", + "target": "wallet_positions_fetchxangoscores" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L39", + "source_file": "main/app/wallet/positions.py", + "source_location": "L101", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_39", - "target": "controller_stocksapi_controller_listfields" + "source": "wallet_positions_getpositions", + "target": "wallet_positions_fetchxangoscores" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L36", + "source_file": "main/app/wallet/positions.py", + "source_location": "L21", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_36", - "target": "controller_stocksapi_controller_listfields" + "source": "wallet_positions_rationale_21", + "target": "wallet_positions_fetchxangoscores" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L40", + "source_file": "main/app/wallet/positions.py", + "source_location": "L79", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_40", - "target": "controller_stocksapi_controller_listfields" + "source": "wallet_positions_rebalancedeltas", + "target": "wallet_positions_weightof" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L48", + "source_file": "main/app/wallet/positions.py", + "source_location": "L141", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_48", - "target": "controller_stocksapi_controller_listfields" + "source": "wallet_positions_getrebalance", + "target": "wallet_positions_weightof" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L49", + "source_file": "main/app/wallet/positions.py", + "source_location": "L94", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_49", - "target": "controller_stocksapi_controller_listfields" + "source": "wallet_positions_getpositions", + "target": "wallet_positions_pricepass" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L30", + "source_file": "main/app/wallet/positions.py", + "source_location": "L139", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_30", - "target": "controller_stocksapi_controller_listfields" + "source": "wallet_positions_getrebalance", + "target": "wallet_positions_pricepass" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "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", + "source_file": "main/app/wallet/positions.py", + "source_location": "L64", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_27", - "target": "controller_stocksapi_controller_listfields" + "source": "wallet_positions_pricepass", + "target": "wallet_market_data_fetchcachedclose" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L26", + "source_file": "main/app/wallet/positions.py", + "source_location": "L57", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_listfields", - "target": "controller_stocksapi_controller_rationale_26" + "source": "wallet_positions_rationale_57", + "target": "wallet_positions_pricepass" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L102", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/positions.py", + "source_location": "L57", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_102", - "target": "controller_stocksapi_controller_gethistorical" + "source": "wallet_positions_pricepass", + "target": "wallet_wallets_getwallet" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L103", + "source_file": "main/app/wallet/positions.py", + "source_location": "L56", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_103", - "target": "controller_stocksapi_controller_gethistorical" + "source": "wallet_positions_rationale_56", + "target": "wallet_positions_pricepass" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", + "source_file": "main/app/wallet/positions.py", "source_location": "L95", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_95", - "target": "controller_stocksapi_controller_gethistorical" + "source": "wallet_positions_getpositions", + "target": "wallet_positions_rebalancedeltas" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L92", + "source_file": "main/app/wallet/positions.py", + "source_location": "L140", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_92", - "target": "controller_stocksapi_controller_gethistorical" + "source": "wallet_positions_getrebalance", + "target": "wallet_positions_rebalancedeltas" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L96", + "source_file": "main/app/wallet/positions.py", + "source_location": "L79", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_96", - "target": "controller_stocksapi_controller_gethistorical" + "source": "wallet_positions_rationale_79", + "target": "wallet_positions_rebalancedeltas" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L104", + "source_file": "main/app/wallet/positions.py", + "source_location": "L78", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_104", - "target": "controller_stocksapi_controller_gethistorical" + "source": "wallet_positions_rationale_78", + "target": "wallet_positions_rebalancedeltas" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L105", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools.py", + "source_location": "L213", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_105", - "target": "controller_stocksapi_controller_gethistorical" + "source": "orunmila_tools_get_wallet_positions", + "target": "wallet_positions_getpositions" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L85", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/positions.py", + "source_location": "L87", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_85", - "target": "controller_stocksapi_controller_gethistorical" + "source": "wallet_positions_getpositions", + "target": "wallet_market_data_fetchcachedclose" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L129", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L212", "weight": 1.0, - "source": "controller_stocksapi_controller_gethistorical", - "target": "stocks_api_compressor_compressresponse" + "source": "orunmila_tools_narrate_positions", + "target": "wallet_positions_getpositions" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L82", + "source_file": "main/app/wallet/positions.py", + "source_location": "L127", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_82", - "target": "controller_stocksapi_controller_gethistorical" + "source": "wallet_positions_getpositions", + "target": "wallet_positions_scorebuyflag" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L66", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/positions.py", + "source_location": "L80", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_stocksapi_controller_gethistorical", - "target": "controller_stocksapi_controller_rationale_66" + "source": "wallet_positions_getpositions", + "target": "wallet_wallets_getwallet" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L65", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/positions.py", + "source_location": "L80", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_stocksapi_controller_gethistorical", - "target": "controller_stocksapi_controller_rationale_65" + "source": "wallet_positions_getpositions", + "target": "wallet_wallets_getownedwallet" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L173", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools.py", + "source_location": "L443", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_173", - "target": "controller_stocksapi_controller_getfundamental" + "source": "orunmila_tools_get_wallet_rebalance", + "target": "wallet_positions_getrebalance" }, { - "relation": "rationale_for", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L167", + "source_file": "main/app/wallet/summary.py", + "source_location": "L6", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_167", - "target": "controller_stocksapi_controller_getfundamental" + "source": "main_app_wallet_summary_py", + "target": "fastapi" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L168", + "source_file": "main/app/wallet/summary.py", + "source_location": "L17", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_168", - "target": "controller_stocksapi_controller_getfundamental" + "source": "main_app_wallet_summary_py", + "target": "wallet_summary_targetupsert" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L160", + "source_file": "main/app/wallet/summary.py", + "source_location": "L24", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_160", - "target": "controller_stocksapi_controller_getfundamental" + "source": "main_app_wallet_summary_py", + "target": "wallet_summary_ratingupsert" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L157", + "source_file": "main/app/wallet/summary.py", + "source_location": "L30", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_157", - "target": "controller_stocksapi_controller_getfundamental" + "source": "main_app_wallet_summary_py", + "target": "wallet_summary_summarymanager" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L161", + "source_file": "main/app/wallet/summary.py", + "source_location": "L30", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_161", - "target": "controller_stocksapi_controller_getfundamental" + "source": "main_app_wallet_summary_py", + "target": "wallet_summary_getsummary" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L169", + "source_file": "main/app/wallet/summary.py", + "source_location": "L88", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_169", - "target": "controller_stocksapi_controller_getfundamental" + "source": "main_app_wallet_summary_py", + "target": "wallet_summary_getallocation" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L165", + "source_file": "main/app/wallet/summary.py", + "source_location": "L118", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_165", - "target": "controller_stocksapi_controller_getfundamental" + "source": "main_app_wallet_summary_py", + "target": "wallet_summary_upserttarget" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L155", + "source_file": "main/app/wallet/summary.py", + "source_location": "L147", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_155", - "target": "controller_stocksapi_controller_getfundamental" + "source": "main_app_wallet_summary_py", + "target": "wallet_summary_set_rating" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/summary.py", + "source_location": "L11", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_summary_targetupsert", + "target": "wallet_wallets_walletsmanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/summary.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_summary_targetupsert", + "target": "models_wallet_holding" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/summary.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_summary_targetupsert", + "target": "models_wallet_snapshot" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/summary.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_summary_targetupsert", + "target": "models_wallet_target" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L13", + "weight": 0.8, + "confidence_score": 0.5, + "source": "controller_wallet_controller_walletcreate", + "target": "wallet_summary_targetupsert" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L13", + "weight": 0.8, + "confidence_score": 0.5, + "source": "controller_wallet_controller_earningssync", + "target": "wallet_summary_targetupsert" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/summary.py", + "source_location": "L11", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_summary_ratingupsert", + "target": "wallet_wallets_walletsmanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/summary.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_summary_ratingupsert", + "target": "models_wallet_holding" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/summary.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_summary_ratingupsert", + "target": "models_wallet_snapshot" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/summary.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_summary_ratingupsert", + "target": "models_wallet_target" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L13", + "weight": 0.8, + "confidence_score": 0.5, + "source": "controller_wallet_controller_walletcreate", + "target": "wallet_summary_ratingupsert" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L13", + "weight": 0.8, + "confidence_score": 0.5, + "source": "controller_wallet_controller_earningssync", + "target": "wallet_summary_ratingupsert" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/summary.py", + "source_location": "L11", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_summary_summarymanager", + "target": "wallet_wallets_walletsmanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/summary.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_summary_summarymanager", + "target": "models_wallet_holding" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/summary.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_summary_summarymanager", + "target": "models_wallet_snapshot" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/summary.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_summary_summarymanager", + "target": "models_wallet_target" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L16", + "weight": 0.8, + "confidence_score": 0.5, + "source": "controller_wallet_controller_walletcreate", + "target": "wallet_summary_summarymanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L16", + "weight": 0.8, + "confidence_score": 0.5, + "source": "controller_wallet_controller_earningssync", + "target": "wallet_summary_summarymanager" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L196", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L252", "weight": 1.0, - "source": "controller_stocksapi_controller_getfundamental", - "target": "stocks_api_compressor_compressresponse" + "source": "orunmila_tools_get_wallet_summary", + "target": "wallet_summary_getsummary" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/summary.py", + "source_location": "L39", + "weight": 1.0, + "source": "wallet_summary_getsummary", + "target": "wallet_market_data_fetchcachedclose" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/summary.py", + "source_location": "L31", + "weight": 1.0, + "source": "wallet_summary_getsummary", + "target": "wallet_wallets_getwallet" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools.py", + "source_location": "L217", + "weight": 1.0, + "source": "orunmila_tools_narrate_positions", + "target": "wallet_summary_getsummary" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/summary.py", + "source_location": "L31", + "weight": 1.0, + "source": "wallet_summary_getsummary", + "target": "wallet_wallets_getownedwallet" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools.py", + "source_location": "L292", + "weight": 1.0, + "source": "orunmila_tools_get_wallet_allocation", + "target": "wallet_summary_getallocation" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/summary.py", + "source_location": "L96", + "weight": 1.0, + "source": "wallet_summary_getallocation", + "target": "wallet_market_data_fetchcachedclose" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/summary.py", + "source_location": "L89", + "weight": 1.0, + "source": "wallet_summary_getallocation", + "target": "wallet_wallets_getwallet" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/summary.py", + "source_location": "L89", + "weight": 1.0, + "source": "wallet_summary_getallocation", + "target": "wallet_wallets_getownedwallet" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/summary.py", + "source_location": "L131", + "weight": 1.0, + "source": "wallet_summary_upserttarget", + "target": "models_wallet_target" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/summary.py", + "source_location": "L119", + "weight": 1.0, + "source": "wallet_summary_upserttarget", + "target": "wallet_wallets_getwallet" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/summary.py", + "source_location": "L119", + "weight": 1.0, + "source": "wallet_summary_upserttarget", + "target": "wallet_wallets_getownedwallet" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/summary.py", + "source_location": "L148", + "weight": 1.0, + "source": "wallet_summary_set_rating", + "target": "wallet_wallets_getwallet" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/summary.py", + "source_location": "L148", + "weight": 1.0, + "source": "wallet_summary_set_rating", + "target": "wallet_wallets_getownedwallet" + }, + { + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L144", + "source_file": "main/app/wallet/wallets.py", + "source_location": "L3", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_144", - "target": "controller_stocksapi_controller_getfundamental" + "source": "main_app_wallet_wallets_py", + "target": "fastapi" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L124", + "source_file": "main/app/wallet/wallets.py", + "source_location": "L11", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_getfundamental", - "target": "controller_stocksapi_controller_rationale_124" + "source": "main_app_wallet_wallets_py", + "target": "wallet_wallets_walletsmanager" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L123", + "source_file": "main/app/wallet/wallets.py", + "source_location": "L11", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_getfundamental", - "target": "controller_stocksapi_controller_rationale_123" + "source": "main_app_wallet_wallets_py", + "target": "wallet_wallets_getwallet" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L247", + "source_file": "main/app/wallet/wallets.py", + "source_location": "L21", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_247", - "target": "controller_stocksapi_controller_getcotations" + "source": "main_app_wallet_wallets_py", + "target": "wallet_wallets_createwallet" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L235", + "source_file": "main/app/wallet/wallets.py", + "source_location": "L29", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_235", - "target": "controller_stocksapi_controller_getcotations" + "source": "main_app_wallet_wallets_py", + "target": "wallet_wallets_listwallets" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L236", + "source_file": "main/app/wallet/wallets.py", + "source_location": "L11", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_236", - "target": "controller_stocksapi_controller_getcotations" + "source": "main_app_wallet_wallets_py", + "target": "wallet_wallets_getownedwallet" }, { - "relation": "rationale_for", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/wallet/wallets.py", + "source_location": "L6", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_wallets_walletsmanager", + "target": "models_wallet_wallet" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L17", + "weight": 0.8, + "confidence_score": 0.5, + "source": "controller_wallet_controller_walletcreate", + "target": "wallet_wallets_walletsmanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L17", + "weight": 0.8, + "confidence_score": 0.5, + "source": "controller_wallet_controller_earningssync", + "target": "wallet_wallets_walletsmanager" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools.py", + "source_location": "L206", + "weight": 1.0, + "source": "orunmila_tools_get_wallet_positions", + "target": "wallet_wallets_getwallet" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools.py", + "source_location": "L245", + "weight": 1.0, + "source": "orunmila_tools_get_wallet_summary", + "target": "wallet_wallets_getwallet" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools.py", + "source_location": "L285", + "weight": 1.0, + "source": "orunmila_tools_get_wallet_allocation", + "target": "wallet_wallets_getwallet" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools.py", + "source_location": "L326", + "weight": 1.0, + "source": "orunmila_tools_list_wallet_earnings", + "target": "wallet_wallets_getwallet" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools.py", + "source_location": "L394", + "weight": 1.0, + "source": "orunmila_tools_get_wallet_performance", + "target": "wallet_wallets_getwallet" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools.py", + "source_location": "L436", + "weight": 1.0, + "source": "orunmila_tools_get_wallet_rebalance", + "target": "wallet_wallets_getwallet" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools.py", + "source_location": "L208", + "weight": 1.0, + "source": "orunmila_tools_narrate_positions", + "target": "wallet_wallets_getwallet" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/wallets.py", + "source_location": "L22", + "weight": 1.0, + "source": "wallet_wallets_createwallet", + "target": "models_wallet_wallet" + }, + { + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L228", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L6", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_228", - "target": "controller_stocksapi_controller_getcotations" + "source": "main_controller_authentication_controller_py", + "target": "fastapi" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L225", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L20", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_225", - "target": "controller_stocksapi_controller_getcotations" + "source": "main_controller_authentication_controller_py", + "target": "controller_authentication_controller_issecurescheme" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L229", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L44", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_229", - "target": "controller_stocksapi_controller_getcotations" + "source": "main_controller_authentication_controller_py", + "target": "controller_authentication_controller_resolvecookiedomain" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L237", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L32", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_237", - "target": "controller_stocksapi_controller_getcotations" + "source": "main_controller_authentication_controller_py", + "target": "controller_authentication_controller_issuesessioncookie" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L234", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L24", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_234", - "target": "controller_stocksapi_controller_getcotations" + "source": "main_controller_authentication_controller_py", + "target": "controller_authentication_controller_health" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L238", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L29", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_238", - "target": "controller_stocksapi_controller_getcotations" + "source": "main_controller_authentication_controller_py", + "target": "controller_authentication_controller_register" }, { - "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": "main/controller/authentication_controller.py", + "source_location": "L71", "weight": 1.0, - "source": "controller_stocksapi_controller_getcotations", - "target": "stocks_api_compressor_compressresponse" + "confidence_score": 1.0, + "source": "main_controller_authentication_controller_py", + "target": "controller_authentication_controller_login" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L209", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L100", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_209", - "target": "controller_stocksapi_controller_getcotations" + "source": "main_controller_authentication_controller_py", + "target": "controller_authentication_controller_logout" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L185", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L253", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_getcotations", - "target": "controller_stocksapi_controller_rationale_185" + "source": "main_controller_authentication_controller_py", + "target": "controller_authentication_controller_introspect" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L184", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L131", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_getcotations", - "target": "controller_stocksapi_controller_rationale_184" + "source": "main_controller_authentication_controller_py", + "target": "controller_authentication_controller_googlelogin" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L307", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L146", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_307", - "target": "controller_stocksapi_controller_getlivecotation" + "source": "main_controller_authentication_controller_py", + "target": "controller_authentication_controller_googlecallback" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L289", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L245", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_289", - "target": "controller_stocksapi_controller_getlivecotation" + "source": "main_controller_authentication_controller_py", + "target": "controller_authentication_controller_requireservicetoken" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L290", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L277", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_290", - "target": "controller_stocksapi_controller_getlivecotation" + "source": "main_controller_authentication_controller_py", + "target": "controller_authentication_controller_verifyservicekey" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L282", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L39", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_282", - "target": "controller_stocksapi_controller_getlivecotation" + "source": "controller_authentication_controller_issecurescheme", + "target": "controller_authentication_controller_issuesessioncookie" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L279", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L123", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_279", - "target": "controller_stocksapi_controller_getlivecotation" + "source": "controller_authentication_controller_issecurescheme", + "target": "controller_authentication_controller_logout" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L114", + "weight": 1.0, + "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_controllers_coverage.py", + "source_location": "L121", + "weight": 1.0, + "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_controllers_coverage.py", + "source_location": "L128", + "weight": 1.0, + "source": "controller_authentication_controller_issecurescheme", + "target": "tests_test_controllers_coverage_testissecurescheme_test_is_secure_no_scheme" + }, + { + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L283", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L49", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_283", - "target": "controller_stocksapi_controller_getlivecotation" + "source": "controller_authentication_controller_issecurescheme", + "target": "controller_authentication_controller_register" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L291", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L87", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_291", - "target": "controller_stocksapi_controller_getlivecotation" + "source": "controller_authentication_controller_issecurescheme", + "target": "controller_authentication_controller_login" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L288", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L176", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_288", - "target": "controller_stocksapi_controller_getlivecotation" + "source": "controller_authentication_controller_issecurescheme", + "target": "controller_authentication_controller_googlecallback" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L296", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L58", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_296", - "target": "controller_stocksapi_controller_getlivecotation" + "source": "controller_authentication_controller_issuesessioncookie", + "target": "controller_authentication_controller_resolvecookiedomain" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L286", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L160", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_286", - "target": "controller_stocksapi_controller_getlivecotation" + "source": "controller_authentication_controller_logout", + "target": "controller_authentication_controller_resolvecookiedomain" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L293", + "confidence": "EXTRACTED", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L81", "weight": 1.0, - "source": "controller_stocksapi_controller_getlivecotation", - "target": "stocks_api_compressor_compressresponse" + "confidence_score": 1.0, + "source": "controller_authentication_controller_issuesessioncookie", + "target": "controller_authentication_controller_register" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L261", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L107", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_261", - "target": "controller_stocksapi_controller_getlivecotation" + "source": "controller_authentication_controller_issuesessioncookie", + "target": "controller_authentication_controller_login" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L233", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L186", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_getlivecotation", - "target": "controller_stocksapi_controller_rationale_233" + "source": "controller_authentication_controller_issuesessioncookie", + "target": "controller_authentication_controller_googlecallback" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L232", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L257", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_getlivecotation", - "target": "controller_stocksapi_controller_rationale_232" + "source": "controller_authentication_controller_introspect", + "target": "controller_authentication_controller_requireservicetoken" }, { "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", - "source_file": "main/controller/user_controller.py", - "source_location": "L7", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L5", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_user_controller_py", + "source": "main_controller_orunmila_controller_py", "target": "fastapi" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/user_controller.py", - "source_location": "L16", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L26", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_user_controller_py", - "target": "controller_user_controller_sessiontodict" + "source": "main_controller_orunmila_controller_py", + "target": "controller_orunmila_controller_verifysessionownsership" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/user_controller.py", - "source_location": "L15", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L32", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_user_controller_py", - "target": "controller_user_controller_health" + "source": "main_controller_orunmila_controller_py", + "target": "controller_orunmila_controller_health" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/user_controller.py", - "source_location": "L19", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L37", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_user_controller_py", - "target": "controller_user_controller_getme" + "source": "main_controller_orunmila_controller_py", + "target": "controller_orunmila_controller_getsessions" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/user_controller.py", - "source_location": "L45", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L56", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_user_controller_py", - "target": "controller_user_controller_testadminaccess" + "source": "main_controller_orunmila_controller_py", + "target": "controller_orunmila_controller_updatesessiontitle" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/user_controller.py", - "source_location": "L52", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L71", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_user_controller_py", - "target": "controller_user_controller_getsessions" + "source": "main_controller_orunmila_controller_py", + "target": "controller_orunmila_controller_gethistory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/user_controller.py", - "source_location": "L94", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L90", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_user_controller_py", - "target": "controller_user_controller_getcurrentsession" + "source": "main_controller_orunmila_controller_py", + "target": "controller_orunmila_controller_deletesession" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/user_controller.py", - "source_location": "L115", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L103", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_user_controller_py", - "target": "controller_user_controller_revokesession" + "source": "main_controller_orunmila_controller_py", + "target": "controller_orunmila_controller_chat_stream" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/user_controller.py", - "source_location": "L135", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L154", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_user_controller_py", - "target": "controller_user_controller_revokeallsessions" + "source": "main_controller_orunmila_controller_py", + "target": "controller_orunmila_controller_resumechatstream" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/user_controller.py", - "source_location": "L23", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L166", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_user_controller_py", - "target": "controller_user_controller_upgradetodeveloperstarter" + "source": "main_controller_orunmila_controller_py", + "target": "controller_orunmila_controller_deleteworkspacefile" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/user_controller.py", - "source_location": "L34", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L179", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_user_controller_py", - "target": "controller_user_controller_upgradetodeveloperenterprise" + "source": "main_controller_orunmila_controller_py", + "target": "controller_orunmila_controller_downloadworkspacefile" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/user_controller.py", - "source_location": "L67", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L195", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_user_controller_getsessions", - "target": "controller_user_controller_sessiontodict" + "source": "main_controller_orunmila_controller_py", + "target": "controller_orunmila_controller_listworkspacefiles" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/controller/user_controller.py", - "source_location": "L87", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L62", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_user_controller_getcurrentsession", - "target": "controller_user_controller_sessiontodict" + "source": "controller_orunmila_controller_updatesessiontitle", + "target": "controller_orunmila_controller_verifysessionownsership" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/models/memory.py", - "source_location": "L8", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L76", "weight": 1.0, "confidence_score": 1.0, - "source": "main_models_memory_py", - "target": "models_memory_orunmilamemory" + "source": "controller_orunmila_controller_gethistory", + "target": "controller_orunmila_controller_verifysessionownsership" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/models/memory.py", - "source_location": "L7", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L114", "weight": 1.0, "confidence_score": 1.0, - "source": "main_models_memory_py", - "target": "models_memory_prometheusmemory" + "source": "controller_orunmila_controller_chat_stream", + "target": "controller_orunmila_controller_verifysessionownsership" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/models/memory.py", - "source_location": "L7", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L160", "weight": 1.0, "confidence_score": 1.0, - "source": "main_models_memory_py", - "target": "models_memory_usermemory" + "source": "controller_orunmila_controller_resumechatstream", + "target": "controller_orunmila_controller_verifysessionownsership" }, { - "relation": "inherits", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "main/models/memory.py", - "source_location": "L8", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L2", "weight": 1.0, "confidence_score": 1.0, - "source": "models_memory_orunmilamemory", - "target": "base" + "source": "main_controller_stocksapi_controller_py", + "target": "fastapi" }, { - "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": "contains", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L16", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_controller_stocksapi_controller_py", + "target": "controller_stocksapi_controller_health" }, { - "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": "contains", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L25", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_controller_stocksapi_controller_py", + "target": "controller_stocksapi_controller_listfields" }, { - "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": "contains", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L24", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_controller_stocksapi_controller_py", + "target": "controller_stocksapi_controller_gethistorical" }, { - "relation": "inherits", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/orunmila.py", - "source_location": "L7", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L35", "weight": 1.0, "confidence_score": 1.0, - "source": "models_orunmila_orunmilasession", - "target": "base" + "source": "main_controller_stocksapi_controller_py", + "target": "controller_stocksapi_controller_getfundamental" }, { - "relation": "inherits", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/sandbox.py", - "source_location": "L5", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L49", "weight": 1.0, "confidence_score": 1.0, - "source": "models_sandbox_orunmilasandbox", - "target": "base" + "source": "main_controller_stocksapi_controller_py", + "target": "controller_stocksapi_controller_getcotations" }, { - "relation": "inherits", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/stocksapi_key.py", - "source_location": "L7", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L60", "weight": 1.0, "confidence_score": 1.0, - "source": "base", - "target": "models_stocksapi_key_stocksapikey" + "source": "main_controller_stocksapi_controller_py", + "target": "controller_stocksapi_controller_getlivecotation" }, { - "relation": "inherits", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/user.py", - "source_location": "L5", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L23", "weight": 1.0, "confidence_score": 1.0, - "source": "base", - "target": "models_user_user" + "source": "main_controller_stocksapi_controller_py", + "target": "controller_stocksapi_controller_jsonbytesresponse" }, { - "relation": "inherits", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/user_session.py", - "source_location": "L5", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L46", "weight": 1.0, "confidence_score": 1.0, - "source": "base", - "target": "models_user_session_usersession" + "source": "main_controller_stocksapi_controller_py", + "target": "controller_stocksapi_controller_generatekey" }, { - "relation": "inherits", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/memory.py", - "source_location": "L7", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L63", "weight": 1.0, "confidence_score": 1.0, - "source": "models_memory_prometheusmemory", - "target": "base" + "source": "main_controller_stocksapi_controller_py", + "target": "controller_stocksapi_controller_getrealtimecotation" }, { - "relation": "inherits", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/prometheus.py", - "source_location": "L5", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L20", "weight": 1.0, "confidence_score": 1.0, - "source": "base", - "target": "models_prometheus_prometheussession" + "source": "main_controller_stocksapi_controller_py", + "target": "controller_stocksapi_controller_apikeytest" }, { - "relation": "inherits", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/models/sandbox.py", - "source_location": "L5", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L45", "weight": 1.0, "confidence_score": 1.0, - "source": "base", - "target": "models_sandbox_prometheussandbox" + "source": "controller_stocksapi_controller_rationale_45", + "target": "controller_stocksapi_controller_listfields" }, { - "relation": "inherits", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/models/memory.py", - "source_location": "L7", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L47", "weight": 1.0, "confidence_score": 1.0, - "source": "base", - "target": "models_memory_usermemory" + "source": "controller_stocksapi_controller_rationale_47", + "target": "controller_stocksapi_controller_listfields" }, { - "relation": "inherits", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/models/harness.py", - "source_location": "L7", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L39", "weight": 1.0, "confidence_score": 1.0, - "source": "base", - "target": "models_harness_loopevent" + "source": "controller_stocksapi_controller_rationale_39", + "target": "controller_stocksapi_controller_listfields" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/models/orunmila.py", - "source_location": "L7", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L36", "weight": 1.0, "confidence_score": 1.0, - "source": "main_models_orunmila_py", - "target": "models_orunmila_orunmilasession" + "source": "controller_stocksapi_controller_rationale_36", + "target": "controller_stocksapi_controller_listfields" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/models/orunmila.py", - "source_location": "L4", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_orunmila_orunmilasession", - "target": "models_user_user" + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L40", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_40", + "target": "controller_stocksapi_controller_listfields" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/models/sandbox.py", - "source_location": "L5", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L48", "weight": 1.0, "confidence_score": 1.0, - "source": "main_models_sandbox_py", - "target": "models_sandbox_orunmilasandbox" + "source": "controller_stocksapi_controller_rationale_48", + "target": "controller_stocksapi_controller_listfields" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/models/sandbox.py", - "source_location": "L5", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L49", "weight": 1.0, "confidence_score": 1.0, - "source": "main_models_sandbox_py", - "target": "models_sandbox_prometheussandbox" + "source": "controller_stocksapi_controller_rationale_49", + "target": "controller_stocksapi_controller_listfields" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/models/stocksapi_key.py", - "source_location": "L7", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L30", "weight": 1.0, "confidence_score": 1.0, - "source": "main_models_stocksapi_key_py", - "target": "models_stocksapi_key_stocksapikey" + "source": "controller_stocksapi_controller_rationale_30", + "target": "controller_stocksapi_controller_listfields" }, { - "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": "calls", - "context": "call", + "relation": "calls", + "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/stocks_api/key.py", - "source_location": "L58", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L66", "weight": 1.0, - "source": "stocks_api_key_createkey", - "target": "models_stocksapi_key_stocksapikey" + "source": "controller_stocksapi_controller_listfields", + "target": "stocks_api_compressor_getnest" }, { - "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": "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": "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": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L26", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_listfields", + "target": "controller_stocksapi_controller_rationale_26" }, { - "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": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L102", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_102", + "target": "controller_stocksapi_controller_gethistorical" }, { - "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": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L103", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_103", + "target": "controller_stocksapi_controller_gethistorical" }, { - "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": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L95", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_95", + "target": "controller_stocksapi_controller_gethistorical" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L43", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L92", "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": "controller_stocksapi_controller_rationale_92", + "target": "controller_stocksapi_controller_gethistorical" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L70", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L96", "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": "controller_stocksapi_controller_rationale_96", + "target": "controller_stocksapi_controller_gethistorical" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L111", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L104", "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": "controller_stocksapi_controller_rationale_104", + "target": "controller_stocksapi_controller_gethistorical" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L145", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L105", "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": "controller_stocksapi_controller_rationale_105", + "target": "controller_stocksapi_controller_gethistorical" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L181", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L85", "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": "controller_stocksapi_controller_rationale_85", + "target": "controller_stocksapi_controller_gethistorical" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L216", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L129", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_increment_from_zero" + "source": "controller_stocksapi_controller_gethistorical", + "target": "stocks_api_compressor_compressresponse" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L240", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L82", "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": "controller_stocksapi_controller_rationale_82", + "target": "controller_stocksapi_controller_gethistorical" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L255", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L66", "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": "controller_stocksapi_controller_gethistorical", + "target": "controller_stocksapi_controller_rationale_66" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L92", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L65", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_models_teststocksapikeymodel_test_create_api_key" + "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_models.py", - "source_location": "L101", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L173", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_models_teststocksapikeymodel_test_is_quota_exceeded_true" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_173", + "target": "controller_stocksapi_controller_getfundamental" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L107", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L167", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_models_teststocksapikeymodel_test_is_quota_exceeded_false" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_167", + "target": "controller_stocksapi_controller_getfundamental" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L113", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L168", "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": "controller_stocksapi_controller_rationale_168", + "target": "controller_stocksapi_controller_getfundamental" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L118", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L160", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_models_teststocksapikeymodel_test_needs_reset_true_expired" + "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_models.py", - "source_location": "L124", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L157", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_models_teststocksapikeymodel_test_needs_reset_false_recent" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_157", + "target": "controller_stocksapi_controller_getfundamental" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L130", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L161", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_models_teststocksapikeymodel_test_reset_quota" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_161", + "target": "controller_stocksapi_controller_getfundamental" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L138", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L169", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_models_teststocksapikeymodel_test_increment_usage" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_169", + "target": "controller_stocksapi_controller_getfundamental" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L144", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L165", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_models_teststocksapikeymodel_test_get_remaining_quota" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_165", + "target": "controller_stocksapi_controller_getfundamental" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L150", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L155", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_models_teststocksapikeymodel_test_get_remaining_quota_exceeded" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_155", + "target": "controller_stocksapi_controller_getfundamental" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L156", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L196", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_models_teststocksapikeymodel_test_toDict" + "source": "controller_stocksapi_controller_getfundamental", + "target": "stocks_api_compressor_compressresponse" }, { - "relation": "method", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/models/stocksapi_key.py", - "source_location": "L21", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L144", "weight": 1.0, "confidence_score": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "models_stocksapi_key_stocksapikey_isquotaexceeded" + "source": "controller_stocksapi_controller_rationale_144", + "target": "controller_stocksapi_controller_getfundamental" }, { - "relation": "method", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/models/stocksapi_key.py", - "source_location": "L24", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L124", "weight": 1.0, "confidence_score": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "models_stocksapi_key_stocksapikey_needsreset" + "source": "controller_stocksapi_controller_getfundamental", + "target": "controller_stocksapi_controller_rationale_124" }, { - "relation": "method", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/models/stocksapi_key.py", - "source_location": "L32", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L123", "weight": 1.0, "confidence_score": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "models_stocksapi_key_stocksapikey_resetquota" + "source": "controller_stocksapi_controller_getfundamental", + "target": "controller_stocksapi_controller_rationale_123" }, { - "relation": "method", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/models/stocksapi_key.py", - "source_location": "L36", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L247", "weight": 1.0, "confidence_score": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "models_stocksapi_key_stocksapikey_incrementusage" + "source": "controller_stocksapi_controller_rationale_247", + "target": "controller_stocksapi_controller_getcotations" }, { - "relation": "method", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/models/stocksapi_key.py", - "source_location": "L39", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L235", "weight": 1.0, "confidence_score": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "models_stocksapi_key_stocksapikey_getremainingquota" + "source": "controller_stocksapi_controller_rationale_235", + "target": "controller_stocksapi_controller_getcotations" }, { - "relation": "method", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/models/stocksapi_key.py", - "source_location": "L42", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L236", "weight": 1.0, "confidence_score": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "models_stocksapi_key_stocksapikey_todict" + "source": "controller_stocksapi_controller_rationale_236", + "target": "controller_stocksapi_controller_getcotations" }, { - "relation": "method", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/models/stocksapi_key.py", - "source_location": "L18", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L228", "weight": 1.0, "confidence_score": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "models_stocksapi_key_stocksapikey_repr" + "source": "controller_stocksapi_controller_rationale_228", + "target": "controller_stocksapi_controller_getcotations" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/models/types.py", - "source_location": "L5", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L225", "weight": 1.0, "confidence_score": 1.0, - "source": "main_models_types_py", - "target": "models_types_vectortype" + "source": "controller_stocksapi_controller_rationale_225", + "target": "controller_stocksapi_controller_getcotations" }, { - "relation": "inherits", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/models/types.py", - "source_location": "L5", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L229", "weight": 1.0, "confidence_score": 1.0, - "source": "models_types_vectortype", - "target": "typedecorator" + "source": "controller_stocksapi_controller_rationale_229", + "target": "controller_stocksapi_controller_getcotations" }, { - "relation": "method", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/models/types.py", - "source_location": "L9", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L237", "weight": 1.0, "confidence_score": 1.0, - "source": "models_types_vectortype", - "target": "models_types_vectortype_init" + "source": "controller_stocksapi_controller_rationale_237", + "target": "controller_stocksapi_controller_getcotations" }, { - "relation": "method", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/models/types.py", - "source_location": "L13", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L234", "weight": 1.0, "confidence_score": 1.0, - "source": "models_types_vectortype", - "target": "models_types_vectortype_process_bind_param" + "source": "controller_stocksapi_controller_rationale_234", + "target": "controller_stocksapi_controller_getcotations" }, { - "relation": "method", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/models/types.py", - "source_location": "L21", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L238", "weight": 1.0, "confidence_score": 1.0, - "source": "models_types_vectortype", - "target": "models_types_vectortype_process_result_value" - }, - { - "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": "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" + "source": "controller_stocksapi_controller_rationale_238", + "target": "controller_stocksapi_controller_getcotations" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_memory_types.py", - "source_location": "L9", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L250", "weight": 1.0, - "source": "models_types_vectortype", - "target": "tests_test_memory_types_testvectortype_test_roundtrip" + "source": "controller_stocksapi_controller_getcotations", + "target": "stocks_api_compressor_compressresponse" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_types.py", - "source_location": "L19", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L209", "weight": 1.0, - "source": "models_types_vectortype", - "target": "tests_test_memory_types_testvectortype_test_none_roundtrip" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_209", + "target": "controller_stocksapi_controller_getcotations" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_types.py", - "source_location": "L25", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L185", "weight": 1.0, - "source": "models_types_vectortype", - "target": "tests_test_memory_types_testvectortype_test_wrong_dims_raises" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_getcotations", + "target": "controller_stocksapi_controller_rationale_185" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_types.py", - "source_location": "L31", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L184", "weight": 1.0, - "source": "models_types_vectortype", - "target": "tests_test_memory_types_testvectortype_test_preserves_negative_values" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_getcotations", + "target": "controller_stocksapi_controller_rationale_184" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_types.py", - "source_location": "L39", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L307", "weight": 1.0, - "source": "models_types_vectortype", - "target": "tests_test_memory_types_testvectortype_test_large_random_vector" - }, - { - "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" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_307", + "target": "controller_stocksapi_controller_getlivecotation" }, { - "relation": "inherits", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/models/memory_types.py", - "source_location": "L5", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L289", "weight": 1.0, "confidence_score": 1.0, - "source": "typedecorator", - "target": "models_memory_types_vectortype" + "source": "controller_stocksapi_controller_rationale_289", + "target": "controller_stocksapi_controller_getlivecotation" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/models/user.py", - "source_location": "L5", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L290", "weight": 1.0, "confidence_score": 1.0, - "source": "main_models_user_py", - "target": "models_user_user" + "source": "controller_stocksapi_controller_rationale_290", + "target": "controller_stocksapi_controller_getlivecotation" }, { - "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": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L282", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_282", + "target": "controller_stocksapi_controller_getlivecotation" }, { - "relation": "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": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L279", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_279", + "target": "controller_stocksapi_controller_getlivecotation" }, { - "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": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L283", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_283", + "target": "controller_stocksapi_controller_getlivecotation" }, { - "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": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L291", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_291", + "target": "controller_stocksapi_controller_getlivecotation" }, { - "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": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L288", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_288", + "target": "controller_stocksapi_controller_getlivecotation" }, { - "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": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L296", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_296", + "target": "controller_stocksapi_controller_getlivecotation" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L9", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L286", "weight": 1.0, - "source": "models_user_user", - "target": "tests_test_models_testusermodel_test_create_user" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_286", + "target": "controller_stocksapi_controller_getlivecotation" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L19", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L293", "weight": 1.0, - "source": "models_user_user", - "target": "tests_test_models_testusermodel_test_get_roles_list_default" + "source": "controller_stocksapi_controller_getlivecotation", + "target": "stocks_api_compressor_compressresponse" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L24", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L261", "weight": 1.0, - "source": "models_user_user", - "target": "tests_test_models_testusermodel_test_get_roles_list_single_role" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_261", + "target": "controller_stocksapi_controller_getlivecotation" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L29", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L233", "weight": 1.0, - "source": "models_user_user", - "target": "tests_test_models_testusermodel_test_get_roles_list_multiple_roles" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_getlivecotation", + "target": "controller_stocksapi_controller_rationale_233" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L37", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L232", "weight": 1.0, - "source": "models_user_user", - "target": "tests_test_models_testusermodel_test_add_role_new" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_getlivecotation", + "target": "controller_stocksapi_controller_rationale_232" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L43", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "main/controller/user_controller.py", + "source_location": "L7", "weight": 1.0, - "source": "models_user_user", - "target": "tests_test_models_testusermodel_test_add_role_existing" + "confidence_score": 1.0, + "source": "main_controller_user_controller_py", + "target": "fastapi" }, { - "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": "main/controller/user_controller.py", + "source_location": "L16", "weight": 1.0, - "source": "models_user_user", - "target": "tests_test_models_testusermodel_test_has_role_true" + "confidence_score": 1.0, + "source": "main_controller_user_controller_py", + "target": "controller_user_controller_sessiontodict" }, { - "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": "main/controller/user_controller.py", + "source_location": "L15", "weight": 1.0, - "source": "models_user_user", - "target": "tests_test_models_testusermodel_test_has_role_false" + "confidence_score": 1.0, + "source": "main_controller_user_controller_py", + "target": "controller_user_controller_health" }, { - "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": "main/controller/user_controller.py", + "source_location": "L19", "weight": 1.0, - "source": "models_user_user", - "target": "tests_test_models_testusermodel_test_has_role_with_enum" + "confidence_score": 1.0, + "source": "main_controller_user_controller_py", + "target": "controller_user_controller_getme" }, { - "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": "main/controller/user_controller.py", + "source_location": "L45", "weight": 1.0, - "source": "models_user_user", - "target": "tests_test_models_testusermodel_test_toDict" + "confidence_score": 1.0, + "source": "main_controller_user_controller_py", + "target": "controller_user_controller_testadminaccess" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/user.py", - "source_location": "L22", + "source_file": "main/controller/user_controller.py", + "source_location": "L52", "weight": 1.0, "confidence_score": 1.0, - "source": "models_user_user", - "target": "models_user_user_getroleslist" + "source": "main_controller_user_controller_py", + "target": "controller_user_controller_getsessions" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/user.py", - "source_location": "L27", + "source_file": "main/controller/user_controller.py", + "source_location": "L94", "weight": 1.0, "confidence_score": 1.0, - "source": "models_user_user", - "target": "models_user_user_addrole" + "source": "main_controller_user_controller_py", + "target": "controller_user_controller_getcurrentsession" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/user.py", - "source_location": "L43", + "source_file": "main/controller/user_controller.py", + "source_location": "L115", "weight": 1.0, "confidence_score": 1.0, - "source": "models_user_user", - "target": "models_user_user_hasrole" + "source": "main_controller_user_controller_py", + "target": "controller_user_controller_revokesession" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/user.py", - "source_location": "L48", + "source_file": "main/controller/user_controller.py", + "source_location": "L135", "weight": 1.0, "confidence_score": 1.0, - "source": "models_user_user", - "target": "models_user_user_todict" + "source": "main_controller_user_controller_py", + "target": "controller_user_controller_revokeallsessions" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/user.py", - "source_location": "L19", + "source_file": "main/controller/user_controller.py", + "source_location": "L23", "weight": 1.0, "confidence_score": 1.0, - "source": "models_user_user", - "target": "models_user_user_repr" + "source": "main_controller_user_controller_py", + "target": "controller_user_controller_upgradetodeveloperstarter" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/user.py", - "source_location": "L35", + "source_file": "main/controller/user_controller.py", + "source_location": "L34", "weight": 1.0, "confidence_score": 1.0, - "source": "models_user_user", - "target": "models_user_user_removerole" + "source": "main_controller_user_controller_py", + "target": "controller_user_controller_upgradetodeveloperenterprise" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L50", + "confidence": "EXTRACTED", + "source_file": "main/controller/user_controller.py", + "source_location": "L67", "weight": 1.0, - "source": "models_user_user", - "target": "tests_test_models_testusermodel_test_remove_role_existing" + "confidence_score": 1.0, + "source": "controller_user_controller_getsessions", + "target": "controller_user_controller_sessiontodict" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L57", + "confidence": "EXTRACTED", + "source_file": "main/controller/user_controller.py", + "source_location": "L87", "weight": 1.0, - "source": "models_user_user", - "target": "tests_test_models_testusermodel_test_remove_role_last_role" + "confidence_score": 1.0, + "source": "controller_user_controller_getcurrentsession", + "target": "controller_user_controller_sessiontodict" }, { - "relation": "contains", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "main/models/user_session.py", - "source_location": "L5", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L3", "weight": 1.0, "confidence_score": 1.0, - "source": "main_models_user_session_py", - "target": "models_user_session_usersession" - }, - { - "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" + "source": "main_controller_wallet_controller_py", + "target": "fastapi" }, { - "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": "main/controller/wallet_controller.py", + "source_location": "L17", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_controller_wallet_controller_py", + "target": "controller_wallet_controller_walletcreate" }, { - "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": "main/controller/wallet_controller.py", + "source_location": "L22", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_controller_wallet_controller_py", + "target": "controller_wallet_controller_create_wallet_route" }, { - "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": "main/controller/wallet_controller.py", + "source_location": "L32", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testusersessionmodel_test_getdevicename_with_browser_and_os" + "confidence_score": 1.0, + "source": "main_controller_wallet_controller_py", + "target": "controller_wallet_controller_list_wallets_route" }, { - "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": "main/controller/wallet_controller.py", + "source_location": "L42", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testusersessionmodel_test_getdevicename_with_fingerprint_only" + "confidence_score": 1.0, + "source": "main_controller_wallet_controller_py", + "target": "controller_wallet_controller_serialize_holding" }, { - "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": "main/controller/wallet_controller.py", + "source_location": "L48", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testusersessionmodel_test_getdevicename_fallback" + "confidence_score": 1.0, + "source": "main_controller_wallet_controller_py", + "target": "controller_wallet_controller_serialize_entry" }, { - "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": "main/controller/wallet_controller.py", + "source_location": "L63", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testusersessionmodel_test_getdevicename_empty_strings" + "confidence_score": 1.0, + "source": "main_controller_wallet_controller_py", + "target": "controller_wallet_controller_create_entry_route" }, { - "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": "main/controller/wallet_controller.py", + "source_location": "L73", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testusersessionmodel_test_isactive_default" + "confidence_score": 1.0, + "source": "main_controller_wallet_controller_py", + "target": "controller_wallet_controller_list_entries_route" }, { - "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": "main/controller/wallet_controller.py", + "source_location": "L86", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testusersessionmodel_test_isactive_can_be_false" + "confidence_score": 1.0, + "source": "main_controller_wallet_controller_py", + "target": "controller_wallet_controller_update_entry_route" }, { - "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": "main/controller/wallet_controller.py", + "source_location": "L97", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testsessionexpiration_test_session_can_expire" + "confidence_score": 1.0, + "source": "main_controller_wallet_controller_py", + "target": "controller_wallet_controller_delete_entry_route" }, { - "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": "main/controller/wallet_controller.py", + "source_location": "L107", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testsessionexpiration_test_session_still_valid_within_expiry" + "confidence_score": 1.0, + "source": "main_controller_wallet_controller_py", + "target": "controller_wallet_controller_list_positions_route" }, { - "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": "main/controller/wallet_controller.py", + "source_location": "L119", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testsessionexpiration_test_session_exactly_at_boundary" + "confidence_score": 1.0, + "source": "main_controller_wallet_controller_py", + "target": "controller_wallet_controller_get_rebalance_route" }, { - "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": "main/controller/wallet_controller.py", + "source_location": "L117", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testsessionexpiration_test_created_at_future_date" + "confidence_score": 1.0, + "source": "main_controller_wallet_controller_py", + "target": "controller_wallet_controller_get_summary_route" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/user_session.py", - "source_location": "L38", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L126", "weight": 1.0, "confidence_score": 1.0, - "source": "models_user_session_usersession", - "target": "models_user_session_usersession_getdevicename" + "source": "main_controller_wallet_controller_py", + "target": "controller_wallet_controller_get_allocation_route" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/user_session.py", - "source_location": "L22", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L136", "weight": 1.0, "confidence_score": 1.0, - "source": "models_user_session_usersession", - "target": "models_user_session_usersession_repr" + "source": "main_controller_wallet_controller_py", + "target": "controller_wallet_controller_upsert_target_route" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/user_session.py", - "source_location": "L25", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L151", "weight": 1.0, "confidence_score": 1.0, - "source": "models_user_session_usersession", - "target": "models_user_session_usersession_todict" + "source": "main_controller_wallet_controller_py", + "target": "controller_wallet_controller_set_rating_route" }, { - "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": "main/controller/wallet_controller.py", + "source_location": "L160", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testusersessionmodel_test_repr" + "confidence_score": 1.0, + "source": "main_controller_wallet_controller_py", + "target": "controller_wallet_controller_earningssync" }, { - "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": "main/controller/wallet_controller.py", + "source_location": "L164", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testusersessionmodel_test_toDict_basic" + "confidence_score": 1.0, + "source": "main_controller_wallet_controller_py", + "target": "controller_wallet_controller_serialize_earning" }, { - "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": "main/controller/wallet_controller.py", + "source_location": "L175", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testusersessionmodel_test_toDict_with_sensitive" + "confidence_score": 1.0, + "source": "main_controller_wallet_controller_py", + "target": "controller_wallet_controller_list_earnings_route" }, { - "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": "main/controller/wallet_controller.py", + "source_location": "L189", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testusersessionmodel_test_toDict_hides_useragent" + "confidence_score": 1.0, + "source": "main_controller_wallet_controller_py", + "target": "controller_wallet_controller_sync_earnings_route" }, { - "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": "main/controller/wallet_controller.py", + "source_location": "L199", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testusersessionmodel_test_todict_with_timestamps" + "confidence_score": 1.0, + "source": "main_controller_wallet_controller_py", + "target": "controller_wallet_controller_get_performance_route" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sessions.py", - "source_location": "L132", + "confidence": "EXTRACTED", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L69", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testusersessionmodel_test_todict_without_timestamps" + "confidence_score": 1.0, + "source": "controller_wallet_controller_create_entry_route", + "target": "controller_wallet_controller_serialize_holding" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/service/authentication_service.py", - "source_location": "L9", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L93", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_authentication_service_py", - "target": "service_authentication_service_authenticationservice" + "source": "controller_wallet_controller_update_entry_route", + "target": "controller_wallet_controller_serialize_holding" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/service/authentication_service.py", - "source_location": "L11", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L103", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_authentication_service_py", - "target": "service_authentication_service_initialize" + "source": "controller_wallet_controller_delete_entry_route", + "target": "controller_wallet_controller_serialize_holding" }, { - "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": "EXTRACTED", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L82", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_wallet_controller_list_entries_route", + "target": "controller_wallet_controller_serialize_entry" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/service/authentication_service.py", - "source_location": "L12", + "confidence": "EXTRACTED", + "source_file": "main/controller/wallet_controller.py", + "source_location": "L183", "weight": 1.0, - "source": "service_authentication_service_initialize", - "target": "utils_service_manager_getapp" + "confidence_score": 1.0, + "source": "controller_wallet_controller_list_earnings_route", + "target": "controller_wallet_controller_serialize_earning" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/service/orunmila_service.py", - "source_location": "L23", + "source_file": "main/models/memory.py", + "source_location": "L8", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_orunmila_service_py", - "target": "service_orunmila_service_memorymaintenance" + "source": "main_models_memory_py", + "target": "models_memory_orunmilamemory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/service/orunmila_service.py", - "source_location": "L65", + "source_file": "main/models/memory.py", + "source_location": "L7", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_orunmila_service_py", - "target": "service_orunmila_service_orunmilaservice" + "source": "main_models_memory_py", + "target": "models_memory_prometheusmemory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/service/orunmila_service.py", - "source_location": "L67", + "source_file": "main/models/memory.py", + "source_location": "L7", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_orunmila_service_py", - "target": "service_orunmila_service_initialize" + "source": "main_models_memory_py", + "target": "models_memory_usermemory" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/service/orunmila_service.py", - "source_location": "L68", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "main/models/memory.py", + "source_location": "L8", "weight": 1.0, - "source": "service_orunmila_service_initialize", - "target": "utils_service_manager_getapp" + "confidence_score": 1.0, + "source": "models_memory_orunmilamemory", + "target": "base" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/service/orunmila_service.py", - "source_location": "L71", - "weight": 1.0, - "source": "service_orunmila_service_initialize", - "target": "models_loader_getembeddingmodel" + "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": "calls", - "context": "call", + "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", - "confidence_score": 0.8, "source_file": "main/service/orunmila_service.py", - "source_location": "L73", - "weight": 1.0, - "source": "service_orunmila_service_initialize", - "target": "utils_scheduler_registerjob" + "source_location": "L9", + "weight": 0.8, + "confidence_score": 0.5, + "source": "service_orunmila_service_orunmilaservice", + "target": "models_memory_orunmilamemory" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "main/service/scraper_service.py", - "source_location": "L14", + "source_file": "main/models/orunmila.py", + "source_location": "L7", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_scraper_service_py", - "target": "service_scraper_service_runscraper" + "source": "models_orunmila_orunmilasession", + "target": "base" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "main/service/scraper_service.py", - "source_location": "L22", + "source_file": "main/models/sandbox.py", + "source_location": "L5", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_scraper_service_py", - "target": "service_scraper_service_registerscraperjobs" + "source": "models_sandbox_orunmilasandbox", + "target": "base" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "main/service/scraper_service.py", - "source_location": "L25", + "source_file": "main/models/stocksapi_key.py", + "source_location": "L7", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_scraper_service_py", - "target": "service_scraper_service_scraperservice" + "source": "base", + "target": "models_stocksapi_key_stocksapikey" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "main/service/scraper_service.py", - "source_location": "L27", + "source_file": "main/models/user.py", + "source_location": "L5", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_scraper_service_py", - "target": "service_scraper_service_initialize" + "source": "base", + "target": "models_user_user" }, { - "relation": "calls", - "context": "call", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "main/service/scraper_service.py", - "source_location": "L60", + "source_file": "main/models/user_session.py", + "source_location": "L5", "weight": 1.0, "confidence_score": 1.0, - "source": "service_scraper_service_initialize", - "target": "service_scraper_service_registerscraperjobs" + "source": "base", + "target": "models_user_session_usersession" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/service/scraper_service.py", - "source_location": "L42", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "main/models/wallet.py", + "source_location": "L18", "weight": 1.0, - "source": "service_scraper_service_registerscraperjobs", - "target": "utils_scheduler_registerjob" + "confidence_score": 1.0, + "source": "models_wallet_wallet", + "target": "base" }, { - "relation": "rationale_for", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "main/service/scraper_service.py", - "source_location": "L23", + "source_file": "main/models/wallet.py", + "source_location": "L28", "weight": 1.0, "confidence_score": 1.0, - "source": "service_scraper_service_rationale_23", - "target": "service_scraper_service_registerscraperjobs" + "source": "models_wallet_holding", + "target": "base" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "main/service/stocksapi_service.py", - "source_location": "L10", + "source_file": "main/models/wallet.py", + "source_location": "L45", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_stocksapi_service_py", - "target": "service_stocksapi_service_mcpdetectmiddleware" + "source": "models_wallet_transaction", + "target": "base" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "main/service/stocksapi_service.py", - "source_location": "L6", + "source_file": "main/models/wallet.py", + "source_location": "L60", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_stocksapi_service_py", - "target": "service_stocksapi_service_stocksapiservice" + "source": "models_wallet_target", + "target": "base" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "main/service/stocksapi_service.py", - "source_location": "L8", + "source_file": "main/models/wallet.py", + "source_location": "L72", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_stocksapi_service_py", - "target": "service_stocksapi_service_initialize" + "source": "models_wallet_snapshot", + "target": "base" }, { - "relation": "method", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "main/service/stocksapi_service.py", - "source_location": "L11", + "source_file": "main/models/wallet.py", + "source_location": "L89", "weight": 1.0, "confidence_score": 1.0, - "source": "service_stocksapi_service_mcpdetectmiddleware", - "target": "service_stocksapi_service_mcpdetectmiddleware_init" + "source": "models_wallet_earning", + "target": "base" }, { - "relation": "method", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "main/service/stocksapi_service.py", - "source_location": "L14", + "source_file": "main/models/memory.py", + "source_location": "L7", "weight": 1.0, "confidence_score": 1.0, - "source": "service_stocksapi_service_mcpdetectmiddleware", - "target": "service_stocksapi_service_mcpdetectmiddleware_call" + "source": "models_memory_prometheusmemory", + "target": "base" }, { - "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": "inherits", + "confidence": "EXTRACTED", + "source_file": "main/models/prometheus.py", + "source_location": "L5", + "weight": 1.0, + "confidence_score": 1.0, + "source": "base", + "target": "models_prometheus_prometheussession" }, { - "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": "inherits", + "confidence": "EXTRACTED", + "source_file": "main/models/sandbox.py", + "source_location": "L5", + "weight": 1.0, + "confidence_score": 1.0, + "source": "base", + "target": "models_sandbox_prometheussandbox" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/service/stocksapi_service.py", - "source_location": "L29", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "main/models/memory.py", + "source_location": "L7", "weight": 1.0, - "source": "service_stocksapi_service_initialize", - "target": "utils_service_manager_getapp" + "confidence_score": 1.0, + "source": "base", + "target": "models_memory_usermemory" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "main/service/user_service.py", - "source_location": "L16", + "source_file": "main/models/harness.py", + "source_location": "L7", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_user_service_py", - "target": "service_user_service_removeinactivesessions" + "source": "base", + "target": "models_harness_loopevent" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/service/user_service.py", - "source_location": "L4", + "source_file": "main/models/orunmila.py", + "source_location": "L7", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_user_service_py", - "target": "service_user_service_userservice" + "source": "main_models_orunmila_py", + "target": "models_orunmila_orunmilasession" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/models/orunmila.py", + "source_location": "L4", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_orunmila_orunmilasession", + "target": "models_user_user" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/service/user_service.py", - "source_location": "L6", + "source_file": "main/models/sandbox.py", + "source_location": "L5", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_user_service_py", - "target": "service_user_service_initialize" + "source": "main_models_sandbox_py", + "target": "models_sandbox_orunmilasandbox" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/service/user_service.py", - "source_location": "L46", + "source_file": "main/models/sandbox.py", + "source_location": "L5", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_user_service_py", - "target": "service_user_service_registersessioncleanupjobs" + "source": "main_models_sandbox_py", + "target": "models_sandbox_prometheussandbox" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/service/user_service.py", - "source_location": "L33", + "source_file": "main/models/stocksapi_key.py", + "source_location": "L7", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_user_service_py", - "target": "service_user_service_inactivesessionsscheduler" + "source": "main_models_stocksapi_key_py", + "target": "models_stocksapi_key_stocksapikey" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "main/service/user_service.py", - "source_location": "L1", + "source_file": "main/models/stocksapi_key.py", + "source_location": "L4", "weight": 0.8, "confidence_score": 0.5, - "source": "service_user_service_userservice", - "target": "utils_service_manager_servicemanager" + "source": "models_stocksapi_key_stocksapikey", + "target": "models_user_user" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/service/user_service.py", - "source_location": "L42", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L58", "weight": 1.0, - "source": "service_user_service_initialize", - "target": "utils_service_manager_getapp" + "source": "stocks_api_key_createkey", + "target": "models_stocksapi_key_stocksapikey" + }, + { + "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": "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": "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": "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": "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": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/service/user_service.py", - "source_location": "L48", + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L43", "weight": 1.0, - "source": "service_user_service_initialize", - "target": "utils_scheduler_registerjob" + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_normal_quota_check_works" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/service/user_service.py", - "source_location": "L72", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L70", "weight": 1.0, - "confidence_score": 1.0, - "source": "service_user_service_initialize", - "target": "service_user_service_registersessioncleanupjobs" + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_atomic_increment_prevents_overuse" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/utils/connectivity.py", - "source_location": "L13", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L111", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_utils_connectivity_py", - "target": "utils_connectivity_checkdatabaseconnection" + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_concurrent_requests_serialized_at_db_level" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/utils/connectivity.py", - "source_location": "L51", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L145", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_utils_connectivity_py", - "target": "utils_connectivity_checkserviceconnection" + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_request_at_exact_quota_limit" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/utils/connectivity.py", - "source_location": "L13", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L181", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_utils_connectivity_py", - "target": "utils_connectivity_checkmysqlconnection" + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_multiple_keys_independent_quotas" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/utils/connectivity.py", - "source_location": "L13", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L216", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_utils_connectivity_py", - "target": "utils_connectivity_checksingledb" + "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_connectivity_coverage.py", - "source_location": "L112", + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L240", "weight": 1.0, - "source": "utils_connectivity_checkserviceconnection", - "target": "tests_test_connectivity_coverage_test_service_not_found" + "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_connectivity_coverage.py", - "source_location": "L124", + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L255", "weight": 1.0, - "source": "utils_connectivity_checkserviceconnection", - "target": "tests_test_connectivity_coverage_test_stocks_api_health_ok" + "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_connectivity_coverage.py", - "source_location": "L139", + "source_file": "tests/test_models.py", + "source_location": "L92", "weight": 1.0, - "source": "utils_connectivity_checkserviceconnection", - "target": "tests_test_connectivity_coverage_test_non_stocks_prefix" + "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_connectivity_coverage.py", - "source_location": "L154", + "source_file": "tests/test_models.py", + "source_location": "L101", "weight": 1.0, - "source": "utils_connectivity_checkserviceconnection", - "target": "tests_test_connectivity_coverage_test_non_200_status" + "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_connectivity_coverage.py", - "source_location": "L164", + "source_file": "tests/test_models.py", + "source_location": "L107", "weight": 1.0, - "source": "utils_connectivity_checkserviceconnection", - "target": "tests_test_connectivity_coverage_test_connection_error" + "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_connectivity_coverage.py", - "source_location": "L174", + "source_file": "tests/test_models.py", + "source_location": "L113", "weight": 1.0, - "source": "utils_connectivity_checkserviceconnection", - "target": "tests_test_connectivity_coverage_test_timeout" + "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_connectivity_coverage.py", - "source_location": "L184", + "source_file": "tests/test_models.py", + "source_location": "L118", "weight": 1.0, - "source": "utils_connectivity_checkserviceconnection", - "target": "tests_test_connectivity_coverage_test_request_exception" + "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_connectivity_coverage.py", - "source_location": "L194", + "source_file": "tests/test_models.py", + "source_location": "L124", "weight": 1.0, - "source": "utils_connectivity_checkserviceconnection", - "target": "tests_test_connectivity_coverage_test_generic_exception" + "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": "main/utils/connectivity.py", - "source_location": "L66", + "source_file": "tests/test_models.py", + "source_location": "L130", "weight": 1.0, - "source": "utils_connectivity_checkserviceconnection", - "target": "utils_http_session_get_session" + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_models_teststocksapikeymodel_test_reset_quota" }, { - "relation": "imports_from", - "context": "import", - "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L5", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_models.py", + "source_location": "L138", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_utils_errors_py", - "target": "fastapi" + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_models_teststocksapikeymodel_test_increment_usage" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L13", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_models.py", + "source_location": "L144", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_utils_errors_py", - "target": "utils_errors_errorresponse" + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_models_teststocksapikeymodel_test_get_remaining_quota" }, { - "relation": "contains", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_models.py", + "source_location": "L150", + "weight": 1.0, + "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_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/utils/errors.py", + "source_file": "main/models/stocksapi_key.py", "source_location": "L21", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_errors_py", - "target": "utils_errors_requestcontextfilter" + "source": "models_stocksapi_key_stocksapikey", + "target": "models_stocksapi_key_stocksapikey_isquotaexceeded" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L27", + "source_file": "main/models/stocksapi_key.py", + "source_location": "L24", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_errors_py", - "target": "utils_errors_builderrorresponse" + "source": "models_stocksapi_key_stocksapikey", + "target": "models_stocksapi_key_stocksapikey_needsreset" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L37", + "source_file": "main/models/stocksapi_key.py", + "source_location": "L32", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_errors_py", - "target": "utils_errors_httpexceptionhandler" + "source": "models_stocksapi_key_stocksapikey", + "target": "models_stocksapi_key_stocksapikey_resetquota" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L44", + "source_file": "main/models/stocksapi_key.py", + "source_location": "L36", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_errors_py", - "target": "utils_errors_validationexceptionhandler" + "source": "models_stocksapi_key_stocksapikey", + "target": "models_stocksapi_key_stocksapikey_incrementusage" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L56", + "source_file": "main/models/stocksapi_key.py", + "source_location": "L39", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_errors_py", - "target": "utils_errors_genericexceptionhandler" + "source": "models_stocksapi_key_stocksapikey", + "target": "models_stocksapi_key_stocksapikey_getremainingquota" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L65", + "source_file": "main/models/stocksapi_key.py", + "source_location": "L42", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_errors_py", - "target": "utils_errors_registererrorhandlers" + "source": "models_stocksapi_key_stocksapikey", + "target": "models_stocksapi_key_stocksapikey_todict" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L29", + "source_file": "main/models/stocksapi_key.py", + "source_location": "L18", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_errors_py", - "target": "utils_errors_build_error_response" + "source": "models_stocksapi_key_stocksapikey", + "target": "models_stocksapi_key_stocksapikey_repr" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L38", + "source_file": "main/models/types.py", + "source_location": "L5", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_errors_py", - "target": "utils_errors_http_exception_handler" + "source": "main_models_types_py", + "target": "models_types_vectortype" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L45", + "source_file": "main/models/types.py", + "source_location": "L5", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_errors_py", - "target": "utils_errors_validation_exception_handler" + "source": "models_types_vectortype", + "target": "typedecorator" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L57", + "source_file": "main/models/types.py", + "source_location": "L9", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_errors_py", - "target": "utils_errors_generic_exception_handler" + "source": "models_types_vectortype", + "target": "models_types_vectortype_init" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L66", + "source_file": "main/models/types.py", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_errors_py", - "target": "utils_errors_register_error_handlers" + "source": "models_types_vectortype", + "target": "models_types_vectortype_process_bind_param" }, { - "relation": "calls", - "context": "call", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L28", + "source_file": "main/models/types.py", + "source_location": "L21", "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" + "source": "models_types_vectortype", + "target": "models_types_vectortype_process_result_value" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L12", + "source_file": "main/models/memory.py", + "source_location": "L4", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_errors_errorresponse", - "target": "tests_test_error_handlers_testrequestcontextfilter" + "source": "models_memory_prometheusmemory", + "target": "models_types_vectortype" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L12", + "source_file": "tests/test_memory_types.py", + "source_location": "L3", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_errors_errorresponse", - "target": "tests_test_error_handlers_testhttpexceptionhandler" + "source": "models_types_vectortype", + "target": "tests_test_memory_types_testvectortype" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "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" + "confidence_score": 0.8, + "source_file": "tests/test_memory_types.py", + "source_location": "L9", + "weight": 1.0, + "source": "models_types_vectortype", + "target": "tests_test_memory_types_testvectortype_test_roundtrip" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "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" + "confidence_score": 0.8, + "source_file": "tests/test_memory_types.py", + "source_location": "L19", + "weight": 1.0, + "source": "models_types_vectortype", + "target": "tests_test_memory_types_testvectortype_test_none_roundtrip" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "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" + "confidence_score": 0.8, + "source_file": "tests/test_memory_types.py", + "source_location": "L25", + "weight": 1.0, + "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_error_handlers.py", - "source_location": "L56", + "source_file": "tests/test_memory_types.py", + "source_location": "L31", "weight": 1.0, - "source": "utils_errors_errorresponse", - "target": "tests_test_error_handlers_testerrorresponsemodel_test_error_response_structure" + "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_error_handlers.py", - "source_location": "L65", + "source_file": "tests/test_memory_types.py", + "source_location": "L39", "weight": 1.0, - "source": "utils_errors_errorresponse", - "target": "tests_test_error_handlers_testerrorresponsemodel_test_error_response_with_detail_and_request_id" + "source": "models_types_vectortype", + "target": "tests_test_memory_types_testvectortype_test_large_random_vector" }, { - "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_types_vectortype", + "target": "models_memory_usermemory" + }, + { + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L30", + "source_file": "main/models/memory_types.py", + "source_location": "L5", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_errors_errorresponse", - "target": "utils_errors_build_error_response" + "source": "typedecorator", + "target": "models_memory_types_vectortype" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L24", + "source_file": "main/models/user.py", + "source_location": "L5", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_errors_requestcontextfilter", - "target": "utils_errors_requestcontextfilter_filter" + "source": "main_models_user_py", + "target": "models_user_user" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "main/utils/logging_config.py", - "source_location": "L9", + "source_file": "main/models/user_session.py", + "source_location": "L4", "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, - "source": "utils_errors_requestcontextfilter", - "target": "utils_logging_config_setuplogging" + "source": "models_user_session_usersession", + "target": "models_user_user" }, { "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", + "source_file": "main/models/memory.py", + "source_location": "L5", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_errors_requestcontextfilter", - "target": "tests_test_error_handlers_testrequestcontextfilter" + "source": "models_memory_prometheusmemory", + "target": "models_user_user" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L12", + "source_file": "main/models/prometheus.py", + "source_location": "L4", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_errors_requestcontextfilter", - "target": "tests_test_error_handlers_testhttpexceptionhandler" + "source": "models_prometheus_prometheussession", + "target": "models_user_user" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L12", + "source_file": "tests/test_models.py", + "source_location": "L2", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_errors_requestcontextfilter", - "target": "tests_test_error_handlers_testvalidationexceptionhandler" + "source": "models_user_user", + "target": "tests_test_models_testusermodel" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L12", + "source_file": "tests/test_models.py", + "source_location": "L2", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_errors_requestcontextfilter", - "target": "tests_test_error_handlers_testgenericexceptionhandler" + "source": "models_user_user", + "target": "tests_test_models_teststocksapikeymodel" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L12", + "source_file": "tests/test_models.py", + "source_location": "L2", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_errors_requestcontextfilter", - "target": "tests_test_error_handlers_testsuccesspassthrough" + "source": "models_user_user", + "target": "tests_test_models_testprometheussessionmodel" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_error_handlers.py", - "source_location": "L78", + "source_file": "tests/test_models.py", + "source_location": "L9", "weight": 1.0, - "source": "utils_errors_requestcontextfilter", - "target": "tests_test_error_handlers_testrequestcontextfilter_test_injects_request_id_from_contextvar" + "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_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/utils/errors.py", - "source_location": "L22", + "source_file": "tests/test_models.py", + "source_location": "L19", "weight": 1.0, - "confidence_score": 1.0, - "source": "utils_errors_requestcontextfilter", - "target": "utils_errors_rationale_22" + "source": "models_user_user", + "target": "tests_test_models_testusermodel_test_get_roles_list_default" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L40", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_models.py", + "source_location": "L24", "weight": 1.0, - "confidence_score": 1.0, - "source": "utils_errors_builderrorresponse", - "target": "utils_errors_httpexceptionhandler" + "source": "models_user_user", + "target": "tests_test_models_testusermodel_test_get_roles_list_single_role" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L52", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_models.py", + "source_location": "L29", "weight": 1.0, - "confidence_score": 1.0, - "source": "utils_errors_builderrorresponse", - "target": "utils_errors_validationexceptionhandler" + "source": "models_user_user", + "target": "tests_test_models_testusermodel_test_get_roles_list_multiple_roles" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L61", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_models.py", + "source_location": "L37", "weight": 1.0, - "confidence_score": 1.0, - "source": "utils_errors_builderrorresponse", - "target": "utils_errors_genericexceptionhandler" + "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/conftest.py", - "source_location": "L84", + "source_file": "tests/test_models.py", + "source_location": "L43", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_conftest_stocks_http_client" + "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/conftest.py", - "source_location": "L93", + "source_file": "tests/test_models.py", + "source_location": "L63", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_conftest_client" + "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_controllers_coverage.py", - "source_location": "L31", + "source_file": "tests/test_models.py", + "source_location": "L68", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_make_auth_client" + "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_controllers_coverage.py", - "source_location": "L46", + "source_file": "tests/test_models.py", + "source_location": "L75", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_make_user_client" + "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_controllers_coverage.py", - "source_location": "L66", + "source_file": "tests/test_models.py", + "source_location": "L80", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_make_prometheus_client" + "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_controllers_coverage.py", - "source_location": "L87", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/models/user.py", + "source_location": "L22", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_make_stocksapi_client" + "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_controllers_coverage.py", - "source_location": "L685", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/models/user.py", + "source_location": "L27", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testgetsessions_test_get_sessions" + "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_controllers_coverage.py", - "source_location": "L731", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/models/user.py", + "source_location": "L43", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testgetcurrentsession_test_get_current_session_found" + "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_controllers_coverage.py", - "source_location": "L754", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/models/user.py", + "source_location": "L48", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testgetcurrentsession_test_get_current_session_not_found" + "confidence_score": 1.0, + "source": "models_user_user", + "target": "models_user_user_todict" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L784", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/models/user.py", + "source_location": "L19", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testrevokesession_test_revoke_session_success" + "confidence_score": 1.0, + "source": "models_user_user", + "target": "models_user_user_repr" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L807", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/models/user.py", + "source_location": "L35", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testrevokesession_test_revoke_session_not_found" + "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_controllers_coverage.py", - "source_location": "L832", + "source_file": "tests/test_models.py", + "source_location": "L50", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testrevokesession_test_revoke_session_failure" + "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": "tests/test_controllers_coverage.py", - "source_location": "L858", + "source_file": "tests/test_models.py", + "source_location": "L57", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testrevokeallsessions_test_revoke_all_sessions" + "source": "models_user_user", + "target": "tests_test_models_testusermodel_test_remove_role_last_role" }, { - "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": "main/models/user_session.py", + "source_location": "L5", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testprometheusgethistory_test_get_history_found" + "confidence_score": 1.0, + "source": "main_models_user_session_py", + "target": "models_user_session_usersession" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1011", - "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testprometheusgethistory_test_get_history_not_found" + "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": "tests/test_controllers_coverage.py", - "source_location": "L1090", + "source_file": "tests/test_sessions.py", + "source_location": "L56", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testprometheuschat_test_chat_existing_session_verified" + "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": "tests/test_controllers_coverage.py", - "source_location": "L1132", + "source_file": "tests/test_sessions.py", + "source_location": "L69", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testprometheuschat_test_chat_existing_session_not_owner" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testusersessionmodel_test_getdevicename_with_fingerprint_only" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_error_handlers.py", - "source_location": "L28", + "source_file": "tests/test_sessions.py", + "source_location": "L81", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_error_handlers_app" + "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": "tests/test_oauth_cookie_security.py", - "source_location": "L28", + "source_file": "tests/test_sessions.py", + "source_location": "L94", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_oauth_cookie_security_make_callback_client" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testusersessionmodel_test_getdevicename_empty_strings" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_sso_state_cookie.py", - "source_location": "L32", + "source_file": "tests/test_sessions.py", + "source_location": "L108", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_sso_state_cookie_build_app" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testusersessionmodel_test_isactive_default" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_memory_controller.py", - "source_location": "L38", + "source_file": "tests/test_sessions.py", + "source_location": "L112", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_memory_controller_testmemorycontrollerroutes_test_get_memories_rejects_unauthenticated" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testusersessionmodel_test_isactive_can_be_false" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_memory_controller.py", - "source_location": "L57", + "source_file": "tests/test_sessions.py", + "source_location": "L156", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_memory_controller_testmemorycontrollerroutes_test_get_memories_rejects_basic_user" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testsessionexpiration_test_session_can_expire" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1165", + "source_file": "tests/test_sessions.py", + "source_location": "L175", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_http_route" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testsessionexpiration_test_session_still_valid_within_expiry" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1353", + "source_file": "tests/test_sessions.py", + "source_location": "L193", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_stocks_api_coverage_testquerylivecotation_test_http_route_returns_200" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testsessionexpiration_test_session_exactly_at_boundary" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1377", + "source_file": "tests/test_sessions.py", + "source_location": "L210", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_stocks_api_coverage_testquerylivecotation_test_http_route_search_required" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testsessionexpiration_test_created_at_future_date" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/models/user_session.py", + "source_location": "L38", + "weight": 1.0, + "confidence_score": 1.0, + "source": "models_user_session_usersession", + "target": "models_user_session_usersession_getdevicename" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/models/user_session.py", + "source_location": "L22", + "weight": 1.0, + "confidence_score": 1.0, + "source": "models_user_session_usersession", + "target": "models_user_session_usersession_repr" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/models/user_session.py", + "source_location": "L25", + "weight": 1.0, + "confidence_score": 1.0, + "source": "models_user_session_usersession", + "target": "models_user_session_usersession_todict" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1466", + "source_file": "tests/test_sessions.py", + "source_location": "L12", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_stocks_api_coverage_testquerylivecotation_test_cotations_search_required" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testusersessionmodel_test_repr" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1298", + "source_file": "tests/test_sessions.py", + "source_location": "L17", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_search_required" + "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": "tests/test_controllers_coverage.py", - "source_location": "L156", + "source_file": "tests/test_sessions.py", + "source_location": "L34", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testregisterendpoint_make_register_client" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testusersessionmodel_test_toDict_with_sensitive" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L236", + "source_file": "tests/test_sessions.py", + "source_location": "L45", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testloginendpoint_make_login_client" + "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": "tests/test_controllers_coverage.py", - "source_location": "L289", + "source_file": "tests/test_sessions.py", + "source_location": "L118", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testlogoutendpoint_make_logout_client" + "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": "tests/test_controllers_coverage.py", - "source_location": "L433", + "source_file": "tests/test_sessions.py", + "source_location": "L132", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testgooglecallback_make_callback_client" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testusersessionmodel_test_todict_without_timestamps" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/http_session.py", - "source_location": "L9", + "source_file": "main/models/wallet.py", + "source_location": "L18", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_http_session_py", - "target": "utils_http_session_getsession" + "source": "main_models_wallet_py", + "target": "models_wallet_wallet" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/http_session.py", - "source_location": "L22", + "source_file": "main/models/wallet.py", + "source_location": "L28", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_http_session_py", - "target": "utils_http_session_cleanup" + "source": "main_models_wallet_py", + "target": "models_wallet_holding" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/http_session.py", - "source_location": "L8", + "source_file": "main/models/wallet.py", + "source_location": "L45", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_http_session_py", - "target": "utils_http_session_get_session" + "source": "main_models_wallet_py", + "target": "models_wallet_transaction" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/logging_config.py", - "source_location": "L12", + "source_file": "main/models/wallet.py", + "source_location": "L60", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_logging_config_py", - "target": "utils_logging_config_setuplogging" + "source": "main_models_wallet_py", + "target": "models_wallet_target" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/logging_config.py", - "source_location": "L24", + "source_file": "main/models/wallet.py", + "source_location": "L72", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_logging_config_py", - "target": "utils_logging_config_discordhandler" + "source": "main_models_wallet_py", + "target": "models_wallet_snapshot" }, { "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", + "source_file": "main/models/wallet.py", + "source_location": "L89", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_logging_config_discordhandler", - "target": "utils_logging_config_discordhandler_emit" + "source": "main_models_wallet_py", + "target": "models_wallet_earning" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/utils/logging_config.py", - "source_location": "L51", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L33", "weight": 1.0, - "confidence_score": 1.0, - "source": "utils_logging_config_discordhandler", - "target": "utils_logging_config_setupdiscordhandler" + "source": "wallet_wallet_service_createwallet", + "target": "models_wallet_wallet" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_logging_config_coverage.py", - "source_location": "L9", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L18", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_logging_config_discordhandler", - "target": "tests_test_logging_config_coverage_testdiscordhandleremit" + "source": "wallet_wallet_service_entrycreate", + "target": "models_wallet_wallet" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_logging_config_coverage.py", - "source_location": "L9", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L18", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_logging_config_discordhandler", - "target": "tests_test_logging_config_coverage_testsetuplogging" + "source": "wallet_wallet_service_entryupdate", + "target": "models_wallet_wallet" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_thread_safety.py", - "source_location": "L138", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L18", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_logging_config_discordhandler", - "target": "tests_test_thread_safety_testgetsession" + "source": "wallet_wallet_service_targetupsert", + "target": "models_wallet_wallet" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_thread_safety.py", - "source_location": "L138", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L18", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_logging_config_discordhandler", - "target": "tests_test_thread_safety_testdiscordhandlerthreadpool" + "source": "wallet_wallet_service_ratingupsert", + "target": "models_wallet_wallet" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_thread_safety.py", - "source_location": "L138", + "source_file": "main/service/wallet_service.py", + "source_location": "L9", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_logging_config_discordhandler", - "target": "tests_test_thread_safety_testconcurrentgetsession" + "source": "service_wallet_service_entrycreate", + "target": "models_wallet_wallet" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_logging_config_coverage.py", - "source_location": "L10", - "weight": 1.0, - "source": "utils_logging_config_discordhandler", - "target": "tests_test_logging_config_coverage_testdiscordhandleremit_make_handler" + "source_file": "main/service/wallet_service.py", + "source_location": "L9", + "weight": 0.8, + "confidence_score": 0.5, + "source": "service_wallet_service_entryupdate", + "target": "models_wallet_wallet" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_thread_safety.py", - "source_location": "L110", - "weight": 1.0, - "source": "utils_logging_config_discordhandler", - "target": "tests_test_thread_safety_testdiscordhandlerthreadpool_test_emit_submits_to_executor" + "source_file": "main/service/wallet_service.py", + "source_location": "L14", + "weight": 0.8, + "confidence_score": 0.5, + "source": "service_wallet_service_targetupsert", + "target": "models_wallet_wallet" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/service/wallet_service.py", + "source_location": "L14", + "weight": 0.8, + "confidence_score": 0.5, + "source": "service_wallet_service_ratingupsert", + "target": "models_wallet_wallet" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_thread_safety.py", - "source_location": "L140", + "source_file": "main/service/wallet_service.py", + "source_location": "L11", "weight": 1.0, - "source": "utils_logging_config_discordhandler", - "target": "tests_test_thread_safety_testdiscordhandlerthreadpool_test_concurrent_emits_do_not_spawn_unbounded_threads" + "source": "service_wallet_service_create_wallet", + "target": "models_wallet_wallet" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_thread_safety.py", - "source_location": "L138", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L18", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_logging_config_discordhandler", - "target": "tests_test_thread_safety_testconcurrenthttpproxy" + "source": "wallet_wallet_service_entrycreate", + "target": "models_wallet_holding" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_logging_config_coverage.py", - "source_location": "L107", - "weight": 1.0, - "source": "utils_logging_config_setupdiscordhandler", - "target": "tests_test_logging_config_coverage_test_setup_discord_handler_enabled" + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L18", + "weight": 0.8, + "confidence_score": 0.5, + "source": "wallet_wallet_service_entryupdate", + "target": "models_wallet_holding" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "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", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L102", "weight": 1.0, - "confidence_score": 1.0, - "source": "utils_request_id_requestidmiddleware", - "target": "utils_request_id_requestidmiddleware_dispatch" + "source": "wallet_wallet_service_recalcholding", + "target": "models_wallet_holding" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L17", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L18", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_request_id_requestidmiddleware", - "target": "tests_test_error_handlers_samplebody" + "source": "wallet_wallet_service_targetupsert", + "target": "models_wallet_holding" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L17", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L18", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_request_id_requestidmiddleware", - "target": "tests_test_error_handlers_testerrorresponsemodel" + "source": "wallet_wallet_service_ratingupsert", + "target": "models_wallet_holding" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L17", + "source_file": "main/service/wallet_service.py", + "source_location": "L9", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_request_id_requestidmiddleware", - "target": "tests_test_error_handlers_testrequestcontextfilter" + "source": "service_wallet_service_entrycreate", + "target": "models_wallet_holding" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L17", + "source_file": "main/service/wallet_service.py", + "source_location": "L9", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_request_id_requestidmiddleware", - "target": "tests_test_error_handlers_testhttpexceptionhandler" + "source": "service_wallet_service_entryupdate", + "target": "models_wallet_holding" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L17", + "source_file": "main/service/wallet_service.py", + "source_location": "L14", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_request_id_requestidmiddleware", - "target": "tests_test_error_handlers_testvalidationexceptionhandler" + "source": "service_wallet_service_targetupsert", + "target": "models_wallet_holding" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L17", + "source_file": "main/service/wallet_service.py", + "source_location": "L14", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_request_id_requestidmiddleware", - "target": "tests_test_error_handlers_testgenericexceptionhandler" + "source": "service_wallet_service_ratingupsert", + "target": "models_wallet_holding" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/service/wallet_service.py", + "source_location": "L84", + "weight": 1.0, + "source": "service_wallet_service_recalc_holding", + "target": "models_wallet_holding" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L17", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L18", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_request_id_requestidmiddleware", - "target": "tests_test_error_handlers_testsuccesspassthrough" + "source": "wallet_wallet_service_entrycreate", + "target": "models_wallet_transaction" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_request_id.py", - "source_location": "L10", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L18", "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/utils/roles.py", - "source_location": "L2", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_utils_roles_py", - "target": "fastapi" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/utils/roles.py", - "source_location": "L4", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_utils_roles_py", - "target": "utils_roles_permission" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/utils/roles.py", - "source_location": "L28", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_utils_roles_py", - "target": "utils_roles_all" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/utils/roles.py", - "source_location": "L32", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_utils_roles_py", - "target": "utils_roles_roles" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/utils/roles.py", - "source_location": "L51", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_utils_roles_py", - "target": "utils_roles_checkaccess" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/utils/roles.py", - "source_location": "L64", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_utils_roles_py", - "target": "utils_roles_requirepermission" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/utils/roles.py", - "source_location": "L63", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_utils_roles_py", - "target": "utils_roles_servicetoken" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/utils/roles.py", - "source_location": "L69", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_utils_roles_py", - "target": "utils_roles_introspecturl" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/utils/roles.py", - "source_location": "L75", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_utils_roles_py", - "target": "utils_roles_extractcredential" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/utils/roles.py", - "source_location": "L92", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_utils_roles_py", - "target": "utils_roles_introspectuser" + "source": "wallet_wallet_service_entryupdate", + "target": "models_wallet_transaction" }, { - "relation": "inherits", - "confidence": "EXTRACTED", - "source_file": "main/utils/roles.py", - "source_location": "L4", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L118", "weight": 1.0, - "confidence_score": 1.0, - "source": "utils_roles_permission", - "target": "intflag" + "source": "wallet_wallet_service_addentry", + "target": "models_wallet_transaction" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L23", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L18", "weight": 0.8, "confidence_score": 0.5, - "source": "prometheus_memory_memorycandidate", - "target": "utils_roles_permission" + "source": "wallet_wallet_service_targetupsert", + "target": "models_wallet_transaction" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L9", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L18", "weight": 0.8, "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "utils_roles_permission" + "source": "wallet_wallet_service_ratingupsert", + "target": "models_wallet_transaction" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_roles.py", - "source_location": "L7", + "source_file": "main/service/wallet_service.py", + "source_location": "L9", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_roles_testpermission" + "source": "service_wallet_service_entrycreate", + "target": "models_wallet_transaction" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_roles.py", - "source_location": "L7", + "source_file": "main/service/wallet_service.py", + "source_location": "L9", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_roles_testroles" + "source": "service_wallet_service_entryupdate", + "target": "models_wallet_transaction" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_roles_coverage.py", - "source_location": "L5", + "source_file": "main/service/wallet_service.py", + "source_location": "L14", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_roles_coverage_testcheckaccess" + "source": "service_wallet_service_targetupsert", + "target": "models_wallet_transaction" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_roles_coverage.py", - "source_location": "L5", + "source_file": "main/service/wallet_service.py", + "source_location": "L14", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_roles_coverage_testrequirepermission" + "source": "service_wallet_service_ratingupsert", + "target": "models_wallet_transaction" }, { - "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_testpermissionall" + "confidence_score": 0.8, + "source_file": "main/service/wallet_service.py", + "source_location": "L100", + "weight": 1.0, + "source": "service_wallet_service_add_entry", + "target": "models_wallet_transaction" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_roles_coverage.py", - "source_location": "L5", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L18", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_roles_coverage_testroleshierarchy" + "source": "wallet_wallet_service_entrycreate", + "target": "models_wallet_target" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L7", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L18", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "prometheus_memory_memorymanager" + "source": "wallet_wallet_service_entryupdate", + "target": "models_wallet_target" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_memory_manager.py", - "source_location": "L6", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L18", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_memory_manager_testgetmemorylimit" + "source": "wallet_wallet_service_targetupsert", + "target": "models_wallet_target" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_memory_manager.py", - "source_location": "L6", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L18", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_memory_manager_testupsertmemory" + "source": "wallet_wallet_service_ratingupsert", + "target": "models_wallet_target" }, { - "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_testcountmemories" + "confidence_score": 0.8, + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L408", + "weight": 1.0, + "source": "wallet_wallet_service_upserttarget", + "target": "models_wallet_target" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_memory_manager.py", - "source_location": "L6", + "source_file": "main/service/wallet_service.py", + "source_location": "L14", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_memory_manager_testgetusermemories" + "source": "service_wallet_service_entrycreate", + "target": "models_wallet_target" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_memory_manager.py", - "source_location": "L6", + "source_file": "main/service/wallet_service.py", + "source_location": "L14", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_memory_manager_testdeletememory" + "source": "service_wallet_service_entryupdate", + "target": "models_wallet_target" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_memory_manager.py", - "source_location": "L6", + "source_file": "main/service/wallet_service.py", + "source_location": "L14", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_memory_manager_testsearchfulltext" + "source": "service_wallet_service_targetupsert", + "target": "models_wallet_target" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/service/wallet_service.py", + "source_location": "L14", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testissecurescheme" + "source": "service_wallet_service_ratingupsert", + "target": "models_wallet_target" }, { - "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_permission", - "target": "tests_test_controllers_coverage_testhealthendpoint" + "confidence_score": 0.8, + "source_file": "main/service/wallet_service.py", + "source_location": "L395", + "weight": 1.0, + "source": "service_wallet_service_upsert_target", + "target": "models_wallet_target" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L18", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testregisterendpoint" + "source": "wallet_wallet_service_entrycreate", + "target": "models_wallet_snapshot" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L18", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testloginendpoint" + "source": "wallet_wallet_service_entryupdate", + "target": "models_wallet_snapshot" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L18", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testlogoutendpoint" + "source": "wallet_wallet_service_targetupsert", + "target": "models_wallet_snapshot" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L18", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testgooglelogin" + "source": "wallet_wallet_service_ratingupsert", + "target": "models_wallet_snapshot" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/service/wallet_service.py", + "source_location": "L14", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testgooglecallback" + "source": "service_wallet_service_entrycreate", + "target": "models_wallet_snapshot" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/service/wallet_service.py", + "source_location": "L14", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testuserhealth" + "source": "service_wallet_service_entryupdate", + "target": "models_wallet_snapshot" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/service/wallet_service.py", + "source_location": "L14", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testgetme" + "source": "service_wallet_service_targetupsert", + "target": "models_wallet_snapshot" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/service/wallet_service.py", + "source_location": "L14", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testupgradeendpoints" + "source": "service_wallet_service_ratingupsert", + "target": "models_wallet_snapshot" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L18", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testadminaccess" + "source": "wallet_wallet_service_entrycreate", + "target": "models_wallet_earning" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L18", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testgetsessions" + "source": "wallet_wallet_service_entryupdate", + "target": "models_wallet_earning" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L18", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testgetcurrentsession" + "source": "wallet_wallet_service_targetupsert", + "target": "models_wallet_earning" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L18", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testrevokesession" + "source": "wallet_wallet_service_ratingupsert", + "target": "models_wallet_earning" }, { - "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_permission", - "target": "tests_test_controllers_coverage_testrevokeallsessions" + "confidence_score": 0.8, + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L503", + "weight": 1.0, + "source": "wallet_wallet_service_syncearnings", + "target": "models_wallet_earning" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/service/wallet_service.py", + "source_location": "L14", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testprometheushealth" + "source": "service_wallet_service_entrycreate", + "target": "models_wallet_earning" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/service/wallet_service.py", + "source_location": "L14", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testprometheusgetsessions" + "source": "service_wallet_service_entryupdate", + "target": "models_wallet_earning" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/service/wallet_service.py", + "source_location": "L14", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testprometheuscreatesession" + "source": "service_wallet_service_targetupsert", + "target": "models_wallet_earning" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/service/wallet_service.py", + "source_location": "L14", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testprometheusupdatesessiontitle" + "source": "service_wallet_service_ratingupsert", + "target": "models_wallet_earning" }, { - "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_permission", - "target": "tests_test_controllers_coverage_testprometheusgethistory" + "confidence_score": 0.8, + "source_file": "main/service/wallet_service.py", + "source_location": "L499", + "weight": 1.0, + "source": "service_wallet_service_sync_earnings", + "target": "models_wallet_earning" }, { - "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_testprometheusdeletesession" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/authentication_service.py", + "source_location": "L9", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_authentication_service_py", + "target": "service_authentication_service_authenticationservice" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/authentication_service.py", + "source_location": "L11", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_authentication_service_py", + "target": "service_authentication_service_initialize" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/service/authentication_service.py", + "source_location": "L6", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testprometheuschat" + "source": "service_authentication_service_authenticationservice", + "target": "utils_service_manager_servicemanager" }, { - "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_permission", - "target": "tests_test_controllers_coverage_teststocksapihealth" + "confidence_score": 0.8, + "source_file": "main/service/authentication_service.py", + "source_location": "L12", + "weight": 1.0, + "source": "service_authentication_service_initialize", + "target": "utils_service_manager_getapp" }, { - "relation": "uses", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/orunmila_service.py", + "source_location": "L23", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_orunmila_service_py", + "target": "service_orunmila_service_memorymaintenance" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/orunmila_service.py", + "source_location": "L65", + "weight": 1.0, + "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", - "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" + "confidence_score": 0.8, + "source_file": "main/service/orunmila_service.py", + "source_location": "L68", + "weight": 1.0, + "source": "service_orunmila_service_initialize", + "target": "utils_service_manager_getapp" }, { - "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_permission", - "target": "tests_test_controllers_coverage_teststocksapihistorical" + "confidence_score": 0.8, + "source_file": "main/service/orunmila_service.py", + "source_location": "L71", + "weight": 1.0, + "source": "service_orunmila_service_initialize", + "target": "models_loader_getembeddingmodel" }, { - "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_permission", - "target": "tests_test_controllers_coverage_teststocksapifundamental" + "confidence_score": 0.8, + "source_file": "main/service/orunmila_service.py", + "source_location": "L73", + "weight": 1.0, + "source": "service_orunmila_service_initialize", + "target": "utils_scheduler_registerjob" }, { - "relation": "uses", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/scraper_service.py", + "source_location": "L14", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_scraper_service_py", + "target": "service_scraper_service_runscraper" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/scraper_service.py", + "source_location": "L22", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_scraper_service_py", + "target": "service_scraper_service_registerscraperjobs" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/scraper_service.py", + "source_location": "L25", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_scraper_service_py", + "target": "service_scraper_service_scraperservice" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/scraper_service.py", + "source_location": "L27", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_scraper_service_py", + "target": "service_scraper_service_initialize" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/service/scraper_service.py", + "source_location": "L60", + "weight": 1.0, + "confidence_score": 1.0, + "source": "service_scraper_service_initialize", + "target": "service_scraper_service_registerscraperjobs" + }, + { + "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_permission", - "target": "tests_test_controllers_coverage_teststocksapigeneratekey" + "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/service/scraper_service.py", + "source_location": "L23", + "weight": 1.0, + "confidence_score": 1.0, + "source": "service_scraper_service_rationale_23", + "target": "service_scraper_service_registerscraperjobs" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/stocksapi_service.py", + "source_location": "L10", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_stocksapi_service_py", + "target": "service_stocksapi_service_mcpdetectmiddleware" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/stocksapi_service.py", + "source_location": "L6", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_stocksapi_service_py", + "target": "service_stocksapi_service_stocksapiservice" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/stocksapi_service.py", + "source_location": "L8", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_stocksapi_service_py", + "target": "service_stocksapi_service_initialize" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/service/stocksapi_service.py", + "source_location": "L11", + "weight": 1.0, + "confidence_score": 1.0, + "source": "service_stocksapi_service_mcpdetectmiddleware", + "target": "service_stocksapi_service_mcpdetectmiddleware_init" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/service/stocksapi_service.py", + "source_location": "L14", + "weight": 1.0, + "confidence_score": 1.0, + "source": "service_stocksapi_service_mcpdetectmiddleware", + "target": "service_stocksapi_service_mcpdetectmiddleware_call" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/service/stocksapi_service.py", + "source_location": "L4", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testaddroletouser" + "source": "service_stocksapi_service_mcpdetectmiddleware", + "target": "utils_service_manager_servicemanager" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/service/stocksapi_service.py", + "source_location": "L1", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testgetcurrentuser" + "source": "service_stocksapi_service_stocksapiservice", + "target": "utils_service_manager_servicemanager" }, { - "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_permission", - "target": "tests_test_controllers_coverage_testhashpasswordempty" + "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/service/user_service.py", + "source_location": "L16", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_user_service_py", + "target": "service_user_service_removeinactivesessions" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/user_service.py", + "source_location": "L4", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_user_service_py", + "target": "service_user_service_userservice" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/user_service.py", + "source_location": "L6", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_user_service_py", + "target": "service_user_service_initialize" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/user_service.py", + "source_location": "L46", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_user_service_py", + "target": "service_user_service_registersessioncleanupjobs" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/user_service.py", + "source_location": "L33", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_user_service_py", + "target": "service_user_service_inactivesessionsscheduler" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/service/user_service.py", + "source_location": "L1", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testverifyaccesstoken" + "source": "service_user_service_userservice", + "target": "utils_service_manager_servicemanager" }, { - "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_permission", - "target": "tests_test_controllers_coverage_testextracttokenpayloadreraise" + "confidence_score": 0.8, + "source_file": "main/service/user_service.py", + "source_location": "L42", + "weight": 1.0, + "source": "service_user_service_initialize", + "target": "utils_service_manager_getapp" }, { - "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_permission", - "target": "tests_test_controllers_coverage_testmanagerinit" + "confidence_score": 0.8, + "source_file": "main/service/user_service.py", + "source_location": "L48", + "weight": 1.0, + "source": "service_user_service_initialize", + "target": "utils_scheduler_registerjob" }, { - "relation": "inherits", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/utils/roles.py", - "source_location": "L32", + "source_file": "main/service/user_service.py", + "source_location": "L72", "weight": 1.0, "confidence_score": 1.0, - "source": "intflag", - "target": "utils_roles_roles" + "source": "service_user_service_initialize", + "target": "service_user_service_registersessioncleanupjobs" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/wallet_service.py", + "source_location": "L9", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_wallet_service_py", + "target": "service_wallet_service_walletservice" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/wallet_service.py", + "source_location": "L11", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_wallet_service_py", + "target": "service_wallet_service_initialize" + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "main/service/wallet_service.py", + "source_location": "L5", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_wallet_service_py", + "target": "fastapi" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/wallet_service.py", + "source_location": "L10", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_wallet_service_py", + "target": "service_wallet_service_create_wallet" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/wallet_service.py", + "source_location": "L18", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_wallet_service_py", + "target": "service_wallet_service_list_wallets" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/wallet_service.py", + "source_location": "L26", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_wallet_service_py", + "target": "service_wallet_service_entrycreate" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/wallet_service.py", + "source_location": "L37", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_wallet_service_py", + "target": "service_wallet_service_entryupdate" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/wallet_service.py", + "source_location": "L44", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_wallet_service_py", + "target": "service_wallet_service_get_owned_wallet" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/wallet_service.py", + "source_location": "L54", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_wallet_service_py", + "target": "service_wallet_service_apply_entries" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/wallet_service.py", + "source_location": "L70", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_wallet_service_py", + "target": "service_wallet_service_recalc_holding" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/wallet_service.py", + "source_location": "L94", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_wallet_service_py", + "target": "service_wallet_service_add_entry" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/wallet_service.py", + "source_location": "L120", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_wallet_service_py", + "target": "service_wallet_service_list_entries" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/wallet_service.py", + "source_location": "L132", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_wallet_service_py", + "target": "service_wallet_service_update_entry" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/wallet_service.py", + "source_location": "L154", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_wallet_service_py", + "target": "service_wallet_service_delete_entry" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/wallet_service.py", + "source_location": "L180", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_wallet_service_py", + "target": "service_wallet_service_stocksapibase" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/wallet_service.py", + "source_location": "L184", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_wallet_service_py", + "target": "service_wallet_service_stocksapiheaders" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/wallet_service.py", + "source_location": "L189", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_wallet_service_py", + "target": "service_wallet_service_fetchliveprices" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/wallet_service.py", + "source_location": "L214", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_wallet_service_py", + "target": "service_wallet_service_fetchcachedclose" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/wallet_service.py", + "source_location": "L234", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_wallet_service_py", + "target": "service_wallet_service_get_positions" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/wallet_service.py", + "source_location": "L293", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_wallet_service_py", + "target": "service_wallet_service_targetupsert" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/wallet_service.py", + "source_location": "L300", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_wallet_service_py", + "target": "service_wallet_service_ratingupsert" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/wallet_service.py", + "source_location": "L306", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_wallet_service_py", + "target": "service_wallet_service_get_summary" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/wallet_service.py", + "source_location": "L357", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_wallet_service_py", + "target": "service_wallet_service_get_allocation" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/wallet_service.py", + "source_location": "L383", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_wallet_service_py", + "target": "service_wallet_service_upsert_target" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/wallet_service.py", + "source_location": "L409", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_wallet_service_py", + "target": "service_wallet_service_set_rating" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/wallet_service.py", + "source_location": "L429", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_wallet_service_py", + "target": "service_wallet_service_position_at_date" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/wallet_service.py", + "source_location": "L436", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_wallet_service_py", + "target": "service_wallet_service_fetchmarketdividends" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/wallet_service.py", + "source_location": "L454", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_wallet_service_py", + "target": "service_wallet_service_sync_earnings" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/wallet_service.py", + "source_location": "L521", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_wallet_service_py", + "target": "service_wallet_service_list_earnings" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/wallet_service.py", + "source_location": "L536", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_wallet_service_py", + "target": "service_wallet_service_fetchpadraocloses" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/wallet_service.py", + "source_location": "L559", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_wallet_service_py", + "target": "service_wallet_service_cachedperformance" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/wallet_service.py", + "source_location": "L662", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_service_wallet_service_py", + "target": "service_wallet_service_get_performance" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L84", + "source_file": "main/service/wallet_service.py", + "source_location": "L12", "weight": 1.0, - "source": "stocks_api_compress_tocolumnar", - "target": "utils_roles_all" + "source": "service_wallet_service_initialize", + "target": "utils_service_manager_getapp" + }, + { + "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": "main/app/stocks_api/compressor.py", - "source_location": "L91", + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L112", "weight": 1.0, - "source": "stocks_api_compressor_tocolumnar", - "target": "utils_roles_all" + "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_vector_utils.py", - "source_location": "L112", + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L124", "weight": 1.0, - "source": "utils_roles_all", - "target": "tests_test_vector_utils_testcontenthash_test_hex_format" + "source": "utils_connectivity_checkserviceconnection", + "target": "tests_test_connectivity_coverage_test_stocks_api_health_ok" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "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" + "confidence_score": 0.8, + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L139", + "weight": 1.0, + "source": "utils_connectivity_checkserviceconnection", + "target": "tests_test_connectivity_coverage_test_non_stocks_prefix" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "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" + "confidence_score": 0.8, + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L154", + "weight": 1.0, + "source": "utils_connectivity_checkserviceconnection", + "target": "tests_test_connectivity_coverage_test_non_200_status" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "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" + "confidence_score": 0.8, + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L164", + "weight": 1.0, + "source": "utils_connectivity_checkserviceconnection", + "target": "tests_test_connectivity_coverage_test_connection_error" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "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" + "confidence_score": 0.8, + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L174", + "weight": 1.0, + "source": "utils_connectivity_checkserviceconnection", + "target": "tests_test_connectivity_coverage_test_timeout" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "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" + "confidence_score": 0.8, + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L184", + "weight": 1.0, + "source": "utils_connectivity_checkserviceconnection", + "target": "tests_test_connectivity_coverage_test_request_exception" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "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" + "confidence_score": 0.8, + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L194", + "weight": 1.0, + "source": "utils_connectivity_checkserviceconnection", + "target": "tests_test_connectivity_coverage_test_generic_exception" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "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_testpermissionall" + "confidence_score": 0.8, + "source_file": "main/utils/connectivity.py", + "source_location": "L66", + "weight": 1.0, + "source": "utils_connectivity_checkserviceconnection", + "target": "utils_http_session_get_session" }, { - "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_testroleshierarchy" + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "main/utils/errors.py", + "source_location": "L5", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_errors_py", + "target": "fastapi" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L7", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "prometheus_memory_memorymanager" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/errors.py", + "source_location": "L13", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_errors_py", + "target": "utils_errors_errorresponse" }, { - "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_testissecurescheme" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/errors.py", + "source_location": "L21", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_errors_py", + "target": "utils_errors_requestcontextfilter" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testhealthendpoint" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/errors.py", + "source_location": "L27", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_errors_py", + "target": "utils_errors_builderrorresponse" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testregisterendpoint" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/errors.py", + "source_location": "L37", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_errors_py", + "target": "utils_errors_httpexceptionhandler" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testloginendpoint" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/errors.py", + "source_location": "L44", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_errors_py", + "target": "utils_errors_validationexceptionhandler" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testlogoutendpoint" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/errors.py", + "source_location": "L56", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_errors_py", + "target": "utils_errors_genericexceptionhandler" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testgooglelogin" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/errors.py", + "source_location": "L65", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_errors_py", + "target": "utils_errors_registererrorhandlers" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/errors.py", + "source_location": "L29", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_errors_py", + "target": "utils_errors_build_error_response" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/errors.py", + "source_location": "L38", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_errors_py", + "target": "utils_errors_http_exception_handler" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/errors.py", + "source_location": "L45", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_errors_py", + "target": "utils_errors_validation_exception_handler" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/errors.py", + "source_location": "L57", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_errors_py", + "target": "utils_errors_generic_exception_handler" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/errors.py", + "source_location": "L66", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_errors_py", + "target": "utils_errors_register_error_handlers" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/utils/errors.py", + "source_location": "L28", + "weight": 1.0, + "confidence_score": 1.0, + "source": "utils_errors_errorresponse", + "target": "utils_errors_builderrorresponse" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "tests/test_error_handlers.py", + "source_location": "L12", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testgooglecallback" + "source": "utils_errors_errorresponse", + "target": "tests_test_error_handlers_samplebody" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "tests/test_error_handlers.py", + "source_location": "L12", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testuserhealth" + "source": "utils_errors_errorresponse", + "target": "tests_test_error_handlers_testerrorresponsemodel" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "tests/test_error_handlers.py", + "source_location": "L12", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testgetme" + "source": "utils_errors_errorresponse", + "target": "tests_test_error_handlers_testrequestcontextfilter" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "tests/test_error_handlers.py", + "source_location": "L12", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testupgradeendpoints" + "source": "utils_errors_errorresponse", + "target": "tests_test_error_handlers_testhttpexceptionhandler" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "tests/test_error_handlers.py", + "source_location": "L12", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testadminaccess" + "source": "utils_errors_errorresponse", + "target": "tests_test_error_handlers_testvalidationexceptionhandler" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "tests/test_error_handlers.py", + "source_location": "L12", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testgetsessions" + "source": "utils_errors_errorresponse", + "target": "tests_test_error_handlers_testgenericexceptionhandler" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "tests/test_error_handlers.py", + "source_location": "L12", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testgetcurrentsession" + "source": "utils_errors_errorresponse", + "target": "tests_test_error_handlers_testsuccesspassthrough" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", + "confidence_score": 0.8, + "source_file": "tests/test_error_handlers.py", + "source_location": "L56", + "weight": 1.0, + "source": "utils_errors_errorresponse", + "target": "tests_test_error_handlers_testerrorresponsemodel_test_error_response_structure" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_error_handlers.py", + "source_location": "L65", + "weight": 1.0, + "source": "utils_errors_errorresponse", + "target": "tests_test_error_handlers_testerrorresponsemodel_test_error_response_with_detail_and_request_id" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/utils/errors.py", + "source_location": "L30", + "weight": 1.0, + "confidence_score": 1.0, + "source": "utils_errors_errorresponse", + "target": "utils_errors_build_error_response" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/utils/errors.py", + "source_location": "L24", + "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" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/utils/logging_config.py", + "source_location": "L20", + "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" + }, + { + "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/utils/errors.py", + "source_location": "L22", + "weight": 1.0, + "confidence_score": 1.0, + "source": "utils_errors_requestcontextfilter", + "target": "utils_errors_rationale_22" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/utils/errors.py", + "source_location": "L40", + "weight": 1.0, + "confidence_score": 1.0, + "source": "utils_errors_builderrorresponse", + "target": "utils_errors_httpexceptionhandler" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/utils/errors.py", + "source_location": "L52", + "weight": 1.0, + "confidence_score": 1.0, + "source": "utils_errors_builderrorresponse", + "target": "utils_errors_validationexceptionhandler" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/utils/errors.py", "source_location": "L61", + "weight": 1.0, + "confidence_score": 1.0, + "source": "utils_errors_builderrorresponse", + "target": "utils_errors_genericexceptionhandler" + }, + { + "relation": "calls", + "context": "call", + "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, + "source": "utils_errors_registererrorhandlers", + "target": "tests_conftest_client" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L31", + "weight": 1.0, + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_make_auth_client" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L46", + "weight": 1.0, + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_make_user_client" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L66", + "weight": 1.0, + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_make_prometheus_client" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L87", + "weight": 1.0, + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_make_stocksapi_client" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L685", + "weight": 1.0, + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_testgetsessions_test_get_sessions" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L731", + "weight": 1.0, + "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_controllers_coverage.py", + "source_location": "L754", + "weight": 1.0, + "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_controllers_coverage.py", + "source_location": "L784", + "weight": 1.0, + "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_controllers_coverage.py", + "source_location": "L807", + "weight": 1.0, + "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_controllers_coverage.py", + "source_location": "L832", + "weight": 1.0, + "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_controllers_coverage.py", + "source_location": "L858", + "weight": 1.0, + "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_controllers_coverage.py", + "source_location": "L975", + "weight": 1.0, + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_testprometheusgethistory_test_get_history_found" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1011", + "weight": 1.0, + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_testprometheusgethistory_test_get_history_not_found" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1090", + "weight": 1.0, + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_testprometheuschat_test_chat_existing_session_verified" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1132", + "weight": 1.0, + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_testprometheuschat_test_chat_existing_session_not_owner" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_error_handlers.py", + "source_location": "L28", + "weight": 1.0, + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_error_handlers_app" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L28", + "weight": 1.0, + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_oauth_cookie_security_make_callback_client" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_sso_state_cookie.py", + "source_location": "L32", + "weight": 1.0, + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_sso_state_cookie_build_app" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_controller.py", + "source_location": "L38", + "weight": 1.0, + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_memory_controller_testmemorycontrollerroutes_test_get_memories_rejects_unauthenticated" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_controller.py", + "source_location": "L57", + "weight": 1.0, + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_memory_controller_testmemorycontrollerroutes_test_get_memories_rejects_basic_user" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1165", + "weight": 1.0, + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_http_route" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1353", + "weight": 1.0, + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_stocks_api_coverage_testquerylivecotation_test_http_route_returns_200" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1377", + "weight": 1.0, + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_stocks_api_coverage_testquerylivecotation_test_http_route_search_required" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1466", + "weight": 1.0, + "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": "tests/test_stocks_api_coverage.py", + "source_location": "L1298", + "weight": 1.0, + "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/utils/http_session.py", + "source_location": "L9", + "weight": 1.0, + "confidence_score": 1.0, + "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/utils/logging_config.py", + "source_location": "L51", + "weight": 1.0, + "confidence_score": 1.0, + "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_roles_roles", - "target": "tests_test_controllers_coverage_testrevokesession" + "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": "tests/test_logging_config_coverage.py", + "source_location": "L10", + "weight": 1.0, + "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": "tests/test_thread_safety.py", + "source_location": "L110", + "weight": 1.0, + "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": "tests/test_thread_safety.py", + "source_location": "L140", + "weight": 1.0, + "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": "tests/test_logging_config_coverage.py", + "source_location": "L107", + "weight": 1.0, + "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": "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": "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": "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": "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": "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": "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": "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/utils/roles.py", + "source_location": "L2", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_roles_py", + "target": "fastapi" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/roles.py", + "source_location": "L4", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_roles_py", + "target": "utils_roles_permission" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/roles.py", + "source_location": "L28", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_roles_py", + "target": "utils_roles_all" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/roles.py", + "source_location": "L32", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_roles_py", + "target": "utils_roles_roles" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/roles.py", + "source_location": "L51", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_roles_py", + "target": "utils_roles_checkaccess" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/roles.py", + "source_location": "L64", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_roles_py", + "target": "utils_roles_requirepermission" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/roles.py", + "source_location": "L63", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_roles_py", + "target": "utils_roles_servicetoken" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/roles.py", + "source_location": "L69", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_roles_py", + "target": "utils_roles_introspecturl" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/roles.py", + "source_location": "L75", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_roles_py", + "target": "utils_roles_extractcredential" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/roles.py", + "source_location": "L92", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_roles_py", + "target": "utils_roles_introspectuser" + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "main/utils/roles.py", + "source_location": "L4", + "weight": 1.0, + "confidence_score": 1.0, + "source": "utils_roles_permission", + "target": "intflag" + }, + { + "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": "L9", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "utils_roles_permission" + }, + { + "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": "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": "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": "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": "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_testpermissionall" + }, + { + "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_testroleshierarchy" + }, + { + "relation": "uses", + "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" + }, + { + "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_testgetmemorylimit" + }, + { + "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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_testprometheuscreatesession" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testprometheusupdatesessiontitle" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testprometheusgethistory" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testprometheusdeletesession" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testprometheuschat" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_teststocksapihealth" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "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_permission", + "target": "tests_test_controllers_coverage_teststocksapihistorical" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_teststocksapifundamental" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_teststocksapigeneratekey" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testaddroletouser" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testgetcurrentuser" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testhashpasswordempty" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testverifyaccesstoken" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testextracttokenpayloadreraise" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_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" + }, + { + "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": "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" + }, + { + "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": "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": "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": "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": "tests/test_roles_coverage.py", + "source_location": "L65", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_roles_coverage_testpermissionall" + }, + { + "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_testroleshierarchy" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L7", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "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_testissecurescheme" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testhealthendpoint" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testregisterendpoint" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testloginendpoint" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testlogoutendpoint" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testgooglelogin" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testgooglecallback" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testuserhealth" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testgetme" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testupgradeendpoints" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testadminaccess" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testgetsessions" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testgetcurrentsession" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testrevokesession" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testrevokeallsessions" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testprometheushealth" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testprometheusgetsessions" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testprometheuscreatesession" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testprometheusupdatesessiontitle" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testprometheusgethistory" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testprometheusdeletesession" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testprometheuschat" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_teststocksapihealth" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_teststocksapikeytest" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_teststocksapihistorical" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_teststocksapifundamental" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_teststocksapigeneratekey" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testaddroletouser" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testgetcurrentuser" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testhashpasswordempty" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testverifyaccesstoken" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testextracttokenpayloadreraise" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testmanagerinit" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/scheduler.py", + "source_location": "L32", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_scheduler_py", + "target": "utils_scheduler_getsharedscheduler" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/scheduler.py", + "source_location": "L42", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_scheduler_py", + "target": "utils_scheduler_registerjob" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/utils/scheduler.py", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "utils_scheduler_rationale_1", + "target": "main_utils_scheduler_py" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/utils/scheduler.py", + "source_location": "L50", + "weight": 1.0, + "confidence_score": 1.0, + "source": "utils_scheduler_registerjob", + "target": "utils_scheduler_getsharedscheduler" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/utils/scheduler.py", + "source_location": "L33", + "weight": 1.0, + "confidence_score": 1.0, + "source": "utils_scheduler_rationale_33", + "target": "utils_scheduler_getsharedscheduler" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/service/prometheus_service.py", + "source_location": "L70", + "weight": 1.0, + "source": "service_prometheus_service_initialize", + "target": "utils_scheduler_registerjob" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/service/user_service.py", + "source_location": "L55", + "weight": 1.0, + "source": "service_user_service_registersessioncleanupjobs", + "target": "utils_scheduler_registerjob" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/service/prometheus_service.py", + "source_location": "L69", + "weight": 1.0, + "source": "service_prometheus_service_registermemorymaintenancejob", + "target": "utils_scheduler_registerjob" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/utils/scheduler.py", + "source_location": "L43", + "weight": 1.0, + "confidence_score": 1.0, + "source": "utils_scheduler_rationale_43", + "target": "utils_scheduler_registerjob" + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "main/utils/service_manager.py", + "source_location": "L8", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_service_manager_py", + "target": "fastapi" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/service_manager.py", + "source_location": "L21", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_service_manager_py", + "target": "utils_service_manager_getapp" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/service_manager.py", + "source_location": "L48", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_service_manager_py", + "target": "utils_service_manager_runall" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/service_manager.py", + "source_location": "L16", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_service_manager_py", + "target": "utils_service_manager_servicemanager" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/service/prometheus_service.py", + "source_location": "L64", + "weight": 1.0, + "source": "service_prometheus_service_initialize", + "target": "utils_service_manager_getapp" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/models/loader.py", + "source_location": "L12", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_models_loader_py", + "target": "models_loader_getembeddingmodel" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/models/loader.py", + "source_location": "L21", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_models_loader_py", + "target": "models_loader_embed" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/models/loader.py", + "source_location": "L11", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_models_loader_py", + "target": "models_loader_downloadmodel" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/vector.py", + "source_location": "L11", + "weight": 1.0, + "source": "prometheus_vector_embed", + "target": "models_loader_getembeddingmodel" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/service/prometheus_service.py", + "source_location": "L12", + "weight": 1.0, + "source": "service_prometheus_service_initialize", + "target": "models_loader_getembeddingmodel" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/utils/models/loader.py", + "source_location": "L22", + "weight": 1.0, + "confidence_score": 1.0, + "source": "models_loader_getembeddingmodel", + "target": "models_loader_embed" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/utils/models/loader.py", + "source_location": "L21", + "weight": 1.0, + "confidence_score": 1.0, + "source": "models_loader_getembeddingmodel", + "target": "models_loader_downloadmodel" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/env.py", + "source_location": "L25", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_env_py", + "target": "migrations_env_getdatabaseurl" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/env.py", + "source_location": "L28", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_env_py", + "target": "migrations_env_runmigrationsoffline" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/env.py", + "source_location": "L39", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_env_py", + "target": "migrations_env_runmigrationsonline" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "migrations/env.py", + "source_location": "L30", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_env_getdatabaseurl", + "target": "migrations_env_runmigrationsoffline" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "migrations/env.py", + "source_location": "L41", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_env_getdatabaseurl", + "target": "migrations_env_runmigrationsonline" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/25af7ad931e7_initial_migration.py", + "source_location": "L21", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_25af7ad931e7_initial_migration_py", + "target": "versions_25af7ad931e7_initial_migration_upgrade" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/25af7ad931e7_initial_migration.py", + "source_location": "L61", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_25af7ad931e7_initial_migration_py", + "target": "versions_25af7ad931e7_initial_migration_downgrade" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/25af7ad931e7_initial_migration.py", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_25af7ad931e7_initial_migration_py", + "target": "versions_25af7ad931e7_initial_migration_rationale_1" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/4a2f1c9e3b5d_user_sessions.py", + "source_location": "L20", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_4a2f1c9e3b5d_user_sessions_py", + "target": "versions_4a2f1c9e3b5d_user_sessions_upgrade" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/4a2f1c9e3b5d_user_sessions.py", + "source_location": "L47", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_4a2f1c9e3b5d_user_sessions_py", + "target": "versions_4a2f1c9e3b5d_user_sessions_downgrade" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/4a2f1c9e3b5d_user_sessions.py", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_4a2f1c9e3b5d_user_sessions_py", + "target": "versions_4a2f1c9e3b5d_user_sessions_rationale_1" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/73211a401c34_wallet_tables.py", + "source_location": "L22", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_73211a401c34_wallet_tables_py", + "target": "versions_73211a401c34_wallet_tables_upgrade" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/73211a401c34_wallet_tables.py", + "source_location": "L104", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_73211a401c34_wallet_tables_py", + "target": "versions_73211a401c34_wallet_tables_downgrade" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/73211a401c34_wallet_tables.py", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "versions_73211a401c34_wallet_tables_rationale_1", + "target": "migrations_versions_73211a401c34_wallet_tables_py" + }, + { + "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/c4d1e8f2a917_wallet_earnings.py", + "source_location": "L27", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_c4d1e8f2a917_wallet_earnings_py", + "target": "versions_c4d1e8f2a917_wallet_earnings_upgrade" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/c4d1e8f2a917_wallet_earnings.py", + "source_location": "L51", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_c4d1e8f2a917_wallet_earnings_py", + "target": "versions_c4d1e8f2a917_wallet_earnings_downgrade" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/c4d1e8f2a917_wallet_earnings.py", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "versions_c4d1e8f2a917_wallet_earnings_rationale_1", + "target": "migrations_versions_c4d1e8f2a917_wallet_earnings_py" + }, + { + "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/d4e5f6a7b8c9_drop_dead_holding_columns.py", + "source_location": "L24", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_d4e5f6a7b8c9_drop_dead_holding_columns_py", + "target": "versions_d4e5f6a7b8c9_drop_dead_holding_columns_upgrade" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/d4e5f6a7b8c9_drop_dead_holding_columns.py", + "source_location": "L32", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_d4e5f6a7b8c9_drop_dead_holding_columns_py", + "target": "versions_d4e5f6a7b8c9_drop_dead_holding_columns_downgrade" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/d4e5f6a7b8c9_drop_dead_holding_columns.py", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "versions_d4e5f6a7b8c9_drop_dead_holding_columns_rationale_1", + "target": "migrations_versions_d4e5f6a7b8c9_drop_dead_holding_columns_py" + }, + { + "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": "L47", + "weight": 1.0, + "confidence_score": 1.0, + "source": "agents_md", + "target": "server_agents_code_style" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "AGENTS.md", + "source_location": "L34", + "weight": 1.0, + "confidence_score": 1.0, + "source": "agents_md", + "target": "server_agents_testing" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "AGENTS.md", + "source_location": "L38", + "weight": 1.0, + "confidence_score": 1.0, + "source": "agents_md", + "target": "server_agents_graphify" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "AGENTS.md", + "source_location": "L60", + "weight": 1.0, + "confidence_score": 1.0, + "source": "agents_md", + "target": "server_agents_swarm_delegation_default" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "AGENTS.md", + "source_location": "L47", + "weight": 1.0, + "confidence_score": 1.0, + "source": "agents_md", + "target": "server_agents_stocks_api_pandas_first_pattern" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "AGENTS.md", + "source_location": "L54", + "weight": 1.0, + "confidence_score": 1.0, + "source": "agents_md", + "target": "server_agents_scraper_b3_xango_batch_data_pipeline" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "AGENTS.md", + "source_location": "L60", + "weight": 1.0, + "confidence_score": 1.0, + "source": "agents_md", + "target": "server_agents_auth_users_dual_layer_session_security" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "AGENTS.md", + "source_location": "L28", + "weight": 1.0, + "confidence_score": 1.0, + "source": "agents_md", + "target": "server_agents_key_quirks" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "AGENTS.md", + "source_location": "L57", + "weight": 1.0, + "confidence_score": 1.0, + "source": "agents_md", + "target": "server_agents_prometheus_ai_chat_strengths_gaps" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "AGENTS.md", + "source_location": "L5", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_agents_dev_commands", + "target": "server_agents_codeblock_1" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "AGENTS.md", + "source_location": "L31", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_agents_dev_commands", + "target": "server_agents_ci_pipeline_order" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "README.md", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "readme_md", + "target": "server_readme_mansa_server" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "README.md", + "source_location": "L7", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_readme_mansa_server", + "target": "server_readme_run_with_docker" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "README.md", + "source_location": "L20", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_readme_mansa_server", + "target": "server_readme_environment_setup" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "README.md", + "source_location": "L85", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_readme_mansa_server", + "target": "server_readme_health_check" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "README.md", + "source_location": "L91", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_readme_mansa_server", + "target": "server_readme_license" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "README.md", + "source_location": "L9", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_readme_run_with_docker", + "target": "server_readme_codeblock_1" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "README.md", + "source_location": "L24", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_readme_environment_setup", + "target": "server_readme_codeblock_2" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "README.md", + "source_location": "L87", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_readme_health_check", + "target": "server_readme_codeblock_3" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "TODO.md", + "source_location": "L25", + "weight": 1.0, + "confidence_score": 1.0, + "source": "todo_md", + "target": "server_todo_user_structure_defined_by_string_roles" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "TODO.md", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "todo_md", + "target": "server_todo_priorities_active_order_2026_09_29" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "TODO.md", + "source_location": "L34", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_todo_user_structure_defined_by_string_roles", + "target": "server_todo_user" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "TODO.md", + "source_location": "L37", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_todo_user_structure_defined_by_string_roles", + "target": "server_todo_premium" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "TODO.md", + "source_location": "L40", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_todo_user_structure_defined_by_string_roles", + "target": "server_todo_developer" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "TODO.md", + "source_location": "L67", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_todo_user_structure_defined_by_string_roles", + "target": "server_todo_stocks_api" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "TODO.md", + "source_location": "L70", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_todo_user_structure_defined_by_string_roles", + "target": "server_todo_prometheus" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_md", + "target": "docs_authentication_authentication_management" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L5", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_token_session_lifetime" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L11", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_token_extraction_order" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L21", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_cookie_handling_conditional_secure" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L30", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_session_data_model_family_only" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L39", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_roles_and_permissions" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L61", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_rate_limits" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L49", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_api_endpoints" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L117", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_security_features" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L138", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_not_implemented" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L154", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_workflow" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L187", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_license" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L9", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_usage" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L130", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_device_detection" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L144", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_session_management" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L51", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_api_endpoints", + "target": "docs_authentication_health_check" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L57", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_api_endpoints", + "target": "docs_authentication_user_registration" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L65", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_api_endpoints", + "target": "docs_authentication_user_login" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L84", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_api_endpoints", + "target": "docs_authentication_logout" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L94", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_api_endpoints", + "target": "docs_authentication_google_oauth2_login" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L120", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_api_endpoints", + "target": "docs_authentication_google_callback_cookie_only" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L77", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_api_endpoints", + "target": "docs_authentication_profile_me" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L108", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_api_endpoints", + "target": "docs_authentication_google_callback" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L76", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_health_check", + "target": "docs_authentication_codeblock_1" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L52", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_health_check", + "target": "docs_authentication_codeblock_2" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L11", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_usage", + "target": "docs_authentication_codeblock_1" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L84", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_user_registration", + "target": "docs_authentication_codeblock_2" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L59", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_user_registration", + "target": "docs_authentication_codeblock_3" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L94", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_user_login", + "target": "docs_authentication_codeblock_3" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L67", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_user_login", + "target": "docs_authentication_codeblock_4" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L104", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_logout", + "target": "docs_authentication_codeblock_4" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L86", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_logout", + "target": "docs_authentication_codeblock_6" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L113", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_google_oauth2_login", + "target": "docs_authentication_codeblock_5" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L98", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_google_oauth2_login", + "target": "docs_authentication_codeblock_7" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L104", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_google_oauth2_login", + "target": "docs_authentication_codeblock_8" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L79", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_profile_me", + "target": "docs_authentication_codeblock_5" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L144", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_workflow", + "target": "docs_authentication_codeblock_6" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L156", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_workflow", + "target": "docs_authentication_codeblock_9" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/orunmila.md", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_orunmila_md", + "target": "docs_orunmila_orunmila" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/orunmila.md", + "source_location": "L7", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_orunmila_orunmila", + "target": "docs_orunmila_usage" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/orunmila.md", + "source_location": "L53", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_orunmila_orunmila", + "target": "docs_orunmila_workflow" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/orunmila.md", + "source_location": "L65", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_orunmila_orunmila", + "target": "docs_orunmila_api_endpoints" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/orunmila.md", + "source_location": "L72", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_orunmila_orunmila", + "target": "docs_orunmila_license" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/orunmila.md", + "source_location": "L9", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_orunmila_usage", + "target": "docs_orunmila_codeblock_1" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/orunmila.md", + "source_location": "L49", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_orunmila_usage", + "target": "docs_orunmila_codeblock_2" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/orunmila.md", + "source_location": "L55", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_orunmila_workflow", + "target": "docs_orunmila_codeblock_3" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/scraper_b3.md", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_scraper_b3_md", + "target": "docs_scraper_b3_b3_market_scraper" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/scraper_b3.md", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_scraper_b3_md", + "target": "docs_scraper_b3_brazilian_stocks_market_scraper" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/scraper_b3.md", + "source_location": "L5", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_scraper_b3_b3_market_scraper", + "target": "docs_scraper_b3_sources_6" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/scraper_b3.md", + "source_location": "L19", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_scraper_b3_b3_market_scraper", + "target": "docs_scraper_b3_scheduling_config_config_py_77_81_scraper_service_py_23_36" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/scraper_b3.md", + "source_location": "L31", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_scraper_b3_b3_market_scraper", + "target": "docs_scraper_b3_xango_score_main_app_scraper_b3_xango_py" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/scraper_b3.md", + "source_location": "L41", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_scraper_b3_b3_market_scraper", + "target": "docs_scraper_b3_outputs" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/scraper_b3.md", + "source_location": "L21", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_scraper_b3_scheduling_config_config_py_77_81_scraper_service_py_23_36", + "target": "docs_scraper_b3_codeblock_1" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/scraper_b3.md", + "source_location": "L8", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_scraper_b3_usage", + "target": "docs_scraper_b3_codeblock_1" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_md", + "target": "docs_stocks_api_brazilian_stocks_market_api" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L7", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_brazilian_stocks_market_api", + "target": "docs_stocks_api_usage" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L22", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_brazilian_stocks_market_api", + "target": "docs_stocks_api_auth" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L32", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_brazilian_stocks_market_api", + "target": "docs_stocks_api_api_endpoints" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L90", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_brazilian_stocks_market_api", + "target": "docs_stocks_api_response_format" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L119", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_brazilian_stocks_market_api", + "target": "docs_stocks_api_architecture" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L113", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_brazilian_stocks_market_api", + "target": "docs_stocks_api_license" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L9", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_usage", + "target": "docs_stocks_api_codeblock_1" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L34", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_api_endpoints", + "target": "docs_stocks_api_health_check" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L40", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_api_endpoints", + "target": "docs_stocks_api_field_discovery" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L53", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_api_endpoints", + "target": "docs_stocks_api_historical_data" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L72", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_api_endpoints", + "target": "docs_stocks_api_fundamental_data" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L74", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_api_endpoints", + "target": "docs_stocks_api_cotations_10_year_daily_history" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L87", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_api_endpoints", + "target": "docs_stocks_api_live_price" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L98", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_api_endpoints", + "target": "docs_stocks_api_mcp_ai_agent_tools" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L40", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_api_endpoints", + "target": "docs_stocks_api_api_key_verification" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L45", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_api_endpoints", + "target": "docs_stocks_api_key_management" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L35", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_health_check", + "target": "docs_stocks_api_codeblock_2" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L42", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_field_discovery", + "target": "docs_stocks_api_codeblock_3" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L41", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_api_key_verification", + "target": "docs_stocks_api_codeblock_3" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L50", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_historical_data", + "target": "docs_stocks_api_codeblock_4" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L55", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_historical_data", + "target": "docs_stocks_api_codeblock_5" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L68", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_historical_data", + "target": "docs_stocks_api_codeblock_6" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L47", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_key_management", + "target": "docs_stocks_api_codeblock_4" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L63", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_fundamental_data", + "target": "docs_stocks_api_codeblock_5" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L74", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_fundamental_data", + "target": "docs_stocks_api_codeblock_7" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L86", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_fundamental_data", + "target": "docs_stocks_api_codeblock_8" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L76", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_cotations_10_year_daily_history", + "target": "docs_stocks_api_codeblock_6" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L89", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_live_price", + "target": "docs_stocks_api_codeblock_7" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L106", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_response_format", + "target": "docs_stocks_api_codeblock_8" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L94", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_response_format", + "target": "docs_stocks_api_codeblock_9" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_md", + "target": "docs_user_user_management" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L5", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_user_management", + "target": "docs_user_roles_and_permissions" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L17", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_user_management", + "target": "docs_user_api_endpoints" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L59", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_user_management", + "target": "docs_user_session_management" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L112", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_user_management", + "target": "docs_user_api_keys_stocks_api" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L123", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_user_management", + "target": "docs_user_rate_limits_related_services" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L135", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_user_management", + "target": "docs_user_not_implemented" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L156", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_user_management", + "target": "docs_user_workflow" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L177", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_user_management", + "target": "docs_user_license" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L140", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_user_management", + "target": "docs_user_permission_system" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L19", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_api_endpoints", + "target": "docs_user_health_check" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L25", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_api_endpoints", + "target": "docs_user_get_profile" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L53", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_api_endpoints", + "target": "docs_user_admin_access" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L41", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_api_endpoints", + "target": "docs_user_upgrade_to_developer_starter" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L47", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_api_endpoints", + "target": "docs_user_upgrade_to_developer_enterprise" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L20", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_health_check", + "target": "docs_user_codeblock_1" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L27", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_get_profile", + "target": "docs_user_codeblock_2" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L31", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_get_profile", + "target": "docs_user_codeblock_3" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L39", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_admin_access", + "target": "docs_user_codeblock_3" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L55", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_admin_access", + "target": "docs_user_codeblock_6" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L63", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_session_management", + "target": "docs_user_list_all_sessions" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L92", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_session_management", + "target": "docs_user_get_current_session" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L114", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_session_management", + "target": "docs_user_revoke_a_session" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L127", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_session_management", + "target": "docs_user_revoke_all_sessions" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L55", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_list_all_sessions", + "target": "docs_user_codeblock_4" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L59", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_list_all_sessions", + "target": "docs_user_codeblock_5" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L65", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_list_all_sessions", + "target": "docs_user_codeblock_7" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L69", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_list_all_sessions", + "target": "docs_user_codeblock_8" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L43", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_upgrade_to_developer_starter", + "target": "docs_user_codeblock_4" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L49", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_upgrade_to_developer_enterprise", + "target": "docs_user_codeblock_5" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L83", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_get_current_session", + "target": "docs_user_codeblock_6" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L94", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_get_current_session", + "target": "docs_user_codeblock_9" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L98", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_get_current_session", + "target": "docs_user_codeblock_10" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L91", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_revoke_a_session", + "target": "docs_user_codeblock_7" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L116", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_revoke_a_session", + "target": "docs_user_codeblock_11" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L120", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_revoke_a_session", + "target": "docs_user_codeblock_12" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L101", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_revoke_all_sessions", + "target": "docs_user_codeblock_8" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L105", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_revoke_all_sessions", + "target": "docs_user_codeblock_9" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L129", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_revoke_all_sessions", + "target": "docs_user_codeblock_13" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L133", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_revoke_all_sessions", + "target": "docs_user_codeblock_14" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L141", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_workflow", + "target": "docs_user_codeblock_10" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L158", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_workflow", + "target": "docs_user_codeblock_16" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-research.md", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_superpowers_investidor10_wallet_research_md", + "target": "superpowers_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-research.md", + "source_location": "L10", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", + "target": "superpowers_investidor10_wallet_research_1_feature_inventory_nav_structure" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-research.md", + "source_location": "L30", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", + "target": "superpowers_investidor10_wallet_research_2_user_lifecycle_end_to_end" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-research.md", + "source_location": "L40", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", + "target": "superpowers_investidor10_wallet_research_3_wallet_api_reference" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-research.md", + "source_location": "L65", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", + "target": "superpowers_investidor10_wallet_research_4_data_model_inference_from_payloads_no_db_access" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-research.md", + "source_location": "L74", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", + "target": "superpowers_investidor10_wallet_research_5_product_logic" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-research.md", + "source_location": "L82", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", + "target": "superpowers_investidor10_wallet_research_5b_gaps_unverified_do_not_treat_as_fact" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-research.md", + "source_location": "L86", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", + "target": "superpowers_investidor10_wallet_research_6_concrete_mansa_proposal_build_first_later_minimal_sketches" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_superpowers_investidor10_wallet_spec_md", + "target": "superpowers_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L12", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", + "target": "superpowers_investidor10_wallet_spec_1_requirements" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L38", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", + "target": "superpowers_investidor10_wallet_spec_2_domain_model" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L58", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", + "target": "superpowers_investidor10_wallet_spec_3_api_contracts_all_under_wallet_chain_main_controller_wallet_controller_py_main_service_wallet_service_py_fn_main_models_wallet_py_model_auth_wallet_local_dependency_on_the_introspect_contract_user_directive_2026_09_30_resolve_the_raw_token_x_access_token_authorization_bearer_mansa_token_cookie_order_per_main_app_authentication_util_py_54_66_introspecttoken_db_raw_main_app_authentication_introspect_py_14_userid_username_roles_roles_checkaccess_roles_permission_wallet_main_utils_roles_py_29_39_403_if_absent_depends_getsession_for_the_db_session" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L66", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", + "target": "superpowers_investidor10_wallet_spec_4_phased_build_plan_writing_plans_each_phase_independently_reviewable_reviewer_pass_per_phase" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L72", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", + "target": "superpowers_investidor10_wallet_spec_5_risks_assumptions_honest_flags_carried_over_do_not_treat_as_fact" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L81", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", + "target": "superpowers_investidor10_wallet_spec_6_readiness_assessment_s3_verified_2026_09_29_prerequisites_before_p1" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L121", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", + "target": "superpowers_investidor10_wallet_spec_7_independent_re_verification_swarm_s4_2026_09_29_corrections_to_6" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L49", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", + "target": "superpowers_investidor10_wallet_spec_3_api_contracts_all_under_wallet_chain_main_controller_wallet_controller_py_main_service_wallet_service_py_fn_main_models_wallet_py_model_auth_depends_usermanager_getcurrentuser_depends_getsession_throughout" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L49", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", + "target": "superpowers_investidor10_wallet_spec_3_api_contracts_all_under_api_wallet_chain_main_controller_wallet_controller_py_main_service_wallet_service_py_fn_main_models_wallet_py_model_auth_depends_usermanager_getcurrentuser_depends_getsession_throughout" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L14", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_1_requirements", + "target": "superpowers_investidor10_wallet_spec_1_1_functional_per_surface_tags_exists_build_on_it_partial_half_reusable_missing_greenfield" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L28", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_1_requirements", + "target": "superpowers_investidor10_wallet_spec_1_2_non_functional" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L87", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_6_readiness_assessment_s3_verified_2026_09_29_prerequisites_before_p1", + "target": "superpowers_investidor10_wallet_spec_6_1_db_migrations_user_db_contested_7_1_3_actions_incl_one_destructive_autogenerate_risk" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L94", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_6_readiness_assessment_s3_verified_2026_09_29_prerequisites_before_p1", + "target": "superpowers_investidor10_wallet_spec_6_2_stocks_price_access_confirmed_extended_7_2" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L100", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_6_readiness_assessment_s3_verified_2026_09_29_prerequisites_before_p1", + "target": "superpowers_investidor10_wallet_spec_6_3_wiring_auth_tests_contested_7_3_mounting_true_gating_test_seams_missing" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testrevokeallsessions" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L115", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_6_readiness_assessment_s3_verified_2026_09_29_prerequisites_before_p1", + "target": "superpowers_investidor10_wallet_spec_6_4_scraper_pipeline_p2_dividends_contested_7_4_data_present_source_staleness_gaps" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testprometheushealth" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L110", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_6_readiness_assessment_s3_verified_2026_09_29_prerequisites_before_p1", + "target": "superpowers_investidor10_wallet_spec_6_5_ordered_actions_before_p1_code" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testprometheusgetsessions" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L106", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_6_readiness_assessment_s3_verified_2026_09_29_prerequisites_before_p1", + "target": "superpowers_investidor10_wallet_spec_6_4_scraper_pipeline_p2_dividends_has_b3_contested_7_4_data_present_source_staleness_gaps" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testprometheuscreatesession" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L85", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_6_readiness_assessment_s3_verified_2026_09_29_prerequisites_before_p1", + "target": "superpowers_investidor10_wallet_spec_6_1_db_migrations_user_db_ready_2_actions" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testprometheusupdatesessiontitle" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L92", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_6_readiness_assessment_s3_verified_2026_09_29_prerequisites_before_p1", + "target": "superpowers_investidor10_wallet_spec_6_2_stocks_price_access_ready_for_full_series_one_new_helper_needed" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testprometheusgethistory" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L98", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_6_readiness_assessment_s3_verified_2026_09_29_prerequisites_before_p1", + "target": "superpowers_investidor10_wallet_spec_6_3_wiring_auth_tests_ready" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testprometheusdeletesession" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L104", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_6_readiness_assessment_s3_verified_2026_09_29_prerequisites_before_p1", + "target": "superpowers_investidor10_wallet_spec_6_4_scraper_pipeline_p2_dividends_has_b3_ready_public_sources_only" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testprometheuschat" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L125", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_7_independent_re_verification_swarm_s4_2026_09_29_corrections_to_6", + "target": "superpowers_investidor10_wallet_spec_7_1_db_migrations_6_1_contested_3_actions_one_destructive_risk" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_teststocksapihealth" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L133", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_7_independent_re_verification_swarm_s4_2026_09_29_corrections_to_6", + "target": "superpowers_investidor10_wallet_spec_7_2_stocks_price_access_6_2_confirmed_incomplete" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_teststocksapikeytest" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L143", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_7_independent_re_verification_swarm_s4_2026_09_29_corrections_to_6", + "target": "superpowers_investidor10_wallet_spec_7_3_wiring_auth_tests_6_3_contested_mounting_true" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_teststocksapihistorical" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L150", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_7_independent_re_verification_swarm_s4_2026_09_29_corrections_to_6", + "target": "superpowers_investidor10_wallet_spec_7_4_scraper_pipeline_6_4_contested" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_teststocksapifundamental" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L159", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_7_independent_re_verification_swarm_s4_2026_09_29_corrections_to_6", + "target": "superpowers_investidor10_wallet_spec_7_5_revised_pre_p1_actions_supersedes_6_5" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_teststocksapigeneratekey" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_superpowers_nginx_scaling_plan_md", + "target": "superpowers_nginx_scaling_plan_nginx_scaling_plan_reverse_proxy_response_cache_for_stocks_and_the_multi_server_evolution" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testaddroletouser" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L64", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_superpowers_nginx_scaling_plan_md", + "target": "superpowers_nginx_scaling_plan_part_1_implementation_plan" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testgetcurrentuser" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L347", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_superpowers_nginx_scaling_plan_md", + "target": "superpowers_nginx_scaling_plan_part_2_benchmark_plan" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testhashpasswordempty" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L510", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_superpowers_nginx_scaling_plan_md", + "target": "superpowers_nginx_scaling_plan_part_3_future_scaling_evolution_risks" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testverifyaccesstoken" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L661", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_superpowers_nginx_scaling_plan_md", + "target": "superpowers_nginx_scaling_plan_open_decisions_blocking_or_product_owned" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testextracttokenpayloadreraise" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L669", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_superpowers_nginx_scaling_plan_md", + "target": "superpowers_nginx_scaling_plan_next_actions_not_in_scope_here" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testmanagerinit" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L17", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_nginx_scaling_plan_reverse_proxy_response_cache_for_stocks_and_the_multi_server_evolution", + "target": "superpowers_nginx_scaling_plan_0_purpose_and_constraints" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/scheduler.py", - "source_location": "L32", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L35", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_scheduler_py", - "target": "utils_scheduler_getsharedscheduler" + "source": "superpowers_nginx_scaling_plan_nginx_scaling_plan_reverse_proxy_response_cache_for_stocks_and_the_multi_server_evolution", + "target": "superpowers_nginx_scaling_plan_0_1_rev_2_do_first_app_cache_ttl_increase_fields_cache_no_nginx_no_redis" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/scheduler.py", - "source_location": "L42", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L66", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_scheduler_py", - "target": "utils_scheduler_registerjob" + "source": "superpowers_nginx_scaling_plan_part_1_implementation_plan", + "target": "superpowers_nginx_scaling_plan_1_1_architecture_decision" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/scheduler.py", - "source_location": "L1", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L79", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_scheduler_rationale_1", - "target": "main_utils_scheduler_py" + "source": "superpowers_nginx_scaling_plan_part_1_implementation_plan", + "target": "superpowers_nginx_scaling_plan_1_2_file_layout" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/scheduler.py", - "source_location": "L50", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L96", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_scheduler_registerjob", - "target": "utils_scheduler_getsharedscheduler" + "source": "superpowers_nginx_scaling_plan_part_1_implementation_plan", + "target": "superpowers_nginx_scaling_plan_1_3_phase_p0_nginx_service_config_skeleton" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/scheduler.py", - "source_location": "L33", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L152", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_scheduler_rationale_33", - "target": "utils_scheduler_getsharedscheduler" + "source": "superpowers_nginx_scaling_plan_part_1_implementation_plan", + "target": "superpowers_nginx_scaling_plan_1_4_phase_p1_cache_locations_ttl_table_directives" }, { - "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/nginx-scaling-plan.md", + "source_location": "L251", "weight": 1.0, - "source": "service_prometheus_service_initialize", - "target": "utils_scheduler_registerjob" + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_part_1_implementation_plan", + "target": "superpowers_nginx_scaling_plan_1_5_phase_p2_port_scheme_worker_containers_keepalive" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/service/user_service.py", - "source_location": "L55", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L277", "weight": 1.0, - "source": "service_user_service_registersessioncleanupjobs", - "target": "utils_scheduler_registerjob" + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_part_1_implementation_plan", + "target": "superpowers_nginx_scaling_plan_1_6_phase_p3_remote_vps_upstreams_health_strategy" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/service/prometheus_service.py", - "source_location": "L69", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L309", "weight": 1.0, - "source": "service_prometheus_service_registermemorymaintenancejob", - "target": "utils_scheduler_registerjob" + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_part_1_implementation_plan", + "target": "superpowers_nginx_scaling_plan_1_7_phase_p4_handoff_design_no_code_in_this_plan" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/scheduler.py", - "source_location": "L43", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L320", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_scheduler_rationale_43", - "target": "utils_scheduler_registerjob" + "source": "superpowers_nginx_scaling_plan_part_1_implementation_plan", + "target": "superpowers_nginx_scaling_plan_1_8_quota_rate_limit_semantics_after_caching" }, { - "relation": "imports_from", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/service_manager.py", - "source_location": "L8", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L332", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_service_manager_py", - "target": "fastapi" + "source": "superpowers_nginx_scaling_plan_part_1_implementation_plan", + "target": "superpowers_nginx_scaling_plan_1_9_anti_scraping_note_todo_17" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/service_manager.py", - "source_location": "L21", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L336", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_service_manager_py", - "target": "utils_service_manager_getapp" + "source": "superpowers_nginx_scaling_plan_part_1_implementation_plan", + "target": "superpowers_nginx_scaling_plan_1_10_edge_cases_risks_implementation" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/service_manager.py", - "source_location": "L48", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L82", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_service_manager_py", - "target": "utils_service_manager_runall" + "source": "superpowers_nginx_scaling_plan_1_2_file_layout", + "target": "superpowers_nginx_scaling_plan_codeblock_1" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/service_manager.py", - "source_location": "L16", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L98", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_service_manager_py", - "target": "utils_service_manager_servicemanager" + "source": "superpowers_nginx_scaling_plan_1_3_phase_p0_nginx_service_config_skeleton", + "target": "superpowers_nginx_scaling_plan_codeblock_2" }, { - "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/nginx-scaling-plan.md", + "source_location": "L118", "weight": 1.0, - "source": "service_prometheus_service_initialize", - "target": "utils_service_manager_getapp" + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_1_3_phase_p0_nginx_service_config_skeleton", + "target": "superpowers_nginx_scaling_plan_codeblock_3" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/models/loader.py", - "source_location": "L12", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L139", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_models_loader_py", - "target": "models_loader_getembeddingmodel" + "source": "superpowers_nginx_scaling_plan_1_3_phase_p0_nginx_service_config_skeleton", + "target": "superpowers_nginx_scaling_plan_codeblock_4" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/models/loader.py", - "source_location": "L21", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L155", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_models_loader_py", - "target": "models_loader_embed" + "source": "superpowers_nginx_scaling_plan_1_4_phase_p1_cache_locations_ttl_table_directives", + "target": "superpowers_nginx_scaling_plan_codeblock_5" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/models/loader.py", - "source_location": "L11", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L186", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_models_loader_py", - "target": "models_loader_downloadmodel" + "source": "superpowers_nginx_scaling_plan_1_4_phase_p1_cache_locations_ttl_table_directives", + "target": "superpowers_nginx_scaling_plan_codeblock_6" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/vector.py", - "source_location": "L11", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L242", "weight": 1.0, - "source": "prometheus_vector_embed", - "target": "models_loader_getembeddingmodel" + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_1_4_phase_p1_cache_locations_ttl_table_directives", + "target": "superpowers_nginx_scaling_plan_codeblock_7" }, { - "relation": "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/nginx-scaling-plan.md", + "source_location": "L257", "weight": 1.0, - "source": "service_prometheus_service_initialize", - "target": "models_loader_getembeddingmodel" + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_1_5_phase_p2_port_scheme_worker_containers_keepalive", + "target": "superpowers_nginx_scaling_plan_codeblock_8" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/models/loader.py", - "source_location": "L22", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L279", "weight": 1.0, "confidence_score": 1.0, - "source": "models_loader_getembeddingmodel", - "target": "models_loader_embed" + "source": "superpowers_nginx_scaling_plan_1_6_phase_p3_remote_vps_upstreams_health_strategy", + "target": "superpowers_nginx_scaling_plan_codeblock_9" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/models/loader.py", - "source_location": "L21", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L291", "weight": 1.0, "confidence_score": 1.0, - "source": "models_loader_getembeddingmodel", - "target": "models_loader_downloadmodel" + "source": "superpowers_nginx_scaling_plan_1_6_phase_p3_remote_vps_upstreams_health_strategy", + "target": "superpowers_nginx_scaling_plan_codeblock_10" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/env.py", - "source_location": "L25", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L349", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_env_py", - "target": "migrations_env_getdatabaseurl" + "source": "superpowers_nginx_scaling_plan_part_2_benchmark_plan", + "target": "superpowers_nginx_scaling_plan_2_0_grounding_what_the_code_actually_does" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/env.py", - "source_location": "L28", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L381", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_env_py", - "target": "migrations_env_runmigrationsoffline" + "source": "superpowers_nginx_scaling_plan_part_2_benchmark_plan", + "target": "superpowers_nginx_scaling_plan_2_1_hypotheses" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/env.py", - "source_location": "L39", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L390", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_env_py", - "target": "migrations_env_runmigrationsonline" + "source": "superpowers_nginx_scaling_plan_part_2_benchmark_plan", + "target": "superpowers_nginx_scaling_plan_2_2_tooling" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/env.py", - "source_location": "L30", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L440", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_env_getdatabaseurl", - "target": "migrations_env_runmigrationsoffline" + "source": "superpowers_nginx_scaling_plan_part_2_benchmark_plan", + "target": "superpowers_nginx_scaling_plan_2_3_scenarios" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/env.py", - "source_location": "L41", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L452", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_env_getdatabaseurl", - "target": "migrations_env_runmigrationsonline" + "source": "superpowers_nginx_scaling_plan_part_2_benchmark_plan", + "target": "superpowers_nginx_scaling_plan_2_4_protocol" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/25af7ad931e7_initial_migration.py", - "source_location": "L21", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L463", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_25af7ad931e7_initial_migration_py", - "target": "versions_25af7ad931e7_initial_migration_upgrade" + "source": "superpowers_nginx_scaling_plan_part_2_benchmark_plan", + "target": "superpowers_nginx_scaling_plan_2_5_metrics" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/25af7ad931e7_initial_migration.py", - "source_location": "L61", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L467", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_25af7ad931e7_initial_migration_py", - "target": "versions_25af7ad931e7_initial_migration_downgrade" + "source": "superpowers_nginx_scaling_plan_part_2_benchmark_plan", + "target": "superpowers_nginx_scaling_plan_2_6_acceptance_thresholds_all_proposed_freeze_after_first_real_run" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/25af7ad931e7_initial_migration.py", - "source_location": "L1", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L484", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_25af7ad931e7_initial_migration_py", - "target": "versions_25af7ad931e7_initial_migration_rationale_1" + "source": "superpowers_nginx_scaling_plan_part_2_benchmark_plan", + "target": "superpowers_nginx_scaling_plan_2_7_results_doc_layout" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/4a2f1c9e3b5d_user_sessions.py", - "source_location": "L20", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L493", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_4a2f1c9e3b5d_user_sessions_py", - "target": "versions_4a2f1c9e3b5d_user_sessions_upgrade" + "source": "superpowers_nginx_scaling_plan_part_2_benchmark_plan", + "target": "superpowers_nginx_scaling_plan_2_8_feeding_status_todo_14" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/4a2f1c9e3b5d_user_sessions.py", - "source_location": "L47", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L499", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_4a2f1c9e3b5d_user_sessions_py", - "target": "versions_4a2f1c9e3b5d_user_sessions_downgrade" + "source": "superpowers_nginx_scaling_plan_part_2_benchmark_plan", + "target": "superpowers_nginx_scaling_plan_2_9_benchmark_risks" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/4a2f1c9e3b5d_user_sessions.py", - "source_location": "L1", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L393", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_4a2f1c9e3b5d_user_sessions_py", - "target": "versions_4a2f1c9e3b5d_user_sessions_rationale_1" + "source": "superpowers_nginx_scaling_plan_2_2_tooling", + "target": "superpowers_nginx_scaling_plan_codeblock_11" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/9f3b339dde20_drop_unused_user_sessions_columns.py", - "source_location": "L43", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L406", "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": "superpowers_nginx_scaling_plan_2_2_tooling", + "target": "superpowers_nginx_scaling_plan_codeblock_12" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/9f3b339dde20_drop_unused_user_sessions_columns.py", - "source_location": "L50", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L414", "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": "superpowers_nginx_scaling_plan_2_2_tooling", + "target": "superpowers_nginx_scaling_plan_codeblock_13" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/9f3b339dde20_drop_unused_user_sessions_columns.py", - "source_location": "L1", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L420", "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": "superpowers_nginx_scaling_plan_2_2_tooling", + "target": "superpowers_nginx_scaling_plan_codeblock_14" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/9f3b339dde20_drop_unused_user_sessions_columns.py", - "source_location": "L44", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L431", "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": "superpowers_nginx_scaling_plan_2_2_tooling", + "target": "superpowers_nginx_scaling_plan_codeblock_15" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/9f3b339dde20_drop_unused_user_sessions_columns.py", - "source_location": "L51", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L486", "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": "superpowers_nginx_scaling_plan_2_7_results_doc_layout", + "target": "superpowers_nginx_scaling_plan_codeblock_16" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/add_access_token_hash.py", - "source_location": "L21", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L512", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_add_access_token_hash_py", - "target": "versions_add_access_token_hash_upgrade" + "source": "superpowers_nginx_scaling_plan_part_3_future_scaling_evolution_risks", + "target": "superpowers_nginx_scaling_plan_3_0_verified_ground_truth" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/add_access_token_hash.py", - "source_location": "L54", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L529", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_add_access_token_hash_py", - "target": "versions_add_access_token_hash_downgrade" + "source": "superpowers_nginx_scaling_plan_part_3_future_scaling_evolution_risks", + "target": "superpowers_nginx_scaling_plan_3_1_target_topology" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/add_access_token_hash.py", - "source_location": "L1", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L546", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_add_access_token_hash_py", - "target": "versions_add_access_token_hash_rationale_1" + "source": "superpowers_nginx_scaling_plan_part_3_future_scaling_evolution_risks", + "target": "superpowers_nginx_scaling_plan_3_2_worker_container_extraction" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/add_access_token_hash.py", - "source_location": "L22", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L563", "weight": 1.0, "confidence_score": 1.0, - "source": "versions_add_access_token_hash_upgrade", - "target": "versions_add_access_token_hash_rationale_22" + "source": "superpowers_nginx_scaling_plan_part_3_future_scaling_evolution_risks", + "target": "superpowers_nginx_scaling_plan_3_3_nginx_upstream_evolution_validated_against_the_user_s_plan" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/add_access_token_hash.py", - "source_location": "L55", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L584", "weight": 1.0, "confidence_score": 1.0, - "source": "versions_add_access_token_hash_downgrade", - "target": "versions_add_access_token_hash_rationale_55" + "source": "superpowers_nginx_scaling_plan_part_3_future_scaling_evolution_risks", + "target": "superpowers_nginx_scaling_plan_3_4_todo_13_migration_drop_service_host_service_port" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/b1c2d3e4f5a6_create_prometheus_memories.py", - "source_location": "L22", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L591", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_b1c2d3e4f5a6_create_prometheus_memories_py", - "target": "versions_b1c2d3e4f5a6_create_prometheus_memories_upgrade" + "source": "superpowers_nginx_scaling_plan_part_3_future_scaling_evolution_risks", + "target": "superpowers_nginx_scaling_plan_3_5_redis_exactly_two_jobs" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/b1c2d3e4f5a6_create_prometheus_memories.py", - "source_location": "L50", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L607", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_b1c2d3e4f5a6_create_prometheus_memories_py", - "target": "versions_b1c2d3e4f5a6_create_prometheus_memories_downgrade" + "source": "superpowers_nginx_scaling_plan_part_3_future_scaling_evolution_risks", + "target": "superpowers_nginx_scaling_plan_3_6_cache_strategy_across_boxes" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/b1c2d3e4f5a6_create_prometheus_memories.py", - "source_location": "L60", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L613", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_b1c2d3e4f5a6_create_prometheus_memories_py", - "target": "versions_b1c2d3e4f5a6_create_prometheus_memories_fix_partial" + "source": "superpowers_nginx_scaling_plan_part_3_future_scaling_evolution_risks", + "target": "superpowers_nginx_scaling_plan_3_7_autoscaling_story_todo_11" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/b1c2d3e4f5a6_create_prometheus_memories.py", - "source_location": "L1", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L618", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_b1c2d3e4f5a6_create_prometheus_memories_py", - "target": "versions_b1c2d3e4f5a6_create_prometheus_memories_rationale_1" + "source": "superpowers_nginx_scaling_plan_part_3_future_scaling_evolution_risks", + "target": "superpowers_nginx_scaling_plan_3_8_forgevm_interplay_todo_12" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/c2e4f6a8b0c1_drop_embedding_model_version.py", - "source_location": "L22", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L622", "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": "superpowers_nginx_scaling_plan_part_3_future_scaling_evolution_risks", + "target": "superpowers_nginx_scaling_plan_3_9_risk_register" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/c2e4f6a8b0c1_drop_embedding_model_version.py", - "source_location": "L27", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L642", "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": "superpowers_nginx_scaling_plan_part_3_future_scaling_evolution_risks", + "target": "superpowers_nginx_scaling_plan_3_10_migration_sequence_verification" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/c2e4f6a8b0c1_drop_embedding_model_version.py", - "source_location": "L1", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L534", "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": "superpowers_nginx_scaling_plan_3_1_target_topology", + "target": "superpowers_nginx_scaling_plan_codeblock_17" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/d3df3fc5ca72_rename_memory_base_score.py", - "source_location": "L17", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L567", "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": "superpowers_nginx_scaling_plan_3_3_nginx_upstream_evolution_validated_against_the_user_s_plan", + "target": "superpowers_nginx_scaling_plan_codeblock_18" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/d3df3fc5ca72_rename_memory_base_score.py", - "source_location": "L21", + "source_file": "docs/superpowers/orunmila-harness-gaps.md", + "source_location": "L1", "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": "docs_superpowers_orunmila_harness_gaps_md", + "target": "superpowers_orunmila_harness_gaps_orunmila_harness_loop_gap_analysis" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/d3e4f5a6b7c8_add_prometheus_sandboxes.py", - "source_location": "L22", + "source_file": "docs/superpowers/orunmila-harness-gaps.md", + "source_location": "L5", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_d3e4f5a6b7c8_add_prometheus_sandboxes_py", - "target": "versions_d3e4f5a6b7c8_add_prometheus_sandboxes_upgrade" + "source": "superpowers_orunmila_harness_gaps_orunmila_harness_loop_gap_analysis", + "target": "superpowers_orunmila_harness_gaps_1_orunmila_s_loop_today" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/d3e4f5a6b7c8_add_prometheus_sandboxes.py", - "source_location": "L36", + "source_file": "docs/superpowers/orunmila-harness-gaps.md", + "source_location": "L9", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_d3e4f5a6b7c8_add_prometheus_sandboxes_py", - "target": "versions_d3e4f5a6b7c8_add_prometheus_sandboxes_downgrade" + "source": "superpowers_orunmila_harness_gaps_orunmila_harness_loop_gap_analysis", + "target": "superpowers_orunmila_harness_gaps_2_where_orunmila_is_already_ahead_do_not_rebuild" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/d3e4f5a6b7c8_add_prometheus_sandboxes.py", - "source_location": "L1", + "source_file": "docs/superpowers/orunmila-harness-gaps.md", + "source_location": "L16", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_d3e4f5a6b7c8_add_prometheus_sandboxes_py", - "target": "versions_d3e4f5a6b7c8_add_prometheus_sandboxes_rationale_1" + "source": "superpowers_orunmila_harness_gaps_orunmila_harness_loop_gap_analysis", + "target": "superpowers_orunmila_harness_gaps_3_the_12_modern_patterns_vs_orunmila" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories.py", - "source_location": "L21", + "source_file": "docs/superpowers/orunmila-harness-gaps.md", + "source_location": "L33", "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": "superpowers_orunmila_harness_gaps_orunmila_harness_loop_gap_analysis", + "target": "superpowers_orunmila_harness_gaps_4_p0_reliability_do_first_each_one_pr" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories.py", - "source_location": "L45", + "source_file": "docs/superpowers/orunmila-harness-gaps.md", + "source_location": "L39", "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": "superpowers_orunmila_harness_gaps_orunmila_harness_loop_gap_analysis", + "target": "superpowers_orunmila_harness_gaps_5_p1_context_quality_biggest_behavior_delta_per_line" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories.py", - "source_location": "L1", + "source_file": "docs/superpowers/orunmila-harness-gaps.md", + "source_location": "L47", "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": "superpowers_orunmila_harness_gaps_orunmila_harness_loop_gap_analysis", + "target": "superpowers_orunmila_harness_gaps_6_p2_structural_larger_sequenced_after_p0_p1" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/e5f6a7b8c9d0_drop_workspace_path_prometheus_sandboxes.py", - "source_location": "L22", + "source_file": "docs/superpowers/orunmila-harness-gaps.md", + "source_location": "L54", "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": "superpowers_orunmila_harness_gaps_orunmila_harness_loop_gap_analysis", + "target": "superpowers_orunmila_harness_gaps_7_p3_later_deliberate_scope_not_accidents" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/e5f6a7b8c9d0_drop_workspace_path_prometheus_sandboxes.py", - "source_location": "L26", + "source_file": "docs/superpowers/orunmila-harness-gaps.md", + "source_location": "L60", "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": "superpowers_orunmila_harness_gaps_orunmila_harness_loop_gap_analysis", + "target": "superpowers_orunmila_harness_gaps_8_sources" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/e5f6a7b8c9d0_drop_workspace_path_prometheus_sandboxes.py", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", "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" + "source": "docs_superpowers_uvicorn_worker_scaling_plan_md", + "target": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_migration_\u00e2_what_must_change" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/f1a2b3c4d5e6_session_gc_index.py", - "source_location": "L26", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_f1a2b3c4d5e6_session_gc_index_py", - "target": "versions_f1a2b3c4d5e6_session_gc_index_upgrade" + "source": "docs_superpowers_uvicorn_worker_scaling_plan_md", + "target": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_scaling_verified_state_and_evaluated_plan" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/f1a2b3c4d5e6_session_gc_index.py", - "source_location": "L34", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_f1a2b3c4d5e6_session_gc_index_py", - "target": "versions_f1a2b3c4d5e6_session_gc_index_downgrade" + "source": "docs_superpowers_uvicorn_worker_scaling_plan_md", + "target": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_scaling_verified_state_evaluated_plan" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/f1a2b3c4d5e6_session_gc_index.py", - "source_location": "L1", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L17", "weight": 1.0, "confidence_score": 1.0, - "source": "versions_f1a2b3c4d5e6_session_gc_index_rationale_1", - "target": "migrations_versions_f1a2b3c4d5e6_session_gc_index_py" + "source": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_migration_\u00e2_what_must_change", + "target": "superpowers_uvicorn_worker_scaling_plan_0_the_blockers_ranked" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/f7a8b9c0d1e2_rename_prometheus_to_orunmila.py", - "source_location": "L25", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L32", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_f7a8b9c0d1e2_rename_prometheus_to_orunmila_py", - "target": "versions_f7a8b9c0d1e2_rename_prometheus_to_orunmila_upgrade" + "source": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_migration_\u00e2_what_must_change", + "target": "superpowers_uvicorn_worker_scaling_plan_1_verified_state_compact" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/f7a8b9c0d1e2_rename_prometheus_to_orunmila.py", - "source_location": "L43", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L52", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_f7a8b9c0d1e2_rename_prometheus_to_orunmila_py", - "target": "versions_f7a8b9c0d1e2_rename_prometheus_to_orunmila_downgrade" + "source": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_migration_\u00e2_what_must_change", + "target": "superpowers_uvicorn_worker_scaling_plan_2_change_inventory_the_spine" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/f7a8b9c0d1e2_rename_prometheus_to_orunmila.py", - "source_location": "L1", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L135", "weight": 1.0, "confidence_score": 1.0, - "source": "versions_f7a8b9c0d1e2_rename_prometheus_to_orunmila_rationale_1", - "target": "migrations_versions_f7a8b9c0d1e2_rename_prometheus_to_orunmila_py" + "source": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_migration_\u00e2_what_must_change", + "target": "superpowers_uvicorn_worker_scaling_plan_3_rulings_conflicts_i_adjudicated" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L1", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L147", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_project_overview" + "source": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_migration_\u00e2_what_must_change", + "target": "superpowers_uvicorn_worker_scaling_plan_4_design_spec_alignment_2026_09_29_nginx_scaling_design_md" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L4", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L162", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_dev_commands" + "source": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_migration_\u00e2_what_must_change", + "target": "superpowers_uvicorn_worker_scaling_plan_5_sequencing_verification_and_bans" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L23", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L174", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_architecture" + "source": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_migration_\u00e2_what_must_change", + "target": "superpowers_uvicorn_worker_scaling_plan_6_options_demoted" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L47", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L186", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_code_style" + "source": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_migration_\u00e2_what_must_change", + "target": "superpowers_uvicorn_worker_scaling_plan_7_risks" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L34", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L200", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_testing" + "source": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_migration_\u00e2_what_must_change", + "target": "superpowers_uvicorn_worker_scaling_plan_8_evidence_index" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L38", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L54", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_graphify" + "source": "superpowers_uvicorn_worker_scaling_plan_2_change_inventory_the_spine", + "target": "superpowers_uvicorn_worker_scaling_plan_b1_\u00e2_startup_and_process_model_must_fix" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L60", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L67", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_swarm_delegation_default" + "source": "superpowers_uvicorn_worker_scaling_plan_2_change_inventory_the_spine", + "target": "superpowers_uvicorn_worker_scaling_plan_b2_\u00e2_cache_under_n_1_must_fix" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L47", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L79", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_stocks_api_pandas_first_pattern" + "source": "superpowers_uvicorn_worker_scaling_plan_2_change_inventory_the_spine", + "target": "superpowers_uvicorn_worker_scaling_plan_b3_\u00e2_db_pools_must_fix_at_n\u00e2_3_on_one_server" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L54", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L98", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_scraper_b3_xango_batch_data_pipeline" + "source": "superpowers_uvicorn_worker_scaling_plan_2_change_inventory_the_spine", + "target": "superpowers_uvicorn_worker_scaling_plan_b4_\u00e2_migrations_must_fix" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L60", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L107", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_auth_users_dual_layer_session_security" + "source": "superpowers_uvicorn_worker_scaling_plan_2_change_inventory_the_spine", + "target": "superpowers_uvicorn_worker_scaling_plan_b5_\u00e2_per_process_state_ranked_scope_by_service" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L28", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L123", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_key_quirks" + "source": "superpowers_uvicorn_worker_scaling_plan_2_change_inventory_the_spine", + "target": "superpowers_uvicorn_worker_scaling_plan_b6_\u00e2_deployment_glue_must_build" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L57", + "source_file": "docs/superpowers/wallet-orchestrator-prompt.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_prometheus_ai_chat_strengths_gaps" + "source": "docs_superpowers_wallet_orchestrator_prompt_md", + "target": "superpowers_wallet_orchestrator_prompt_wallet_orchestrator_prompt_p1_p2_p3_one_goal_per_scope" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L5", + "source_file": "docs/superpowers/wallet-orchestrator-prompt.md", + "source_location": "L10", "weight": 1.0, "confidence_score": 1.0, - "source": "server_agents_dev_commands", - "target": "server_agents_codeblock_1" + "source": "superpowers_wallet_orchestrator_prompt_wallet_orchestrator_prompt_p1_p2_p3_one_goal_per_scope", + "target": "superpowers_wallet_orchestrator_prompt_the_three_goals_sequential_one_at_a_time_never_parallel" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L31", + "source_file": "docs/superpowers/wallet-orchestrator-prompt.md", + "source_location": "L30", "weight": 1.0, "confidence_score": 1.0, - "source": "server_agents_dev_commands", - "target": "server_agents_ci_pipeline_order" + "source": "superpowers_wallet_orchestrator_prompt_wallet_orchestrator_prompt_p1_p2_p3_one_goal_per_scope", + "target": "superpowers_wallet_orchestrator_prompt_swarm_protocol_all_three_goals" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "README.md", - "source_location": "L1", + "source_file": "docs/superpowers/wallet-orchestrator-prompt.md", + "source_location": "L40", "weight": 1.0, "confidence_score": 1.0, - "source": "readme_md", - "target": "server_readme_mansa_server" + "source": "superpowers_wallet_orchestrator_prompt_wallet_orchestrator_prompt_p1_p2_p3_one_goal_per_scope", + "target": "superpowers_wallet_orchestrator_prompt_standing_rules_do_not_re_derive" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "README.md", - "source_location": "L7", + "source_file": "docs/superpowers/wallet-orchestrator-prompt.md", + "source_location": "L78", "weight": 1.0, "confidence_score": 1.0, - "source": "server_readme_mansa_server", - "target": "server_readme_run_with_docker" + "source": "superpowers_wallet_orchestrator_prompt_wallet_orchestrator_prompt_p1_p2_p3_one_goal_per_scope", + "target": "superpowers_wallet_orchestrator_prompt_environment" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "README.md", - "source_location": "L20", + "source_file": "docs/superpowers/benchmarks/stocks-cache-ttl.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "server_readme_mansa_server", - "target": "server_readme_environment_setup" + "source": "docs_superpowers_benchmarks_stocks_cache_ttl_md", + "target": "benchmarks_stocks_cache_ttl_stocks_endpoint_cache_ttl_6h_rss_check" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "README.md", - "source_location": "L85", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "server_readme_mansa_server", - "target": "server_readme_health_check" + "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": "README.md", - "source_location": "L91", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L11", "weight": 1.0, "confidence_score": 1.0, - "source": "server_readme_mansa_server", - "target": "server_readme_license" + "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": "README.md", - "source_location": "L9", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L26", "weight": 1.0, "confidence_score": 1.0, - "source": "server_readme_run_with_docker", - "target": "server_readme_codeblock_1" + "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": "README.md", - "source_location": "L24", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L242", "weight": 1.0, "confidence_score": 1.0, - "source": "server_readme_environment_setup", - "target": "server_readme_codeblock_2" + "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": "contains", "confidence": "EXTRACTED", - "source_file": "README.md", - "source_location": "L87", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L412", "weight": 1.0, "confidence_score": 1.0, - "source": "server_readme_health_check", - "target": "server_readme_codeblock_3" + "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": "contains", "confidence": "EXTRACTED", - "source_file": "TODO.md", - "source_location": "L25", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L576", "weight": 1.0, "confidence_score": 1.0, - "source": "todo_md", - "target": "server_todo_user_structure_defined_by_string_roles" + "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": "TODO.md", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L863", "weight": 1.0, "confidence_score": 1.0, - "source": "todo_md", - "target": "server_todo_priorities_active_order_2026_09_29" + "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": "TODO.md", - "source_location": "L34", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L41", "weight": 1.0, "confidence_score": 1.0, - "source": "server_todo_user_structure_defined_by_string_roles", - "target": "server_todo_user" + "source": "plans_2026_08_09_sse_resume_task_1_streambus_module_with_unit_tests", + "target": "plans_2026_08_09_sse_resume_codeblock_1" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "TODO.md", - "source_location": "L37", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L130", "weight": 1.0, "confidence_score": 1.0, - "source": "server_todo_user_structure_defined_by_string_roles", - "target": "server_todo_premium" + "source": "plans_2026_08_09_sse_resume_task_1_streambus_module_with_unit_tests", + "target": "plans_2026_08_09_sse_resume_codeblock_2" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "TODO.md", - "source_location": "L40", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L235", "weight": 1.0, "confidence_score": 1.0, - "source": "server_todo_user_structure_defined_by_string_roles", - "target": "server_todo_developer" + "source": "plans_2026_08_09_sse_resume_task_1_streambus_module_with_unit_tests", + "target": "plans_2026_08_09_sse_resume_codeblock_3" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "TODO.md", - "source_location": "L67", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L257", "weight": 1.0, "confidence_score": 1.0, - "source": "server_todo_user_structure_defined_by_string_roles", - "target": "server_todo_stocks_api" + "source": "plans_2026_08_09_sse_resume_task_2_background_run_get_resume_route_in_prometheus_controller", + "target": "plans_2026_08_09_sse_resume_codeblock_4" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "TODO.md", - "source_location": "L70", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L329", "weight": 1.0, "confidence_score": 1.0, - "source": "server_todo_user_structure_defined_by_string_roles", - "target": "server_todo_prometheus" + "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": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L405", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_md", - "target": "docs_authentication_authentication_management" + "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": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "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": "docs_authentication_authentication_management", - "target": "docs_authentication_token_session_lifetime" + "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": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L11", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L498", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_token_extraction_order" + "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": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L21", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L569", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_cookie_handling_conditional_secure" + "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": "docs/authentication.md", - "source_location": "L30", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L590", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_session_data_model_family_only" + "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": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L39", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L659", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_roles_and_permissions" + "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": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L61", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L681", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_rate_limits" + "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": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L49", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L768", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_api_endpoints" + "source": "plans_2026_08_09_sse_resume_task_4_frontend_app_jsx_resume_lifecycle_boot_resume", + "target": "plans_2026_08_09_sse_resume_codeblock_13" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L117", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L835", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_security_features" + "source": "plans_2026_08_09_sse_resume_task_4_frontend_app_jsx_resume_lifecycle_boot_resume", + "target": "plans_2026_08_09_sse_resume_codeblock_14" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L138", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L856", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_not_implemented" + "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": "docs/authentication.md", - "source_location": "L154", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L889", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_workflow" + "source": "plans_2026_08_09_sse_resume_task_5_full_verification_todo_check_off", + "target": "plans_2026_08_09_sse_resume_codeblock_16" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L187", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_license" + "source": "docs_superpowers_plans_2026_08_15_stocks_api_perf_md", + "target": "plans_2026_08_15_stocks_api_perf_stocks_api_performance_pre_materialized_cache_sync_handlers_implementation_plan" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L9", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_usage" + "source": "plans_2026_08_15_stocks_api_perf_stocks_api_performance_pre_materialized_cache_sync_handlers_implementation_plan", + "target": "plans_2026_08_15_stocks_api_perf_global_constraints" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L130", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L23", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_device_detection" + "source": "plans_2026_08_15_stocks_api_perf_stocks_api_performance_pre_materialized_cache_sync_handlers_implementation_plan", + "target": "plans_2026_08_15_stocks_api_perf_file_structure" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L144", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L633", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_session_management" + "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": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L51", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L35", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_api_endpoints", - "target": "docs_authentication_health_check" + "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": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L57", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L251", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_api_endpoints", - "target": "docs_authentication_user_registration" + "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": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L65", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L392", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_api_endpoints", - "target": "docs_authentication_user_login" + "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": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L84", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L468", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_api_endpoints", - "target": "docs_authentication_logout" + "source": "plans_2026_08_15_stocks_api_perf_file_structure", + "target": "plans_2026_08_15_stocks_api_perf_task_4_pre_parsed_cotation_date_index_replace_filtercotationcolumn_hot_path" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L94", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L613", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_api_endpoints", - "target": "docs_authentication_google_oauth2_login" + "source": "plans_2026_08_15_stocks_api_perf_file_structure", + "target": "plans_2026_08_15_stocks_api_perf_task_5_full_verification_graphify_update" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L120", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L49", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_api_endpoints", - "target": "docs_authentication_google_callback_cookie_only" + "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": "docs/authentication.md", - "source_location": "L77", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L88", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_api_endpoints", - "target": "docs_authentication_profile_me" + "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": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L108", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L118", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_api_endpoints", - "target": "docs_authentication_google_callback" + "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": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L76", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L131", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_health_check", - "target": "docs_authentication_codeblock_1" + "source": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_4" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L52", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L177", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_health_check", - "target": "docs_authentication_codeblock_2" + "source": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_5" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L11", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L228", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_usage", - "target": "docs_authentication_codeblock_1" + "source": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_6" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L84", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L244", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_user_registration", - "target": "docs_authentication_codeblock_2" + "source": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_7" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L59", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L263", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_user_registration", - "target": "docs_authentication_codeblock_3" + "source": "plans_2026_08_15_stocks_api_perf_task_2_fast_paths_in_stocksquerymanager_for_default_shaped_queries", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_8" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L94", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L315", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_user_login", - "target": "docs_authentication_codeblock_3" + "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": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L67", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L349", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_user_login", - "target": "docs_authentication_codeblock_4" + "source": "plans_2026_08_15_stocks_api_perf_task_2_fast_paths_in_stocksquerymanager_for_default_shaped_queries", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_10" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L104", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L405", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_logout", - "target": "docs_authentication_codeblock_4" + "source": "plans_2026_08_15_stocks_api_perf_task_3_convert_query_handlers_to_sync_def", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_11" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L86", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L461", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_logout", - "target": "docs_authentication_codeblock_6" + "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": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L113", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L482", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_google_oauth2_login", - "target": "docs_authentication_codeblock_5" + "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": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L98", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L512", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_google_oauth2_login", - "target": "docs_authentication_codeblock_7" + "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": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L104", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L519", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_google_oauth2_login", - "target": "docs_authentication_codeblock_8" + "source": "plans_2026_08_15_stocks_api_perf_task_4_pre_parsed_cotation_date_index_replace_filtercotationcolumn_hot_path", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_15" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L79", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L539", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_profile_me", - "target": "docs_authentication_codeblock_5" + "source": "plans_2026_08_15_stocks_api_perf_task_4_pre_parsed_cotation_date_index_replace_filtercotationcolumn_hot_path", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_16" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L144", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L548", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_workflow", - "target": "docs_authentication_codeblock_6" + "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": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L156", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L606", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_workflow", - "target": "docs_authentication_codeblock_9" + "source": "plans_2026_08_15_stocks_api_perf_task_4_pre_parsed_cotation_date_index_replace_filtercotationcolumn_hot_path", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_18" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/orunmila.md", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_orunmila_md", - "target": "docs_orunmila_orunmila" + "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": "contains", "confidence": "EXTRACTED", - "source_file": "docs/orunmila.md", - "source_location": "L7", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L16", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_orunmila_orunmila", - "target": "docs_orunmila_usage" + "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": "contains", "confidence": "EXTRACTED", - "source_file": "docs/orunmila.md", - "source_location": "L53", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L632", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_orunmila_orunmila", - "target": "docs_orunmila_workflow" + "source": "plans_2026_08_15_workspace_endpoints_workspace_file_endpoints_agent_serve_file_tool_implementation_plan", + "target": "plans_2026_08_15_workspace_endpoints_self_review" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/orunmila.md", - "source_location": "L65", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L29", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_orunmila_orunmila", - "target": "docs_orunmila_api_endpoints" + "source": "plans_2026_08_15_workspace_endpoints_global_constraints", + "target": "plans_2026_08_15_workspace_endpoints_task_1_sandbox_delete_file_binary_write" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/orunmila.md", - "source_location": "L72", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L152", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_orunmila_orunmila", - "target": "docs_orunmila_license" + "source": "plans_2026_08_15_workspace_endpoints_global_constraints", + "target": "plans_2026_08_15_workspace_endpoints_task_2_dependency_config_setting" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/orunmila.md", - "source_location": "L9", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L198", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_orunmila_usage", - "target": "docs_orunmila_codeblock_1" + "source": "plans_2026_08_15_workspace_endpoints_global_constraints", + "target": "plans_2026_08_15_workspace_endpoints_task_3_controller_endpoints" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/orunmila.md", - "source_location": "L49", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L465", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_orunmila_usage", - "target": "docs_orunmila_codeblock_2" + "source": "plans_2026_08_15_workspace_endpoints_global_constraints", + "target": "plans_2026_08_15_workspace_endpoints_task_4_serve_file_agent_tool" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/orunmila.md", - "source_location": "L55", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L611", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_orunmila_workflow", - "target": "docs_orunmila_codeblock_3" + "source": "plans_2026_08_15_workspace_endpoints_global_constraints", + "target": "plans_2026_08_15_workspace_endpoints_task_5_full_verification" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/scraper_b3.md", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L43", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_scraper_b3_md", - "target": "docs_scraper_b3_b3_market_scraper" + "source": "plans_2026_08_15_workspace_endpoints_task_1_sandbox_delete_file_binary_write", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_1" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/scraper_b3.md", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L108", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_scraper_b3_md", - "target": "docs_scraper_b3_brazilian_stocks_market_scraper" + "source": "plans_2026_08_15_workspace_endpoints_task_1_sandbox_delete_file_binary_write", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_2" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/scraper_b3.md", - "source_location": "L5", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L145", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_scraper_b3_b3_market_scraper", - "target": "docs_scraper_b3_sources_6" + "source": "plans_2026_08_15_workspace_endpoints_task_1_sandbox_delete_file_binary_write", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_3" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/scraper_b3.md", - "source_location": "L19", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L166", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_scraper_b3_b3_market_scraper", - "target": "docs_scraper_b3_scheduling_config_config_py_77_81_scraper_service_py_23_36" + "source": "plans_2026_08_15_workspace_endpoints_task_2_dependency_config_setting", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_4" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/scraper_b3.md", - "source_location": "L31", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L172", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_scraper_b3_b3_market_scraper", - "target": "docs_scraper_b3_xango_score_main_app_scraper_b3_xango_py" + "source": "plans_2026_08_15_workspace_endpoints_task_2_dependency_config_setting", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_5" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/scraper_b3.md", - "source_location": "L41", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L180", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_scraper_b3_b3_market_scraper", - "target": "docs_scraper_b3_outputs" + "source": "plans_2026_08_15_workspace_endpoints_task_2_dependency_config_setting", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_6" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/scraper_b3.md", - "source_location": "L21", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L191", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_scraper_b3_scheduling_config_config_py_77_81_scraper_service_py_23_36", - "target": "docs_scraper_b3_codeblock_1" + "source": "plans_2026_08_15_workspace_endpoints_task_2_dependency_config_setting", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_7" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/scraper_b3.md", - "source_location": "L8", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L212", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_scraper_b3_usage", - "target": "docs_scraper_b3_codeblock_1" + "source": "plans_2026_08_15_workspace_endpoints_task_3_controller_endpoints", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_8" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L368", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_md", - "target": "docs_stocks_api_brazilian_stocks_market_api" + "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": "docs/stocks_api.md", - "source_location": "L7", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L375", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_brazilian_stocks_market_api", - "target": "docs_stocks_api_usage" + "source": "plans_2026_08_15_workspace_endpoints_task_3_controller_endpoints", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_10" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L22", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L381", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_brazilian_stocks_market_api", - "target": "docs_stocks_api_auth" + "source": "plans_2026_08_15_workspace_endpoints_task_3_controller_endpoints", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_11" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L32", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L458", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_brazilian_stocks_market_api", - "target": "docs_stocks_api_api_endpoints" + "source": "plans_2026_08_15_workspace_endpoints_task_3_controller_endpoints", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_12" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L90", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L479", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_brazilian_stocks_market_api", - "target": "docs_stocks_api_response_format" + "source": "plans_2026_08_15_workspace_endpoints_task_4_serve_file_agent_tool", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_13" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L119", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L560", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_brazilian_stocks_market_api", - "target": "docs_stocks_api_architecture" + "source": "plans_2026_08_15_workspace_endpoints_task_4_serve_file_agent_tool", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_14" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L113", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L566", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_brazilian_stocks_market_api", - "target": "docs_stocks_api_license" + "source": "plans_2026_08_15_workspace_endpoints_task_4_serve_file_agent_tool", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_15" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L9", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L593", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_usage", - "target": "docs_stocks_api_codeblock_1" + "source": "plans_2026_08_15_workspace_endpoints_task_4_serve_file_agent_tool", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_16" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L34", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L604", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_api_endpoints", - "target": "docs_stocks_api_health_check" + "source": "plans_2026_08_15_workspace_endpoints_task_4_serve_file_agent_tool", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_17" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L40", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L626", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_api_endpoints", - "target": "docs_stocks_api_field_discovery" + "source": "plans_2026_08_15_workspace_endpoints_task_5_full_verification", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_18" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L53", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_api_endpoints", - "target": "docs_stocks_api_historical_data" + "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": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L72", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_api_endpoints", - "target": "docs_stocks_api_fundamental_data" + "source": "plans_2026_08_15_workspace_frontend_workspace_files_ui_promptbox_upload_implementation_plan", + "target": "plans_2026_08_15_workspace_frontend_backend_contract_source_of_truth_for_api_js" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L74", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L32", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_api_endpoints", - "target": "docs_stocks_api_cotations_10_year_daily_history" + "source": "plans_2026_08_15_workspace_frontend_workspace_files_ui_promptbox_upload_implementation_plan", + "target": "plans_2026_08_15_workspace_frontend_global_constraints" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L87", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L43", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_api_endpoints", - "target": "docs_stocks_api_live_price" + "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": "docs/stocks_api.md", - "source_location": "L98", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L176", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_api_endpoints", - "target": "docs_stocks_api_mcp_ai_agent_tools" + "source": "plans_2026_08_15_workspace_frontend_global_constraints", + "target": "plans_2026_08_15_workspace_frontend_task_2_settings_menu_workspace_files_grid_in_sessionsidebar" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L40", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L294", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_api_endpoints", - "target": "docs_stocks_api_api_key_verification" + "source": "plans_2026_08_15_workspace_frontend_global_constraints", + "target": "plans_2026_08_15_workspace_frontend_task_3_drag_drop_file_upload_in_the_promptbox_inputbar_jsx" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L45", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L403", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_api_endpoints", - "target": "docs_stocks_api_key_management" + "source": "plans_2026_08_15_workspace_frontend_global_constraints", + "target": "plans_2026_08_15_workspace_frontend_task_4_docker_restart_e2e_of_prometheus_chat_stream_performed_by_controller_not_a_subagent" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L35", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L61", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_health_check", - "target": "docs_stocks_api_codeblock_2" + "source": "plans_2026_08_15_workspace_frontend_task_1_api_layer_workspace_functions_in_src_api_js", + "target": "plans_2026_08_15_workspace_frontend_codeblock_1" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L42", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L122", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_field_discovery", - "target": "docs_stocks_api_codeblock_3" + "source": "plans_2026_08_15_workspace_frontend_task_1_api_layer_workspace_functions_in_src_api_js", + "target": "plans_2026_08_15_workspace_frontend_codeblock_2" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L41", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L169", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_api_key_verification", - "target": "docs_stocks_api_codeblock_3" + "source": "plans_2026_08_15_workspace_frontend_task_1_api_layer_workspace_functions_in_src_api_js", + "target": "plans_2026_08_15_workspace_frontend_codeblock_3" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L50", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L191", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_historical_data", - "target": "docs_stocks_api_codeblock_4" + "source": "plans_2026_08_15_workspace_frontend_task_2_settings_menu_workspace_files_grid_in_sessionsidebar", + "target": "plans_2026_08_15_workspace_frontend_codeblock_4" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L55", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L246", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_historical_data", - "target": "docs_stocks_api_codeblock_5" + "source": "plans_2026_08_15_workspace_frontend_task_2_settings_menu_workspace_files_grid_in_sessionsidebar", + "target": "plans_2026_08_15_workspace_frontend_codeblock_5" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L68", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L272", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_historical_data", - "target": "docs_stocks_api_codeblock_6" + "source": "plans_2026_08_15_workspace_frontend_task_2_settings_menu_workspace_files_grid_in_sessionsidebar", + "target": "plans_2026_08_15_workspace_frontend_codeblock_6" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L47", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L287", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_key_management", - "target": "docs_stocks_api_codeblock_4" + "source": "plans_2026_08_15_workspace_frontend_task_2_settings_menu_workspace_files_grid_in_sessionsidebar", + "target": "plans_2026_08_15_workspace_frontend_codeblock_7" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L63", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L308", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_fundamental_data", - "target": "docs_stocks_api_codeblock_5" + "source": "plans_2026_08_15_workspace_frontend_task_3_drag_drop_file_upload_in_the_promptbox_inputbar_jsx", + "target": "plans_2026_08_15_workspace_frontend_codeblock_8" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L74", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L372", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_fundamental_data", - "target": "docs_stocks_api_codeblock_7" + "source": "plans_2026_08_15_workspace_frontend_task_3_drag_drop_file_upload_in_the_promptbox_inputbar_jsx", + "target": "plans_2026_08_15_workspace_frontend_codeblock_9" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L86", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L396", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_fundamental_data", - "target": "docs_stocks_api_codeblock_8" + "source": "plans_2026_08_15_workspace_frontend_task_3_drag_drop_file_upload_in_the_promptbox_inputbar_jsx", + "target": "plans_2026_08_15_workspace_frontend_codeblock_10" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L76", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_cotations_10_year_daily_history", - "target": "docs_stocks_api_codeblock_6" + "source": "docs_superpowers_plans_2026_08_17_openui_migration_md", + "target": "plans_2026_08_17_openui_migration_openui_migration_plan" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L89", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L20", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_live_price", - "target": "docs_stocks_api_codeblock_7" + "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/stocks_api.md", - "source_location": "L106", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L30", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_response_format", - "target": "docs_stocks_api_codeblock_8" + "source": "plans_2026_08_17_openui_migration_openui_migration_plan", + "target": "plans_2026_08_17_openui_migration_file_structure" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L94", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L52", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_response_format", - "target": "docs_stocks_api_codeblock_9" + "source": "plans_2026_08_17_openui_migration_openui_migration_plan", + "target": "plans_2026_08_17_openui_migration_task_1_install_openui_remove_mdocui" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L80", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_md", - "target": "docs_user_user_management" + "source": "plans_2026_08_17_openui_migration_openui_migration_plan", + "target": "plans_2026_08_17_openui_migration_task_2_define_prometheus_component_library" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L5", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L385", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_user_management", - "target": "docs_user_roles_and_permissions" + "source": "plans_2026_08_17_openui_migration_openui_migration_plan", + "target": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L17", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L455", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_user_management", - "target": "docs_user_api_endpoints" + "source": "plans_2026_08_17_openui_migration_openui_migration_plan", + "target": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L59", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L610", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_user_management", - "target": "docs_user_session_management" + "source": "plans_2026_08_17_openui_migration_openui_migration_plan", + "target": "plans_2026_08_17_openui_migration_task_5_integration_test" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L112", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L640", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_user_management", - "target": "docs_user_api_keys_stocks_api" + "source": "plans_2026_08_17_openui_migration_openui_migration_plan", + "target": "plans_2026_08_17_openui_migration_verification_checklist" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L123", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L32", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_user_management", - "target": "docs_user_rate_limits_related_services" + "source": "plans_2026_08_17_openui_migration_file_structure", + "target": "plans_2026_08_17_openui_migration_frontend_local_only_never_committed" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L135", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L43", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_user_management", - "target": "docs_user_not_implemented" + "source": "plans_2026_08_17_openui_migration_file_structure", + "target": "plans_2026_08_17_openui_migration_backend_commit" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L156", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L58", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_user_management", - "target": "docs_user_workflow" + "source": "plans_2026_08_17_openui_migration_task_1_install_openui_remove_mdocui", + "target": "plans_2026_08_17_openui_migration_codeblock_1" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L177", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L66", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_user_management", - "target": "docs_user_license" + "source": "plans_2026_08_17_openui_migration_task_1_install_openui_remove_mdocui", + "target": "plans_2026_08_17_openui_migration_codeblock_2" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L140", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L72", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_user_management", - "target": "docs_user_permission_system" + "source": "plans_2026_08_17_openui_migration_task_1_install_openui_remove_mdocui", + "target": "plans_2026_08_17_openui_migration_codeblock_3" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L19", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L86", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_api_endpoints", - "target": "docs_user_health_check" + "source": "plans_2026_08_17_openui_migration_task_2_define_prometheus_component_library", + "target": "plans_2026_08_17_openui_migration_component_mapping" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L25", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L101", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_api_endpoints", - "target": "docs_user_get_profile" + "source": "plans_2026_08_17_openui_migration_component_mapping", + "target": "plans_2026_08_17_openui_migration_codeblock_4" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L53", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L339", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_api_endpoints", - "target": "docs_user_admin_access" + "source": "plans_2026_08_17_openui_migration_component_mapping", + "target": "plans_2026_08_17_openui_migration_codeblock_5" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L41", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L396", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_api_endpoints", - "target": "docs_user_upgrade_to_developer_starter" + "source": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer", + "target": "plans_2026_08_17_openui_migration_codeblock_6" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L47", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L428", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_api_endpoints", - "target": "docs_user_upgrade_to_developer_enterprise" + "source": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer", + "target": "plans_2026_08_17_openui_migration_codeblock_7" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L20", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L435", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_health_check", - "target": "docs_user_codeblock_1" + "source": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer", + "target": "plans_2026_08_17_openui_migration_codeblock_8" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L27", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L442", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_get_profile", - "target": "docs_user_codeblock_2" + "source": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer", + "target": "plans_2026_08_17_openui_migration_codeblock_9" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L31", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L449", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_get_profile", - "target": "docs_user_codeblock_3" + "source": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer", + "target": "plans_2026_08_17_openui_migration_codeblock_10" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L39", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L467", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_admin_access", - "target": "docs_user_codeblock_3" + "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "target": "plans_2026_08_17_openui_migration_codeblock_11" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L55", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L486", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_admin_access", - "target": "docs_user_codeblock_6" + "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "target": "plans_2026_08_17_openui_migration_codeblock_12" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L63", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L501", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_session_management", - "target": "docs_user_list_all_sessions" + "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "target": "plans_2026_08_17_openui_migration_codeblock_13" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L92", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L542", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_session_management", - "target": "docs_user_get_current_session" + "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "target": "plans_2026_08_17_openui_migration_codeblock_14" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L114", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L555", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_session_management", - "target": "docs_user_revoke_a_session" + "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "target": "plans_2026_08_17_openui_migration_codeblock_15" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L127", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L572", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_session_management", - "target": "docs_user_revoke_all_sessions" + "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "target": "plans_2026_08_17_openui_migration_codeblock_16" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L55", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L577", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_list_all_sessions", - "target": "docs_user_codeblock_4" + "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "target": "plans_2026_08_17_openui_migration_codeblock_17" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L59", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L590", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_list_all_sessions", - "target": "docs_user_codeblock_5" + "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "target": "plans_2026_08_17_openui_migration_codeblock_18" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L65", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L596", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_list_all_sessions", - "target": "docs_user_codeblock_7" + "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "target": "plans_2026_08_17_openui_migration_codeblock_19" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L69", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L602", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_list_all_sessions", - "target": "docs_user_codeblock_8" + "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "target": "plans_2026_08_17_openui_migration_codeblock_20" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L43", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L614", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_upgrade_to_developer_starter", - "target": "docs_user_codeblock_4" + "source": "plans_2026_08_17_openui_migration_task_5_integration_test", + "target": "plans_2026_08_17_openui_migration_codeblock_21" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L49", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L620", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_upgrade_to_developer_enterprise", - "target": "docs_user_codeblock_5" + "source": "plans_2026_08_17_openui_migration_task_5_integration_test", + "target": "plans_2026_08_17_openui_migration_codeblock_22" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L83", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_get_current_session", - "target": "docs_user_codeblock_6" + "source": "docs_superpowers_plans_2026_09_03_followup_hardening_md", + "target": "plans_2026_09_03_followup_hardening_follow_up_hardening_implementation_plan" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L94", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_get_current_session", - "target": "docs_user_codeblock_9" + "source": "plans_2026_09_03_followup_hardening_follow_up_hardening_implementation_plan", + "target": "plans_2026_09_03_followup_hardening_global_constraints" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L98", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L26", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_get_current_session", - "target": "docs_user_codeblock_10" + "source": "plans_2026_09_03_followup_hardening_follow_up_hardening_implementation_plan", + "target": "plans_2026_09_03_followup_hardening_file_map" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L91", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L814", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_revoke_a_session", - "target": "docs_user_codeblock_7" + "source": "plans_2026_09_03_followup_hardening_follow_up_hardening_implementation_plan", + "target": "plans_2026_09_03_followup_hardening_self_review" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L116", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L44", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_revoke_a_session", - "target": "docs_user_codeblock_11" + "source": "plans_2026_09_03_followup_hardening_file_map", + "target": "plans_2026_09_03_followup_hardening_task_1_thoth_maat_permission_decision" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L120", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L127", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_revoke_a_session", - "target": "docs_user_codeblock_12" + "source": "plans_2026_09_03_followup_hardening_file_map", + "target": "plans_2026_09_03_followup_hardening_task_2_p6_redis_cashews_insertion_behind_existing_sync_cache" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L101", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L240", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_revoke_all_sessions", - "target": "docs_user_codeblock_8" + "source": "plans_2026_09_03_followup_hardening_file_map", + "target": "plans_2026_09_03_followup_hardening_task_3_zstd_hot_path_rework_via_feather_to_dict_zstd_migration" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L105", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L337", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_revoke_all_sessions", - "target": "docs_user_codeblock_9" + "source": "plans_2026_09_03_followup_hardening_file_map", + "target": "plans_2026_09_03_followup_hardening_task_4_queryhistorical_queryfundamental_presort_invariant_guard" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L129", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L415", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_revoke_all_sessions", - "target": "docs_user_codeblock_13" + "source": "plans_2026_09_03_followup_hardening_file_map", + "target": "plans_2026_09_03_followup_hardening_task_5_history_backfill_dedup_indices_as_logging_only" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L133", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L509", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_revoke_all_sessions", - "target": "docs_user_codeblock_14" + "source": "plans_2026_09_03_followup_hardening_file_map", + "target": "plans_2026_09_03_followup_hardening_task_6_stocks_api_limiter_design_design_only_do_not_enable" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L141", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L562", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_workflow", - "target": "docs_user_codeblock_10" + "source": "plans_2026_09_03_followup_hardening_file_map", + "target": "plans_2026_09_03_followup_hardening_task_7_remove_temporary_run_py_scraper_debug_endpoint" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L158", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L623", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_workflow", - "target": "docs_user_codeblock_16" + "source": "plans_2026_09_03_followup_hardening_file_map", + "target": "plans_2026_09_03_followup_hardening_task_8_fix_20_pre_existing_environmental_failures" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/investidor10-wallet-research.md", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L712", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_superpowers_investidor10_wallet_research_md", - "target": "superpowers_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa" + "source": "plans_2026_09_03_followup_hardening_file_map", + "target": "plans_2026_09_03_followup_hardening_task_9_session_refresh_token_rotation_follow_up" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/investidor10-wallet-research.md", - "source_location": "L10", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L61", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", - "target": "superpowers_investidor10_wallet_research_1_feature_inventory_nav_structure" + "source": "plans_2026_09_03_followup_hardening_task_1_thoth_maat_permission_decision", + "target": "plans_2026_09_03_followup_hardening_codeblock_1" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/investidor10-wallet-research.md", - "source_location": "L30", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L80", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", - "target": "superpowers_investidor10_wallet_research_2_user_lifecycle_end_to_end" + "source": "plans_2026_09_03_followup_hardening_task_1_thoth_maat_permission_decision", + "target": "plans_2026_09_03_followup_hardening_codeblock_2" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/investidor10-wallet-research.md", - "source_location": "L40", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L96", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", - "target": "superpowers_investidor10_wallet_research_3_wallet_api_reference" + "source": "plans_2026_09_03_followup_hardening_task_1_thoth_maat_permission_decision", + "target": "plans_2026_09_03_followup_hardening_codeblock_3" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/investidor10-wallet-research.md", - "source_location": "L65", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L120", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", - "target": "superpowers_investidor10_wallet_research_4_data_model_inference_from_payloads_no_db_access" + "source": "plans_2026_09_03_followup_hardening_task_1_thoth_maat_permission_decision", + "target": "plans_2026_09_03_followup_hardening_codeblock_4" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/investidor10-wallet-research.md", - "source_location": "L74", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L143", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", - "target": "superpowers_investidor10_wallet_research_5_product_logic" + "source": "plans_2026_09_03_followup_hardening_task_2_p6_redis_cashews_insertion_behind_existing_sync_cache", + "target": "plans_2026_09_03_followup_hardening_codeblock_5" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/investidor10-wallet-research.md", - "source_location": "L82", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L185", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", - "target": "superpowers_investidor10_wallet_research_5b_gaps_unverified_do_not_treat_as_fact" + "source": "plans_2026_09_03_followup_hardening_task_2_p6_redis_cashews_insertion_behind_existing_sync_cache", + "target": "plans_2026_09_03_followup_hardening_codeblock_6" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/investidor10-wallet-research.md", - "source_location": "L86", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L198", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", - "target": "superpowers_investidor10_wallet_research_6_concrete_mansa_proposal_build_first_later_minimal_sketches" + "source": "plans_2026_09_03_followup_hardening_task_2_p6_redis_cashews_insertion_behind_existing_sync_cache", + "target": "plans_2026_09_03_followup_hardening_codeblock_7" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L204", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_superpowers_investidor10_wallet_spec_md", - "target": "superpowers_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec" + "source": "plans_2026_09_03_followup_hardening_task_2_p6_redis_cashews_insertion_behind_existing_sync_cache", + "target": "plans_2026_09_03_followup_hardening_codeblock_8" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L12", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L233", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", - "target": "superpowers_investidor10_wallet_spec_1_requirements" + "source": "plans_2026_09_03_followup_hardening_task_2_p6_redis_cashews_insertion_behind_existing_sync_cache", + "target": "plans_2026_09_03_followup_hardening_codeblock_9" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L38", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L256", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", - "target": "superpowers_investidor10_wallet_spec_2_domain_model" + "source": "plans_2026_09_03_followup_hardening_task_3_zstd_hot_path_rework_via_feather_to_dict_zstd_migration", + "target": "plans_2026_09_03_followup_hardening_codeblock_10" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L49", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L284", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", - "target": "superpowers_investidor10_wallet_spec_3_api_contracts_all_under_wallet_chain_main_controller_wallet_controller_py_main_service_wallet_service_py_fn_main_models_wallet_py_model_auth_depends_usermanager_getcurrentuser_depends_getsession_throughout" + "source": "plans_2026_09_03_followup_hardening_task_3_zstd_hot_path_rework_via_feather_to_dict_zstd_migration", + "target": "plans_2026_09_03_followup_hardening_codeblock_11" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L66", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L298", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", - "target": "superpowers_investidor10_wallet_spec_4_phased_build_plan_writing_plans_each_phase_independently_reviewable_reviewer_pass_per_phase" + "source": "plans_2026_09_03_followup_hardening_task_3_zstd_hot_path_rework_via_feather_to_dict_zstd_migration", + "target": "plans_2026_09_03_followup_hardening_codeblock_12" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L72", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L330", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", - "target": "superpowers_investidor10_wallet_spec_5_risks_assumptions_honest_flags_carried_over_do_not_treat_as_fact" + "source": "plans_2026_09_03_followup_hardening_task_3_zstd_hot_path_rework_via_feather_to_dict_zstd_migration", + "target": "plans_2026_09_03_followup_hardening_codeblock_13" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L81", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L351", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", - "target": "superpowers_investidor10_wallet_spec_6_readiness_assessment_s3_verified_2026_09_29_prerequisites_before_p1" + "source": "plans_2026_09_03_followup_hardening_task_4_queryhistorical_queryfundamental_presort_invariant_guard", + "target": "plans_2026_09_03_followup_hardening_codeblock_14" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L121", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L390", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", - "target": "superpowers_investidor10_wallet_spec_7_independent_re_verification_swarm_s4_2026_09_29_corrections_to_6" + "source": "plans_2026_09_03_followup_hardening_task_4_queryhistorical_queryfundamental_presort_invariant_guard", + "target": "plans_2026_09_03_followup_hardening_codeblock_15" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L49", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L408", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", - "target": "superpowers_investidor10_wallet_spec_3_api_contracts_all_under_api_wallet_chain_main_controller_wallet_controller_py_main_service_wallet_service_py_fn_main_models_wallet_py_model_auth_depends_usermanager_getcurrentuser_depends_getsession_throughout" + "source": "plans_2026_09_03_followup_hardening_task_4_queryhistorical_queryfundamental_presort_invariant_guard", + "target": "plans_2026_09_03_followup_hardening_codeblock_16" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L14", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L429", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_investidor10_wallet_spec_1_requirements", - "target": "superpowers_investidor10_wallet_spec_1_1_functional_per_surface_tags_exists_build_on_it_partial_half_reusable_missing_greenfield" + "source": "plans_2026_09_03_followup_hardening_task_5_history_backfill_dedup_indices_as_logging_only", + "target": "plans_2026_09_03_followup_hardening_codeblock_17" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L28", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L451", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_investidor10_wallet_spec_1_requirements", - "target": "superpowers_investidor10_wallet_spec_1_2_non_functional" + "source": "plans_2026_09_03_followup_hardening_task_5_history_backfill_dedup_indices_as_logging_only", + "target": "plans_2026_09_03_followup_hardening_codeblock_18" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L87", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L502", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_investidor10_wallet_spec_6_readiness_assessment_s3_verified_2026_09_29_prerequisites_before_p1", - "target": "superpowers_investidor10_wallet_spec_6_1_db_migrations_user_db_contested_7_1_3_actions_incl_one_destructive_autogenerate_risk" + "source": "plans_2026_09_03_followup_hardening_task_5_history_backfill_dedup_indices_as_logging_only", + "target": "plans_2026_09_03_followup_hardening_codeblock_19" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L94", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L525", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_investidor10_wallet_spec_6_readiness_assessment_s3_verified_2026_09_29_prerequisites_before_p1", - "target": "superpowers_investidor10_wallet_spec_6_2_stocks_price_access_confirmed_extended_7_2" + "source": "plans_2026_09_03_followup_hardening_task_6_stocks_api_limiter_design_design_only_do_not_enable", + "target": "plans_2026_09_03_followup_hardening_codeblock_20" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L100", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L541", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_investidor10_wallet_spec_6_readiness_assessment_s3_verified_2026_09_29_prerequisites_before_p1", - "target": "superpowers_investidor10_wallet_spec_6_3_wiring_auth_tests_contested_7_3_mounting_true_gating_test_seams_missing" + "source": "plans_2026_09_03_followup_hardening_task_6_stocks_api_limiter_design_design_only_do_not_enable", + "target": "plans_2026_09_03_followup_hardening_codeblock_21" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L106", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L555", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_investidor10_wallet_spec_6_readiness_assessment_s3_verified_2026_09_29_prerequisites_before_p1", - "target": "superpowers_investidor10_wallet_spec_6_4_scraper_pipeline_p2_dividends_has_b3_contested_7_4_data_present_source_staleness_gaps" + "source": "plans_2026_09_03_followup_hardening_task_6_stocks_api_limiter_design_design_only_do_not_enable", + "target": "plans_2026_09_03_followup_hardening_codeblock_22" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L110", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L577", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_investidor10_wallet_spec_6_readiness_assessment_s3_verified_2026_09_29_prerequisites_before_p1", - "target": "superpowers_investidor10_wallet_spec_6_5_ordered_actions_before_p1_code" + "source": "plans_2026_09_03_followup_hardening_task_7_remove_temporary_run_py_scraper_debug_endpoint", + "target": "plans_2026_09_03_followup_hardening_codeblock_23" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L85", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L598", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_investidor10_wallet_spec_6_readiness_assessment_s3_verified_2026_09_29_prerequisites_before_p1", - "target": "superpowers_investidor10_wallet_spec_6_1_db_migrations_user_db_ready_2_actions" + "source": "plans_2026_09_03_followup_hardening_task_7_remove_temporary_run_py_scraper_debug_endpoint", + "target": "plans_2026_09_03_followup_hardening_codeblock_24" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L92", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L616", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_investidor10_wallet_spec_6_readiness_assessment_s3_verified_2026_09_29_prerequisites_before_p1", - "target": "superpowers_investidor10_wallet_spec_6_2_stocks_price_access_ready_for_full_series_one_new_helper_needed" + "source": "plans_2026_09_03_followup_hardening_task_7_remove_temporary_run_py_scraper_debug_endpoint", + "target": "plans_2026_09_03_followup_hardening_codeblock_25" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L98", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L640", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_investidor10_wallet_spec_6_readiness_assessment_s3_verified_2026_09_29_prerequisites_before_p1", - "target": "superpowers_investidor10_wallet_spec_6_3_wiring_auth_tests_ready" + "source": "plans_2026_09_03_followup_hardening_task_8_fix_20_pre_existing_environmental_failures", + "target": "plans_2026_09_03_followup_hardening_codeblock_26" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L104", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L668", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_investidor10_wallet_spec_6_readiness_assessment_s3_verified_2026_09_29_prerequisites_before_p1", - "target": "superpowers_investidor10_wallet_spec_6_4_scraper_pipeline_p2_dividends_has_b3_ready_public_sources_only" + "source": "plans_2026_09_03_followup_hardening_task_8_fix_20_pre_existing_environmental_failures", + "target": "plans_2026_09_03_followup_hardening_codeblock_27" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L125", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L676", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_investidor10_wallet_spec_7_independent_re_verification_swarm_s4_2026_09_29_corrections_to_6", - "target": "superpowers_investidor10_wallet_spec_7_1_db_migrations_6_1_contested_3_actions_one_destructive_risk" + "source": "plans_2026_09_03_followup_hardening_task_8_fix_20_pre_existing_environmental_failures", + "target": "plans_2026_09_03_followup_hardening_codeblock_28" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L133", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L705", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_investidor10_wallet_spec_7_independent_re_verification_swarm_s4_2026_09_29_corrections_to_6", - "target": "superpowers_investidor10_wallet_spec_7_2_stocks_price_access_6_2_confirmed_incomplete" + "source": "plans_2026_09_03_followup_hardening_task_8_fix_20_pre_existing_environmental_failures", + "target": "plans_2026_09_03_followup_hardening_codeblock_29" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L143", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L731", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_investidor10_wallet_spec_7_independent_re_verification_swarm_s4_2026_09_29_corrections_to_6", - "target": "superpowers_investidor10_wallet_spec_7_3_wiring_auth_tests_6_3_contested_mounting_true" + "source": "plans_2026_09_03_followup_hardening_task_9_session_refresh_token_rotation_follow_up", + "target": "plans_2026_09_03_followup_hardening_codeblock_30" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L150", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L753", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_investidor10_wallet_spec_7_independent_re_verification_swarm_s4_2026_09_29_corrections_to_6", - "target": "superpowers_investidor10_wallet_spec_7_4_scraper_pipeline_6_4_contested" + "source": "plans_2026_09_03_followup_hardening_task_9_session_refresh_token_rotation_follow_up", + "target": "plans_2026_09_03_followup_hardening_codeblock_31" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/investidor10-wallet-spec.md", - "source_location": "L159", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L769", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_investidor10_wallet_spec_7_independent_re_verification_swarm_s4_2026_09_29_corrections_to_6", - "target": "superpowers_investidor10_wallet_spec_7_5_revised_pre_p1_actions_supersedes_6_5" + "source": "plans_2026_09_03_followup_hardening_task_9_session_refresh_token_rotation_follow_up", + "target": "plans_2026_09_03_followup_hardening_codeblock_32" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L780", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_superpowers_nginx_scaling_plan_md", - "target": "superpowers_nginx_scaling_plan_nginx_scaling_plan_reverse_proxy_response_cache_for_stocks_and_the_multi_server_evolution" + "source": "plans_2026_09_03_followup_hardening_task_9_session_refresh_token_rotation_follow_up", + "target": "plans_2026_09_03_followup_hardening_codeblock_33" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L64", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L807", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_superpowers_nginx_scaling_plan_md", - "target": "superpowers_nginx_scaling_plan_part_1_implementation_plan" + "source": "plans_2026_09_03_followup_hardening_task_9_session_refresh_token_rotation_follow_up", + "target": "plans_2026_09_03_followup_hardening_codeblock_34" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L347", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_superpowers_nginx_scaling_plan_md", - "target": "superpowers_nginx_scaling_plan_part_2_benchmark_plan" + "source": "docs_superpowers_plans_2026_09_04_wallet_management_md", + "target": "plans_2026_09_04_wallet_management_wallet_management_thoth_iyagba_implementation_plan" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L510", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_superpowers_nginx_scaling_plan_md", - "target": "superpowers_nginx_scaling_plan_part_3_future_scaling_evolution_risks" + "source": "plans_2026_09_04_wallet_management_wallet_management_thoth_iyagba_implementation_plan", + "target": "plans_2026_09_04_wallet_management_global_constraints" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L661", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L35", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_superpowers_nginx_scaling_plan_md", - "target": "superpowers_nginx_scaling_plan_open_decisions_blocking_or_product_owned" + "source": "plans_2026_09_04_wallet_management_wallet_management_thoth_iyagba_implementation_plan", + "target": "plans_2026_09_04_wallet_management_file_structure" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L669", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L60", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_superpowers_nginx_scaling_plan_md", - "target": "superpowers_nginx_scaling_plan_next_actions_not_in_scope_here" + "source": "plans_2026_09_04_wallet_management_file_structure", + "target": "plans_2026_09_04_wallet_management_task_1_wallet_models_and_user_relationship" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L17", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L166", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_nginx_scaling_plan_reverse_proxy_response_cache_for_stocks_and_the_multi_server_evolution", - "target": "superpowers_nginx_scaling_plan_0_purpose_and_constraints" + "source": "plans_2026_09_04_wallet_management_file_structure", + "target": "plans_2026_09_04_wallet_management_task_2_alembic_migration_for_wallet_tables" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L35", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L269", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_nginx_scaling_plan_reverse_proxy_response_cache_for_stocks_and_the_multi_server_evolution", - "target": "superpowers_nginx_scaling_plan_0_1_rev_2_do_first_app_cache_ttl_increase_fields_cache_no_nginx_no_redis" + "source": "plans_2026_09_04_wallet_management_file_structure", + "target": "plans_2026_09_04_wallet_management_task_3_pure_derivation_math" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L66", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L391", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_part_1_implementation_plan", - "target": "superpowers_nginx_scaling_plan_1_1_architecture_decision" + "source": "plans_2026_09_04_wallet_management_file_structure", + "target": "plans_2026_09_04_wallet_management_task_4_holding_endpoints_create_holding_and_retarget_weight" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L79", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L567", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_part_1_implementation_plan", - "target": "superpowers_nginx_scaling_plan_1_2_file_layout" + "source": "plans_2026_09_04_wallet_management_file_structure", + "target": "plans_2026_09_04_wallet_management_task_5_lot_endpoint_append_immutable_buy_sell_lots" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L96", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L720", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_part_1_implementation_plan", - "target": "superpowers_nginx_scaling_plan_1_3_phase_p0_nginx_service_config_skeleton" + "source": "plans_2026_09_04_wallet_management_file_structure", + "target": "plans_2026_09_04_wallet_management_task_6_price_client_one_batched_stocks_api_fetch_per_snapshot" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L152", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L869", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_part_1_implementation_plan", - "target": "superpowers_nginx_scaling_plan_1_4_phase_p1_cache_locations_ttl_table_directives" + "source": "plans_2026_09_04_wallet_management_file_structure", + "target": "plans_2026_09_04_wallet_management_task_7_snapshot_endpoint_derived_portfolio_read_with_live_prices" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L251", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1000", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_part_1_implementation_plan", - "target": "superpowers_nginx_scaling_plan_1_5_phase_p2_port_scheme_worker_containers_keepalive" + "source": "plans_2026_09_04_wallet_management_file_structure", + "target": "plans_2026_09_04_wallet_management_task_8_history_endpoint_paginated_lots_with_per_sell_realized_gain" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L277", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1115", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_part_1_implementation_plan", - "target": "superpowers_nginx_scaling_plan_1_6_phase_p3_remote_vps_upstreams_health_strategy" + "source": "plans_2026_09_04_wallet_management_file_structure", + "target": "plans_2026_09_04_wallet_management_task_9_walletservice_wiring_quality_gate_full_suite_ruff_mypy_coverage" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L309", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1224", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_part_1_implementation_plan", - "target": "superpowers_nginx_scaling_plan_1_7_phase_p4_handoff_design_no_code_in_this_plan" + "source": "plans_2026_09_04_wallet_management_file_structure", + "target": "plans_2026_09_04_wallet_management_task_10_first_party_get_stocks_dividends_adjusted_docstring_fix" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L320", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1325", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_part_1_implementation_plan", - "target": "superpowers_nginx_scaling_plan_1_8_quota_rate_limit_semantics_after_caching" + "source": "plans_2026_09_04_wallet_management_file_structure", + "target": "plans_2026_09_04_wallet_management_task_11_wallet_receipt_ledger_wallet_dividends_table_receipt_suggestion_endpoints" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L332", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1482", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_part_1_implementation_plan", - "target": "superpowers_nginx_scaling_plan_1_9_anti_scraping_note_todo_17" + "source": "plans_2026_09_04_wallet_management_file_structure", + "target": "plans_2026_09_04_wallet_management_task_12_split_cliff_regression_test_snapshot_history_dividend_extension_final_gate" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L336", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1618", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_part_1_implementation_plan", - "target": "superpowers_nginx_scaling_plan_1_10_edge_cases_risks_implementation" + "source": "plans_2026_09_04_wallet_management_file_structure", + "target": "plans_2026_09_04_wallet_management_task_13_corporate_actions_table_read_time_scaling_sobras_rule_definitive_full_gate" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L82", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L73", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_1_2_file_layout", - "target": "superpowers_nginx_scaling_plan_codeblock_1" + "source": "plans_2026_09_04_wallet_management_task_1_wallet_models_and_user_relationship", + "target": "plans_2026_09_04_wallet_management_codeblock_1" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L98", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L101", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_1_3_phase_p0_nginx_service_config_skeleton", - "target": "superpowers_nginx_scaling_plan_codeblock_2" + "source": "plans_2026_09_04_wallet_management_task_1_wallet_models_and_user_relationship", + "target": "plans_2026_09_04_wallet_management_codeblock_2" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L118", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L138", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_1_3_phase_p0_nginx_service_config_skeleton", - "target": "superpowers_nginx_scaling_plan_codeblock_3" + "source": "plans_2026_09_04_wallet_management_task_1_wallet_models_and_user_relationship", + "target": "plans_2026_09_04_wallet_management_codeblock_3" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L139", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L144", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_1_3_phase_p0_nginx_service_config_skeleton", - "target": "superpowers_nginx_scaling_plan_codeblock_4" + "source": "plans_2026_09_04_wallet_management_task_1_wallet_models_and_user_relationship", + "target": "plans_2026_09_04_wallet_management_codeblock_4" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L155", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L159", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_1_4_phase_p1_cache_locations_ttl_table_directives", - "target": "superpowers_nginx_scaling_plan_codeblock_5" + "source": "plans_2026_09_04_wallet_management_task_1_wallet_models_and_user_relationship", + "target": "plans_2026_09_04_wallet_management_codeblock_5" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L186", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L189", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_1_4_phase_p1_cache_locations_ttl_table_directives", - "target": "superpowers_nginx_scaling_plan_codeblock_6" + "source": "plans_2026_09_04_wallet_management_task_2_alembic_migration_for_wallet_tables", + "target": "plans_2026_09_04_wallet_management_codeblock_6" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L242", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L248", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_1_4_phase_p1_cache_locations_ttl_table_directives", - "target": "superpowers_nginx_scaling_plan_codeblock_7" + "source": "plans_2026_09_04_wallet_management_task_2_alembic_migration_for_wallet_tables", + "target": "plans_2026_09_04_wallet_management_codeblock_7" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L257", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L262", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_1_5_phase_p2_port_scheme_worker_containers_keepalive", - "target": "superpowers_nginx_scaling_plan_codeblock_8" + "source": "plans_2026_09_04_wallet_management_task_2_alembic_migration_for_wallet_tables", + "target": "plans_2026_09_04_wallet_management_codeblock_8" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L279", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L281", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_1_6_phase_p3_remote_vps_upstreams_health_strategy", - "target": "superpowers_nginx_scaling_plan_codeblock_9" + "source": "plans_2026_09_04_wallet_management_task_3_pure_derivation_math", + "target": "plans_2026_09_04_wallet_management_codeblock_9" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L291", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L325", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_1_6_phase_p3_remote_vps_upstreams_health_strategy", - "target": "superpowers_nginx_scaling_plan_codeblock_10" + "source": "plans_2026_09_04_wallet_management_task_3_pure_derivation_math", + "target": "plans_2026_09_04_wallet_management_codeblock_10" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L349", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L384", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_part_2_benchmark_plan", - "target": "superpowers_nginx_scaling_plan_2_0_grounding_what_the_code_actually_does" + "source": "plans_2026_09_04_wallet_management_task_3_pure_derivation_math", + "target": "plans_2026_09_04_wallet_management_codeblock_11" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L381", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L404", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_part_2_benchmark_plan", - "target": "superpowers_nginx_scaling_plan_2_1_hypotheses" + "source": "plans_2026_09_04_wallet_management_task_4_holding_endpoints_create_holding_and_retarget_weight", + "target": "plans_2026_09_04_wallet_management_codeblock_12" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L390", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L471", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_part_2_benchmark_plan", - "target": "superpowers_nginx_scaling_plan_2_2_tooling" + "source": "plans_2026_09_04_wallet_management_task_4_holding_endpoints_create_holding_and_retarget_weight", + "target": "plans_2026_09_04_wallet_management_codeblock_13" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L440", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L524", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_part_2_benchmark_plan", - "target": "superpowers_nginx_scaling_plan_2_3_scenarios" + "source": "plans_2026_09_04_wallet_management_task_4_holding_endpoints_create_holding_and_retarget_weight", + "target": "plans_2026_09_04_wallet_management_codeblock_14" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L452", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L560", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_part_2_benchmark_plan", - "target": "superpowers_nginx_scaling_plan_2_4_protocol" + "source": "plans_2026_09_04_wallet_management_task_4_holding_endpoints_create_holding_and_retarget_weight", + "target": "plans_2026_09_04_wallet_management_codeblock_15" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L463", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L580", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_part_2_benchmark_plan", - "target": "superpowers_nginx_scaling_plan_2_5_metrics" + "source": "plans_2026_09_04_wallet_management_task_5_lot_endpoint_append_immutable_buy_sell_lots", + "target": "plans_2026_09_04_wallet_management_codeblock_16" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L467", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L649", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_part_2_benchmark_plan", - "target": "superpowers_nginx_scaling_plan_2_6_acceptance_thresholds_all_proposed_freeze_after_first_real_run" + "source": "plans_2026_09_04_wallet_management_task_5_lot_endpoint_append_immutable_buy_sell_lots", + "target": "plans_2026_09_04_wallet_management_codeblock_17" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L484", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L659", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_part_2_benchmark_plan", - "target": "superpowers_nginx_scaling_plan_2_7_results_doc_layout" + "source": "plans_2026_09_04_wallet_management_task_5_lot_endpoint_append_immutable_buy_sell_lots", + "target": "plans_2026_09_04_wallet_management_codeblock_18" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L493", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L693", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_part_2_benchmark_plan", - "target": "superpowers_nginx_scaling_plan_2_8_feeding_status_todo_14" + "source": "plans_2026_09_04_wallet_management_task_5_lot_endpoint_append_immutable_buy_sell_lots", + "target": "plans_2026_09_04_wallet_management_codeblock_19" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L499", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L713", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_part_2_benchmark_plan", - "target": "superpowers_nginx_scaling_plan_2_9_benchmark_risks" + "source": "plans_2026_09_04_wallet_management_task_5_lot_endpoint_append_immutable_buy_sell_lots", + "target": "plans_2026_09_04_wallet_management_codeblock_20" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L393", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L732", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_2_2_tooling", - "target": "superpowers_nginx_scaling_plan_codeblock_11" + "source": "plans_2026_09_04_wallet_management_task_6_price_client_one_batched_stocks_api_fetch_per_snapshot", + "target": "plans_2026_09_04_wallet_management_codeblock_21" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L406", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L804", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_2_2_tooling", - "target": "superpowers_nginx_scaling_plan_codeblock_12" + "source": "plans_2026_09_04_wallet_management_task_6_price_client_one_batched_stocks_api_fetch_per_snapshot", + "target": "plans_2026_09_04_wallet_management_codeblock_22" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L414", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L862", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_2_2_tooling", - "target": "superpowers_nginx_scaling_plan_codeblock_13" + "source": "plans_2026_09_04_wallet_management_task_6_price_client_one_batched_stocks_api_fetch_per_snapshot", + "target": "plans_2026_09_04_wallet_management_codeblock_23" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L420", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L882", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_2_2_tooling", - "target": "superpowers_nginx_scaling_plan_codeblock_14" + "source": "plans_2026_09_04_wallet_management_task_7_snapshot_endpoint_derived_portfolio_read_with_live_prices", + "target": "plans_2026_09_04_wallet_management_codeblock_24" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L431", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L944", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_2_2_tooling", - "target": "superpowers_nginx_scaling_plan_codeblock_15" + "source": "plans_2026_09_04_wallet_management_task_7_snapshot_endpoint_derived_portfolio_read_with_live_prices", + "target": "plans_2026_09_04_wallet_management_codeblock_25" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L486", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L972", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_2_7_results_doc_layout", - "target": "superpowers_nginx_scaling_plan_codeblock_16" + "source": "plans_2026_09_04_wallet_management_task_7_snapshot_endpoint_derived_portfolio_read_with_live_prices", + "target": "plans_2026_09_04_wallet_management_codeblock_26" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L512", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L993", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_part_3_future_scaling_evolution_risks", - "target": "superpowers_nginx_scaling_plan_3_0_verified_ground_truth" + "source": "plans_2026_09_04_wallet_management_task_7_snapshot_endpoint_derived_portfolio_read_with_live_prices", + "target": "plans_2026_09_04_wallet_management_codeblock_27" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L529", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1013", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_part_3_future_scaling_evolution_risks", - "target": "superpowers_nginx_scaling_plan_3_1_target_topology" + "source": "plans_2026_09_04_wallet_management_task_8_history_endpoint_paginated_lots_with_per_sell_realized_gain", + "target": "plans_2026_09_04_wallet_management_codeblock_28" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L546", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1062", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_part_3_future_scaling_evolution_risks", - "target": "superpowers_nginx_scaling_plan_3_2_worker_container_extraction" + "source": "plans_2026_09_04_wallet_management_task_8_history_endpoint_paginated_lots_with_per_sell_realized_gain", + "target": "plans_2026_09_04_wallet_management_codeblock_29" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L563", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1095", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_part_3_future_scaling_evolution_risks", - "target": "superpowers_nginx_scaling_plan_3_3_nginx_upstream_evolution_validated_against_the_user_s_plan" + "source": "plans_2026_09_04_wallet_management_task_8_history_endpoint_paginated_lots_with_per_sell_realized_gain", + "target": "plans_2026_09_04_wallet_management_codeblock_30" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L584", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1108", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_part_3_future_scaling_evolution_risks", - "target": "superpowers_nginx_scaling_plan_3_4_todo_13_migration_drop_service_host_service_port" + "source": "plans_2026_09_04_wallet_management_task_8_history_endpoint_paginated_lots_with_per_sell_realized_gain", + "target": "plans_2026_09_04_wallet_management_codeblock_31" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L591", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1143", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_part_3_future_scaling_evolution_risks", - "target": "superpowers_nginx_scaling_plan_3_5_redis_exactly_two_jobs" + "source": "plans_2026_09_04_wallet_management_task_9_walletservice_wiring_quality_gate_full_suite_ruff_mypy_coverage", + "target": "plans_2026_09_04_wallet_management_codeblock_32" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L607", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1157", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_part_3_future_scaling_evolution_risks", - "target": "superpowers_nginx_scaling_plan_3_6_cache_strategy_across_boxes" + "source": "plans_2026_09_04_wallet_management_task_9_walletservice_wiring_quality_gate_full_suite_ruff_mypy_coverage", + "target": "plans_2026_09_04_wallet_management_codeblock_33" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L613", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1165", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_part_3_future_scaling_evolution_risks", - "target": "superpowers_nginx_scaling_plan_3_7_autoscaling_story_todo_11" + "source": "plans_2026_09_04_wallet_management_task_9_walletservice_wiring_quality_gate_full_suite_ruff_mypy_coverage", + "target": "plans_2026_09_04_wallet_management_codeblock_34" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L618", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1192", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_part_3_future_scaling_evolution_risks", - "target": "superpowers_nginx_scaling_plan_3_8_forgevm_interplay_todo_12" + "source": "plans_2026_09_04_wallet_management_task_9_walletservice_wiring_quality_gate_full_suite_ruff_mypy_coverage", + "target": "plans_2026_09_04_wallet_management_codeblock_35" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L622", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1217", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_part_3_future_scaling_evolution_risks", - "target": "superpowers_nginx_scaling_plan_3_9_risk_register" + "source": "plans_2026_09_04_wallet_management_task_9_walletservice_wiring_quality_gate_full_suite_ruff_mypy_coverage", + "target": "plans_2026_09_04_wallet_management_codeblock_36" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L642", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1237", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_part_3_future_scaling_evolution_risks", - "target": "superpowers_nginx_scaling_plan_3_10_migration_sequence_verification" + "source": "plans_2026_09_04_wallet_management_task_10_first_party_get_stocks_dividends_adjusted_docstring_fix", + "target": "plans_2026_09_04_wallet_management_codeblock_37" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L534", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1276", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_3_1_target_topology", - "target": "superpowers_nginx_scaling_plan_codeblock_17" + "source": "plans_2026_09_04_wallet_management_task_10_first_party_get_stocks_dividends_adjusted_docstring_fix", + "target": "plans_2026_09_04_wallet_management_codeblock_38" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/nginx-scaling-plan.md", - "source_location": "L567", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1299", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_nginx_scaling_plan_3_3_nginx_upstream_evolution_validated_against_the_user_s_plan", - "target": "superpowers_nginx_scaling_plan_codeblock_18" + "source": "plans_2026_09_04_wallet_management_task_10_first_party_get_stocks_dividends_adjusted_docstring_fix", + "target": "plans_2026_09_04_wallet_management_codeblock_39" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1318", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_superpowers_uvicorn_worker_scaling_plan_md", - "target": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_migration_\u00e2_what_must_change" + "source": "plans_2026_09_04_wallet_management_task_10_first_party_get_stocks_dividends_adjusted_docstring_fix", + "target": "plans_2026_09_04_wallet_management_codeblock_40" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1341", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_superpowers_uvicorn_worker_scaling_plan_md", - "target": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_scaling_verified_state_and_evaluated_plan" + "source": "plans_2026_09_04_wallet_management_task_11_wallet_receipt_ledger_wallet_dividends_table_receipt_suggestion_endpoints", + "target": "plans_2026_09_04_wallet_management_codeblock_41" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1397", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_superpowers_uvicorn_worker_scaling_plan_md", - "target": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_scaling_verified_state_evaluated_plan" + "source": "plans_2026_09_04_wallet_management_task_11_wallet_receipt_ledger_wallet_dividends_table_receipt_suggestion_endpoints", + "target": "plans_2026_09_04_wallet_management_codeblock_42" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L17", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1419", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_migration_\u00e2_what_must_change", - "target": "superpowers_uvicorn_worker_scaling_plan_0_the_blockers_ranked" + "source": "plans_2026_09_04_wallet_management_task_11_wallet_receipt_ledger_wallet_dividends_table_receipt_suggestion_endpoints", + "target": "plans_2026_09_04_wallet_management_codeblock_43" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L32", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1452", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_migration_\u00e2_what_must_change", - "target": "superpowers_uvicorn_worker_scaling_plan_1_verified_state_compact" + "source": "plans_2026_09_04_wallet_management_task_11_wallet_receipt_ledger_wallet_dividends_table_receipt_suggestion_endpoints", + "target": "plans_2026_09_04_wallet_management_codeblock_44" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L52", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1475", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_migration_\u00e2_what_must_change", - "target": "superpowers_uvicorn_worker_scaling_plan_2_change_inventory_the_spine" + "source": "plans_2026_09_04_wallet_management_task_11_wallet_receipt_ledger_wallet_dividends_table_receipt_suggestion_endpoints", + "target": "plans_2026_09_04_wallet_management_codeblock_45" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L135", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1496", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_migration_\u00e2_what_must_change", - "target": "superpowers_uvicorn_worker_scaling_plan_3_rulings_conflicts_i_adjudicated" + "source": "plans_2026_09_04_wallet_management_task_12_split_cliff_regression_test_snapshot_history_dividend_extension_final_gate", + "target": "plans_2026_09_04_wallet_management_codeblock_46" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L147", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1512", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_migration_\u00e2_what_must_change", - "target": "superpowers_uvicorn_worker_scaling_plan_4_design_spec_alignment_2026_09_29_nginx_scaling_design_md" + "source": "plans_2026_09_04_wallet_management_task_12_split_cliff_regression_test_snapshot_history_dividend_extension_final_gate", + "target": "plans_2026_09_04_wallet_management_codeblock_47" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L162", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1528", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_migration_\u00e2_what_must_change", - "target": "superpowers_uvicorn_worker_scaling_plan_5_sequencing_verification_and_bans" + "source": "plans_2026_09_04_wallet_management_task_12_split_cliff_regression_test_snapshot_history_dividend_extension_final_gate", + "target": "plans_2026_09_04_wallet_management_codeblock_48" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L174", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1546", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_migration_\u00e2_what_must_change", - "target": "superpowers_uvicorn_worker_scaling_plan_6_options_demoted" + "source": "plans_2026_09_04_wallet_management_task_12_split_cliff_regression_test_snapshot_history_dividend_extension_final_gate", + "target": "plans_2026_09_04_wallet_management_codeblock_49" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L186", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1582", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_migration_\u00e2_what_must_change", - "target": "superpowers_uvicorn_worker_scaling_plan_7_risks" + "source": "plans_2026_09_04_wallet_management_task_12_split_cliff_regression_test_snapshot_history_dividend_extension_final_gate", + "target": "plans_2026_09_04_wallet_management_codeblock_50" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L200", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1613", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_migration_\u00e2_what_must_change", - "target": "superpowers_uvicorn_worker_scaling_plan_8_evidence_index" + "source": "plans_2026_09_04_wallet_management_task_12_split_cliff_regression_test_snapshot_history_dividend_extension_final_gate", + "target": "plans_2026_09_04_wallet_management_codeblock_51" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L54", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1635", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_uvicorn_worker_scaling_plan_2_change_inventory_the_spine", - "target": "superpowers_uvicorn_worker_scaling_plan_b1_\u00e2_startup_and_process_model_must_fix" + "source": "plans_2026_09_04_wallet_management_task_13_corporate_actions_table_read_time_scaling_sobras_rule_definitive_full_gate", + "target": "plans_2026_09_04_wallet_management_codeblock_52" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L67", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1661", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_uvicorn_worker_scaling_plan_2_change_inventory_the_spine", - "target": "superpowers_uvicorn_worker_scaling_plan_b2_\u00e2_cache_under_n_1_must_fix" + "source": "plans_2026_09_04_wallet_management_task_13_corporate_actions_table_read_time_scaling_sobras_rule_definitive_full_gate", + "target": "plans_2026_09_04_wallet_management_codeblock_53" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L79", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1686", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_uvicorn_worker_scaling_plan_2_change_inventory_the_spine", - "target": "superpowers_uvicorn_worker_scaling_plan_b3_\u00e2_db_pools_must_fix_at_n\u00e2_3_on_one_server" + "source": "plans_2026_09_04_wallet_management_task_13_corporate_actions_table_read_time_scaling_sobras_rule_definitive_full_gate", + "target": "plans_2026_09_04_wallet_management_codeblock_54" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L98", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1727", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_uvicorn_worker_scaling_plan_2_change_inventory_the_spine", - "target": "superpowers_uvicorn_worker_scaling_plan_b4_\u00e2_migrations_must_fix" + "source": "plans_2026_09_04_wallet_management_task_13_corporate_actions_table_read_time_scaling_sobras_rule_definitive_full_gate", + "target": "plans_2026_09_04_wallet_management_codeblock_55" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L107", + "source_file": "docs/superpowers/plans/2026-09-12-artifact-removal-cache-verdict.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_uvicorn_worker_scaling_plan_2_change_inventory_the_spine", - "target": "superpowers_uvicorn_worker_scaling_plan_b5_\u00e2_per_process_state_ranked_scope_by_service" + "source": "docs_superpowers_plans_2026_09_12_artifact_removal_cache_verdict_md", + "target": "plans_2026_09_12_artifact_removal_cache_verdict_artifact_removal_matrix_cache_verdict_plan" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", - "source_location": "L123", + "source_file": "docs/superpowers/plans/2026-09-12-artifact-removal-cache-verdict.md", + "source_location": "L3", "weight": 1.0, "confidence_score": 1.0, - "source": "superpowers_uvicorn_worker_scaling_plan_2_change_inventory_the_spine", - "target": "superpowers_uvicorn_worker_scaling_plan_b6_\u00e2_deployment_glue_must_build" + "source": "plans_2026_09_12_artifact_removal_cache_verdict_artifact_removal_matrix_cache_verdict_plan", + "target": "plans_2026_09_12_artifact_removal_cache_verdict_part_1_deletions_safe_no_live_referrers" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/benchmarks/stocks-cache-ttl.md", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-09-12-artifact-removal-cache-verdict.md", + "source_location": "L25", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_superpowers_benchmarks_stocks_cache_ttl_md", - "target": "benchmarks_stocks_cache_ttl_stocks_endpoint_cache_ttl_6h_rss_check" + "source": "plans_2026_09_12_artifact_removal_cache_verdict_artifact_removal_matrix_cache_verdict_plan", + "target": "plans_2026_09_12_artifact_removal_cache_verdict_part_2_cache_verdict_keep_the_dict_skip_cashews" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_superpowers_plans_2026_08_09_sse_resume_md", - "target": "plans_2026_08_09_sse_resume_sse_resume_implementation_plan" + "source": "docs_superpowers_plans_2026_09_14_memory_postgres_pgvector_plan_md", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_memory_postgres_pgvector_migration_implementation_plan" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L11", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_sse_resume_implementation_plan", - "target": "plans_2026_08_09_sse_resume_global_constraints" + "source": "plans_2026_09_14_memory_postgres_pgvector_plan_memory_postgres_pgvector_migration_implementation_plan", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_global_constraints" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L26", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L24", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_global_constraints", - "target": "plans_2026_08_09_sse_resume_task_1_streambus_module_with_unit_tests" + "source": "plans_2026_09_14_memory_postgres_pgvector_plan_global_constraints", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_task_1_pgvector_migration_backfill" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L242", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L79", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_global_constraints", - "target": "plans_2026_08_09_sse_resume_task_2_background_run_get_resume_route_in_prometheus_controller" + "source": "plans_2026_09_14_memory_postgres_pgvector_plan_global_constraints", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_task_2_delete_vector_py_rewrite_search" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L412", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L139", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_global_constraints", - "target": "plans_2026_08_09_sse_resume_task_3_frontend_api_js_shared_sse_parser_resumechat_cursor_tracking" + "source": "plans_2026_09_14_memory_postgres_pgvector_plan_global_constraints", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_task_3_update_the_test_files" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L576", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L171", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_global_constraints", - "target": "plans_2026_08_09_sse_resume_task_4_frontend_app_jsx_resume_lifecycle_boot_resume" + "source": "plans_2026_09_14_memory_postgres_pgvector_plan_global_constraints", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_task_4_full_test_sweep_18_suites_postgres_ci_parity" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L863", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L185", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_global_constraints", - "target": "plans_2026_08_09_sse_resume_task_5_full_verification_todo_check_off" + "source": "plans_2026_09_14_memory_postgres_pgvector_plan_global_constraints", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_task_5_docs_close" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L41", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L35", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_1_streambus_module_with_unit_tests", - "target": "plans_2026_08_09_sse_resume_codeblock_1" + "source": "plans_2026_09_14_memory_postgres_pgvector_plan_task_1_pgvector_migration_backfill", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_codeblock_1" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L130", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L65", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_1_streambus_module_with_unit_tests", - "target": "plans_2026_08_09_sse_resume_codeblock_2" + "source": "plans_2026_09_14_memory_postgres_pgvector_plan_task_1_pgvector_migration_backfill", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_codeblock_2" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L235", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L74", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_1_streambus_module_with_unit_tests", - "target": "plans_2026_08_09_sse_resume_codeblock_3" + "source": "plans_2026_09_14_memory_postgres_pgvector_plan_task_1_pgvector_migration_backfill", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_codeblock_3" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L257", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L97", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_2_background_run_get_resume_route_in_prometheus_controller", - "target": "plans_2026_08_09_sse_resume_codeblock_4" + "source": "plans_2026_09_14_memory_postgres_pgvector_plan_task_2_delete_vector_py_rewrite_search", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_codeblock_4" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L329", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L134", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_2_background_run_get_resume_route_in_prometheus_controller", - "target": "plans_2026_08_09_sse_resume_codeblock_5" + "source": "plans_2026_09_14_memory_postgres_pgvector_plan_task_2_delete_vector_py_rewrite_search", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_codeblock_5" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L405", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L148", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_2_background_run_get_resume_route_in_prometheus_controller", - "target": "plans_2026_08_09_sse_resume_codeblock_6" + "source": "plans_2026_09_14_memory_postgres_pgvector_plan_task_3_update_the_test_files", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_codeblock_6" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L426", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L166", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_3_frontend_api_js_shared_sse_parser_resumechat_cursor_tracking", - "target": "plans_2026_08_09_sse_resume_codeblock_7" + "source": "plans_2026_09_14_memory_postgres_pgvector_plan_task_3_update_the_test_files", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_codeblock_7" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L498", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L189", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_3_frontend_api_js_shared_sse_parser_resumechat_cursor_tracking", - "target": "plans_2026_08_09_sse_resume_codeblock_8" + "source": "plans_2026_09_14_memory_postgres_pgvector_plan_task_5_docs_close", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_codeblock_8" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L569", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_3_frontend_api_js_shared_sse_parser_resumechat_cursor_tracking", - "target": "plans_2026_08_09_sse_resume_codeblock_9" + "source": "docs_superpowers_plans_2026_09_15_adopt_libs_md", + "target": "plans_2026_09_15_adopt_libs_adopt_libs_implementation_plan" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L590", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_4_frontend_app_jsx_resume_lifecycle_boot_resume", - "target": "plans_2026_08_09_sse_resume_codeblock_10" + "source": "plans_2026_09_15_adopt_libs_adopt_libs_implementation_plan", + "target": "plans_2026_09_15_adopt_libs_global_constraints" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L659", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L24", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_4_frontend_app_jsx_resume_lifecycle_boot_resume", - "target": "plans_2026_08_09_sse_resume_codeblock_11" + "source": "plans_2026_09_15_adopt_libs_global_constraints", + "target": "plans_2026_09_15_adopt_libs_task_1_tenacity_replaces_bespoke_retries" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L681", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L56", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_4_frontend_app_jsx_resume_lifecycle_boot_resume", - "target": "plans_2026_08_09_sse_resume_codeblock_12" + "source": "plans_2026_09_15_adopt_libs_global_constraints", + "target": "plans_2026_09_15_adopt_libs_task_2_cashews_native_probe_first" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L768", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L76", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_4_frontend_app_jsx_resume_lifecycle_boot_resume", - "target": "plans_2026_08_09_sse_resume_codeblock_13" + "source": "plans_2026_09_15_adopt_libs_global_constraints", + "target": "plans_2026_09_15_adopt_libs_task_3_pydantic_validates_llm_extraction_json" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L835", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L102", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_4_frontend_app_jsx_resume_lifecycle_boot_resume", - "target": "plans_2026_08_09_sse_resume_codeblock_14" + "source": "plans_2026_09_15_adopt_libs_global_constraints", + "target": "plans_2026_09_15_adopt_libs_task_4_sse_starlette_replaces_hand_sse_bus" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L856", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L117", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_4_frontend_app_jsx_resume_lifecycle_boot_resume", - "target": "plans_2026_08_09_sse_resume_codeblock_15" + "source": "plans_2026_09_15_adopt_libs_global_constraints", + "target": "plans_2026_09_15_adopt_libs_task_5_rapidfuzz_memory_key_dedup" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L889", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L132", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_5_full_verification_todo_check_off", - "target": "plans_2026_08_09_sse_resume_codeblock_16" + "source": "plans_2026_09_15_adopt_libs_global_constraints", + "target": "plans_2026_09_15_adopt_libs_task_6_cachetools_bounds_token_cache" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L143", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_superpowers_plans_2026_08_15_stocks_api_perf_md", - "target": "plans_2026_08_15_stocks_api_perf_stocks_api_performance_pre_materialized_cache_sync_handlers_implementation_plan" + "source": "plans_2026_09_15_adopt_libs_global_constraints", + "target": "plans_2026_09_15_adopt_libs_task_7_user_agents_fills_device_fields_optional" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L13", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L154", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_stocks_api_performance_pre_materialized_cache_sync_handlers_implementation_plan", - "target": "plans_2026_08_15_stocks_api_perf_global_constraints" + "source": "plans_2026_09_15_adopt_libs_global_constraints", + "target": "plans_2026_09_15_adopt_libs_task_8_pytest_plugin_set" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L23", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L38", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_stocks_api_performance_pre_materialized_cache_sync_handlers_implementation_plan", - "target": "plans_2026_08_15_stocks_api_perf_file_structure" + "source": "plans_2026_09_15_adopt_libs_task_1_tenacity_replaces_bespoke_retries", + "target": "plans_2026_09_15_adopt_libs_codeblock_1" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L633", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L51", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_stocks_api_performance_pre_materialized_cache_sync_handlers_implementation_plan", - "target": "plans_2026_08_15_stocks_api_perf_self_review" + "source": "plans_2026_09_15_adopt_libs_task_1_tenacity_replaces_bespoke_retries", + "target": "plans_2026_09_15_adopt_libs_codeblock_2" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L35", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L72", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_file_structure", - "target": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh" + "source": "plans_2026_09_15_adopt_libs_task_2_cashews_native_probe_first", + "target": "plans_2026_09_15_adopt_libs_codeblock_3" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L251", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L88", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_file_structure", - "target": "plans_2026_08_15_stocks_api_perf_task_2_fast_paths_in_stocksquerymanager_for_default_shaped_queries" + "source": "plans_2026_09_15_adopt_libs_task_3_pydantic_validates_llm_extraction_json", + "target": "plans_2026_09_15_adopt_libs_codeblock_4" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L392", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_file_structure", - "target": "plans_2026_08_15_stocks_api_perf_task_3_convert_query_handlers_to_sync_def" + "source": "docs_superpowers_plans_2026_09_29_nginx_response_cache_md", + "target": "plans_2026_09_29_nginx_response_cache_nginx_response_cache_implementation_plan" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L468", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L14", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_file_structure", - "target": "plans_2026_08_15_stocks_api_perf_task_4_pre_parsed_cotation_date_index_replace_filtercotationcolumn_hot_path" + "source": "plans_2026_09_29_nginx_response_cache_nginx_response_cache_implementation_plan", + "target": "plans_2026_09_29_nginx_response_cache_global_constraints" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L613", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L25", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_file_structure", - "target": "plans_2026_08_15_stocks_api_perf_task_5_full_verification_graphify_update" + "source": "plans_2026_09_29_nginx_response_cache_nginx_response_cache_implementation_plan", + "target": "plans_2026_09_29_nginx_response_cache_review_focus_spec_implied_inputs_most_likely_to_bite" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L49", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L375", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_1" + "source": "plans_2026_09_29_nginx_response_cache_nginx_response_cache_implementation_plan", + "target": "plans_2026_09_29_nginx_response_cache_execution_handoff" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L88", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L36", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_2" + "source": "plans_2026_09_29_nginx_response_cache_review_focus_spec_implied_inputs_most_likely_to_bite", + "target": "plans_2026_09_29_nginx_response_cache_task_1_nginx_compose_service_http_context_config_upstream_bypass_routing" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L118", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L183", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_3" + "source": "plans_2026_09_29_nginx_response_cache_review_focus_spec_implied_inputs_most_likely_to_bite", + "target": "plans_2026_09_29_nginx_response_cache_task_2_cached_locations_shared_proxy_snippet_mirrored_ttls" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L131", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L302", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_4" + "source": "plans_2026_09_29_nginx_response_cache_review_focus_spec_implied_inputs_most_likely_to_bite", + "target": "plans_2026_09_29_nginx_response_cache_task_3_measure_the_gil_relief_and_record_it" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L177", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L51", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_5" + "source": "plans_2026_09_29_nginx_response_cache_task_1_nginx_compose_service_http_context_config_upstream_bypass_routing", + "target": "plans_2026_09_29_nginx_response_cache_codeblock_1" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L228", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L62", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_6" + "source": "plans_2026_09_29_nginx_response_cache_task_1_nginx_compose_service_http_context_config_upstream_bypass_routing", + "target": "plans_2026_09_29_nginx_response_cache_codeblock_2" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L244", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L87", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_7" + "source": "plans_2026_09_29_nginx_response_cache_task_1_nginx_compose_service_http_context_config_upstream_bypass_routing", + "target": "plans_2026_09_29_nginx_response_cache_codeblock_3" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L263", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L101", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_2_fast_paths_in_stocksquerymanager_for_default_shaped_queries", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_8" + "source": "plans_2026_09_29_nginx_response_cache_task_1_nginx_compose_service_http_context_config_upstream_bypass_routing", + "target": "plans_2026_09_29_nginx_response_cache_codeblock_4" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L315", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L116", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_2_fast_paths_in_stocksquerymanager_for_default_shaped_queries", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_9" + "source": "plans_2026_09_29_nginx_response_cache_task_1_nginx_compose_service_http_context_config_upstream_bypass_routing", + "target": "plans_2026_09_29_nginx_response_cache_codeblock_5" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L349", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L131", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_2_fast_paths_in_stocksquerymanager_for_default_shaped_queries", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_10" + "source": "plans_2026_09_29_nginx_response_cache_task_1_nginx_compose_service_http_context_config_upstream_bypass_routing", + "target": "plans_2026_09_29_nginx_response_cache_codeblock_6" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L405", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L152", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_3_convert_query_handlers_to_sync_def", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_11" + "source": "plans_2026_09_29_nginx_response_cache_task_1_nginx_compose_service_http_context_config_upstream_bypass_routing", + "target": "plans_2026_09_29_nginx_response_cache_codeblock_7" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L461", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L164", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_3_convert_query_handlers_to_sync_def", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_12" + "source": "plans_2026_09_29_nginx_response_cache_task_1_nginx_compose_service_http_context_config_upstream_bypass_routing", + "target": "plans_2026_09_29_nginx_response_cache_codeblock_8" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L482", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L176", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_4_pre_parsed_cotation_date_index_replace_filtercotationcolumn_hot_path", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_13" + "source": "plans_2026_09_29_nginx_response_cache_task_1_nginx_compose_service_http_context_config_upstream_bypass_routing", + "target": "plans_2026_09_29_nginx_response_cache_codeblock_9" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L512", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L195", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_4_pre_parsed_cotation_date_index_replace_filtercotationcolumn_hot_path", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_14" + "source": "plans_2026_09_29_nginx_response_cache_task_2_cached_locations_shared_proxy_snippet_mirrored_ttls", + "target": "plans_2026_09_29_nginx_response_cache_codeblock_10" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L519", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L206", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_4_pre_parsed_cotation_date_index_replace_filtercotationcolumn_hot_path", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_15" + "source": "plans_2026_09_29_nginx_response_cache_task_2_cached_locations_shared_proxy_snippet_mirrored_ttls", + "target": "plans_2026_09_29_nginx_response_cache_codeblock_11" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L539", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L246", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_4_pre_parsed_cotation_date_index_replace_filtercotationcolumn_hot_path", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_16" + "source": "plans_2026_09_29_nginx_response_cache_task_2_cached_locations_shared_proxy_snippet_mirrored_ttls", + "target": "plans_2026_09_29_nginx_response_cache_codeblock_12" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L548", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L282", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_4_pre_parsed_cotation_date_index_replace_filtercotationcolumn_hot_path", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_17" + "source": "plans_2026_09_29_nginx_response_cache_task_2_cached_locations_shared_proxy_snippet_mirrored_ttls", + "target": "plans_2026_09_29_nginx_response_cache_codeblock_13" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L606", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L295", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_4_pre_parsed_cotation_date_index_replace_filtercotationcolumn_hot_path", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_18" + "source": "plans_2026_09_29_nginx_response_cache_task_2_cached_locations_shared_proxy_snippet_mirrored_ttls", + "target": "plans_2026_09_29_nginx_response_cache_codeblock_14" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L314", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_superpowers_plans_2026_08_15_workspace_endpoints_md", - "target": "plans_2026_08_15_workspace_endpoints_workspace_file_endpoints_agent_serve_file_tool_implementation_plan" + "source": "plans_2026_09_29_nginx_response_cache_task_3_measure_the_gil_relief_and_record_it", + "target": "plans_2026_09_29_nginx_response_cache_codeblock_15" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L16", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L321", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_workspace_file_endpoints_agent_serve_file_tool_implementation_plan", - "target": "plans_2026_08_15_workspace_endpoints_global_constraints" + "source": "plans_2026_09_29_nginx_response_cache_task_3_measure_the_gil_relief_and_record_it", + "target": "plans_2026_09_29_nginx_response_cache_codeblock_16" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L632", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L333", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_workspace_file_endpoints_agent_serve_file_tool_implementation_plan", - "target": "plans_2026_08_15_workspace_endpoints_self_review" + "source": "plans_2026_09_29_nginx_response_cache_task_3_measure_the_gil_relief_and_record_it", + "target": "plans_2026_09_29_nginx_response_cache_codeblock_17" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L29", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L346", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_global_constraints", - "target": "plans_2026_08_15_workspace_endpoints_task_1_sandbox_delete_file_binary_write" + "source": "plans_2026_09_29_nginx_response_cache_task_3_measure_the_gil_relief_and_record_it", + "target": "plans_2026_09_29_nginx_response_cache_codeblock_18" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L152", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L367", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_global_constraints", - "target": "plans_2026_08_15_workspace_endpoints_task_2_dependency_config_setting" + "source": "plans_2026_09_29_nginx_response_cache_task_3_measure_the_gil_relief_and_record_it", + "target": "plans_2026_09_29_nginx_response_cache_codeblock_19" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L198", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_global_constraints", - "target": "plans_2026_08_15_workspace_endpoints_task_3_controller_endpoints" + "source": "docs_superpowers_plans_2026_09_29_stocks_cache_ttl_md", + "target": "plans_2026_09_29_stocks_cache_ttl_stocks_api_cache_ttl_fields_cache_implementation_plan" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L465", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_global_constraints", - "target": "plans_2026_08_15_workspace_endpoints_task_4_serve_file_agent_tool" + "source": "plans_2026_09_29_stocks_cache_ttl_stocks_api_cache_ttl_fields_cache_implementation_plan", + "target": "plans_2026_09_29_stocks_cache_ttl_global_constraints" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L611", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L25", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_global_constraints", - "target": "plans_2026_08_15_workspace_endpoints_task_5_full_verification" + "source": "plans_2026_09_29_stocks_cache_ttl_stocks_api_cache_ttl_fields_cache_implementation_plan", + "target": "plans_2026_09_29_stocks_cache_ttl_review_focus_spec_implied_inputs_most_likely_to_bite" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L43", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L410", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_1_sandbox_delete_file_binary_write", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_1" + "source": "plans_2026_09_29_stocks_cache_ttl_stocks_api_cache_ttl_fields_cache_implementation_plan", + "target": "plans_2026_09_29_stocks_cache_ttl_execution_handoff" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L108", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L36", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_1_sandbox_delete_file_binary_write", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_2" + "source": "plans_2026_09_29_stocks_cache_ttl_review_focus_spec_implied_inputs_most_likely_to_bite", + "target": "plans_2026_09_29_stocks_cache_ttl_task_1_ttl_constants_6h_on_the_three_data_routes_header_alignment" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L145", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L136", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_1_sandbox_delete_file_binary_write", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_3" + "source": "plans_2026_09_29_stocks_cache_ttl_review_focus_spec_implied_inputs_most_likely_to_bite", + "target": "plans_2026_09_29_stocks_cache_ttl_task_2_cache_stocks_fields" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L166", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L254", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_2_dependency_config_setting", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_4" + "source": "plans_2026_09_29_stocks_cache_ttl_review_focus_spec_implied_inputs_most_likely_to_bite", + "target": "plans_2026_09_29_stocks_cache_ttl_task_3_invalidate_the_endpoint_cache_on_feather_reload" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L172", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L340", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_2_dependency_config_setting", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_5" + "source": "plans_2026_09_29_stocks_cache_ttl_review_focus_spec_implied_inputs_most_likely_to_bite", + "target": "plans_2026_09_29_stocks_cache_ttl_task_4_measure_the_6h_window_rss_and_record_the_verdict" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L180", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L50", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_2_dependency_config_setting", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_6" + "source": "plans_2026_09_29_stocks_cache_ttl_task_1_ttl_constants_6h_on_the_three_data_routes_header_alignment", + "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_1" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L191", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L91", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_2_dependency_config_setting", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_7" + "source": "plans_2026_09_29_stocks_cache_ttl_task_1_ttl_constants_6h_on_the_three_data_routes_header_alignment", + "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_2" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L212", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L103", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_3_controller_endpoints", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_8" + "source": "plans_2026_09_29_stocks_cache_ttl_task_1_ttl_constants_6h_on_the_three_data_routes_header_alignment", + "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_3" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L368", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L112", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_3_controller_endpoints", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_9" + "source": "plans_2026_09_29_stocks_cache_ttl_task_1_ttl_constants_6h_on_the_three_data_routes_header_alignment", + "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_4" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L375", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L129", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_3_controller_endpoints", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_10" + "source": "plans_2026_09_29_stocks_cache_ttl_task_1_ttl_constants_6h_on_the_three_data_routes_header_alignment", + "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_5" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L381", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L152", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_3_controller_endpoints", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_11" + "source": "plans_2026_09_29_stocks_cache_ttl_task_2_cache_stocks_fields", + "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_6" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L458", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L165", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_3_controller_endpoints", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_12" + "source": "plans_2026_09_29_stocks_cache_ttl_task_2_cache_stocks_fields", + "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_7" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L479", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L220", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_4_serve_file_agent_tool", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_13" + "source": "plans_2026_09_29_stocks_cache_ttl_task_2_cache_stocks_fields", + "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_8" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L560", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L228", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_4_serve_file_agent_tool", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_14" + "source": "plans_2026_09_29_stocks_cache_ttl_task_2_cache_stocks_fields", + "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_9" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L566", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L247", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_4_serve_file_agent_tool", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_15" + "source": "plans_2026_09_29_stocks_cache_ttl_task_2_cache_stocks_fields", + "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_10" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L593", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L269", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_4_serve_file_agent_tool", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_16" + "source": "plans_2026_09_29_stocks_cache_ttl_task_3_invalidate_the_endpoint_cache_on_feather_reload", + "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_11" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L604", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L301", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_4_serve_file_agent_tool", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_17" + "source": "plans_2026_09_29_stocks_cache_ttl_task_3_invalidate_the_endpoint_cache_on_feather_reload", + "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_12" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L626", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L311", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_5_full_verification", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_18" + "source": "plans_2026_09_29_stocks_cache_ttl_task_3_invalidate_the_endpoint_cache_on_feather_reload", + "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_13" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L333", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_superpowers_plans_2026_08_15_workspace_frontend_md", - "target": "plans_2026_08_15_workspace_frontend_workspace_files_ui_promptbox_upload_implementation_plan" + "source": "plans_2026_09_29_stocks_cache_ttl_task_3_invalidate_the_endpoint_cache_on_feather_reload", + "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_14" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L13", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L352", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_workspace_files_ui_promptbox_upload_implementation_plan", - "target": "plans_2026_08_15_workspace_frontend_backend_contract_source_of_truth_for_api_js" + "source": "plans_2026_09_29_stocks_cache_ttl_task_4_measure_the_6h_window_rss_and_record_the_verdict", + "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_15" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L32", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L363", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_workspace_files_ui_promptbox_upload_implementation_plan", - "target": "plans_2026_08_15_workspace_frontend_global_constraints" + "source": "plans_2026_09_29_stocks_cache_ttl_task_4_measure_the_6h_window_rss_and_record_the_verdict", + "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_16" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L43", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L376", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_global_constraints", - "target": "plans_2026_08_15_workspace_frontend_task_1_api_layer_workspace_functions_in_src_api_js" + "source": "plans_2026_09_29_stocks_cache_ttl_task_4_measure_the_6h_window_rss_and_record_the_verdict", + "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_17" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L176", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L384", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_global_constraints", - "target": "plans_2026_08_15_workspace_frontend_task_2_settings_menu_workspace_files_grid_in_sessionsidebar" + "source": "plans_2026_09_29_stocks_cache_ttl_task_4_measure_the_6h_window_rss_and_record_the_verdict", + "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_18" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L294", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L402", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_global_constraints", - "target": "plans_2026_08_15_workspace_frontend_task_3_drag_drop_file_upload_in_the_promptbox_inputbar_jsx" + "source": "plans_2026_09_29_stocks_cache_ttl_task_4_measure_the_6h_window_rss_and_record_the_verdict", + "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_19" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L403", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_global_constraints", - "target": "plans_2026_08_15_workspace_frontend_task_4_docker_restart_e2e_of_prometheus_chat_stream_performed_by_controller_not_a_subagent" + "source": "docs_superpowers_plans_2026_09_29_uvicorn_worker_scaling_md", + "target": "plans_2026_09_29_uvicorn_worker_scaling_uvicorn_fastapi_worker_scaling_implementation_plan" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L61", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_task_1_api_layer_workspace_functions_in_src_api_js", - "target": "plans_2026_08_15_workspace_frontend_codeblock_1" + "source": "plans_2026_09_29_uvicorn_worker_scaling_uvicorn_fastapi_worker_scaling_implementation_plan", + "target": "plans_2026_09_29_uvicorn_worker_scaling_global_constraints" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L122", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L23", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_task_1_api_layer_workspace_functions_in_src_api_js", - "target": "plans_2026_08_15_workspace_frontend_codeblock_2" + "source": "plans_2026_09_29_uvicorn_worker_scaling_uvicorn_fastapi_worker_scaling_implementation_plan", + "target": "plans_2026_09_29_uvicorn_worker_scaling_review_focus" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L169", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L725", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_task_1_api_layer_workspace_functions_in_src_api_js", - "target": "plans_2026_08_15_workspace_frontend_codeblock_3" + "source": "plans_2026_09_29_uvicorn_worker_scaling_uvicorn_fastapi_worker_scaling_implementation_plan", + "target": "plans_2026_09_29_uvicorn_worker_scaling_self_review" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L191", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L35", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_task_2_settings_menu_workspace_files_grid_in_sessionsidebar", - "target": "plans_2026_08_15_workspace_frontend_codeblock_4" + "source": "plans_2026_09_29_uvicorn_worker_scaling_review_focus", + "target": "plans_2026_09_29_uvicorn_worker_scaling_task_1_measure_the_concurrency_ceiling_and_record_the_decision" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L246", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L170", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_task_2_settings_menu_workspace_files_grid_in_sessionsidebar", - "target": "plans_2026_08_15_workspace_frontend_codeblock_5" + "source": "plans_2026_09_29_uvicorn_worker_scaling_review_focus", + "target": "plans_2026_09_29_uvicorn_worker_scaling_task_2_load_the_cache_on_the_build_loser_path" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L272", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L292", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_task_2_settings_menu_workspace_files_grid_in_sessionsidebar", - "target": "plans_2026_08_15_workspace_frontend_codeblock_6" + "source": "plans_2026_09_29_uvicorn_worker_scaling_review_focus", + "target": "plans_2026_09_29_uvicorn_worker_scaling_task_3_run_migrations_exactly_once_per_deploy" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L287", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L365", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_task_2_settings_menu_workspace_files_grid_in_sessionsidebar", - "target": "plans_2026_08_15_workspace_frontend_codeblock_7" + "source": "plans_2026_09_29_uvicorn_worker_scaling_review_focus", + "target": "plans_2026_09_29_uvicorn_worker_scaling_task_4_size_database_pools_by_process_count" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L308", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L431", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_task_3_drag_drop_file_upload_in_the_promptbox_inputbar_jsx", - "target": "plans_2026_08_15_workspace_frontend_codeblock_8" + "source": "plans_2026_09_29_uvicorn_worker_scaling_review_focus", + "target": "plans_2026_09_29_uvicorn_worker_scaling_task_5_run_stocks_api_as_n_single_service_processes_behind_nginx" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L372", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L654", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_task_3_drag_drop_file_upload_in_the_promptbox_inputbar_jsx", - "target": "plans_2026_08_15_workspace_frontend_codeblock_9" + "source": "plans_2026_09_29_uvicorn_worker_scaling_review_focus", + "target": "plans_2026_09_29_uvicorn_worker_scaling_task_6_verify_the_fleet_single_build_one_migration_shared_frame" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L396", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L47", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_task_3_drag_drop_file_upload_in_the_promptbox_inputbar_jsx", - "target": "plans_2026_08_15_workspace_frontend_codeblock_10" + "source": "plans_2026_09_29_uvicorn_worker_scaling_task_1_measure_the_concurrency_ceiling_and_record_the_decision", + "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_1" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L145", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_superpowers_plans_2026_08_17_openui_migration_md", - "target": "plans_2026_08_17_openui_migration_openui_migration_plan" + "source": "plans_2026_09_29_uvicorn_worker_scaling_task_1_measure_the_concurrency_ceiling_and_record_the_decision", + "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_2" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L20", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L158", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_openui_migration_plan", - "target": "plans_2026_08_17_openui_migration_global_constraints" + "source": "plans_2026_09_29_uvicorn_worker_scaling_task_1_measure_the_concurrency_ceiling_and_record_the_decision", + "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_3" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L30", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L182", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_openui_migration_plan", - "target": "plans_2026_08_17_openui_migration_file_structure" + "source": "plans_2026_09_29_uvicorn_worker_scaling_task_2_load_the_cache_on_the_build_loser_path", + "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_4" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L52", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L228", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_openui_migration_plan", - "target": "plans_2026_08_17_openui_migration_task_1_install_openui_remove_mdocui" + "source": "plans_2026_09_29_uvicorn_worker_scaling_task_2_load_the_cache_on_the_build_loser_path", + "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_5" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L80", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L244", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_openui_migration_plan", - "target": "plans_2026_08_17_openui_migration_task_2_define_prometheus_component_library" + "source": "plans_2026_09_29_uvicorn_worker_scaling_task_2_load_the_cache_on_the_build_loser_path", + "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_6" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L385", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L285", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_openui_migration_plan", - "target": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer" + "source": "plans_2026_09_29_uvicorn_worker_scaling_task_2_load_the_cache_on_the_build_loser_path", + "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_7" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L455", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L304", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_openui_migration_plan", - "target": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt" + "source": "plans_2026_09_29_uvicorn_worker_scaling_task_3_run_migrations_exactly_once_per_deploy", + "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_8" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L610", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L333", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_openui_migration_plan", - "target": "plans_2026_08_17_openui_migration_task_5_integration_test" + "source": "plans_2026_09_29_uvicorn_worker_scaling_task_3_run_migrations_exactly_once_per_deploy", + "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_9" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L640", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L358", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_openui_migration_plan", - "target": "plans_2026_08_17_openui_migration_verification_checklist" + "source": "plans_2026_09_29_uvicorn_worker_scaling_task_3_run_migrations_exactly_once_per_deploy", + "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_10" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L32", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L377", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_file_structure", - "target": "plans_2026_08_17_openui_migration_frontend_local_only_never_committed" + "source": "plans_2026_09_29_uvicorn_worker_scaling_task_4_size_database_pools_by_process_count", + "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_11" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L43", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L407", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_file_structure", - "target": "plans_2026_08_17_openui_migration_backend_commit" + "source": "plans_2026_09_29_uvicorn_worker_scaling_task_4_size_database_pools_by_process_count", + "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_12" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L58", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L424", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_1_install_openui_remove_mdocui", - "target": "plans_2026_08_17_openui_migration_codeblock_1" + "source": "plans_2026_09_29_uvicorn_worker_scaling_task_4_size_database_pools_by_process_count", + "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_13" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L66", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L444", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_1_install_openui_remove_mdocui", - "target": "plans_2026_08_17_openui_migration_codeblock_2" + "source": "plans_2026_09_29_uvicorn_worker_scaling_task_5_run_stocks_api_as_n_single_service_processes_behind_nginx", + "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_14" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L72", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L476", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_1_install_openui_remove_mdocui", - "target": "plans_2026_08_17_openui_migration_codeblock_3" + "source": "plans_2026_09_29_uvicorn_worker_scaling_task_5_run_stocks_api_as_n_single_service_processes_behind_nginx", + "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_15" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L86", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L483", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_2_define_prometheus_component_library", - "target": "plans_2026_08_17_openui_migration_component_mapping" + "source": "plans_2026_09_29_uvicorn_worker_scaling_task_5_run_stocks_api_as_n_single_service_processes_behind_nginx", + "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_16" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L101", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L494", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_component_mapping", - "target": "plans_2026_08_17_openui_migration_codeblock_4" + "source": "plans_2026_09_29_uvicorn_worker_scaling_task_5_run_stocks_api_as_n_single_service_processes_behind_nginx", + "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_17" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L339", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L618", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_component_mapping", - "target": "plans_2026_08_17_openui_migration_codeblock_5" + "source": "plans_2026_09_29_uvicorn_worker_scaling_task_5_run_stocks_api_as_n_single_service_processes_behind_nginx", + "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_18" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L396", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L647", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer", - "target": "plans_2026_08_17_openui_migration_codeblock_6" + "source": "plans_2026_09_29_uvicorn_worker_scaling_task_5_run_stocks_api_as_n_single_service_processes_behind_nginx", + "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_19" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L428", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L666", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer", - "target": "plans_2026_08_17_openui_migration_codeblock_7" + "source": "plans_2026_09_29_uvicorn_worker_scaling_task_6_verify_the_fleet_single_build_one_migration_shared_frame", + "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_20" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L435", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L718", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer", - "target": "plans_2026_08_17_openui_migration_codeblock_8" + "source": "plans_2026_09_29_uvicorn_worker_scaling_task_6_verify_the_fleet_single_build_one_migration_shared_frame", + "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_21" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L442", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer", - "target": "plans_2026_08_17_openui_migration_codeblock_9" + "source": "docs_superpowers_plans_2026_09_29_zerocopy_stocks_cache_md", + "target": "plans_2026_09_29_zerocopy_stocks_cache_zero_copy_memory_mapped_stocks_cache_implementation_plan" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L449", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer", - "target": "plans_2026_08_17_openui_migration_codeblock_10" + "source": "plans_2026_09_29_zerocopy_stocks_cache_zero_copy_memory_mapped_stocks_cache_implementation_plan", + "target": "plans_2026_09_29_zerocopy_stocks_cache_global_constraints" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L467", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L23", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", - "target": "plans_2026_08_17_openui_migration_codeblock_11" + "source": "plans_2026_09_29_zerocopy_stocks_cache_zero_copy_memory_mapped_stocks_cache_implementation_plan", + "target": "plans_2026_09_29_zerocopy_stocks_cache_review_focus_spec_implied_inputs_most_likely_to_bite" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L486", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L353", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", - "target": "plans_2026_08_17_openui_migration_codeblock_12" + "source": "plans_2026_09_29_zerocopy_stocks_cache_zero_copy_memory_mapped_stocks_cache_implementation_plan", + "target": "plans_2026_09_29_zerocopy_stocks_cache_execution_handoff" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L501", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L33", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", - "target": "plans_2026_08_17_openui_migration_codeblock_13" + "source": "plans_2026_09_29_zerocopy_stocks_cache_review_focus_spec_implied_inputs_most_likely_to_bite", + "target": "plans_2026_09_29_zerocopy_stocks_cache_task_1_presort_at_build_time_order_by_b3_presorted_marker" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L542", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L125", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", - "target": "plans_2026_08_17_openui_migration_codeblock_14" + "source": "plans_2026_09_29_zerocopy_stocks_cache_review_focus_spec_implied_inputs_most_likely_to_bite", + "target": "plans_2026_09_29_zerocopy_stocks_cache_task_2_zero_copy_mmap_load_readfeatherdataframe_marker_aware_sort_skip" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L555", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L292", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", - "target": "plans_2026_08_17_openui_migration_codeblock_15" + "source": "plans_2026_09_29_zerocopy_stocks_cache_review_focus_spec_implied_inputs_most_likely_to_bite", + "target": "plans_2026_09_29_zerocopy_stocks_cache_task_3_arrowdtype_aware_json_column_decompression_query_py_guard" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L572", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L47", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", - "target": "plans_2026_08_17_openui_migration_codeblock_16" + "source": "plans_2026_09_29_zerocopy_stocks_cache_task_1_presort_at_build_time_order_by_b3_presorted_marker", + "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_1" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L577", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L93", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", - "target": "plans_2026_08_17_openui_migration_codeblock_17" + "source": "plans_2026_09_29_zerocopy_stocks_cache_task_1_presort_at_build_time_order_by_b3_presorted_marker", + "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_2" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L590", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L101", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", - "target": "plans_2026_08_17_openui_migration_codeblock_18" + "source": "plans_2026_09_29_zerocopy_stocks_cache_task_1_presort_at_build_time_order_by_b3_presorted_marker", + "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_3" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L596", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L107", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", - "target": "plans_2026_08_17_openui_migration_codeblock_19" + "source": "plans_2026_09_29_zerocopy_stocks_cache_task_1_presort_at_build_time_order_by_b3_presorted_marker", + "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_4" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L602", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L118", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", - "target": "plans_2026_08_17_openui_migration_codeblock_20" + "source": "plans_2026_09_29_zerocopy_stocks_cache_task_1_presort_at_build_time_order_by_b3_presorted_marker", + "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_5" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L614", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L142", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_5_integration_test", - "target": "plans_2026_08_17_openui_migration_codeblock_21" + "source": "plans_2026_09_29_zerocopy_stocks_cache_task_2_zero_copy_mmap_load_readfeatherdataframe_marker_aware_sort_skip", + "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_6" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L620", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L148", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_5_integration_test", - "target": "plans_2026_08_17_openui_migration_codeblock_22" + "source": "plans_2026_09_29_zerocopy_stocks_cache_task_2_zero_copy_mmap_load_readfeatherdataframe_marker_aware_sort_skip", + "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_7" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L152", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_superpowers_plans_2026_09_03_followup_hardening_md", - "target": "plans_2026_09_03_followup_hardening_follow_up_hardening_implementation_plan" + "source": "plans_2026_09_29_zerocopy_stocks_cache_task_2_zero_copy_mmap_load_readfeatherdataframe_marker_aware_sort_skip", + "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_8" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L13", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L159", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_follow_up_hardening_implementation_plan", - "target": "plans_2026_09_03_followup_hardening_global_constraints" + "source": "plans_2026_09_29_zerocopy_stocks_cache_task_2_zero_copy_mmap_load_readfeatherdataframe_marker_aware_sort_skip", + "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_9" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L26", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L165", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_follow_up_hardening_implementation_plan", - "target": "plans_2026_09_03_followup_hardening_file_map" + "source": "plans_2026_09_29_zerocopy_stocks_cache_task_2_zero_copy_mmap_load_readfeatherdataframe_marker_aware_sort_skip", + "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_10" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L814", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L250", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_follow_up_hardening_implementation_plan", - "target": "plans_2026_09_03_followup_hardening_self_review" + "source": "plans_2026_09_29_zerocopy_stocks_cache_task_2_zero_copy_mmap_load_readfeatherdataframe_marker_aware_sort_skip", + "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_11" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L44", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L256", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_file_map", - "target": "plans_2026_09_03_followup_hardening_task_1_thoth_maat_permission_decision" + "source": "plans_2026_09_29_zerocopy_stocks_cache_task_2_zero_copy_mmap_load_readfeatherdataframe_marker_aware_sort_skip", + "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_12" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L127", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L268", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_file_map", - "target": "plans_2026_09_03_followup_hardening_task_2_p6_redis_cashews_insertion_behind_existing_sync_cache" + "source": "plans_2026_09_29_zerocopy_stocks_cache_task_2_zero_copy_mmap_load_readfeatherdataframe_marker_aware_sort_skip", + "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_13" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L240", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L285", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_file_map", - "target": "plans_2026_09_03_followup_hardening_task_3_zstd_hot_path_rework_via_feather_to_dict_zstd_migration" + "source": "plans_2026_09_29_zerocopy_stocks_cache_task_2_zero_copy_mmap_load_readfeatherdataframe_marker_aware_sort_skip", + "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_14" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L337", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L306", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_file_map", - "target": "plans_2026_09_03_followup_hardening_task_4_queryhistorical_queryfundamental_presort_invariant_guard" + "source": "plans_2026_09_29_zerocopy_stocks_cache_task_3_arrowdtype_aware_json_column_decompression_query_py_guard", + "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_15" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L415", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L327", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_file_map", - "target": "plans_2026_09_03_followup_hardening_task_5_history_backfill_dedup_indices_as_logging_only" + "source": "plans_2026_09_29_zerocopy_stocks_cache_task_3_arrowdtype_aware_json_column_decompression_query_py_guard", + "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_16" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L509", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L331", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_file_map", - "target": "plans_2026_09_03_followup_hardening_task_6_stocks_api_limiter_design_design_only_do_not_enable" + "source": "plans_2026_09_29_zerocopy_stocks_cache_task_3_arrowdtype_aware_json_column_decompression_query_py_guard", + "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_17" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L562", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L346", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_file_map", - "target": "plans_2026_09_03_followup_hardening_task_7_remove_temporary_run_py_scraper_debug_endpoint" + "source": "plans_2026_09_29_zerocopy_stocks_cache_task_3_arrowdtype_aware_json_column_decompression_query_py_guard", + "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_18" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L623", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_file_map", - "target": "plans_2026_09_03_followup_hardening_task_8_fix_20_pre_existing_environmental_failures" + "source": "docs_superpowers_plans_2026_09_30_wallet_p1_md", + "target": "plans_2026_09_30_wallet_p1_mansa_wallet_implementation_plan_p1_p2_p3" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L712", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "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_9_session_refresh_token_rotation_follow_up" + "source": "plans_2026_09_30_wallet_p1_mansa_wallet_implementation_plan_p1_p2_p3", + "target": "plans_2026_09_30_wallet_p1_global_constraints" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L61", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L29", "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": "plans_2026_09_30_wallet_p1_mansa_wallet_implementation_plan_p1_p2_p3", + "target": "plans_2026_09_30_wallet_p1_review_focus" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L80", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L1060", "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": "plans_2026_09_30_wallet_p1_mansa_wallet_implementation_plan_p1_p2_p3", + "target": "plans_2026_09_30_wallet_p1_goal_2_p2_earnings_performance_starts_only_after_goal_1_complete" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L96", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L1304", "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": "plans_2026_09_30_wallet_p1_mansa_wallet_implementation_plan_p1_p2_p3", + "target": "plans_2026_09_30_wallet_p1_goal_3_p3_assist_narration_starts_only_after_goal_2_complete" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L120", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L43", "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": "plans_2026_09_30_wallet_p1_review_focus", + "target": "plans_2026_09_30_wallet_p1_task_1_permission_wallet_on_the_base_role_ripple_fixes" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L143", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L131", "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": "plans_2026_09_30_wallet_p1_review_focus", + "target": "plans_2026_09_30_wallet_p1_task_2_wallet_orm_models_5_tables_user_db" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L185", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L265", "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": "plans_2026_09_30_wallet_p1_review_focus", + "target": "plans_2026_09_30_wallet_p1_task_3_alembic_revision_for_the_wallet_tables_needs_mysql" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L198", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L316", "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": "plans_2026_09_30_wallet_p1_review_focus", + "target": "plans_2026_09_30_wallet_p1_task_4_wallet_auth_dependency_introspect_contract_raw_token_resolver" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L204", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L452", "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": "plans_2026_09_30_wallet_p1_review_focus", + "target": "plans_2026_09_30_wallet_p1_task_5_wallets_crud_mount_make_wallet_client" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L233", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L627", "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": "plans_2026_09_30_wallet_p1_review_focus", + "target": "plans_2026_09_30_wallet_p1_task_6_entries_ledger_holdings_recalc_avg_price_engine" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L256", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L789", "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": "plans_2026_09_30_wallet_p1_review_focus", + "target": "plans_2026_09_30_wallet_p1_task_7_positions_live_price_join_over_http" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L284", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L964", "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": "plans_2026_09_30_wallet_p1_review_focus", + "target": "plans_2026_09_30_wallet_p1_task_8_summary_snapshots_allocation_targets_ratings" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L298", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L1029", "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": "plans_2026_09_30_wallet_p1_review_focus", + "target": "plans_2026_09_30_wallet_p1_task_9_full_gate_ci_ps1_green_coverage_fallout" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L330", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L60", "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": "plans_2026_09_30_wallet_p1_task_1_permission_wallet_on_the_base_role_ripple_fixes", + "target": "plans_2026_09_30_wallet_p1_codeblock_1" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L351", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L93", "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": "plans_2026_09_30_wallet_p1_task_1_permission_wallet_on_the_base_role_ripple_fixes", + "target": "plans_2026_09_30_wallet_p1_codeblock_2" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L390", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "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_15" + "source": "plans_2026_09_30_wallet_p1_task_1_permission_wallet_on_the_base_role_ripple_fixes", + "target": "plans_2026_09_30_wallet_p1_codeblock_3" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L408", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L124", "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": "plans_2026_09_30_wallet_p1_task_1_permission_wallet_on_the_base_role_ripple_fixes", + "target": "plans_2026_09_30_wallet_p1_codeblock_4" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L429", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L143", "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": "plans_2026_09_30_wallet_p1_task_2_wallet_orm_models_5_tables_user_db", + "target": "plans_2026_09_30_wallet_p1_codeblock_5" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L451", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L172", "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": "plans_2026_09_30_wallet_p1_task_2_wallet_orm_models_5_tables_user_db", + "target": "plans_2026_09_30_wallet_p1_codeblock_6" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L502", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L258", "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": "plans_2026_09_30_wallet_p1_task_2_wallet_orm_models_5_tables_user_db", + "target": "plans_2026_09_30_wallet_p1_codeblock_7" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L525", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L282", "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": "plans_2026_09_30_wallet_p1_task_3_alembic_revision_for_the_wallet_tables_needs_mysql", + "target": "plans_2026_09_30_wallet_p1_codeblock_8" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L541", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L309", "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": "plans_2026_09_30_wallet_p1_task_3_alembic_revision_for_the_wallet_tables_needs_mysql", + "target": "plans_2026_09_30_wallet_p1_codeblock_9" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L555", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L328", "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": "plans_2026_09_30_wallet_p1_task_4_wallet_auth_dependency_introspect_contract_raw_token_resolver", + "target": "plans_2026_09_30_wallet_p1_codeblock_10" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L577", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L395", "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": "plans_2026_09_30_wallet_p1_task_4_wallet_auth_dependency_introspect_contract_raw_token_resolver", + "target": "plans_2026_09_30_wallet_p1_codeblock_11" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L598", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L445", "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": "plans_2026_09_30_wallet_p1_task_4_wallet_auth_dependency_introspect_contract_raw_token_resolver", + "target": "plans_2026_09_30_wallet_p1_codeblock_12" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L616", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L467", "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": "plans_2026_09_30_wallet_p1_task_5_wallets_crud_mount_make_wallet_client", + "target": "plans_2026_09_30_wallet_p1_codeblock_13" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L640", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L491", "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": "plans_2026_09_30_wallet_p1_task_5_wallets_crud_mount_make_wallet_client", + "target": "plans_2026_09_30_wallet_p1_codeblock_14" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L668", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L515", "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": "plans_2026_09_30_wallet_p1_task_5_wallets_crud_mount_make_wallet_client", + "target": "plans_2026_09_30_wallet_p1_codeblock_15" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L676", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L553", "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": "plans_2026_09_30_wallet_p1_task_5_wallets_crud_mount_make_wallet_client", + "target": "plans_2026_09_30_wallet_p1_codeblock_16" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L705", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L573", "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": "plans_2026_09_30_wallet_p1_task_5_wallets_crud_mount_make_wallet_client", + "target": "plans_2026_09_30_wallet_p1_codeblock_17" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L731", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L620", "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": "plans_2026_09_30_wallet_p1_task_5_wallets_crud_mount_make_wallet_client", + "target": "plans_2026_09_30_wallet_p1_codeblock_18" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L753", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L642", "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": "plans_2026_09_30_wallet_p1_task_6_entries_ledger_holdings_recalc_avg_price_engine", + "target": "plans_2026_09_30_wallet_p1_codeblock_19" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L769", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L691", "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": "plans_2026_09_30_wallet_p1_task_6_entries_ledger_holdings_recalc_avg_price_engine", + "target": "plans_2026_09_30_wallet_p1_codeblock_20" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L780", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L782", "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": "plans_2026_09_30_wallet_p1_task_6_entries_ledger_holdings_recalc_avg_price_engine", + "target": "plans_2026_09_30_wallet_p1_codeblock_21" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L807", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L804", "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": "plans_2026_09_30_wallet_p1_task_7_positions_live_price_join_over_http", + "target": "plans_2026_09_30_wallet_p1_codeblock_22" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L888", "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": "plans_2026_09_30_wallet_p1_task_7_positions_live_price_join_over_http", + "target": "plans_2026_09_30_wallet_p1_codeblock_23" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L13", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L926", "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": "plans_2026_09_30_wallet_p1_task_7_positions_live_price_join_over_http", + "target": "plans_2026_09_30_wallet_p1_codeblock_24" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L35", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L957", "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": "plans_2026_09_30_wallet_p1_task_7_positions_live_price_join_over_http", + "target": "plans_2026_09_30_wallet_p1_codeblock_25" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L60", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L979", "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": "plans_2026_09_30_wallet_p1_task_8_summary_snapshots_allocation_targets_ratings", + "target": "plans_2026_09_30_wallet_p1_codeblock_26" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L166", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L1022", "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": "plans_2026_09_30_wallet_p1_task_8_summary_snapshots_allocation_targets_ratings", + "target": "plans_2026_09_30_wallet_p1_codeblock_27" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L269", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L1051", "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": "plans_2026_09_30_wallet_p1_task_9_full_gate_ci_ps1_green_coverage_fallout", + "target": "plans_2026_09_30_wallet_p1_codeblock_28" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L391", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L1064", "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": "plans_2026_09_30_wallet_p1_goal_2_p2_earnings_performance_starts_only_after_goal_1_complete", + "target": "plans_2026_09_30_wallet_p1_task_p2_1_earning_model_second_migration_revision" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L567", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L1146", "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": "plans_2026_09_30_wallet_p1_goal_2_p2_earnings_performance_starts_only_after_goal_1_complete", + "target": "plans_2026_09_30_wallet_p1_task_p2_2_earnings_sync_accrue_transition_pull_based" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L720", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L1236", "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": "plans_2026_09_30_wallet_p1_goal_2_p2_earnings_performance_starts_only_after_goal_1_complete", + "target": "plans_2026_09_30_wallet_p1_task_p2_3_performance_windows_on_demand_reconstruction_no_new_table" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L869", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L1080", "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": "plans_2026_09_30_wallet_p1_task_p2_1_earning_model_second_migration_revision", + "target": "plans_2026_09_30_wallet_p1_codeblock_29" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1000", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L1108", "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": "plans_2026_09_30_wallet_p1_task_p2_1_earning_model_second_migration_revision", + "target": "plans_2026_09_30_wallet_p1_codeblock_30" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1115", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L1139", "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": "plans_2026_09_30_wallet_p1_task_p2_1_earning_model_second_migration_revision", + "target": "plans_2026_09_30_wallet_p1_codeblock_31" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1224", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L1159", "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": "plans_2026_09_30_wallet_p1_task_p2_2_earnings_sync_accrue_transition_pull_based", + "target": "plans_2026_09_30_wallet_p1_codeblock_32" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1325", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L1167", "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": "plans_2026_09_30_wallet_p1_task_p2_2_earnings_sync_accrue_transition_pull_based", + "target": "plans_2026_09_30_wallet_p1_codeblock_33" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1482", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L1229", "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": "plans_2026_09_30_wallet_p1_task_p2_2_earnings_sync_accrue_transition_pull_based", + "target": "plans_2026_09_30_wallet_p1_codeblock_34" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1618", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L1251", "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": "plans_2026_09_30_wallet_p1_task_p2_3_performance_windows_on_demand_reconstruction_no_new_table", + "target": "plans_2026_09_30_wallet_p1_codeblock_35" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L73", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L1297", "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": "plans_2026_09_30_wallet_p1_task_p2_3_performance_windows_on_demand_reconstruction_no_new_table", + "target": "plans_2026_09_30_wallet_p1_codeblock_36" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L101", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L1308", "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": "plans_2026_09_30_wallet_p1_goal_3_p3_assist_narration_starts_only_after_goal_2_complete", + "target": "plans_2026_09_30_wallet_p1_task_p3_0_write_the_p3_detailed_plan_required_before_p3_1_p3_2" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L138", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L1312", "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": "plans_2026_09_30_wallet_p1_goal_3_p3_assist_narration_starts_only_after_goal_2_complete", + "target": "plans_2026_09_30_wallet_p1_task_p3_1_ratings_assist_tuning_gated_on_the_p3_plan" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L144", + "source_file": "docs/superpowers/plans/2026-09-30-wallet-p1.md", + "source_location": "L1316", "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": "plans_2026_09_30_wallet_p1_goal_3_p3_assist_narration_starts_only_after_goal_2_complete", + "target": "plans_2026_09_30_wallet_p1_task_p3_2_orunmila_narration_tools_gated_on_the_p3_plan" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L159", + "source_file": "docs/superpowers/plans/2026-10-01-wallet-p3.md", + "source_location": "L1", "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": "docs_superpowers_plans_2026_10_01_wallet_p3_md", + "target": "plans_2026_10_01_wallet_p3_mansa_wallet_p3_detailed_plan_assist_narration" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L189", + "source_file": "docs/superpowers/plans/2026-10-01-wallet-p3.md", + "source_location": "L13", "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": "plans_2026_10_01_wallet_p3_mansa_wallet_p3_detailed_plan_assist_narration", + "target": "plans_2026_10_01_wallet_p3_global_constraints" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L248", + "source_file": "docs/superpowers/plans/2026-10-01-wallet-p3.md", + "source_location": "L31", "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": "plans_2026_10_01_wallet_p3_mansa_wallet_p3_detailed_plan_assist_narration", + "target": "plans_2026_10_01_wallet_p3_review_focus" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L262", + "source_file": "docs/superpowers/plans/2026-10-01-wallet-p3.md", + "source_location": "L307", "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": "plans_2026_10_01_wallet_p3_mansa_wallet_p3_detailed_plan_assist_narration", + "target": "plans_2026_10_01_wallet_p3_out_of_scope_for_p3_unchanged_from_spec_4_goal_3" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L281", + "source_file": "docs/superpowers/plans/2026-10-01-wallet-p3.md", + "source_location": "L311", "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": "plans_2026_10_01_wallet_p3_mansa_wallet_p3_detailed_plan_assist_narration", + "target": "plans_2026_10_01_wallet_p3_standing_rules_carried_over" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L325", + "source_file": "docs/superpowers/plans/2026-10-01-wallet-p3.md", + "source_location": "L315", "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": "plans_2026_10_01_wallet_p3_mansa_wallet_p3_detailed_plan_assist_narration", + "target": "plans_2026_10_01_wallet_p3_finding_9_charter_gap_note" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L384", + "source_file": "docs/superpowers/plans/2026-10-01-wallet-p3.md", + "source_location": "L45", "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": "plans_2026_10_01_wallet_p3_review_focus", + "target": "plans_2026_10_01_wallet_p3_task_p3_1_ratings_assist_tuning_xango_informed_buy_flag_gated_on_this_plan" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L404", + "source_file": "docs/superpowers/plans/2026-10-01-wallet-p3.md", + "source_location": "L185", "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": "plans_2026_10_01_wallet_p3_review_focus", + "target": "plans_2026_10_01_wallet_p3_task_p3_2_orunmila_narration_tools_narrate_positions_first_gated_on_this_plan" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L471", + "source_file": "docs/superpowers/plans/2026-10-01-wallet-p3.md", + "source_location": "L58", "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": "plans_2026_10_01_wallet_p3_task_p3_1_ratings_assist_tuning_xango_informed_buy_flag_gated_on_this_plan", + "target": "plans_2026_10_01_wallet_p3_codeblock_1" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L524", + "source_file": "docs/superpowers/plans/2026-10-01-wallet-p3.md", + "source_location": "L68", "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": "plans_2026_10_01_wallet_p3_task_p3_1_ratings_assist_tuning_xango_informed_buy_flag_gated_on_this_plan", + "target": "plans_2026_10_01_wallet_p3_codeblock_2" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L560", + "source_file": "docs/superpowers/plans/2026-10-01-wallet-p3.md", + "source_location": "L83", "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": "plans_2026_10_01_wallet_p3_task_p3_1_ratings_assist_tuning_xango_informed_buy_flag_gated_on_this_plan", + "target": "plans_2026_10_01_wallet_p3_codeblock_3" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L580", + "source_file": "docs/superpowers/plans/2026-10-01-wallet-p3.md", + "source_location": "L178", "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": "plans_2026_10_01_wallet_p3_task_p3_1_ratings_assist_tuning_xango_informed_buy_flag_gated_on_this_plan", + "target": "plans_2026_10_01_wallet_p3_codeblock_4" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L649", + "source_file": "docs/superpowers/plans/2026-10-01-wallet-p3.md", + "source_location": "L198", "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": "plans_2026_10_01_wallet_p3_task_p3_2_orunmila_narration_tools_narrate_positions_first_gated_on_this_plan", + "target": "plans_2026_10_01_wallet_p3_codeblock_5" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L659", + "source_file": "docs/superpowers/plans/2026-10-01-wallet-p3.md", + "source_location": "L227", "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": "plans_2026_10_01_wallet_p3_task_p3_2_orunmila_narration_tools_narrate_positions_first_gated_on_this_plan", + "target": "plans_2026_10_01_wallet_p3_codeblock_6" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L693", + "source_file": "docs/superpowers/plans/2026-10-01-wallet-p3.md", + "source_location": "L300", "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": "plans_2026_10_01_wallet_p3_task_p3_2_orunmila_narration_tools_narrate_positions_first_gated_on_this_plan", + "target": "plans_2026_10_01_wallet_p3_codeblock_7" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L713", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_5_lot_endpoint_append_immutable_buy_sell_lots", - "target": "plans_2026_09_04_wallet_management_codeblock_20" + "source": "docs_superpowers_specs_2026_09_04_wallet_design_md", + "target": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L732", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L8", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_6_price_client_one_batched_stocks_api_fetch_per_snapshot", - "target": "plans_2026_09_04_wallet_management_codeblock_21" + "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", + "target": "specs_2026_09_04_wallet_design_1_context" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L804", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L46", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_6_price_client_one_batched_stocks_api_fetch_per_snapshot", - "target": "plans_2026_09_04_wallet_management_codeblock_22" + "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", + "target": "specs_2026_09_04_wallet_design_2_decision_design_a_pure_event_log_derive_at_read_time" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L862", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L68", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_6_price_client_one_batched_stocks_api_fetch_per_snapshot", - "target": "plans_2026_09_04_wallet_management_codeblock_23" + "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", + "target": "specs_2026_09_04_wallet_design_3_data_model_user_db_alembic" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L882", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L131", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_7_snapshot_endpoint_derived_portfolio_read_with_live_prices", - "target": "plans_2026_09_04_wallet_management_codeblock_24" + "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", + "target": "specs_2026_09_04_wallet_design_4_derivations_all_at_read_time_date_order" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L944", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L175", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_7_snapshot_endpoint_derived_portfolio_read_with_live_prices", - "target": "plans_2026_09_04_wallet_management_codeblock_25" + "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", + "target": "specs_2026_09_04_wallet_design_5_endpoints_wallet_on_the_user_port_via_walletservice_getcurrentuser_gate_inline_body_query" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L972", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L203", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_7_snapshot_endpoint_derived_portfolio_read_with_live_prices", - "target": "plans_2026_09_04_wallet_management_codeblock_26" + "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", + "target": "specs_2026_09_04_wallet_design_6_live_prices_endpoint_only_isolation" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L993", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L235", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_7_snapshot_endpoint_derived_portfolio_read_with_live_prices", - "target": "plans_2026_09_04_wallet_management_codeblock_27" + "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", + "target": "specs_2026_09_04_wallet_design_7_validation_422_naming_the_rule_503_for_price_outages" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1013", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L266", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_8_history_endpoint_paginated_lots_with_per_sell_realized_gain", - "target": "plans_2026_09_04_wallet_management_codeblock_28" + "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", + "target": "specs_2026_09_04_wallet_design_8_testing_quality_gates_precedents_to_honor" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1062", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L287", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_8_history_endpoint_paginated_lots_with_per_sell_realized_gain", - "target": "plans_2026_09_04_wallet_management_codeblock_29" + "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", + "target": "specs_2026_09_04_wallet_design_9_scope" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1095", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L302", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_8_history_endpoint_paginated_lots_with_per_sell_realized_gain", - "target": "plans_2026_09_04_wallet_management_codeblock_30" + "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", + "target": "specs_2026_09_04_wallet_design_10_splits_served_prices_are_raw_by_default_verified_verdict_encode_as_is" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1108", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L326", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_8_history_endpoint_paginated_lots_with_per_sell_realized_gain", - "target": "plans_2026_09_04_wallet_management_codeblock_31" + "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", + "target": "specs_2026_09_04_wallet_design_11_dividends_no_dedicated_endpoint_verified_verdict_encode_as_is" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1143", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L364", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_9_walletservice_wiring_quality_gate_full_suite_ruff_mypy_coverage", - "target": "plans_2026_09_04_wallet_management_codeblock_32" + "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", + "target": "specs_2026_09_04_wallet_design_12_corporate_actions_splits_and_grupamentos_via_one_read_time_mechanism" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1157", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L403", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_9_walletservice_wiring_quality_gate_full_suite_ruff_mypy_coverage", - "target": "plans_2026_09_04_wallet_management_codeblock_33" + "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", + "target": "specs_2026_09_04_wallet_design_13_dividend_methodology_ex_date_smoothing_check_both_branches_test_decides" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1165", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L422", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_9_walletservice_wiring_quality_gate_full_suite_ruff_mypy_coverage", - "target": "plans_2026_09_04_wallet_management_codeblock_34" + "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", + "target": "specs_2026_09_04_wallet_design_spec_self_review" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1192", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L53", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_9_walletservice_wiring_quality_gate_full_suite_ruff_mypy_coverage", - "target": "plans_2026_09_04_wallet_management_codeblock_35" + "source": "specs_2026_09_04_wallet_design_2_decision_design_a_pure_event_log_derive_at_read_time", + "target": "specs_2026_09_04_wallet_design_approaches_considered" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1217", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_9_walletservice_wiring_quality_gate_full_suite_ruff_mypy_coverage", - "target": "plans_2026_09_04_wallet_management_codeblock_36" + "source": "docs_superpowers_specs_2026_09_29_nginx_scaling_design_md", + "target": "specs_2026_09_29_nginx_scaling_design_nginx_response_cache_multi_server_scaling_design_spec" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1237", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L9", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_10_first_party_get_stocks_dividends_adjusted_docstring_fix", - "target": "plans_2026_09_04_wallet_management_codeblock_37" + "source": "specs_2026_09_29_nginx_scaling_design_nginx_response_cache_multi_server_scaling_design_spec", + "target": "specs_2026_09_29_nginx_scaling_design_1_context" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1276", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L40", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_10_first_party_get_stocks_dividends_adjusted_docstring_fix", - "target": "plans_2026_09_04_wallet_management_codeblock_38" + "source": "specs_2026_09_29_nginx_scaling_design_nginx_response_cache_multi_server_scaling_design_spec", + "target": "specs_2026_09_29_nginx_scaling_design_2_decisions" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1299", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L103", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_10_first_party_get_stocks_dividends_adjusted_docstring_fix", - "target": "plans_2026_09_04_wallet_management_codeblock_39" + "source": "specs_2026_09_29_nginx_scaling_design_nginx_response_cache_multi_server_scaling_design_spec", + "target": "specs_2026_09_29_nginx_scaling_design_3_caching_policy_canonical" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1318", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L130", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_10_first_party_get_stocks_dividends_adjusted_docstring_fix", - "target": "plans_2026_09_04_wallet_management_codeblock_40" + "source": "specs_2026_09_29_nginx_scaling_design_nginx_response_cache_multi_server_scaling_design_spec", + "target": "specs_2026_09_29_nginx_scaling_design_4_topology" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1341", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L148", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_11_wallet_receipt_ledger_wallet_dividends_table_receipt_suggestion_endpoints", - "target": "plans_2026_09_04_wallet_management_codeblock_41" + "source": "specs_2026_09_29_nginx_scaling_design_nginx_response_cache_multi_server_scaling_design_spec", + "target": "specs_2026_09_29_nginx_scaling_design_5_quota_and_rate_limits_after_caching" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1397", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L159", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_11_wallet_receipt_ledger_wallet_dividends_table_receipt_suggestion_endpoints", - "target": "plans_2026_09_04_wallet_management_codeblock_42" + "source": "specs_2026_09_29_nginx_scaling_design_nginx_response_cache_multi_server_scaling_design_spec", + "target": "specs_2026_09_29_nginx_scaling_design_6_non_goals" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1419", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L163", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_11_wallet_receipt_ledger_wallet_dividends_table_receipt_suggestion_endpoints", - "target": "plans_2026_09_04_wallet_management_codeblock_43" + "source": "specs_2026_09_29_nginx_scaling_design_nginx_response_cache_multi_server_scaling_design_spec", + "target": "specs_2026_09_29_nginx_scaling_design_7_acceptance_criteria" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1452", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L173", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_11_wallet_receipt_ledger_wallet_dividends_table_receipt_suggestion_endpoints", - "target": "plans_2026_09_04_wallet_management_codeblock_44" + "source": "specs_2026_09_29_nginx_scaling_design_nginx_response_cache_multi_server_scaling_design_spec", + "target": "specs_2026_09_29_nginx_scaling_design_8_open_decisions_product_owned" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1475", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L182", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_11_wallet_receipt_ledger_wallet_dividends_table_receipt_suggestion_endpoints", - "target": "plans_2026_09_04_wallet_management_codeblock_45" + "source": "specs_2026_09_29_nginx_scaling_design_nginx_response_cache_multi_server_scaling_design_spec", + "target": "specs_2026_09_29_nginx_scaling_design_9_risks_top_of_the_register_full_15_row_table_in_the_source_document_3_9" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1496", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L195", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_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": "specs_2026_09_29_nginx_scaling_design_nginx_response_cache_multi_server_scaling_design_spec", + "target": "specs_2026_09_29_nginx_scaling_design_10_plans_and_follow_ups" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1512", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L42", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_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": "specs_2026_09_29_nginx_scaling_design_2_decisions", + "target": "specs_2026_09_29_nginx_scaling_design_d1_put_an_nginx_response_cache_in_front_of_stocks_accepted" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1528", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L55", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_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": "specs_2026_09_29_nginx_scaling_design_2_decisions", + "target": "specs_2026_09_29_nginx_scaling_design_d2_raise_the_app_layer_ttls_and_cache_fields_before_any_nginx_work_accepted_rev_2" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1546", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L59", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_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": "specs_2026_09_29_nginx_scaling_design_2_decisions", + "target": "specs_2026_09_29_nginx_scaling_design_d3_pinned_static_upstreams_now_docker_swarm_routing_mesh_only_at_5_nodes_accepted" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1582", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L75", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_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": "specs_2026_09_29_nginx_scaling_design_2_decisions", + "target": "specs_2026_09_29_nginx_scaling_design_d4_cache_is_per_node_rebuilt_on_version_not_nfs_not_rsync_accepted" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1613", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L79", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_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": "specs_2026_09_29_nginx_scaling_design_2_decisions", + "target": "specs_2026_09_29_nginx_scaling_design_d5_redis_is_deferred_accepted_rev_2" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1635", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L83", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_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": "specs_2026_09_29_nginx_scaling_design_2_decisions", + "target": "specs_2026_09_29_nginx_scaling_design_d6_extraction_order_stocks_api_orunmila_forgevm_user_scraper_accepted" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1661", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L87", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_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": "specs_2026_09_29_nginx_scaling_design_2_decisions", + "target": "specs_2026_09_29_nginx_scaling_design_d7_health_strategy_stays_passive_until_a_black_hole_is_observed_accepted" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1686", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L91", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_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": "specs_2026_09_29_nginx_scaling_design_2_decisions", + "target": "specs_2026_09_29_nginx_scaling_design_d8_cached_hits_bypass_the_monthly_quota_counter_accepted_product_visible" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1727", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L95", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_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": "specs_2026_09_29_nginx_scaling_design_2_decisions", + "target": "specs_2026_09_29_nginx_scaling_design_d9_benchmark_result_artifacts_follow_the_draft_convention_accepted_rev_2" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-12-artifact-removal-cache-verdict.md", - "source_location": "L1", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L99", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_superpowers_plans_2026_09_12_artifact_removal_cache_verdict_md", - "target": "plans_2026_09_12_artifact_removal_cache_verdict_artifact_removal_matrix_cache_verdict_plan" + "source": "specs_2026_09_29_nginx_scaling_design_2_decisions", + "target": "specs_2026_09_29_nginx_scaling_design_d10_the_endpoint_cache_is_invalidated_on_every_feather_reload_accepted" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-12-artifact-removal-cache-verdict.md", - "source_location": "L3", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L135", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_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": "specs_2026_09_29_nginx_scaling_design_4_topology", + "target": "specs_2026_09_29_nginx_scaling_design_codeblock_1" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-12-artifact-removal-cache-verdict.md", - "source_location": "L25", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L151", "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": "tools_wallet_rationale_151", + "target": "tools_wallet_get_wallet_performance" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L1", + "source_file": "main/app/orunmila/tools/wallet.py", + "source_location": "L188", "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": "tools_wallet_rationale_188", + "target": "tools_wallet_get_wallet_rebalance" }, { - "relation": "contains", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_file": "main/app/wallet/wallet_service.py", "source_location": "L13", "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_app_wallet_wallet_service_py", + "target": "fastapi" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L24", + "source_file": "main/app/wallet/wallet_service.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_1_pgvector_migration_backfill" + "source": "main_app_wallet_wallet_service_py", + "target": "wallet_wallet_service_fetchxangoscores" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L79", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L48", "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_app_wallet_wallet_service_py", + "target": "wallet_wallet_service_scorebuyflag" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L139", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L32", "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_app_wallet_wallet_service_py", + "target": "wallet_wallet_service_createwallet" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L171", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L40", "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_app_wallet_wallet_service_py", + "target": "wallet_wallet_service_listwallets" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L185", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L44", "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_app_wallet_wallet_service_py", + "target": "wallet_wallet_service_entrycreate" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L35", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L55", "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_app_wallet_wallet_service_py", + "target": "wallet_wallet_service_entryupdate" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L65", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L62", "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_app_wallet_wallet_service_py", + "target": "wallet_wallet_service_getownedwallet" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L74", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L72", "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_app_wallet_wallet_service_py", + "target": "wallet_wallet_service_applyentries" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L97", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L88", "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_app_wallet_wallet_service_py", + "target": "wallet_wallet_service_recalcholding" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L134", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L112", "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_app_wallet_wallet_service_py", + "target": "wallet_wallet_service_addentry" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L148", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L138", "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_app_wallet_wallet_service_py", + "target": "wallet_wallet_service_listentries" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L166", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L150", "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_app_wallet_wallet_service_py", + "target": "wallet_wallet_service_updateentry" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L189", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L172", "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_app_wallet_wallet_service_py", + "target": "wallet_wallet_service_deleteentry" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L1", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L193", "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_app_wallet_wallet_service_py", + "target": "wallet_wallet_service_stocksapibase" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L13", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L197", "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_app_wallet_wallet_service_py", + "target": "wallet_wallet_service_stocksapiheaders" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L24", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L202", "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_app_wallet_wallet_service_py", + "target": "wallet_wallet_service_fetchliveprices" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L56", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L227", "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_app_wallet_wallet_service_py", + "target": "wallet_wallet_service_fetchcachedclose" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L76", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L247", "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_app_wallet_wallet_service_py", + "target": "wallet_wallet_service_getpositions" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L102", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L306", "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_app_wallet_wallet_service_py", + "target": "wallet_wallet_service_targetupsert" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L117", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L313", "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_app_wallet_wallet_service_py", + "target": "wallet_wallet_service_ratingupsert" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L132", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L319", "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": "main_app_wallet_wallet_service_py", + "target": "wallet_wallet_service_getsummary" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L143", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L370", "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": "main_app_wallet_wallet_service_py", + "target": "wallet_wallet_service_getallocation" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L154", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L396", "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": "main_app_wallet_wallet_service_py", + "target": "wallet_wallet_service_upserttarget" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L38", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L422", "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": "main_app_wallet_wallet_service_py", + "target": "wallet_wallet_service_set_rating" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L51", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L433", "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": "main_app_wallet_wallet_service_py", + "target": "wallet_wallet_service_positionatdate" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L72", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L440", "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": "main_app_wallet_wallet_service_py", + "target": "wallet_wallet_service_fetchmarketdividends" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L88", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L458", "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": "main_app_wallet_wallet_service_py", + "target": "wallet_wallet_service_syncearnings" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", - "source_location": "L1", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L525", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_superpowers_plans_2026_09_29_nginx_response_cache_md", - "target": "plans_2026_09_29_nginx_response_cache_nginx_response_cache_implementation_plan" + "source": "main_app_wallet_wallet_service_py", + "target": "wallet_wallet_service_listearnings" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", - "source_location": "L14", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L536", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_nginx_response_cache_nginx_response_cache_implementation_plan", - "target": "plans_2026_09_29_nginx_response_cache_global_constraints" + "source": "main_app_wallet_wallet_service_py", + "target": "wallet_wallet_service_fetchpadraocloses" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", - "source_location": "L25", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L559", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_nginx_response_cache_nginx_response_cache_implementation_plan", - "target": "plans_2026_09_29_nginx_response_cache_review_focus_spec_implied_inputs_most_likely_to_bite" + "source": "main_app_wallet_wallet_service_py", + "target": "wallet_wallet_service_cachedperformance" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", - "source_location": "L375", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L662", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_nginx_response_cache_nginx_response_cache_implementation_plan", - "target": "plans_2026_09_29_nginx_response_cache_execution_handoff" + "source": "main_app_wallet_wallet_service_py", + "target": "wallet_wallet_service_getperformance" }, { - "relation": "contains", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", - "source_location": "L36", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L7", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_nginx_response_cache_review_focus_spec_implied_inputs_most_likely_to_bite", - "target": "plans_2026_09_29_nginx_response_cache_task_1_nginx_compose_service_http_context_config_upstream_bypass_routing" + "source": "main_app_orunmila_tools_py", + "target": "fastapi" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", - "source_location": "L183", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L20", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_nginx_response_cache_review_focus_spec_implied_inputs_most_likely_to_bite", - "target": "plans_2026_09_29_nginx_response_cache_task_2_cached_locations_shared_proxy_snippet_mirrored_ttls" + "source": "main_app_orunmila_tools_py", + "target": "orunmila_tools_search_memory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", - "source_location": "L302", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L51", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_nginx_response_cache_review_focus_spec_implied_inputs_most_likely_to_bite", - "target": "plans_2026_09_29_nginx_response_cache_task_3_measure_the_gil_relief_and_record_it" + "source": "main_app_orunmila_tools_py", + "target": "orunmila_tools_save_memory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", - "source_location": "L51", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L93", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_nginx_response_cache_task_1_nginx_compose_service_http_context_config_upstream_bypass_routing", - "target": "plans_2026_09_29_nginx_response_cache_codeblock_1" + "source": "main_app_orunmila_tools_py", + "target": "orunmila_tools_execute_code" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", - "source_location": "L62", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L114", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_nginx_response_cache_task_1_nginx_compose_service_http_context_config_upstream_bypass_routing", - "target": "plans_2026_09_29_nginx_response_cache_codeblock_2" + "source": "main_app_orunmila_tools_py", + "target": "orunmila_tools_read_file" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", - "source_location": "L87", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L128", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_nginx_response_cache_task_1_nginx_compose_service_http_context_config_upstream_bypass_routing", - "target": "plans_2026_09_29_nginx_response_cache_codeblock_3" + "source": "main_app_orunmila_tools_py", + "target": "orunmila_tools_write_file" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", - "source_location": "L101", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L144", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_nginx_response_cache_task_1_nginx_compose_service_http_context_config_upstream_bypass_routing", - "target": "plans_2026_09_29_nginx_response_cache_codeblock_4" + "source": "main_app_orunmila_tools_py", + "target": "orunmila_tools_list_files" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", - "source_location": "L116", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L157", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_nginx_response_cache_task_1_nginx_compose_service_http_context_config_upstream_bypass_routing", - "target": "plans_2026_09_29_nginx_response_cache_codeblock_5" + "source": "main_app_orunmila_tools_py", + "target": "orunmila_tools_serve_file" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", - "source_location": "L131", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L184", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_nginx_response_cache_task_1_nginx_compose_service_http_context_config_upstream_bypass_routing", - "target": "plans_2026_09_29_nginx_response_cache_codeblock_6" + "source": "main_app_orunmila_tools_py", + "target": "orunmila_tools_get_wallet_positions" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", - "source_location": "L152", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L223", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_nginx_response_cache_task_1_nginx_compose_service_http_context_config_upstream_bypass_routing", - "target": "plans_2026_09_29_nginx_response_cache_codeblock_7" + "source": "main_app_orunmila_tools_py", + "target": "orunmila_tools_get_wallet_summary" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", - "source_location": "L164", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L262", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_nginx_response_cache_task_1_nginx_compose_service_http_context_config_upstream_bypass_routing", - "target": "plans_2026_09_29_nginx_response_cache_codeblock_8" + "source": "main_app_orunmila_tools_py", + "target": "orunmila_tools_get_wallet_allocation" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", - "source_location": "L176", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L303", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_nginx_response_cache_task_1_nginx_compose_service_http_context_config_upstream_bypass_routing", - "target": "plans_2026_09_29_nginx_response_cache_codeblock_9" + "source": "main_app_orunmila_tools_py", + "target": "orunmila_tools_list_wallet_earnings" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", - "source_location": "L195", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L361", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_nginx_response_cache_task_2_cached_locations_shared_proxy_snippet_mirrored_ttls", - "target": "plans_2026_09_29_nginx_response_cache_codeblock_10" + "source": "main_app_orunmila_tools_py", + "target": "orunmila_tools_get_wallet_performance" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", - "source_location": "L206", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L414", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_nginx_response_cache_task_2_cached_locations_shared_proxy_snippet_mirrored_ttls", - "target": "plans_2026_09_29_nginx_response_cache_codeblock_11" + "source": "main_app_orunmila_tools_py", + "target": "orunmila_tools_get_wallet_rebalance" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", - "source_location": "L246", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L190", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_nginx_response_cache_task_2_cached_locations_shared_proxy_snippet_mirrored_ttls", - "target": "plans_2026_09_29_nginx_response_cache_codeblock_12" + "source": "main_app_orunmila_tools_py", + "target": "orunmila_tools_dispatchtoolcall" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", - "source_location": "L282", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L183", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_nginx_response_cache_task_2_cached_locations_shared_proxy_snippet_mirrored_ttls", - "target": "plans_2026_09_29_nginx_response_cache_codeblock_13" + "source": "main_app_orunmila_tools_py", + "target": "orunmila_tools_narrate_positions" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", - "source_location": "L295", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L28", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_nginx_response_cache_task_2_cached_locations_shared_proxy_snippet_mirrored_ttls", - "target": "plans_2026_09_29_nginx_response_cache_codeblock_14" + "source": "orunmila_tools_rationale_28", + "target": "orunmila_tools_search_memory" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", - "source_location": "L314", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L23", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_nginx_response_cache_task_3_measure_the_gil_relief_and_record_it", - "target": "plans_2026_09_29_nginx_response_cache_codeblock_15" + "source": "orunmila_tools_rationale_23", + "target": "orunmila_tools_search_memory" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", - "source_location": "L321", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L22", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_nginx_response_cache_task_3_measure_the_gil_relief_and_record_it", - "target": "plans_2026_09_29_nginx_response_cache_codeblock_16" + "source": "orunmila_tools_rationale_22", + "target": "orunmila_tools_search_memory" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", - "source_location": "L333", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L21", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_nginx_response_cache_task_3_measure_the_gil_relief_and_record_it", - "target": "plans_2026_09_29_nginx_response_cache_codeblock_17" + "source": "orunmila_tools_rationale_21", + "target": "orunmila_tools_search_memory" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", - "source_location": "L346", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L59", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_nginx_response_cache_task_3_measure_the_gil_relief_and_record_it", - "target": "plans_2026_09_29_nginx_response_cache_codeblock_18" + "source": "orunmila_tools_rationale_59", + "target": "orunmila_tools_save_memory" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", - "source_location": "L367", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L54", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_nginx_response_cache_task_3_measure_the_gil_relief_and_record_it", - "target": "plans_2026_09_29_nginx_response_cache_codeblock_19" + "source": "orunmila_tools_rationale_54", + "target": "orunmila_tools_save_memory" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L53", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_tools_rationale_53", + "target": "orunmila_tools_save_memory" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L1", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L52", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_superpowers_plans_2026_09_29_stocks_cache_ttl_md", - "target": "plans_2026_09_29_stocks_cache_ttl_stocks_api_cache_ttl_fields_cache_implementation_plan" + "source": "orunmila_tools_rationale_52", + "target": "orunmila_tools_save_memory" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L13", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L101", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_stocks_cache_ttl_stocks_api_cache_ttl_fields_cache_implementation_plan", - "target": "plans_2026_09_29_stocks_cache_ttl_global_constraints" + "source": "orunmila_tools_rationale_101", + "target": "orunmila_tools_execute_code" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L25", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L96", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_stocks_cache_ttl_stocks_api_cache_ttl_fields_cache_implementation_plan", - "target": "plans_2026_09_29_stocks_cache_ttl_review_focus_spec_implied_inputs_most_likely_to_bite" + "source": "orunmila_tools_rationale_96", + "target": "orunmila_tools_execute_code" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L410", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L95", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_stocks_cache_ttl_stocks_api_cache_ttl_fields_cache_implementation_plan", - "target": "plans_2026_09_29_stocks_cache_ttl_execution_handoff" + "source": "orunmila_tools_rationale_95", + "target": "orunmila_tools_execute_code" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L36", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L94", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_stocks_cache_ttl_review_focus_spec_implied_inputs_most_likely_to_bite", - "target": "plans_2026_09_29_stocks_cache_ttl_task_1_ttl_constants_6h_on_the_three_data_routes_header_alignment" + "source": "orunmila_tools_rationale_94", + "target": "orunmila_tools_execute_code" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L136", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L122", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_stocks_cache_ttl_review_focus_spec_implied_inputs_most_likely_to_bite", - "target": "plans_2026_09_29_stocks_cache_ttl_task_2_cache_stocks_fields" + "source": "orunmila_tools_rationale_122", + "target": "orunmila_tools_read_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L254", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L117", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_stocks_cache_ttl_review_focus_spec_implied_inputs_most_likely_to_bite", - "target": "plans_2026_09_29_stocks_cache_ttl_task_3_invalidate_the_endpoint_cache_on_feather_reload" + "source": "orunmila_tools_rationale_117", + "target": "orunmila_tools_read_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L340", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L116", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_stocks_cache_ttl_review_focus_spec_implied_inputs_most_likely_to_bite", - "target": "plans_2026_09_29_stocks_cache_ttl_task_4_measure_the_6h_window_rss_and_record_the_verdict" + "source": "orunmila_tools_rationale_116", + "target": "orunmila_tools_read_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L50", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L115", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_stocks_cache_ttl_task_1_ttl_constants_6h_on_the_three_data_routes_header_alignment", - "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_1" + "source": "orunmila_tools_rationale_115", + "target": "orunmila_tools_read_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L91", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L136", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_stocks_cache_ttl_task_1_ttl_constants_6h_on_the_three_data_routes_header_alignment", - "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_2" + "source": "orunmila_tools_rationale_136", + "target": "orunmila_tools_write_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L103", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L131", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_stocks_cache_ttl_task_1_ttl_constants_6h_on_the_three_data_routes_header_alignment", - "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_3" + "source": "orunmila_tools_rationale_131", + "target": "orunmila_tools_write_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L112", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L130", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_stocks_cache_ttl_task_1_ttl_constants_6h_on_the_three_data_routes_header_alignment", - "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_4" + "source": "orunmila_tools_rationale_130", + "target": "orunmila_tools_write_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_file": "main/app/orunmila/tools.py", "source_location": "L129", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_stocks_cache_ttl_task_1_ttl_constants_6h_on_the_three_data_routes_header_alignment", - "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_5" + "source": "orunmila_tools_rationale_129", + "target": "orunmila_tools_write_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_file": "main/app/orunmila/tools.py", "source_location": "L152", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_stocks_cache_ttl_task_2_cache_stocks_fields", - "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_6" + "source": "orunmila_tools_rationale_152", + "target": "orunmila_tools_list_files" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L165", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L147", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_stocks_cache_ttl_task_2_cache_stocks_fields", - "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_7" + "source": "orunmila_tools_rationale_147", + "target": "orunmila_tools_list_files" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L220", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L146", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_stocks_cache_ttl_task_2_cache_stocks_fields", - "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_8" + "source": "orunmila_tools_rationale_146", + "target": "orunmila_tools_list_files" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L228", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L145", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_stocks_cache_ttl_task_2_cache_stocks_fields", - "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_9" + "source": "orunmila_tools_rationale_145", + "target": "orunmila_tools_list_files" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L247", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L165", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_stocks_cache_ttl_task_2_cache_stocks_fields", - "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_10" + "source": "orunmila_tools_rationale_165", + "target": "orunmila_tools_serve_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L269", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L160", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_stocks_cache_ttl_task_3_invalidate_the_endpoint_cache_on_feather_reload", - "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_11" + "source": "orunmila_tools_rationale_160", + "target": "orunmila_tools_serve_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L301", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L159", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_stocks_cache_ttl_task_3_invalidate_the_endpoint_cache_on_feather_reload", - "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_12" + "source": "orunmila_tools_rationale_159", + "target": "orunmila_tools_serve_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L311", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L158", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_stocks_cache_ttl_task_3_invalidate_the_endpoint_cache_on_feather_reload", - "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_13" + "source": "orunmila_tools_rationale_158", + "target": "orunmila_tools_serve_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L333", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L190", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_stocks_cache_ttl_task_3_invalidate_the_endpoint_cache_on_feather_reload", - "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_14" + "source": "orunmila_tools_rationale_190", + "target": "orunmila_tools_get_wallet_positions" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L352", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L185", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_stocks_cache_ttl_task_4_measure_the_6h_window_rss_and_record_the_verdict", - "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_15" + "source": "orunmila_tools_rationale_185", + "target": "orunmila_tools_get_wallet_positions" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L363", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L226", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_stocks_cache_ttl_task_4_measure_the_6h_window_rss_and_record_the_verdict", - "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_16" + "source": "orunmila_tools_rationale_226", + "target": "orunmila_tools_get_wallet_summary" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L376", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L224", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_stocks_cache_ttl_task_4_measure_the_6h_window_rss_and_record_the_verdict", - "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_17" + "source": "orunmila_tools_rationale_224", + "target": "orunmila_tools_get_wallet_summary" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L384", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L262", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_stocks_cache_ttl_task_4_measure_the_6h_window_rss_and_record_the_verdict", - "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_18" + "source": "orunmila_tools_rationale_262", + "target": "orunmila_tools_get_wallet_allocation" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L402", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L263", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_stocks_cache_ttl_task_4_measure_the_6h_window_rss_and_record_the_verdict", - "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_19" + "source": "orunmila_tools_rationale_263", + "target": "orunmila_tools_get_wallet_allocation" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", - "source_location": "L1", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L300", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_superpowers_plans_2026_09_29_uvicorn_worker_scaling_md", - "target": "plans_2026_09_29_uvicorn_worker_scaling_uvicorn_fastapi_worker_scaling_implementation_plan" + "source": "orunmila_tools_rationale_300", + "target": "orunmila_tools_list_wallet_earnings" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", - "source_location": "L13", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L304", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_uvicorn_worker_scaling_uvicorn_fastapi_worker_scaling_implementation_plan", - "target": "plans_2026_09_29_uvicorn_worker_scaling_global_constraints" + "source": "orunmila_tools_rationale_304", + "target": "orunmila_tools_list_wallet_earnings" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", - "source_location": "L23", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L357", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_uvicorn_worker_scaling_uvicorn_fastapi_worker_scaling_implementation_plan", - "target": "plans_2026_09_29_uvicorn_worker_scaling_review_focus" + "source": "orunmila_tools_rationale_357", + "target": "orunmila_tools_get_wallet_performance" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", - "source_location": "L725", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L364", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_uvicorn_worker_scaling_uvicorn_fastapi_worker_scaling_implementation_plan", - "target": "plans_2026_09_29_uvicorn_worker_scaling_self_review" + "source": "orunmila_tools_rationale_364", + "target": "orunmila_tools_get_wallet_performance" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", - "source_location": "L35", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L405", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_uvicorn_worker_scaling_review_focus", - "target": "plans_2026_09_29_uvicorn_worker_scaling_task_1_measure_the_concurrency_ceiling_and_record_the_decision" + "source": "orunmila_tools_rationale_405", + "target": "orunmila_tools_get_wallet_rebalance" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", - "source_location": "L170", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L415", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_uvicorn_worker_scaling_review_focus", - "target": "plans_2026_09_29_uvicorn_worker_scaling_task_2_load_the_cache_on_the_build_loser_path" + "source": "orunmila_tools_rationale_415", + "target": "orunmila_tools_get_wallet_rebalance" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", - "source_location": "L292", + "source_file": "main/app/wallet/market_data.py", + "source_location": "L53", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_uvicorn_worker_scaling_review_focus", - "target": "plans_2026_09_29_uvicorn_worker_scaling_task_3_run_migrations_exactly_once_per_deploy" + "source": "wallet_market_data_fetchcachedclose", + "target": "wallet_market_data_stocksapibase" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", - "source_location": "L365", + "source_file": "main/app/wallet/market_data.py", + "source_location": "L55", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_uvicorn_worker_scaling_review_focus", - "target": "plans_2026_09_29_uvicorn_worker_scaling_task_4_size_database_pools_by_process_count" + "source": "wallet_market_data_fetchcachedclose", + "target": "wallet_market_data_stocksapiheaders" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", - "source_location": "L431", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L184", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_uvicorn_worker_scaling_review_focus", - "target": "plans_2026_09_29_uvicorn_worker_scaling_task_5_run_stocks_api_as_n_single_service_processes_behind_nginx" + "source": "orunmila_tools_rationale_184", + "target": "orunmila_tools_narrate_positions" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", - "source_location": "L654", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools.py", + "source_location": "L205", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_29_uvicorn_worker_scaling_review_focus", - "target": "plans_2026_09_29_uvicorn_worker_scaling_task_6_verify_the_fleet_single_build_one_migration_shared_frame" + "source": "orunmila_tools_narrate_positions", + "target": "wallet_wallets_getownedwallet" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", - "source_location": "L47", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools.py", + "source_location": "L205", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_29_uvicorn_worker_scaling_task_1_measure_the_concurrency_ceiling_and_record_the_decision", - "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_1" + "source": "orunmila_tools_narrate_positions", + "target": "wallet_wallet_service_getownedwallet" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", - "source_location": "L145", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools.py", + "source_location": "L212", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_29_uvicorn_worker_scaling_task_1_measure_the_concurrency_ceiling_and_record_the_decision", - "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_2" + "source": "orunmila_tools_narrate_positions", + "target": "wallet_wallet_service_getpositions" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", - "source_location": "L158", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools.py", + "source_location": "L217", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_29_uvicorn_worker_scaling_task_1_measure_the_concurrency_ceiling_and_record_the_decision", - "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_3" + "source": "orunmila_tools_narrate_positions", + "target": "wallet_wallet_service_getsummary" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", - "source_location": "L182", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools.py", + "source_location": "L224", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_29_uvicorn_worker_scaling_task_2_load_the_cache_on_the_build_loser_path", - "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_4" + "source": "orunmila_tools_narrate_positions", + "target": "wallet_wallet_service_listearnings" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", - "source_location": "L228", + "source_file": "main/app/wallet/positions.py", + "source_location": "L59", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_uvicorn_worker_scaling_task_2_load_the_cache_on_the_build_loser_path", - "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_5" + "source": "wallet_positions_rationale_59", + "target": "wallet_positions_scorebuyflag" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", - "source_location": "L244", + "source_file": "main/app/wallet/positions.py", + "source_location": "L36", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_uvicorn_worker_scaling_task_2_load_the_cache_on_the_build_loser_path", - "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_6" + "source": "wallet_positions_rationale_36", + "target": "wallet_positions_scorebuyflag" }, { - "relation": "contains", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", - "source_location": "L285", + "source_file": "main/app/wallet/auth.py", + "source_location": "L3", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_uvicorn_worker_scaling_task_2_load_the_cache_on_the_build_loser_path", - "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_7" + "source": "main_app_wallet_auth_py", + "target": "fastapi" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", - "source_location": "L304", + "source_file": "main/app/wallet/auth.py", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_uvicorn_worker_scaling_task_3_run_migrations_exactly_once_per_deploy", - "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_8" + "source": "main_app_wallet_auth_py", + "target": "wallet_auth_resolverawtoken" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", - "source_location": "L333", + "source_file": "main/app/wallet/auth.py", + "source_location": "L26", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_uvicorn_worker_scaling_task_3_run_migrations_exactly_once_per_deploy", - "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_9" + "source": "main_app_wallet_auth_py", + "target": "wallet_auth_getwalletidentity" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", - "source_location": "L358", + "source_file": "main/app/wallet/auth.py", + "source_location": "L30", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_uvicorn_worker_scaling_task_3_run_migrations_exactly_once_per_deploy", - "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_10" + "source": "main_app_wallet_auth_py", + "target": "wallet_auth_requirewalletuser" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", - "source_location": "L377", + "source_file": "main/app/wallet/auth.py", + "source_location": "L36", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_uvicorn_worker_scaling_task_4_size_database_pools_by_process_count", - "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_11" + "source": "main_app_wallet_auth_py", + "target": "wallet_auth_requirewalletownership" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", - "source_location": "L407", + "source_file": "main/app/wallet/auth.py", + "source_location": "L27", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_uvicorn_worker_scaling_task_4_size_database_pools_by_process_count", - "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_12" + "source": "wallet_auth_getwalletidentity", + "target": "wallet_auth_resolverawtoken" }, { - "relation": "contains", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/wallets.py", + "source_location": "L17", + "weight": 1.0, + "source": "wallet_wallets_getownedwallet", + "target": "wallet_auth_requirewalletownership" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L68", + "weight": 1.0, + "source": "wallet_wallet_service_getownedwallet", + "target": "wallet_auth_requirewalletownership" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/service/wallet_service.py", + "source_location": "L50", + "weight": 1.0, + "source": "service_wallet_service_get_owned_wallet", + "target": "wallet_auth_requirewalletownership" + }, + { + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", - "source_location": "L424", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L331", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_uvicorn_worker_scaling_task_4_size_database_pools_by_process_count", - "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_13" + "source": "wallet_wallet_service_getpositions", + "target": "wallet_wallet_service_fetchxangoscores" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", - "source_location": "L444", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L37", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_uvicorn_worker_scaling_task_5_run_stocks_api_as_n_single_service_processes_behind_nginx", - "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_14" + "source": "wallet_wallet_service_rationale_37", + "target": "wallet_wallet_service_fetchxangoscores" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", - "source_location": "L476", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L354", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_uvicorn_worker_scaling_task_5_run_stocks_api_as_n_single_service_processes_behind_nginx", - "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_15" + "source": "wallet_wallet_service_getpositions", + "target": "wallet_wallet_service_scorebuyflag" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", - "source_location": "L483", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L55", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_uvicorn_worker_scaling_task_5_run_stocks_api_as_n_single_service_processes_behind_nginx", - "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_16" + "source": "wallet_wallet_service_rationale_55", + "target": "wallet_wallet_service_scorebuyflag" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", - "source_location": "L494", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L113", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_uvicorn_worker_scaling_task_5_run_stocks_api_as_n_single_service_processes_behind_nginx", - "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_17" + "source": "wallet_wallet_service_addentry", + "target": "wallet_wallet_service_getownedwallet" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", - "source_location": "L618", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L141", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_uvicorn_worker_scaling_task_5_run_stocks_api_as_n_single_service_processes_behind_nginx", - "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_18" + "source": "wallet_wallet_service_listentries", + "target": "wallet_wallet_service_getownedwallet" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", - "source_location": "L647", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L154", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_uvicorn_worker_scaling_task_5_run_stocks_api_as_n_single_service_processes_behind_nginx", - "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_19" + "source": "wallet_wallet_service_updateentry", + "target": "wallet_wallet_service_getownedwallet" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", - "source_location": "L666", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L176", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_uvicorn_worker_scaling_task_6_verify_the_fleet_single_build_one_migration_shared_frame", - "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_20" + "source": "wallet_wallet_service_deleteentry", + "target": "wallet_wallet_service_getownedwallet" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", - "source_location": "L718", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L248", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_uvicorn_worker_scaling_task_6_verify_the_fleet_single_build_one_migration_shared_frame", - "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_21" + "source": "wallet_wallet_service_getpositions", + "target": "wallet_wallet_service_getownedwallet" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", - "source_location": "L1", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L320", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_superpowers_plans_2026_09_29_zerocopy_stocks_cache_md", - "target": "plans_2026_09_29_zerocopy_stocks_cache_zero_copy_memory_mapped_stocks_cache_implementation_plan" + "source": "wallet_wallet_service_getsummary", + "target": "wallet_wallet_service_getownedwallet" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", - "source_location": "L13", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L371", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_zerocopy_stocks_cache_zero_copy_memory_mapped_stocks_cache_implementation_plan", - "target": "plans_2026_09_29_zerocopy_stocks_cache_global_constraints" + "source": "wallet_wallet_service_getallocation", + "target": "wallet_wallet_service_getownedwallet" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", - "source_location": "L23", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L397", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_zerocopy_stocks_cache_zero_copy_memory_mapped_stocks_cache_implementation_plan", - "target": "plans_2026_09_29_zerocopy_stocks_cache_review_focus_spec_implied_inputs_most_likely_to_bite" + "source": "wallet_wallet_service_upserttarget", + "target": "wallet_wallet_service_getownedwallet" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", - "source_location": "L353", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L423", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_zerocopy_stocks_cache_zero_copy_memory_mapped_stocks_cache_implementation_plan", - "target": "plans_2026_09_29_zerocopy_stocks_cache_execution_handoff" + "source": "wallet_wallet_service_set_rating", + "target": "wallet_wallet_service_getownedwallet" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", - "source_location": "L33", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L459", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_zerocopy_stocks_cache_review_focus_spec_implied_inputs_most_likely_to_bite", - "target": "plans_2026_09_29_zerocopy_stocks_cache_task_1_presort_at_build_time_order_by_b3_presorted_marker" + "source": "wallet_wallet_service_syncearnings", + "target": "wallet_wallet_service_getownedwallet" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", - "source_location": "L125", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L526", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_zerocopy_stocks_cache_review_focus_spec_implied_inputs_most_likely_to_bite", - "target": "plans_2026_09_29_zerocopy_stocks_cache_task_2_zero_copy_mmap_load_readfeatherdataframe_marker_aware_sort_skip" + "source": "wallet_wallet_service_listearnings", + "target": "wallet_wallet_service_getownedwallet" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", - "source_location": "L292", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L665", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_zerocopy_stocks_cache_review_focus_spec_implied_inputs_most_likely_to_bite", - "target": "plans_2026_09_29_zerocopy_stocks_cache_task_3_arrowdtype_aware_json_column_decompression_query_py_guard" + "source": "wallet_wallet_service_getperformance", + "target": "wallet_wallet_service_getownedwallet" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", - "source_location": "L47", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L100", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_zerocopy_stocks_cache_task_1_presort_at_build_time_order_by_b3_presorted_marker", - "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_1" + "source": "wallet_wallet_service_recalcholding", + "target": "wallet_wallet_service_applyentries" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", - "source_location": "L93", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L436", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_zerocopy_stocks_cache_task_1_presort_at_build_time_order_by_b3_presorted_marker", - "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_2" + "source": "wallet_wallet_service_positionatdate", + "target": "wallet_wallet_service_applyentries" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", - "source_location": "L101", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L592", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_zerocopy_stocks_cache_task_1_presort_at_build_time_order_by_b3_presorted_marker", - "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_3" + "source": "wallet_wallet_service_cachedperformance", + "target": "wallet_wallet_service_applyentries" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", - "source_location": "L107", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L130", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_zerocopy_stocks_cache_task_1_presort_at_build_time_order_by_b3_presorted_marker", - "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_4" + "source": "wallet_wallet_service_addentry", + "target": "wallet_wallet_service_recalcholding" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", - "source_location": "L118", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L161", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_zerocopy_stocks_cache_task_1_presort_at_build_time_order_by_b3_presorted_marker", - "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_5" + "source": "wallet_wallet_service_updateentry", + "target": "wallet_wallet_service_recalcholding" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", - "source_location": "L142", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L182", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_zerocopy_stocks_cache_task_2_zero_copy_mmap_load_readfeatherdataframe_marker_aware_sort_skip", - "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_6" + "source": "wallet_wallet_service_deleteentry", + "target": "wallet_wallet_service_recalcholding" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", - "source_location": "L148", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L230", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_zerocopy_stocks_cache_task_2_zero_copy_mmap_load_readfeatherdataframe_marker_aware_sort_skip", - "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_7" + "source": "wallet_wallet_service_fetchcachedclose", + "target": "wallet_wallet_service_stocksapibase" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", - "source_location": "L152", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L443", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_zerocopy_stocks_cache_task_2_zero_copy_mmap_load_readfeatherdataframe_marker_aware_sort_skip", - "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_8" + "source": "wallet_wallet_service_fetchmarketdividends", + "target": "wallet_wallet_service_stocksapibase" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", - "source_location": "L159", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L539", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_zerocopy_stocks_cache_task_2_zero_copy_mmap_load_readfeatherdataframe_marker_aware_sort_skip", - "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_9" + "source": "wallet_wallet_service_fetchpadraocloses", + "target": "wallet_wallet_service_stocksapibase" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", - "source_location": "L165", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L232", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_zerocopy_stocks_cache_task_2_zero_copy_mmap_load_readfeatherdataframe_marker_aware_sort_skip", - "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_10" + "source": "wallet_wallet_service_fetchcachedclose", + "target": "wallet_wallet_service_stocksapiheaders" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", - "source_location": "L250", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L445", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_zerocopy_stocks_cache_task_2_zero_copy_mmap_load_readfeatherdataframe_marker_aware_sort_skip", - "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_11" + "source": "wallet_wallet_service_fetchmarketdividends", + "target": "wallet_wallet_service_stocksapiheaders" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", - "source_location": "L256", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L541", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_zerocopy_stocks_cache_task_2_zero_copy_mmap_load_readfeatherdataframe_marker_aware_sort_skip", - "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_12" + "source": "wallet_wallet_service_fetchpadraocloses", + "target": "wallet_wallet_service_stocksapiheaders" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", - "source_location": "L268", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L251", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_zerocopy_stocks_cache_task_2_zero_copy_mmap_load_readfeatherdataframe_marker_aware_sort_skip", - "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_13" + "source": "wallet_wallet_service_getpositions", + "target": "wallet_wallet_service_fetchliveprices" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", - "source_location": "L285", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L324", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_zerocopy_stocks_cache_task_2_zero_copy_mmap_load_readfeatherdataframe_marker_aware_sort_skip", - "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_14" + "source": "wallet_wallet_service_getsummary", + "target": "wallet_wallet_service_fetchliveprices" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", - "source_location": "L306", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L374", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_zerocopy_stocks_cache_task_3_arrowdtype_aware_json_column_decompression_query_py_guard", - "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_15" + "source": "wallet_wallet_service_getallocation", + "target": "wallet_wallet_service_fetchliveprices" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", - "source_location": "L327", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L254", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_zerocopy_stocks_cache_task_3_arrowdtype_aware_json_column_decompression_query_py_guard", - "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_16" + "source": "wallet_wallet_service_getpositions", + "target": "wallet_wallet_service_fetchcachedclose" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", - "source_location": "L331", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L327", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_zerocopy_stocks_cache_task_3_arrowdtype_aware_json_column_decompression_query_py_guard", - "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_17" + "source": "wallet_wallet_service_getsummary", + "target": "wallet_wallet_service_fetchcachedclose" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", - "source_location": "L346", + "source_file": "main/app/wallet/wallet_service.py", + "source_location": "L377", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_29_zerocopy_stocks_cache_task_3_arrowdtype_aware_json_column_decompression_query_py_guard", - "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_18" + "source": "wallet_wallet_service_getallocation", + "target": "wallet_wallet_service_fetchcachedclose" }, { - "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/app/wallet/wallet_service.py", + "source_location": "L487", "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": "wallet_wallet_service_syncearnings", + "target": "wallet_wallet_service_positionatdate" }, { - "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/app/wallet/wallet_service.py", + "source_location": "L474", "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": "wallet_wallet_service_syncearnings", + "target": "wallet_wallet_service_fetchmarketdividends" }, { - "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/app/wallet/wallet_service.py", + "source_location": "L581", "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": "wallet_wallet_service_cachedperformance", + "target": "wallet_wallet_service_fetchpadraocloses" }, { - "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/app/wallet/wallet_service.py", + "source_location": "L692", "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": "wallet_wallet_service_getperformance", + "target": "wallet_wallet_service_cachedperformance" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L131", + "source_file": "main/service/wallet_service.py", + "source_location": "L95", "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": "service_wallet_service_add_entry", + "target": "service_wallet_service_get_owned_wallet" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L175", + "source_file": "main/service/wallet_service.py", + "source_location": "L123", "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": "service_wallet_service_list_entries", + "target": "service_wallet_service_get_owned_wallet" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L203", + "source_file": "main/service/wallet_service.py", + "source_location": "L136", "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": "service_wallet_service_update_entry", + "target": "service_wallet_service_get_owned_wallet" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L235", + "source_file": "main/service/wallet_service.py", + "source_location": "L158", "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": "service_wallet_service_delete_entry", + "target": "service_wallet_service_get_owned_wallet" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L266", + "source_file": "main/service/wallet_service.py", + "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_8_testing_quality_gates_precedents_to_honor" + "source": "service_wallet_service_get_positions", + "target": "service_wallet_service_get_owned_wallet" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L287", + "source_file": "main/service/wallet_service.py", + "source_location": "L307", "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": "service_wallet_service_get_summary", + "target": "service_wallet_service_get_owned_wallet" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L302", + "source_file": "main/service/wallet_service.py", + "source_location": "L358", "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": "service_wallet_service_get_allocation", + "target": "service_wallet_service_get_owned_wallet" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L326", + "source_file": "main/service/wallet_service.py", + "source_location": "L384", "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": "service_wallet_service_upsert_target", + "target": "service_wallet_service_get_owned_wallet" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L364", + "source_file": "main/service/wallet_service.py", + "source_location": "L410", "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": "service_wallet_service_set_rating", + "target": "service_wallet_service_get_owned_wallet" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L403", + "source_file": "main/service/wallet_service.py", + "source_location": "L455", "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": "service_wallet_service_sync_earnings", + "target": "service_wallet_service_get_owned_wallet" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L422", + "source_file": "main/service/wallet_service.py", + "source_location": "L522", "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": "service_wallet_service_list_earnings", + "target": "service_wallet_service_get_owned_wallet" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L53", + "source_file": "main/service/wallet_service.py", + "source_location": "L665", "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_wallet_service_get_performance", + "target": "service_wallet_service_get_owned_wallet" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", - "source_location": "L1", + "source_file": "main/service/wallet_service.py", + "source_location": "L82", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_superpowers_specs_2026_09_29_nginx_scaling_design_md", - "target": "specs_2026_09_29_nginx_scaling_design_nginx_response_cache_multi_server_scaling_design_spec" + "source": "service_wallet_service_recalc_holding", + "target": "service_wallet_service_apply_entries" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", - "source_location": "L9", + "source_file": "main/service/wallet_service.py", + "source_location": "L432", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_29_nginx_scaling_design_nginx_response_cache_multi_server_scaling_design_spec", - "target": "specs_2026_09_29_nginx_scaling_design_1_context" + "source": "service_wallet_service_position_at_date", + "target": "service_wallet_service_apply_entries" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", - "source_location": "L40", + "source_file": "main/service/wallet_service.py", + "source_location": "L592", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_29_nginx_scaling_design_nginx_response_cache_multi_server_scaling_design_spec", - "target": "specs_2026_09_29_nginx_scaling_design_2_decisions" + "source": "service_wallet_service_cachedperformance", + "target": "service_wallet_service_apply_entries" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", - "source_location": "L103", + "source_file": "main/service/wallet_service.py", + "source_location": "L112", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_29_nginx_scaling_design_nginx_response_cache_multi_server_scaling_design_spec", - "target": "specs_2026_09_29_nginx_scaling_design_3_caching_policy_canonical" + "source": "service_wallet_service_add_entry", + "target": "service_wallet_service_recalc_holding" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", - "source_location": "L130", + "source_file": "main/service/wallet_service.py", + "source_location": "L143", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_29_nginx_scaling_design_nginx_response_cache_multi_server_scaling_design_spec", - "target": "specs_2026_09_29_nginx_scaling_design_4_topology" + "source": "service_wallet_service_update_entry", + "target": "service_wallet_service_recalc_holding" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", - "source_location": "L148", + "source_file": "main/service/wallet_service.py", + "source_location": "L164", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_29_nginx_scaling_design_nginx_response_cache_multi_server_scaling_design_spec", - "target": "specs_2026_09_29_nginx_scaling_design_5_quota_and_rate_limits_after_caching" + "source": "service_wallet_service_delete_entry", + "target": "service_wallet_service_recalc_holding" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", - "source_location": "L159", + "source_file": "main/service/wallet_service.py", + "source_location": "L217", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_29_nginx_scaling_design_nginx_response_cache_multi_server_scaling_design_spec", - "target": "specs_2026_09_29_nginx_scaling_design_6_non_goals" + "source": "service_wallet_service_fetchcachedclose", + "target": "service_wallet_service_stocksapibase" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", - "source_location": "L163", + "source_file": "main/service/wallet_service.py", + "source_location": "L439", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_29_nginx_scaling_design_nginx_response_cache_multi_server_scaling_design_spec", - "target": "specs_2026_09_29_nginx_scaling_design_7_acceptance_criteria" + "source": "service_wallet_service_fetchmarketdividends", + "target": "service_wallet_service_stocksapibase" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", - "source_location": "L173", + "source_file": "main/service/wallet_service.py", + "source_location": "L539", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_29_nginx_scaling_design_nginx_response_cache_multi_server_scaling_design_spec", - "target": "specs_2026_09_29_nginx_scaling_design_8_open_decisions_product_owned" + "source": "service_wallet_service_fetchpadraocloses", + "target": "service_wallet_service_stocksapibase" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", - "source_location": "L182", + "source_file": "main/service/wallet_service.py", + "source_location": "L219", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_29_nginx_scaling_design_nginx_response_cache_multi_server_scaling_design_spec", - "target": "specs_2026_09_29_nginx_scaling_design_9_risks_top_of_the_register_full_15_row_table_in_the_source_document_3_9" + "source": "service_wallet_service_fetchcachedclose", + "target": "service_wallet_service_stocksapiheaders" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", - "source_location": "L195", + "source_file": "main/service/wallet_service.py", + "source_location": "L441", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_29_nginx_scaling_design_nginx_response_cache_multi_server_scaling_design_spec", - "target": "specs_2026_09_29_nginx_scaling_design_10_plans_and_follow_ups" + "source": "service_wallet_service_fetchmarketdividends", + "target": "service_wallet_service_stocksapiheaders" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", - "source_location": "L42", + "source_file": "main/service/wallet_service.py", + "source_location": "L541", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_29_nginx_scaling_design_2_decisions", - "target": "specs_2026_09_29_nginx_scaling_design_d1_put_an_nginx_response_cache_in_front_of_stocks_accepted" + "source": "service_wallet_service_fetchpadraocloses", + "target": "service_wallet_service_stocksapiheaders" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", - "source_location": "L55", + "source_file": "main/service/wallet_service.py", + "source_location": "L238", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_29_nginx_scaling_design_2_decisions", - "target": "specs_2026_09_29_nginx_scaling_design_d2_raise_the_app_layer_ttls_and_cache_fields_before_any_nginx_work_accepted_rev_2" + "source": "service_wallet_service_get_positions", + "target": "service_wallet_service_fetchliveprices" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", - "source_location": "L59", + "source_file": "main/service/wallet_service.py", + "source_location": "L311", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_29_nginx_scaling_design_2_decisions", - "target": "specs_2026_09_29_nginx_scaling_design_d3_pinned_static_upstreams_now_docker_swarm_routing_mesh_only_at_5_nodes_accepted" + "source": "service_wallet_service_get_summary", + "target": "service_wallet_service_fetchliveprices" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", - "source_location": "L75", + "source_file": "main/service/wallet_service.py", + "source_location": "L361", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_29_nginx_scaling_design_2_decisions", - "target": "specs_2026_09_29_nginx_scaling_design_d4_cache_is_per_node_rebuilt_on_version_not_nfs_not_rsync_accepted" + "source": "service_wallet_service_get_allocation", + "target": "service_wallet_service_fetchliveprices" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", - "source_location": "L79", + "source_file": "main/service/wallet_service.py", + "source_location": "L241", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_29_nginx_scaling_design_2_decisions", - "target": "specs_2026_09_29_nginx_scaling_design_d5_redis_is_deferred_accepted_rev_2" + "source": "service_wallet_service_get_positions", + "target": "service_wallet_service_fetchcachedclose" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", - "source_location": "L83", + "source_file": "main/service/wallet_service.py", + "source_location": "L314", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_29_nginx_scaling_design_2_decisions", - "target": "specs_2026_09_29_nginx_scaling_design_d6_extraction_order_stocks_api_orunmila_forgevm_user_scraper_accepted" + "source": "service_wallet_service_get_summary", + "target": "service_wallet_service_fetchcachedclose" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", - "source_location": "L87", + "source_file": "main/service/wallet_service.py", + "source_location": "L364", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_29_nginx_scaling_design_2_decisions", - "target": "specs_2026_09_29_nginx_scaling_design_d7_health_strategy_stays_passive_until_a_black_hole_is_observed_accepted" + "source": "service_wallet_service_get_allocation", + "target": "service_wallet_service_fetchcachedclose" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", - "source_location": "L91", + "source_file": "main/service/wallet_service.py", + "source_location": "L483", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_29_nginx_scaling_design_2_decisions", - "target": "specs_2026_09_29_nginx_scaling_design_d8_cached_hits_bypass_the_monthly_quota_counter_accepted_product_visible" + "source": "service_wallet_service_sync_earnings", + "target": "service_wallet_service_position_at_date" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", - "source_location": "L95", + "source_file": "main/service/wallet_service.py", + "source_location": "L470", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_29_nginx_scaling_design_2_decisions", - "target": "specs_2026_09_29_nginx_scaling_design_d9_benchmark_result_artifacts_follow_the_draft_convention_accepted_rev_2" + "source": "service_wallet_service_sync_earnings", + "target": "service_wallet_service_fetchmarketdividends" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", - "source_location": "L99", + "source_file": "main/service/wallet_service.py", + "source_location": "L581", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_29_nginx_scaling_design_2_decisions", - "target": "specs_2026_09_29_nginx_scaling_design_d10_the_endpoint_cache_is_invalidated_on_every_feather_reload_accepted" + "source": "service_wallet_service_cachedperformance", + "target": "service_wallet_service_fetchpadraocloses" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", - "source_location": "L135", + "source_file": "main/service/wallet_service.py", + "source_location": "L692", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_29_nginx_scaling_design_4_topology", - "target": "specs_2026_09_29_nginx_scaling_design_codeblock_1" + "source": "service_wallet_service_get_performance", + "target": "service_wallet_service_cachedperformance" }, { "relation": "rationale_for", @@ -150930,5 +161259,5 @@ "label": "User Authentication & Authorization" } ], - "built_at_commit": "9cfa467f5e182a4a67ff4017297a51199f520f60" + "built_at_commit": "45768447bc5c0e3ab9d73f95ac48e070c1282704" } \ No newline at end of file diff --git a/graphify-out/manifest.json b/graphify-out/manifest.json index 371c8037..fbe2a94f 100644 --- a/graphify-out/manifest.json +++ b/graphify-out/manifest.json @@ -15,8 +15,8 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\run.py": { - "mtime": 1789626195.3671405, - "ast_hash": "92577acca4f2a3bbf0ca57a9a27abdcc", + "mtime": 1790836913.8421538, + "ast_hash": "0a8c5f526c350c25e1ba673a940eeae6", "semantic_hash": "" }, "D:\\Repositories\\server\\frontend\\components.json": { @@ -269,19 +269,39 @@ "ast_hash": "18123062622096d1ed80c8d6c41b0169", "semantic_hash": "" }, - "D:\\Repositories\\server\\main\\app\\orunmila\\tools.py": { - "mtime": 1789627519.916649, - "ast_hash": "b45895bba6e8c7b6bfee5dd7c1cfa2c1", - "semantic_hash": "" - }, "D:\\Repositories\\server\\main\\app\\orunmila\\vector.py": { "mtime": 1789266824.606479, "ast_hash": "dd0df7ede0dd28d74c307a7aea6ba04b", "semantic_hash": "" }, + "D:\\Repositories\\server\\main\\app\\orunmila\\tools\\context.py": { + "mtime": 1790837178.034846, + "ast_hash": "a3d32d5348cca30780655b05b82bce1b", + "semantic_hash": "" + }, + "D:\\Repositories\\server\\main\\app\\orunmila\\tools\\memory.py": { + "mtime": 1790834474.292885, + "ast_hash": "afb11fc5b48e60e65e640d1b51d1065a", + "semantic_hash": "" + }, + "D:\\Repositories\\server\\main\\app\\orunmila\\tools\\sandbox.py": { + "mtime": 1790837097.7105825, + "ast_hash": "69b6182adec6a8eaba174c446f9f4acf", + "semantic_hash": "" + }, + "D:\\Repositories\\server\\main\\app\\orunmila\\tools\\wallet.py": { + "mtime": 1790834672.9276283, + "ast_hash": "21e96653f817b8341d36b29c691c91d4", + "semantic_hash": "" + }, + "D:\\Repositories\\server\\main\\app\\orunmila\\tools\\__init__.py": { + "mtime": 1790837111.132924, + "ast_hash": "1af04d6a494cef1950791d9d735a890e", + "semantic_hash": "" + }, "D:\\Repositories\\server\\main\\app\\scraper_b3\\scraper.py": { - "mtime": 1790736245.276425, - "ast_hash": "860f0d9a1a74c9b33fadce5148077f58", + "mtime": 1790821091.8922184, + "ast_hash": "7bd8236b3758b54442a88eaf8c8c761b", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\app\\scraper_b3\\xango.py": { @@ -320,8 +340,8 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\main\\app\\stocks_api\\sync_cache.py": { - "mtime": 1790736142.4061236, - "ast_hash": "9f07874bea2f9fcfad9acd239ae7b84e", + "mtime": 1790830784.8927202, + "ast_hash": "e0a923a48bb5e5a756bc8ffab03ead56", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\app\\stocks_api\\util.py": { @@ -334,6 +354,41 @@ "ast_hash": "a2cf805d0df8ca36122f887ae54c9280", "semantic_hash": "" }, + "D:\\Repositories\\server\\main\\app\\wallet\\earnings.py": { + "mtime": 1790828547.1383233, + "ast_hash": "8664068a2fda25f6f5cb3977b2c709eb", + "semantic_hash": "" + }, + "D:\\Repositories\\server\\main\\app\\wallet\\entries.py": { + "mtime": 1790829999.0547588, + "ast_hash": "7275551a4d39fb1d22b7614c5f804f5b", + "semantic_hash": "" + }, + "D:\\Repositories\\server\\main\\app\\wallet\\market_data.py": { + "mtime": 1790830194.744553, + "ast_hash": "43828a93b9fd151772081885cbc20ab6", + "semantic_hash": "" + }, + "D:\\Repositories\\server\\main\\app\\wallet\\performance.py": { + "mtime": 1790834672.9276283, + "ast_hash": "c332a654033ce98e7f8a31df3faea5ea", + "semantic_hash": "" + }, + "D:\\Repositories\\server\\main\\app\\wallet\\positions.py": { + "mtime": 1790834606.0508318, + "ast_hash": "1cd28a3770e7264146c9f40df086a017", + "semantic_hash": "" + }, + "D:\\Repositories\\server\\main\\app\\wallet\\summary.py": { + "mtime": 1790834672.9296267, + "ast_hash": "8100991706cff4c0e3f4384abe454cdc", + "semantic_hash": "" + }, + "D:\\Repositories\\server\\main\\app\\wallet\\wallets.py": { + "mtime": 1790828492.4487593, + "ast_hash": "f52f4d29d146953b6659e346e906da26", + "semantic_hash": "" + }, "D:\\Repositories\\server\\main\\controller\\authentication_controller.py": { "mtime": 1790721202.5567384, "ast_hash": "8be9ba65e0116ce4ad4867fcc59bae50", @@ -354,6 +409,11 @@ "ast_hash": "3b2e912c481d62f9b638dddd68e142e3", "semantic_hash": "" }, + "D:\\Repositories\\server\\main\\controller\\wallet_controller.py": { + "mtime": 1790829290.2056398, + "ast_hash": "3597af9fe73c2985dbb7763ead8a0f66", + "semantic_hash": "" + }, "D:\\Repositories\\server\\main\\models\\base.py": { "mtime": 1789266824.6195102, "ast_hash": "7dcf1fbc4850b465566daca90de0deb4", @@ -394,6 +454,11 @@ "ast_hash": "0245c293779cd189e1e74b2d006af625", "semantic_hash": "" }, + "D:\\Repositories\\server\\main\\models\\wallet.py": { + "mtime": 1790836945.7256603, + "ast_hash": "30ffa55bd90e269b39917ec7079107f5", + "semantic_hash": "" + }, "D:\\Repositories\\server\\main\\service\\authentication_service.py": { "mtime": 1790720783.1180828, "ast_hash": "2199185dd36046b7afa30557692a529a", @@ -415,10 +480,15 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\main\\service\\user_service.py": { - "mtime": 1789266824.6290352, + "mtime": 1790821989.9446845, "ast_hash": "aab8360aeaaa776f5d17e5a0e0caf6dd", "semantic_hash": "" }, + "D:\\Repositories\\server\\main\\service\\wallet_service.py": { + "mtime": 1790821975.2138531, + "ast_hash": "40b4f7b2ec5b4daecbdf8773b4cd9834", + "semantic_hash": "" + }, "D:\\Repositories\\server\\main\\utils\\connectivity.py": { "mtime": 1789366037.8517115, "ast_hash": "b9c539f0db7e46481115e3c413fbd8d9", @@ -450,8 +520,8 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\main\\utils\\roles.py": { - "mtime": 1790707412.4730222, - "ast_hash": "82063fac45e0e82ef3efa1be9248b9ca", + "mtime": 1790810393.7859154, + "ast_hash": "52c32388adb525de40f293c6284d577d", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\utils\\scheduler.py": { @@ -475,8 +545,8 @@ "semantic_hash": "d41d8cd98f00b204e9800998ecf8427e" }, "D:\\Repositories\\server\\migrations\\env.py": { - "mtime": 1789626224.6520696, - "ast_hash": "269f35fa57eecf274cb3a87d613ac006", + "mtime": 1790811516.9732063, + "ast_hash": "e4f56864f7807ea4d1930895670f8fc5", "semantic_hash": "" }, "D:\\Repositories\\server\\migrations\\versions\\25af7ad931e7_initial_migration.py": { @@ -489,6 +559,11 @@ "ast_hash": "6f701ad504554b99772333851ddf4e1b", "semantic_hash": "" }, + "D:\\Repositories\\server\\migrations\\versions\\73211a401c34_wallet_tables.py": { + "mtime": 1790811605.7685833, + "ast_hash": "04ddd9e24fd92a81da67b12c7b5d8049", + "semantic_hash": "" + }, "D:\\Repositories\\server\\migrations\\versions\\9f3b339dde20_drop_unused_user_sessions_columns.py": { "mtime": 1789266824.643073, "ast_hash": "7b002454a5a67cf5b15845847da95ff9", @@ -509,6 +584,11 @@ "ast_hash": "01916ec30942638aac469c4c0ec1171a", "semantic_hash": "" }, + "D:\\Repositories\\server\\migrations\\versions\\c4d1e8f2a917_wallet_earnings.py": { + "mtime": 1790815057.0441616, + "ast_hash": "c39e73dcfcde00bd79b5f2f59b4d113d", + "semantic_hash": "" + }, "D:\\Repositories\\server\\migrations\\versions\\d3df3fc5ca72_rename_memory_base_score.py": { "mtime": 1789266824.6456323, "ast_hash": "598b19c1d4efb7dccf7917244aa145ee", @@ -519,6 +599,11 @@ "ast_hash": "1cd806b72716facac6dbf7ec3e0bbe12", "semantic_hash": "" }, + "D:\\Repositories\\server\\migrations\\versions\\d4e5f6a7b8c9_drop_dead_holding_columns.py": { + "mtime": 1790836959.2365656, + "ast_hash": "f74e397a4de0a6b5dbb3bef4a119becd", + "semantic_hash": "" + }, "D:\\Repositories\\server\\migrations\\versions\\e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories.py": { "mtime": 1789266824.6476328, "ast_hash": "9ae7aa16f3e81e913d533d84a9c932b9", @@ -565,13 +650,13 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\TODO.md": { - "mtime": 1790726042.3421116, - "ast_hash": "0eafe0ff835b328c0ef66fdbe6e75100", + "mtime": 1790823747.2733662, + "ast_hash": "80cf4ec3d1860dcb876aa2d5a5cb577f", "semantic_hash": "" }, "D:\\Repositories\\server\\docs\\authentication.md": { - "mtime": 1789627715.725813, - "ast_hash": "418f5a3a5d92e6afdd9a8867235bfa38", + "mtime": 1790810393.8014698, + "ast_hash": "eae0f9cacc413290c0c7b8aa9daaa1a5", "semantic_hash": "" }, "D:\\Repositories\\server\\docs\\orunmila.md": { @@ -590,18 +675,18 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\docs\\user.md": { - "mtime": 1789627715.7248125, - "ast_hash": "1441362ec9c24f3e04abfd6c913b8efe", + "mtime": 1790810393.8024735, + "ast_hash": "39586406ef3546456171e268b4bc8ad0", "semantic_hash": "" }, "D:\\Repositories\\server\\docs\\superpowers\\investidor10-wallet-research.md": { - "mtime": 1790722729.1475766, - "ast_hash": "350d3ac11cb57db7093fcbcfcebd423a", + "mtime": 1790796927.2642908, + "ast_hash": "74a582531bcddde54964f93a79b24494", "semantic_hash": "" }, "D:\\Repositories\\server\\docs\\superpowers\\investidor10-wallet-spec.md": { - "mtime": 1790722776.4594035, - "ast_hash": "5b5eb1d6eb186eebcc200bc3b4f8d77c", + "mtime": 1790808403.552102, + "ast_hash": "65d55b3ae08cc3f49631aed7813c6eca", "semantic_hash": "" }, "D:\\Repositories\\server\\docs\\superpowers\\nginx-scaling-plan.md": { @@ -609,11 +694,21 @@ "ast_hash": "821d1ab64e7ea4f1a8903c26adcdffb8", "semantic_hash": "" }, + "D:\\Repositories\\server\\docs\\superpowers\\orunmila-harness-gaps.md": { + "mtime": 1790811138.244111, + "ast_hash": "89f83eff48117a8d76064a3c122a357f", + "semantic_hash": "" + }, "D:\\Repositories\\server\\docs\\superpowers\\uvicorn-worker-scaling-plan.md": { "mtime": 1790723409.2143178, "ast_hash": "5bc55983f02c9f640b96fe2ade89e7d2", "semantic_hash": "" }, + "D:\\Repositories\\server\\docs\\superpowers\\wallet-orchestrator-prompt.md": { + "mtime": 1790809389.5735018, + "ast_hash": "8c85c0d12852e051ed29945371763875", + "semantic_hash": "" + }, "D:\\Repositories\\server\\docs\\superpowers\\benchmarks\\stocks-cache-ttl.md": { "mtime": 1790725744.0210347, "ast_hash": "02bdda14a198a7ce352314ec84cd36a6", @@ -670,8 +765,8 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\docs\\superpowers\\plans\\2026-09-29-nginx-response-cache.md": { - "mtime": 1790716965.7762914, - "ast_hash": "81c18d85ba503d04f69a56700b821fd8", + "mtime": 1790744356.819669, + "ast_hash": "7c84290f4abbc549ec39f3bef36c2cb7", "semantic_hash": "" }, "D:\\Repositories\\server\\docs\\superpowers\\plans\\2026-09-29-stocks-cache-ttl.md": { @@ -689,6 +784,16 @@ "ast_hash": "99973b0d3da44a0a7cbc01959fc8157a", "semantic_hash": "" }, + "D:\\Repositories\\server\\docs\\superpowers\\plans\\2026-09-30-wallet-p1.md": { + "mtime": 1790809389.8345032, + "ast_hash": "5bdfad20f1fff5e0b9064fab31f91d14", + "semantic_hash": "" + }, + "D:\\Repositories\\server\\docs\\superpowers\\plans\\2026-10-01-wallet-p3.md": { + "mtime": 1790819692.9904158, + "ast_hash": "712c9020cdf419cfb288a3090f9a698f", + "semantic_hash": "" + }, "D:\\Repositories\\server\\docs\\superpowers\\specs\\2026-09-04-wallet-design.md": { "mtime": 1789266824.564381, "ast_hash": "3ad505fd6016388f87bd14fa8da4f40e", @@ -704,6 +809,11 @@ "ast_hash": "7bbc5e5a7693a5828d34f9f4d7eb8125", "semantic_hash": "" }, + "D:\\Repositories\\server\\frontend\\mock-wallet.html": { + "mtime": 1790835791.9064455, + "ast_hash": "10a5e8765d73579086d5d3c82aeb1fa5", + "semantic_hash": "" + }, "D:\\Repositories\\server\\frontend\\pnpm-workspace.yaml": { "mtime": 1788633933.7987409, "ast_hash": "b742abf2d03aa9d79c3290767176eb41", diff --git a/main/app/orunmila/tools.py b/main/app/orunmila/tools.py deleted file mode 100644 index baba11c8..00000000 --- a/main/app/orunmila/tools.py +++ /dev/null @@ -1,223 +0,0 @@ -from config import SessionLocal -import asyncio -import logging -from typing import Any -from urllib.parse import quote - -from forgevm.exceptions import SandboxNotFound -from sqlalchemy.orm import Session - -from main.app.orunmila.memory import OrunmilaMemory -from main.app.orunmila.sandbox import SandboxManager, hostPath -from main.app.orunmila.vector import embed - -logger = logging.getLogger(__name__) - - -# -# memory -# -async def search_memory(query: str, limit: int = 10, **_) -> dict: - """Search user's saved memories, preferences, and past analysis context. - - Use this to recall what the user has previously discussed, their preferences, or past analysis results before starting a new analysis. - - Args: - query: Search query — keywords or phrase to find in saved memories - limit: Maximum number of memories to return (default 10) - """ - user = _.get("user") - if not user: - return {"error": "Authentication required"} - - db: Session | None = _.get("db") - ownSession = not db - if ownSession: - db = SessionLocal() - try: - results = await asyncio.to_thread( - OrunmilaMemory.search, - db, # type: ignore[arg-type] - user["userId"], - query, - limit=limit, - ) - return {"memories": results} - finally: - if ownSession: - db.close() # type: ignore[union-attr] - - -async def save_memory(key: str, value: str, type: str, **_) -> dict: - """Store a memory about the user's preferences, analysis results, or feedback. - - Use this to remember important findings, user preferences, or analysis conclusions across sessions. - - Args: - key: Short label for the memory (e.g., "PETR4 valuation") - value: Full memory content with details - type: Type of memory — one of: preference, analysis, feedback, context - """ - user = _.get("user") - if not user: - return {"error": "Authentication required"} - - db: Session | None = _.get("db") - ownSession = not db - if ownSession: - db = SessionLocal() - try: - embedding = embed([value])[0] - result = await asyncio.to_thread( - OrunmilaMemory.upsertMemory, - db, # type: ignore[arg-type] - user["userId"], - key=key, - value=value, - memoryType=type, - source="explicit", - embedding=embedding, - userRoles=user.get("roles", []), - ) - if result["status"] == "limit_reached": - return {"error": f"Memory limit reached ({result['limit']}). Upgrade to premium for more memories."} - return {"status": result["status"], "memoryId": result["memory"].id} - finally: - if ownSession: - db.close() # type: ignore[union-attr] - - -# -# sandbox -# -async def execute_code(code: str, timeout: int = 30, **_) -> dict: - """Execute Python code in an isolated sandbox. Use for quantitative analysis, - statistical models, custom charts, and data transformations. - - Args: - code: Python code to execute - timeout: Maximum execution time in seconds (default 30) - """ - userId = _.get("userId", 0) - sandboxId = _.get("sandbox_id") - if not sandboxId: - return {"error": "No sandbox available"} - try: - return await SandboxManager.execute(userId, code, sandboxId, timeout=timeout) - except SandboxNotFound: - return {"error": "Sandbox could not be respawned. Try again."} - except Exception as e: - logger.error("Sandbox execution failed: %s", e) - return {"error": f"Sandbox execution failed: {e}"} - - -async def read_file(path: str, **_) -> dict: - """Read a file from the workspace. - - Args: - path: Path to the file (e.g., /workspace/results.json or results.json) - """ - userId = _.get("userId", 0) - try: - content = SandboxManager.read_file(userId, path) - except ValueError: - return {"error": "Invalid workspace path"} - return {"content": content} - - -async def write_file(path: str, content: str, **_) -> dict: - """Write a file to the workspace. Use this to save data files - (CSV, JSON, scripts) for analysis. - - Args: - path: Path where the file will be written (e.g., /workspace/analyze.py) - content: File content as a string - """ - userId = _.get("userId", 0) - try: - ok = SandboxManager.write_file(userId, path, content) - except ValueError: - return {"error": "Invalid workspace path"} - return {"success": ok} - - -async def list_files(path: str = "/workspace", **_) -> dict: - """List files in the workspace directory. - - Args: - path: Directory path to list (default: /workspace) - """ - userId = _.get("userId", 0) - try: - return SandboxManager.list_files(userId, path) - except ValueError: - return {"error": "Invalid workspace path"} - - -async def serve_file(path: str, **_) -> dict: - """Get a download link for a workspace file to share with the user. - - Use this when the user should be able to download or view a file you - created (reports, CSVs, charts). Returns a markdown link the user can - click; embed the markdown value in your reply. - - Args: - path: Path to the file (e.g., /workspace/report.csv) - """ - userId = _.get("userId", 0) - try: - host = hostPath(userId, path) - except ValueError: - return {"error": "Invalid workspace path"} - if not host.exists() or not host.is_file(): - return {"error": f"File not found: {path}"} - - url = f"/orunmila/workspace/download?path={quote(path, safe='/')}" - return {"url": url, "markdown": f"[{host.name}]({url})"} - - -TOOL_REGISTRY: dict[str, Any] = { - "search_memory": search_memory, - "save_memory": save_memory, - "execute_code": execute_code, - "read_file": read_file, - "write_file": write_file, - "list_files": list_files, - "serve_file": serve_file, -} - - -async def dispatchToolCall( - functionCall, - mcpClients, - user=None, - db=None, - sandbox_id: str | None = None, -) -> dict: - name = functionCall.name - args = dict(functionCall.args or {}) - logger.info(f"Executing tool call: {name}({args})") - - if name in TOOL_REGISTRY: - fn = TOOL_REGISTRY[name] - args["user"] = user - args["db"] = db - args["sandbox_id"] = sandbox_id - args["userId"] = user.get("userId", 0) if user else 0 - return await fn(**args) - - for client in mcpClients.values(): - try: - mcpResult = await client.session.call_tool(name, args) - if getattr(mcpResult, "isError", False): - continue - textParts = [] - if hasattr(mcpResult, "content") and mcpResult.content: - for block in mcpResult.content: - textParts.append(block.text if hasattr(block, "text") else str(block)) - return {"result": "\n".join(textParts) if textParts else str(mcpResult)} - except Exception as e: - logger.debug(f"MCP client failed for {name}: {e}") - continue - - return {"error": f"Tool '{name}' not available"} diff --git a/main/app/orunmila/tools/__init__.py b/main/app/orunmila/tools/__init__.py new file mode 100644 index 00000000..cdc44c1c --- /dev/null +++ b/main/app/orunmila/tools/__init__.py @@ -0,0 +1,68 @@ +import logging +from typing import Any, Optional + +from main.app.orunmila.tools.memory import save_memory, search_memory +from main.app.orunmila.tools.sandbox import execute_code, list_files, read_file, serve_file, write_file +from main.app.orunmila.tools.wallet import ( + wallet_allocation, + wallet_performance, + wallet_positions, + wallet_rebalance, + wallet_summary, + list_wallet_earnings, +) + +logger = logging.getLogger(__name__) + + +TOOL_REGISTRY: dict[str, Any] = { + "search_memory": search_memory, + "save_memory": save_memory, + "execute_code": execute_code, + "read_file": read_file, + "write_file": write_file, + "list_files": list_files, + "serve_file": serve_file, + "wallet_positions": wallet_positions, + "wallet_summary": wallet_summary, + "wallet_allocation": wallet_allocation, + "list_wallet_earnings": list_wallet_earnings, + "wallet_performance": wallet_performance, + "wallet_rebalance": wallet_rebalance, +} + + +async def dispatchToolCall( + functionCall, + mcpClients, + user=None, + db=None, + sandbox_id: Optional[str] = None, +) -> dict: + name = functionCall.name + args = dict(functionCall.args or {}) + logger.info(f"Executing tool call: {name}({args})") + + if name in TOOL_REGISTRY: + fn = TOOL_REGISTRY[name] + args["user"] = user + args["db"] = db + args["sandbox_id"] = sandbox_id + args["userId"] = user.get("userId", 0) if user else 0 + return await fn(**args) + + for client in mcpClients.values(): + try: + mcpResult = await client.session.call_tool(name, args) + if getattr(mcpResult, "isError", False): + continue + textParts = [] + if hasattr(mcpResult, "content") and mcpResult.content: + for block in mcpResult.content: + textParts.append(block.text if hasattr(block, "text") else str(block)) + return {"result": "\n".join(textParts) if textParts else str(mcpResult)} + except Exception as e: + logger.debug(f"MCP client failed for {name}: {e}") + continue + + return {"error": f"Tool '{name}' not available"} diff --git a/main/app/orunmila/tools/context.py b/main/app/orunmila/tools/context.py new file mode 100644 index 00000000..f6588855 --- /dev/null +++ b/main/app/orunmila/tools/context.py @@ -0,0 +1,26 @@ +from typing import Any, Optional + +from config import SessionLocal +from sqlalchemy.orm import Session + + +def popAuthSession(args: dict) -> tuple[Any, Optional[Session], bool, Optional[dict]]: + """Shared auth-guard + own-SessionLocal convention every tool repeats. + + Returns (user, db, ownSession, error). When error is not None the caller + must return it immediately. Otherwise the caller must release db via + closeOwnSession when ownSession is True. + """ + user = args.get("user") + if not user: + return None, None, False, {"error": "Authentication required"} + db: Optional[Session] = args.get("db") + ownSession = not db + if ownSession: + db = SessionLocal() + return user, db, ownSession, None + + +def closeOwnSession(db: Optional[Session], ownSession: bool) -> None: + if ownSession: + db.close() # type: ignore[union-attr] diff --git a/main/app/orunmila/tools/memory.py b/main/app/orunmila/tools/memory.py new file mode 100644 index 00000000..a492feb5 --- /dev/null +++ b/main/app/orunmila/tools/memory.py @@ -0,0 +1,63 @@ +import asyncio + +from main.app.orunmila.memory import OrunmilaMemory +from main.app.orunmila.vector import embed +from main.app.orunmila.tools.context import closeOwnSession, popAuthSession + + +async def search_memory(query: str, limit: int = 10, **_) -> dict: + """Search user's saved memories, preferences, and past analysis context. + + Use this to recall what the user has previously discussed, their preferences, or past analysis results before starting a new analysis. + + Args: + query: Search query — keywords or phrase to find in saved memories + limit: Maximum number of memories to return (default 10) + """ + user, db, ownSession, authError = popAuthSession(_) + if authError is not None: + return authError + try: + results = await asyncio.to_thread( + OrunmilaMemory.search, + db, # type: ignore[arg-type] + user["userId"], + query, + limit=limit, + ) + return {"memories": results} + finally: + closeOwnSession(db, ownSession) + + +async def save_memory(key: str, value: str, type: str, **_) -> dict: + """Store a memory about the user's preferences, analysis results, or feedback. + + Use this to remember important findings, user preferences, or analysis conclusions across sessions. + + Args: + key: Short label for the memory (e.g., "PETR4 valuation") + value: Full memory content with details + type: Type of memory — one of: preference, analysis, feedback, context + """ + user, db, ownSession, authError = popAuthSession(_) + if authError is not None: + return authError + try: + embedding = embed([value])[0] + result = await asyncio.to_thread( + OrunmilaMemory.upsertMemory, + db, # type: ignore[arg-type] + user["userId"], + key=key, + value=value, + memoryType=type, + source="explicit", + embedding=embedding, + userRoles=user.get("roles", []), + ) + if result["status"] == "limit_reached": + return {"error": f"Memory limit reached ({result['limit']}). Upgrade to premium for more memories."} + return {"status": result["status"], "memoryId": result["memory"].id} + finally: + closeOwnSession(db, ownSession) diff --git a/main/app/orunmila/tools/sandbox.py b/main/app/orunmila/tools/sandbox.py new file mode 100644 index 00000000..55712af0 --- /dev/null +++ b/main/app/orunmila/tools/sandbox.py @@ -0,0 +1,94 @@ +import logging +from urllib.parse import quote + +from forgevm.exceptions import SandboxNotFound + +from main.app.orunmila.sandbox import SandboxManager, hostPath + +logger = logging.getLogger(__name__) + + +async def execute_code(code: str, timeout: int = 30, **_) -> dict: + """Execute Python code in an isolated sandbox. Use for quantitative analysis, + statistical models, custom charts, and data transformations. + + Args: + code: Python code to execute + timeout: Maximum execution time in seconds (default 30) + """ + userId = _.get("userId", 0) + sandboxId = _.get("sandbox_id") + if not sandboxId: + return {"error": "No sandbox available"} + try: + return await SandboxManager.execute(userId, code, sandboxId, timeout=timeout) + except SandboxNotFound: + return {"error": "Sandbox could not be respawned. Try again."} + except Exception as e: + logger.error("Sandbox execution failed: %s", e) + return {"error": f"Sandbox execution failed: {e}"} + + +async def read_file(path: str, **_) -> dict: + """Read a file from the workspace. + + Args: + path: Path to the file (e.g., /workspace/results.json or results.json) + """ + userId = _.get("userId", 0) + try: + content = SandboxManager.read_file(userId, path) + except ValueError: + return {"error": "Invalid workspace path"} + return {"content": content} + + +async def write_file(path: str, content: str, **_) -> dict: + """Write a file to the workspace. Use this to save data files + (CSV, JSON, scripts) for analysis. + + Args: + path: Path where the file will be written (e.g., /workspace/analyze.py) + content: File content as a string + """ + userId = _.get("userId", 0) + try: + ok = SandboxManager.write_file(userId, path, content) + except ValueError: + return {"error": "Invalid workspace path"} + return {"success": ok} + + +async def list_files(path: str = "/workspace", **_) -> dict: + """List files in the workspace directory. + + Args: + path: Directory path to list (default: /workspace) + """ + userId = _.get("userId", 0) + try: + return SandboxManager.list_files(userId, path) + except ValueError: + return {"error": "Invalid workspace path"} + + +async def serve_file(path: str, **_) -> dict: + """Get a download link for a workspace file to share with the user. + + Use this when the user should be able to download or view a file you + created (reports, CSVs, charts). Returns a markdown link the user can + click; embed the markdown value in your reply. + + Args: + path: Path to the file (e.g., /workspace/report.csv) + """ + userId = _.get("userId", 0) + try: + host = hostPath(userId, path) + except ValueError: + return {"error": "Invalid workspace path"} + if not host.exists() or not host.is_file(): + return {"error": f"File not found: {path}"} + + url = f"/orunmila/workspace/download?path={quote(path, safe='/')}" + return {"url": url, "markdown": f"[{host.name}]({url})"} diff --git a/main/app/orunmila/tools/wallet.py b/main/app/orunmila/tools/wallet.py new file mode 100644 index 00000000..ab8ab703 --- /dev/null +++ b/main/app/orunmila/tools/wallet.py @@ -0,0 +1,207 @@ +from datetime import date as dateType +from typing import Optional + +from fastapi import HTTPException +from sqlalchemy.orm import Session + +from main.app.orunmila.tools.context import closeOwnSession, popAuthSession +from main.app.wallet.earnings import EarningsManager +from main.app.wallet.performance import PerformanceManager +from main.app.wallet.positions import PositionsManager +from main.app.wallet.summary import SummaryManager +from main.app.wallet.wallets import WalletsManager + + +def ensureOwnership(db: Session | None, walletId: int, userId: int) -> dict | None: + try: + WalletsManager.getWallet( + db, # type: ignore[arg-type] + walletId, + userId, + ) + except HTTPException: + return {"error": "not-owner"} + return None + + +async def wallet_positions(wallet_id: int, **_) -> dict: + """List wallet holdings with live prices, equity, allocation, and buy signals. + + Read-only: never mutates wallet state. + + Args: + wallet_id: Wallet to inspect (must belong to the caller) + """ + user, db, ownSession, authError = popAuthSession(_) + if authError is not None: + return authError + try: + userId = user["userId"] + ownerError = ensureOwnership(db, wallet_id, userId) + if ownerError is not None: + return ownerError + return PositionsManager.getPositions( + db, # type: ignore[arg-type] + wallet_id, + userId, + ) + finally: + closeOwnSession(db, ownSession) + + +async def wallet_summary(wallet_id: int, **_) -> dict: + """Summarize applied capital, equity, and variation for a wallet. + + Read-only: never mutates wallet state. + + Args: + wallet_id: Wallet to summarize (must belong to the caller) + """ + user, db, ownSession, authError = popAuthSession(_) + if authError is not None: + return authError + try: + userId = user["userId"] + ownerError = ensureOwnership(db, wallet_id, userId) + if ownerError is not None: + return ownerError + return SummaryManager.getSummary( + db, # type: ignore[arg-type] + wallet_id, + userId, + ) + finally: + closeOwnSession(db, ownSession) + + +async def wallet_allocation(wallet_id: int, group_by: str = "ticker", **_) -> dict: + """Break wallet equity down by ticker or asset type. + + Read-only: never mutates wallet state. + + Args: + wallet_id: Wallet to inspect (must belong to the caller) + group_by: Grouping key — "ticker" or "assetType" (default "ticker") + """ + user, db, ownSession, authError = popAuthSession(_) + if authError is not None: + return authError + try: + userId = user["userId"] + ownerError = ensureOwnership(db, wallet_id, userId) + if ownerError is not None: + return ownerError + return SummaryManager.getAllocation( + db, # type: ignore[arg-type] + wallet_id, + userId, + group_by, + ) + finally: + closeOwnSession(db, ownSession) + + +async def list_wallet_earnings(wallet_id: int, status: Optional[str] = "A Receber", **_) -> dict: + """List accrued earnings (dividends, JSCP) for a wallet. + + Read-only: never mutates wallet state. + + Args: + wallet_id: Wallet to inspect (must belong to the caller) + status: Filter by status — "A Receber", "Recebido", or None for all (default "A Receber") + """ + user, db, ownSession, authError = popAuthSession(_) + if authError is not None: + return authError + try: + userId = user["userId"] + ownerError = ensureOwnership(db, wallet_id, userId) + if ownerError is not None: + return ownerError + rows = EarningsManager.listEarnings( + db, # type: ignore[arg-type] + wallet_id, + userId, + status=status, + ) + return { + "wallet_id": wallet_id, + "status": status, + "earnings": [ + { + "earning_id": int(row.earningId), + "ticker": str(row.ticker), + "kind": str(row.kind), + "ex_date": str(row.exDate), + "pay_date": str(row.payDate), + "gross": float(row.gross), + "net": float(row.netIrAdjusted), + "status": str(row.status), + } + for row in rows + ], + } + finally: + closeOwnSession(db, ownSession) + + +async def wallet_performance(wallet_id: int, from_date: str, to_date: str, ticker: Optional[str] = None, **_) -> dict: + """Compute time-weighted return, volatility, and dividends for a wallet or ticker. + + Read-only: never mutates wallet state. + + Args: + wallet_id: Wallet to inspect (must belong to the caller) + from_date: Window start as YYYY-MM-DD + to_date: Window end as YYYY-MM-DD + ticker: Optional single ticker; omit for the whole wallet + """ + user, db, ownSession, authError = popAuthSession(_) + if authError is not None: + return authError + try: + try: + startDate = dateType.fromisoformat(from_date) + endDate = dateType.fromisoformat(to_date) + except ValueError: + return {"error": "invalid date, use YYYY-MM-DD"} + + userId = user["userId"] + ownerError = ensureOwnership(db, wallet_id, userId) + if ownerError is not None: + return ownerError + return PerformanceManager.getPerformance( + db, # type: ignore[arg-type] + wallet_id, + userId, + ticker, + startDate, + endDate, + ) + finally: + closeOwnSession(db, ownSession) + + +async def wallet_rebalance(wallet_id: int, **_) -> dict: + """Show weight-share rebalance deltas per ticker (buy/sell/hold). + + Read-only: never mutates wallet state. + + Args: + wallet_id: Wallet to inspect (must belong to the caller) + """ + user, db, ownSession, authError = popAuthSession(_) + if authError is not None: + return authError + try: + userId = user["userId"] + ownerError = ensureOwnership(db, wallet_id, userId) + if ownerError is not None: + return ownerError + return PositionsManager.getRebalance( + db, # type: ignore[arg-type] + wallet_id, + userId, + ) + finally: + closeOwnSession(db, ownSession) diff --git a/main/app/scraper_b3/scraper.py b/main/app/scraper_b3/scraper.py index f0b2e9dd..8dedd4fc 100644 --- a/main/app/scraper_b3/scraper.py +++ b/main/app/scraper_b3/scraper.py @@ -26,9 +26,12 @@ warnings.filterwarnings("ignore", category=RuntimeWarning) + def getCurrentSelic(): - selic = pd.DataFrame(requests.get("https://api.bcb.gov.br/dados/serie/bcdata.sgs.4189/dados?formato=json", timeout=30).json()) - + selic = pd.DataFrame( + requests.get("https://api.bcb.gov.br/dados/serie/bcdata.sgs.4189/dados?formato=json", timeout=30).json() + ) + selic["valor"] = selic["valor"].astype(float) selic["valor medio 10y"] = selic["valor"].rolling(120, min_periods=120).mean().round(2) @@ -608,7 +611,9 @@ def exportMysql(self, df): for col in existingCols if any(pattern in col for pattern in historicalPatterns) and col not in JSON_COLUMNS ] - historicalCols = [col for col in historicalCols if re.compile(r"^[A-Za-z0-9][A-Za-z0-9 _]*$").match(col) is not None] + historicalCols = [ + col for col in historicalCols if re.compile(r"^[A-Za-z0-9][A-Za-z0-9 _]*$").match(col) is not None + ] if historicalCols: conn.execute( diff --git a/main/app/stocks_api/sync_cache.py b/main/app/stocks_api/sync_cache.py index 1c5d4f8c..67c8718d 100644 --- a/main/app/stocks_api/sync_cache.py +++ b/main/app/stocks_api/sync_cache.py @@ -1,4 +1,5 @@ import asyncio +import concurrent.futures import inspect from functools import wraps from typing import Any, Callable, TypeVar @@ -27,9 +28,15 @@ async def cachedCall() -> Any: await cashews.cache.set(cache_key, result, expire=ttl) return result - return asyncio.run(cachedCall()) - + try: + asyncio.get_running_loop() + except RuntimeError: + return asyncio.run(cachedCall()) + with concurrent.futures.ThreadPoolExecutor(max_workers=1) as pool: + return pool.submit(lambda: asyncio.run(cachedCall())).result() + return wrapper # type: ignore[return-value] + return decorator diff --git a/main/app/wallet/earnings.py b/main/app/wallet/earnings.py new file mode 100644 index 00000000..c14223fa --- /dev/null +++ b/main/app/wallet/earnings.py @@ -0,0 +1,116 @@ +import logging +from datetime import date as dateType +from datetime import datetime + +from sqlalchemy.orm import Session + +from main.app.wallet.entries import EntriesManager +from main.app.wallet.market_data import MarketDataManager +from main.app.wallet.wallets import WalletsManager +from main.models.wallet import Earning, Holding, Transaction + +logger = logging.getLogger(__name__) + +IR_RATE = {"Div": 0.0, "JSCP": 0.15, "RendTributado": 0.15} + +TIPO_MAP = { + "Dividendo": "Div", + "JCP": "JSCP", + "Juros Sobre Capital Proprio": "JSCP", + "Rend. Tributado": "RendTributado", +} + + +class EarningsManager: + @classmethod + def syncEarnings(cls, db: Session, walletId: int, userId: int) -> dict: + WalletsManager.getWallet(db, walletId, userId) + + today = dateType.today() + accrued = 0 + skippedUnknown: list[str] = [] + + holdings = db.query(Holding).filter(Holding.walletId == walletId).all() + for holding in holdings: + if float(holding.quantity) <= 0: + continue + + holdingTicker = str(holding.ticker) + + ledgerEntries = ( + db.query(Transaction) + .filter(Transaction.walletId == walletId, Transaction.ticker == holdingTicker) + .order_by(Transaction.date, Transaction.entryId) + .all() + ) + + for record in MarketDataManager.fetchMarketDividends(holdingTicker): + label = str(record.get("TIPO PROVENTO")) + kind = TIPO_MAP.get(label) + + if kind is None: + if label not in skippedUnknown: + skippedUnknown.append(label) + continue + + try: + exDate = datetime.strptime(record["DATA COM"], "%d-%m-%Y").date() + payDate = datetime.strptime(record["DATA PAGAMENTO"], "%d-%m-%Y").date() + perShare = float(record["VALOR AJUSTADO"]) + except Exception: + continue + + quantityAtEx = EntriesManager.positionAtDate(ledgerEntries, exDate) + if quantityAtEx <= 0: + continue + + existing = ( + db.query(Earning) + .filter( + Earning.walletId == walletId, + Earning.ticker == holdingTicker, + Earning.exDate == exDate, + Earning.kind == kind, + ) + .first() + ) + + if existing is not None: + continue + + gross = perShare * quantityAtEx + earning = Earning( + walletId=walletId, + ticker=holdingTicker, + kind=kind, + exDate=exDate, + payDate=payDate, + gross=gross, + netIrAdjusted=gross * (1 - IR_RATE[kind]), + status="Recebido" if payDate <= today else "A Receber", + ) + + db.add(earning) + + accrued += 1 + transitioned = 0 + + pending = db.query(Earning).filter(Earning.walletId == walletId, Earning.status == "A Receber").all() + for earning in pending: + if str(earning.payDate) <= today.isoformat(): + earning.status = "Recebido" # type: ignore[assignment] + transitioned += 1 + + db.commit() + + return {"accrued": accrued, "transitioned": transitioned, "skipped_unknown": skippedUnknown} + + @classmethod + def listEarnings(cls, db: Session, walletId: int, userId: int, status: str | None = None) -> list[Earning]: + WalletsManager.getWallet(db, walletId, userId) + query = db.query(Earning).filter(Earning.walletId == walletId) + + if status is not None: + query = query.filter(Earning.status == status) + + return query.order_by(Earning.exDate, Earning.earningId).all() diff --git a/main/app/wallet/entries.py b/main/app/wallet/entries.py new file mode 100644 index 00000000..e1b97304 --- /dev/null +++ b/main/app/wallet/entries.py @@ -0,0 +1,200 @@ +import logging +from datetime import date as dateType +from typing import Literal + +from fastapi import HTTPException +from pydantic import BaseModel, Field +from sqlalchemy.orm import Session + +from main.app.wallet.positions import PositionsManager +from main.app.wallet.wallets import WalletsManager +from main.models.wallet import Holding, Transaction + +logger = logging.getLogger(__name__) + + +class EntryCreate(BaseModel): + wallet_id: int + side: Literal["Compra", "Venda"] + asset_type: str + ticker: str + date: dateType + quantity: float = Field(gt=0) + price: float = Field(ge=0) + costs: float = Field(default=0.0, ge=0) + + +class EntryUpdate(BaseModel): + date: dateType | None = None + quantity: float | None = Field(default=None, gt=0) + price: float | None = Field(default=None, ge=0) + costs: float | None = Field(default=None, ge=0) + + +class EntriesManager: + @classmethod + def applyEntries(cls, quantity: float, avg: float, entries: list[Transaction]) -> tuple[float, float]: + for entry in entries: + entryQuantity = float(entry.quantity) + entryPrice = float(entry.price) + entryCosts = float(entry.costs) + + if entry.side == "Compra": + total = quantity * avg + entryQuantity * entryPrice + entryCosts + quantity += entryQuantity + avg = total / quantity + + else: + if entryQuantity > quantity: + raise HTTPException(status_code=422, detail="sell exceeds holding") + quantity -= entryQuantity + + return quantity, avg + + @classmethod + def recalcHolding(cls, db: Session, walletId: int, ticker: str) -> Holding | None: + entries = ( + db.query(Transaction) + .filter(Transaction.walletId == walletId, Transaction.ticker == ticker) + .order_by(Transaction.date, Transaction.entryId) + .all() + ) + + holding = db.query(Holding).filter(Holding.walletId == walletId, Holding.ticker == ticker).first() + + if not entries: + if holding is not None: + db.delete(holding) + return None + + quantity, avg = cls.applyEntries(0.0, 0.0, entries) + if holding is None: + xangoScore = PositionsManager.fetchXangoScores((ticker,)).get(ticker) + holding = Holding( + walletId=walletId, + assetType=entries[0].assetType, + ticker=ticker, + quantity=quantity, + avgPrice=avg, + rating=xangoScore if xangoScore is not None else 10.0, # type: ignore[assignment] + ) + + db.add(holding) + else: + holding.quantity = quantity # type: ignore[assignment] + holding.avgPrice = avg # type: ignore[assignment] + + return holding + + @classmethod + def addEntry(cls, db: Session, userId: int, data: EntryCreate) -> tuple[Transaction, Holding | None]: + WalletsManager.getWallet(db, data.wallet_id, userId) + if data.side == "Venda": + holding = ( + db.query(Holding).filter(Holding.walletId == data.wallet_id, Holding.ticker == data.ticker).first() + ) + if holding is None or data.quantity > float(holding.quantity): + raise HTTPException(status_code=422, detail="sell exceeds holding") + + entry = Transaction( + walletId=data.wallet_id, + side=data.side, + assetType=data.asset_type, + ticker=data.ticker, + date=data.date, + quantity=data.quantity, + price=data.price, + costs=data.costs, + ) + + db.add(entry) + db.flush() + + holding = cls.recalcHolding(db, data.wallet_id, data.ticker) + + db.commit() + db.refresh(entry) + + if holding is not None: + db.refresh(holding) + + return entry, holding + + @classmethod + def listEntries( + cls, db: Session, userId: int, walletId: int, ticker: str | None = None, limit: int = 20, offset: int = 0 + ) -> tuple[int, list[Transaction]]: + WalletsManager.getWallet(db, walletId, userId) + query = db.query(Transaction).filter(Transaction.walletId == walletId) + + if ticker is not None: + query = query.filter(Transaction.ticker == ticker) + + total = query.count() + items = query.order_by(Transaction.date, Transaction.entryId).offset(offset).limit(limit).all() + + return total, items + + @classmethod + def updateEntry( + cls, db: Session, userId: int, entryId: int, patch: EntryUpdate + ) -> tuple[Transaction, Holding | None]: + entry = db.query(Transaction).filter(Transaction.entryId == entryId).first() + + if entry is None: + raise HTTPException(status_code=404, detail="entry not found") + + WalletsManager.getWallet(db, int(entry.walletId), userId) + + changes = patch.model_dump(exclude_unset=True) + for fieldName, fieldValue in changes.items(): + if fieldValue is not None: + setattr(entry, fieldName, fieldValue) + + db.flush() + + try: + holding = cls.recalcHolding(db, int(entry.walletId), str(entry.ticker)) + except HTTPException: + db.rollback() + raise + + db.commit() + db.refresh(entry) + + if holding is not None: + db.refresh(holding) + + return entry, holding + + @classmethod + def deleteEntry(cls, db: Session, userId: int, entryId: int) -> tuple[int, Holding | None]: + entry = db.query(Transaction).filter(Transaction.entryId == entryId).first() + + if entry is None: + raise HTTPException(status_code=404, detail="entry not found") + + WalletsManager.getWallet(db, int(entry.walletId), userId) + + walletId = entry.walletId + ticker = entry.ticker + + db.delete(entry) + db.flush() + + try: + holding = cls.recalcHolding(db, int(walletId), str(ticker)) + except HTTPException: + db.rollback() + raise + + db.commit() + + return entryId, holding + + @classmethod + def positionAtDate(cls, entries: list[Transaction], exDate: dateType) -> float: + datedEntries = [entry for entry in entries if str(entry.date) <= exDate.isoformat()] + quantity, _ = cls.applyEntries(0.0, 0.0, datedEntries) + + return quantity diff --git a/main/app/wallet/market_data.py b/main/app/wallet/market_data.py new file mode 100644 index 00000000..6f781995 --- /dev/null +++ b/main/app/wallet/market_data.py @@ -0,0 +1,90 @@ +import logging +import os +from concurrent.futures import ThreadPoolExecutor +from datetime import date as dateType +from datetime import datetime + +import requests + +from cashews import cache as cashewsCache + +from config import Config +from main.app.stocks_api.sync_cache import cache as walletCache + +logger = logging.getLogger(__name__) + +cashewsCache.setup("mem://") + + +class MarketDataManager: + @classmethod + @walletCache(ttl="15s", key="wallet:live:{tickers}") + def fetchLivePrices(cls, tickers: list[str]) -> dict[str, float | None]: + if not tickers: + return {} + + def one(ticker: str) -> tuple[str, float | None]: + try: + key = os.getenv("STOCKS_API_KEY", "") + resp = requests.get( + f"http://{Config.STOCKS_API.HOST}:{Config.STOCKS_API.PORT}/stocks/cotations/live", + params={"search": ticker, "compact": False}, # type: ignore[arg-type] + headers={"X-API-Key": key} if key else {}, + timeout=3, + ) + if resp.status_code == 429: + logger.warning("Live price quota exhausted for %s", ticker) + return ticker, None + if resp.status_code != 200: + return ticker, None + return ticker, float(resp.json()["data"][0]["PRECO ATUAL"]) + except Exception: + return ticker, None + + with ThreadPoolExecutor(max_workers=min(8, max(1, len(tickers)))) as pool: + return dict(pool.map(one, tickers)) + + @classmethod + def fetchMarketDividends(cls, ticker: str) -> list[dict]: + try: + key = os.getenv("STOCKS_API_KEY", "") + resp = requests.get( + f"http://{Config.STOCKS_API.HOST}:{Config.STOCKS_API.PORT}/stocks/fundamental", + params={"search": ticker, "fields": "HISTORICO DIVIDENDOS"}, # type: ignore[arg-type] + headers={"X-API-Key": key} if key else {}, + timeout=3, + ) + if resp.status_code != 200: + return [] + payload = resp.json()["data"] + if payload and isinstance(payload[0], dict) and "HISTORICO DIVIDENDOS" in payload[0]: + return payload[0]["HISTORICO DIVIDENDOS"] + return payload + except Exception: + return [] + + @classmethod + @walletCache(ttl="6h", key="wallet:closes:{ticker}") + def fetchPadraoCloses(cls, ticker: str) -> list[tuple[dateType, float]]: + try: + key = os.getenv("STOCKS_API_KEY", "") + resp = requests.get( + f"http://{Config.STOCKS_API.HOST}:{Config.STOCKS_API.PORT}/stocks/cotations", + params={"search": ticker}, + headers={"X-API-Key": key} if key else {}, + timeout=3, + ) + if resp.status_code != 200: + return [] + parsedCloses: list[tuple[dateType, float]] = [] + for closeRow in resp.json()["data"]: + try: + parsedCloses.append( + (datetime.strptime(closeRow["DATA"], "%d-%m-%Y").date(), float(closeRow["PRECO"])) + ) + except Exception: + continue + parsedCloses.sort(key=lambda closeItem: closeItem[0]) + return parsedCloses + except Exception: + return [] diff --git a/main/app/wallet/performance.py b/main/app/wallet/performance.py new file mode 100644 index 00000000..20c91e9c --- /dev/null +++ b/main/app/wallet/performance.py @@ -0,0 +1,186 @@ +import logging +from datetime import date as dateType +from math import sqrt +from statistics import stdev +from types import SimpleNamespace + +from cashews import cache as cashewsCache +from sqlalchemy.orm import Session + +from main.app.stocks_api.sync_cache import cache as walletCache +from main.app.wallet.entries import EntriesManager +from main.app.wallet.market_data import MarketDataManager +from main.app.wallet.wallets import WalletsManager +from main.models.wallet import Earning, Transaction + +logger = logging.getLogger(__name__) + +cashewsCache.setup("mem://") + +PERFORMANCE_EPOCH = "1970-01-01T00:00:00" + + +class PerformanceManager: + @classmethod + @walletCache( + ttl="6h", + key="wallet:performance:{walletId}:{tickerKey}:{fromIso}:{toIso}:{recalcKey}:{entriesSnap}:{earningsSnap}", + ) + def cachedPerformance( + cls, + walletId: int, + tickerKey: str, + fromIso: str, + toIso: str, + recalcKey: str, + entriesSnap: tuple[tuple[str, str, str, float, float, float, int], ...], + earningsSnap: tuple[tuple[str, str, float, float], ...], + ) -> dict: + del recalcKey + + if tickerKey: + tickers = [tickerKey] + else: + universe = {entryTicker for entryTicker, _, _, _, _, _, _ in entriesSnap} + universe.update(earnTicker for earnTicker, _, _, _ in earningsSnap) + tickers = sorted(universe) + + perTickerDays: dict[str, dict[str, tuple[float, float, float]]] = {} + + dividendsReceived = 0.0 + for ticker in tickers: + for earnTicker, exIso, _, netValue in earningsSnap: + if earnTicker == ticker and fromIso <= exIso <= toIso: + dividendsReceived += netValue + + series = MarketDataManager.fetchPadraoCloses(ticker) + + tickerEntries = [ + (entryIso, entrySide, entryQty, entryPrice, entryCosts) + for entryTicker, entryIso, entrySide, entryQty, entryPrice, entryCosts, _ in entriesSnap + if entryTicker == ticker + ] + + baselineRows = [ + SimpleNamespace(side=entrySide, quantity=entryQty, price=entryPrice, costs=entryCosts) + for entryIso, entrySide, entryQty, entryPrice, entryCosts in tickerEntries + if entryIso < fromIso + ] + + positionQty, positionAvg = EntriesManager.applyEntries(0.0, 0.0, baselineRows) # type: ignore[arg-type] + + entriesByDay: dict[str, list] = {} + for entryIso, entrySide, entryQty, entryPrice, entryCosts in tickerEntries: + if fromIso <= entryIso <= toIso: + entriesByDay.setdefault(entryIso, []).append( + SimpleNamespace(side=entrySide, quantity=entryQty, price=entryPrice, costs=entryCosts) + ) + + closeByIso = { + closeDay.isoformat(): closePrice + for closeDay, closePrice in series + if fromIso <= closeDay.isoformat() <= toIso + } + + windowDays = sorted(closeByIso) + prevClose = None + for seriesDay, seriesClose in series: + if seriesDay.isoformat() < fromIso: + prevClose = seriesClose + else: + break + + dayMap: dict[str, tuple[float, float, float]] = {} + for dayIso in windowDays: + for datedRow in entriesByDay.get(dayIso, []): + positionQty, positionAvg = EntriesManager.applyEntries(positionQty, positionAvg, [datedRow]) # type: ignore[arg-type] + dayClose = closeByIso[dayIso] + + if positionQty > 0 and prevClose: + priceDay = (dayClose - prevClose) / prevClose + dividendYield = 0.0 + + for earnTicker, exIso, grossValue, _ in earningsSnap: + if earnTicker == ticker and exIso == dayIso: + dividendYield += (grossValue / positionQty) / prevClose + dayMap[dayIso] = (priceDay + dividendYield, priceDay, positionQty * prevClose) + + prevClose = dayClose + perTickerDays[ticker] = dayMap + + allDays = sorted({dayIso for dayMap in perTickerDays.values() for dayIso in dayMap}) + + dailyTotal: list[float] = [] + dailyPrice: list[float] = [] + for dayIso in allDays: + weightTotal = sum(dayMap[dayIso][2] for dayMap in perTickerDays.values() if dayIso in dayMap) + if weightTotal > 0: + dailyTotal.append( + sum(dayMap[dayIso][0] * dayMap[dayIso][2] for dayMap in perTickerDays.values() if dayIso in dayMap) + / weightTotal + ) + dailyPrice.append( + sum(dayMap[dayIso][1] * dayMap[dayIso][2] for dayMap in perTickerDays.values() if dayIso in dayMap) + / weightTotal + ) + + twrValue = 1.0 + for dayReturn in dailyTotal: + twrValue *= 1 + dayReturn + + twrValue -= 1 + priceValue = 1.0 + for priceDay in dailyPrice: + priceValue *= 1 + priceDay + + priceValue -= 1 + spanDays = (dateType.fromisoformat(toIso) - dateType.fromisoformat(fromIso)).days + if spanDays <= 0: + annualizedValue = 0.0 + else: + annualizedValue = (1 + twrValue) ** (365 / spanDays) - 1 + + volatilityValue = stdev(dailyTotal) * sqrt(252) if len(dailyTotal) >= 2 else 0.0 + + return { + "twr": twrValue, + "twr_annualized": annualizedValue, + "volatility": volatilityValue, + "dividends_received": dividendsReceived, + "price_return": priceValue, + } + + @classmethod + def getPerformance( + cls, db: Session, walletId: int, userId: int, ticker: str | None, startDate: dateType, endDate: dateType + ) -> dict: + wallet = WalletsManager.getWallet(db, walletId, userId) + recalcStamp = wallet.lastRecalc + recalcKey = str(recalcStamp) if recalcStamp is not None else PERFORMANCE_EPOCH + ledgerQuery = db.query(Transaction).filter(Transaction.walletId == walletId) + if ticker: + ledgerQuery = ledgerQuery.filter(Transaction.ticker == ticker) + ledgerRows = ledgerQuery.order_by(Transaction.date, Transaction.entryId).all() + entriesSnap = tuple( + ( + str(ledgerRow.ticker), + str(ledgerRow.date), + str(ledgerRow.side), + float(ledgerRow.quantity), + float(ledgerRow.price), + float(ledgerRow.costs), + int(ledgerRow.entryId), + ) + for ledgerRow in ledgerRows + ) + earningQuery = db.query(Earning).filter(Earning.walletId == walletId) + if ticker: + earningQuery = earningQuery.filter(Earning.ticker == ticker) + earningRows = earningQuery.all() + earningsSnap = tuple( + (str(earningRow.ticker), str(earningRow.exDate), float(earningRow.gross), float(earningRow.netIrAdjusted)) + for earningRow in earningRows + ) + return cls.cachedPerformance( + walletId, ticker or "", startDate.isoformat(), endDate.isoformat(), recalcKey, entriesSnap, earningsSnap + ) diff --git a/main/app/wallet/positions.py b/main/app/wallet/positions.py new file mode 100644 index 00000000..ffa8469a --- /dev/null +++ b/main/app/wallet/positions.py @@ -0,0 +1,166 @@ +import logging +import os + +import requests +from cashews import cache as cashewsCache +from sqlalchemy.orm import Session + +from config import Config +from main.app.stocks_api.sync_cache import cache as walletCache +from main.app.wallet.market_data import MarketDataManager +from main.app.wallet.wallets import WalletsManager +from main.models.wallet import Holding, Target + +logger = logging.getLogger(__name__) + +cashewsCache.setup("mem://") + + +class PositionsManager: + @classmethod + @walletCache(ttl="6h", key="wallet:xango:{tickers}") + def fetchXangoScores(cls, tickers: tuple[str, ...]) -> dict[str, float | None]: + scores: dict[str, float | None] = {} + for ticker in tickers: + try: + key = os.getenv("STOCKS_API_KEY", "") + resp = requests.get( + f"http://{Config.STOCKS_API.HOST}:{Config.STOCKS_API.PORT}/stocks/fundamental", + params={"search": ticker, "fields": "XANGO INVESTING SCORE", "compact": False}, # type: ignore[arg-type] + headers={"X-API-Key": key} if key else {}, + timeout=3, + ) + if resp.status_code != 200: + scores[ticker] = None + continue + payload = resp.json()["data"] + row = payload[0] if payload else None + if isinstance(row, dict) and "XANGO INVESTING SCORE" in row: + scores[ticker] = float(row["XANGO INVESTING SCORE"]) + else: + scores[ticker] = None + except Exception: + scores[ticker] = None + return scores + + @classmethod + def weightOf(cls, holding: Holding) -> float: + return float(holding.rating) if holding.rating is not None else 0.0 + + @classmethod + def pricePass( + cls, db: Session, walletId: int, userId: int + ) -> tuple[list[Holding], dict[str, float | None], dict[str, float | None], float]: + WalletsManager.getWallet(db, walletId, userId) + holdings = db.query(Holding).filter(Holding.walletId == walletId).all() + + tickers = [str(holding.ticker) for holding in holdings] + prices = MarketDataManager.fetchLivePrices(tickers) + for ticker, price in list(prices.items()): + if price is None: + closes = MarketDataManager.fetchPadraoCloses(ticker) + prices[ticker] = closes[-1][1] if closes else None + + equities: dict[str, float | None] = {} + for holding in holdings: + price = prices.get(str(holding.ticker)) + equities[str(holding.ticker)] = float(holding.quantity) * price if price is not None else None + + equityTotal = sum(equity for equity in equities.values() if equity is not None) + return holdings, prices, equities, equityTotal + + @classmethod + def rebalanceDeltas( + cls, holdings: list[Holding], equities: dict[str, float | None], equityTotal: float + ) -> dict[str, float | None]: + weightTotal = sum(cls.weightOf(holding) for holding in holdings) + deltas: dict[str, float | None] = {} + for holding in holdings: + ticker = str(holding.ticker) + equity = equities.get(ticker) + if not weightTotal or equity is None: + deltas[ticker] = None + else: + deltas[ticker] = cls.weightOf(holding) / weightTotal * equityTotal - equity + return deltas + + @classmethod + def getPositions(cls, db: Session, walletId: int, userId: int) -> dict: + holdings, prices, equities, equityTotal = cls.pricePass(db, walletId, userId) + deltas = cls.rebalanceDeltas(holdings, equities, equityTotal) + + items = [] + for holding in holdings: + holdingQuantity = float(holding.quantity) + holdingAvg = float(holding.avgPrice) + price = prices.get(str(holding.ticker)) + equity = equities[str(holding.ticker)] + + if price is None or equity is None: + currentPrice = None + equityValue = None + appreciation = None + else: + currentPrice = price + equityValue = equity + appreciation = equity - holdingQuantity * holdingAvg + + percentWallet = (equity / equityTotal) if equity is not None and equityTotal else 0 + target = ( + db.query(Target) + .filter(Target.walletId == walletId, Target.keyKind == "ticker", Target.keyValue == holding.ticker) + .first() + ) + percentIdeal = float(target.percentIdeal) if target is not None else None + delta = deltas[str(holding.ticker)] + buyFlag = delta is not None and delta > 0 + items.append( + { + "ticker": holding.ticker, + "quantity": holdingQuantity, + "avgPrice": holdingAvg, + "current_price": currentPrice, + "equity": equityValue, + "appreciation": appreciation, + "percent_wallet": percentWallet, + "percent_ideal": percentIdeal, + "buy_flag": buyFlag, + } + ) + return {"items": items, "equity_total": equityTotal} + + @classmethod + def getRebalance(cls, db: Session, walletId: int, userId: int) -> dict: + holdings, prices, equities, equityTotal = cls.pricePass(db, walletId, userId) + deltas = cls.rebalanceDeltas(holdings, equities, equityTotal) + weightTotal = sum(cls.weightOf(holding) for holding in holdings) + + items = [] + for holding in holdings: + ticker = str(holding.ticker) + weight = cls.weightOf(holding) + targetPct = (weight / weightTotal) if weightTotal else 0.0 + equity = equities[ticker] + currentPct = (equity / equityTotal) if equity is not None and equityTotal else 0.0 + delta = deltas[ticker] + price = prices.get(ticker) + if delta is None or price is None: + deltaEquity = None + deltaQty = None + side = "hold" + else: + deltaEquity = delta + deltaQty = delta / price + side = "buy" if delta > 0 else "sell" if delta < 0 else "hold" + items.append( + { + "ticker": holding.ticker, + "weight": weight, + "target_pct": targetPct, + "current_pct": currentPct, + "delta_equity": deltaEquity, + "delta_qty": deltaQty, + "side": side, + } + ) + return {"items": items, "equity_total": equityTotal} diff --git a/main/app/wallet/summary.py b/main/app/wallet/summary.py new file mode 100644 index 00000000..764be7cb --- /dev/null +++ b/main/app/wallet/summary.py @@ -0,0 +1,166 @@ +import logging +from datetime import date as dateType +from datetime import datetime +from typing import Literal + +from fastapi import HTTPException +from pydantic import BaseModel, Field +from sqlalchemy.orm import Session + +from main.app.wallet.market_data import MarketDataManager +from main.app.wallet.wallets import WalletsManager +from main.models.wallet import Holding, Snapshot, Target + +logger = logging.getLogger(__name__) + + +class TargetUpsert(BaseModel): + wallet_id: int + key_kind: Literal["ticker", "group"] + key_value: str + percent_ideal: float = Field(ge=0, le=100) + + +class RatingUpsert(BaseModel): + wallet_id: int + ticker: str + rating: float = Field(ge=0, le=100) + + +class SummaryManager: + @classmethod + def getSummary(cls, db: Session, walletId: int, userId: int) -> dict: + wallet = WalletsManager.getWallet(db, walletId, userId) + holdings = db.query(Holding).filter(Holding.walletId == walletId).all() + applied = sum(float(holding.quantity) * float(holding.avgPrice) for holding in holdings) + tickers = [str(holding.ticker) for holding in holdings] + prices = MarketDataManager.fetchLivePrices(tickers) + + for ticker, price in list(prices.items()): + if price is None: + closes = MarketDataManager.fetchPadraoCloses(ticker) + prices[ticker] = closes[-1][1] if closes else None + + equity = 0.0 + for holding in holdings: + price = prices.get(str(holding.ticker)) + if price is not None: + equity += float(holding.quantity) * price + variation = equity - applied + + today = dateType.today() + + snapshot = db.query(Snapshot).filter(Snapshot.walletId == walletId, Snapshot.date == today).first() + if snapshot is None: + snapshot = Snapshot( + walletId=walletId, + date=today, + applied=applied, + equity=equity, + variation=variation, + profitTwr=None, + profitAmount=variation, + profitTwr12m=None, + profitTwr12mAmount=variation, + ) + db.add(snapshot) + else: + snapshot.applied = applied # type: ignore[assignment] + snapshot.equity = equity # type: ignore[assignment] + snapshot.variation = variation # type: ignore[assignment] + snapshot.profitTwr = None # type: ignore[assignment] + snapshot.profitAmount = variation # type: ignore[assignment] + snapshot.profitTwr12m = None # type: ignore[assignment] + snapshot.profitTwr12mAmount = variation # type: ignore[assignment] + + wallet.lastRecalc = datetime.now() + + db.commit() + + return { + "applied": applied, + "equity": equity, + "variation": variation, + "profit_twr": None, + "profit_amount": variation, + "profit_twr_12m": None, + "profit_twr_12m_amount": variation, + } + + @classmethod + def getAllocation(cls, db: Session, walletId: int, userId: int, groupBy: str) -> dict: + WalletsManager.getWallet(db, walletId, userId) + holdings = db.query(Holding).filter(Holding.walletId == walletId).all() + + tickers = [str(holding.ticker) for holding in holdings] + prices = MarketDataManager.fetchLivePrices(tickers) + for ticker, price in list(prices.items()): + if price is None: + closes = MarketDataManager.fetchPadraoCloses(ticker) + prices[ticker] = closes[-1][1] if closes else None + + groupEquity: dict[str, float] = {} + for holding in holdings: + price = prices.get(str(holding.ticker)) + holdingEquity = float(holding.quantity) * price if price is not None else 0.0 + groupKey = str(holding.ticker) if groupBy == "ticker" else str(holding.assetType) + groupEquity[groupKey] = groupEquity.get(groupKey, 0.0) + holdingEquity + + equityTotal = sum(groupEquity.values()) + items = [ + { + "key": groupKey, + "equity": groupValue, + "pct": (groupValue / equityTotal) if equityTotal else 0, + } + for groupKey, groupValue in groupEquity.items() + ] + + return {"items": items, "equity_total": equityTotal} + + @classmethod + def upsertTarget(cls, db: Session, userId: int, data: TargetUpsert) -> Target: + WalletsManager.getWallet(db, data.wallet_id, userId) + target = ( + db.query(Target) + .filter( + Target.walletId == data.wallet_id, + Target.keyKind == data.key_kind, + Target.keyValue == data.key_value, + ) + .first() + ) + + if target is None: + target = Target( + walletId=data.wallet_id, + keyKind=data.key_kind, + keyValue=data.key_value, + percentIdeal=data.percent_ideal, + ) + db.add(target) + else: + target.percentIdeal = data.percent_ideal # type: ignore[assignment] + + db.commit() + db.refresh(target) + + return target + + @classmethod + def set_rating(cls, db: Session, userId: int, data: RatingUpsert) -> Holding: + WalletsManager.getWallet(db, data.wallet_id, userId) + holding = db.query(Holding).filter(Holding.walletId == data.wallet_id, Holding.ticker == data.ticker).first() + + if holding is None: + raise HTTPException(status_code=404, detail="holding not found") + + holding.rating = data.rating # type: ignore[assignment] + + db.commit() + db.refresh(holding) + + return holding + + +set_rating = SummaryManager.set_rating diff --git a/main/app/wallet/wallets.py b/main/app/wallet/wallets.py new file mode 100644 index 00000000..7f5eb312 --- /dev/null +++ b/main/app/wallet/wallets.py @@ -0,0 +1,29 @@ +import logging + +from fastapi import HTTPException +from sqlalchemy.orm import Session + +from main.models.wallet import Wallet + +logger = logging.getLogger(__name__) + + +class WalletsManager: + @classmethod + def getWallet(cls, db: Session, walletId: int, userId: int): + wallet = db.query(Wallet).filter(Wallet.walletId == walletId, Wallet.userId == userId).first() + if wallet is None: + raise HTTPException(status_code=404, detail="wallet not found") + return wallet + + @classmethod + def createWallet(cls, db: Session, userId: int, name: str) -> Wallet: + wallet = Wallet(userId=userId, name=name) + db.add(wallet) + db.commit() + db.refresh(wallet) + return wallet + + @classmethod + def listWallets(cls, db: Session, userId: int) -> list[Wallet]: + return db.query(Wallet).filter(Wallet.userId == userId).all() diff --git a/main/controller/wallet_controller.py b/main/controller/wallet_controller.py new file mode 100644 index 00000000..a56c9447 --- /dev/null +++ b/main/controller/wallet_controller.py @@ -0,0 +1,222 @@ +import logging +from datetime import date as dateType + +from fastapi import APIRouter, Depends, HTTPException, Query +from fastapi.responses import ORJSONResponse +from pydantic import BaseModel +from sqlalchemy.orm import Session +from typing import Literal + +from config import getSession +from main.app.wallet import summary # pinned: set_rating_route handler calls summary.set_rating (digest test) +from main.app.wallet.earnings import EarningsManager +from main.app.wallet.entries import EntriesManager, EntryCreate, EntryUpdate +from main.app.wallet.performance import PerformanceManager +from main.app.wallet.positions import PositionsManager +from main.app.wallet.summary import RatingUpsert, SummaryManager, TargetUpsert +from main.app.wallet.wallets import WalletsManager + +logger = logging.getLogger(__name__) + +router = APIRouter(prefix="/wallet", tags=["wallet"]) + + +class WalletCreate(BaseModel): + name: str + + +@router.post("/wallets", response_class=ORJSONResponse, status_code=201) +def create_wallet_route( + payload: WalletCreate, + userId: int, + db: Session = Depends(getSession), +): + wallet = WalletsManager.createWallet(db, userId, payload.name) + return {"walletId": wallet.walletId, "name": wallet.name} + + +@router.get("/wallets", response_class=ORJSONResponse) +def list_wallets_route( + userId: int, + db: Session = Depends(getSession), +): + return [ + {"walletId": walletItem.walletId, "name": walletItem.name, "lastRecalc": walletItem.lastRecalc} + for walletItem in WalletsManager.listWallets(db, userId) + ] + + +def serialize_holding(holding) -> dict | None: + if holding is None: + return None + return {"ticker": holding.ticker, "quantity": float(holding.quantity), "avgPrice": float(holding.avgPrice)} + + +def serialize_entry(entry) -> dict: + return { + "entryId": entry.entryId, + "wallet_id": entry.walletId, + "side": entry.side, + "asset_type": entry.assetType, + "ticker": entry.ticker, + "date": entry.date.isoformat(), + "quantity": float(entry.quantity), + "price": float(entry.price), + "costs": float(entry.costs), + } + + +@router.post("/entries", response_class=ORJSONResponse, status_code=201) +def create_entry_route( + payload: EntryCreate, + userId: int, + db: Session = Depends(getSession), +): + entry, holding = EntriesManager.addEntry(db, userId, payload) + return {"entryId": entry.entryId, "holding": serialize_holding(holding)} + + +@router.get("/entries", response_class=ORJSONResponse) +def list_entries_route( + wallet_id: int, + ticker: str | None = None, + limit: int = Query(default=20, ge=1, le=100), + offset: int = Query(default=0, ge=0), + userId: int = Query(), + db: Session = Depends(getSession), +): + total, items = EntriesManager.listEntries(db, userId, wallet_id, ticker, limit, offset) + return {"total": total, "items": [serialize_entry(item) for item in items]} + + +@router.patch("/entries/{entryId}", response_class=ORJSONResponse) +def update_entry_route( + entryId: int, + payload: EntryUpdate, + userId: int, + db: Session = Depends(getSession), +): + entry, holding = EntriesManager.updateEntry(db, userId, entryId, payload) + return {"entryId": entry.entryId, "holding": serialize_holding(holding)} + + +@router.delete("/entries/{entryId}", response_class=ORJSONResponse) +def delete_entry_route( + entryId: int, + userId: int, + db: Session = Depends(getSession), +): + deletedId, holding = EntriesManager.deleteEntry(db, userId, entryId) + return {"entryId": deletedId, "holding": serialize_holding(holding)} + + +@router.get("/positions", response_class=ORJSONResponse) +def list_positions_route( + wallet_id: int, + userId: int, + db: Session = Depends(getSession), +): + return PositionsManager.getPositions(db, wallet_id, userId) + + +@router.get("/rebalance", response_class=ORJSONResponse) +def get_rebalance_route( + wallet_id: int, + userId: int, + db: Session = Depends(getSession), +): + return PositionsManager.getRebalance(db, wallet_id, userId) + + +@router.get("/summary", response_class=ORJSONResponse) +def get_summary_route( + wallet_id: int, + userId: int, + db: Session = Depends(getSession), +): + return SummaryManager.getSummary(db, wallet_id, userId) + + +@router.get("/allocation", response_class=ORJSONResponse) +def get_allocation_route( + wallet_id: int, + group_by: Literal["ticker", "type"] = Query(default="ticker"), + userId: int = Query(), + db: Session = Depends(getSession), +): + return SummaryManager.getAllocation(db, wallet_id, userId, group_by) + + +@router.put("/targets", response_class=ORJSONResponse) +def upsert_target_route( + payload: TargetUpsert, + userId: int, + db: Session = Depends(getSession), +): + target = SummaryManager.upsertTarget(db, userId, payload) + return { + "wallet_id": target.walletId, + "key_kind": target.keyKind, + "key_value": target.keyValue, + "percent_ideal": float(target.percentIdeal), + } + + +@router.put("/ratings", response_class=ORJSONResponse) +def set_rating_route( + payload: RatingUpsert, + userId: int, + db: Session = Depends(getSession), +): + holding = summary.set_rating(db, userId, payload) + return {"ticker": holding.ticker, "rating": holding.rating} + + +class EarningsSync(BaseModel): + wallet_id: int + + +def serialize_earning(earning) -> dict: + return { + "ticker": earning.ticker, + "kind": earning.kind, + "gross": float(earning.gross), + "net_ir_adjusted": float(earning.netIrAdjusted), + "status": earning.status, + } + + +@router.get("/earnings", response_class=ORJSONResponse) +def list_earnings_route( + wallet_id: int, + status: str | None = None, + userId: int = Query(), + db: Session = Depends(getSession), +): + return {"items": [serialize_earning(item) for item in EarningsManager.listEarnings(db, wallet_id, userId, status)]} + + +@router.post("/earnings/sync", response_class=ORJSONResponse) +def sync_earnings_route( + payload: EarningsSync, + userId: int, + db: Session = Depends(getSession), +): + return EarningsManager.syncEarnings(db, payload.wallet_id, userId) + + +@router.get("/performance", response_class=ORJSONResponse) +def get_performance_route( + wallet_id: int, + ticker: str | None = None, + fromIso: str = Query(alias="from"), + toIso: str = Query(alias="to"), + userId: int = Query(), + db: Session = Depends(getSession), +): + try: + startDate = dateType.fromisoformat(fromIso) + endDate = dateType.fromisoformat(toIso) + except ValueError: + raise HTTPException(status_code=422, detail="invalid date, expected YYYY-MM-DD") + return PerformanceManager.getPerformance(db, wallet_id, userId, ticker, startDate, endDate) diff --git a/main/models/wallet.py b/main/models/wallet.py new file mode 100644 index 00000000..5b3fb57f --- /dev/null +++ b/main/models/wallet.py @@ -0,0 +1,100 @@ +from sqlalchemy import ( + Column, + Date, + Enum, + ForeignKey, + Integer, + Numeric, + SmallInteger, + String, + TIMESTAMP, + UniqueConstraint, + func, +) + +from main.models.base import Base + + +class Wallet(Base): + __tablename__ = "wallets" + + walletId = Column(Integer, primary_key=True, autoincrement=True) + userId = Column(Integer, ForeignKey("users.userId", ondelete="RESTRICT"), nullable=False, index=True) + name = Column(String(120), nullable=False) + lastRecalc = Column(TIMESTAMP, nullable=True) + createdAt = Column(TIMESTAMP, server_default=func.current_timestamp(), nullable=False) + + +class Holding(Base): + __tablename__ = "holdings" + + holdingId = Column(Integer, primary_key=True, autoincrement=True) + walletId = Column(Integer, ForeignKey("wallets.walletId", ondelete="RESTRICT"), nullable=False, index=True) + assetType = Column(String(20), nullable=False) + ticker = Column(String(20), nullable=False, index=True) + quantity = Column(Numeric(18, 8), nullable=False) + avgPrice = Column(Numeric(18, 6), nullable=False) + rating = Column(SmallInteger, nullable=True) + updatedAt = Column(TIMESTAMP, server_default=func.current_timestamp(), nullable=False) + + __table_args__ = (UniqueConstraint("walletId", "ticker", name="uq_holdings_wallet_ticker"),) + + +class Transaction(Base): + __tablename__ = "transactions" + + entryId = Column(Integer, primary_key=True, autoincrement=True) + walletId = Column(Integer, ForeignKey("wallets.walletId", ondelete="RESTRICT"), nullable=False, index=True) + side = Column(Enum("Compra", "Venda", name="entry_side"), nullable=False) # type: ignore[var-annotated] + assetType = Column(String(20), nullable=False) + ticker = Column(String(20), nullable=False, index=True) + date = Column(Date, nullable=False) + quantity = Column(Numeric(18, 8), nullable=False) + price = Column(Numeric(18, 6), nullable=False) + costs = Column(Numeric(18, 2), nullable=False, default=0) + createdAt = Column(TIMESTAMP, server_default=func.current_timestamp(), nullable=False) + + +class Target(Base): + __tablename__ = "targets" + + targetId = Column(Integer, primary_key=True, autoincrement=True) + walletId = Column(Integer, ForeignKey("wallets.walletId", ondelete="RESTRICT"), nullable=False, index=True) + keyKind = Column(Enum("ticker", "group", name="target_key_kind"), nullable=False) # type: ignore[var-annotated] + keyValue = Column(String(40), nullable=False) + percentIdeal = Column(Numeric(5, 2), nullable=False) + + __table_args__ = (UniqueConstraint("walletId", "keyKind", "keyValue", name="uq_targets_wallet_key"),) + + +class Snapshot(Base): + __tablename__ = "snapshots" + + snapshotId = Column(Integer, primary_key=True, autoincrement=True) + walletId = Column(Integer, ForeignKey("wallets.walletId", ondelete="RESTRICT"), nullable=False, index=True) + date = Column(Date, nullable=False, index=True) + applied = Column(Numeric(18, 2), nullable=False) + equity = Column(Numeric(18, 2), nullable=False) + variation = Column(Numeric(18, 2), nullable=False) + profitTwr = Column(Numeric(10, 6), nullable=True) + profitAmount = Column(Numeric(18, 2), nullable=False) + profitTwr12m = Column(Numeric(10, 6), nullable=True) + profitTwr12mAmount = Column(Numeric(18, 2), nullable=False) + + __table_args__ = (UniqueConstraint("walletId", "date", name="uq_snapshots_wallet_date"),) + + +class Earning(Base): + __tablename__ = "earnings" + + earningId = Column(Integer, primary_key=True, autoincrement=True) + walletId = Column(Integer, ForeignKey("wallets.walletId", ondelete="RESTRICT"), nullable=False, index=True) + ticker = Column(String(20), nullable=False, index=True) + kind = Column(Enum("Div", "JSCP", "RendTributado", name="earning_kind"), nullable=False) # type: ignore[var-annotated] + exDate = Column(Date, nullable=False) + payDate = Column(Date, nullable=False) + gross = Column(Numeric(18, 2), nullable=False) + netIrAdjusted = Column(Numeric(18, 2), nullable=False) + status = Column(Enum("A Receber", "Recebido", name="earning_status"), nullable=False, index=True) # type: ignore[var-annotated] + + __table_args__ = (UniqueConstraint("walletId", "ticker", "exDate", "kind", name="uq_earnings_accrual"),) diff --git a/main/service/wallet_service.py b/main/service/wallet_service.py new file mode 100644 index 00000000..1ac7bf69 --- /dev/null +++ b/main/service/wallet_service.py @@ -0,0 +1,13 @@ +import logging + +from main.controller.wallet_controller import router as walletRouter +from main.utils.service_manager import getApp + +logger = logging.getLogger(__name__) + + +class WalletService: + @staticmethod + def initialize(port: int): + service = getApp(port) + service.include_router(walletRouter) diff --git a/main/utils/roles.py b/main/utils/roles.py index 5e7b2e82..975933fd 100644 --- a/main/utils/roles.py +++ b/main/utils/roles.py @@ -9,13 +9,15 @@ class Permission(IntFlag): ORUNMILA_EXTENDED_MEMORIES = auto() + WALLET = auto() + @classmethod def ALL(cls): return sum(cls) class Roles(IntFlag): - USER = Permission.NONE + USER = Permission.WALLET PREMIUM = USER | Permission.USE_ORUNMILA | Permission.ORUNMILA_EXTENDED_MEMORIES diff --git a/migrations/env.py b/migrations/env.py index efe69ba5..7814a629 100644 --- a/migrations/env.py +++ b/migrations/env.py @@ -15,6 +15,8 @@ import main.models.orunmila import main.models.stocksapi_key import main.models.sandbox +import main.models.wallet # noqa: F401 +import main.models.memory # noqa: F401 config = context.config diff --git a/migrations/versions/73211a401c34_wallet_tables.py b/migrations/versions/73211a401c34_wallet_tables.py new file mode 100644 index 00000000..15748d50 --- /dev/null +++ b/migrations/versions/73211a401c34_wallet_tables.py @@ -0,0 +1,120 @@ +"""wallet tables + +Revision ID: 73211a401c34 +Revises: f7a8b9c0d1e2 +Create Date: 2026-09-30 20:38:20.280169 + +""" + +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision: str = "73211a401c34" +down_revision: Union[str, Sequence[str], None] = "f7a8b9c0d1e2" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + """Upgrade schema.""" + # ### commands auto generated by Alembic - please adjust! ### + op.create_table( + "wallets", + sa.Column("walletId", sa.Integer(), autoincrement=True, nullable=False), + sa.Column("userId", sa.Integer(), nullable=False), + sa.Column("name", sa.String(length=120), nullable=False), + sa.Column("lastRecalc", sa.TIMESTAMP(), nullable=True), + sa.Column("createdAt", sa.TIMESTAMP(), server_default=sa.text("(CURRENT_TIMESTAMP)"), nullable=False), + sa.ForeignKeyConstraint(["userId"], ["users.userId"], ondelete="RESTRICT"), + sa.PrimaryKeyConstraint("walletId"), + ) + op.create_index(op.f("ix_wallets_userId"), "wallets", ["userId"], unique=False) + op.create_table( + "holdings", + sa.Column("holdingId", sa.Integer(), autoincrement=True, nullable=False), + sa.Column("walletId", sa.Integer(), nullable=False), + sa.Column("assetType", sa.String(length=20), nullable=False), + sa.Column("ticker", sa.String(length=20), nullable=False), + sa.Column("tickerName", sa.String(length=120), nullable=True), + sa.Column("quantity", sa.Numeric(precision=18, scale=8), nullable=False), + sa.Column("avgPrice", sa.Numeric(precision=18, scale=6), nullable=False), + sa.Column("percentIdeal", sa.Numeric(precision=5, scale=2), nullable=True), + sa.Column("rating", sa.SmallInteger(), nullable=True), + sa.Column("updatedAt", sa.TIMESTAMP(), server_default=sa.text("(CURRENT_TIMESTAMP)"), nullable=False), + sa.ForeignKeyConstraint(["walletId"], ["wallets.walletId"], ondelete="RESTRICT"), + sa.PrimaryKeyConstraint("holdingId"), + sa.UniqueConstraint("walletId", "ticker", name="uq_holdings_wallet_ticker"), + ) + op.create_index(op.f("ix_holdings_ticker"), "holdings", ["ticker"], unique=False) + op.create_index(op.f("ix_holdings_walletId"), "holdings", ["walletId"], unique=False) + op.create_table( + "snapshots", + sa.Column("snapshotId", sa.Integer(), autoincrement=True, nullable=False), + sa.Column("walletId", sa.Integer(), nullable=False), + sa.Column("date", sa.Date(), nullable=False), + sa.Column("applied", sa.Numeric(precision=18, scale=2), nullable=False), + sa.Column("equity", sa.Numeric(precision=18, scale=2), nullable=False), + sa.Column("variation", sa.Numeric(precision=18, scale=2), nullable=False), + sa.Column("profitTwr", sa.Numeric(precision=10, scale=6), nullable=True), + sa.Column("profitAmount", sa.Numeric(precision=18, scale=2), nullable=False), + sa.Column("profitTwr12m", sa.Numeric(precision=10, scale=6), nullable=True), + sa.Column("profitTwr12mAmount", sa.Numeric(precision=18, scale=2), nullable=False), + sa.ForeignKeyConstraint(["walletId"], ["wallets.walletId"], ondelete="RESTRICT"), + sa.PrimaryKeyConstraint("snapshotId"), + sa.UniqueConstraint("walletId", "date", name="uq_snapshots_wallet_date"), + ) + op.create_index(op.f("ix_snapshots_date"), "snapshots", ["date"], unique=False) + op.create_index(op.f("ix_snapshots_walletId"), "snapshots", ["walletId"], unique=False) + op.create_table( + "targets", + sa.Column("targetId", sa.Integer(), autoincrement=True, nullable=False), + sa.Column("walletId", sa.Integer(), nullable=False), + sa.Column("keyKind", sa.Enum("ticker", "group", name="target_key_kind"), nullable=False), + sa.Column("keyValue", sa.String(length=40), nullable=False), + sa.Column("percentIdeal", sa.Numeric(precision=5, scale=2), nullable=False), + sa.ForeignKeyConstraint(["walletId"], ["wallets.walletId"], ondelete="RESTRICT"), + sa.PrimaryKeyConstraint("targetId"), + sa.UniqueConstraint("walletId", "keyKind", "keyValue", name="uq_targets_wallet_key"), + ) + op.create_index(op.f("ix_targets_walletId"), "targets", ["walletId"], unique=False) + op.create_table( + "transactions", + sa.Column("entryId", sa.Integer(), autoincrement=True, nullable=False), + sa.Column("walletId", sa.Integer(), nullable=False), + sa.Column("side", sa.Enum("Compra", "Venda", name="entry_side"), nullable=False), + sa.Column("assetType", sa.String(length=20), nullable=False), + sa.Column("ticker", sa.String(length=20), nullable=False), + sa.Column("date", sa.Date(), nullable=False), + sa.Column("quantity", sa.Numeric(precision=18, scale=8), nullable=False), + sa.Column("price", sa.Numeric(precision=18, scale=6), nullable=False), + sa.Column("costs", sa.Numeric(precision=18, scale=2), nullable=False), + sa.Column("createdAt", sa.TIMESTAMP(), server_default=sa.text("(CURRENT_TIMESTAMP)"), nullable=False), + sa.ForeignKeyConstraint(["walletId"], ["wallets.walletId"], ondelete="RESTRICT"), + sa.PrimaryKeyConstraint("entryId"), + ) + op.create_index(op.f("ix_transactions_ticker"), "transactions", ["ticker"], unique=False) + op.create_index(op.f("ix_transactions_walletId"), "transactions", ["walletId"], unique=False) + # ### end Alembic commands ### + + +def downgrade() -> None: + """Downgrade schema.""" + # ### commands auto generated by Alembic - please adjust! ### + op.drop_index(op.f("ix_transactions_walletId"), table_name="transactions") + op.drop_index(op.f("ix_transactions_ticker"), table_name="transactions") + op.drop_table("transactions") + op.drop_index(op.f("ix_targets_walletId"), table_name="targets") + op.drop_table("targets") + op.drop_index(op.f("ix_snapshots_walletId"), table_name="snapshots") + op.drop_index(op.f("ix_snapshots_date"), table_name="snapshots") + op.drop_table("snapshots") + op.drop_index(op.f("ix_holdings_walletId"), table_name="holdings") + op.drop_index(op.f("ix_holdings_ticker"), table_name="holdings") + op.drop_table("holdings") + op.drop_index(op.f("ix_wallets_userId"), table_name="wallets") + op.drop_table("wallets") + # ### end Alembic commands ### diff --git a/migrations/versions/c4d1e8f2a917_wallet_earnings.py b/migrations/versions/c4d1e8f2a917_wallet_earnings.py new file mode 100644 index 00000000..73768920 --- /dev/null +++ b/migrations/versions/c4d1e8f2a917_wallet_earnings.py @@ -0,0 +1,58 @@ +"""wallet earnings + +Revision ID: c4d1e8f2a917 +Revises: 73211a401c34 +Create Date: 2026-09-30 21:40:00.000000 + +Hand-written (autogenerate drifts on this dev DB: orphan Sep-04 tables +wallet_lots/wallet_dividends/prometheus_*/wallet_holdings emit 29 drops; +app DB user lacks CREATE DATABASE so no scaffold DB possible). +Content mirrors autogenerate style of 73211a401c34 exactly: +single create_table(earnings), zero drops. +""" + +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision: str = "c4d1e8f2a917" +down_revision: Union[str, Sequence[str], None] = "73211a401c34" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + """Upgrade schema.""" + # ### commands auto generated by Alembic - please adjust! ### + op.create_table( + "earnings", + sa.Column("earningId", sa.Integer(), autoincrement=True, nullable=False), + sa.Column("walletId", sa.Integer(), nullable=False), + sa.Column("ticker", sa.String(length=20), nullable=False), + sa.Column("kind", sa.Enum("Div", "JSCP", "RendTributado", name="earning_kind"), nullable=False), + sa.Column("exDate", sa.Date(), nullable=False), + sa.Column("payDate", sa.Date(), nullable=False), + sa.Column("gross", sa.Numeric(precision=18, scale=2), nullable=False), + sa.Column("netIrAdjusted", sa.Numeric(precision=18, scale=2), nullable=False), + sa.Column("status", sa.Enum("A Receber", "Recebido", name="earning_status"), nullable=False), + sa.ForeignKeyConstraint(["walletId"], ["wallets.walletId"], ondelete="RESTRICT"), + sa.PrimaryKeyConstraint("earningId"), + sa.UniqueConstraint("walletId", "ticker", "exDate", "kind", name="uq_earnings_accrual"), + ) + op.create_index(op.f("ix_earnings_status"), "earnings", ["status"], unique=False) + op.create_index(op.f("ix_earnings_ticker"), "earnings", ["ticker"], unique=False) + op.create_index(op.f("ix_earnings_walletId"), "earnings", ["walletId"], unique=False) + # ### end Alembic commands ### + + +def downgrade() -> None: + """Downgrade schema.""" + # ### commands auto generated by Alembic - please adjust! ### + op.drop_index(op.f("ix_earnings_walletId"), table_name="earnings") + op.drop_index(op.f("ix_earnings_ticker"), table_name="earnings") + op.drop_index(op.f("ix_earnings_status"), table_name="earnings") + op.drop_table("earnings") + # ### end Alembic commands ### diff --git a/migrations/versions/d4e5f6a7b8c9_drop_dead_holding_columns.py b/migrations/versions/d4e5f6a7b8c9_drop_dead_holding_columns.py new file mode 100644 index 00000000..396289ce --- /dev/null +++ b/migrations/versions/d4e5f6a7b8c9_drop_dead_holding_columns.py @@ -0,0 +1,37 @@ +"""drop dead holding columns + +Revision ID: d4e5f6a7b8c9 +Revises: c4d1e8f2a917 +Create Date: 2026-10-01 00:00:00.000000 + +Holding.percentIdeal (targets live in Target) + Holding.tickerName +(never populated) removed from main/models/wallet.py. +""" + +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision: str = "d4e5f6a7b8c9" +down_revision: Union[str, Sequence[str], None] = "c4d1e8f2a917" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + """Upgrade schema.""" + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column("holdings", "percentIdeal") + op.drop_column("holdings", "tickerName") + # ### end Alembic commands ### + + +def downgrade() -> None: + """Downgrade schema.""" + # ### commands auto generated by Alembic - please adjust! ### + op.add_column("holdings", sa.Column("tickerName", sa.String(length=120), nullable=True)) + op.add_column("holdings", sa.Column("percentIdeal", sa.Numeric(precision=5, scale=2), nullable=True)) + # ### end Alembic commands ### diff --git a/run.py b/run.py index ecf13e99..7953c60d 100644 --- a/run.py +++ b/run.py @@ -16,6 +16,7 @@ from main.service.authentication_service import AuthenticationService from main.service.user_service import UserService +from main.service.wallet_service import WalletService from main.service.orunmila_service import OrunmilaService from main.service.scraper_service import ScraperService, runScraper from main.service.stocksapi_service import StocksAPIService @@ -44,7 +45,15 @@ async def lifespan(app: FastAPI): runMigrations() services = [ - ("USER", Config.USER, lambda port: (AuthenticationService.initialize(port), UserService.initialize(port))), + ( + "USER", + Config.USER, + lambda port: ( + AuthenticationService.initialize(port), + UserService.initialize(port), + WalletService.initialize(port), + ), + ), ("STOCKS_API", Config.STOCKS_API, StocksAPIService.initialize), ("ORUNMILA", Config.ORUNMILA, OrunmilaService.initialize), ] @@ -86,6 +95,7 @@ async def status(): services = {} for name, config in [ ("user", Config.USER), + ("wallet", Config.USER), ("stocks_api", Config.STOCKS_API), ("orunmila", Config.ORUNMILA), ]: diff --git a/tests/conftest.py b/tests/conftest.py index c2911859..d2031dc0 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -305,3 +305,35 @@ def make_stocksapi_client(mock_api_key=None): app.dependency_overrides[verifyAPIKey] = lambda: mock_api_key return TestClient(app, raise_server_exceptions=False), app, mock_session + + +def make_wallet_client(mock_identity=None, db=None): + """Return (client, app) with wallet router and mocked deps.""" + from fastapi.testclient import TestClient as WalletTestClient + from fastapi import Request + from starlette.middleware.base import BaseHTTPMiddleware + from main.controller.wallet_controller import router as walletRouter + from main.utils.errors import registerErrorHandlers + from unittest.mock import MagicMock + import main.models.wallet # noqa: F401 + + app = FastAPI() + app.include_router(walletRouter) + registerErrorHandlers(app) + + session = db if db is not None else MagicMock() + app.dependency_overrides[__import__("config", fromlist=["getSession"]).getSession] = lambda: session + + identity = mock_identity or {"userId": 1, "username": "testuser", "roles": ["USER"]} + callerId = int(identity.get("userId", 1)) + + class CallerMiddleware(BaseHTTPMiddleware): + async def dispatch(self, request: Request, call_next): + if "userId" not in request.query_params: + url = str(request.url.include_query_params(userId=callerId)) + request.scope["query_string"] = url.split("?", 1)[1].encode() + return await call_next(request) + + app.add_middleware(CallerMiddleware) + + return WalletTestClient(app, raise_server_exceptions=False), app, session diff --git a/tests/test_memory_async_loop.py b/tests/test_memory_async_loop.py index 4311d970..08d47a3d 100644 --- a/tests/test_memory_async_loop.py +++ b/tests/test_memory_async_loop.py @@ -4,7 +4,7 @@ import pytest import main.app.orunmila.memory as memoryMod -import main.app.orunmila.tools as toolsMod +import main.app.orunmila.tools.memory as toolsMemoryMod from main.app.orunmila.memory import OrunmilaMemory, clearAll, getMatrix from main.app.orunmila.tools import save_memory, search_memory @@ -71,7 +71,7 @@ async def test_saveMemoryToolInsideLoop(self, dbSession, monkeypatch): # clearAll() is sync and drives the cache via asyncio.run — run it in a # worker thread since this test itself runs inside an event loop. await asyncio.to_thread(clearAll) - monkeypatch.setattr(toolsMod, "embed", lambda texts: [makeQueryVector() for _ in texts]) + monkeypatch.setattr(toolsMemoryMod, "embed", lambda texts: [makeQueryVector() for _ in texts]) monkeypatch.setattr(memoryMod, "embed", lambda texts: [makeQueryVector() for _ in texts]) saved = await save_memory( "ticker favorito", diff --git a/tests/test_orunmila_tools.py b/tests/test_orunmila_tools.py index 53751ffa..5df7e518 100644 --- a/tests/test_orunmila_tools.py +++ b/tests/test_orunmila_tools.py @@ -115,7 +115,7 @@ class TestServeFile: async def test_serve_file_returns_markdown_link(self): from main.app.orunmila.tools import serve_file - with patch("main.app.orunmila.tools.hostPath") as m_host: + with patch("main.app.orunmila.tools.sandbox.hostPath") as m_host: fake_path = MagicMock() fake_path.exists.return_value = True fake_path.is_file.return_value = True @@ -130,7 +130,7 @@ async def test_serve_file_returns_markdown_link(self): async def test_serve_file_missing_file_returns_error(self): from main.app.orunmila.tools import serve_file - with patch("main.app.orunmila.tools.hostPath") as m_host: + with patch("main.app.orunmila.tools.sandbox.hostPath") as m_host: fake_path = MagicMock() fake_path.exists.return_value = False m_host.return_value = fake_path @@ -142,7 +142,7 @@ async def test_serve_file_missing_file_returns_error(self): async def test_serve_file_rejects_traversal(self): from main.app.orunmila.tools import serve_file - with patch("main.app.orunmila.tools.hostPath", side_effect=ValueError("Invalid workspace path")): + with patch("main.app.orunmila.tools.sandbox.hostPath", side_effect=ValueError("Invalid workspace path")): result = await serve_file("/workspace/../../etc/passwd", userId=1) assert "error" in result @@ -150,7 +150,7 @@ async def test_serve_file_rejects_traversal(self): async def test_serve_file_quotes_special_chars(self): from main.app.orunmila.tools import serve_file - with patch("main.app.orunmila.tools.hostPath") as m_host: + with patch("main.app.orunmila.tools.sandbox.hostPath") as m_host: fake_path = MagicMock() fake_path.exists.return_value = True fake_path.is_file.return_value = True @@ -179,7 +179,7 @@ async def test_read_file_rejects_traversal(self): from main.app.orunmila.tools import read_file with patch( - "main.app.orunmila.tools.SandboxManager.read_file", + "main.app.orunmila.tools.sandbox.SandboxManager.read_file", side_effect=ValueError("bad path"), ): result = await read_file("/workspace/../../etc/passwd", userId=1) @@ -190,7 +190,7 @@ async def test_write_file_rejects_traversal(self): from main.app.orunmila.tools import write_file with patch( - "main.app.orunmila.tools.SandboxManager.write_file", + "main.app.orunmila.tools.sandbox.SandboxManager.write_file", side_effect=ValueError("bad path"), ): result = await write_file("/workspace/../../etc/evil", "x", userId=1) @@ -201,7 +201,7 @@ async def test_list_files_rejects_traversal(self): from main.app.orunmila.tools import list_files with patch( - "main.app.orunmila.tools.SandboxManager.list_files", + "main.app.orunmila.tools.sandbox.SandboxManager.list_files", side_effect=ValueError("bad path"), ): result = await list_files("/workspace/../../etc", userId=1) diff --git a/tests/test_orunmila_wallet_tools.py b/tests/test_orunmila_wallet_tools.py new file mode 100644 index 00000000..f23e3877 --- /dev/null +++ b/tests/test_orunmila_wallet_tools.py @@ -0,0 +1,228 @@ +from datetime import date + +import asyncio +import inspect + +import pytest +import requests + +import main.models.wallet # noqa: F401 +from main.app.orunmila.tools import TOOL_REGISTRY +from main.models.wallet import Earning +from tests.conftest import make_wallet_client + +WALLET_TOOLS = [ + "wallet_positions", + "wallet_summary", + "wallet_allocation", + "list_wallet_earnings", + "wallet_performance", + "wallet_rebalance", +] + + +@pytest.fixture(autouse=True) +async def clear_cashews_cache(): + from cashews import cache as cashewsCache + + cashewsCache.setup("mem://") + await cashewsCache.clear() + yield + await cashewsCache.clear() + + +def test_wallet_tools_registered_and_read_only(dbSession): + assert len(TOOL_REGISTRY) == 13 + for name in WALLET_TOOLS: + assert name in TOOL_REGISTRY + assert "narrate_positions" not in TOOL_REGISTRY + for name in WALLET_TOOLS: + source = inspect.getsource(TOOL_REGISTRY[name]) + for writer in ("addEntry", "updateEntry", "deleteEntry", "upsertTarget", "setRating", "syncEarnings"): + assert writer not in source + + +def _seed_wallet(dbSession): + client, _, _ = make_wallet_client(db=dbSession) + walletId = client.post("/wallet/wallets", json={"name": "W"}).json()["walletId"] + client.post( + "/wallet/entries", + json={ + "wallet_id": walletId, + "side": "Compra", + "asset_type": "Stock", + "ticker": "PETR4", + "date": "2026-01-02", + "quantity": 10, + "price": 10.0, + }, + ) + return walletId + + +def _live_ok(url, params=None, headers=None, timeout=None): + class Resp: + status_code = 200 + + @staticmethod + def json(): + return {"data": [{"TICKER": "PETR4", "PRECO ATUAL": 30.0}]} + + return Resp() + + +def _flat_series(url, params=None, headers=None, timeout=None): + class Resp: + status_code = 200 + + @staticmethod + def json(): + rows = [{"DATA": f"{day:02d}-01-2026", "PRECO": 10.0} for day in range(1, 10)] + rows += [{"DATA": "10-01-2026", "PRECO": 10.0}, {"DATA": "11-01-2026", "PRECO": 11.0}] + return {"data": rows} + + return Resp() + + +def _seed_earnings(dbSession, walletId): + dbSession.add( + Earning( + walletId=walletId, + ticker="PETR4", + kind="Div", + exDate=date(2026, 3, 1), + payDate=date(2026, 4, 1), + gross=10.0, + netIrAdjusted=10.0, + status="A Receber", + ) + ) + dbSession.add( + Earning( + walletId=walletId, + ticker="PETR4", + kind="JSCP", + exDate=date(2026, 3, 1), + payDate=date(2026, 4, 1), + gross=5.0, + netIrAdjusted=4.25, + status="Recebido", + ) + ) + dbSession.commit() + + +def test_wallet_positions_returns_read_view(dbSession, monkeypatch): + monkeypatch.setattr(requests, "get", _live_ok) + walletId = _seed_wallet(dbSession) + result = asyncio.run( + TOOL_REGISTRY["wallet_positions"](wallet_id=walletId, user={"userId": 1, "language": "pt-BR"}, db=dbSession) + ) + assert result["items"][0]["ticker"] == "PETR4" + assert result["equity_total"] == 300.0 + + +def test_wallet_summary_returns_totals(dbSession, monkeypatch): + monkeypatch.setattr(requests, "get", _live_ok) + walletId = _seed_wallet(dbSession) + result = asyncio.run(TOOL_REGISTRY["wallet_summary"](wallet_id=walletId, user={"userId": 1}, db=dbSession)) + assert result["applied"] == 100.0 + assert result["equity"] == 300.0 + assert result["variation"] == 200.0 + + +def test_wallet_allocation_groups_by_ticker_and_asset(dbSession, monkeypatch): + monkeypatch.setattr(requests, "get", _live_ok) + walletId = _seed_wallet(dbSession) + byTicker = asyncio.run(TOOL_REGISTRY["wallet_allocation"](wallet_id=walletId, user={"userId": 1}, db=dbSession)) + assert byTicker["items"][0]["key"] == "PETR4" + assert byTicker["equity_total"] == 300.0 + byAsset = asyncio.run( + TOOL_REGISTRY["wallet_allocation"](wallet_id=walletId, group_by="assetType", user={"userId": 1}, db=dbSession) + ) + assert byAsset["items"][0]["key"] == "Stock" + + +def test_list_wallet_earnings_filters_by_status(dbSession): + walletId = _seed_wallet(dbSession) + _seed_earnings(dbSession, walletId) + pending = asyncio.run(TOOL_REGISTRY["list_wallet_earnings"](wallet_id=walletId, user={"userId": 1}, db=dbSession)) + assert [row["kind"] for row in pending["earnings"]] == ["Div"] + assert pending["earnings"][0]["gross"] == 10.0 + received = asyncio.run( + TOOL_REGISTRY["list_wallet_earnings"](wallet_id=walletId, status="Recebido", user={"userId": 1}, db=dbSession) + ) + assert [row["kind"] for row in received["earnings"]] == ["JSCP"] + allRows = asyncio.run( + TOOL_REGISTRY["list_wallet_earnings"](wallet_id=walletId, status=None, user={"userId": 1}, db=dbSession) + ) + assert len(allRows["earnings"]) == 2 + + +def test_wallet_performance_returns_metrics(dbSession, monkeypatch): + monkeypatch.setattr(requests, "get", _flat_series) + walletId = _seed_wallet(dbSession) + dbSession.add( + Earning( + walletId=walletId, + ticker="PETR4", + kind="Div", + exDate=date(2026, 1, 5), + payDate=date(2026, 2, 1), + gross=10.0, + netIrAdjusted=10.0, + status="Recebido", + ) + ) + dbSession.commit() + result = asyncio.run( + TOOL_REGISTRY["wallet_performance"]( + wallet_id=walletId, + from_date="2026-01-01", + to_date="2026-01-11", + ticker="PETR4", + user={"userId": 1}, + db=dbSession, + ) + ) + assert result["twr"] == pytest.approx(0.21) + assert result["dividends_received"] == 10.0 + + +def test_wallet_performance_rejects_bad_date(dbSession): + walletId = _seed_wallet(dbSession) + result = asyncio.run( + TOOL_REGISTRY["wallet_performance"]( + wallet_id=walletId, from_date="01/01/2026", to_date="2026-01-11", user={"userId": 1}, db=dbSession + ) + ) + assert result == {"error": "invalid date, use YYYY-MM-DD"} + + +def test_wallet_rebalance_single_holding_holds(dbSession, monkeypatch): + monkeypatch.setattr(requests, "get", _live_ok) + walletId = _seed_wallet(dbSession) + result = asyncio.run(TOOL_REGISTRY["wallet_rebalance"](wallet_id=walletId, user={"userId": 1}, db=dbSession)) + assert result["items"][0]["side"] == "hold" + assert result["items"][0]["target_pct"] == 1.0 + + +def test_wallet_tools_cross_user_denied(dbSession): + walletId = _seed_wallet(dbSession) + baseArgs = {"wallet_id": walletId, "user": {"userId": 2, "language": "pt-BR"}, "db": dbSession} + for name in WALLET_TOOLS: + args = dict(baseArgs) + if name == "wallet_performance": + args.update({"from_date": "2026-01-01", "to_date": "2026-01-11"}) + result = asyncio.run(TOOL_REGISTRY[name](**args)) + assert result == {"error": "not-owner"} + + +def test_wallet_tools_no_auth_no_data(): + baseArgs = {"wallet_id": 1} + for name in WALLET_TOOLS: + args = dict(baseArgs) + if name == "wallet_performance": + args.update({"from_date": "2026-01-01", "to_date": "2026-01-11"}) + result = asyncio.run(TOOL_REGISTRY[name](**args)) + assert result == {"error": "Authentication required"} diff --git a/tests/test_roles.py b/tests/test_roles.py index 56e92898..c645e87e 100644 --- a/tests/test_roles.py +++ b/tests/test_roles.py @@ -8,19 +8,23 @@ def test_permission_enum_values(self): assert Permission.NONE == 0 assert Permission.USE_ORUNMILA > 0 assert Permission.ORUNMILA_EXTENDED_MEMORIES > 0 + assert Permission.WALLET > 0 class TestRoles: - def test_user_has_no_permissions(self): - assert Roles.USER == Permission.NONE + def test_user_has_wallet_only(self): + assert Roles.USER == Permission.WALLET + assert Roles.USER & Permission.WALLET assert not (Roles.USER & Permission.USE_ORUNMILA) def test_premium_has_orunmila_permissions(self): assert Roles.PREMIUM & Permission.USE_ORUNMILA assert Roles.PREMIUM & Permission.ORUNMILA_EXTENDED_MEMORIES - def test_developer_starter_has_no_permissions(self): - assert Roles.DEVELOPER_STARTER == Permission.NONE + def test_developer_starter_matches_user(self): + assert Roles.DEVELOPER_STARTER == Roles.USER + assert Roles.DEVELOPER_STARTER & Permission.WALLET + assert not (Roles.DEVELOPER_STARTER & Permission.USE_ORUNMILA) def test_developer_starter_missing_orunmila(self): assert not (Roles.DEVELOPER_STARTER & Permission.USE_ORUNMILA) @@ -66,6 +70,9 @@ def test_check_access_unknown_role_alone_returns_false(self): def test_check_access_admin_skips_other_roles(self): assert Roles.checkAccess(["ADMIN", "USER"], Permission.USE_ORUNMILA) is True + def test_check_access_user_has_wallet(self): + assert Roles.checkAccess(["USER"], Permission.WALLET) is True + class TestRequirePermission: async def test_raises_403_when_missing(self): diff --git a/tests/test_sandbox_tools.py b/tests/test_sandbox_tools.py index 5451f904..14fe3882 100644 --- a/tests/test_sandbox_tools.py +++ b/tests/test_sandbox_tools.py @@ -23,7 +23,7 @@ def test_execute_code_has_docstring(self): class TestDispatchToolCallSandbox: - @patch("main.app.orunmila.tools.SandboxManager") + @patch("main.app.orunmila.tools.sandbox.SandboxManager") async def test_dispatch_execute_code(self, mock_sandbox): mock_fc = MagicMock() mock_fc.name = "execute_code" @@ -40,7 +40,7 @@ async def test_dispatch_execute_code_no_sandbox(self): result = await dispatchToolCall(mock_fc, {}, user={"userId": 1}, sandbox_id=None) assert "error" in result - @patch("main.app.orunmila.tools.SandboxManager") + @patch("main.app.orunmila.tools.sandbox.SandboxManager") async def test_dispatch_read_file(self, mock_sandbox): mock_fc = MagicMock() mock_fc.name = "read_file" @@ -49,7 +49,7 @@ async def test_dispatch_read_file(self, mock_sandbox): result = await dispatchToolCall(mock_fc, {}, user={"userId": 1}, sandbox_id="sb-123") assert result["content"] == '{"key": "value"}' - @patch("main.app.orunmila.tools.SandboxManager") + @patch("main.app.orunmila.tools.sandbox.SandboxManager") async def test_dispatch_write_file(self, mock_sandbox): mock_fc = MagicMock() mock_fc.name = "write_file" @@ -58,7 +58,7 @@ async def test_dispatch_write_file(self, mock_sandbox): result = await dispatchToolCall(mock_fc, {}, user={"userId": 1}, sandbox_id="sb-123") assert result["success"] is True - @patch("main.app.orunmila.tools.SandboxManager") + @patch("main.app.orunmila.tools.sandbox.SandboxManager") async def test_dispatch_list_files(self, mock_sandbox): mock_fc = MagicMock() mock_fc.name = "list_files" diff --git a/tests/test_wallet_buy_flag.py b/tests/test_wallet_buy_flag.py new file mode 100644 index 00000000..2910943f --- /dev/null +++ b/tests/test_wallet_buy_flag.py @@ -0,0 +1,250 @@ +import asyncio +import hashlib + +import pytest +import requests +from cashews import cache as cashewsCache + +import main.models.wallet # noqa: F401 +from main.app.wallet.positions import PositionsManager +from main.models.wallet import Holding +from tests.conftest import make_wallet_client +from tests.test_wallet_positions import _live_ok + +RATINGS_ROUTE_DIGEST = "3a050b055866190a8142ddaca2ce916efd864d31496d90b959043c4ba484e334" + + +@pytest.fixture(autouse=True) +async def clear_cashews_cache(): + cashewsCache.setup("mem://") + await cashewsCache.clear() + yield + await cashewsCache.clear() + + +def _live_two(url, params=None, headers=None, timeout=None): + quotes = {"PETR4": 30.0, "VALE3": 10.0} + + class Resp: + status_code = 200 + + @staticmethod + def json(): + return {"data": [{"TICKER": params["search"], "PRECO ATUAL": quotes[params["search"]]}]} + + assert params["search"] in quotes + return Resp() + + +def _seed_two(client, walletId): + for ticker in ("PETR4", "VALE3"): + client.post( + "/wallet/entries", + json={ + "wallet_id": walletId, + "side": "Compra", + "asset_type": "Stock", + "ticker": ticker, + "date": "2026-01-10", + "quantity": 10, + "price": 10.0, + }, + ) + + +def test_buy_flag_follows_delta_sign(dbSession, monkeypatch): + monkeypatch.setattr(requests, "get", _live_two) + monkeypatch.setattr(PositionsManager, "fetchXangoScores", lambda tickers: {ticker: 50.0 for ticker in tickers}) + client, _, _ = make_wallet_client(db=dbSession) + walletId = client.post("/wallet/wallets", json={"name": "W"}).json()["walletId"] + _seed_two(client, walletId) + # Equities: PETR4 300, VALE3 100, total 400. Ratings 75/25 → targets 300/100 → flat. + client.put("/wallet/ratings", json={"wallet_id": walletId, "ticker": "PETR4", "rating": 75}) + client.put("/wallet/ratings", json={"wallet_id": walletId, "ticker": "VALE3", "rating": 25}) + byTicker = {item["ticker"]: item for item in client.get(f"/wallet/positions?wallet_id={walletId}").json()["items"]} + assert byTicker["PETR4"]["buy_flag"] is False + assert byTicker["VALE3"]["buy_flag"] is False + # Re-rate VALE3 to 50 → targets PETR4 240 / VALE3 160 → sell PETR4, buy VALE3. + client.put("/wallet/ratings", json={"wallet_id": walletId, "ticker": "VALE3", "rating": 50}) + byTicker = {item["ticker"]: item for item in client.get(f"/wallet/positions?wallet_id={walletId}").json()["items"]} + assert byTicker["PETR4"]["buy_flag"] is False + assert byTicker["VALE3"]["buy_flag"] is True + + +def test_zero_weights_all_hold(dbSession, monkeypatch): + monkeypatch.setattr(requests, "get", _live_two) + monkeypatch.setattr(PositionsManager, "fetchXangoScores", lambda tickers: {ticker: None for ticker in tickers}) + client, _, _ = make_wallet_client(db=dbSession) + walletId = client.post("/wallet/wallets", json={"name": "W"}).json()["walletId"] + _seed_two(client, walletId) + client.put("/wallet/ratings", json={"wallet_id": walletId, "ticker": "PETR4", "rating": 0}) + client.put("/wallet/ratings", json={"wallet_id": walletId, "ticker": "VALE3", "rating": 0}) + body = client.get(f"/wallet/rebalance?wallet_id={walletId}").json() + for item in body["items"]: + assert item["delta_equity"] is None + assert item["delta_qty"] is None + assert item["side"] == "hold" + for item in client.get(f"/wallet/positions?wallet_id={walletId}").json()["items"]: + assert item["buy_flag"] is False + + +def test_rebalance_weight_share_math(dbSession, monkeypatch): + monkeypatch.setattr(requests, "get", _live_two) + monkeypatch.setattr(PositionsManager, "fetchXangoScores", lambda tickers: {ticker: 50.0 for ticker in tickers}) + client, _, _ = make_wallet_client(db=dbSession) + walletId = client.post("/wallet/wallets", json={"name": "W"}).json()["walletId"] + _seed_two(client, walletId) + client.put("/wallet/ratings", json={"wallet_id": walletId, "ticker": "PETR4", "rating": 75}) + client.put("/wallet/ratings", json={"wallet_id": walletId, "ticker": "VALE3", "rating": 50}) + body = client.get(f"/wallet/rebalance?wallet_id={walletId}").json() + assert body["equity_total"] == pytest.approx(400.0) + byTicker = {item["ticker"]: item for item in body["items"]} + assert byTicker["PETR4"]["weight"] == 75 + assert byTicker["PETR4"]["target_pct"] == pytest.approx(0.6) + assert byTicker["PETR4"]["current_pct"] == pytest.approx(0.75) + assert byTicker["PETR4"]["delta_equity"] == pytest.approx(-60.0) + assert byTicker["PETR4"]["delta_qty"] == pytest.approx(-2.0) + assert byTicker["PETR4"]["side"] == "sell" + assert byTicker["VALE3"]["weight"] == 50 + assert byTicker["VALE3"]["target_pct"] == pytest.approx(0.4) + assert byTicker["VALE3"]["current_pct"] == pytest.approx(0.25) + assert byTicker["VALE3"]["delta_equity"] == pytest.approx(60.0) + assert byTicker["VALE3"]["delta_qty"] == pytest.approx(6.0) + assert byTicker["VALE3"]["side"] == "buy" + + +def test_rebalance_deterministic(dbSession, monkeypatch): + # Weight-share is a pure function of ratings + prices: same inputs → same outputs. + monkeypatch.setattr(requests, "get", _live_two) + monkeypatch.setattr(PositionsManager, "fetchXangoScores", lambda tickers: {ticker: 50.0 for ticker in tickers}) + client, _, _ = make_wallet_client(db=dbSession) + walletId = client.post("/wallet/wallets", json={"name": "W"}).json()["walletId"] + _seed_two(client, walletId) + client.put("/wallet/ratings", json={"wallet_id": walletId, "ticker": "PETR4", "rating": 75}) + client.put("/wallet/ratings", json={"wallet_id": walletId, "ticker": "VALE3", "rating": 50}) + first = client.get(f"/wallet/rebalance?wallet_id={walletId}").json() + second = client.get(f"/wallet/rebalance?wallet_id={walletId}").json() + assert first == second + assert sum(item["target_pct"] for item in first["items"]) == pytest.approx(1.0) + assert sum(item["delta_equity"] for item in first["items"] if item["delta_equity"] is not None) == pytest.approx( + 0.0 + ) + + +def test_new_holding_seeds_xango_score(dbSession, monkeypatch): + monkeypatch.setattr(requests, "get", _live_ok) + monkeypatch.setattr(PositionsManager, "fetchXangoScores", lambda tickers: {"PETR4": 80.0}) + client, _, _ = make_wallet_client(db=dbSession) + walletId = client.post("/wallet/wallets", json={"name": "W"}).json()["walletId"] + client.post( + "/wallet/entries", + json={ + "wallet_id": walletId, + "side": "Compra", + "asset_type": "Stock", + "ticker": "PETR4", + "date": "2026-01-10", + "quantity": 10, + "price": 10.0, + }, + ) + holding = dbSession.query(Holding).filter(Holding.walletId == walletId, Holding.ticker == "PETR4").first() + assert float(holding.rating) == pytest.approx(80.0) + # Later entries never touch the rating: manual 42 survives another Compra. + client.put("/wallet/ratings", json={"wallet_id": walletId, "ticker": "PETR4", "rating": 42}) + client.post( + "/wallet/entries", + json={ + "wallet_id": walletId, + "side": "Compra", + "asset_type": "Stock", + "ticker": "PETR4", + "date": "2026-01-11", + "quantity": 5, + "price": 12.0, + }, + ) + dbSession.expire_all() + holding = dbSession.query(Holding).filter(Holding.walletId == walletId, Holding.ticker == "PETR4").first() + assert float(holding.rating) == pytest.approx(42.0) + + +def test_new_holding_defaults_ten_without_xango(dbSession, monkeypatch): + monkeypatch.setattr(requests, "get", _live_ok) + monkeypatch.setattr(PositionsManager, "fetchXangoScores", lambda tickers: {"PETR4": None}) + client, _, _ = make_wallet_client(db=dbSession) + walletId = client.post("/wallet/wallets", json={"name": "W"}).json()["walletId"] + client.post( + "/wallet/entries", + json={ + "wallet_id": walletId, + "side": "Compra", + "asset_type": "Stock", + "ticker": "PETR4", + "date": "2026-01-10", + "quantity": 10, + "price": 10.0, + }, + ) + holding = dbSession.query(Holding).filter(Holding.walletId == walletId, Holding.ticker == "PETR4").first() + assert float(holding.rating) == pytest.approx(10.0) + + +def test_ratings_accept_zero_to_hundred(dbSession, monkeypatch): + monkeypatch.setattr(requests, "get", _live_ok) + client, _, _ = make_wallet_client(db=dbSession) + walletId = client.post("/wallet/wallets", json={"name": "W"}).json()["walletId"] + client.post( + "/wallet/entries", + json={ + "wallet_id": walletId, + "side": "Compra", + "asset_type": "Stock", + "ticker": "PETR4", + "date": "2026-01-10", + "quantity": 10, + "price": 10.0, + }, + ) + assert client.put("/wallet/ratings", json={"wallet_id": walletId, "ticker": "PETR4", "rating": 100}).json() == { + "ticker": "PETR4", + "rating": 100, + } + assert ( + client.put("/wallet/ratings", json={"wallet_id": walletId, "ticker": "PETR4", "rating": 0}).status_code == 200 + ) + assert ( + client.put("/wallet/ratings", json={"wallet_id": walletId, "ticker": "PETR4", "rating": 101}).status_code == 422 + ) + + +def test_fetch_xango_scores_parses_fundamental(monkeypatch): + + def fundamental_ok(url, params=None, headers=None, timeout=None): + assert url.endswith("/stocks/fundamental") + assert params["search"] == "PETR4" + assert params["fields"] == "XANGO INVESTING SCORE" + + class Resp: + status_code = 200 + + @staticmethod + def json(): + return {"data": [{"TICKER": "PETR4", "XANGO INVESTING SCORE": 80.0}]} + + return Resp() + + def boom(url, params=None, headers=None, timeout=None): + raise requests.Timeout() + + monkeypatch.setattr(requests, "get", fundamental_ok) + assert PositionsManager.fetchXangoScores(("PETR4",)) == {"PETR4": 80.0} + asyncio.run(cashewsCache.clear()) + monkeypatch.setattr(requests, "get", boom) + assert PositionsManager.fetchXangoScores(("PETR4",)) == {"PETR4": None} + + +def test_ratings_route_untouched(): + raw = open("main/controller/wallet_controller.py", "rb").read().splitlines(keepends=True)[165:173] + digest = hashlib.sha256(b"".join(raw)).hexdigest() + assert digest == RATINGS_ROUTE_DIGEST # any edit to set_rating_route fails loudly diff --git a/tests/test_wallet_earnings.py b/tests/test_wallet_earnings.py new file mode 100644 index 00000000..015e4b46 --- /dev/null +++ b/tests/test_wallet_earnings.py @@ -0,0 +1,107 @@ +import pytest +import requests +from freezegun import freeze_time + +import main.models.wallet # noqa: F401 +from tests.conftest import make_wallet_client + + +@pytest.fixture(autouse=True) +async def clear_cashews_cache(): + from cashews import cache as cashewsCache + + cashewsCache.setup("mem://") + await cashewsCache.clear() + yield + await cashewsCache.clear() + + +def _div_fundamental(url, params=None, headers=None, timeout=None): + class Resp: + status_code = 200 + + @staticmethod + def json(): + return { + "data": [ + { + "DATA COM": "01-03-2026", + "DATA PAGAMENTO": "01-04-2026", + "TIPO PROVENTO": "Dividendo", + "VALOR AJUSTADO": 2.0, + }, + { + "DATA COM": "01-06-2026", + "DATA PAGAMENTO": "20-12-2026", + "TIPO PROVENTO": "JCP", + "VALOR AJUSTADO": 1.0, + }, + { + "DATA COM": "01-07-2026", + "DATA PAGAMENTO": "20-12-2026", + "TIPO PROVENTO": "Bonificacao", + "VALOR AJUSTADO": 5.0, + }, + ] + } + + return Resp() + + +@freeze_time("2026-09-30") +def test_sync_accrues_with_qty_at_ex_date(dbSession, monkeypatch): + monkeypatch.setattr(requests, "get", _div_fundamental) + client, _, _ = make_wallet_client(db=dbSession) + walletId = client.post("/wallet/wallets", json={"name": "W"}).json()["walletId"] + client.post( + "/wallet/entries", + json={ + "wallet_id": walletId, + "side": "Compra", + "asset_type": "Stock", + "ticker": "PETR4", + "date": "2026-01-10", + "quantity": 10, + "price": 10.0, + }, + ) + body = client.post("/wallet/earnings/sync", json={"wallet_id": walletId}).json() + assert body == {"accrued": 2, "transitioned": 0, "skipped_unknown": ["Bonificacao"]} + items = client.get(f"/wallet/earnings?wallet_id={walletId}").json()["items"] + by_kind = {r["kind"]: r for r in items} + assert by_kind["Div"] == { + "ticker": "PETR4", + "kind": "Div", + "gross": 20.0, + "net_ir_adjusted": 20.0, + "status": "Recebido", + } + assert by_kind["JSCP"] == { + "ticker": "PETR4", + "kind": "JSCP", + "gross": 10.0, + "net_ir_adjusted": 8.5, + "status": "A Receber", + } + + +@freeze_time("2026-09-30") +def test_sync_is_idempotent(dbSession, monkeypatch): + monkeypatch.setattr(requests, "get", _div_fundamental) + client, _, _ = make_wallet_client(db=dbSession) + walletId = client.post("/wallet/wallets", json={"name": "W"}).json()["walletId"] + client.post( + "/wallet/entries", + json={ + "wallet_id": walletId, + "side": "Compra", + "asset_type": "Stock", + "ticker": "PETR4", + "date": "2026-01-10", + "quantity": 10, + "price": 10.0, + }, + ) + client.post("/wallet/earnings/sync", json={"wallet_id": walletId}) + again = client.post("/wallet/earnings/sync", json={"wallet_id": walletId}).json() + assert again == {"accrued": 0, "transitioned": 0, "skipped_unknown": ["Bonificacao"]} diff --git a/tests/test_wallet_entries.py b/tests/test_wallet_entries.py new file mode 100644 index 00000000..4c9eb8a0 --- /dev/null +++ b/tests/test_wallet_entries.py @@ -0,0 +1,145 @@ +import pytest + +import main.models.wallet # noqa: F401 +from tests.conftest import make_wallet_client + + +@pytest.fixture(autouse=True) +async def clear_cashews_cache(): + from cashews import cache as cashewsCache + + cashewsCache.setup("mem://") + await cashewsCache.clear() + yield + await cashewsCache.clear() + + +def test_compra_average_includes_costs(dbSession): + client, _, _ = make_wallet_client(db=dbSession) + walletId = client.post("/wallet/wallets", json={"name": "W"}).json()["walletId"] + client.post( + "/wallet/entries", + json={ + "wallet_id": walletId, + "side": "Compra", + "asset_type": "Stock", + "ticker": "PETR4", + "date": "2026-01-10", + "quantity": 10, + "price": 10.0, + "costs": 0.0, + }, + ) + resp = client.post( + "/wallet/entries", + json={ + "wallet_id": walletId, + "side": "Compra", + "asset_type": "Stock", + "ticker": "PETR4", + "date": "2026-02-10", + "quantity": 10, + "price": 20.0, + "costs": 5.0, + }, + ) + assert resp.status_code == 201 + assert resp.json()["holding"] == {"ticker": "PETR4", "quantity": 20.0, "avgPrice": 15.25} + + +def test_venda_keeps_avg_and_rejects_oversell(dbSession): + client, _, _ = make_wallet_client(db=dbSession) + walletId = client.post("/wallet/wallets", json={"name": "W"}).json()["walletId"] + client.post( + "/wallet/entries", + json={ + "wallet_id": walletId, + "side": "Compra", + "asset_type": "Stock", + "ticker": "PETR4", + "date": "2026-01-10", + "quantity": 20, + "price": 10.0, + }, + ) + resp = client.post( + "/wallet/entries", + json={ + "wallet_id": walletId, + "side": "Venda", + "asset_type": "Stock", + "ticker": "PETR4", + "date": "2026-03-10", + "quantity": 5, + "price": 30.0, + }, + ) + assert resp.json()["holding"] == {"ticker": "PETR4", "quantity": 15.0, "avgPrice": 10.0} + bad = client.post( + "/wallet/entries", + json={ + "wallet_id": walletId, + "side": "Venda", + "asset_type": "Stock", + "ticker": "PETR4", + "date": "2026-04-10", + "quantity": 99, + "price": 30.0, + }, + ) + assert bad.status_code == 422 + items = client.get(f"/wallet/entries?wallet_id={walletId}").json() + assert items["total"] == 2 + + +def test_edit_replays_holding_from_ledger(dbSession): + client, _, _ = make_wallet_client(db=dbSession) + walletId = client.post("/wallet/wallets", json={"name": "W"}).json()["walletId"] + first = client.post( + "/wallet/entries", + json={ + "wallet_id": walletId, + "side": "Compra", + "asset_type": "Stock", + "ticker": "PETR4", + "date": "2026-01-10", + "quantity": 10, + "price": 10.0, + }, + ).json() + client.post( + "/wallet/entries", + json={ + "wallet_id": walletId, + "side": "Compra", + "asset_type": "Stock", + "ticker": "PETR4", + "date": "2026-02-10", + "quantity": 10, + "price": 20.0, + "costs": 5.0, + }, + ) + resp = client.patch(f"/wallet/entries/{first['entryId']}", json={"quantity": 20}) + assert resp.json()["holding"] == {"ticker": "PETR4", "quantity": 30.0, "avgPrice": 13.5} + + +def test_cross_user_wallet_returns_404(dbSession): + from main.models.wallet import Wallet + + dbSession.add(Wallet(userId=2, name="Theirs")) + dbSession.commit() + client, _, _ = make_wallet_client(db=dbSession) + resp = client.post( + "/wallet/entries", + json={ + "wallet_id": 1, + "side": "Compra", + "asset_type": "Stock", + "ticker": "PETR4", + "date": "2026-01-10", + "quantity": 1, + "price": 1.0, + }, + ) + assert resp.status_code == 404 diff --git a/tests/test_wallet_models.py b/tests/test_wallet_models.py new file mode 100644 index 00000000..ce2bc70f --- /dev/null +++ b/tests/test_wallet_models.py @@ -0,0 +1,43 @@ +from main.models.base import Base +from main.models.wallet import Earning, Holding, Snapshot, Target, Transaction, Wallet + + +def test_wallet_tables_create_and_round_trip(dbSession): + wallet = Wallet(userId=1, name="Principal") + dbSession.add(wallet) + dbSession.commit() + assert wallet.walletId == 1 + holding = Holding( + walletId=wallet.walletId, + assetType="Stock", + ticker="PETR4", + quantity=10, + avgPrice=28.5, + ) + dbSession.add(holding) + dbSession.commit() + assert holding.holdingId == 1 + assert holding.rating is None + + +def test_earning_round_trip(dbSession): + from datetime import date + from main.models.wallet import Wallet + + wallet = Wallet(userId=1, name="W") + dbSession.add(wallet) + dbSession.commit() + row = Earning( + walletId=wallet.walletId, + ticker="PETR4", + kind="JSCP", + exDate=date(2026, 3, 1), + payDate=date(2026, 4, 1), + gross=10.0, + netIrAdjusted=8.5, + status="A Receber", + ) + dbSession.add(row) + dbSession.commit() + assert row.earningId == 1 + assert row.netIrAdjusted == 8.5 diff --git a/tests/test_wallet_performance.py b/tests/test_wallet_performance.py new file mode 100644 index 00000000..fc71d17a --- /dev/null +++ b/tests/test_wallet_performance.py @@ -0,0 +1,67 @@ +from datetime import date + +import pytest +import requests + +import main.models.wallet # noqa: F401 +from main.models.wallet import Earning +from tests.conftest import make_wallet_client + + +@pytest.fixture(autouse=True) +async def clear_cashews_cache(): + from cashews import cache as cashewsCache + + cashewsCache.setup("mem://") + await cashewsCache.clear() + yield + await cashewsCache.clear() + + +def _flat_series_with_one_div(url, params=None, headers=None, timeout=None): + class Resp: + status_code = 200 + + @staticmethod + def json(): + rows = [{"DATA": f"{d:02d}-01-2026", "PRECO": 10.0} for d in range(1, 10)] + rows += [{"DATA": "10-01-2026", "PRECO": 10.0}, {"DATA": "11-01-2026", "PRECO": 11.0}] + return {"data": rows} + + return Resp() + + +def test_performance_splits_price_and_dividends(dbSession, monkeypatch): + monkeypatch.setattr(requests, "get", _flat_series_with_one_div) + client, _, _ = make_wallet_client(db=dbSession) + walletId = client.post("/wallet/wallets", json={"name": "W"}).json()["walletId"] + client.post( + "/wallet/entries", + json={ + "wallet_id": walletId, + "side": "Compra", + "asset_type": "Stock", + "ticker": "PETR4", + "date": "2026-01-02", + "quantity": 10, + "price": 10.0, + }, + ) + dbSession.add( + Earning( + walletId=walletId, + ticker="PETR4", + kind="Div", + exDate=date(2026, 1, 5), + payDate=date(2026, 2, 1), + gross=10.0, + netIrAdjusted=10.0, + status="Recebido", + ) + ) + dbSession.commit() + body = client.get(f"/wallet/performance?wallet_id={walletId}&ticker=PETR4&from=2026-01-01&to=2026-01-11").json() + assert body["twr"] == pytest.approx(0.21) + assert body["price_return"] == pytest.approx(0.1) + assert body["dividends_received"] == 10.0 + assert body["volatility"] > 0 diff --git a/tests/test_wallet_positions.py b/tests/test_wallet_positions.py new file mode 100644 index 00000000..394f9a23 --- /dev/null +++ b/tests/test_wallet_positions.py @@ -0,0 +1,108 @@ +import pytest +import requests + +import main.models.wallet # noqa: F401 +from tests.conftest import make_wallet_client + + +@pytest.fixture(autouse=True) +async def clear_cashews_cache(): + from cashews import cache as cashewsCache + + cashewsCache.setup("mem://") + await cashewsCache.clear() + yield + await cashewsCache.clear() + + +def _live_ok(url, params=None, headers=None, timeout=None): + class Resp: + status_code = 200 + + @staticmethod + def json(): + return {"data": [{"TICKER": "PETR4", "PRECO ATUAL": 30.0}]} + + assert params["search"] == "PETR4" + return Resp() + + +def _seed(dbSession, client): + walletId = client.post("/wallet/wallets", json={"name": "W"}).json()["walletId"] + client.post( + "/wallet/entries", + json={ + "wallet_id": walletId, + "side": "Compra", + "asset_type": "Stock", + "ticker": "PETR4", + "date": "2026-01-10", + "quantity": 10, + "price": 10.0, + }, + ) + return walletId + + +def test_positions_math_with_live_price(dbSession, monkeypatch): + monkeypatch.setattr(requests, "get", _live_ok) + client, _, _ = make_wallet_client(db=dbSession) + walletId = _seed(dbSession, client) + item = client.get(f"/wallet/positions?wallet_id={walletId}").json()["items"][0] + assert item["current_price"] == 30.0 + assert item["equity"] == 300.0 + assert item["appreciation"] == 200.0 + + +def test_live_timeout_falls_back_to_null(dbSession, monkeypatch): + def boom(*a, **k): + raise requests.Timeout() + + monkeypatch.setattr(requests, "get", boom) + client, _, _ = make_wallet_client(db=dbSession) + walletId = _seed(dbSession, client) + body = client.get(f"/wallet/positions?wallet_id={walletId}").json() + assert body["items"][0]["current_price"] is None + assert body["equity_total"] == 0 + + +def test_unknown_ticker_returns_null_not_422(dbSession, monkeypatch): + monkeypatch.setattr(requests, "get", _live_ok) + client, _, _ = make_wallet_client(db=dbSession) + walletId = client.post("/wallet/wallets", json={"name": "W"}).json()["walletId"] + resp = client.post( + "/wallet/entries", + json={ + "wallet_id": walletId, + "side": "Compra", + "asset_type": "Crypto", + "ticker": "BTC", + "date": "2026-01-10", + "quantity": 1, + "price": 100.0, + }, + ) + assert resp.status_code == 201 + item = client.get(f"/wallet/positions?wallet_id={walletId}").json()["items"][0] + assert item["current_price"] is None + + +def test_cached_fallback_serves_when_live_fails(dbSession, monkeypatch): + def fake_get(url, params=None, headers=None, timeout=None): + if url.endswith("/stocks/cotations/live"): + raise requests.Timeout() + + class Resp: + status_code = 200 + + @staticmethod + def json(): + return {"data": [{"DATA": "01-01-2026", "PRECO": 25.0}, {"DATA": "29-09-2026", "PRECO": 27.5}]} + + return Resp() + + monkeypatch.setattr(requests, "get", fake_get) + client, _, _ = make_wallet_client(db=dbSession) + walletId = _seed(dbSession, client) + item = client.get(f"/wallet/positions?wallet_id={walletId}").json()["items"][0] + assert item["current_price"] == 27.5 diff --git a/tests/test_wallet_summary.py b/tests/test_wallet_summary.py new file mode 100644 index 00000000..e1e7fb6c --- /dev/null +++ b/tests/test_wallet_summary.py @@ -0,0 +1,98 @@ +import pytest +import requests + +import main.models.wallet # noqa: F401 +from tests.conftest import make_wallet_client + + +@pytest.fixture(autouse=True) +async def clear_cashews_cache(): + from cashews import cache as cashewsCache + + cashewsCache.setup("mem://") + await cashewsCache.clear() + yield + await cashewsCache.clear() + + +def _live_ok(url, params=None, headers=None, timeout=None): + class Resp: + status_code = 200 + + @staticmethod + def json(): + return {"data": [{"TICKER": "PETR4", "PRECO ATUAL": 30.0}]} + + assert params["search"] == "PETR4" + return Resp() + + +def _seed(client): + walletId = client.post("/wallet/wallets", json={"name": "W"}).json()["walletId"] + client.post( + "/wallet/entries", + json={ + "wallet_id": walletId, + "side": "Compra", + "asset_type": "Stock", + "ticker": "PETR4", + "date": "2026-01-10", + "quantity": 10, + "price": 10.0, + }, + ) + return walletId + + +def test_summary_math_and_snapshot_upsert(dbSession, monkeypatch): + monkeypatch.setattr(requests, "get", _live_ok) + client, _, _ = make_wallet_client(db=dbSession) + walletId = _seed(client) + body = client.get(f"/wallet/summary?wallet_id={walletId}").json() + assert body == { + "applied": 100.0, + "equity": 300.0, + "variation": 200.0, + "profit_twr": None, + "profit_amount": 200.0, + "profit_twr_12m": None, + "profit_twr_12m_amount": 200.0, + } + again = client.get(f"/wallet/summary?wallet_id={walletId}").json() + assert again["variation"] == 200.0 + from main.models.wallet import Snapshot + + assert dbSession.query(Snapshot).filter(Snapshot.walletId == walletId).count() == 1 + + +def test_targets_drive_buy_flag_and_ratings_gate(dbSession, monkeypatch): + monkeypatch.setattr(requests, "get", _live_ok) + client, _, _ = make_wallet_client(db=dbSession) + walletId = _seed(client) + assert ( + client.put( + "/wallet/targets", + json={"wallet_id": walletId, "key_kind": "ticker", "key_value": "PETR4", "percent_ideal": 80.0}, + ).status_code + == 200 + ) + assert ( + client.put( + "/wallet/targets", + json={"wallet_id": walletId, "key_kind": "ticker", "key_value": "PETR4", "percent_ideal": 101.0}, + ).status_code + == 422 + ) + assert client.put("/wallet/ratings", json={"wallet_id": walletId, "ticker": "PETR4", "rating": 8}).json() == { + "ticker": "PETR4", + "rating": 8, + } + assert ( + client.put("/wallet/ratings", json={"wallet_id": walletId, "ticker": "PETR4", "rating": 100}).status_code == 200 + ) + assert ( + client.put("/wallet/ratings", json={"wallet_id": walletId, "ticker": "PETR4", "rating": 101}).status_code == 422 + ) + item = client.get(f"/wallet/positions?wallet_id={walletId}").json()["items"][0] + # Weight-share: single holding owns 100% of both weight and equity → delta 0 → hold. + assert item["percent_ideal"] == 80.0 and item["buy_flag"] is False diff --git a/tests/test_wallets.py b/tests/test_wallets.py new file mode 100644 index 00000000..2f2b808c --- /dev/null +++ b/tests/test_wallets.py @@ -0,0 +1,20 @@ +import main.models.wallet # noqa: F401 +from tests.conftest import dbSession, make_wallet_client # noqa: F401 + + +def test_create_wallet_returns_201(dbSession): + client, _, _ = make_wallet_client(db=dbSession) + resp = client.post("/wallet/wallets", json={"name": "Principal"}) + assert resp.status_code == 201 + assert resp.json() == {"walletId": 1, "name": "Principal"} + + +def test_list_wallets_returns_only_mine(dbSession): + from main.models.wallet import Wallet + + client, _, _ = make_wallet_client(db=dbSession) + client.post("/wallet/wallets", json={"name": "Mine"}) + dbSession.add(Wallet(userId=2, name="Theirs")) + dbSession.commit() + names = [wallet["name"] for wallet in client.get("/wallet/wallets").json()] + assert names == ["Mine"]