Generated: 2026-02-12 17:42:48
Regenerate report:
python tools/todos/generate_report.py
Enrich todos with LLM metadata (priority/difficulty/utility):
python tools/todos/enrich.py # Run enrichment python tools/todos/enrich.py --dry-run # Preview only
Impact analysis (multi-model consensus on highest-impact items):
python tools/todos/analyze.py # maxthink preset (Opus, GPT-Pro, Grok, Gemini) python tools/todos/analyze.py -c fast # Fast/cheap models python tools/todos/analyze.py --top 5 # Top 5 instead of 3
After enrichment: Report will show colored priority badges (P1-P5), difficulty levels, and utility descriptions.
Open file in editor: Click file location to select, copy (Cmd+C), then Cmd+P in VS Code and paste.
replication/ β Acquire content, extract structured thesis elements, build company timelines, operationalize into scoring. Three targets: Reeves/Infuse (Substack + letters), Druckenmiller (interviews + 13F), Tepper (interviews + 13F). Start with Reeves β most written content, existing principles in research/infuse_principles.md.covenants/ β Extract structured covenants from EDGAR indentures, compute headroom, track amendments. EBITDA definition resolution is the hard part.watchlist table (names, theses, broad themes)brightdata SSE in rivus project config). Also integrate with browser service.search_engine, scrape_as_markdown (free tier, 5K req/mo), LinkedIn profiles/companies/jobs/posts, Crunchbase, browser automation (Pro mode)BRIGHTDATA_PRIMARY_PROXY, BRIGHTDATA_WEBUNLOCKER_PROXY, BRIGHTDATA_BROWSER_PROXY env vars.projects/people/ + projects/vc_intel/projects/people/README.mdprojects/skillz/domains/finance/ β Find great public examples of AI doing stock analysis, startup evaluation, founder/CEO assessment. Stock analyst is the juiciest domain. Survey GitHub repos, prompt chains, VC tooling landscape. These become training data / inspiration for skill acquisition. See domains/finance/README.md and domains/finance/benchmarks.md.brain/ extraction and kb/ knowledge accumulation.brightdata SSE in rivus project config). Also integrate with browser service.search_engine, scrape_as_markdown (free tier, 5K req/mo), LinkedIn profiles/companies/jobs/posts, Crunchbase, browser automation (Pro mode)BRIGHTDATA_PRIMARY_PROXY, BRIGHTDATA_WEBUNLOCKER_PROXY, BRIGHTDATA_BROWSER_PROXY env vars.projects/people/ + projects/vc_intel/projects/people/README.mdprojects/skillz/domains/finance/ β Find great public examples of AI doing stock analysis, startup evaluation, founder/CEO assessment. Stock analyst is the juiciest domain. Survey GitHub repos, prompt chains, VC tooling landscape. These become training data / inspiration for skill acquisition. See domains/finance/README.md and domains/finance/benchmarks.md.brain/ extraction and kb/ knowledge accumulation.session_index.dbrg), chronicle feed, learning extractionsupervisor/sidekick/hooks/handler.py (SessionEnd event)session_index.dbrg), chronicle feed, learning extractionsupervisor/sidekick/hooks/handler.py (SessionEnd event)projects/skillz/domains/companies/ β Separate project from VC/founder tool. Identify "Too Fast To Follow" public companies via SEC filings, earnings calls, patent velocity, product launch cadence. Score on: velocity, compounding, moat depth, talent magnetism, capital efficiency, founder intensity. All free public data sources (10K/10Q, USPTO, GitHub, press releases). See domains/companies/README.md.brain/GOALS.md for UI mockup, tasks/design/newsflow_macro.md for full spec.tasks/design/supervisor_design_task.md). Heartbeat, watchdog, cron, session supervision, sidekick.*.jott.ninja. Smoother login (no email wait), supports different session durations per user (owner = 30 days, others = 24h). Configure in Cloudflare Zero Trust dashboard β Settings β Authentication β Add Google as identity provider. Requires Google Cloud OAuth client ID + secret.kb/wisdom/ β Extract + analyze investment thesis logic from Value Investors Club. See kb/wisdom/README.md.projects/skillz/domains/companies/ β Separate project from VC/founder tool. Identify "Too Fast To Follow" public companies via SEC filings, earnings calls, patent velocity, product launch cadence. Score on: velocity, compounding, moat depth, talent magnetism, capital efficiency, founder intensity. All free public data sources (10K/10Q, USPTO, GitHub, press releases). See domains/companies/README.md.brain/GOALS.md for UI mockup, tasks/design/newsflow_macro.md for full spec.tasks/design/supervisor_design_task.md). Heartbeat, watchdog, cron, session supervision, sidekick.*.jott.ninja. Smoother login (no email wait), supports different session durations per user (owner = 30 days, others = 24h). Configure in Cloudflare Zero Trust dashboard β Settings β Authentication β Add Google as identity provider. Requires Google Cloud OAuth client ID + secret.kb/wisdom/ β Extract + analyze investment thesis logic from Value Investors Club. See kb/wisdom/README.md.admin.jott.ninja to Caddyfile. Move sensitive content (billing links, API key references, cost tracking) from watch dashboard to dedicated admin page. Eventually: live cost polling from Anthropic/OpenAI/BD APIs.cloudflare provider to lib/tempmail/. Unblocks VIC multi-account signup automation β all free temp email domains (virgilian.com, guerrillamail.com, etc.) are on disposable blocklists. VIC silently accepts signup but never sends the welcome email. Custom domain is the only bulletproof fix. projects/vic/signup.py (BD Scraping Browser + Turnstile), lib/tempmail/ (3 providers + domain reputation checker).jobs/handlers/nonprofit_990s.py β
OCR completegemini/gemini-3-flash-preview at 150 DPI, 1 page/batch (streaming, repetition-safe)admin.jott.ninja to Caddyfile. Move sensitive content (billing links, API key references, cost tracking) from watch dashboard to dedicated admin page. Eventually: live cost polling from Anthropic/OpenAI/BD APIs.cloudflare provider to lib/tempmail/. Unblocks VIC multi-account signup automation β all free temp email domains (virgilian.com, guerrillamail.com, etc.) are on disposable blocklists. VIC silently accepts signup but never sends the welcome email. Custom domain is the only bulletproof fix. projects/vic/signup.py (BD Scraping Browser + Turnstile), lib/tempmail/ (3 providers + domain reputation checker).jobs/handlers/nonprofit_990s.py β
OCR completegemini/gemini-3-flash-preview at 150 DPI, 1 page/batch (streaming, repetition-safe)supervisor/ β Run PYTHONPATH=. python -m supervisor.cli run --dry-run -v to watch it detect waiting sessions, then test live on a forked session with plan approval or AskUserQuestion. Session ID ed537830-011b-4aff-9502-90570e9a83b3 (this build session).learning/session_review/ β Multi-candidate approach implemented (Feb 2026):pair_judge.py) evaluates all candidates and picks the actual repairprinciple_propose.py filters to pair_verdict='repair' automaticallyMETHODOLOGY.md for full documentationlearning/session_review/ β Full pipeline: failure_mining.py, failure_browser.py, principle_propose.py, judge caching, METHODOLOGY.md. See METHODOLOGY.md for approach.supervisor/ β Run PYTHONPATH=. python -m supervisor.cli run --dry-run -v to watch it detect waiting sessions, then test live on a forked session with plan approval or AskUserQuestion. Session ID ed537830-011b-4aff-9502-90570e9a83b3 (this build session).learning/session_review/ β Multi-candidate approach implemented (Feb 2026):pair_judge.py) evaluates all candidates and picks the actual repairprinciple_propose.py filters to pair_verdict='repair' automaticallyMETHODOLOGY.md for full documentationlearning/session_review/ β Full pipeline: failure_mining.py, failure_browser.py, principle_propose.py, judge caching, METHODOLOGY.md. See METHODOLOGY.md for approach.~/all-code/investor/replication/ β Extract analytical frameworks from top investors (Reeves/Infuse, Druckenmiller, Tepper) by acquiring their content (Substack, interviews, letters, 13F), extracting structured thesis elements per document, building company timelines, and operationalizing into scoring/screening. Design task: tasks/design/investment_philosophy_extraction.md~/all-code/investor/covenants/ β Extract structured covenants from EDGAR indentures/credit agreements, compute headroom vs current financials, track amendments over time. Key challenge: resolving nested EBITDA definitions and cross-references.~/all-code/investor/replication/ β Extract analytical frameworks from top investors (Reeves/Infuse, Druckenmiller, Tepper) by acquiring their content (Substack, interviews, letters, 13F), extracting structured thesis elements per document, building company timelines, and operationalizing into scoring/screening. Design task: tasks/design/investment_philosophy_extraction.md~/all-code/investor/covenants/ β Extract structured covenants from EDGAR indentures/credit agreements, compute headroom vs current financials, track amendments over time. Key challenge: resolving nested EBITDA definitions and cross-references.supervisor/sidekick/ + learning/ β Sidekick should observe session activity and auto-generate learnings asynchronously. When it detects patterns (repeated failures, successful fixes, new conventions established), create learning entries in learning.db without blocking the session. Hook into UserPromptSubmit or PostToolUse events. Lightweight LLM call (flash/haiku) to classify whether the current turn contains a learning-worthy observation.learning/ β Build the dataset first. Mine sessions for situation records: context + problem + resolution + outcome. Broader than tool errors β capture slow paths, workarounds, design decisions, architectural choices. This DB is the foundation for everything else (principle extraction, wisdom, pattern matching to new situations). Start simple: SQLite, one table, mine from JSONL transcripts.supervisor/sidekick/ + learning/ β Sidekick should observe session activity and auto-generate learnings asynchronously. When it detects patterns (repeated failures, successful fixes, new conventions established), create learning entries in learning.db without blocking the session. Hook into UserPromptSubmit or PostToolUse events. Lightweight LLM call (flash/haiku) to classify whether the current turn contains a learning-worthy observation.learning/ β Build the dataset first. Mine sessions for situation records: context + problem + resolution + outcome. Broader than tool errors β capture slow paths, workarounds, design decisions, architectural choices. This DB is the foundation for everything else (principle extraction, wisdom, pattern matching to new situations). Start simple: SQLite, one table, mine from JSONL transcripts.learning/ β Each learning should have an importance/weight field (1-5 or similar). High-importance learnings get prioritized in materialization to learnings.md and principles extraction. Low-importance ones stay in DB but don't consume context window real estate. Could be auto-rated by the LLM during learn classification, or manually set.learning/ β Each learning should have an importance/weight field (1-5 or similar). High-importance learnings get prioritized in materialization to learnings.md and principles extraction. Low-importance ones stay in DB but don't consume context window real estate. Could be auto-rated by the LLM during learn classification, or manually set.~/.claude/skills/principles/SKILL.md. Feeds into ~/.claude/principles/, project conventions, ~/.claude/howto/.principle_propose.py (existing but limited to tool errors)doctor/chronicle/. Currently only tracks code commits and session topics.~/.claude/skills/principles/SKILL.md. Feeds into ~/.claude/principles/, project conventions, ~/.claude/howto/.principle_propose.py (existing but limited to tool errors)doctor/chronicle/. Currently only tracks code commits and session topics.projects/people/ or projects/companies/.kb/ or investor/. NLP feature extraction + backtesting against price data.projects/people/ or projects/companies/.kb/ or investor/. NLP feature extraction + backtesting against price data.lib/llm/tools.py β LLM can fetch URLs from search results. Needs: brain's fetch_escalate with smart proxy escalation, BrightData unlocker/JS rendering for paywalled/dynamic content. High-volume JS fetching may need existing browser service or BrightData Browser CDP endpoint. Design considerations: mode param (auto/js/unlocker), rate limiting, content truncation for token efficiency.lib/llm/tools.py β LLM can fetch URLs from search results. Needs: brain's fetch_escalate with smart proxy escalation, BrightData unlocker/JS rendering for paywalled/dynamic content. High-volume JS fetching may need existing browser service or BrightData Browser CDP endpoint. Design considerations: mode param (auto/js/unlocker), rate limiting, content truncation for token efficiency.kb/, formerly knowledge_gym)
python -m kb.scenario -s URL -n 3kb/corpus/knowledge.jsonlexplorations/problem_solving_gym/)
python brain/validate_extraction.py to verify HTML/YouTube/PDF extraction
python -m kb.scenario -s URL -n 3kb/corpus/knowledge.jsonlexplorations/problem_solving_gym/)
python brain/validate_extraction.py to verify HTML/YouTube/PDF extraction
gr.themes.Glass(), gr.themes.Ocean(), gr.themes.Citrus()gr.themes.Glass(), gr.themes.Ocean(), gr.themes.Citrus()writing/ or design/writing/ in rivus?
explorations/gradio_layout_gym/, branch learn-gradioexplorations/gradio_layout/EXPERIMENTS.md has 6 real experiments (viewport locking, HTML overflow, flex CSS). Gym concept in gradio_layout_gym/README.md (never built).learn-gradio β accumulates experiments without polluting main. Lessons graduate to ~/.claude/howto/gradio.md and gradio-layout skillexplorations/gradio_layout_gym/, branch learn-gradioexplorations/gradio_layout/EXPERIMENTS.md has 6 real experiments (viewport locking, HTML overflow, flex CSS). Gym concept in gradio_layout_gym/README.md (never built).learn-gradio β accumulates experiments without polluting main. Lessons graduate to ~/.claude/howto/gradio.md and gradio-layout skillkb/ has basic extractβscoreβcorpus loopkb/ has basic extractβscoreβcorpus loopbrowser search β fetch top result
brain search "query" -n 5 β fetch top N results in parallel
brain "silver down 8%, who's affected"brain "Apple earnings, extract causal claims"brain "summarize https://example.com"brain "silver down 8%, who's affected"brain "Apple earnings, extract causal claims"brain "summarize https://example.com"person_integrity precursor into structured prompt
person_integrity precursor into structured prompt
person_expertise_real precursor
person_red_flags precursor
research_* in query_precursors.yaml)
?prompt=... - set the prompt text?config=name - select a config preset?input=... or ?input_url=... - set input content?autorun=1 - auto-run on load?prompt=... - set the prompt text?config=name - select a config preset?input=... or ?input_url=... - set input content?autorun=1 - auto-run on load?output=/path/to/file.yaml param--output path for filebrain get URL | vario gen "..." --output results.yaml?output=/path/to/file.yaml param--output path for filebrain get URL | vario gen "..." --output results.yaml?url=...&config=..., extend to:
?autorun=1 - auto-run extraction on load?output=path - specify output destination?autorun=1 - auto-run extraction on load?output=path - specify output destination?output=/path/to/file.yaml parambrain extract URL --config causal --output results.yaml?output=/path/to/file.yaml parambrain extract URL --config causal --output results.yaml--each flag end-to-end:
rank_feasibilityvario prompt "rough request" commandrank_feasibilityvario prompt "rough request" commandgr.BrowserState to persist recent configs in localStorage. Show as clickable items alongside presets. Keep last ~10, dedupe.
gr.BrowserState to persist recent configs in localStorage. Show as clickable items alongside presets. Keep last ~10, dedupe.
--search tool|native|none, --directive ignore|async|sync?search=tool|native|none and ?directive=ignore|async|sync URL params# directive: none--search tool|native|none, --directive ignore|async|sync?search=tool|native|none and ?directive=ignore|async|sync URL params# directive: nonereasoning_tags or similar for collapsible system prompt display. See https://www.gradio.app/docs/gradio/chatbot#param-chatbot-reasoning-tags and https://www.gradio.app/docs/gradio/chatbot#examples
reasoning_tags or similar for collapsible system prompt display. See https://www.gradio.app/docs/gradio/chatbot#param-chatbot-reasoning-tags and https://www.gradio.app/docs/gradio/chatbot#examples
.all(), .count(), etc.)
page.evaluate() examples (# vs //, len vs .length)
verify/models.py - VerifySpec, CheckResult, etc.
verify/actions.py - click, fill, wait implementations
verify/assertions.py - visible, in_viewport, text_contains
verify/capture.py - screenshot, DOM, aria capture
verify/executor.py - main runner with parallel support
browser/site_extractors.yaml or brain/?
browser extract URL --save to save working rule
https://endpoints.news/roivants-dealmaker-lands-81m-cash-bonus-following-drug-sale-to-roche/https://endpoints.news/roivants-dealmaker-lands-81m-cash-bonus-following-drug-sale-to-roche/--profile PATH to use existing browser profile directly
inv doctor.tail - Log error detection + LLM analysis
inv doctor.expect - Basic LLM expectations (HTTP only)
verify/runner.py - Playwright executor (uses browser/verify)
verify/nl_assist.py - LLM generates spec from description
llm: "footer should be visible")
references.py - Reference management (add/list/delete/show)
expect.py with visual_match expectation type
static/server.py asset caching, jobs/data/vic_ideas/.share base_path config.static/server.py asset caching, jobs/data/vic_ideas/.share base_path config.ResourceRegistry in runner.py. Stages set resource: youtube in YAML, share a single asyncio.Semaphore. Concurrency set in top-level resources: section. Hot-reloadable.ResourceRegistry in runner.py. Stages set resource: youtube in YAML, share a single asyncio.Semaphore. Concurrency set in top-level resources: section. Hot-reloadable.retry_later re-queues items immediately with no cooldown, creating tight loops and log spam. The real fix isn't a cooldown β it's scoping retries correctly: item-level (skip this one), resource-level (back off the API), or job-level (pause). Most current retry_later uses are either "should fail" (no URL found) or "should back off the resource" (429). See resource-aware backoff below.retry_later re-queues items immediately with no cooldown, creating tight loops and log spam. The real fix isn't a cooldown β it's scoping retries correctly: item-level (skip this one), resource-level (back off the API), or job-level (pause). Most current retry_later uses are either "should fail" (no URL found) or "should back off the resource" (429). See resource-aware backoff below.raise ResourceThrottledError("finnhub", cooldown_s=60)ResourceRegistry semaphore temporarily blocks (all permits held for cooldown duration)finnhub, ib), per-provider (anthropic, openai), or per-site (wayback)concurrency controls local parallelism; resource controls shared external limitsraise ResourceThrottledError("finnhub", cooldown_s=60)ResourceRegistry semaphore temporarily blocks (all permits held for cooldown duration)finnhub, ib), per-provider (anthropic, openai), or per-site (wayback)concurrency controls local parallelism; resource controls shared external limitsenabled: false / resource: / stage_deps interact. ASCII or Mermaid in CLAUDE.md.enabled: false / resource: / stage_deps interact. ASCII or Mermaid in CLAUDE.md.max_priority guard to stop at threshold (phased rollouts)max_priority guard to stop at threshold (phased rollouts)jobs/logs/{job_id}.log with rotationjobs/logs/{job_id}.log with rotationenabled: false, preventing items from getting stuck forever.enabled: false, preventing items from getting stuck forever.stage_version_hash includes them. Implemented in tracker.py, used by vic_ideas and vic_wayback.stage_version_hash includes them. Implemented in tracker.py, used by vic_ideas and vic_wayback.(id, job_id, item_key, stage, event_type, event_data JSON, timestamp). Append-only, never updated/deleted. Event types: item_discovered, stage_started, stage_completed, stage_failed, job_paused, job_resumed, handler_updated, cb_tripped, config_reloaded(id, job_id, item_key, stage, event_type, event_data JSON, timestamp). Append-only, never updated/deleted. Event types: item_discovered, stage_started, stage_completed, stage_failed, job_paused, job_resumed, handler_updated, cb_tripped, config_reloadedjob_events.job_events.role: validator tells the framework this stage validates upstream output. Adds validates: [extract, fetch] to declare what it checks.role: validator tells the framework this stage validates upstream output. Adds validates: [extract, fetch] to declare what it checks._invalidate_stage: "extract", runner resets that stage to pending for the item. Dashboard shows items with active invalidations._invalidate_stage: "extract", runner resets that stage to pending for the item. Dashboard shows items with active invalidations._discrepancies: [{field, extract_value, llm_value, severity}]. Stored in results table._discrepancies: [{field, extract_value, llm_value, severity}]. Stored in results table.success_rate_min: 0.50). Catches intermittent failures that never cluster enough to trip the consecutive CB. Config per-stage in YAML:success_rate_min: 0.50). Catches intermittent failures that never cluster enough to trip the consecutive CB. Config per-stage in YAML:content_ok=false and discrepancy rates over a sliding window (last N items). Different from exception-based circuit breaker.content_ok=false and discrepancy rates over a sliding window (last N items). Different from exception-based circuit breaker.circuit_breaker.content_ok_min_rate: 0.80 pauses when <80% of items pass validation. Pause reason includes which upstream stage is likely broken.circuit_breaker.content_ok_min_rate: 0.80 pauses when <80% of items pass validation. Pause reason includes which upstream stage is likely broken.auto_reprocess: true per stage.auto_reprocess: true per stage.--llm flag for open-ended "what can you find about X?" discovery, runs in parallel with Serper bulk--llm flag for open-ended "what can you find about X?" discovery, runs in parallel with Serper bulk--preset founder/exec/academic/contact controlling which enrichment sources and platforms to search--preset founder/exec/academic/contact controlling which enrichment sources and platforms to searchsite: searches already integrated.site: searches already integrated.enrich.py (http_get, _RateLimiter, PROXY_SOURCES). Just need to swap the proxy zone or add BRIGHTDATA_RESIDENTIAL_PROXY env var.enrich.py (http_get, _RateLimiter, PROXY_SOURCES). Just need to swap the proxy zone or add BRIGHTDATA_RESIDENTIAL_PROXY env var.--audio flag)
twilio:// source in audio_capture.py.twilio:// source in audio_capture.py.mode=auto|js|unlocker and escalation evidence
learning/gyms/fetchability/docs/FETCHABILITY_MATRIX_SPEC.mdlearning/gyms/fetchability/tests/fixtures/fetchability_matrix.yamllearning/gyms/fetchability/tests/test_fetchability_matrix.pyBROWSER_TEST_SUBSTACK_PAID_URL, BROWSER_TEST_PATREON_PAID_URLBROWSER_TEST_SUBSTACK_PAID_AUTH=1, BROWSER_TEST_PATREON_PAID_AUTH=1lib/llm/tools.py
ring-mqtt or Node-based wrappers).