From 6e3d57619b8be1628f85090f1d20395cc0fd20e4 Mon Sep 17 00:00:00 2001 From: Andre Ferraro Date: Thu, 20 Aug 2026 11:50:16 -0300 Subject: [PATCH] feat(extractor): add Google News headlines extractor with Foxcape headless and URL resolution - Add standalone CLI script scripts/extract_google_news.py for Google News RSS scraping - Integrate foxcape in headless mode as primary stealth anti-bot engine - Implement parallel article URL resolution using googlenewsdecoder and ThreadPoolExecutor - Support language and regional locale mapping (-l, --lang, --locale) - Implement real-time progress logging in stderr and --silent flag - Add unit, integration, and live E2E tests in tests/test_extract_google_news.py - Add full SpecKit documentation (specs/002-google-news-extractor/) - Create comprehensive README.md covering both NLP Classifier and Google News Extractor --- README.md | 261 + docs/googlenews_extractor_guia_completo.md | 561 ++ examples/ecp_sao_paulo_futebol_clube.json | 739 ++ graphify-out/.graphify_labels.json | 34 +- graphify-out/.graphify_labels.json.sig | 2 +- graphify-out/2026-08-20/.graphify_labels.json | 29 +- graphify-out/2026-08-20/GRAPH_REPORT.md | 188 +- graphify-out/2026-08-20/graph.json | 7023 +++++++++++++-- graphify-out/2026-08-20/manifest.json | 108 +- graphify-out/GRAPH_REPORT.md | 187 +- ...cd477c87210fa00f117cf9a2e7848fa9160dd.json | 1 + ...5b86a4b850bead9b4142384566e244753bde3.json | 1 + ...460bf6fc5e0e23cd5f617a96c5edf8579e219.json | 1 + ...81a02d7ef26124f4142b9d8b72ea95259a34b.json | 1 + ...b7150aea886c3c763e400ac5af36d2d9e0f6a.json | 1 + ...9fc83dca47b865f3429c24256209513a78691.json | 1 + ...864d3ad3b5a1dce14b006ada8c1fbcd6a744c.json | 1 + ...3298ff4b2903dfd5194054c8e41dd0c0c5f23.json | 1 + ...1ec43858c6af6917306dce21c222f7cb25ea0.json | 1 + ...bd25446c9ec6613e7f2e61249c1543b6f7295.json | 1 + ...eed810275e4628548e0f8e8b9ecaa90d3ac13.json | 1 + ...02c7977365e5ab102df527f90ed7b06e69519.json | 1 + ...30947406e0954bac70ec04412ad197c18b434.json | 1 + ...1e4904f1e8274d876ee6cd34ec37ba62aa02e.json | 1 + ...2b8e1ce0c83d35b5e71ab68bd135146c9ef47.json | 1 + ...657747893f6be68bef02c86132650a76490b5.json | 1 + ...b055fc35730aed23856021b02b9957b2e9912.json | 1 + ...e4f195db525afac53ed77905222015ec5230c.json | 1 + ...589551f407617e2fcca99e60c7c4a34cbb322.json | 1 + ...6a2827f627b4fa30135f65bfcfd5b650ebaae.json | 1 + ...574ccc5c15fbefd817b0aedc99439a65d4b26.json | 1 + ...e7fc8f6ad87571a8f1b2862055afd3e28c7b4.json | 1 + ...356138a5e4a5c702a47c403f9fb76374e2b1f.json | 1 + ...47455b938efb3fca877b0464b47bd08c2c5b2.json | 1 + ...047be6f8c4cb2b80dea65e198f57b9c5eccd7.json | 1 + ...1afe4f0d82cfab9e02811c0fa8a50f31fdef2.json | 1 + ...84024ac6c3c818f6b98043204a9f81bff49f0.json | 1 + ...7265dde8ef296d92cdb77c8b3e3d1f21af3a5.json | 1 + ...5b55c81e493633b0d31eb03a576b72f474044.json | 1 + ...c67985043f684fb2fa2ad047894cfefc68d56.json | 1 + graphify-out/cache/stat-index.json | 2 +- graphify-out/graph.html | 8 +- graphify-out/graph.json | 7534 ++++++++++++++--- graphify-out/manifest.json | 96 +- pyproject.toml | 4 + requirements.txt | 4 + scripts/__init__.py | 1 + scripts/extract_google_news.py | 467 + .../checklists/readiness.md | 56 + .../checklists/requirements.md | 34 + .../contracts/cli_contract.md | 49 + specs/002-google-news-extractor/data-model.md | 72 + specs/002-google-news-extractor/plan.md | 74 + specs/002-google-news-extractor/quickstart.md | 78 + specs/002-google-news-extractor/research.md | 47 + specs/002-google-news-extractor/spec.md | 98 + specs/002-google-news-extractor/tasks.md | 95 + tests/fixtures/google_news_sample.xml | 42 + tests/test_extract_google_news.py | 355 + 59 files changed, 16118 insertions(+), 2160 deletions(-) create mode 100644 README.md create mode 100644 docs/googlenews_extractor_guia_completo.md create mode 100644 examples/ecp_sao_paulo_futebol_clube.json create mode 100644 graphify-out/cache/ast/v0.9.47-s2/290cd57feaac930e62af6b2a02ccd477c87210fa00f117cf9a2e7848fa9160dd.json create mode 100644 graphify-out/cache/ast/v0.9.47-s2/3478a487614358839b3e53c15b05b86a4b850bead9b4142384566e244753bde3.json create mode 100644 graphify-out/cache/ast/v0.9.47-s2/48e2fc3e8a7de40958ac83df18b460bf6fc5e0e23cd5f617a96c5edf8579e219.json create mode 100644 graphify-out/cache/ast/v0.9.47-s2/57a0a3eb1fd6d7afbe394be62e681a02d7ef26124f4142b9d8b72ea95259a34b.json create mode 100644 graphify-out/cache/ast/v0.9.47-s2/5daaacf1ae38b390fecd514996fb7150aea886c3c763e400ac5af36d2d9e0f6a.json create mode 100644 graphify-out/cache/ast/v0.9.47-s2/60084a23d0cb5e7f2ae4dcd86849fc83dca47b865f3429c24256209513a78691.json create mode 100644 graphify-out/cache/ast/v0.9.47-s2/632d56d622867a9d615eb5d3500864d3ad3b5a1dce14b006ada8c1fbcd6a744c.json create mode 100644 graphify-out/cache/ast/v0.9.47-s2/6b9e3c10becd7b8fa633e409e9a3298ff4b2903dfd5194054c8e41dd0c0c5f23.json create mode 100644 graphify-out/cache/ast/v0.9.47-s2/6e21eba445b58b4993c56ccfb6d1ec43858c6af6917306dce21c222f7cb25ea0.json create mode 100644 graphify-out/cache/ast/v0.9.47-s2/6eeb131ccc266f515693b75c184bd25446c9ec6613e7f2e61249c1543b6f7295.json create mode 100644 graphify-out/cache/ast/v0.9.47-s2/71e796c83a1c293fa380b4f01a2eed810275e4628548e0f8e8b9ecaa90d3ac13.json create mode 100644 graphify-out/cache/ast/v0.9.47-s2/78cec846c1173fbdff3c77313ba02c7977365e5ab102df527f90ed7b06e69519.json create mode 100644 graphify-out/cache/ast/v0.9.47-s2/7e62df3edf389ef4775cd4ebc7c30947406e0954bac70ec04412ad197c18b434.json create mode 100644 graphify-out/cache/ast/v0.9.47-s2/85d028e158cce8838ecdcd69f101e4904f1e8274d876ee6cd34ec37ba62aa02e.json create mode 100644 graphify-out/cache/ast/v0.9.47-s2/94430da291ad0dc34b1cde7c30f2b8e1ce0c83d35b5e71ab68bd135146c9ef47.json create mode 100644 graphify-out/cache/ast/v0.9.47-s2/95a7a2d913e284c24849db47815657747893f6be68bef02c86132650a76490b5.json create mode 100644 graphify-out/cache/ast/v0.9.47-s2/9a49f74effae9147666fb0d91e9b055fc35730aed23856021b02b9957b2e9912.json create mode 100644 graphify-out/cache/ast/v0.9.47-s2/ad4c18a1fe1c6f19f45a043748fe4f195db525afac53ed77905222015ec5230c.json create mode 100644 graphify-out/cache/ast/v0.9.47-s2/afdab227277787fb6ca235cb3b6589551f407617e2fcca99e60c7c4a34cbb322.json create mode 100644 graphify-out/cache/ast/v0.9.47-s2/b891ffeaee84638899cd142c1f46a2827f627b4fa30135f65bfcfd5b650ebaae.json create mode 100644 graphify-out/cache/ast/v0.9.47-s2/b9bf3789223ca93f659508907e9574ccc5c15fbefd817b0aedc99439a65d4b26.json create mode 100644 graphify-out/cache/ast/v0.9.47-s2/cc0e94d4e1b176d15f573d29771e7fc8f6ad87571a8f1b2862055afd3e28c7b4.json create mode 100644 graphify-out/cache/ast/v0.9.47-s2/d2968dc459d535356d5aa2b518e356138a5e4a5c702a47c403f9fb76374e2b1f.json create mode 100644 graphify-out/cache/ast/v0.9.47-s2/d7910bb4af069cb278dbc72d59247455b938efb3fca877b0464b47bd08c2c5b2.json create mode 100644 graphify-out/cache/ast/v0.9.47-s2/d83944755d7f6e43d8c76e032f0047be6f8c4cb2b80dea65e198f57b9c5eccd7.json create mode 100644 graphify-out/cache/ast/v0.9.47-s2/e6937ac9cb1b27e61bf60c0f4151afe4f0d82cfab9e02811c0fa8a50f31fdef2.json create mode 100644 graphify-out/cache/ast/v0.9.47-s2/e84b37b25f61ed209d1295f77bf84024ac6c3c818f6b98043204a9f81bff49f0.json create mode 100644 graphify-out/cache/ast/v0.9.47-s2/f30a694c2114ef6bc58efa1caea7265dde8ef296d92cdb77c8b3e3d1f21af3a5.json create mode 100644 graphify-out/cache/ast/v0.9.47-s2/f46d0fe2c96c50cd92426af3ca85b55c81e493633b0d31eb03a576b72f474044.json create mode 100644 graphify-out/cache/ast/v0.9.47-s2/f9137353fa9e63c4369076e2ab1c67985043f684fb2fa2ad047894cfefc68d56.json create mode 100644 scripts/__init__.py create mode 100644 scripts/extract_google_news.py create mode 100644 specs/002-google-news-extractor/checklists/readiness.md create mode 100644 specs/002-google-news-extractor/checklists/requirements.md create mode 100644 specs/002-google-news-extractor/contracts/cli_contract.md create mode 100644 specs/002-google-news-extractor/data-model.md create mode 100644 specs/002-google-news-extractor/plan.md create mode 100644 specs/002-google-news-extractor/quickstart.md create mode 100644 specs/002-google-news-extractor/research.md create mode 100644 specs/002-google-news-extractor/spec.md create mode 100644 specs/002-google-news-extractor/tasks.md create mode 100644 tests/fixtures/google_news_sample.xml create mode 100644 tests/test_extract_google_news.py diff --git a/README.md b/README.md new file mode 100644 index 0000000..6e95660 --- /dev/null +++ b/README.md @@ -0,0 +1,261 @@ +# 🧠 TextNLPClassifierApp + +[![Python Version](https://img.shields.io/badge/Python-3.10%20%7C%203.11%20%7C%203.12%20%7C%203.13%20%7C%203.14-blue.svg)](https://www.python.org/) +[![License](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE) +[![Code Style](https://img.shields.io/badge/Code%20Style-Ruff-black.svg)](https://github.com/astral-sh/ruff) +[![Type Checked](https://img.shields.io/badge/Type%20Check-Mypy-blue.svg)](https://mypy-lang.org/) +[![Tests](https://img.shields.io/badge/Tests-Pytest%20(100%25%20Passing)-brightgreen.svg)](tests/) + +> Plataforma modular em Python para **Classificação Multilíngue de Inerência de Entidades (NLP/LLM/ECP)** e **Extração Inteligente de Manchetes de Notícias com Evasão Anti-Bot (Google News RSS & Foxcape)**. + +--- + +## 📑 Tabela de Conteúdos + +- [Visão Geral](#-visão-geral) +- [Instalação e Setup](#-instalação-e-setup) +- [1. Classificador de Conteúdo e Inerência (NLP / LLM / ECP)](#1--classificador-de-conteúdo-e-inerência-nlp--llm--ecp) + - [O que é e Como Funciona](#o-que-é-e-como-funciona) + - [Arquitetura de Classificação em 3 Tiers](#arquitetura-de-classificação-em-3-tiers) + - [Categorias de Decisão](#categorias-de-decisão) + - [Formato do ECP Snapshot e Markdown](#formato-do-ecp-snapshot-e-markdown) + - [Exemplos de Uso CLI](#exemplos-de-uso-cli) +- [2. Extrator de Manchetes do Google News](#2--extrator-de-manchetes-do-google-news) + - [O que é e Como Funciona](#o-que-é-e-como-funciona-1) + - [Diferenciais Técnicos](#diferenciais-técnicos) + - [Argumentos e Flags de Linha de Comando](#argumentos-e-flags-de-linha-de-comando) + - [Exemplos Práticos de Uso](#exemplos-práticos-de-uso) +- [Estrutura do Projeto](#-estrutura-do-projeto) +- [Testes e Qualidade de Código](#-testes-e-qualidade-de-código) +- [Licença](#-licença) + +--- + +## 🌟 Visão Geral + +O **TextNLPClassifierApp** reúne ferramentas de engenharia de dados e processamento de linguagem natural: + +1. **`classify.py`**: Motor de classificação semântica e contextual que determina o grau de aderência e inerência de um documento Markdown em relação a uma entidade alvo definida em um **ECP Snapshot (Entity Context Profile)**. +2. **`scripts/extract_google_news.py`**: Extrator de notícias por palavra-chave, idioma e região geográfica que utiliza o motor stealth **Foxcape** (em modo headless), decodificação paralela de URLs para os links reais dos portais de notícias e feedback em tempo real. + +--- + +## ⚙️ Instalação e Setup + +### 1. Clonar o Repositório e Criar Ambiente Virtual + +```bash +git clone +cd TextNLPClassifierApp + +python -m venv .venv +# Windows (PowerShell) +.venv\Scripts\Activate.ps1 +# Linux/macOS +source .venv/bin/activate +``` + +### 2. Instalar Dependências + +```bash +pip install -r requirements.txt +``` + +### 3. Baixar Binários do Navegador Stealth (Camoufox) + +O motor **Foxcape** utiliza o navegador customizado Camoufox para evasão avançada de fingerprinting: + +```bash +python -m camoufox fetch +``` + +--- + +## 1. 🧠 Classificador de Conteúdo e Inerência (NLP / LLM / ECP) + +### O que é e Como Funciona + +O classificador avalia se um texto em Markdown trata centralmente, contextualmente ou apenas de forma superficial de uma determinada entidade alvo (ex: empresa, figura pública, clube, conceito). A entidade é descrita através de um **ECP Snapshot (Entity Context Profile)** contendo nomes canônicos, apelidos (*aliases*), âncoras temáticas, âncoras negativas e entidades de contexto relacional. + +O sistema suporta nativamente **6 idiomas**: Português (`pt`), Inglês (`en`), Espanhol (`es`), Francês (`fr`), Alemão (`de`) e Italiano (`it`). + +### Arquitetura de Classificação em 3 Tiers + +```mermaid +flowchart TD + MD[Markdown Content] --> Pre[Pré-processamento & Detecção de Idioma] + ECP[ECP Snapshot JSON] --> Pre + Pre --> T1[Tier 1: Determinístico & Regras NLP] + T1 -- Alta Confiança --> Decision[Decisão Final JSON] + T1 -- Score Intermediário / Ambíguo --> T2{Tier 2 Habilitado?} + T2 -- Sim --> Emb[Tier 2: Similaridade Semântica / Embeddings] + T2 -- Não --> Decision + Emb -- Inconclusivo --> T3{Tier 3 Habilitado?} + T3 -- Sim --> LLM[Tier 3: LLM Inherence Adapter] + T3 -- Não --> Decision + LLM --> Decision +``` + +* **Tier 1 (Determinístico / NLP Leve)**: Análise de frequência de termos, detecção de âncoras temáticas no primeiro terço do documento, contagem de aliases e penalização por âncoras negativas. +* **Tier 2 (Vetorial / Embeddings)** *(Opcional: `--enable-embeddings`)*: Projeção vetorial e cálculo de cosseno entre o perfil da entidade e os parágrafos do documento. +* **Tier 3 (LLM Fallback)** *(Opcional: `--enable-llm`)*: Consulta a modelo de linguagem para desambiguação de casos limiares e sutilezas semânticas. + +### Categorias de Decisão + +| Categoria | Descrição | +| :--- | :--- | +| `DIRECT_INHERENT` | O conteúdo é centrado e focado diretamente na entidade alvo. | +| `CONTEXTUAL_INHERENT` | A entidade é relevante no contexto da discussão, mesmo dividindo foco com outros temas. | +| `TANGENTIAL` | A entidade é mencionada apenas de passagem ou em listas ilustrativas. | +| `NOT_RELATED` | O conteúdo não possui relação substantiva com a entidade alvo. | + +### Formato do ECP Snapshot e Markdown + +#### Exemplo de ECP Snapshot (`ecp_sample.json`): +```json +{ + "target_entity_id": "ent_river_plate", + "target_name": "River Plate", + "aliases": ["Club Atlético River Plate", "Millonario", "El Más Grande"], + "domain": "sports/football", + "anchors": ["Monumental", "Copa Libertadores", "Marcelo Gallardo", "Copa Sudamericana"], + "negative_anchors": ["Boca Juniors vitória", "Flamengo campeão"], + "graph_version": "1.0.0", + "related_entities": [ + { + "entity_id": "ent_gallardo", + "name": "Marcelo Gallardo", + "relation_type": "manager", + "weight": 0.85, + "aliases": ["Muñeco"] + } + ] +} +``` + +### Exemplos de Uso CLI + +```bash +# Classificação Determinística padrão (Tier 1) +python classify.py --ecp tests/fixtures/sample_ecp.json --content tests/fixtures/sample_article.md + +# Salvar resultado em arquivo JSON formatado +python classify.py --ecp ecp.json --content artigo.md --output out/resultado_classificacao.json + +# Habilitar camadas adicionais (Embeddings e LLM) +python classify.py --ecp ecp.json --content artigo.md --enable-embeddings --enable-llm +``` + +--- + +## 2. 📰 Extrator de Manchetes do Google News + +### O que é e Como Funciona + +O script [`scripts/extract_google_news.py`](file:///c:/Users/aferr/Projects/AFTech/DunaMedia/TextNLPClassifierApp/scripts/extract_google_news.py) é um extrator CLI autônomo projetado para consultar o feed RSS do Google News com máxima velocidade, resiliência e integridade de dados. + +### Diferenciais Técnicos + +* 🛡️ **Foxcape Headless Anti-Bot**: Utiliza o motor `foxcape` com `FoxcapeConfig(headless=True)` e Camoufox para evitar bloqueios 429/403 e captchas em segundo plano sem abrir navegadores visuais. +* 🔗 **Resolução Automática de URLs Reais**: Decodifica em paralelo (`ThreadPoolExecutor`) as URLs intermediárias do Google News (`news.google.com/rss/articles/...`) entregando diretamente o link final do portal de notícia (*Olé, TyC Sports, ge, ESPN, BBC, etc.*). +* 🧹 **Higienização de HTML**: Sanitiza resumos e descrições, eliminando tags HTML residuais (`
    `, `
  1. `, ``, ``). +* 📊 **Logging Informativo no Terminal**: Emite o status passo a passo no canal `stderr` sem poluir a saída JSON em `stdout` (100% compatível com pipes e `jq`). +* 🌎 **Mapeamento de Idioma & Região**: Mapeia automaticamente códigos regionais (`pt` → `BR:pt-BR`, `es` → `AR:es-419`, `en` → `US:en-US`) permitindo customização com `--locale`. + +### Argumentos e Flags de Linha de Comando + +| Flag | Tipo | Obrigatório | Padrão | Descrição | +| :--- | :--- | :--- | :--- | :--- | +| `-q`, `--query`, `--keyword` | `str` | **Sim** | — | Termo de pesquisa (ex: `"River Plate"`). | +| `-l`, `--lang`, `--language` | `str` | Não | `"pt"` | Código do idioma (`pt`, `es`, `en`, `de`, `fr`, `it`). | +| `--locale`, `--country` | `str` | Não | `None` | País/região editorial (`BR`, `AR`, `MX`, `US`, `GB`, `ES`). | +| `-p`, `--max-pages` | `int` | Não | `1` | Quantidade de páginas (1 a 10; cada página traz 10 itens). | +| `-o`, `--output` | `str` | Não | `None` | Caminho para salvar o arquivo JSON. | +| `--pretty` | `flag` | Não | `False` | Formata o JSON no terminal com indentação de 2 espaços. | +| `--no-resolve-urls` | `flag` | Não | `False` | Desativa a resolução e mantém as URLs brutas do Google News. | +| `-s`, `--silent`, `--quiet` | `flag` | Não | `False` | Suprime os logs de progresso no `stderr`. | + +### Exemplos Práticos de Uso + +#### 1. River Plate (Argentina / Espanhol / 2 Páginas / Salvar em Arquivo) +```bash +python scripts/extract_google_news.py -q "River Plate" -l es --locale AR -p 2 -o out/river_plate.json +``` +* **Saída no Terminal**: +```text +[INFO] 🔍 Consultando Google News: 'River Plate' (idioma: es, locale: AR, max_pages: 2)... +[INFO] 📥 Feed RSS recebido (162117 bytes). +[INFO] 📰 20 artigos extraídos do feed XML. +[INFO] 🔗 Decodificando 20 URLs do Google News para os portais reais... +[INFO] ✅ 20/20 URLs resolvidas com sucesso para os domínios de origem. +[INFO] 💾 Arquivo salvo com sucesso: 'out/river_plate.json' (20 notícias). +``` + +#### 2. Cruzeiro (Brasil / Português / Formatado no Terminal) +```bash +python scripts/extract_google_news.py --query "Cruzeiro" --lang pt --locale BR --pretty +``` + +#### 3. Fórmula 1 (Inglaterra / Inglês) +```bash +python scripts/extract_google_news.py --query "Formula 1" --lang en --locale GB --pretty +``` + +#### 4. Filtragem com `jq` em Modo Silencioso +```bash +python scripts/extract_google_news.py -q "inteligência artificial" -s | jq '.items[].url' +``` + +--- + +## 📁 Estrutura do Projeto + +```text +TextNLPClassifierApp/ +├── classify.py # CLI principal do Classificador de Inerência +├── scripts/ +│ ├── __init__.py # Pacote utilitário de scripts +│ └── extract_google_news.py # CLI de Extração de Manchetes do Google News +├── src/ # Módulos centrais do classificador +│ ├── classifier.py # Orquestrador de classificação (Tier 1, 2, 3) +│ ├── models.py # Modelos de dados e esquemas (ECPSnapshot, Decision) +│ ├── preprocessor.py # Normalização de texto e detecção de idioma +│ └── adapters/ # Adaptadores opcionais de Embeddings e LLM +├── specs/ # Especificações e planos arquiteturais (Speckit) +│ ├── 001-nlp-classifier/ # Especificações do classificador +│ └── 002-google-news-extractor/ # Especificações do extrator de notícias +├── tests/ # Suíte de testes automatizados +│ ├── fixtures/ # Amostras de ECP, Markdown e XML RSS +│ ├── test_classifier.py # Testes unitários do classificador +│ └── test_extract_google_news.py # Testes unitários e testes E2E ao vivo +├── requirements.txt # Dependências do projeto +├── pyproject.toml # Configurações de ferramentas (pytest, ruff, mypy) +└── README.md # Documentação principal +``` + +--- + +## 🧪 Testes e Qualidade de Código + +O repositório possui cobertura com testes unitários, testes de integração e testes End-to-End (E2E) com requisição de rede ao vivo: + +```bash +# Executar todos os testes do projeto +pytest -v + +# Executar especificamente os testes do Extrator de Notícias +pytest tests/test_extract_google_news.py -v + +# Validação e correção automática de formatação com Ruff +ruff check --fix . +ruff format . + +# Verificação estática de tipos com Mypy +mypy scripts/ src/ +``` + +--- + +## 📄 Licença + +Este projeto está licenciado sob os termos da licença **MIT**. Consulte o arquivo `LICENSE` para mais detalhes. diff --git a/docs/googlenews_extractor_guia_completo.md b/docs/googlenews_extractor_guia_completo.md new file mode 100644 index 0000000..82336a9 --- /dev/null +++ b/docs/googlenews_extractor_guia_completo.md @@ -0,0 +1,561 @@ +# Extrator de Notícias do Google News — Guia Completo de Funcionamento + +> Documento auto-contido. Pode ser copiado e colado em outra sessão sem memória: +> ele contém toda a informação necessária para entender, reproduzir ou portar +> o extrator de manchetes do Google News deste repositório (`GoogleNewsETL`). + +--- + +## 1. Visão geral (arquitetura) + +O extrator segue **Clean Architecture** em camadas: + +``` +┌──────────────────────────────────────────────────────────────┐ +│ application/ (casos de uso + DTOs) │ +│ extract_news_use_case.py → orquestra o fluxo │ +│ dtos/extract_news_dto.py → contratos de entrada/saída │ +├──────────────────────────────────────────────────────────────┤ +│ domain/ (entidades, value objects, portas, serviços) │ +│ entities/news_article.py → entidade NewsArticle │ +│ entities/search_query.py → value object SearchQuery │ +│ ports/news_extractor_port.py → interface NewsExtractorPort│ +│ ports/url_resolver_port.py → interface UrlResolverPort │ +│ services/rate_limiter_service.py → throttling │ +├──────────────────────────────────────────────────────────────┤ +│ infrastructure/ (adaptadores concretos) │ +│ adapters/google_news_extractor_adapter.py → ★ o extrator │ +│ adapters/playwright_url_resolver_adapter.py → resolve URLs│ +└──────────────────────────────────────────────────────────────┘ +``` + +**Princípio chave:** o caso de uso depende da *porta* (`NewsExtractorPort`), nunca do adaptador concreto. O `GoogleNewsExtractorAdapter` implementa essa porta. Isso permite trocar o mecanismo de raspagem (RSS, Playwright, etc.) sem tocar no domínio. + +**Fluxo resumido:** + +``` +InputDTO ──► ExtractNewsUseCase.execute() ──► SearchQuery (validação) + │ + ▼ + NewsExtractorPort.extract(query) + │ + ▼ + GoogleNewsExtractorAdapter.extract() + ├─ _fetch_rss() → parseia feed RSS + └─ url_resolver.resolve_batch() → URLs finais + │ + ▼ + list[NewsArticle] + │ + ▼ + ExtractNewsOutputDTO (JSON) +``` + +--- + +## 2. Entrada + +### 2.1 DTO de entrada (`googlenews_etl/application/dtos/extract_news_dto.py`) + +```python +class ExtractNewsInputDTO(BaseModel): + """DTO de Entrada do Caso de Uso de Extração.""" + + keyword: str = Field(..., description="Palavra ou expressão de busca") + language: str = Field(..., description="Código do idioma (ex: 'es', 'pt', 'en')") + max_pages: int = Field(default=3, ge=1, le=10, description="Quantidade de páginas para extrair (1 a 10)") +``` + +| Campo | Tipo | Obrigatório | Descrição | +|------------|------|-------------|--------------------------------------------| +| `keyword` | str | sim | Palavra/expressão de busca | +| `language` | str | sim | Código do idioma (ex: `pt`, `en`, `es`) | +| `max_pages`| int | não (def=3) | Páginas a extrair, entre **1 e 10** (10 itens/página) | + +### 2.2 Value Object de validação (`googlenews_etl/domain/entities/search_query.py`) + +O use case **nunca usa o DTO cru**: converte-o em `SearchQuery`, que valida as regras de domínio no `__post_init__`: + +```python +@dataclass(frozen=True) +class SearchQuery: + """Value Object representando os parâmetros validados de consulta.""" + + keyword: str + language: str + max_pages: int = 3 + + def __post_init__(self) -> None: + if not self.keyword or not self.keyword.strip(): + raise InvalidSearchQueryError("A palavra-chave não pode ser vazia.") + + if not self.language or len(self.language.strip()) < 2: + raise InvalidSearchQueryError("O idioma deve conter pelo menos 2 caracteres (ex: 'es', 'pt', 'en').") + + if self.max_pages < 1 or self.max_pages > 10: + raise InvalidSearchQueryError("O número máximo de páginas deve estar entre 1 e 10.") + + @property + def clean_keyword(self) -> str: + return self.keyword.strip() + + @property + def clean_language(self) -> str: + return self.language.strip().lower() +``` + +- Campos congelados (`frozen=True`) → imutáveis. +- `clean_keyword` / `clean_language` são os valores normalizados usados na busca. +- Falha de validação lança `InvalidSearchQueryError` (exceção de domínio). + +--- + +## 3. Processamento — passo a passo + +### 3.1 O caso de uso (`googlenews_etl/application/use_cases/extract_news_use_case.py`) + +É o orquestrador completo. Ele faz 3 coisas: + +```python +class ExtractNewsUseCase: + def __init__(self, extractor: NewsExtractorPort | None = None) -> None: + if extractor is None: + from googlenews_etl.infrastructure.adapters.google_news_extractor_adapter import ( + GoogleNewsExtractorAdapter, + ) + self.extractor = GoogleNewsExtractorAdapter() + else: + self.extractor = extractor + + def execute(self, input_dto: ExtractNewsInputDTO) -> ExtractNewsOutputDTO: + # 1. Validação de Domínio (Value Object) + search_query = SearchQuery( + keyword=input_dto.keyword, + language=input_dto.language, + max_pages=input_dto.max_pages, + ) + + # 2. Execução da Extração via Porta (Desacoplada) + articles = self.extractor.extract(search_query) + + # 3. Mapeamento de Entidades de Domínio -> Output DTO + article_dtos = [ + NewsArticleDTO( + titulo=art.title, + subtitulo=art.subtitle, + quando_publicado=art.published_at, + url=art.url, + pagina=art.page, + ) + for art in articles + ] + + return ExtractNewsOutputDTO( + query=search_query.clean_keyword, + language=search_query.clean_language, + total_paginas=search_query.max_pages, + total_itens=len(article_dtos), + scraped_at=datetime.now(UTC).isoformat(), + items=article_dtos, + ) +``` + +Notas importantes: +- **Injeção de dependência com fallback:** se não receber um extrator, o use case instancia `GoogleNewsExtractorAdapter()` por padrão (import lazy dentro do `__init__`). +- A extração passa pela **porta** `NewsExtractorPort.extract(query)` — desacoplamento da infraestrutura. +- A saída é montada com `scraped_at` = timestamp UTC ISO do momento da raspagem. + +### 3.2 A porta (`googlenews_etl/domain/ports/news_extractor_port.py`) + +```python +class NewsExtractorPort(ABC): + """ + Porta (Interface) para o serviço de extração de notícias do Google News. + Permite desacoplar totalmente o mecanismo de raspagem (HTTP, Playwright, RSS, RabbitMQ, etc.) do domínio. + """ + + @abstractmethod + def extract(self, query: SearchQuery) -> list[NewsArticle]: + """Extrai as notícias correspondentes aos critérios de busca.""" + pass +``` + +### 3.3 O adaptador concreto — o coração do extrator (`googlenews_etl/infrastructure/adapters/google_news_extractor_adapter.py`) + +#### 3.3.1 Inicialização: sessão HTTP com impersonação de browser + +```python +class GoogleNewsExtractorAdapter(NewsExtractorPort): + DEFAULT_HEADERS = { + "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36", + } + + def __init__( + self, + rate_limiter: RateLimiterService | None = None, + url_resolver: UrlResolverPort | None = None, + impersonate: str = "chrome120", + resolve_final_urls: bool = True, + ) -> None: + self.impersonate = impersonate + self.rate_limiter = rate_limiter or RateLimiterService(min_delay_seconds=0.5, max_delay_seconds=1.0) + self.url_resolver = url_resolver or PlaywrightUrlResolverAdapter() + self.resolve_final_urls = resolve_final_urls + self.session = requests.Session(impersonate=self.impersonate) + self.session.headers.update(self.DEFAULT_HEADERS) +``` + +- Usa `curl_cffi` com `impersonate="chrome120"` — imita o TLS fingerprint do Chrome para evitar bloqueios. +- `RateLimiterService` com delay aleatório 0.5–1.0s entre requisições (configurável). +- `resolve_final_urls=True` por padrão → resolve as URLs intermediárias do Google para as URLs reais dos veículos. + +#### 3.3.2 Mapeamento idioma → parâmetros `hl`/`gl` (`_get_hl_gl`) + +```python +def _get_hl_gl(self, lang_raw: str) -> tuple[str, str]: + """Mapeia dinamicamente código de idioma e país para os parâmetros hl e gl do Google News.""" + lang_clean = lang_raw.lower().replace("-", "_") + + locale_map = { + "pt": ("pt-BR", "BR"), + "pt_br": ("pt-BR", "BR"), + "es": ("es-419", "AR"), + "es_mx": ("es-419", "MX"), + "es_es": ("es", "ES"), + "en": ("en-US", "US"), + "en_gb": ("en-GB", "GB"), + "en_uk": ("en-GB", "GB"), + "en_us": ("en-US", "US"), + "de": ("de", "DE"), + "de_de": ("de", "DE"), + "it": ("it", "IT"), + "it_it": ("it", "IT"), + "fr": ("fr", "FR"), + } + + if lang_clean in locale_map: + return locale_map[lang_clean] + + parts = lang_clean.split("_") + if len(parts) == 2: + return (f"{parts[0]}-{parts[1].upper()}", parts[1].upper()) + + return (lang_clean, lang_clean.upper()) +``` + +- `hl` = idioma da interface, `gl` = país da região (ex: `pt` → `pt-BR`/`BR`). +- Fallback genérico: `xx_yy` → `xx-YY`/`YY`; senão `xx`/`XX`. + +#### 3.3.3 ★ Extração do RSS — o ponto fundamental (`_fetch_rss`) + +**Este é o trecho que extrai de fato as manchetes com título, URL e data de publicação:** + +```python +def _fetch_rss(self, query: SearchQuery) -> list[NewsArticle]: + encoded_query = urllib.parse.quote_plus(query.clean_keyword) + hl, gl = self._get_hl_gl(query.clean_language) + rss_url = f"https://news.google.com/rss/search?q={encoded_query}&hl={hl}&gl={gl}&ceid={gl}:{hl}" + + response = self.session.get(rss_url) + response.raise_for_status() + + soup = BeautifulSoup(response.content, "xml") + rss_items = soup.find_all("item") + + articles: list[NewsArticle] = [] + max_allowed = query.max_pages * 10 + + for idx, item in enumerate(rss_items[:max_allowed]): + page_number = (idx // 10) + 1 + title = item.find("title").text if item.find("title") else "" + link = item.find("link").text if item.find("link") else "" + pub_date = item.find("pubDate").text if item.find("pubDate") else "" + desc_raw = item.find("description").text if item.find("description") else "" + + desc_soup = BeautifulSoup(desc_raw, "html.parser") + snippet = desc_soup.get_text(separator=" ", strip=True) if desc_raw else None + + if title and link: + articles.append( + NewsArticle( + title=title, + subtitle=snippet if snippet != title else None, + published_at=pub_date, + url=link, + page=page_number, + ) + ) + + return articles +``` + +**Pontos fundamentais deste trecho:** + +| # | Mecanismo | Detalhe | +|---|-----------|---------| +| 1 | **URL do RSS** | `https://news.google.com/rss/search?q={keyword}&hl={hl}&gl={gl}&ceid={gl}:{hl}` — RSS oficial de busca do Google News | +| 2 | **Parsing XML** | `BeautifulSoup(response.content, "xml")` + `find_all("item")` (formato RSS padrão) | +| 3 | **Limite** | `max_pages * 10` itens — cada "página" do Google News = 10 itens | +| 4 | **Nº da página** | `page_number = (idx // 10) + 1` — agrupa os itens em páginas de 10 | +| 5 | **Campos extraídos por item** | `title`, `link`, `pubDate`, `description` (XML do RSS) | +| 6 | **Limpeza do resumo** | `description` contém HTML — `BeautifulSoup(desc_raw, "html.parser")` + `get_text(separator=" ", strip=True)` remove tags | +| 7 | **Filtro** | item só entra se tiver `title` **e** `link` | +| 8 | **Dedupe de subtítulo** | `subtitle = snippet if snippet != title else None` — se o resumo for igual ao título, fica `None` | + +#### 3.3.4 Orquestração com resolução de URLs (`extract`) + +```python +def extract(self, query: SearchQuery) -> list[NewsArticle]: + # Busca direta das manchetes pelo RSS oficial do Google News + all_articles = self._fetch_rss(query) + + # Resolução paralela das URLs finais dos veículos se ativado + if self.resolve_final_urls and all_articles: + raw_urls = [a.url for a in all_articles] + resolved_urls = self.url_resolver.resolve_batch(raw_urls) + + resolved_articles: list[NewsArticle] = [] + for idx, article in enumerate(all_articles): + new_url = resolved_urls[idx] if idx < len(resolved_urls) else article.url + resolved_articles.append(dataclasses.replace(article, url=new_url)) + + all_articles = resolved_articles + + return all_articles +``` + +- As URLs do RSS do Google News são intermediárias (`news.google.com/rss/articles/CBMi...`). +- `resolve_batch` resolve **em paralelo** (Playwright headless) para as URLs diretas dos veículos. +- `dataclasses.replace(article, url=new_url)` preserva os demais campos. + +### 3.4 Resolução de URLs (`googlenews_etl/infrastructure/adapters/playwright_url_resolver_adapter.py`) + +```python +class PlaywrightUrlResolverAdapter(UrlResolverPort): + def __init__(self, timeout_ms: int = 6000, max_concurrent: int = 5) -> None: + self.timeout_ms = timeout_ms + self.max_concurrent = max_concurrent + + async def _resolve_single_async(self, context, semaphore, url: str) -> str: + if not url or "news.google.com/rss/articles/" not in url: + return url + + async with semaphore: + page = await context.new_page() + target_url = url + + def handle_request(req): + nonlocal target_url + u = req.url + if not any( + x in u + for x in [ + "google.", "gstatic.", "googleapis.", "googletagmanager.", + "w3.org", "schema.org", + ] + ): + if not target_url or target_url == url: + if u.startswith("http"): + target_url = u + + page.on("request", handle_request) + try: + await page.goto(url, wait_until="commit", timeout=self.timeout_ms) + for _ in range(12): + await asyncio.sleep(0.25) + if "google.com" not in page.url: + target_url = page.url + break + if target_url and target_url != url: + break + except Exception: + pass + finally: + await page.close() + + return target_url or url +``` + +- Abre cada URL em uma página headless e **captura o primeiro request não-Google** (o redirecionamento para o veículo). +- `Semaphore(max_concurrent=5)` limita concorrência; timeout de 6s por URL. +- Intercepta requisições (`page.on("request")`) filtrando domínios de Google/telemetria. + +### 3.5 Rate limiter (`googlenews_etl/domain/services/rate_limiter_service.py`) + +```python +class RateLimiterService: + def __init__(self, min_delay_seconds: float = 1.0, max_delay_seconds: float = 2.5) -> None: + self.min_delay = min_delay_seconds + self.max_delay = max_delay_seconds + + def wait(self) -> float: + """Aplica uma pausa aleatória dentro dos limites configurados e retorna o tempo aguardado.""" + delay = random.uniform(self.min_delay, self.max_delay) + time.sleep(delay) + return delay +``` + +- Delay **aleatório** entre requisições (evita padrão detectável/anti-bot). + +--- + +## 4. Entidade de domínio da notícia (`googlenews_etl/domain/entities/news_article.py`) + +```python +@dataclass(frozen=True) +class NewsArticle: + """Entidade do Domínio representando uma notícia extraída do Google News.""" + + title: str + url: str + page: int + subtitle: str | None = None + published_at: str | None = None + + def __post_init__(self) -> None: + if not self.title or not self.title.strip(): + raise ValueError("O título da notícia não pode ser vazio.") + if not self.url or not self.url.strip(): + raise ValueError("A URL da notícia não pode ser vazia.") +``` + +| Campo | Tipo | Origem no RSS | +|----------------|------------|----------------------------------| +| `title` | str | `` do `<item>` | +| `url` | str | `<link>` do `<item>` (resolvida depois) | +| `page` | int | Calculado: `(idx // 10) + 1` | +| `subtitle` | str\|None | `<description>` limpo (ou `None`)| +| `published_at` | str\|None | `<pubDate>` do `<item>` | + +**Nota:** `published_at` é mantido como **string crua** do RSS (formato RFC 822, ex: `Thu, 20 Aug 2026 10:00:00 GMT`). Nenhum parse de data acontece no extrator. + +--- + +## 5. Saída + +### 5.1 DTOs de saída (`googlenews_etl/application/dtos/extract_news_dto.py`) + +```python +class NewsArticleDTO(BaseModel): + """DTO individual para representação de cada artigo.""" + + titulo: str + subtitulo: str | None = None + quando_publicado: str | None = None + url: str + pagina: int + + +class ExtractNewsOutputDTO(BaseModel): + """DTO de Saída estruturado com o resultado consolidador do ETL.""" + + query: str + language: str + total_paginas: int + total_itens: int + scraped_at: str + items: list[NewsArticleDTO] +``` + +### 5.2 Exemplo de saída JSON + +Entrada: `{"keyword": "inteligencia artificial", "language": "pt", "max_pages": 1}` + +```json +{ + "query": "inteligencia artificial", + "language": "pt", + "total_paginas": 1, + "total_itens": 10, + "scraped_at": "2026-08-20T14:32:10.482930+00:00", + "items": [ + { + "titulo": "Empresas aceleram adoção de inteligência artificial no Brasil", + "subtitulo": "Levantamento mostra crescimento de 40% no uso de IA generativa...", + "quando_publicado": "Thu, 20 Aug 2026 09:12:00 GMT", + "url": "https://exemplo.com.br/noticia/123", + "pagina": 1 + } + ] +} +``` + +--- + +## 6. Resumo do fluxo completo (entrada → saída) + +``` +1. ExtractNewsInputDTO(keyword, language, max_pages) + │ +2. SearchQuery (valida: keyword não vazia, language ≥ 2 chars, 1 ≤ max_pages ≤ 10) + │ +3. NewsExtractorPort.extract(query) ← porta (abstração) + │ +4. GoogleNewsExtractorAdapter.extract(query) + │ a) _get_hl_gl(language) → (hl, gl) ex: "pt" → ("pt-BR", "BR") + │ b) _fetch_rss(query): + │ URL: https://news.google.com/rss/search?q=...&hl=...&gl=...&ceid=... + │ GET com curl_cffi (impersonate chrome120) + │ BeautifulSoup XML → itens + │ extrai title, link, pubDate, description (HTML limpo) + │ limita a max_pages * 10 itens, pagina = (idx // 10) + 1 + │ c) resolve_batch(urls) via Playwright → URLs finais dos veículos + │ +5. list[NewsArticle] (entidade imutável com validação title/url não vazios) + │ +6. Mapeamento → list[NewsArticleDTO] (titulo, subtitulo, quando_publicado, url, pagina) + │ +7. ExtractNewsOutputDTO (query, language, total_paginas, total_itens, scraped_at, items) +``` + +--- + +## 7. Dependências para rodar (o que NÃO está nos 4 arquivos centrais) + +Para portar a extração a outro repositório, além dos 4 arquivos centrais +(`extract_news_use_case.py`, `google_news_extractor_adapter.py`, `news_article.py`, +`extract_news_dto.py`), é preciso: + +| Componente | Arquivo | Papel | +|------------|---------|-------| +| `NewsExtractorPort` | `domain/ports/news_extractor_port.py` | Interface que o adaptador implementa | +| `SearchQuery` | `domain/entities/search_query.py` | Value object validado usado na busca | +| `UrlResolverPort` | `domain/ports/url_resolver_port.py` | Interface do resolvedor de URLs | +| `PlaywrightUrlResolverAdapter` | `infrastructure/adapters/playwright_url_resolver_adapter.py` | Resolução das URLs intermediárias | +| `RateLimiterService` | `domain/services/rate_limiter_service.py` | Throttling entre requisições | +| `InvalidSearchQueryError` | `domain/exceptions/domain_exceptions.py` | Exceção de validação do `SearchQuery` | + +### Dependências de bibliotecas (requirements) + +- `curl_cffi` — sessão HTTP com impersonação de TLS do Chrome +- `beautifulsoup4` — parsing XML/HTML do feed +- `pydantic` — DTOs de entrada/saída +- `playwright` — resolução de URLs (navegador headless) +- Python ≥ 3.11 (uso de `X | None` em anotações de tipo) + +### Comportamentos observáveis (honestidade) + +- `published_at` é string crua do RSS (RFC 822), **não** parseada. +- `subtitle` vem do `description` do item com HTML removido; vira `None` se igual ao título. +- O item só é mantido se tiver `title` e `link` não vazios. +- `resolve_final_urls` pode ser desligado (`False`) para pular a etapa Playwright. +- O rate limiter existe, mas no `_fetch_rss` atual o delay é aplicado apenas por construção + do `RateLimiterService` (o método `wait()` está disponível para chamadas sequenciais). + +--- + +## 8. Como chamar (exemplo de uso) + +```python +from googlenews_etl.application.dtos.extract_news_dto import ExtractNewsInputDTO +from googlenews_etl.application.use_cases.extract_news_use_case import ExtractNewsUseCase + +dto_in = ExtractNewsInputDTO(keyword="inteligencia artificial", language="pt", max_pages=1) +resultado = ExtractNewsUseCase().execute(dto_in) + +print(resultado.total_itens) # ex: 10 +print(resultado.items[0].titulo) # título da primeira manchete +print(resultado.items[0].url) # URL final resolvida +print(resultado.items[0].quando_publicado) # data crua do RSS +``` \ No newline at end of file diff --git a/examples/ecp_sao_paulo_futebol_clube.json b/examples/ecp_sao_paulo_futebol_clube.json new file mode 100644 index 0000000..67dce32 --- /dev/null +++ b/examples/ecp_sao_paulo_futebol_clube.json @@ -0,0 +1,739 @@ +{ + "schema_version": "ecp-nlp-poc-v1", + "profile_kind": "entity_context_profile", + "profile_status": "poc_reference", + "target_entity_id": "ecp_sao_paulo_fc", + "target_name": "São Paulo Futebol Clube", + "canonical_name": "São Paulo Futebol Clube", + "qid": "Q38568", + "entity_type": "sports_club", + "domains": [ + "sports", + "football", + "brazil_football" + ], + "primary_language": "pt-BR", + "languages": [ + "pt-BR", + "pt" + ], + "geo": { + "country": "BR", + "country_name": "Brazil", + "region": "SP", + "region_name": "São Paulo", + "city": "São Paulo" + }, + "official": { + "website": "https://www.saopaulofc.net/", + "domains": [ + "saopaulofc.net" + ] + }, + "identity": { + "short_description": "Brazilian professional football club based in São Paulo, Brazil.", + "founded_year": 1930, + "sport": "association_football", + "colors": [ + "red", + "white", + "black" + ], + "common_nicknames": [ + "Tricolor Paulista", + "Clube da Fé", + "Soberano" + ], + "home_venue": "MorumBIS", + "home_venue_aliases": [ + "Morumbi", + "Estádio do Morumbi", + "Estádio Cícero Pompeu de Toledo", + "Cícero Pompeu de Toledo", + "MorumBIS" + ] + }, + "aliases": [ + "São Paulo Futebol Clube", + "São Paulo FC", + "São Paulo F.C.", + "SPFC", + "São Paulo", + "Tricolor Paulista", + "Clube da Fé", + "Soberano" + ], + "alias_rules": [ + { + "value": "São Paulo Futebol Clube", + "strength": "strong", + "ambiguous": false, + "requires_context": [] + }, + { + "value": "São Paulo FC", + "strength": "strong", + "ambiguous": false, + "requires_context": [] + }, + { + "value": "São Paulo F.C.", + "strength": "strong", + "ambiguous": false, + "requires_context": [] + }, + { + "value": "SPFC", + "strength": "strong", + "ambiguous": false, + "requires_context": [] + }, + { + "value": "Tricolor Paulista", + "strength": "strong", + "ambiguous": false, + "requires_context": [ + "football" + ] + }, + { + "value": "Clube da Fé", + "strength": "medium", + "ambiguous": true, + "requires_context": [ + "football", + "São Paulo FC", + "SPFC", + "Tricolor Paulista" + ] + }, + { + "value": "Soberano", + "strength": "medium", + "ambiguous": true, + "requires_context": [ + "football", + "São Paulo FC", + "SPFC", + "Tricolor Paulista" + ] + }, + { + "value": "São Paulo", + "strength": "weak", + "ambiguous": true, + "requires_context": [ + "football", + "club", + "team", + "match", + "goal", + "coach", + "stadium", + "championship", + "SPFC", + "Tricolor Paulista", + "Morumbi" + ] + } + ], + "anchors": [ + "futebol", + "clube", + "time", + "equipe", + "tricolor", + "torcida", + "campeonato", + "partida", + "jogo", + "gol", + "técnico", + "elenco", + "jogador", + "estádio", + "Morumbi", + "MorumBIS", + "Estádio do Morumbi", + "Cícero Pompeu de Toledo", + "Libertadores", + "Copa Libertadores", + "Campeonato Brasileiro", + "Brasileirão", + "Copa do Brasil", + "Campeonato Paulista", + "Paulistão", + "Mundial de Clubes", + "Rogério Ceni", + "Raí", + "Telê Santana", + "Luis Fabiano", + "Luís Fabiano", + "Muricy Ramalho", + "Calleri", + "Luciano", + "Lucas Moura" + ], + "anchor_groups": { + "strong": [ + "SPFC", + "São Paulo FC", + "São Paulo Futebol Clube", + "Tricolor Paulista", + "Morumbi", + "MorumBIS", + "Estádio do Morumbi", + "Cícero Pompeu de Toledo", + "Rogério Ceni", + "Raí", + "Telê Santana" + ], + "medium": [ + "Libertadores", + "Copa Libertadores", + "Campeonato Brasileiro", + "Brasileirão", + "Copa do Brasil", + "Campeonato Paulista", + "Paulistão", + "Mundial de Clubes", + "Luis Fabiano", + "Luís Fabiano", + "Muricy Ramalho" + ], + "weak": [ + "futebol", + "clube", + "time", + "equipe", + "tricolor", + "torcida", + "campeonato", + "partida", + "jogo", + "gol", + "técnico", + "elenco", + "jogador", + "estádio" + ], + "volatile": [ + "Calleri", + "Luciano", + "Lucas Moura" + ] + }, + "negative_anchors": [ + "cidade de São Paulo", + "município de São Paulo", + "estado de São Paulo", + "governo de São Paulo", + "governo do estado de São Paulo", + "prefeitura de São Paulo", + "prefeito de São Paulo", + "capital paulista", + "região metropolitana de São Paulo", + "trânsito em São Paulo", + "chuva em São Paulo", + "violência em São Paulo", + "segurança pública em São Paulo", + "evento em São Paulo", + "show em São Paulo", + "restaurante em São Paulo", + "bairro de São Paulo", + "bolsa de valores de São Paulo", + "B3", + "São Paulo Fashion Week", + "Universidade de São Paulo", + "USP" + ], + "negative_anchor_groups": { + "geo_political": [ + "cidade de São Paulo", + "município de São Paulo", + "estado de São Paulo", + "governo de São Paulo", + "governo do estado de São Paulo", + "prefeitura de São Paulo", + "prefeito de São Paulo", + "capital paulista", + "região metropolitana de São Paulo" + ], + "urban_news": [ + "trânsito em São Paulo", + "chuva em São Paulo", + "violência em São Paulo", + "segurança pública em São Paulo", + "bairro de São Paulo" + ], + "non_sports_events": [ + "evento em São Paulo", + "show em São Paulo", + "restaurante em São Paulo", + "São Paulo Fashion Week" + ], + "institutions_or_finance": [ + "bolsa de valores de São Paulo", + "B3", + "Universidade de São Paulo", + "USP" + ] + }, + "graph_version": "spfc-graph-snapshot-v1", + "related_entities": [ + { + "entity_id": "ecp_morumbi", + "name": "MorumBIS", + "canonical_name": "Estádio Cícero Pompeu de Toledo", + "aliases": [ + "Morumbi", + "MorumBIS", + "Estádio do Morumbi", + "Cícero Pompeu de Toledo", + "Estádio Cícero Pompeu de Toledo" + ], + "entity_type": "sports_venue", + "relation_type": "HOME_STADIUM", + "weight": 0.95, + "confidence": 0.95, + "scope_terms": [ + "football", + "stadium", + "match", + "club", + "torcida", + "jogo", + "campeonato", + "São Paulo FC", + "SPFC" + ], + "classification_effect": "contextual_inherent_candidate" + }, + { + "entity_id": "ecp_rogerio_ceni", + "name": "Rogério Ceni", + "canonical_name": "Rogério Ceni", + "aliases": [ + "Rogério Ceni", + "Ceni", + "M1TO", + "Mito" + ], + "entity_type": "athlete_or_coach", + "relation_type": "HAS_IDOL", + "weight": 0.9, + "confidence": 0.95, + "scope_terms": [ + "football", + "goalkeeper", + "idol", + "coach", + "history", + "SPFC", + "tricolor" + ], + "classification_effect": "contextual_inherent_candidate" + }, + { + "entity_id": "ecp_rai", + "name": "Raí", + "canonical_name": "Raí Souza Vieira de Oliveira", + "aliases": [ + "Raí", + "Rai Souza Vieira de Oliveira", + "Raí Souza" + ], + "entity_type": "athlete", + "relation_type": "HAS_IDOL", + "weight": 0.85, + "confidence": 0.9, + "scope_terms": [ + "football", + "idol", + "midfielder", + "history", + "SPFC", + "tricolor" + ], + "classification_effect": "contextual_inherent_candidate" + }, + { + "entity_id": "ecp_tele_santana", + "name": "Telê Santana", + "canonical_name": "Telê Santana", + "aliases": [ + "Telê Santana", + "Tele Santana" + ], + "entity_type": "coach", + "relation_type": "HISTORIC_COACH", + "weight": 0.85, + "confidence": 0.9, + "scope_terms": [ + "football", + "coach", + "history", + "Libertadores", + "Mundial", + "SPFC", + "tricolor" + ], + "classification_effect": "contextual_inherent_candidate" + }, + { + "entity_id": "ecp_muricy_ramalho", + "name": "Muricy Ramalho", + "canonical_name": "Muricy Ramalho", + "aliases": [ + "Muricy Ramalho", + "Muricy" + ], + "entity_type": "coach", + "relation_type": "HISTORIC_COACH", + "weight": 0.78, + "confidence": 0.85, + "scope_terms": [ + "football", + "coach", + "Brasileirão", + "SPFC", + "tricolor" + ], + "classification_effect": "contextual_inherent_candidate" + }, + { + "entity_id": "ecp_luis_fabiano", + "name": "Luis Fabiano", + "canonical_name": "Luís Fabiano", + "aliases": [ + "Luis Fabiano", + "Luís Fabiano", + "Fabuloso" + ], + "entity_type": "athlete", + "relation_type": "FORMER_PLAYER", + "weight": 0.75, + "confidence": 0.85, + "scope_terms": [ + "football", + "striker", + "player", + "goal", + "SPFC", + "tricolor" + ], + "classification_effect": "contextual_inherent_candidate" + }, + { + "entity_id": "ecp_corinthians", + "name": "Sport Club Corinthians Paulista", + "canonical_name": "Sport Club Corinthians Paulista", + "aliases": [ + "Corinthians", + "Sport Club Corinthians Paulista", + "Timão" + ], + "entity_type": "sports_club", + "relation_type": "RIVAL_OF", + "weight": 0.75, + "confidence": 0.9, + "scope_terms": [ + "football", + "derby", + "rival", + "clássico", + "Majestoso", + "Campeonato Paulista", + "Brasileirão" + ], + "classification_effect": "contextual_inherent_candidate" + }, + { + "entity_id": "ecp_palmeiras", + "name": "Sociedade Esportiva Palmeiras", + "canonical_name": "Sociedade Esportiva Palmeiras", + "aliases": [ + "Palmeiras", + "Sociedade Esportiva Palmeiras", + "Verdão" + ], + "entity_type": "sports_club", + "relation_type": "RIVAL_OF", + "weight": 0.72, + "confidence": 0.9, + "scope_terms": [ + "football", + "derby", + "rival", + "clássico", + "Choque-Rei", + "Campeonato Paulista", + "Brasileirão" + ], + "classification_effect": "contextual_inherent_candidate" + }, + { + "entity_id": "ecp_santos_fc", + "name": "Santos Futebol Clube", + "canonical_name": "Santos Futebol Clube", + "aliases": [ + "Santos", + "Santos FC", + "Santos Futebol Clube", + "Peixe" + ], + "entity_type": "sports_club", + "relation_type": "RIVAL_OF", + "weight": 0.68, + "confidence": 0.85, + "scope_terms": [ + "football", + "derby", + "rival", + "clássico", + "San-São", + "Campeonato Paulista", + "Brasileirão" + ], + "classification_effect": "contextual_inherent_candidate" + }, + { + "entity_id": "ecp_libertadores", + "name": "Copa Libertadores da América", + "canonical_name": "Copa Libertadores da América", + "aliases": [ + "Libertadores", + "Copa Libertadores", + "Copa Libertadores da América", + "CONMEBOL Libertadores" + ], + "entity_type": "sports_competition", + "relation_type": "PLAYS_COMPETITION", + "weight": 0.65, + "confidence": 0.85, + "scope_terms": [ + "football", + "competition", + "continental", + "CONMEBOL", + "title", + "SPFC" + ], + "classification_effect": "contextual_inherent_candidate" + }, + { + "entity_id": "ecp_campeonato_brasileiro", + "name": "Campeonato Brasileiro Série A", + "canonical_name": "Campeonato Brasileiro Série A", + "aliases": [ + "Campeonato Brasileiro", + "Brasileirão", + "Brasileiro Série A", + "Série A" + ], + "entity_type": "sports_competition", + "relation_type": "PLAYS_COMPETITION", + "weight": 0.62, + "confidence": 0.85, + "scope_terms": [ + "football", + "competition", + "Brazil", + "league", + "club", + "table", + "match" + ], + "classification_effect": "contextual_inherent_candidate" + }, + { + "entity_id": "ecp_copa_do_brasil", + "name": "Copa do Brasil", + "canonical_name": "Copa do Brasil", + "aliases": [ + "Copa do Brasil" + ], + "entity_type": "sports_competition", + "relation_type": "PLAYS_COMPETITION", + "weight": 0.58, + "confidence": 0.8, + "scope_terms": [ + "football", + "competition", + "Brazil", + "knockout", + "club", + "match" + ], + "classification_effect": "contextual_inherent_candidate" + }, + { + "entity_id": "ecp_campeonato_paulista", + "name": "Campeonato Paulista", + "canonical_name": "Campeonato Paulista", + "aliases": [ + "Campeonato Paulista", + "Paulistão", + "Paulista" + ], + "entity_type": "sports_competition", + "relation_type": "PLAYS_COMPETITION", + "weight": 0.58, + "confidence": 0.8, + "scope_terms": [ + "football", + "competition", + "São Paulo state", + "club", + "derby" + ], + "classification_effect": "contextual_inherent_candidate" + } + ], + "classification_profile": { + "labels": [ + "DIRECT_INHERENT", + "CONTEXTUAL_INHERENT", + "TANGENTIAL", + "NOT_RELATED", + "UNCERTAIN" + ], + "direct_inherent": { + "description": "Content is directly about São Paulo Futebol Clube.", + "strong_positive_signals": [ + "canonical_name", + "strong_alias", + "SPFC", + "Tricolor Paulista", + "official_domain", + "club-specific anchor" + ], + "minimum_expected_context": [ + "football", + "club", + "match", + "player", + "coach", + "stadium", + "competition" + ] + }, + "contextual_inherent": { + "description": "Content is mainly about a strongly related entity, but relevant to São Paulo Futebol Clube.", + "required_signals": [ + "related_entity_match", + "relation_weight >= 0.65", + "sports_or_football_context" + ], + "examples": [ + "article about Rogério Ceni as São Paulo idol or coach", + "article about Raí in relation to São Paulo history", + "article about MorumBIS as São Paulo home venue", + "article about São Paulo rivalry with Corinthians or Palmeiras" + ] + }, + "tangential": { + "description": "Content mentions São Paulo FC or a related term, but the entity is not meaningfully part of the subject.", + "examples": [ + "generic Brasileirão table with São Paulo only listed among many clubs", + "article about another club that only mentions upcoming match against São Paulo" + ] + }, + "not_related": { + "description": "Content is about another São Paulo meaning or unrelated subject.", + "strong_negative_signals": [ + "city_or_state_context", + "government_context", + "weather_or_traffic_context", + "university_context", + "finance_context", + "fashion_or_event_context" + ] + }, + "uncertain": { + "description": "Evidence is weak, conflicting, or insufficient.", + "fallback_recommendation": "send_to_llm_judge" + } + }, + "scoring_hints": { + "strong_alias_weight": 0.45, + "ambiguous_alias_weight": 0.12, + "strong_anchor_weight": 0.25, + "medium_anchor_weight": 0.15, + "weak_anchor_weight": 0.05, + "negative_anchor_penalty": 0.4, + "related_entity_weight_multiplier": 0.5, + "official_domain_weight": 0.5, + "direct_threshold": 0.75, + "contextual_threshold": 0.65, + "tangential_threshold": 0.35, + "uncertain_band": [ + 0.45, + 0.65 + ] + }, + "output_contract": { + "label": "DIRECT_INHERENT | CONTEXTUAL_INHERENT | TANGENTIAL | NOT_RELATED | UNCERTAIN", + "confidence": "number from 0.0 to 1.0", + "matched_signals": "array of matched positive signals", + "negative_signals": "array of matched negative signals", + "related_entity_matches": "array of matched related entities", + "explanation": "short human-readable explanation", + "needs_llm_fallback": "boolean" + }, + "quality": { + "profile_confidence": 0.86, + "intended_use": "local deterministic NLP POC fixture", + "not_intended_for": [ + "final production ECP schema", + "canonical graph storage", + "legal/compliance decisioning", + "fully automated publishing without review" + ], + "known_limitations": [ + "Current player anchors may become stale.", + "The alias 'São Paulo' is highly ambiguous and must never be enough alone for DIRECT_INHERENT.", + "Generic football terms are weak signals only.", + "Related entities should usually produce CONTEXTUAL_INHERENT, not DIRECT_INHERENT.", + "This profile is optimized for Portuguese content first." + ] + }, + "sources": [ + { + "type": "wikidata", + "url": "https://www.wikidata.org/wiki/Q38568", + "supports": [ + "qid", + "canonical identity", + "entity type", + "inception" + ] + }, + { + "type": "official_site", + "url": "https://www.saopaulofc.net/", + "supports": [ + "official domain", + "club identity", + "sports sections" + ] + }, + { + "type": "official_site", + "url": "https://www.saopaulofc.net/institucional/sobre-o-sao-paulo-fc/", + "supports": [ + "history", + "founded year", + "club narrative", + "MorumBIS", + "historic figures" + ] + } + ], + "metadata": { + "created_for": "ecp-nlp-classifier-poc", + "created_at": "2026-08-20", + "graph_snapshot": "spfc-graph-snapshot-v1", + "review_status": "example_ready" + } +} \ No newline at end of file diff --git a/graphify-out/.graphify_labels.json b/graphify-out/.graphify_labels.json index 522b503..7d8c2ea 100644 --- a/graphify-out/.graphify_labels.json +++ b/graphify-out/.graphify_labels.json @@ -39,15 +39,15 @@ "37": "Plan Setup", "38": "Task Setup", "39": "Graphify Workflows", - "40": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", + "40": "main", "41": "1. Technical Decisions & Tradeoffs", "42": "1. Input Schemas", "43": "2. Basic CLI Usage Examples", "44": "2. Standard Streams & Exit Codes", - "45": "ECPSnapshot", - "46": "test_models.py", + "45": "ClassificationResult", + "46": "InherenceClassifier", "47": "detect_language", - "48": "main", + "48": "test_models.py", "49": "content_northvolt_de.md", "50": "content_presal_pt.md", "51": "content_tangential_es.md", @@ -78,5 +78,29 @@ "76": "pt/not_related.md", "77": "pt/tangential.md", "78": "tests/__init__.py", - "79": "text-nlp-classifier" + "79": "text-nlp-classifier", + "80": "get_hl_gl_ceid", + "81": "Extrator de Notícias do Google News — Guia Completo de Funcionamento", + "82": "extract_google_news.py", + "83": "ExtractionResult", + "84": "test_extract_google_news.py", + "85": "Implementation Tasks: Google News Headlines Extractor", + "86": "Feature Specification: Google News Headlines Extractor", + "87": "2. Cenários Práticos de Uso", + "88": "Implementation Plan: Google News Headlines Extractor", + "89": "scripts/__init__.py", + "90": "SearchQuery", + "91": "1. Technical Decisions & Tradeoffs", + "92": "General Readiness Checklist: Google News Headlines Extractor", + "93": "1. Entidades de Domínio & DTOs", + "94": "Specification Quality Checklist: Google News Headlines Extractor", + "95": "CLI Contract: Google News Headlines Extractor", + "96": "readiness.md", + "97": "🧠 TextNLPClassifierApp", + "98": "build_parser", + "99": "sample_rss_xml", + "100": "classifier.py", + "101": "ECPSnapshot", + "102": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", + "103": "main" } diff --git a/graphify-out/.graphify_labels.json.sig b/graphify-out/.graphify_labels.json.sig index 54b0e3f..bdce33f 100644 --- a/graphify-out/.graphify_labels.json.sig +++ b/graphify-out/.graphify_labels.json.sig @@ -1 +1 @@ -{"0": "36bdb6f09c457f7c", "1": "8c5bf6244cf710c6", "2": "efbcc9c62a3ee78b", "3": "8599153989b07faa", "4": "b5952a1f7fee9f20", "5": "b493e66e33005daa", "6": "80f79e9e2011a3e3", "7": "4654167fd211d027", "8": "50acfa00fe353440", "9": "c6d2f770737823f1", "10": "44f2ca451aea24be", "11": "feaac5ab67a8c17a", "12": "b71bd92e5edbf2e0", "13": "219d65ba6d2689e4", "14": "8e30bb8112fd02d1", "15": "03906ab80b99db85", "16": "5d51c60ba1bc2be0", "17": "a1da914f522dcd21", "18": "fbad840891b90569", "19": "0686ff2d6fe29fb3", "20": "060baa9e1924b465", "21": "a5c8f2c3080b8243", "22": "0d76852f1d29eeb1", "23": "6ff68619f2d72924", "24": "3da11675eee7ec46", "25": "a6696589e9556f97", "26": "6c752999e8a4d4b6", "27": "2d4e13ea2111d750", "28": "4b60cb0ee1ac186a", "29": "f56fbca9bb8235ec", "30": "c7beed940704509f", "31": "38be2d254fb31ae8", "32": "ee5596fcf7e7c0b3", "33": "e4d4e0a440bc599f", "34": "c897e49c001acdae", "35": "3aad272a2cf5d495", "36": "0a197439d306b956", "37": "f43acf5c8b1329af", "38": "6775efafc9b33338", "39": "8176a164778526f9", "40": "6aa00d5a83295f11", "41": "0322ff824966a4d8", "42": "784c9e3d336a7f53", "43": "4b8bb6c3f7b64856", "44": "18c0ff3e6225bcb2", "45": "635b0327b73603cf", "46": "aebae10575e16ffb", "47": "7f0025cb1cabb27d", "48": "cbb35e88e6b7e1ac", "49": "0d0f9f015921feef", "50": "8d0c81e5ca23e9a6", "51": "f79963571b9c15ee", "52": "5935824c825606cb", "53": "9685f9cbe158e50b", "54": "3d5ab759f350bc79", "55": "d549f24931a990e9", "56": "3cc031dcb648797c", "57": "a0ab88e6c629251d", "58": "76bd6412e2a22ecd", "59": "54827845564490c9", "60": "0a9736c416c0c6b9", "61": "77358620ac528153", "62": "3b0c585df09df48a", "63": "7e78cd3b28828c20", "64": "1c0c958231735f61", "65": "60b0f81225f62f69", "66": "920754c65cc94b88", "67": "df911472140a9b94", "68": "8e17bc11bcea91b9", "69": "7e905b75e4f28b95", "70": "a28424eca5d36c55", "71": "2cdb53d5b6051ab6", "72": "e42fbd3dc744e730", "73": "7fe2cac980de160c", "74": "2b1343a6a9db1487", "75": "54a1bb232f1d4ceb", "76": "442ba11d31ec0e0a", "77": "852a25b8b95bf8d1", "78": "1810ab370b9cd608", "79": "0fc5dca02a3f02f6"} \ No newline at end of file +{"0": "36bdb6f09c457f7c", "1": "8c5bf6244cf710c6", "2": "efbcc9c62a3ee78b", "3": "8599153989b07faa", "4": "b5952a1f7fee9f20", "5": "b493e66e33005daa", "6": "80f79e9e2011a3e3", "7": "4654167fd211d027", "8": "50acfa00fe353440", "9": "c6d2f770737823f1", "10": "44f2ca451aea24be", "11": "feaac5ab67a8c17a", "12": "b71bd92e5edbf2e0", "13": "219d65ba6d2689e4", "14": "8e30bb8112fd02d1", "15": "03906ab80b99db85", "16": "5d51c60ba1bc2be0", "17": "a1da914f522dcd21", "18": "fbad840891b90569", "19": "0686ff2d6fe29fb3", "20": "060baa9e1924b465", "21": "a5c8f2c3080b8243", "22": "0d76852f1d29eeb1", "23": "6ff68619f2d72924", "24": "3da11675eee7ec46", "25": "a6696589e9556f97", "26": "6c752999e8a4d4b6", "27": "2d4e13ea2111d750", "28": "4b60cb0ee1ac186a", "29": "f56fbca9bb8235ec", "30": "c7beed940704509f", "31": "38be2d254fb31ae8", "32": "ee5596fcf7e7c0b3", "33": "e4d4e0a440bc599f", "34": "c897e49c001acdae", "35": "3aad272a2cf5d495", "36": "0a197439d306b956", "37": "f43acf5c8b1329af", "38": "6775efafc9b33338", "39": "8176a164778526f9", "40": "62a40bb7296050db", "41": "0322ff824966a4d8", "42": "784c9e3d336a7f53", "43": "4b8bb6c3f7b64856", "44": "18c0ff3e6225bcb2", "45": "0172259097d0974e", "46": "d2ae82bc1907fef3", "47": "7be46d99756bf41e", "48": "a94841cd5849d3f5", "49": "0d0f9f015921feef", "50": "8d0c81e5ca23e9a6", "51": "f79963571b9c15ee", "52": "5935824c825606cb", "53": "9685f9cbe158e50b", "54": "3d5ab759f350bc79", "55": "d549f24931a990e9", "56": "3cc031dcb648797c", "57": "a0ab88e6c629251d", "58": "76bd6412e2a22ecd", "59": "54827845564490c9", "60": "0a9736c416c0c6b9", "61": "77358620ac528153", "62": "3b0c585df09df48a", "63": "7e78cd3b28828c20", "64": "1c0c958231735f61", "65": "60b0f81225f62f69", "66": "920754c65cc94b88", "67": "df911472140a9b94", "68": "8e17bc11bcea91b9", "69": "7e905b75e4f28b95", "70": "a28424eca5d36c55", "71": "2cdb53d5b6051ab6", "72": "e42fbd3dc744e730", "73": "7fe2cac980de160c", "74": "2b1343a6a9db1487", "75": "54a1bb232f1d4ceb", "76": "442ba11d31ec0e0a", "77": "852a25b8b95bf8d1", "78": "1810ab370b9cd608", "79": "0fc5dca02a3f02f6", "80": "10ea6ef8e60efb58", "81": "a38f84ae3d895236", "82": "5efe702565242e04", "83": "f74492db7d32ba1e", "84": "c0d4860b83f7cb84", "85": "f8bfd0cfe9e8b478", "86": "410d15a346bd5894", "87": "6b41d288cfd834ab", "88": "5aa6db96312a8811", "89": "80225792bb62ba04", "90": "e553a45aca39b563", "91": "d4579c5b7aa2742a", "92": "7b9ba7c3bff11361", "93": "71cd9c1fa4a857f0", "94": "34cd980be3c32d21", "95": "970093453f3b7d90", "96": "9e96780a2b7c4bd6", "97": "3befc42bd6078583", "98": "32f0d209b4ebd09b", "99": "8968e9e7d55afcbe", "100": "c14800d0ab2e5026", "101": "d7e7752d280777b1", "102": "6aa00d5a83295f11", "103": "cbb35e88e6b7e1ac"} \ No newline at end of file diff --git a/graphify-out/2026-08-20/.graphify_labels.json b/graphify-out/2026-08-20/.graphify_labels.json index 266b855..6872f15 100644 --- a/graphify-out/2026-08-20/.graphify_labels.json +++ b/graphify-out/2026-08-20/.graphify_labels.json @@ -4,7 +4,7 @@ "2": "SpecKit Utilities", "3": "Graphify Commands", "4": "speckit-analyze/SKILL.md", - "5": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", + "5": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", "6": "Feature Specification Template", "7": "Graphify Rules", "8": "Implementation Planning", @@ -39,15 +39,15 @@ "37": "Plan Setup", "38": "Task Setup", "39": "Graphify Workflows", - "40": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", + "40": "main", "41": "1. Technical Decisions & Tradeoffs", "42": "1. Input Schemas", "43": "2. Basic CLI Usage Examples", "44": "2. Standard Streams & Exit Codes", "45": "ECPSnapshot", - "46": "classifier.py", + "46": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "47": "detect_language", - "48": "main", + "48": "test_models.py", "49": "content_northvolt_de.md", "50": "content_presal_pt.md", "51": "content_tangential_es.md", @@ -78,5 +78,24 @@ "76": "pt/not_related.md", "77": "pt/tangential.md", "78": "tests/__init__.py", - "79": "text-nlp-classifier" + "79": "text-nlp-classifier", + "80": "get_hl_gl_ceid", + "81": "Extrator de Notícias do Google News — Guia Completo de Funcionamento", + "82": "extract_google_news.py", + "83": "ExtractionResult", + "84": "test_extract_google_news.py", + "85": "Implementation Tasks: Google News Headlines Extractor", + "86": "Feature Specification: Google News Headlines Extractor", + "87": "2. Cenários Práticos de Uso", + "88": "Implementation Plan: Google News Headlines Extractor", + "89": "scripts/__init__.py", + "90": "SearchQuery", + "91": "1. Technical Decisions & Tradeoffs", + "92": "General Readiness Checklist: Google News Headlines Extractor", + "93": "1. Entidades de Domínio & DTOs", + "94": "Specification Quality Checklist: Google News Headlines Extractor", + "95": "CLI Contract: Google News Headlines Extractor", + "96": "readiness.md", + "98": "build_parser", + "99": "sample_rss_xml" } diff --git a/graphify-out/2026-08-20/GRAPH_REPORT.md b/graphify-out/2026-08-20/GRAPH_REPORT.md index bdec635..96b1799 100644 --- a/graphify-out/2026-08-20/GRAPH_REPORT.md +++ b/graphify-out/2026-08-20/GRAPH_REPORT.md @@ -1,16 +1,16 @@ # Graph Report - TextNLPClassifierApp (2026-08-20) ## Corpus Check -- 132 files · ~53,988 words +- 147 files · ~65,826 words - Verdict: corpus is large enough that graph structure adds value. ## Summary -- 579 nodes · 674 edges · 80 communities (43 shown, 37 thin omitted) -- Extraction: 96% EXTRACTED · 4% INFERRED · 0% AMBIGUOUS · INFERRED: 28 edges (avg confidence: 0.95) +- 775 nodes · 931 edges · 99 communities (61 shown, 38 thin omitted) +- Extraction: 96% EXTRACTED · 4% INFERRED · 0% AMBIGUOUS · INFERRED: 36 edges (avg confidence: 0.94) - Token cost: 0 input · 0 output ## Graph Freshness -- Built from commit: `d371b81a` +- Built from commit: `67cc40f9` - Run `git rev-parse HEAD` and compare to check if the graph is stale. - Run `graphify update .` after code changes (no API cost). @@ -20,7 +20,7 @@ - SpecKit Utilities - Graphify Commands - speckit-analyze/SKILL.md -- Tasks: Multilingual NLP Entity Inherence Classifier (POC) +- POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier - Feature Specification Template - Graphify Rules - Implementation Planning @@ -51,15 +51,15 @@ - Media Transcription - Extraction Specification - Graphify Workflows -- Feature Specification: Multilingual NLP Entity Inherence Classifier (POC) +- main - 1. Technical Decisions & Tradeoffs - 1. Input Schemas - 2. Basic CLI Usage Examples - 2. Standard Streams & Exit Codes - ECPSnapshot -- classifier.py +- Tasks: Multilingual NLP Entity Inherence Classifier (POC) - detect_language -- main +- test_models.py - content_northvolt_de.md - content_presal_pt.md - content_tangential_es.md @@ -91,35 +91,53 @@ - pt/tangential.md - tests/__init__.py - text-nlp-classifier +- get_hl_gl_ceid +- Extrator de Notícias do Google News — Guia Completo de Funcionamento +- extract_google_news.py +- ExtractionResult +- test_extract_google_news.py +- Implementation Tasks: Google News Headlines Extractor +- Feature Specification: Google News Headlines Extractor +- 2. Cenários Práticos de Uso +- Implementation Plan: Google News Headlines Extractor +- scripts/__init__.py +- SearchQuery +- 1. Technical Decisions & Tradeoffs +- General Readiness Checklist: Google News Headlines Extractor +- 1. Entidades de Domínio & DTOs +- Specification Quality Checklist: Google News Headlines Extractor +- CLI Contract: Google News Headlines Extractor +- build_parser +- sample_rss_xml ## God Nodes (most connected - your core abstractions) -1. `ECPSnapshot` - 27 edges -2. `InherenceClassifier` - 21 edges -3. `ClassificationResult` - 17 edges -4. `LocalEmbeddingsAdapter` - 14 edges -5. `LLMFallbackAdapter` - 14 edges -6. `detect_language()` - 14 edges -7. `DecisionCategory` - 14 edges -8. `main()` - 13 edges +1. `ECPSnapshot` - 31 edges +2. `InherenceClassifier` - 25 edges +3. `DecisionCategory` - 18 edges +4. `ClassificationResult` - 17 edges +5. `main()` - 14 edges +6. `LocalEmbeddingsAdapter` - 14 edges +7. `LLMFallbackAdapter` - 14 edges +8. `detect_language()` - 14 edges 9. `Tasks: [FEATURE NAME]` - 13 edges -10. `BaseNLPAdapter` - 12 edges +10. `SearchQuery` - 12 edges ## Surprising Connections (you probably didn't know these) - `main()` --uses--> `ECPSnapshot` [INFERRED] classify.py → src/models.py -- `main()` --uses--> `ErrorCode` [INFERRED] - classify.py → src/models.py +- `test_extract_google_news_orchestration_mocked()` --uses--> `ExtractionResult` [INFERRED] + tests/test_extract_google_news.py → scripts/extract_google_news.py - `test_classification_result_serialization()` --uses--> `DecisionCategory` [INFERRED] tests/test_models.py → src/models.py -- `petrobras_ecp()` --uses--> `ECPSnapshot` [INFERRED] - tests/test_classifier.py → src/models.py -- `emit_error()` --uses--> `ErrorCode` [INFERRED] - classify.py → src/models.py +- `test_ecp_snapshot_defaults()` --uses--> `ECPSnapshot` [INFERRED] + tests/test_models.py → src/models.py +- `test_ecp_snapshot_missing_required()` --uses--> `ECPSnapshot` [INFERRED] + tests/test_models.py → src/models.py ## Import Cycles - None detected. -## Communities (80 total, 37 thin omitted) +## Communities (99 total, 38 thin omitted) ### Community 0 - "Task Planning" Cohesion: 0.07 @@ -141,9 +159,9 @@ Nodes (24): For /graphify add and --watch, For /graphify query, For the commit h Cohesion: 0.08 Nodes (25): 1. Initialize Analysis Context, 2. Load Artifacts (Progressive Disclosure), 3. Build Semantic Models, 4. Detection Passes (Token-Efficient Analysis), 5. Severity Assignment, 6. Produce Compact Analysis Report, 7. Provide Next Actions, 8. Offer Remediation (+17 more) -### Community 5 - "Tasks: Multilingual NLP Entity Inherence Classifier (POC)" -Cohesion: 0.06 -Nodes (33): 1. Requirement Completeness & Scope Boundaries, 2. Requirement Clarity & Decision Semantics, 3. Requirement Consistency & Alignment, 4. Acceptance Criteria & Measurability, 5. Scenario & Edge Case Coverage, Notes, POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier, Content Quality (+25 more) +### Community 5 - "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier" +Cohesion: 0.05 +Nodes (34): 1. Requirement Completeness & Scope Boundaries, 2. Requirement Clarity & Decision Semantics, 3. Requirement Consistency & Alignment, 4. Acceptance Criteria & Measurability, 5. Scenario & Edge Case Coverage, Notes, POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier, Content Quality (+26 more) ### Community 6 - "Feature Specification Template" Cohesion: 0.15 @@ -241,9 +259,9 @@ Nodes (3): For --cluster-only, For --update (incremental re-extraction), graphif Cohesion: 0.50 Nodes (3): Boundaries, Output, Scan -### Community 40 - "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)" -Cohesion: 0.14 -Nodes (14): Assumptions, Assumptions & Scope, Clarifications, Explicit Out of Scope (POC), Feature Specification: Multilingual NLP Entity Inherence Classifier (POC), Functional Requirements, Key Entities *(data models & domain entities)*, Measurable Outcomes (+6 more) +### Community 40 - "main" +Cohesion: 0.19 +Nodes (14): CaptureFixture, Path, main(), Ponto de entrada do script CLI., Valida execução padrão do CLI com saída JSON no stdout., Valida gravação em arquivo com criação automática de diretórios pais., Valida tratamento de erro e código de saída 1 para parâmetro vazio., Valida tratamento de erro e código de saída 2 para falhas de rede. (+6 more) ### Community 41 - "1. Technical Decisions & Tradeoffs" Cohesion: 0.22 @@ -262,40 +280,108 @@ Cohesion: 0.29 Nodes (6): 1.1 Arguments & Options, 1. Command Line Interface, 2.1 Exit Codes, 2.2 Standard Output (`stdout`) / Standard Error (`stderr`), 2. Standard Streams & Exit Codes, CLI Contract & Interface Specification (POC) ### Community 45 - "ECPSnapshot" -Cohesion: 0.07 -Nodes (26): ABC, Any, parametrize, BaseNLPAdapter, Base abstract adapter interface for optional Tier 2 / Tier 3 NLP enhancers., Abstract interface for pluggable NLP classification adapters., Return True if the underlying provider or model is installed and configured., Compute semantic similarity score between text and a set of candidate terms. (+18 more) +Cohesion: 0.06 +Nodes (55): ABC, Enum, parametrize, BaseNLPAdapter, Base abstract adapter interface for optional Tier 2 / Tier 3 NLP enhancers., Abstract interface for pluggable NLP classification adapters., Return True if the underlying provider or model is installed and configured., Compute semantic similarity score between text and a set of candidate terms. (+47 more) -### Community 46 - "classifier.py" -Cohesion: 0.09 -Nodes (39): emit_error(), Enum, count_phrase_occurrences(), InherenceClassifier, match_phrase_in_text(), Core deterministic classification engine (Tier 1 core)., Check if a normalized phrase appears in normalized text with word boundary…, Count occurrences of a phrase in text. (+31 more) +### Community 46 - "Tasks: Multilingual NLP Entity Inherence Classifier (POC)" +Cohesion: 0.15 +Nodes (13): Dependencies & Execution Order, Implementation for User Story 1, Implementation for User Story 2, Implementation for User Story 3, Implementation Strategy, Phase 1: Setup (Shared Infrastructure), Phase 2: Foundational (Blocking Prerequisites), Phase 3: User Story 1 - Core Tier 1 Deterministic Classification & CLI (Priority: P1) [MVP] (+5 more) ### Community 47 - "detect_language" -Cohesion: 0.19 -Nodes (16): detect_language(), extract_words(), normalize_text(), Lightweight multilingual language detection and text normalization., Normalize text by converting to lowercase and stripping combining diacritical…, Tokenize text into lowercase alphanumeric words., Detect the ISO-639-1 language code of text among supported languages (pt, en,…, Unit tests for language detection and text normalization. (+8 more) +Cohesion: 0.14 +Nodes (21): count_phrase_occurrences(), match_phrase_in_text(), Check if a normalized phrase appears in normalized text with word boundary…, Count occurrences of a phrase in text., Classify inherence of content against an ECP snapshot., detect_language(), extract_words(), normalize_text() (+13 more) -### Community 48 - "main" -Cohesion: 0.31 -Nodes (9): main(), parse_args(), Namespace, CLI execution tests covering flags, arguments, stdout, and error handling., test_cli_empty_content_file(), test_cli_missing_ecp_file(), test_cli_missing_required_ecp_field(), test_cli_output_file() (+1 more) +### Community 48 - "test_models.py" +Cohesion: 0.09 +Nodes (29): emit_error(), main(), parse_args(), Namespace, ClassificationError, ErrorCode, Any, extract_evidence_snippets() (+21 more) + +### Community 80 - "get_hl_gl_ceid" +Cohesion: 0.25 +Nodes (8): get_hl_gl_ceid(), Mapeia idioma e locale para os parâmetros hl, gl e ceid do Google News., Valida o mapeamento padrão de idiomas para pares (hl, gl, ceid)., Valida a sobrescrita geográfica quando o argumento locale é especificado., Valida fallback dinâmico para idiomas regionais não listados explicitamente., test_get_hl_gl_ceid_default_mappings(), test_get_hl_gl_ceid_dynamic_fallback(), test_get_hl_gl_ceid_with_custom_locale() + +### Community 81 - "Extrator de Notícias do Google News — Guia Completo de Funcionamento" +Cohesion: 0.08 +Nodes (24): 1. Visão geral (arquitetura), 2.1 DTO de entrada (`googlenews_etl/application/dtos/extract_news_dto.py`), 2.2 Value Object de validação (`googlenews_etl/domain/entities/search_query.py`), 2. Entrada, 3.1 O caso de uso (`googlenews_etl/application/use_cases/extract_news_use_case.py`), 3.2 A porta (`googlenews_etl/domain/ports/news_extractor_port.py`), 3.3.1 Inicialização: sessão HTTP com impersonação de browser, 3.3.2 Mapeamento idioma → parâmetros `hl`/`gl` (`_get_hl_gl`) (+16 more) + +### Community 82 - "extract_google_news.py" +Cohesion: 0.20 +Nodes (14): extract_google_news(), _fetch_rss_content(), NewsArticle, _normalize_text_for_comparison(), parse_google_news_rss(), Remove pontuação e espaços extras para comparação de redundância., Parseia o XML do RSS do Google News e extrai os itens estruturados., Resolve em paralelo as URLs intermediárias do Google News para os links finais… (+6 more) + +### Community 83 - "ExtractionResult" +Cohesion: 0.29 +Nodes (5): ExtractionResult, Any, Resultado consolidado da extração., Valida E2E o fluxo completo de busca, parsing e resolução de URLs reais ao vivo., test_e2e_extract_google_news_live_pipeline() + +### Community 84 - "test_extract_google_news.py" +Cohesion: 0.21 +Nodes (11): Resolve a URL intermediária do Google News para a URL real do veículo., resolve_article_url(), Testes unitários e de integração para o Extrator de Manchetes do Google News.…, Valida o parsing do feed RSS, higienização de tags HTML e deduplicação., Valida fallback gracioso de URL quando não é link do Google News ou em erro., Valida resolução bem-sucedida de URL do Google News para o portal destino., Valida E2E que o decodificador resolve uma URL real do Google News para o…, test_e2e_resolve_real_google_news_url() (+3 more) + +### Community 85 - "Implementation Tasks: Google News Headlines Extractor" +Cohesion: 0.14 +Nodes (14): Implementation for User Story 1, Implementation for User Story 2, Implementation for User Story 3, Implementation Tasks: Google News Headlines Extractor, Phase 1: Setup (Shared Infrastructure), Phase 2: Foundational (Blocking Prerequisites), Phase 3: User Story 1 - Extração Básica de Notícias por Assunto e Idioma (Priority: P1) 🌟 MVP, Phase 4: User Story 2 - Filtragem Regional e Edição Geográfica (Priority: P2) (+6 more) + +### Community 86 - "Feature Specification: Google News Headlines Extractor" +Cohesion: 0.18 +Nodes (11): Clarifications, Edge Cases, Feature Specification: Google News Headlines Extractor, Functional Requirements, Requirements *(mandatory)*, Session 2026-08-20, Success Criteria *(mandatory)*, User Scenarios & Testing *(mandatory)* (+3 more) + +### Community 87 - "2. Cenários Práticos de Uso" +Cohesion: 0.20 +Nodes (9): 1. Pré-requisitos e Instalação, 2. Cenários Práticos de Uso, 3. Validação dos Testes Automatizados e Linter, Cenário 1: River Plate — Argentina (Espanhol / 2 Páginas / Salvar em Arquivo), Cenário 2: Cruzeiro — Brasil (Português / Formatado no Terminal), Cenário 3: Fórmula 1 — Reino Unido (Inglês), Cenário 4: Integração em Pipeline com `jq` (Modo Silencioso), Cenário 5: Extração Rápida com Links Brutos (Sem Resolução de URLs) (+1 more) + +### Community 88 - "Implementation Plan: Google News Headlines Extractor" +Cohesion: 0.29 +Nodes (7): Architecture & Pipeline, Documentation (this feature), Implementation Plan: Google News Headlines Extractor, Project Structure, Source Code, Summary, Technical Context + +### Community 90 - "SearchQuery" +Cohesion: 0.20 +Nodes (6): Value Object com parâmetros de busca validados., SearchQuery, Valida a consolidação do ExtractionResult a partir da busca mockada com URLs…, Valida as regras de negócio e limites de SearchQuery., test_extract_google_news_orchestration_mocked(), test_search_query_validation() + +### Community 91 - "1. Technical Decisions & Tradeoffs" +Cohesion: 0.25 +Nodes (7): 1. Technical Decisions & Tradeoffs, Decision 1: Motor de Requisição e Scraping com `foxcape` em Modo Headless, Decision 2: Endpoint RSS do Google News vs. Scraping de DOM, Decision 3: Mapeamento de Idioma e Locale (`hl`, `gl`, `ceid`), Decision 4: Resolução de URLs do Google News via `googlenewsdecoder`, Decision 5: Logging em Tempo Real no `stderr` e Segregação de Streams, Research: Google News Headlines Extractor + +### Community 92 - "General Readiness Checklist: Google News Headlines Extractor" +Cohesion: 0.29 +Nodes (7): CLI Interface & Parameter Contracts, Data Sanitization & Article Extraction, Error Handling & Edge Cases, General Readiness Checklist: Google News Headlines Extractor, Non-Functional & Operational Readiness, Notes, Scraping Engine & Feed Mapping + +### Community 93 - "1. Entidades de Domínio & DTOs" +Cohesion: 0.29 +Nodes (6): 1.1 SearchQuery (Parâmetros da Busca), 1.2 NewsArticle (Item de Notícia), 1.3 ExtractionResult (Saída Estruturada Consolidada), 1. Entidades de Domínio & DTOs, 2. Esquema JSON de Saída, Data Model: Google News Headlines Extractor + +### Community 94 - "Specification Quality Checklist: Google News Headlines Extractor" +Cohesion: 0.33 +Nodes (5): Content Quality, Feature Readiness, Notes, Requirement Completeness, Specification Quality Checklist: Google News Headlines Extractor + +### Community 95 - "CLI Contract: Google News Headlines Extractor" +Cohesion: 0.33 +Nodes (6): 1. Comando e Argumentos, 2. Códigos de Saída (Exit Codes), 3. Protocolo de Streams (Stdout / Stderr), Argumentos de Linha de Comando, CLI Contract: Google News Headlines Extractor, Sintaxe + +### Community 98 - "build_parser" +Cohesion: 0.67 +Nodes (3): ArgumentParser, build_parser(), Cria e configura o parser de argumentos CLI. + +### Community 99 - "sample_rss_xml" +Cohesion: 0.67 +Nodes (3): fixture, Fixture que fornece o conteúdo do XML de exemplo para testes offline., sample_rss_xml() ## Knowledge Gaps -- **291 isolated node(s):** `text-nlp-classifier`, `MatchedGraphEntity`, `graphify`, `Usage`, `What graphify is for` (+286 more) +- **361 isolated node(s):** `text-nlp-classifier`, `MatchedGraphEntity`, `graphify`, `Usage`, `What graphify is for` (+356 more) These have ≤1 connection - possible missing edges or undocumented components. -- **37 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. +- **38 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 `ECPSnapshot` connect `ECPSnapshot` to `main`, `classifier.py`?** - _High betweenness centrality (0.011) - this node is a cross-community bridge._ -- **Why does `detect_language()` connect `detect_language` to `classifier.py`?** - _High betweenness centrality (0.007) - this node is a cross-community bridge._ -- **Why does `InherenceClassifier` connect `classifier.py` to `main`, `ECPSnapshot`?** - _High betweenness centrality (0.006) - this node is a cross-community bridge._ +- **Why does `main()` connect `test_models.py` to `main`, `ECPSnapshot`?** + _High betweenness centrality (0.031) - this node is a cross-community bridge._ +- **Why does `ECPSnapshot` connect `ECPSnapshot` to `test_models.py`, `detect_language`?** + _High betweenness centrality (0.021) - this node is a cross-community bridge._ +- **Why does `main()` connect `main` to `extract_google_news.py`, `test_extract_google_news.py`, `SearchQuery`, `build_parser`?** + _High betweenness centrality (0.021) - this node is a cross-community bridge._ - **Are the 10 inferred relationships involving `ECPSnapshot` (e.g. with `main()` and `BaseNLPAdapter`) actually correct?** _`ECPSnapshot` has 10 INFERRED edges - model-reasoned connections that need verification._ - **Are the 6 inferred relationships involving `InherenceClassifier` (e.g. with `LocalEmbeddingsAdapter` and `LLMFallbackAdapter`) actually correct?** _`InherenceClassifier` has 6 INFERRED edges - model-reasoned connections that need verification._ +- **Are the 10 inferred relationships involving `DecisionCategory` (e.g. with `InherenceClassifier` and `test_adversarial_apple_fruit_recipe()`) actually correct?** + _`DecisionCategory` has 10 INFERRED edges - model-reasoned connections that need verification._ - **Are the 4 inferred relationships involving `ClassificationResult` (e.g. with `BaseNLPAdapter` and `LocalEmbeddingsAdapter`) actually correct?** - _`ClassificationResult` has 4 INFERRED edges - model-reasoned connections that need verification._ -- **Are the 3 inferred relationships involving `LocalEmbeddingsAdapter` (e.g. with `ClassificationResult` and `ECPSnapshot`) actually correct?** - _`LocalEmbeddingsAdapter` has 3 INFERRED edges - model-reasoned connections that need verification._ \ No newline at end of file + _`ClassificationResult` has 4 INFERRED edges - model-reasoned connections that need verification._ \ No newline at end of file diff --git a/graphify-out/2026-08-20/graph.json b/graphify-out/2026-08-20/graph.json index 71899bd..477cc85 100644 --- a/graphify-out/2026-08-20/graph.json +++ b/graphify-out/2026-08-20/graph.json @@ -42,6 +42,19 @@ "source_file": "src/adapters/llm.py", "source_location": "L15" }, + { + "id": "src_classifier_inherenceclassifier", + "label": "InherenceClassifier", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 45, + "community_name": "ECPSnapshot", + "file_type": "code", + "norm_label": "inherenceclassifier", + "source_file": "src/classifier.py", + "source_location": "L44" + }, { "id": "src_models_classificationresult", "label": "ClassificationResult", @@ -55,6 +68,19 @@ "source_file": "src/models.py", "source_location": "L122" }, + { + "id": "src_models_decisioncategory", + "label": "DecisionCategory", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 45, + "community_name": "ECPSnapshot", + "file_type": "code", + "norm_label": "decisioncategory", + "source_file": "src/models.py", + "source_location": "L11" + }, { "id": "src_models_ecpsnapshot", "label": "ECPSnapshot", @@ -68,66 +94,14 @@ "source_file": "src/models.py", "source_location": "L58" }, - { - "id": "src_classifier_inherenceclassifier", - "label": "InherenceClassifier", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 46, - "community_name": "classifier.py", - "file_type": "code", - "norm_label": "inherenceclassifier", - "source_file": "src/classifier.py", - "source_location": "L44" - }, - { - "id": "src_models_classificationerror", - "label": "ClassificationError", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 46, - "community_name": "classifier.py", - "file_type": "code", - "norm_label": "classificationerror", - "source_file": "src/models.py", - "source_location": "L153" - }, - { - "id": "src_models_decisioncategory", - "label": "DecisionCategory", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 46, - "community_name": "classifier.py", - "file_type": "code", - "norm_label": "decisioncategory", - "source_file": "src/models.py", - "source_location": "L11" - }, - { - "id": "src_models_errorcode", - "label": "ErrorCode", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 46, - "community_name": "classifier.py", - "file_type": "code", - "norm_label": "errorcode", - "source_file": "src/models.py", - "source_location": "L18" - }, { "id": "src_models_matchedgraphentity", "label": "MatchedGraphEntity", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 46, - "community_name": "classifier.py", + "community": 45, + "community_name": "ECPSnapshot", "file_type": "code", "norm_label": "matchedgraphentity", "source_file": "src/models.py", @@ -139,13 +113,150 @@ "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 46, - "community_name": "classifier.py", + "community": 45, + "community_name": "ECPSnapshot", "file_type": "code", "norm_label": "relatedentity", "source_file": "src/models.py", "source_location": "L27" }, + { + "id": "src_models_classificationerror", + "label": "ClassificationError", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 48, + "community_name": "test_models.py", + "file_type": "code", + "norm_label": "classificationerror", + "source_file": "src/models.py", + "source_location": "L153" + }, + { + "id": "src_models_errorcode", + "label": "ErrorCode", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 48, + "community_name": "test_models.py", + "file_type": "code", + "norm_label": "errorcode", + "source_file": "src/models.py", + "source_location": "L18" + }, + { + "id": "scripts_extract_google_news_newsarticle", + "label": "NewsArticle", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 82, + "community_name": "extract_google_news.py", + "file_type": "code", + "norm_label": "newsarticle", + "source_file": "scripts/extract_google_news.py", + "source_location": "L66" + }, + { + "id": "scripts_extract_google_news_extractionresult", + "label": "ExtractionResult", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 83, + "community_name": "ExtractionResult", + "file_type": "code", + "norm_label": "extractionresult", + "source_file": "scripts/extract_google_news.py", + "source_location": "L86" + }, + { + "id": "scripts_extract_google_news_searchquery", + "label": "SearchQuery", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 90, + "community_name": "SearchQuery", + "file_type": "code", + "norm_label": "searchquery", + "source_file": "scripts/extract_google_news.py", + "source_location": "L32" + }, + { + "id": "scripts_extract_google_news_main", + "label": "main()", + "_callable": true, + "_origin": "ast", + "community": 40, + "community_name": "main", + "file_type": "code", + "norm_label": "main()", + "source_file": "scripts/extract_google_news.py", + "source_location": "L405" + }, + { + "id": "tests_test_extract_google_news_test_cli_empty_query_error", + "label": "test_cli_empty_query_error()", + "_callable": true, + "_origin": "ast", + "community": 40, + "community_name": "main", + "file_type": "code", + "norm_label": "test_cli_empty_query_error()", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L263" + }, + { + "id": "tests_test_extract_google_news_test_cli_execution_file_output", + "label": "test_cli_execution_file_output()", + "_callable": true, + "_origin": "ast", + "community": 40, + "community_name": "main", + "file_type": "code", + "norm_label": "test_cli_execution_file_output()", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L242" + }, + { + "id": "tests_test_extract_google_news_test_cli_execution_stdout", + "label": "test_cli_execution_stdout()", + "_callable": true, + "_origin": "ast", + "community": 40, + "community_name": "main", + "file_type": "code", + "norm_label": "test_cli_execution_stdout()", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L217" + }, + { + "id": "tests_test_extract_google_news_test_cli_network_error_handling", + "label": "test_cli_network_error_handling()", + "_callable": true, + "_origin": "ast", + "community": 40, + "community_name": "main", + "file_type": "code", + "norm_label": "test_cli_network_error_handling()", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L272" + }, + { + "id": "tests_test_extract_google_news_test_e2e_cli_live_file_output", + "label": "test_e2e_cli_live_file_output()", + "_callable": true, + "_origin": "ast", + "community": 40, + "community_name": "main", + "file_type": "code", + "norm_label": "test_e2e_cli_live_file_output()", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L328" + }, { "id": "src_adapters_base_basenlpadapter_disambiguate", "label": ".disambiguate()", @@ -290,66 +401,6 @@ "source_file": "src/classifier.py", "source_location": "L47" }, - { - "id": "src_models_classificationerror_to_dict", - "label": ".to_dict()", - "_callable": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": ".to_dict()", - "source_file": "src/models.py", - "source_location": "L158" - }, - { - "id": "src_models_classificationerror_to_json_str", - "label": ".to_json_str()", - "_callable": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": ".to_json_str()", - "source_file": "src/models.py", - "source_location": "L165" - }, - { - "id": "src_models_classificationresult_to_dict", - "label": ".to_dict()", - "_callable": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": ".to_dict()", - "source_file": "src/models.py", - "source_location": "L134" - }, - { - "id": "src_models_classificationresult_to_json_str", - "label": ".to_json_str()", - "_callable": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": ".to_json_str()", - "source_file": "src/models.py", - "source_location": "L148" - }, - { - "id": "src_models_ecpsnapshot_from_dict", - "label": ".from_dict()", - "_callable": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": ".from_dict()", - "source_file": "src/models.py", - "source_location": "L69" - }, { "id": "src_models_ecpsnapshot_from_json_str", "label": ".from_json_str()", @@ -362,18 +413,6 @@ "source_file": "src/models.py", "source_location": "L105" }, - { - "id": "src_models_relatedentity_from_dict", - "label": ".from_dict()", - "_callable": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": ".from_dict()", - "source_file": "src/models.py", - "source_location": "L37" - }, { "id": "tests_test_adapters_test_classifier_with_adapter_flags", "label": "test_classifier_with_adapter_flags()", @@ -410,6 +449,102 @@ "source_file": "tests/test_adapters.py", "source_location": "L15" }, + { + "id": "tests_test_adversarial_test_adversarial_apple_fruit_recipe", + "label": "test_adversarial_apple_fruit_recipe()", + "_callable": true, + "_origin": "ast", + "community": 45, + "community_name": "ECPSnapshot", + "file_type": "code", + "norm_label": "test_adversarial_apple_fruit_recipe()", + "source_file": "tests/test_adversarial.py", + "source_location": "L40" + }, + { + "id": "tests_test_adversarial_test_adversarial_related_entity_without_scope_context", + "label": "test_adversarial_related_entity_without_scope_context()", + "_callable": true, + "_origin": "ast", + "community": 45, + "community_name": "ECPSnapshot", + "file_type": "code", + "norm_label": "test_adversarial_related_entity_without_scope_context()", + "source_file": "tests/test_adversarial.py", + "source_location": "L63" + }, + { + "id": "tests_test_adversarial_test_adversarial_sao_paulo_city_vs_fc", + "label": "test_adversarial_sao_paulo_city_vs_fc()", + "_callable": true, + "_origin": "ast", + "community": 45, + "community_name": "ECPSnapshot", + "file_type": "code", + "norm_label": "test_adversarial_sao_paulo_city_vs_fc()", + "source_file": "tests/test_adversarial.py", + "source_location": "L15" + }, + { + "id": "tests_test_adversarial_test_adversarial_subprocess_cli_corrupted_json", + "label": "test_adversarial_subprocess_cli_corrupted_json()", + "_callable": true, + "_origin": "ast", + "community": 45, + "community_name": "ECPSnapshot", + "file_type": "code", + "norm_label": "test_adversarial_subprocess_cli_corrupted_json()", + "source_file": "tests/test_adversarial.py", + "source_location": "L193" + }, + { + "id": "tests_test_adversarial_test_adversarial_subprocess_cli_empty_content", + "label": "test_adversarial_subprocess_cli_empty_content()", + "_callable": true, + "_origin": "ast", + "community": 45, + "community_name": "ECPSnapshot", + "file_type": "code", + "norm_label": "test_adversarial_subprocess_cli_empty_content()", + "source_file": "tests/test_adversarial.py", + "source_location": "L133" + }, + { + "id": "tests_test_adversarial_test_adversarial_subprocess_cli_missing_required_field", + "label": "test_adversarial_subprocess_cli_missing_required_field()", + "_callable": true, + "_origin": "ast", + "community": 45, + "community_name": "ECPSnapshot", + "file_type": "code", + "norm_label": "test_adversarial_subprocess_cli_missing_required_field()", + "source_file": "tests/test_adversarial.py", + "source_location": "L164" + }, + { + "id": "tests_test_adversarial_test_adversarial_subprocess_cli_success_stdout", + "label": "test_adversarial_subprocess_cli_success_stdout()", + "_callable": true, + "_origin": "ast", + "community": 45, + "community_name": "ECPSnapshot", + "file_type": "code", + "norm_label": "test_adversarial_subprocess_cli_success_stdout()", + "source_file": "tests/test_adversarial.py", + "source_location": "L98" + }, + { + "id": "tests_test_benchmark_24_classifier", + "label": "classifier()", + "_callable": true, + "_origin": "ast", + "community": 45, + "community_name": "ECPSnapshot", + "file_type": "code", + "norm_label": "classifier()", + "source_file": "tests/test_benchmark_24.py", + "source_location": "L25" + }, { "id": "tests_test_benchmark_24_test_benchmark_case", "label": "test_benchmark_case()", @@ -422,157 +557,13 @@ "source_file": "tests/test_benchmark_24.py", "source_location": "L30" }, - { - "id": "tests_test_models_test_classification_result_serialization", - "label": "test_classification_result_serialization()", - "_callable": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "test_classification_result_serialization()", - "source_file": "tests/test_models.py", - "source_location": "L70" - }, - { - "id": "tests_test_models_test_ecp_snapshot_defaults", - "label": "test_ecp_snapshot_defaults()", - "_callable": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "test_ecp_snapshot_defaults()", - "source_file": "tests/test_models.py", - "source_location": "L45" - }, - { - "id": "tests_test_models_test_ecp_snapshot_missing_required", - "label": "test_ecp_snapshot_missing_required()", - "_callable": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "test_ecp_snapshot_missing_required()", - "source_file": "tests/test_models.py", - "source_location": "L59" - }, - { - "id": "tests_test_models_test_ecp_snapshot_valid", - "label": "test_ecp_snapshot_valid()", - "_callable": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "test_ecp_snapshot_valid()", - "source_file": "tests/test_models.py", - "source_location": "L15" - }, - { - "id": "classify_emit_error", - "label": "emit_error()", - "_callable": true, - "_origin": "ast", - "community": 46, - "community_name": "classifier.py", - "file_type": "code", - "norm_label": "emit_error()", - "source_file": "classify.py", - "source_location": "L61" - }, - { - "id": "src_classifier_count_phrase_occurrences", - "label": "count_phrase_occurrences()", - "_callable": true, - "_origin": "ast", - "community": 46, - "community_name": "classifier.py", - "file_type": "code", - "norm_label": "count_phrase_occurrences()", - "source_file": "src/classifier.py", - "source_location": "L33" - }, - { - "id": "src_classifier_inherenceclassifier_classify", - "label": ".classify()", - "_callable": true, - "_origin": "ast", - "community": 46, - "community_name": "classifier.py", - "file_type": "code", - "norm_label": ".classify()", - "source_file": "src/classifier.py", - "source_location": "L61" - }, - { - "id": "src_classifier_match_phrase_in_text", - "label": "match_phrase_in_text()", - "_callable": true, - "_origin": "ast", - "community": 46, - "community_name": "classifier.py", - "file_type": "code", - "norm_label": "match_phrase_in_text()", - "source_file": "src/classifier.py", - "source_location": "L20" - }, - { - "id": "src_parser_extract_evidence_snippets", - "label": "extract_evidence_snippets()", - "_callable": true, - "_origin": "ast", - "community": 46, - "community_name": "classifier.py", - "file_type": "code", - "norm_label": "extract_evidence_snippets()", - "source_file": "src/parser.py", - "source_location": "L51" - }, - { - "id": "src_parser_extract_sentences", - "label": "extract_sentences()", - "_callable": true, - "_origin": "ast", - "community": 46, - "community_name": "classifier.py", - "file_type": "code", - "norm_label": "extract_sentences()", - "source_file": "src/parser.py", - "source_location": "L43" - }, - { - "id": "src_parser_strip_markdown", - "label": "strip_markdown()", - "_callable": true, - "_origin": "ast", - "community": 46, - "community_name": "classifier.py", - "file_type": "code", - "norm_label": "strip_markdown()", - "source_file": "src/parser.py", - "source_location": "L9" - }, - { - "id": "tests_test_benchmark_24_classifier", - "label": "classifier()", - "_callable": true, - "_origin": "ast", - "community": 46, - "community_name": "classifier.py", - "file_type": "code", - "norm_label": "classifier()", - "source_file": "tests/test_benchmark_24.py", - "source_location": "L25" - }, { "id": "tests_test_classifier_petrobras_ecp", "label": "petrobras_ecp()", "_callable": true, "_origin": "ast", - "community": 46, - "community_name": "classifier.py", + "community": 45, + "community_name": "ECPSnapshot", "file_type": "code", "norm_label": "petrobras_ecp()", "source_file": "tests/test_classifier.py", @@ -583,8 +574,8 @@ "label": "test_contextual_inherent()", "_callable": true, "_origin": "ast", - "community": 46, - "community_name": "classifier.py", + "community": 45, + "community_name": "ECPSnapshot", "file_type": "code", "norm_label": "test_contextual_inherent()", "source_file": "tests/test_classifier.py", @@ -595,8 +586,8 @@ "label": "test_direct_inherent()", "_callable": true, "_origin": "ast", - "community": 46, - "community_name": "classifier.py", + "community": 45, + "community_name": "ECPSnapshot", "file_type": "code", "norm_label": "test_direct_inherent()", "source_file": "tests/test_classifier.py", @@ -607,8 +598,8 @@ "label": "test_negative_anchor_suppression()", "_callable": true, "_origin": "ast", - "community": 46, - "community_name": "classifier.py", + "community": 45, + "community_name": "ECPSnapshot", "file_type": "code", "norm_label": "test_negative_anchor_suppression()", "source_file": "tests/test_classifier.py", @@ -619,8 +610,8 @@ "label": "test_not_related()", "_callable": true, "_origin": "ast", - "community": 46, - "community_name": "classifier.py", + "community": 45, + "community_name": "ECPSnapshot", "file_type": "code", "norm_label": "test_not_related()", "source_file": "tests/test_classifier.py", @@ -631,48 +622,48 @@ "label": "test_tangential_inherent()", "_callable": true, "_origin": "ast", - "community": 46, - "community_name": "classifier.py", + "community": 45, + "community_name": "ECPSnapshot", "file_type": "code", "norm_label": "test_tangential_inherent()", "source_file": "tests/test_classifier.py", "source_location": "L63" }, { - "id": "tests_test_models_test_classification_error_serialization", - "label": "test_classification_error_serialization()", + "id": "src_classifier_count_phrase_occurrences", + "label": "count_phrase_occurrences()", "_callable": true, "_origin": "ast", - "community": 46, - "community_name": "classifier.py", + "community": 47, + "community_name": "detect_language", "file_type": "code", - "norm_label": "test_classification_error_serialization()", - "source_file": "tests/test_models.py", - "source_location": "L88" + "norm_label": "count_phrase_occurrences()", + "source_file": "src/classifier.py", + "source_location": "L33" }, { - "id": "tests_test_models_test_extract_evidence_snippets", - "label": "test_extract_evidence_snippets()", + "id": "src_classifier_inherenceclassifier_classify", + "label": ".classify()", "_callable": true, "_origin": "ast", - "community": 46, - "community_name": "classifier.py", + "community": 47, + "community_name": "detect_language", "file_type": "code", - "norm_label": "test_extract_evidence_snippets()", - "source_file": "tests/test_models.py", - "source_location": "L110" + "norm_label": ".classify()", + "source_file": "src/classifier.py", + "source_location": "L61" }, { - "id": "tests_test_models_test_parser_strip_markdown", - "label": "test_parser_strip_markdown()", + "id": "src_classifier_match_phrase_in_text", + "label": "match_phrase_in_text()", "_callable": true, "_origin": "ast", - "community": 46, - "community_name": "classifier.py", + "community": 47, + "community_name": "detect_language", "file_type": "code", - "norm_label": "test_parser_strip_markdown()", - "source_file": "tests/test_models.py", - "source_location": "L100" + "norm_label": "match_phrase_in_text()", + "source_file": "src/classifier.py", + "source_location": "L20" }, { "id": "src_language_detect_language", @@ -806,17 +797,29 @@ "source_file": "tests/test_language.py", "source_location": "L6" }, + { + "id": "classify_emit_error", + "label": "emit_error()", + "_callable": true, + "_origin": "ast", + "community": 48, + "community_name": "test_models.py", + "file_type": "code", + "norm_label": "emit_error()", + "source_file": "classify.py", + "source_location": "L73" + }, { "id": "classify_main", "label": "main()", "_callable": true, "_origin": "ast", "community": 48, - "community_name": "main", + "community_name": "test_models.py", "file_type": "code", "norm_label": "main()", "source_file": "classify.py", - "source_location": "L86" + "source_location": "L98" }, { "id": "classify_parse_args", @@ -824,11 +827,119 @@ "_callable": true, "_origin": "ast", "community": 48, - "community_name": "main", + "community_name": "test_models.py", "file_type": "code", "norm_label": "parse_args()", "source_file": "classify.py", - "source_location": "L16" + "source_location": "L28" + }, + { + "id": "src_models_classificationerror_to_dict", + "label": ".to_dict()", + "_callable": true, + "_origin": "ast", + "community": 48, + "community_name": "test_models.py", + "file_type": "code", + "norm_label": ".to_dict()", + "source_file": "src/models.py", + "source_location": "L158" + }, + { + "id": "src_models_classificationerror_to_json_str", + "label": ".to_json_str()", + "_callable": true, + "_origin": "ast", + "community": 48, + "community_name": "test_models.py", + "file_type": "code", + "norm_label": ".to_json_str()", + "source_file": "src/models.py", + "source_location": "L165" + }, + { + "id": "src_models_classificationresult_to_dict", + "label": ".to_dict()", + "_callable": true, + "_origin": "ast", + "community": 48, + "community_name": "test_models.py", + "file_type": "code", + "norm_label": ".to_dict()", + "source_file": "src/models.py", + "source_location": "L134" + }, + { + "id": "src_models_classificationresult_to_json_str", + "label": ".to_json_str()", + "_callable": true, + "_origin": "ast", + "community": 48, + "community_name": "test_models.py", + "file_type": "code", + "norm_label": ".to_json_str()", + "source_file": "src/models.py", + "source_location": "L148" + }, + { + "id": "src_models_ecpsnapshot_from_dict", + "label": ".from_dict()", + "_callable": true, + "_origin": "ast", + "community": 48, + "community_name": "test_models.py", + "file_type": "code", + "norm_label": ".from_dict()", + "source_file": "src/models.py", + "source_location": "L69" + }, + { + "id": "src_models_relatedentity_from_dict", + "label": ".from_dict()", + "_callable": true, + "_origin": "ast", + "community": 48, + "community_name": "test_models.py", + "file_type": "code", + "norm_label": ".from_dict()", + "source_file": "src/models.py", + "source_location": "L37" + }, + { + "id": "src_parser_extract_evidence_snippets", + "label": "extract_evidence_snippets()", + "_callable": true, + "_origin": "ast", + "community": 48, + "community_name": "test_models.py", + "file_type": "code", + "norm_label": "extract_evidence_snippets()", + "source_file": "src/parser.py", + "source_location": "L51" + }, + { + "id": "src_parser_extract_sentences", + "label": "extract_sentences()", + "_callable": true, + "_origin": "ast", + "community": 48, + "community_name": "test_models.py", + "file_type": "code", + "norm_label": "extract_sentences()", + "source_file": "src/parser.py", + "source_location": "L43" + }, + { + "id": "src_parser_strip_markdown", + "label": "strip_markdown()", + "_callable": true, + "_origin": "ast", + "community": 48, + "community_name": "test_models.py", + "file_type": "code", + "norm_label": "strip_markdown()", + "source_file": "src/parser.py", + "source_location": "L9" }, { "id": "tests_test_cli_test_cli_empty_content_file", @@ -836,7 +947,7 @@ "_callable": true, "_origin": "ast", "community": 48, - "community_name": "main", + "community_name": "test_models.py", "file_type": "code", "norm_label": "test_cli_empty_content_file()", "source_file": "tests/test_cli.py", @@ -848,7 +959,7 @@ "_callable": true, "_origin": "ast", "community": 48, - "community_name": "main", + "community_name": "test_models.py", "file_type": "code", "norm_label": "test_cli_missing_ecp_file()", "source_file": "tests/test_cli.py", @@ -860,7 +971,7 @@ "_callable": true, "_origin": "ast", "community": 48, - "community_name": "main", + "community_name": "test_models.py", "file_type": "code", "norm_label": "test_cli_missing_required_ecp_field()", "source_file": "tests/test_cli.py", @@ -872,7 +983,7 @@ "_callable": true, "_origin": "ast", "community": 48, - "community_name": "main", + "community_name": "test_models.py", "file_type": "code", "norm_label": "test_cli_output_file()", "source_file": "tests/test_cli.py", @@ -884,12 +995,408 @@ "_callable": true, "_origin": "ast", "community": 48, - "community_name": "main", + "community_name": "test_models.py", "file_type": "code", "norm_label": "test_cli_success_stdout()", "source_file": "tests/test_cli.py", "source_location": "L9" }, + { + "id": "tests_test_models_test_classification_error_serialization", + "label": "test_classification_error_serialization()", + "_callable": true, + "_origin": "ast", + "community": 48, + "community_name": "test_models.py", + "file_type": "code", + "norm_label": "test_classification_error_serialization()", + "source_file": "tests/test_models.py", + "source_location": "L88" + }, + { + "id": "tests_test_models_test_classification_result_serialization", + "label": "test_classification_result_serialization()", + "_callable": true, + "_origin": "ast", + "community": 48, + "community_name": "test_models.py", + "file_type": "code", + "norm_label": "test_classification_result_serialization()", + "source_file": "tests/test_models.py", + "source_location": "L70" + }, + { + "id": "tests_test_models_test_ecp_snapshot_defaults", + "label": "test_ecp_snapshot_defaults()", + "_callable": true, + "_origin": "ast", + "community": 48, + "community_name": "test_models.py", + "file_type": "code", + "norm_label": "test_ecp_snapshot_defaults()", + "source_file": "tests/test_models.py", + "source_location": "L45" + }, + { + "id": "tests_test_models_test_ecp_snapshot_missing_required", + "label": "test_ecp_snapshot_missing_required()", + "_callable": true, + "_origin": "ast", + "community": 48, + "community_name": "test_models.py", + "file_type": "code", + "norm_label": "test_ecp_snapshot_missing_required()", + "source_file": "tests/test_models.py", + "source_location": "L59" + }, + { + "id": "tests_test_models_test_ecp_snapshot_valid", + "label": "test_ecp_snapshot_valid()", + "_callable": true, + "_origin": "ast", + "community": 48, + "community_name": "test_models.py", + "file_type": "code", + "norm_label": "test_ecp_snapshot_valid()", + "source_file": "tests/test_models.py", + "source_location": "L15" + }, + { + "id": "tests_test_models_test_extract_evidence_snippets", + "label": "test_extract_evidence_snippets()", + "_callable": true, + "_origin": "ast", + "community": 48, + "community_name": "test_models.py", + "file_type": "code", + "norm_label": "test_extract_evidence_snippets()", + "source_file": "tests/test_models.py", + "source_location": "L110" + }, + { + "id": "tests_test_models_test_parser_strip_markdown", + "label": "test_parser_strip_markdown()", + "_callable": true, + "_origin": "ast", + "community": 48, + "community_name": "test_models.py", + "file_type": "code", + "norm_label": "test_parser_strip_markdown()", + "source_file": "tests/test_models.py", + "source_location": "L100" + }, + { + "id": "scripts_extract_google_news_get_hl_gl_ceid", + "label": "get_hl_gl_ceid()", + "_callable": true, + "_origin": "ast", + "community": 80, + "community_name": "get_hl_gl_ceid", + "file_type": "code", + "norm_label": "get_hl_gl_ceid()", + "source_file": "scripts/extract_google_news.py", + "source_location": "L109" + }, + { + "id": "tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", + "label": "test_get_hl_gl_ceid_default_mappings()", + "_callable": true, + "_origin": "ast", + "community": 80, + "community_name": "get_hl_gl_ceid", + "file_type": "code", + "norm_label": "test_get_hl_gl_ceid_default_mappings()", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L37" + }, + { + "id": "tests_test_extract_google_news_test_get_hl_gl_ceid_dynamic_fallback", + "label": "test_get_hl_gl_ceid_dynamic_fallback()", + "_callable": true, + "_origin": "ast", + "community": 80, + "community_name": "get_hl_gl_ceid", + "file_type": "code", + "norm_label": "test_get_hl_gl_ceid_dynamic_fallback()", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L78" + }, + { + "id": "tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", + "label": "test_get_hl_gl_ceid_with_custom_locale()", + "_callable": true, + "_origin": "ast", + "community": 80, + "community_name": "get_hl_gl_ceid", + "file_type": "code", + "norm_label": "test_get_hl_gl_ceid_with_custom_locale()", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L60" + }, + { + "id": "scripts_extract_google_news_extract_google_news", + "label": "extract_google_news()", + "_callable": true, + "_origin": "ast", + "community": 82, + "community_name": "extract_google_news.py", + "file_type": "code", + "norm_label": "extract_google_news()", + "source_file": "scripts/extract_google_news.py", + "source_location": "L299" + }, + { + "id": "scripts_extract_google_news_fetch_rss_content", + "label": "_fetch_rss_content()", + "_callable": true, + "_origin": "ast", + "community": 82, + "community_name": "extract_google_news.py", + "file_type": "code", + "norm_label": "_fetch_rss_content()", + "source_file": "scripts/extract_google_news.py", + "source_location": "L255" + }, + { + "id": "scripts_extract_google_news_normalize_text_for_comparison", + "label": "_normalize_text_for_comparison()", + "_callable": true, + "_origin": "ast", + "community": 82, + "community_name": "extract_google_news.py", + "file_type": "code", + "norm_label": "_normalize_text_for_comparison()", + "source_file": "scripts/extract_google_news.py", + "source_location": "L153" + }, + { + "id": "scripts_extract_google_news_parse_google_news_rss", + "label": "parse_google_news_rss()", + "_callable": true, + "_origin": "ast", + "community": 82, + "community_name": "extract_google_news.py", + "file_type": "code", + "norm_label": "parse_google_news_rss()", + "source_file": "scripts/extract_google_news.py", + "source_location": "L158" + }, + { + "id": "scripts_extract_google_news_resolve_articles_urls", + "label": "resolve_articles_urls()", + "_callable": true, + "_origin": "ast", + "community": 82, + "community_name": "extract_google_news.py", + "file_type": "code", + "norm_label": "resolve_articles_urls()", + "source_file": "scripts/extract_google_news.py", + "source_location": "L222" + }, + { + "id": "tests_test_extract_google_news_test_resolve_articles_urls_batch", + "label": "test_resolve_articles_urls_batch()", + "_callable": true, + "_origin": "ast", + "community": 82, + "community_name": "extract_google_news.py", + "file_type": "code", + "norm_label": "test_resolve_articles_urls_batch()", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L163" + }, + { + "id": "scripts_extract_google_news_extractionresult_to_dict", + "label": ".to_dict()", + "_callable": true, + "_origin": "ast", + "community": 83, + "community_name": "ExtractionResult", + "file_type": "code", + "norm_label": ".to_dict()", + "source_file": "scripts/extract_google_news.py", + "source_location": "L97" + }, + { + "id": "scripts_extract_google_news_newsarticle_to_dict", + "label": ".to_dict()", + "_callable": true, + "_origin": "ast", + "community": 83, + "community_name": "ExtractionResult", + "file_type": "code", + "norm_label": ".to_dict()", + "source_file": "scripts/extract_google_news.py", + "source_location": "L75" + }, + { + "id": "tests_test_extract_google_news_test_e2e_extract_google_news_live_pipeline", + "label": "test_e2e_extract_google_news_live_pipeline()", + "_callable": true, + "_origin": "ast", + "community": 83, + "community_name": "ExtractionResult", + "file_type": "code", + "norm_label": "test_e2e_extract_google_news_live_pipeline()", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L312" + }, + { + "id": "scripts_extract_google_news_resolve_article_url", + "label": "resolve_article_url()", + "_callable": true, + "_origin": "ast", + "community": 84, + "community_name": "test_extract_google_news.py", + "file_type": "code", + "norm_label": "resolve_article_url()", + "source_file": "scripts/extract_google_news.py", + "source_location": "L209" + }, + { + "id": "tests_test_extract_google_news_test_e2e_resolve_real_google_news_url", + "label": "test_e2e_resolve_real_google_news_url()", + "_callable": true, + "_origin": "ast", + "community": 84, + "community_name": "test_extract_google_news.py", + "file_type": "code", + "norm_label": "test_e2e_resolve_real_google_news_url()", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L291" + }, + { + "id": "tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", + "label": "test_parse_google_news_rss_with_fixture()", + "_callable": true, + "_origin": "ast", + "community": 84, + "community_name": "test_extract_google_news.py", + "file_type": "code", + "norm_label": "test_parse_google_news_rss_with_fixture()", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L111" + }, + { + "id": "tests_test_extract_google_news_test_resolve_article_url_fallback", + "label": "test_resolve_article_url_fallback()", + "_callable": true, + "_origin": "ast", + "community": 84, + "community_name": "test_extract_google_news.py", + "file_type": "code", + "norm_label": "test_resolve_article_url_fallback()", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L138" + }, + { + "id": "tests_test_extract_google_news_test_resolve_article_url_success", + "label": "test_resolve_article_url_success()", + "_callable": true, + "_origin": "ast", + "community": 84, + "community_name": "test_extract_google_news.py", + "file_type": "code", + "norm_label": "test_resolve_article_url_success()", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L150" + }, + { + "id": "scripts_extract_google_news_searchquery_clean_keyword", + "label": ".clean_keyword()", + "_callable": true, + "_origin": "ast", + "community": 90, + "community_name": "SearchQuery", + "file_type": "code", + "norm_label": ".clean_keyword()", + "source_file": "scripts/extract_google_news.py", + "source_location": "L53" + }, + { + "id": "scripts_extract_google_news_searchquery_clean_language", + "label": ".clean_language()", + "_callable": true, + "_origin": "ast", + "community": 90, + "community_name": "SearchQuery", + "file_type": "code", + "norm_label": ".clean_language()", + "source_file": "scripts/extract_google_news.py", + "source_location": "L57" + }, + { + "id": "scripts_extract_google_news_searchquery_clean_locale", + "label": ".clean_locale()", + "_callable": true, + "_origin": "ast", + "community": 90, + "community_name": "SearchQuery", + "file_type": "code", + "norm_label": ".clean_locale()", + "source_file": "scripts/extract_google_news.py", + "source_location": "L61" + }, + { + "id": "scripts_extract_google_news_searchquery_post_init", + "label": ".__post_init__()", + "_callable": true, + "_origin": "ast", + "community": 90, + "community_name": "SearchQuery", + "file_type": "code", + "norm_label": ".__post_init__()", + "source_file": "scripts/extract_google_news.py", + "source_location": "L40" + }, + { + "id": "tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", + "label": "test_extract_google_news_orchestration_mocked()", + "_callable": true, + "_origin": "ast", + "community": 90, + "community_name": "SearchQuery", + "file_type": "code", + "norm_label": "test_extract_google_news_orchestration_mocked()", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L188" + }, + { + "id": "tests_test_extract_google_news_test_search_query_validation", + "label": "test_search_query_validation()", + "_callable": true, + "_origin": "ast", + "community": 90, + "community_name": "SearchQuery", + "file_type": "code", + "norm_label": "test_search_query_validation()", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L86" + }, + { + "id": "scripts_extract_google_news_build_parser", + "label": "build_parser()", + "_callable": true, + "_origin": "ast", + "community": 98, + "community_name": "build_parser", + "file_type": "code", + "norm_label": "build_parser()", + "source_file": "scripts/extract_google_news.py", + "source_location": "L338" + }, + { + "id": "tests_test_extract_google_news_sample_rss_xml", + "label": "sample_rss_xml()", + "_callable": true, + "_origin": "ast", + "community": 99, + "community_name": "sample_rss_xml", + "file_type": "code", + "norm_label": "sample_rss_xml()", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L32" + }, { "id": "specify_templates_tasks_template", "label": "tasks-template.md", @@ -4218,182 +4725,102 @@ "source_location": "L11" }, { - "id": "specs_001_multilingual_entity_classifier_spec_assumptions", - "label": "Assumptions", + "id": "capturefixture", + "label": "CaptureFixture", "_origin": "ast", "community": 40, - "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "assumptions", - "source_file": "specs/001-multilingual-entity-classifier/spec.md", - "source_location": "L127" + "community_name": "main", + "file_type": "code", + "norm_label": "capturefixture", + "source_file": "", + "source_location": "" }, { - "id": "specs_001_multilingual_entity_classifier_spec_assumptions_scope", - "label": "Assumptions & Scope", + "id": "path", + "label": "Path", "_origin": "ast", "community": 40, - "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "assumptions & scope", - "source_file": "specs/001-multilingual-entity-classifier/spec.md", - "source_location": "L125" + "community_name": "main", + "file_type": "code", + "norm_label": "path", + "source_file": "", + "source_location": "" }, { - "id": "specs_001_multilingual_entity_classifier_spec_clarifications", - "label": "Clarifications", + "id": "scripts_extract_google_news_rationale_406", + "label": "Ponto de entrada do script CLI.", "_origin": "ast", "community": 40, - "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "clarifications", - "source_file": "specs/001-multilingual-entity-classifier/spec.md", - "source_location": "L13" + "community_name": "main", + "file_type": "rationale", + "norm_label": "ponto de entrada do script cli.", + "source_file": "scripts/extract_google_news.py", + "source_location": "L406" }, { - "id": "specs_001_multilingual_entity_classifier_spec_explicit_out_of_scope_poc", - "label": "Explicit Out of Scope (POC)", + "id": "tests_test_extract_google_news_rationale_218", + "label": "Valida execu\u00e7\u00e3o padr\u00e3o do CLI com sa\u00edda JSON no stdout.", "_origin": "ast", "community": 40, - "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "explicit out of scope (poc)", - "source_file": "specs/001-multilingual-entity-classifier/spec.md", - "source_location": "L132" + "community_name": "main", + "file_type": "rationale", + "norm_label": "valida execucao padrao do cli com saida json no stdout.", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L218" }, { - "id": "specs_001_multilingual_entity_classifier_spec_feature_specification_multilingual_nlp_entity_inherence_classifier_poc", - "label": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", + "id": "tests_test_extract_google_news_rationale_243", + "label": "Valida grava\u00e7\u00e3o em arquivo com cria\u00e7\u00e3o autom\u00e1tica de diret\u00f3rios pais.", "_origin": "ast", "community": 40, - "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "feature specification: multilingual nlp entity inherence classifier (poc)", - "source_file": "specs/001-multilingual-entity-classifier/spec.md", - "source_location": "L1" + "community_name": "main", + "file_type": "rationale", + "norm_label": "valida gravacao em arquivo com criacao automatica de diretorios pais.", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L243" }, { - "id": "specs_001_multilingual_entity_classifier_spec_functional_requirements", - "label": "Functional Requirements", + "id": "tests_test_extract_google_news_rationale_264", + "label": "Valida tratamento de erro e c\u00f3digo de sa\u00edda 1 para par\u00e2metro vazio.", "_origin": "ast", "community": 40, - "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "functional requirements", - "source_file": "specs/001-multilingual-entity-classifier/spec.md", - "source_location": "L61" + "community_name": "main", + "file_type": "rationale", + "norm_label": "valida tratamento de erro e codigo de saida 1 para parametro vazio.", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L264" }, { - "id": "specs_001_multilingual_entity_classifier_spec_key_entities_data_models_domain_entities", - "label": "Key Entities *(data models & domain entities)*", + "id": "tests_test_extract_google_news_rationale_273", + "label": "Valida tratamento de erro e c\u00f3digo de sa\u00edda 2 para falhas de rede.", "_origin": "ast", "community": 40, - "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "key entities *(data models & domain entities)*", - "source_file": "specs/001-multilingual-entity-classifier/spec.md", - "source_location": "L105" + "community_name": "main", + "file_type": "rationale", + "norm_label": "valida tratamento de erro e codigo de saida 2 para falhas de rede.", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L273" }, { - "id": "specs_001_multilingual_entity_classifier_spec_measurable_outcomes", - "label": "Measurable Outcomes", + "id": "tests_test_extract_google_news_rationale_329", + "label": "Valida E2E a execu\u00e7\u00e3o do CLI com sa\u00edda real em arquivo e URLs decodificadas.", "_origin": "ast", "community": 40, - "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "measurable outcomes", - "source_file": "specs/001-multilingual-entity-classifier/spec.md", - "source_location": "L116" - }, - { - "id": "specs_001_multilingual_entity_classifier_spec_requirements_mandatory", - "label": "Requirements *(mandatory)*", - "_origin": "ast", - "community": 40, - "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "requirements *(mandatory)*", - "source_file": "specs/001-multilingual-entity-classifier/spec.md", - "source_location": "L59" - }, - { - "id": "specs_001_multilingual_entity_classifier_spec_session_2026_08_19", - "label": "Session 2026-08-19", - "_origin": "ast", - "community": 40, - "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "session 2026-08-19", - "source_file": "specs/001-multilingual-entity-classifier/spec.md", - "source_location": "L15" - }, - { - "id": "specs_001_multilingual_entity_classifier_spec_success_criteria_mandatory", - "label": "Success Criteria *(mandatory)*", - "_origin": "ast", - "community": 40, - "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "success criteria *(mandatory)*", - "source_file": "specs/001-multilingual-entity-classifier/spec.md", - "source_location": "L114" - }, - { - "id": "specs_001_multilingual_entity_classifier_spec_user_scenarios_testing_mandatory", - "label": "User Scenarios & Testing *(mandatory)*", - "_origin": "ast", - "community": 40, - "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "user scenarios & testing *(mandatory)*", - "source_file": "specs/001-multilingual-entity-classifier/spec.md", - "source_location": "L25" - }, - { - "id": "specs_001_multilingual_entity_classifier_spec_user_story_1_classify_content_inherence_via_cli_for_an_ecp_snapshot_priority_p1", - "label": "User Story 1 - Classify Content Inherence via CLI for an ECP Snapshot (Priority: P1)", - "_origin": "ast", - "community": 40, - "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "user story 1 - classify content inherence via cli for an ecp snapshot (priority: p1)", - "source_file": "specs/001-multilingual-entity-classifier/spec.md", - "source_location": "L27" - }, - { - "id": "specs_001_multilingual_entity_classifier_spec_user_story_2_multilingual_language_support_edge_validation_priority_p2", - "label": "User Story 2 - Multilingual Language Support & Edge Validation (Priority: P2)", - "_origin": "ast", - "community": 40, - "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "user story 2 - multilingual language support & edge validation (priority: p2)", - "source_file": "specs/001-multilingual-entity-classifier/spec.md", - "source_location": "L44" + "community_name": "main", + "file_type": "rationale", + "norm_label": "valida e2e a execucao do cli com saida real em arquivo e urls decodificadas.", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L329" }, { "id": "specs_001_multilingual_entity_classifier_research", - "label": "research.md", + "label": "001-multilingual-entity-classifier/research.md", "_origin": "ast", "community": 41, "community_name": "1. Technical Decisions & Tradeoffs", "file_type": "document", "node_kind": "page", - "norm_label": "research.md", + "norm_label": "001-multilingual-entity-classifier/research.md", "source_file": "specs/001-multilingual-entity-classifier/research.md", "source_location": "L1" }, @@ -4495,13 +4922,13 @@ }, { "id": "specs_001_multilingual_entity_classifier_data_model", - "label": "data-model.md", + "label": "001-multilingual-entity-classifier/data-model.md", "_origin": "ast", "community": 42, "community_name": "1. Input Schemas", "file_type": "document", "node_kind": "page", - "norm_label": "data-model.md", + "norm_label": "001-multilingual-entity-classifier/data-model.md", "source_file": "specs/001-multilingual-entity-classifier/data-model.md", "source_location": "L1" }, @@ -4591,13 +5018,13 @@ }, { "id": "specs_001_multilingual_entity_classifier_quickstart", - "label": "quickstart.md", + "label": "001-multilingual-entity-classifier/quickstart.md", "_origin": "ast", "community": 43, "community_name": "2. Basic CLI Usage Examples", "file_type": "document", "node_kind": "page", - "norm_label": "quickstart.md", + "norm_label": "001-multilingual-entity-classifier/quickstart.md", "source_file": "specs/001-multilingual-entity-classifier/quickstart.md", "source_location": "L1" }, @@ -4781,13 +5208,13 @@ "source_location": "" }, { - "id": "any", - "label": "Any", + "id": "enum", + "label": "Enum", "_origin": "ast", "community": 45, "community_name": "ECPSnapshot", "file_type": "code", - "norm_label": "any", + "norm_label": "enum", "source_file": "", "source_location": "" }, @@ -4835,6 +5262,28 @@ "source_file": "src/adapters/llm.py", "source_location": "L1" }, + { + "id": "src_classifier", + "label": "classifier.py", + "_origin": "ast", + "community": 45, + "community_name": "ECPSnapshot", + "file_type": "code", + "norm_label": "classifier.py", + "source_file": "src/classifier.py", + "source_location": "L1" + }, + { + "id": "src_models", + "label": "models.py", + "_origin": "ast", + "community": 45, + "community_name": "ECPSnapshot", + "file_type": "code", + "norm_label": "models.py", + "source_file": "src/models.py", + "source_location": "L1" + }, { "id": "tests_test_adapters", "label": "test_adapters.py", @@ -4846,6 +5295,61 @@ "source_file": "tests/test_adapters.py", "source_location": "L1" }, + { + "id": "tests_test_adversarial", + "label": "test_adversarial.py", + "_origin": "ast", + "community": 45, + "community_name": "ECPSnapshot", + "file_type": "code", + "norm_label": "test_adversarial.py", + "source_file": "tests/test_adversarial.py", + "source_location": "L1" + }, + { + "id": "tests_test_benchmark_24", + "label": "test_benchmark_24.py", + "_origin": "ast", + "community": 45, + "community_name": "ECPSnapshot", + "file_type": "code", + "norm_label": "test_benchmark_24.py", + "source_file": "tests/test_benchmark_24.py", + "source_location": "L1" + }, + { + "id": "tests_test_benchmark_24_py_fixture", + "label": "fixture", + "_origin": "ast", + "community": 45, + "community_name": "ECPSnapshot", + "file_type": "code", + "norm_label": "fixture", + "source_file": "", + "source_location": "" + }, + { + "id": "tests_test_classifier", + "label": "test_classifier.py", + "_origin": "ast", + "community": 45, + "community_name": "ECPSnapshot", + "file_type": "code", + "norm_label": "test_classifier.py", + "source_file": "tests/test_classifier.py", + "source_location": "L1" + }, + { + "id": "tests_test_classifier_py_fixture", + "label": "fixture", + "_origin": "ast", + "community": 45, + "community_name": "ECPSnapshot", + "file_type": "code", + "norm_label": "fixture", + "source_file": "", + "source_location": "" + }, { "id": "src_adapters_base_rationale_1", "label": "Base abstract adapter interface for optional Tier 2 / Tier 3 NLP enhancers.", @@ -4945,6 +5449,39 @@ "source_file": "src/adapters/llm.py", "source_location": "L16" }, + { + "id": "src_classifier_rationale_1", + "label": "Core deterministic classification engine (Tier 1 core).", + "_origin": "ast", + "community": 45, + "community_name": "ECPSnapshot", + "file_type": "rationale", + "norm_label": "core deterministic classification engine (tier 1 core).", + "source_file": "src/classifier.py", + "source_location": "L1" + }, + { + "id": "src_classifier_rationale_45", + "label": "Tier 1 Deterministic NLP Entity Inherence Classifier.", + "_origin": "ast", + "community": 45, + "community_name": "ECPSnapshot", + "file_type": "rationale", + "norm_label": "tier 1 deterministic nlp entity inherence classifier.", + "source_file": "src/classifier.py", + "source_location": "L45" + }, + { + "id": "src_models_rationale_1", + "label": "Data models and validation schemas for Multilingual NLP Entity Inherence\u2026", + "_origin": "ast", + "community": 45, + "community_name": "ECPSnapshot", + "file_type": "rationale", + "norm_label": "data models and validation schemas for multilingual nlp entity inherence...", + "source_file": "src/models.py", + "source_location": "L1" + }, { "id": "tests_test_adapters_rationale_1", "label": "Unit tests for optional adapter interfaces (Tier 2 / Tier 3).", @@ -4957,242 +5494,99 @@ "source_location": "L1" }, { - "id": "classify", - "label": "classify.py", + "id": "tests_test_adversarial_rationale_1", + "label": "Adversarial and robustness test suite for Multilingual NLP Entity Inherence\u2026", "_origin": "ast", - "community": 46, - "community_name": "classifier.py", - "file_type": "code", - "norm_label": "classify.py", - "source_file": "classify.py", + "community": 45, + "community_name": "ECPSnapshot", + "file_type": "rationale", + "norm_label": "adversarial and robustness test suite for multilingual nlp entity inherence...", + "source_file": "tests/test_adversarial.py", "source_location": "L1" }, { - "id": "enum", - "label": "Enum", + "id": "tests_test_adversarial_rationale_134", + "label": "Run CLI via subprocess with empty content and verify error code and exit code.", "_origin": "ast", - "community": 46, - "community_name": "classifier.py", - "file_type": "code", - "norm_label": "enum", - "source_file": "", - "source_location": "" - }, - { - "id": "src_classifier", - "label": "classifier.py", - "_origin": "ast", - "community": 46, - "community_name": "classifier.py", - "file_type": "code", - "norm_label": "classifier.py", - "source_file": "src/classifier.py", - "source_location": "L1" - }, - { - "id": "src_models", - "label": "models.py", - "_origin": "ast", - "community": 46, - "community_name": "classifier.py", - "file_type": "code", - "norm_label": "models.py", - "source_file": "src/models.py", - "source_location": "L1" - }, - { - "id": "src_parser", - "label": "parser.py", - "_origin": "ast", - "community": 46, - "community_name": "classifier.py", - "file_type": "code", - "norm_label": "parser.py", - "source_file": "src/parser.py", - "source_location": "L1" - }, - { - "id": "str", - "label": "str", - "_origin": "ast", - "community": 46, - "community_name": "classifier.py", - "file_type": "code", - "norm_label": "str", - "source_file": "", - "source_location": "" - }, - { - "id": "tests_test_benchmark_24", - "label": "test_benchmark_24.py", - "_origin": "ast", - "community": 46, - "community_name": "classifier.py", - "file_type": "code", - "norm_label": "test_benchmark_24.py", - "source_file": "tests/test_benchmark_24.py", - "source_location": "L1" - }, - { - "id": "tests_test_benchmark_24_py_fixture", - "label": "fixture", - "_origin": "ast", - "community": 46, - "community_name": "classifier.py", - "file_type": "code", - "norm_label": "fixture", - "source_file": "", - "source_location": "" - }, - { - "id": "tests_test_classifier", - "label": "test_classifier.py", - "_origin": "ast", - "community": 46, - "community_name": "classifier.py", - "file_type": "code", - "norm_label": "test_classifier.py", - "source_file": "tests/test_classifier.py", - "source_location": "L1" - }, - { - "id": "tests_test_classifier_py_fixture", - "label": "fixture", - "_origin": "ast", - "community": 46, - "community_name": "classifier.py", - "file_type": "code", - "norm_label": "fixture", - "source_file": "", - "source_location": "" - }, - { - "id": "tests_test_models", - "label": "test_models.py", - "_origin": "ast", - "community": 46, - "community_name": "classifier.py", - "file_type": "code", - "norm_label": "test_models.py", - "source_file": "tests/test_models.py", - "source_location": "L1" - }, - { - "id": "src_classifier_rationale_1", - "label": "Core deterministic classification engine (Tier 1 core).", - "_origin": "ast", - "community": 46, - "community_name": "classifier.py", + "community": 45, + "community_name": "ECPSnapshot", "file_type": "rationale", - "norm_label": "core deterministic classification engine (tier 1 core).", - "source_file": "src/classifier.py", - "source_location": "L1" + "norm_label": "run cli via subprocess with empty content and verify error code and exit code.", + "source_file": "tests/test_adversarial.py", + "source_location": "L134" }, { - "id": "src_classifier_rationale_21", - "label": "Check if a normalized phrase appears in normalized text with word boundary\u2026", + "id": "tests_test_adversarial_rationale_16", + "label": "Content about city/state governance of S\u00e3o Paulo against ECP for S\u00e3o Paulo FC.", "_origin": "ast", - "community": 46, - "community_name": "classifier.py", + "community": 45, + "community_name": "ECPSnapshot", "file_type": "rationale", - "norm_label": "check if a normalized phrase appears in normalized text with word boundary...", - "source_file": "src/classifier.py", - "source_location": "L21" + "norm_label": "content about city/state governance of sao paulo against ecp for sao paulo fc.", + "source_file": "tests/test_adversarial.py", + "source_location": "L16" }, { - "id": "src_classifier_rationale_34", - "label": "Count occurrences of a phrase in text.", + "id": "tests_test_adversarial_rationale_165", + "label": "Run CLI via subprocess with missing target_name and verify error payload.", "_origin": "ast", - "community": 46, - "community_name": "classifier.py", + "community": 45, + "community_name": "ECPSnapshot", "file_type": "rationale", - "norm_label": "count occurrences of a phrase in text.", - "source_file": "src/classifier.py", - "source_location": "L34" + "norm_label": "run cli via subprocess with missing target_name and verify error payload.", + "source_file": "tests/test_adversarial.py", + "source_location": "L165" }, { - "id": "src_classifier_rationale_45", - "label": "Tier 1 Deterministic NLP Entity Inherence Classifier.", + "id": "tests_test_adversarial_rationale_194", + "label": "Run CLI via subprocess with corrupted JSON and verify error payload.", "_origin": "ast", - "community": 46, - "community_name": "classifier.py", + "community": 45, + "community_name": "ECPSnapshot", "file_type": "rationale", - "norm_label": "tier 1 deterministic nlp entity inherence classifier.", - "source_file": "src/classifier.py", - "source_location": "L45" + "norm_label": "run cli via subprocess with corrupted json and verify error payload.", + "source_file": "tests/test_adversarial.py", + "source_location": "L194" }, { - "id": "src_classifier_rationale_62", - "label": "Classify inherence of content against an ECP snapshot.", + "id": "tests_test_adversarial_rationale_41", + "label": "Content about apple fruit/culinary recipe against Apple Inc. tech entity.", "_origin": "ast", - "community": 46, - "community_name": "classifier.py", + "community": 45, + "community_name": "ECPSnapshot", "file_type": "rationale", - "norm_label": "classify inherence of content against an ecp snapshot.", - "source_file": "src/classifier.py", - "source_location": "L62" + "norm_label": "content about apple fruit/culinary recipe against apple inc. tech entity.", + "source_file": "tests/test_adversarial.py", + "source_location": "L41" }, { - "id": "src_models_rationale_1", - "label": "Data models and validation schemas for Multilingual NLP Entity Inherence\u2026", + "id": "tests_test_adversarial_rationale_64", + "label": "High-weight related entity mentioned in passing without required domain anchors.", "_origin": "ast", - "community": 46, - "community_name": "classifier.py", + "community": 45, + "community_name": "ECPSnapshot", "file_type": "rationale", - "norm_label": "data models and validation schemas for multilingual nlp entity inherence...", - "source_file": "src/models.py", - "source_location": "L1" + "norm_label": "high-weight related entity mentioned in passing without required domain anchors.", + "source_file": "tests/test_adversarial.py", + "source_location": "L64" }, { - "id": "src_parser_rationale_1", - "label": "Markdown content parser and excerpt extraction utilities.", + "id": "tests_test_adversarial_rationale_99", + "label": "Run CLI via subprocess without --output and verify stdout is pure parseable\u2026", "_origin": "ast", - "community": 46, - "community_name": "classifier.py", + "community": 45, + "community_name": "ECPSnapshot", "file_type": "rationale", - "norm_label": "markdown content parser and excerpt extraction utilities.", - "source_file": "src/parser.py", - "source_location": "L1" - }, - { - "id": "src_parser_rationale_10", - "label": "Remove markdown syntax markers (headers, bold, italics, links, code blocks) to\u2026", - "_origin": "ast", - "community": 46, - "community_name": "classifier.py", - "file_type": "rationale", - "norm_label": "remove markdown syntax markers (headers, bold, italics, links, code blocks) to...", - "source_file": "src/parser.py", - "source_location": "L10" - }, - { - "id": "src_parser_rationale_44", - "label": "Split text into individual sentences.", - "_origin": "ast", - "community": 46, - "community_name": "classifier.py", - "file_type": "rationale", - "norm_label": "split text into individual sentences.", - "source_file": "src/parser.py", - "source_location": "L44" - }, - { - "id": "src_parser_rationale_52", - "label": "Extract relevant sentence excerpts from Markdown text that contain any of the\u2026", - "_origin": "ast", - "community": 46, - "community_name": "classifier.py", - "file_type": "rationale", - "norm_label": "extract relevant sentence excerpts from markdown text that contain any of the...", - "source_file": "src/parser.py", - "source_location": "L52" + "norm_label": "run cli via subprocess without --output and verify stdout is pure parseable...", + "source_file": "tests/test_adversarial.py", + "source_location": "L99" }, { "id": "tests_test_benchmark_24_rationale_1", "label": "Controlled 24-case benchmark suite for Multilingual NLP Entity Inherence\u2026", "_origin": "ast", - "community": 46, - "community_name": "classifier.py", + "community": 45, + "community_name": "ECPSnapshot", "file_type": "rationale", "norm_label": "controlled 24-case benchmark suite for multilingual nlp entity inherence...", "source_file": "tests/test_benchmark_24.py", @@ -5202,24 +5596,169 @@ "id": "tests_test_classifier_rationale_1", "label": "Unit tests for deterministic classification decision logic.", "_origin": "ast", - "community": 46, - "community_name": "classifier.py", + "community": 45, + "community_name": "ECPSnapshot", "file_type": "rationale", "norm_label": "unit tests for deterministic classification decision logic.", "source_file": "tests/test_classifier.py", "source_location": "L1" }, { - "id": "tests_test_models_rationale_1", - "label": "Unit tests for ECP models, schema validation, and structured error handling.", + "id": "specs_001_multilingual_entity_classifier_tasks_dependencies_execution_order", + "label": "Dependencies & Execution Order", "_origin": "ast", "community": 46, - "community_name": "classifier.py", - "file_type": "rationale", - "norm_label": "unit tests for ecp models, schema validation, and structured error handling.", - "source_file": "tests/test_models.py", + "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "dependencies & execution order", + "source_file": "specs/001-multilingual-entity-classifier/tasks.md", + "source_location": "L97" + }, + { + "id": "specs_001_multilingual_entity_classifier_tasks_implementation_for_user_story_1", + "label": "Implementation for User Story 1", + "_origin": "ast", + "community": 46, + "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "implementation for user story 1", + "source_file": "specs/001-multilingual-entity-classifier/tasks.md", + "source_location": "L42" + }, + { + "id": "specs_001_multilingual_entity_classifier_tasks_implementation_for_user_story_2", + "label": "Implementation for User Story 2", + "_origin": "ast", + "community": 46, + "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "implementation for user story 2", + "source_file": "specs/001-multilingual-entity-classifier/tasks.md", + "source_location": "L58" + }, + { + "id": "specs_001_multilingual_entity_classifier_tasks_implementation_for_user_story_3", + "label": "Implementation for User Story 3", + "_origin": "ast", + "community": 46, + "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "implementation for user story 3", + "source_file": "specs/001-multilingual-entity-classifier/tasks.md", + "source_location": "L77" + }, + { + "id": "specs_001_multilingual_entity_classifier_tasks_implementation_strategy", + "label": "Implementation Strategy", + "_origin": "ast", + "community": 46, + "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "implementation strategy", + "source_file": "specs/001-multilingual-entity-classifier/tasks.md", + "source_location": "L109" + }, + { + "id": "specs_001_multilingual_entity_classifier_tasks_phase_1_setup_shared_infrastructure", + "label": "Phase 1: Setup (Shared Infrastructure)", + "_origin": "ast", + "community": 46, + "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "phase 1: setup (shared infrastructure)", + "source_file": "specs/001-multilingual-entity-classifier/tasks.md", + "source_location": "L7" + }, + { + "id": "specs_001_multilingual_entity_classifier_tasks_phase_2_foundational_blocking_prerequisites", + "label": "Phase 2: Foundational (Blocking Prerequisites)", + "_origin": "ast", + "community": 46, + "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "phase 2: foundational (blocking prerequisites)", + "source_file": "specs/001-multilingual-entity-classifier/tasks.md", + "source_location": "L17" + }, + { + "id": "specs_001_multilingual_entity_classifier_tasks_phase_3_user_story_1_core_tier_1_deterministic_classification_cli_priority_p1_mvp", + "label": "Phase 3: User Story 1 - Core Tier 1 Deterministic Classification & CLI (Priority: P1) [MVP]", + "_origin": "ast", + "community": 46, + "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "phase 3: user story 1 - core tier 1 deterministic classification & cli (priority: p1) [mvp]", + "source_file": "specs/001-multilingual-entity-classifier/tasks.md", + "source_location": "L32" + }, + { + "id": "specs_001_multilingual_entity_classifier_tasks_phase_4_user_story_2_multilingual_24_case_controlled_benchmark_suite_priority_p2", + "label": "Phase 4: User Story 2 - Multilingual 24-Case Controlled Benchmark Suite (Priority: P2)", + "_origin": "ast", + "community": 46, + "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "phase 4: user story 2 - multilingual 24-case controlled benchmark suite (priority: p2)", + "source_file": "specs/001-multilingual-entity-classifier/tasks.md", + "source_location": "L52" + }, + { + "id": "specs_001_multilingual_entity_classifier_tasks_phase_5_optional_adapters_tier_2_embeddings_tier_3_llm_priority_p3", + "label": "Phase 5: Optional Adapters - Tier 2 (Embeddings) & Tier 3 (LLM) (Priority: P3)", + "_origin": "ast", + "community": 46, + "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "phase 5: optional adapters - tier 2 (embeddings) & tier 3 (llm) (priority: p3)", + "source_file": "specs/001-multilingual-entity-classifier/tasks.md", + "source_location": "L71" + }, + { + "id": "specs_001_multilingual_entity_classifier_tasks_phase_6_polish_validation", + "label": "Phase 6: Polish & Validation", + "_origin": "ast", + "community": 46, + "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "phase 6: polish & validation", + "source_file": "specs/001-multilingual-entity-classifier/tasks.md", + "source_location": "L87" + }, + { + "id": "specs_001_multilingual_entity_classifier_tasks_tasks_multilingual_nlp_entity_inherence_classifier_poc", + "label": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", + "_origin": "ast", + "community": 46, + "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "tasks: multilingual nlp entity inherence classifier (poc)", + "source_file": "specs/001-multilingual-entity-classifier/tasks.md", "source_location": "L1" }, + { + "id": "specs_001_multilingual_entity_classifier_tasks_tests_for_user_story_1", + "label": "Tests for User Story 1", + "_origin": "ast", + "community": 46, + "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "tests for user story 1", + "source_file": "specs/001-multilingual-entity-classifier/tasks.md", + "source_location": "L38" + }, { "id": "src_language", "label": "language.py", @@ -5242,6 +5781,39 @@ "source_file": "tests/test_language.py", "source_location": "L1" }, + { + "id": "src_classifier_rationale_21", + "label": "Check if a normalized phrase appears in normalized text with word boundary\u2026", + "_origin": "ast", + "community": 47, + "community_name": "detect_language", + "file_type": "rationale", + "norm_label": "check if a normalized phrase appears in normalized text with word boundary...", + "source_file": "src/classifier.py", + "source_location": "L21" + }, + { + "id": "src_classifier_rationale_34", + "label": "Count occurrences of a phrase in text.", + "_origin": "ast", + "community": 47, + "community_name": "detect_language", + "file_type": "rationale", + "norm_label": "count occurrences of a phrase in text.", + "source_file": "src/classifier.py", + "source_location": "L34" + }, + { + "id": "src_classifier_rationale_62", + "label": "Classify inherence of content against an ECP snapshot.", + "_origin": "ast", + "community": 47, + "community_name": "detect_language", + "file_type": "rationale", + "norm_label": "classify inherence of content against an ecp snapshot.", + "source_file": "src/classifier.py", + "source_location": "L62" + }, { "id": "src_language_rationale_1", "label": "Lightweight multilingual language detection and text normalization.", @@ -5297,39 +5869,149 @@ "source_file": "tests/test_language.py", "source_location": "L1" }, + { + "id": "classify", + "label": "classify.py", + "_origin": "ast", + "community": 48, + "community_name": "test_models.py", + "file_type": "code", + "norm_label": "classify.py", + "source_file": "classify.py", + "source_location": "L1" + }, { "id": "namespace", "label": "Namespace", "_origin": "ast", "community": 48, - "community_name": "main", + "community_name": "test_models.py", "file_type": "code", "norm_label": "namespace", "source_file": "", "source_location": "" }, + { + "id": "src_models_py_any", + "label": "Any", + "_origin": "ast", + "community": 48, + "community_name": "test_models.py", + "file_type": "code", + "norm_label": "any", + "source_file": "", + "source_location": "" + }, + { + "id": "src_parser", + "label": "parser.py", + "_origin": "ast", + "community": 48, + "community_name": "test_models.py", + "file_type": "code", + "norm_label": "parser.py", + "source_file": "src/parser.py", + "source_location": "L1" + }, + { + "id": "str", + "label": "str", + "_origin": "ast", + "community": 48, + "community_name": "test_models.py", + "file_type": "code", + "norm_label": "str", + "source_file": "", + "source_location": "" + }, { "id": "tests_test_cli", "label": "test_cli.py", "_origin": "ast", "community": 48, - "community_name": "main", + "community_name": "test_models.py", "file_type": "code", "norm_label": "test_cli.py", "source_file": "tests/test_cli.py", "source_location": "L1" }, + { + "id": "tests_test_models", + "label": "test_models.py", + "_origin": "ast", + "community": 48, + "community_name": "test_models.py", + "file_type": "code", + "norm_label": "test_models.py", + "source_file": "tests/test_models.py", + "source_location": "L1" + }, + { + "id": "src_parser_rationale_1", + "label": "Markdown content parser and excerpt extraction utilities.", + "_origin": "ast", + "community": 48, + "community_name": "test_models.py", + "file_type": "rationale", + "norm_label": "markdown content parser and excerpt extraction utilities.", + "source_file": "src/parser.py", + "source_location": "L1" + }, + { + "id": "src_parser_rationale_10", + "label": "Remove markdown syntax markers (headers, bold, italics, links, code blocks) to\u2026", + "_origin": "ast", + "community": 48, + "community_name": "test_models.py", + "file_type": "rationale", + "norm_label": "remove markdown syntax markers (headers, bold, italics, links, code blocks) to...", + "source_file": "src/parser.py", + "source_location": "L10" + }, + { + "id": "src_parser_rationale_44", + "label": "Split text into individual sentences.", + "_origin": "ast", + "community": 48, + "community_name": "test_models.py", + "file_type": "rationale", + "norm_label": "split text into individual sentences.", + "source_file": "src/parser.py", + "source_location": "L44" + }, + { + "id": "src_parser_rationale_52", + "label": "Extract relevant sentence excerpts from Markdown text that contain any of the\u2026", + "_origin": "ast", + "community": 48, + "community_name": "test_models.py", + "file_type": "rationale", + "norm_label": "extract relevant sentence excerpts from markdown text that contain any of the...", + "source_file": "src/parser.py", + "source_location": "L52" + }, { "id": "tests_test_cli_rationale_1", "label": "CLI execution tests covering flags, arguments, stdout, and error handling.", "_origin": "ast", "community": 48, - "community_name": "main", + "community_name": "test_models.py", "file_type": "rationale", "norm_label": "cli execution tests covering flags, arguments, stdout, and error handling.", "source_file": "tests/test_cli.py", "source_location": "L1" }, + { + "id": "tests_test_models_rationale_1", + "label": "Unit tests for ECP models, schema validation, and structured error handling.", + "_origin": "ast", + "community": 48, + "community_name": "test_models.py", + "file_type": "rationale", + "norm_label": "unit tests for ecp models, schema validation, and structured error handling.", + "source_file": "tests/test_models.py", + "source_location": "L1" + }, { "id": "examples_content_northvolt_de", "label": "content_northvolt_de.md", @@ -5359,7 +6041,7 @@ "label": "poc-readiness.md", "_origin": "ast", "community": 5, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", "file_type": "document", "node_kind": "page", "norm_label": "poc-readiness.md", @@ -5371,7 +6053,7 @@ "label": "1. Requirement Completeness & Scope Boundaries", "_origin": "ast", "community": 5, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", "file_type": "document", "node_kind": "heading", "norm_label": "1. requirement completeness & scope boundaries", @@ -5383,7 +6065,7 @@ "label": "2. Requirement Clarity & Decision Semantics", "_origin": "ast", "community": 5, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", "file_type": "document", "node_kind": "heading", "norm_label": "2. requirement clarity & decision semantics", @@ -5395,7 +6077,7 @@ "label": "3. Requirement Consistency & Alignment", "_origin": "ast", "community": 5, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", "file_type": "document", "node_kind": "heading", "norm_label": "3. requirement consistency & alignment", @@ -5407,7 +6089,7 @@ "label": "4. Acceptance Criteria & Measurability", "_origin": "ast", "community": 5, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", "file_type": "document", "node_kind": "heading", "norm_label": "4. acceptance criteria & measurability", @@ -5419,7 +6101,7 @@ "label": "5. Scenario & Edge Case Coverage", "_origin": "ast", "community": 5, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", "file_type": "document", "node_kind": "heading", "norm_label": "5. scenario & edge case coverage", @@ -5431,7 +6113,7 @@ "label": "Notes", "_origin": "ast", "community": 5, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", "file_type": "document", "node_kind": "heading", "norm_label": "notes", @@ -5443,7 +6125,7 @@ "label": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", "_origin": "ast", "community": 5, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", "file_type": "document", "node_kind": "heading", "norm_label": "poc readiness & requirements quality checklist: multilingual nlp entity inherence classifier", @@ -5452,13 +6134,13 @@ }, { "id": "specs_001_multilingual_entity_classifier_checklists_requirements", - "label": "requirements.md", + "label": "001-multilingual-entity-classifier/checklists/requirements.md", "_origin": "ast", "community": 5, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", "file_type": "document", "node_kind": "page", - "norm_label": "requirements.md", + "norm_label": "001-multilingual-entity-classifier/checklists/requirements.md", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "source_location": "L1" }, @@ -5467,7 +6149,7 @@ "label": "Content Quality", "_origin": "ast", "community": 5, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", "file_type": "document", "node_kind": "heading", "norm_label": "content quality", @@ -5479,7 +6161,7 @@ "label": "Feature Readiness", "_origin": "ast", "community": 5, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", "file_type": "document", "node_kind": "heading", "norm_label": "feature readiness", @@ -5491,7 +6173,7 @@ "label": "Notes", "_origin": "ast", "community": 5, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", "file_type": "document", "node_kind": "heading", "norm_label": "notes", @@ -5503,7 +6185,7 @@ "label": "Requirement Completeness", "_origin": "ast", "community": 5, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", "file_type": "document", "node_kind": "heading", "norm_label": "requirement completeness", @@ -5515,7 +6197,7 @@ "label": "Specification Quality Checklist: Multilingual NLP Entity Inherence Classifier", "_origin": "ast", "community": 5, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", "file_type": "document", "node_kind": "heading", "norm_label": "specification quality checklist: multilingual nlp entity inherence classifier", @@ -5524,13 +6206,13 @@ }, { "id": "specs_001_multilingual_entity_classifier_plan", - "label": "plan.md", + "label": "001-multilingual-entity-classifier/plan.md", "_origin": "ast", "community": 5, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", "file_type": "document", "node_kind": "page", - "norm_label": "plan.md", + "norm_label": "001-multilingual-entity-classifier/plan.md", "source_file": "specs/001-multilingual-entity-classifier/plan.md", "source_location": "L1" }, @@ -5539,7 +6221,7 @@ "label": "Complexity Tracking", "_origin": "ast", "community": 5, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", "file_type": "document", "node_kind": "heading", "norm_label": "complexity tracking", @@ -5551,7 +6233,7 @@ "label": "Constitution Check", "_origin": "ast", "community": 5, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", "file_type": "document", "node_kind": "heading", "norm_label": "constitution check", @@ -5563,7 +6245,7 @@ "label": "Documentation (this feature)", "_origin": "ast", "community": 5, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", "file_type": "document", "node_kind": "heading", "norm_label": "documentation (this feature)", @@ -5575,7 +6257,7 @@ "label": "Implementation Plan: Multilingual NLP Entity Inherence Classifier (POC)", "_origin": "ast", "community": 5, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", "file_type": "document", "node_kind": "heading", "norm_label": "implementation plan: multilingual nlp entity inherence classifier (poc)", @@ -5587,7 +6269,7 @@ "label": "Project Structure", "_origin": "ast", "community": 5, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", "file_type": "document", "node_kind": "heading", "norm_label": "project structure", @@ -5599,7 +6281,7 @@ "label": "Source Code (repository root)", "_origin": "ast", "community": 5, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", "file_type": "document", "node_kind": "heading", "norm_label": "source code (repository root)", @@ -5611,7 +6293,7 @@ "label": "Summary", "_origin": "ast", "community": 5, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", "file_type": "document", "node_kind": "heading", "norm_label": "summary", @@ -5623,7 +6305,7 @@ "label": "Technical Context", "_origin": "ast", "community": 5, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", "file_type": "document", "node_kind": "heading", "norm_label": "technical context", @@ -5632,184 +6314,196 @@ }, { "id": "specs_001_multilingual_entity_classifier_spec", - "label": "spec.md", + "label": "001-multilingual-entity-classifier/spec.md", "_origin": "ast", "community": 5, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", "file_type": "document", "node_kind": "page", - "norm_label": "spec.md", + "norm_label": "001-multilingual-entity-classifier/spec.md", "source_file": "specs/001-multilingual-entity-classifier/spec.md", "source_location": "L1" }, { - "id": "specs_001_multilingual_entity_classifier_tasks", - "label": "tasks.md", + "id": "specs_001_multilingual_entity_classifier_spec_assumptions", + "label": "Assumptions", "_origin": "ast", "community": 5, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "file_type": "document", + "node_kind": "heading", + "norm_label": "assumptions", + "source_file": "specs/001-multilingual-entity-classifier/spec.md", + "source_location": "L127" + }, + { + "id": "specs_001_multilingual_entity_classifier_spec_assumptions_scope", + "label": "Assumptions & Scope", + "_origin": "ast", + "community": 5, + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "file_type": "document", + "node_kind": "heading", + "norm_label": "assumptions & scope", + "source_file": "specs/001-multilingual-entity-classifier/spec.md", + "source_location": "L125" + }, + { + "id": "specs_001_multilingual_entity_classifier_spec_clarifications", + "label": "Clarifications", + "_origin": "ast", + "community": 5, + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "file_type": "document", + "node_kind": "heading", + "norm_label": "clarifications", + "source_file": "specs/001-multilingual-entity-classifier/spec.md", + "source_location": "L13" + }, + { + "id": "specs_001_multilingual_entity_classifier_spec_explicit_out_of_scope_poc", + "label": "Explicit Out of Scope (POC)", + "_origin": "ast", + "community": 5, + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "file_type": "document", + "node_kind": "heading", + "norm_label": "explicit out of scope (poc)", + "source_file": "specs/001-multilingual-entity-classifier/spec.md", + "source_location": "L132" + }, + { + "id": "specs_001_multilingual_entity_classifier_spec_feature_specification_multilingual_nlp_entity_inherence_classifier_poc", + "label": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", + "_origin": "ast", + "community": 5, + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "file_type": "document", + "node_kind": "heading", + "norm_label": "feature specification: multilingual nlp entity inherence classifier (poc)", + "source_file": "specs/001-multilingual-entity-classifier/spec.md", + "source_location": "L1" + }, + { + "id": "specs_001_multilingual_entity_classifier_spec_functional_requirements", + "label": "Functional Requirements", + "_origin": "ast", + "community": 5, + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "file_type": "document", + "node_kind": "heading", + "norm_label": "functional requirements", + "source_file": "specs/001-multilingual-entity-classifier/spec.md", + "source_location": "L61" + }, + { + "id": "specs_001_multilingual_entity_classifier_spec_key_entities_data_models_domain_entities", + "label": "Key Entities *(data models & domain entities)*", + "_origin": "ast", + "community": 5, + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "file_type": "document", + "node_kind": "heading", + "norm_label": "key entities *(data models & domain entities)*", + "source_file": "specs/001-multilingual-entity-classifier/spec.md", + "source_location": "L105" + }, + { + "id": "specs_001_multilingual_entity_classifier_spec_measurable_outcomes", + "label": "Measurable Outcomes", + "_origin": "ast", + "community": 5, + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "file_type": "document", + "node_kind": "heading", + "norm_label": "measurable outcomes", + "source_file": "specs/001-multilingual-entity-classifier/spec.md", + "source_location": "L116" + }, + { + "id": "specs_001_multilingual_entity_classifier_spec_requirements_mandatory", + "label": "Requirements *(mandatory)*", + "_origin": "ast", + "community": 5, + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "file_type": "document", + "node_kind": "heading", + "norm_label": "requirements *(mandatory)*", + "source_file": "specs/001-multilingual-entity-classifier/spec.md", + "source_location": "L59" + }, + { + "id": "specs_001_multilingual_entity_classifier_spec_session_2026_08_19", + "label": "Session 2026-08-19", + "_origin": "ast", + "community": 5, + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "file_type": "document", + "node_kind": "heading", + "norm_label": "session 2026-08-19", + "source_file": "specs/001-multilingual-entity-classifier/spec.md", + "source_location": "L15" + }, + { + "id": "specs_001_multilingual_entity_classifier_spec_success_criteria_mandatory", + "label": "Success Criteria *(mandatory)*", + "_origin": "ast", + "community": 5, + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "file_type": "document", + "node_kind": "heading", + "norm_label": "success criteria *(mandatory)*", + "source_file": "specs/001-multilingual-entity-classifier/spec.md", + "source_location": "L114" + }, + { + "id": "specs_001_multilingual_entity_classifier_spec_user_scenarios_testing_mandatory", + "label": "User Scenarios & Testing *(mandatory)*", + "_origin": "ast", + "community": 5, + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "file_type": "document", + "node_kind": "heading", + "norm_label": "user scenarios & testing *(mandatory)*", + "source_file": "specs/001-multilingual-entity-classifier/spec.md", + "source_location": "L25" + }, + { + "id": "specs_001_multilingual_entity_classifier_spec_user_story_1_classify_content_inherence_via_cli_for_an_ecp_snapshot_priority_p1", + "label": "User Story 1 - Classify Content Inherence via CLI for an ECP Snapshot (Priority: P1)", + "_origin": "ast", + "community": 5, + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "file_type": "document", + "node_kind": "heading", + "norm_label": "user story 1 - classify content inherence via cli for an ecp snapshot (priority: p1)", + "source_file": "specs/001-multilingual-entity-classifier/spec.md", + "source_location": "L27" + }, + { + "id": "specs_001_multilingual_entity_classifier_spec_user_story_2_multilingual_language_support_edge_validation_priority_p2", + "label": "User Story 2 - Multilingual Language Support & Edge Validation (Priority: P2)", + "_origin": "ast", + "community": 5, + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "file_type": "document", + "node_kind": "heading", + "norm_label": "user story 2 - multilingual language support & edge validation (priority: p2)", + "source_file": "specs/001-multilingual-entity-classifier/spec.md", + "source_location": "L44" + }, + { + "id": "specs_001_multilingual_entity_classifier_tasks", + "label": "001-multilingual-entity-classifier/tasks.md", + "_origin": "ast", + "community": 5, + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", "file_type": "document", "node_kind": "page", - "norm_label": "tasks.md", + "norm_label": "001-multilingual-entity-classifier/tasks.md", "source_file": "specs/001-multilingual-entity-classifier/tasks.md", "source_location": "L1" }, - { - "id": "specs_001_multilingual_entity_classifier_tasks_dependencies_execution_order", - "label": "Dependencies & Execution Order", - "_origin": "ast", - "community": 5, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "dependencies & execution order", - "source_file": "specs/001-multilingual-entity-classifier/tasks.md", - "source_location": "L97" - }, - { - "id": "specs_001_multilingual_entity_classifier_tasks_implementation_for_user_story_1", - "label": "Implementation for User Story 1", - "_origin": "ast", - "community": 5, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "implementation for user story 1", - "source_file": "specs/001-multilingual-entity-classifier/tasks.md", - "source_location": "L42" - }, - { - "id": "specs_001_multilingual_entity_classifier_tasks_implementation_for_user_story_2", - "label": "Implementation for User Story 2", - "_origin": "ast", - "community": 5, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "implementation for user story 2", - "source_file": "specs/001-multilingual-entity-classifier/tasks.md", - "source_location": "L58" - }, - { - "id": "specs_001_multilingual_entity_classifier_tasks_implementation_for_user_story_3", - "label": "Implementation for User Story 3", - "_origin": "ast", - "community": 5, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "implementation for user story 3", - "source_file": "specs/001-multilingual-entity-classifier/tasks.md", - "source_location": "L77" - }, - { - "id": "specs_001_multilingual_entity_classifier_tasks_implementation_strategy", - "label": "Implementation Strategy", - "_origin": "ast", - "community": 5, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "implementation strategy", - "source_file": "specs/001-multilingual-entity-classifier/tasks.md", - "source_location": "L109" - }, - { - "id": "specs_001_multilingual_entity_classifier_tasks_phase_1_setup_shared_infrastructure", - "label": "Phase 1: Setup (Shared Infrastructure)", - "_origin": "ast", - "community": 5, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "phase 1: setup (shared infrastructure)", - "source_file": "specs/001-multilingual-entity-classifier/tasks.md", - "source_location": "L7" - }, - { - "id": "specs_001_multilingual_entity_classifier_tasks_phase_2_foundational_blocking_prerequisites", - "label": "Phase 2: Foundational (Blocking Prerequisites)", - "_origin": "ast", - "community": 5, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "phase 2: foundational (blocking prerequisites)", - "source_file": "specs/001-multilingual-entity-classifier/tasks.md", - "source_location": "L17" - }, - { - "id": "specs_001_multilingual_entity_classifier_tasks_phase_3_user_story_1_core_tier_1_deterministic_classification_cli_priority_p1_mvp", - "label": "Phase 3: User Story 1 - Core Tier 1 Deterministic Classification & CLI (Priority: P1) [MVP]", - "_origin": "ast", - "community": 5, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "phase 3: user story 1 - core tier 1 deterministic classification & cli (priority: p1) [mvp]", - "source_file": "specs/001-multilingual-entity-classifier/tasks.md", - "source_location": "L32" - }, - { - "id": "specs_001_multilingual_entity_classifier_tasks_phase_4_user_story_2_multilingual_24_case_controlled_benchmark_suite_priority_p2", - "label": "Phase 4: User Story 2 - Multilingual 24-Case Controlled Benchmark Suite (Priority: P2)", - "_origin": "ast", - "community": 5, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "phase 4: user story 2 - multilingual 24-case controlled benchmark suite (priority: p2)", - "source_file": "specs/001-multilingual-entity-classifier/tasks.md", - "source_location": "L52" - }, - { - "id": "specs_001_multilingual_entity_classifier_tasks_phase_5_optional_adapters_tier_2_embeddings_tier_3_llm_priority_p3", - "label": "Phase 5: Optional Adapters - Tier 2 (Embeddings) & Tier 3 (LLM) (Priority: P3)", - "_origin": "ast", - "community": 5, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "phase 5: optional adapters - tier 2 (embeddings) & tier 3 (llm) (priority: p3)", - "source_file": "specs/001-multilingual-entity-classifier/tasks.md", - "source_location": "L71" - }, - { - "id": "specs_001_multilingual_entity_classifier_tasks_phase_6_polish_validation", - "label": "Phase 6: Polish & Validation", - "_origin": "ast", - "community": 5, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "phase 6: polish & validation", - "source_file": "specs/001-multilingual-entity-classifier/tasks.md", - "source_location": "L87" - }, - { - "id": "specs_001_multilingual_entity_classifier_tasks_tasks_multilingual_nlp_entity_inherence_classifier_poc", - "label": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", - "_origin": "ast", - "community": 5, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "tasks: multilingual nlp entity inherence classifier (poc)", - "source_file": "specs/001-multilingual-entity-classifier/tasks.md", - "source_location": "L1" - }, - { - "id": "specs_001_multilingual_entity_classifier_tasks_tests_for_user_story_1", - "label": "Tests for User Story 1", - "_origin": "ast", - "community": 5, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "tests for user story 1", - "source_file": "specs/001-multilingual-entity-classifier/tasks.md", - "source_location": "L38" - }, { "id": "examples_content_presal_pt", "label": "content_presal_pt.md", @@ -6835,6 +7529,1074 @@ "source_file": ".agents/skills/speckit-plan/SKILL.md", "source_location": "L11" }, + { + "id": "scripts_extract_google_news_rationale_110", + "label": "Mapeia idioma e locale para os par\u00e2metros hl, gl e ceid do Google News.", + "_origin": "ast", + "community": 80, + "community_name": "get_hl_gl_ceid", + "file_type": "rationale", + "norm_label": "mapeia idioma e locale para os parametros hl, gl e ceid do google news.", + "source_file": "scripts/extract_google_news.py", + "source_location": "L110" + }, + { + "id": "tests_test_extract_google_news_rationale_38", + "label": "Valida o mapeamento padr\u00e3o de idiomas para pares (hl, gl, ceid).", + "_origin": "ast", + "community": 80, + "community_name": "get_hl_gl_ceid", + "file_type": "rationale", + "norm_label": "valida o mapeamento padrao de idiomas para pares (hl, gl, ceid).", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L38" + }, + { + "id": "tests_test_extract_google_news_rationale_61", + "label": "Valida a sobrescrita geogr\u00e1fica quando o argumento locale \u00e9 especificado.", + "_origin": "ast", + "community": 80, + "community_name": "get_hl_gl_ceid", + "file_type": "rationale", + "norm_label": "valida a sobrescrita geografica quando o argumento locale e especificado.", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L61" + }, + { + "id": "tests_test_extract_google_news_rationale_79", + "label": "Valida fallback din\u00e2mico para idiomas regionais n\u00e3o listados explicitamente.", + "_origin": "ast", + "community": 80, + "community_name": "get_hl_gl_ceid", + "file_type": "rationale", + "norm_label": "valida fallback dinamico para idiomas regionais nao listados explicitamente.", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L79" + }, + { + "id": "docs_googlenews_extractor_guia_completo", + "label": "googlenews_extractor_guia_completo.md", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "page", + "norm_label": "googlenews_extractor_guia_completo.md", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L1" + }, + { + "id": "docs_googlenews_extractor_guia_completo_1_vis\u00e3o_geral_arquitetura", + "label": "1. Vis\u00e3o geral (arquitetura)", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "1. visao geral (arquitetura)", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L9" + }, + { + "id": "docs_googlenews_extractor_guia_completo_2_1_dto_de_entrada_googlenews_etl_application_dtos_extract_news_dto_py", + "label": "2.1 DTO de entrada (`googlenews_etl/application/dtos/extract_news_dto.py`)", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "2.1 dto de entrada (`googlenews_etl/application/dtos/extract_news_dto.py`)", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L58" + }, + { + "id": "docs_googlenews_extractor_guia_completo_2_2_value_object_de_valida\u00e7\u00e3o_googlenews_etl_domain_entities_search_query_py", + "label": "2.2 Value Object de valida\u00e7\u00e3o (`googlenews_etl/domain/entities/search_query.py`)", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "2.2 value object de validacao (`googlenews_etl/domain/entities/search_query.py`)", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L75" + }, + { + "id": "docs_googlenews_extractor_guia_completo_2_entrada", + "label": "2. Entrada", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "2. entrada", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L56" + }, + { + "id": "docs_googlenews_extractor_guia_completo_3_1_o_caso_de_uso_googlenews_etl_application_use_cases_extract_news_use_case_py", + "label": "3.1 O caso de uso (`googlenews_etl/application/use_cases/extract_news_use_case.py`)", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "3.1 o caso de uso (`googlenews_etl/application/use_cases/extract_news_use_case.py`)", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L115" + }, + { + "id": "docs_googlenews_extractor_guia_completo_3_2_a_porta_googlenews_etl_domain_ports_news_extractor_port_py", + "label": "3.2 A porta (`googlenews_etl/domain/ports/news_extractor_port.py`)", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "3.2 a porta (`googlenews_etl/domain/ports/news_extractor_port.py`)", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L168" + }, + { + "id": "docs_googlenews_extractor_guia_completo_3_3_1_inicializa\u00e7\u00e3o_sess\u00e3o_http_com_impersona\u00e7\u00e3o_de_browser", + "label": "3.3.1 Inicializa\u00e7\u00e3o: sess\u00e3o HTTP com impersona\u00e7\u00e3o de browser", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "3.3.1 inicializacao: sessao http com impersonacao de browser", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L185" + }, + { + "id": "docs_googlenews_extractor_guia_completo_3_3_2_mapeamento_idioma_par\u00e2metros_hl_gl_get_hl_gl", + "label": "3.3.2 Mapeamento idioma \u2192 par\u00e2metros `hl`/`gl` (`_get_hl_gl`)", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "3.3.2 mapeamento idioma \u2192 parametros `hl`/`gl` (`_get_hl_gl`)", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L213" + }, + { + "id": "docs_googlenews_extractor_guia_completo_3_3_3_extra\u00e7\u00e3o_do_rss_o_ponto_fundamental_fetch_rss", + "label": "3.3.3 \u2605 Extra\u00e7\u00e3o do RSS \u2014 o ponto fundamental (`_fetch_rss`)", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "3.3.3 \u2605 extracao do rss \u2014 o ponto fundamental (`_fetch_rss`)", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L250" + }, + { + "id": "docs_googlenews_extractor_guia_completo_3_3_4_orquestra\u00e7\u00e3o_com_resolu\u00e7\u00e3o_de_urls_extract", + "label": "3.3.4 Orquestra\u00e7\u00e3o com resolu\u00e7\u00e3o de URLs (`extract`)", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "3.3.4 orquestracao com resolucao de urls (`extract`)", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L306" + }, + { + "id": "docs_googlenews_extractor_guia_completo_3_3_o_adaptador_concreto_o_cora\u00e7\u00e3o_do_extrator_googlenews_etl_infrastructure_adapters_google_news_extractor_adapter_py", + "label": "3.3 O adaptador concreto \u2014 o cora\u00e7\u00e3o do extrator (`googlenews_etl/infrastructure/adapters/google_news_extractor_adapter.py`)", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "3.3 o adaptador concreto \u2014 o coracao do extrator (`googlenews_etl/infrastructure/adapters/google_news_extractor_adapter.py`)", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L183" + }, + { + "id": "docs_googlenews_extractor_guia_completo_3_4_resolu\u00e7\u00e3o_de_urls_googlenews_etl_infrastructure_adapters_playwright_url_resolver_adapter_py", + "label": "3.4 Resolu\u00e7\u00e3o de URLs (`googlenews_etl/infrastructure/adapters/playwright_url_resolver_adapter.py`)", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "3.4 resolucao de urls (`googlenews_etl/infrastructure/adapters/playwright_url_resolver_adapter.py`)", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L332" + }, + { + "id": "docs_googlenews_extractor_guia_completo_3_5_rate_limiter_googlenews_etl_domain_services_rate_limiter_service_py", + "label": "3.5 Rate limiter (`googlenews_etl/domain/services/rate_limiter_service.py`)", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "3.5 rate limiter (`googlenews_etl/domain/services/rate_limiter_service.py`)", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L384" + }, + { + "id": "docs_googlenews_extractor_guia_completo_3_processamento_passo_a_passo", + "label": "3. Processamento \u2014 passo a passo", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "3. processamento \u2014 passo a passo", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L113" + }, + { + "id": "docs_googlenews_extractor_guia_completo_4_entidade_de_dom\u00ednio_da_not\u00edcia_googlenews_etl_domain_entities_news_article_py", + "label": "4. Entidade de dom\u00ednio da not\u00edcia (`googlenews_etl/domain/entities/news_article.py`)", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "4. entidade de dominio da noticia (`googlenews_etl/domain/entities/news_article.py`)", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L403" + }, + { + "id": "docs_googlenews_extractor_guia_completo_5_1_dtos_de_sa\u00edda_googlenews_etl_application_dtos_extract_news_dto_py", + "label": "5.1 DTOs de sa\u00edda (`googlenews_etl/application/dtos/extract_news_dto.py`)", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "5.1 dtos de saida (`googlenews_etl/application/dtos/extract_news_dto.py`)", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L437" + }, + { + "id": "docs_googlenews_extractor_guia_completo_5_2_exemplo_de_sa\u00edda_json", + "label": "5.2 Exemplo de sa\u00edda JSON", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "5.2 exemplo de saida json", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L461" + }, + { + "id": "docs_googlenews_extractor_guia_completo_5_sa\u00edda", + "label": "5. Sa\u00edda", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "5. saida", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L435" + }, + { + "id": "docs_googlenews_extractor_guia_completo_6_resumo_do_fluxo_completo_entrada_sa\u00edda", + "label": "6. Resumo do fluxo completo (entrada \u2192 sa\u00edda)", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "6. resumo do fluxo completo (entrada \u2192 saida)", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L486" + }, + { + "id": "docs_googlenews_extractor_guia_completo_7_depend\u00eancias_para_rodar_o_que_n\u00e3o_est\u00e1_nos_4_arquivos_centrais", + "label": "7. Depend\u00eancias para rodar (o que N\u00c3O est\u00e1 nos 4 arquivos centrais)", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "7. dependencias para rodar (o que nao esta nos 4 arquivos centrais)", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L514" + }, + { + "id": "docs_googlenews_extractor_guia_completo_8_como_chamar_exemplo_de_uso", + "label": "8. Como chamar (exemplo de uso)", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "8. como chamar (exemplo de uso)", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L548" + }, + { + "id": "docs_googlenews_extractor_guia_completo_comportamentos_observ\u00e1veis_honestidade", + "label": "Comportamentos observ\u00e1veis (honestidade)", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "comportamentos observaveis (honestidade)", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L537" + }, + { + "id": "docs_googlenews_extractor_guia_completo_depend\u00eancias_de_bibliotecas_requirements", + "label": "Depend\u00eancias de bibliotecas (requirements)", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "dependencias de bibliotecas (requirements)", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L529" + }, + { + "id": "docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", + "label": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "extrator de noticias do google news \u2014 guia completo de funcionamento", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L1" + }, + { + "id": "scripts_extract_google_news", + "label": "extract_google_news.py", + "_origin": "ast", + "community": 82, + "community_name": "extract_google_news.py", + "file_type": "code", + "norm_label": "extract_google_news.py", + "source_file": "scripts/extract_google_news.py", + "source_location": "L1" + }, + { + "id": "scripts_extract_google_news_rationale_154", + "label": "Remove pontua\u00e7\u00e3o e espa\u00e7os extras para compara\u00e7\u00e3o de redund\u00e2ncia.", + "_origin": "ast", + "community": 82, + "community_name": "extract_google_news.py", + "file_type": "rationale", + "norm_label": "remove pontuacao e espacos extras para comparacao de redundancia.", + "source_file": "scripts/extract_google_news.py", + "source_location": "L154" + }, + { + "id": "scripts_extract_google_news_rationale_159", + "label": "Parseia o XML do RSS do Google News e extrai os itens estruturados.", + "_origin": "ast", + "community": 82, + "community_name": "extract_google_news.py", + "file_type": "rationale", + "norm_label": "parseia o xml do rss do google news e extrai os itens estruturados.", + "source_file": "scripts/extract_google_news.py", + "source_location": "L159" + }, + { + "id": "scripts_extract_google_news_rationale_225", + "label": "Resolve em paralelo as URLs intermedi\u00e1rias do Google News para os links finais\u2026", + "_origin": "ast", + "community": 82, + "community_name": "extract_google_news.py", + "file_type": "rationale", + "norm_label": "resolve em paralelo as urls intermediarias do google news para os links finais...", + "source_file": "scripts/extract_google_news.py", + "source_location": "L225" + }, + { + "id": "scripts_extract_google_news_rationale_256", + "label": "Realiza a requisi\u00e7\u00e3o ao feed RSS utilizando a biblioteca Foxcape como motor\u2026", + "_origin": "ast", + "community": 82, + "community_name": "extract_google_news.py", + "file_type": "rationale", + "norm_label": "realiza a requisicao ao feed rss utilizando a biblioteca foxcape como motor...", + "source_file": "scripts/extract_google_news.py", + "source_location": "L256" + }, + { + "id": "scripts_extract_google_news_rationale_302", + "label": "Orquestra a consulta ao Google News e retorna o resultado consolidado com URLs\u2026", + "_origin": "ast", + "community": 82, + "community_name": "extract_google_news.py", + "file_type": "rationale", + "norm_label": "orquestra a consulta ao google news e retorna o resultado consolidado com urls...", + "source_file": "scripts/extract_google_news.py", + "source_location": "L302" + }, + { + "id": "scripts_extract_google_news_rationale_67", + "label": "Entidade que representa uma not\u00edcia extra\u00edda.", + "_origin": "ast", + "community": 82, + "community_name": "extract_google_news.py", + "file_type": "rationale", + "norm_label": "entidade que representa uma noticia extraida.", + "source_file": "scripts/extract_google_news.py", + "source_location": "L67" + }, + { + "id": "tests_test_extract_google_news_rationale_164", + "label": "Valida a resolu\u00e7\u00e3o concorrente em lote de uma lista de NewsArticle.", + "_origin": "ast", + "community": 82, + "community_name": "extract_google_news.py", + "file_type": "rationale", + "norm_label": "valida a resolucao concorrente em lote de uma lista de newsarticle.", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L164" + }, + { + "id": "scripts_extract_google_news_py_any", + "label": "Any", + "_origin": "ast", + "community": 83, + "community_name": "ExtractionResult", + "file_type": "code", + "norm_label": "any", + "source_file": "", + "source_location": "" + }, + { + "id": "scripts_extract_google_news_rationale_87", + "label": "Resultado consolidado da extra\u00e7\u00e3o.", + "_origin": "ast", + "community": 83, + "community_name": "ExtractionResult", + "file_type": "rationale", + "norm_label": "resultado consolidado da extracao.", + "source_file": "scripts/extract_google_news.py", + "source_location": "L87" + }, + { + "id": "tests_test_extract_google_news_rationale_313", + "label": "Valida E2E o fluxo completo de busca, parsing e resolu\u00e7\u00e3o de URLs reais ao vivo.", + "_origin": "ast", + "community": 83, + "community_name": "ExtractionResult", + "file_type": "rationale", + "norm_label": "valida e2e o fluxo completo de busca, parsing e resolucao de urls reais ao vivo.", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L313" + }, + { + "id": "tests_test_extract_google_news", + "label": "test_extract_google_news.py", + "_origin": "ast", + "community": 84, + "community_name": "test_extract_google_news.py", + "file_type": "code", + "norm_label": "test_extract_google_news.py", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L1" + }, + { + "id": "scripts_extract_google_news_rationale_210", + "label": "Resolve a URL intermedi\u00e1ria do Google News para a URL real do ve\u00edculo.", + "_origin": "ast", + "community": 84, + "community_name": "test_extract_google_news.py", + "file_type": "rationale", + "norm_label": "resolve a url intermediaria do google news para a url real do veiculo.", + "source_file": "scripts/extract_google_news.py", + "source_location": "L210" + }, + { + "id": "tests_test_extract_google_news_rationale_1", + "label": "Testes unit\u00e1rios e de integra\u00e7\u00e3o para o Extrator de Manchetes do Google News.\u2026", + "_origin": "ast", + "community": 84, + "community_name": "test_extract_google_news.py", + "file_type": "rationale", + "norm_label": "testes unitarios e de integracao para o extrator de manchetes do google news....", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L1" + }, + { + "id": "tests_test_extract_google_news_rationale_112", + "label": "Valida o parsing do feed RSS, higieniza\u00e7\u00e3o de tags HTML e deduplica\u00e7\u00e3o.", + "_origin": "ast", + "community": 84, + "community_name": "test_extract_google_news.py", + "file_type": "rationale", + "norm_label": "valida o parsing do feed rss, higienizacao de tags html e deduplicacao.", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L112" + }, + { + "id": "tests_test_extract_google_news_rationale_139", + "label": "Valida fallback gracioso de URL quando n\u00e3o \u00e9 link do Google News ou em erro.", + "_origin": "ast", + "community": 84, + "community_name": "test_extract_google_news.py", + "file_type": "rationale", + "norm_label": "valida fallback gracioso de url quando nao e link do google news ou em erro.", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L139" + }, + { + "id": "tests_test_extract_google_news_rationale_151", + "label": "Valida resolu\u00e7\u00e3o bem-sucedida de URL do Google News para o portal destino.", + "_origin": "ast", + "community": 84, + "community_name": "test_extract_google_news.py", + "file_type": "rationale", + "norm_label": "valida resolucao bem-sucedida de url do google news para o portal destino.", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L151" + }, + { + "id": "tests_test_extract_google_news_rationale_292", + "label": "Valida E2E que o decodificador resolve uma URL real do Google News para o\u2026", + "_origin": "ast", + "community": 84, + "community_name": "test_extract_google_news.py", + "file_type": "rationale", + "norm_label": "valida e2e que o decodificador resolve uma url real do google news para o...", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L292" + }, + { + "id": "specs_002_google_news_extractor_tasks_implementation_for_user_story_1", + "label": "Implementation for User Story 1", + "_origin": "ast", + "community": 85, + "community_name": "Implementation Tasks: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "implementation for user story 1", + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L36" + }, + { + "id": "specs_002_google_news_extractor_tasks_implementation_for_user_story_2", + "label": "Implementation for User Story 2", + "_origin": "ast", + "community": 85, + "community_name": "Implementation Tasks: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "implementation for user story 2", + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L54" + }, + { + "id": "specs_002_google_news_extractor_tasks_implementation_for_user_story_3", + "label": "Implementation for User Story 3", + "_origin": "ast", + "community": 85, + "community_name": "Implementation Tasks: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "implementation for user story 3", + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L70" + }, + { + "id": "specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", + "label": "Implementation Tasks: Google News Headlines Extractor", + "_origin": "ast", + "community": 85, + "community_name": "Implementation Tasks: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "implementation tasks: google news headlines extractor", + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L1" + }, + { + "id": "specs_002_google_news_extractor_tasks_phase_1_setup_shared_infrastructure", + "label": "Phase 1: Setup (Shared Infrastructure)", + "_origin": "ast", + "community": 85, + "community_name": "Implementation Tasks: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "phase 1: setup (shared infrastructure)", + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L9" + }, + { + "id": "specs_002_google_news_extractor_tasks_phase_2_foundational_blocking_prerequisites", + "label": "Phase 2: Foundational (Blocking Prerequisites)", + "_origin": "ast", + "community": 85, + "community_name": "Implementation Tasks: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "phase 2: foundational (blocking prerequisites)", + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L18" + }, + { + "id": "specs_002_google_news_extractor_tasks_phase_3_user_story_1_extra\u00e7\u00e3o_b\u00e1sica_de_not\u00edcias_por_assunto_e_idioma_priority_p1_mvp", + "label": "Phase 3: User Story 1 - Extra\u00e7\u00e3o B\u00e1sica de Not\u00edcias por Assunto e Idioma (Priority: P1) \ud83c\udf1f MVP", + "_origin": "ast", + "community": 85, + "community_name": "Implementation Tasks: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "phase 3: user story 1 - extracao basica de noticias por assunto e idioma (priority: p1) \ud83c\udf1f mvp", + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L27" + }, + { + "id": "specs_002_google_news_extractor_tasks_phase_4_user_story_2_filtragem_regional_e_edi\u00e7\u00e3o_geogr\u00e1fica_priority_p2", + "label": "Phase 4: User Story 2 - Filtragem Regional e Edi\u00e7\u00e3o Geogr\u00e1fica (Priority: P2)", + "_origin": "ast", + "community": 85, + "community_name": "Implementation Tasks: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "phase 4: user story 2 - filtragem regional e edicao geografica (priority: p2)", + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L45" + }, + { + "id": "specs_002_google_news_extractor_tasks_phase_5_user_story_3_pagina\u00e7\u00e3o_e_controle_de_volume_de_resultados_priority_p3", + "label": "Phase 5: User Story 3 - Pagina\u00e7\u00e3o e Controle de Volume de Resultados (Priority: P3)", + "_origin": "ast", + "community": 85, + "community_name": "Implementation Tasks: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "phase 5: user story 3 - paginacao e controle de volume de resultados (priority: p3)", + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L61" + }, + { + "id": "specs_002_google_news_extractor_tasks_phase_6_url_resolution_headless_configuration_real_time_logging", + "label": "Phase 6: URL Resolution, Headless Configuration & Real-Time Logging", + "_origin": "ast", + "community": 85, + "community_name": "Implementation Tasks: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "phase 6: url resolution, headless configuration & real-time logging", + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L77" + }, + { + "id": "specs_002_google_news_extractor_tasks_phase_7_verification_e2e_testing", + "label": "Phase 7: Verification & E2E Testing", + "_origin": "ast", + "community": 85, + "community_name": "Implementation Tasks: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "phase 7: verification & e2e testing", + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L88" + }, + { + "id": "specs_002_google_news_extractor_tasks_tests_for_user_story_1", + "label": "Tests for User Story 1 \ud83e\uddea", + "_origin": "ast", + "community": 85, + "community_name": "Implementation Tasks: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "tests for user story 1 \ud83e\uddea", + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L33" + }, + { + "id": "specs_002_google_news_extractor_tasks_tests_for_user_story_2", + "label": "Tests for User Story 2 \ud83e\uddea", + "_origin": "ast", + "community": 85, + "community_name": "Implementation Tasks: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "tests for user story 2 \ud83e\uddea", + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L51" + }, + { + "id": "specs_002_google_news_extractor_tasks_tests_for_user_story_3", + "label": "Tests for User Story 3 \ud83e\uddea", + "_origin": "ast", + "community": 85, + "community_name": "Implementation Tasks: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "tests for user story 3 \ud83e\uddea", + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L67" + }, + { + "id": "specs_002_google_news_extractor_spec_clarifications", + "label": "Clarifications", + "_origin": "ast", + "community": 86, + "community_name": "Feature Specification: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "clarifications", + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L10" + }, + { + "id": "specs_002_google_news_extractor_spec_edge_cases", + "label": "Edge Cases", + "_origin": "ast", + "community": 86, + "community_name": "Feature Specification: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "edge cases", + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L64" + }, + { + "id": "specs_002_google_news_extractor_spec_feature_specification_google_news_headlines_extractor", + "label": "Feature Specification: Google News Headlines Extractor", + "_origin": "ast", + "community": 86, + "community_name": "Feature Specification: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "feature specification: google news headlines extractor", + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L1" + }, + { + "id": "specs_002_google_news_extractor_spec_functional_requirements", + "label": "Functional Requirements", + "_origin": "ast", + "community": 86, + "community_name": "Feature Specification: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "functional requirements", + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L76" + }, + { + "id": "specs_002_google_news_extractor_spec_requirements_mandatory", + "label": "Requirements *(mandatory)*", + "_origin": "ast", + "community": 86, + "community_name": "Feature Specification: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "requirements *(mandatory)*", + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L74" + }, + { + "id": "specs_002_google_news_extractor_spec_session_2026_08_20", + "label": "Session 2026-08-20", + "_origin": "ast", + "community": 86, + "community_name": "Feature Specification: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "session 2026-08-20", + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L12" + }, + { + "id": "specs_002_google_news_extractor_spec_success_criteria_mandatory", + "label": "Success Criteria *(mandatory)*", + "_origin": "ast", + "community": 86, + "community_name": "Feature Specification: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "success criteria *(mandatory)*", + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L92" + }, + { + "id": "specs_002_google_news_extractor_spec_user_scenarios_testing_mandatory", + "label": "User Scenarios & Testing *(mandatory)*", + "_origin": "ast", + "community": 86, + "community_name": "Feature Specification: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "user scenarios & testing *(mandatory)*", + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L20" + }, + { + "id": "specs_002_google_news_extractor_spec_user_story_1_extra\u00e7\u00e3o_b\u00e1sica_de_not\u00edcias_com_urls_finais_resolvidas_priority_p1_mvp", + "label": "User Story 1 - Extra\u00e7\u00e3o B\u00e1sica de Not\u00edcias com URLs Finais Resolvidas (Priority: P1) \ud83c\udf1f MVP", + "_origin": "ast", + "community": 86, + "community_name": "Feature Specification: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "user story 1 - extracao basica de noticias com urls finais resolvidas (priority: p1) \ud83c\udf1f mvp", + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L22" + }, + { + "id": "specs_002_google_news_extractor_spec_user_story_2_filtragem_regional_e_edi\u00e7\u00e3o_geogr\u00e1fica_priority_p2", + "label": "User Story 2 - Filtragem Regional e Edi\u00e7\u00e3o Geogr\u00e1fica (Priority: P2)", + "_origin": "ast", + "community": 86, + "community_name": "Feature Specification: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "user story 2 - filtragem regional e edicao geografica (priority: p2)", + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L36" + }, + { + "id": "specs_002_google_news_extractor_spec_user_story_3_pagina\u00e7\u00e3o_exporta\u00e7\u00e3o_em_arquivo_e_feedback_visual_priority_p3", + "label": "User Story 3 - Pagina\u00e7\u00e3o, Exporta\u00e7\u00e3o em Arquivo e Feedback Visual (Priority: P3)", + "_origin": "ast", + "community": 86, + "community_name": "Feature Specification: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "user story 3 - paginacao, exportacao em arquivo e feedback visual (priority: p3)", + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L50" + }, + { + "id": "specs_002_google_news_extractor_quickstart", + "label": "002-google-news-extractor/quickstart.md", + "_origin": "ast", + "community": 87, + "community_name": "2. Cen\u00e1rios Pr\u00e1ticos de Uso", + "file_type": "document", + "node_kind": "page", + "norm_label": "002-google-news-extractor/quickstart.md", + "source_file": "specs/002-google-news-extractor/quickstart.md", + "source_location": "L1" + }, + { + "id": "specs_002_google_news_extractor_quickstart_1_pr\u00e9_requisitos_e_instala\u00e7\u00e3o", + "label": "1. Pr\u00e9-requisitos e Instala\u00e7\u00e3o", + "_origin": "ast", + "community": 87, + "community_name": "2. Cen\u00e1rios Pr\u00e1ticos de Uso", + "file_type": "document", + "node_kind": "heading", + "norm_label": "1. pre-requisitos e instalacao", + "source_file": "specs/002-google-news-extractor/quickstart.md", + "source_location": "L7" + }, + { + "id": "specs_002_google_news_extractor_quickstart_2_cen\u00e1rios_pr\u00e1ticos_de_uso", + "label": "2. Cen\u00e1rios Pr\u00e1ticos de Uso", + "_origin": "ast", + "community": 87, + "community_name": "2. Cen\u00e1rios Pr\u00e1ticos de Uso", + "file_type": "document", + "node_kind": "heading", + "norm_label": "2. cenarios praticos de uso", + "source_file": "specs/002-google-news-extractor/quickstart.md", + "source_location": "L21" + }, + { + "id": "specs_002_google_news_extractor_quickstart_3_valida\u00e7\u00e3o_dos_testes_automatizados_e_linter", + "label": "3. Valida\u00e7\u00e3o dos Testes Automatizados e Linter", + "_origin": "ast", + "community": 87, + "community_name": "2. Cen\u00e1rios Pr\u00e1ticos de Uso", + "file_type": "document", + "node_kind": "heading", + "norm_label": "3. validacao dos testes automatizados e linter", + "source_file": "specs/002-google-news-extractor/quickstart.md", + "source_location": "L69" + }, + { + "id": "specs_002_google_news_extractor_quickstart_cen\u00e1rio_1_river_plate_argentina_espanhol_2_p\u00e1ginas_salvar_em_arquivo", + "label": "Cen\u00e1rio 1: River Plate \u2014 Argentina (Espanhol / 2 P\u00e1ginas / Salvar em Arquivo)", + "_origin": "ast", + "community": 87, + "community_name": "2. Cen\u00e1rios Pr\u00e1ticos de Uso", + "file_type": "document", + "node_kind": "heading", + "norm_label": "cenario 1: river plate \u2014 argentina (espanhol / 2 paginas / salvar em arquivo)", + "source_file": "specs/002-google-news-extractor/quickstart.md", + "source_location": "L23" + }, + { + "id": "specs_002_google_news_extractor_quickstart_cen\u00e1rio_2_cruzeiro_brasil_portugu\u00eas_formatado_no_terminal", + "label": "Cen\u00e1rio 2: Cruzeiro \u2014 Brasil (Portugu\u00eas / Formatado no Terminal)", + "_origin": "ast", + "community": 87, + "community_name": "2. Cen\u00e1rios Pr\u00e1ticos de Uso", + "file_type": "document", + "node_kind": "heading", + "norm_label": "cenario 2: cruzeiro \u2014 brasil (portugues / formatado no terminal)", + "source_file": "specs/002-google-news-extractor/quickstart.md", + "source_location": "L39" + }, + { + "id": "specs_002_google_news_extractor_quickstart_cen\u00e1rio_3_f\u00f3rmula_1_reino_unido_ingl\u00eas", + "label": "Cen\u00e1rio 3: F\u00f3rmula 1 \u2014 Reino Unido (Ingl\u00eas)", + "_origin": "ast", + "community": 87, + "community_name": "2. Cen\u00e1rios Pr\u00e1ticos de Uso", + "file_type": "document", + "node_kind": "heading", + "norm_label": "cenario 3: formula 1 \u2014 reino unido (ingles)", + "source_file": "specs/002-google-news-extractor/quickstart.md", + "source_location": "L47" + }, + { + "id": "specs_002_google_news_extractor_quickstart_cen\u00e1rio_4_integra\u00e7\u00e3o_em_pipeline_com_jq_modo_silencioso", + "label": "Cen\u00e1rio 4: Integra\u00e7\u00e3o em Pipeline com `jq` (Modo Silencioso)", + "_origin": "ast", + "community": 87, + "community_name": "2. Cen\u00e1rios Pr\u00e1ticos de Uso", + "file_type": "document", + "node_kind": "heading", + "norm_label": "cenario 4: integracao em pipeline com `jq` (modo silencioso)", + "source_file": "specs/002-google-news-extractor/quickstart.md", + "source_location": "L55" + }, + { + "id": "specs_002_google_news_extractor_quickstart_cen\u00e1rio_5_extra\u00e7\u00e3o_r\u00e1pida_com_links_brutos_sem_resolu\u00e7\u00e3o_de_urls", + "label": "Cen\u00e1rio 5: Extra\u00e7\u00e3o R\u00e1pida com Links Brutos (Sem Resolu\u00e7\u00e3o de URLs)", + "_origin": "ast", + "community": 87, + "community_name": "2. Cen\u00e1rios Pr\u00e1ticos de Uso", + "file_type": "document", + "node_kind": "heading", + "norm_label": "cenario 5: extracao rapida com links brutos (sem resolucao de urls)", + "source_file": "specs/002-google-news-extractor/quickstart.md", + "source_location": "L62" + }, + { + "id": "specs_002_google_news_extractor_quickstart_quickstart_google_news_headlines_extractor", + "label": "Quickstart: Google News Headlines Extractor", + "_origin": "ast", + "community": 87, + "community_name": "2. Cen\u00e1rios Pr\u00e1ticos de Uso", + "file_type": "document", + "node_kind": "heading", + "norm_label": "quickstart: google news headlines extractor", + "source_file": "specs/002-google-news-extractor/quickstart.md", + "source_location": "L1" + }, + { + "id": "specs_002_google_news_extractor_plan_architecture_pipeline", + "label": "Architecture & Pipeline", + "_origin": "ast", + "community": 88, + "community_name": "Implementation Plan: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "architecture & pipeline", + "source_file": "specs/002-google-news-extractor/plan.md", + "source_location": "L28" + }, + { + "id": "specs_002_google_news_extractor_plan_documentation_this_feature", + "label": "Documentation (this feature)", + "_origin": "ast", + "community": 88, + "community_name": "Implementation Plan: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "documentation (this feature)", + "source_file": "specs/002-google-news-extractor/plan.md", + "source_location": "L47" + }, + { + "id": "specs_002_google_news_extractor_plan_implementation_plan_google_news_headlines_extractor", + "label": "Implementation Plan: Google News Headlines Extractor", + "_origin": "ast", + "community": 88, + "community_name": "Implementation Plan: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "implementation plan: google news headlines extractor", + "source_file": "specs/002-google-news-extractor/plan.md", + "source_location": "L1" + }, + { + "id": "specs_002_google_news_extractor_plan_project_structure", + "label": "Project Structure", + "_origin": "ast", + "community": 88, + "community_name": "Implementation Plan: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "project structure", + "source_file": "specs/002-google-news-extractor/plan.md", + "source_location": "L45" + }, + { + "id": "specs_002_google_news_extractor_plan_source_code", + "label": "Source Code", + "_origin": "ast", + "community": 88, + "community_name": "Implementation Plan: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "source code", + "source_file": "specs/002-google-news-extractor/plan.md", + "source_location": "L63" + }, + { + "id": "specs_002_google_news_extractor_plan_summary", + "label": "Summary", + "_origin": "ast", + "community": 88, + "community_name": "Implementation Plan: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "summary", + "source_file": "specs/002-google-news-extractor/plan.md", + "source_location": "L7" + }, + { + "id": "specs_002_google_news_extractor_plan_technical_context", + "label": "Technical Context", + "_origin": "ast", + "community": 88, + "community_name": "Implementation Plan: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "technical context", + "source_file": "specs/002-google-news-extractor/plan.md", + "source_location": "L11" + }, + { + "id": "scripts_init", + "label": "scripts/__init__.py", + "_origin": "ast", + "community": 89, + "community_name": "scripts/__init__.py", + "file_type": "code", + "norm_label": "scripts/__init__.py", + "source_file": "scripts/__init__.py", + "source_location": "L1" + }, + { + "id": "scripts_init_rationale_1", + "label": "M\u00f3dulo de scripts utilit\u00e1rios do projeto.", + "_origin": "ast", + "community": 89, + "community_name": "scripts/__init__.py", + "file_type": "rationale", + "norm_label": "modulo de scripts utilitarios do projeto.", + "source_file": "scripts/__init__.py", + "source_location": "L1" + }, { "id": "agents_skills_speckit_specify_skill", "label": "speckit-specify/SKILL.md", @@ -6971,6 +8733,551 @@ "norm_label": "user input", "source_file": ".agents/skills/speckit-specify/SKILL.md", "source_location": "L11" + }, + { + "id": "scripts_extract_google_news_rationale_33", + "label": "Value Object com par\u00e2metros de busca validados.", + "_origin": "ast", + "community": 90, + "community_name": "SearchQuery", + "file_type": "rationale", + "norm_label": "value object com parametros de busca validados.", + "source_file": "scripts/extract_google_news.py", + "source_location": "L33" + }, + { + "id": "tests_test_extract_google_news_rationale_189", + "label": "Valida a consolida\u00e7\u00e3o do ExtractionResult a partir da busca mockada com URLs\u2026", + "_origin": "ast", + "community": 90, + "community_name": "SearchQuery", + "file_type": "rationale", + "norm_label": "valida a consolidacao do extractionresult a partir da busca mockada com urls...", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L189" + }, + { + "id": "tests_test_extract_google_news_rationale_87", + "label": "Valida as regras de neg\u00f3cio e limites de SearchQuery.", + "_origin": "ast", + "community": 90, + "community_name": "SearchQuery", + "file_type": "rationale", + "norm_label": "valida as regras de negocio e limites de searchquery.", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L87" + }, + { + "id": "specs_002_google_news_extractor_research", + "label": "002-google-news-extractor/research.md", + "_origin": "ast", + "community": 91, + "community_name": "1. Technical Decisions & Tradeoffs", + "file_type": "document", + "node_kind": "page", + "norm_label": "002-google-news-extractor/research.md", + "source_file": "specs/002-google-news-extractor/research.md", + "source_location": "L1" + }, + { + "id": "specs_002_google_news_extractor_research_1_technical_decisions_tradeoffs", + "label": "1. Technical Decisions & Tradeoffs", + "_origin": "ast", + "community": 91, + "community_name": "1. Technical Decisions & Tradeoffs", + "file_type": "document", + "node_kind": "heading", + "norm_label": "1. technical decisions & tradeoffs", + "source_file": "specs/002-google-news-extractor/research.md", + "source_location": "L3" + }, + { + "id": "specs_002_google_news_extractor_research_decision_1_motor_de_requisi\u00e7\u00e3o_e_scraping_com_foxcape_em_modo_headless", + "label": "Decision 1: Motor de Requisi\u00e7\u00e3o e Scraping com `foxcape` em Modo Headless", + "_origin": "ast", + "community": 91, + "community_name": "1. Technical Decisions & Tradeoffs", + "file_type": "document", + "node_kind": "heading", + "norm_label": "decision 1: motor de requisicao e scraping com `foxcape` em modo headless", + "source_file": "specs/002-google-news-extractor/research.md", + "source_location": "L5" + }, + { + "id": "specs_002_google_news_extractor_research_decision_2_endpoint_rss_do_google_news_vs_scraping_de_dom", + "label": "Decision 2: Endpoint RSS do Google News vs. Scraping de DOM", + "_origin": "ast", + "community": 91, + "community_name": "1. Technical Decisions & Tradeoffs", + "file_type": "document", + "node_kind": "heading", + "norm_label": "decision 2: endpoint rss do google news vs. scraping de dom", + "source_file": "specs/002-google-news-extractor/research.md", + "source_location": "L15" + }, + { + "id": "specs_002_google_news_extractor_research_decision_3_mapeamento_de_idioma_e_locale_hl_gl_ceid", + "label": "Decision 3: Mapeamento de Idioma e Locale (`hl`, `gl`, `ceid`)", + "_origin": "ast", + "community": 91, + "community_name": "1. Technical Decisions & Tradeoffs", + "file_type": "document", + "node_kind": "heading", + "norm_label": "decision 3: mapeamento de idioma e locale (`hl`, `gl`, `ceid`)", + "source_file": "specs/002-google-news-extractor/research.md", + "source_location": "L23" + }, + { + "id": "specs_002_google_news_extractor_research_decision_4_resolu\u00e7\u00e3o_de_urls_do_google_news_via_googlenewsdecoder", + "label": "Decision 4: Resolu\u00e7\u00e3o de URLs do Google News via `googlenewsdecoder`", + "_origin": "ast", + "community": 91, + "community_name": "1. Technical Decisions & Tradeoffs", + "file_type": "document", + "node_kind": "heading", + "norm_label": "decision 4: resolucao de urls do google news via `googlenewsdecoder`", + "source_file": "specs/002-google-news-extractor/research.md", + "source_location": "L36" + }, + { + "id": "specs_002_google_news_extractor_research_decision_5_logging_em_tempo_real_no_stderr_e_segrega\u00e7\u00e3o_de_streams", + "label": "Decision 5: Logging em Tempo Real no `stderr` e Segrega\u00e7\u00e3o de Streams", + "_origin": "ast", + "community": 91, + "community_name": "1. Technical Decisions & Tradeoffs", + "file_type": "document", + "node_kind": "heading", + "norm_label": "decision 5: logging em tempo real no `stderr` e segregacao de streams", + "source_file": "specs/002-google-news-extractor/research.md", + "source_location": "L45" + }, + { + "id": "specs_002_google_news_extractor_research_research_google_news_headlines_extractor", + "label": "Research: Google News Headlines Extractor", + "_origin": "ast", + "community": 91, + "community_name": "1. Technical Decisions & Tradeoffs", + "file_type": "document", + "node_kind": "heading", + "norm_label": "research: google news headlines extractor", + "source_file": "specs/002-google-news-extractor/research.md", + "source_location": "L1" + }, + { + "id": "specs_002_google_news_extractor_checklists_readiness_cli_interface_parameter_contracts", + "label": "CLI Interface & Parameter Contracts", + "_origin": "ast", + "community": 92, + "community_name": "General Readiness Checklist: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "cli interface & parameter contracts", + "source_file": "specs/002-google-news-extractor/checklists/readiness.md", + "source_location": "L12" + }, + { + "id": "specs_002_google_news_extractor_checklists_readiness_data_sanitization_article_extraction", + "label": "Data Sanitization & Article Extraction", + "_origin": "ast", + "community": 92, + "community_name": "General Readiness Checklist: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "data sanitization & article extraction", + "source_file": "specs/002-google-news-extractor/checklists/readiness.md", + "source_location": "L27" + }, + { + "id": "specs_002_google_news_extractor_checklists_readiness_error_handling_edge_cases", + "label": "Error Handling & Edge Cases", + "_origin": "ast", + "community": 92, + "community_name": "General Readiness Checklist: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "error handling & edge cases", + "source_file": "specs/002-google-news-extractor/checklists/readiness.md", + "source_location": "L35" + }, + { + "id": "specs_002_google_news_extractor_checklists_readiness_general_readiness_checklist_google_news_headlines_extractor", + "label": "General Readiness Checklist: Google News Headlines Extractor", + "_origin": "ast", + "community": 92, + "community_name": "General Readiness Checklist: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "general readiness checklist: google news headlines extractor", + "source_file": "specs/002-google-news-extractor/checklists/readiness.md", + "source_location": "L1" + }, + { + "id": "specs_002_google_news_extractor_checklists_readiness_non_functional_operational_readiness", + "label": "Non-Functional & Operational Readiness", + "_origin": "ast", + "community": 92, + "community_name": "General Readiness Checklist: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "non-functional & operational readiness", + "source_file": "specs/002-google-news-extractor/checklists/readiness.md", + "source_location": "L42" + }, + { + "id": "specs_002_google_news_extractor_checklists_readiness_notes", + "label": "Notes", + "_origin": "ast", + "community": 92, + "community_name": "General Readiness Checklist: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "notes", + "source_file": "specs/002-google-news-extractor/checklists/readiness.md", + "source_location": "L48" + }, + { + "id": "specs_002_google_news_extractor_checklists_readiness_scraping_engine_feed_mapping", + "label": "Scraping Engine & Feed Mapping", + "_origin": "ast", + "community": 92, + "community_name": "General Readiness Checklist: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "scraping engine & feed mapping", + "source_file": "specs/002-google-news-extractor/checklists/readiness.md", + "source_location": "L20" + }, + { + "id": "specs_002_google_news_extractor_data_model", + "label": "002-google-news-extractor/data-model.md", + "_origin": "ast", + "community": 93, + "community_name": "1. Entidades de Dom\u00ednio & DTOs", + "file_type": "document", + "node_kind": "page", + "norm_label": "002-google-news-extractor/data-model.md", + "source_file": "specs/002-google-news-extractor/data-model.md", + "source_location": "L1" + }, + { + "id": "specs_002_google_news_extractor_data_model_1_1_searchquery_par\u00e2metros_da_busca", + "label": "1.1 SearchQuery (Par\u00e2metros da Busca)", + "_origin": "ast", + "community": 93, + "community_name": "1. Entidades de Dom\u00ednio & DTOs", + "file_type": "document", + "node_kind": "heading", + "norm_label": "1.1 searchquery (parametros da busca)", + "source_file": "specs/002-google-news-extractor/data-model.md", + "source_location": "L5" + }, + { + "id": "specs_002_google_news_extractor_data_model_1_2_newsarticle_item_de_not\u00edcia", + "label": "1.2 NewsArticle (Item de Not\u00edcia)", + "_origin": "ast", + "community": 93, + "community_name": "1. Entidades de Dom\u00ednio & DTOs", + "file_type": "document", + "node_kind": "heading", + "norm_label": "1.2 newsarticle (item de noticia)", + "source_file": "specs/002-google-news-extractor/data-model.md", + "source_location": "L15" + }, + { + "id": "specs_002_google_news_extractor_data_model_1_3_extractionresult_sa\u00edda_estruturada_consolidada", + "label": "1.3 ExtractionResult (Sa\u00edda Estruturada Consolidada)", + "_origin": "ast", + "community": 93, + "community_name": "1. Entidades de Dom\u00ednio & DTOs", + "file_type": "document", + "node_kind": "heading", + "norm_label": "1.3 extractionresult (saida estruturada consolidada)", + "source_file": "specs/002-google-news-extractor/data-model.md", + "source_location": "L26" + }, + { + "id": "specs_002_google_news_extractor_data_model_1_entidades_de_dom\u00ednio_dtos", + "label": "1. Entidades de Dom\u00ednio & DTOs", + "_origin": "ast", + "community": 93, + "community_name": "1. Entidades de Dom\u00ednio & DTOs", + "file_type": "document", + "node_kind": "heading", + "norm_label": "1. entidades de dominio & dtos", + "source_file": "specs/002-google-news-extractor/data-model.md", + "source_location": "L3" + }, + { + "id": "specs_002_google_news_extractor_data_model_2_esquema_json_de_sa\u00edda", + "label": "2. Esquema JSON de Sa\u00edda", + "_origin": "ast", + "community": 93, + "community_name": "1. Entidades de Dom\u00ednio & DTOs", + "file_type": "document", + "node_kind": "heading", + "norm_label": "2. esquema json de saida", + "source_file": "specs/002-google-news-extractor/data-model.md", + "source_location": "L41" + }, + { + "id": "specs_002_google_news_extractor_data_model_data_model_google_news_headlines_extractor", + "label": "Data Model: Google News Headlines Extractor", + "_origin": "ast", + "community": 93, + "community_name": "1. Entidades de Dom\u00ednio & DTOs", + "file_type": "document", + "node_kind": "heading", + "norm_label": "data model: google news headlines extractor", + "source_file": "specs/002-google-news-extractor/data-model.md", + "source_location": "L1" + }, + { + "id": "specs_002_google_news_extractor_checklists_requirements", + "label": "002-google-news-extractor/checklists/requirements.md", + "_origin": "ast", + "community": 94, + "community_name": "Specification Quality Checklist: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "page", + "norm_label": "002-google-news-extractor/checklists/requirements.md", + "source_file": "specs/002-google-news-extractor/checklists/requirements.md", + "source_location": "L1" + }, + { + "id": "specs_002_google_news_extractor_checklists_requirements_content_quality", + "label": "Content Quality", + "_origin": "ast", + "community": 94, + "community_name": "Specification Quality Checklist: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "content quality", + "source_file": "specs/002-google-news-extractor/checklists/requirements.md", + "source_location": "L7" + }, + { + "id": "specs_002_google_news_extractor_checklists_requirements_feature_readiness", + "label": "Feature Readiness", + "_origin": "ast", + "community": 94, + "community_name": "Specification Quality Checklist: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "feature readiness", + "source_file": "specs/002-google-news-extractor/checklists/requirements.md", + "source_location": "L25" + }, + { + "id": "specs_002_google_news_extractor_checklists_requirements_notes", + "label": "Notes", + "_origin": "ast", + "community": 94, + "community_name": "Specification Quality Checklist: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "notes", + "source_file": "specs/002-google-news-extractor/checklists/requirements.md", + "source_location": "L32" + }, + { + "id": "specs_002_google_news_extractor_checklists_requirements_requirement_completeness", + "label": "Requirement Completeness", + "_origin": "ast", + "community": 94, + "community_name": "Specification Quality Checklist: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "requirement completeness", + "source_file": "specs/002-google-news-extractor/checklists/requirements.md", + "source_location": "L14" + }, + { + "id": "specs_002_google_news_extractor_checklists_requirements_specification_quality_checklist_google_news_headlines_extractor", + "label": "Specification Quality Checklist: Google News Headlines Extractor", + "_origin": "ast", + "community": 94, + "community_name": "Specification Quality Checklist: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "specification quality checklist: google news headlines extractor", + "source_file": "specs/002-google-news-extractor/checklists/requirements.md", + "source_location": "L1" + }, + { + "id": "specs_002_google_news_extractor_contracts_cli_contract_1_comando_e_argumentos", + "label": "1. Comando e Argumentos", + "_origin": "ast", + "community": 95, + "community_name": "CLI Contract: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "1. comando e argumentos", + "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", + "source_location": "L3" + }, + { + "id": "specs_002_google_news_extractor_contracts_cli_contract_2_c\u00f3digos_de_sa\u00edda_exit_codes", + "label": "2. C\u00f3digos de Sa\u00edda (Exit Codes)", + "_origin": "ast", + "community": 95, + "community_name": "CLI Contract: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "2. codigos de saida (exit codes)", + "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", + "source_location": "L25" + }, + { + "id": "specs_002_google_news_extractor_contracts_cli_contract_3_protocolo_de_streams_stdout_stderr", + "label": "3. Protocolo de Streams (Stdout / Stderr)", + "_origin": "ast", + "community": 95, + "community_name": "CLI Contract: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "3. protocolo de streams (stdout / stderr)", + "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", + "source_location": "L35" + }, + { + "id": "specs_002_google_news_extractor_contracts_cli_contract_argumentos_de_linha_de_comando", + "label": "Argumentos de Linha de Comando", + "_origin": "ast", + "community": 95, + "community_name": "CLI Contract: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "argumentos de linha de comando", + "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", + "source_location": "L10" + }, + { + "id": "specs_002_google_news_extractor_contracts_cli_contract_cli_contract_google_news_headlines_extractor", + "label": "CLI Contract: Google News Headlines Extractor", + "_origin": "ast", + "community": 95, + "community_name": "CLI Contract: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "cli contract: google news headlines extractor", + "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", + "source_location": "L1" + }, + { + "id": "specs_002_google_news_extractor_contracts_cli_contract_sintaxe", + "label": "Sintaxe", + "_origin": "ast", + "community": 95, + "community_name": "CLI Contract: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "sintaxe", + "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", + "source_location": "L5" + }, + { + "id": "specs_002_google_news_extractor_checklists_readiness", + "label": "readiness.md", + "_origin": "ast", + "community": 96, + "community_name": "readiness.md", + "file_type": "document", + "node_kind": "page", + "norm_label": "readiness.md", + "source_file": "specs/002-google-news-extractor/checklists/readiness.md", + "source_location": "L1" + }, + { + "id": "specs_002_google_news_extractor_contracts_cli_contract", + "label": "cli_contract.md", + "_origin": "ast", + "community": 96, + "community_name": "readiness.md", + "file_type": "document", + "node_kind": "page", + "norm_label": "cli_contract.md", + "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", + "source_location": "L1" + }, + { + "id": "specs_002_google_news_extractor_plan", + "label": "002-google-news-extractor/plan.md", + "_origin": "ast", + "community": 96, + "community_name": "readiness.md", + "file_type": "document", + "node_kind": "page", + "norm_label": "002-google-news-extractor/plan.md", + "source_file": "specs/002-google-news-extractor/plan.md", + "source_location": "L1" + }, + { + "id": "specs_002_google_news_extractor_spec", + "label": "002-google-news-extractor/spec.md", + "_origin": "ast", + "community": 96, + "community_name": "readiness.md", + "file_type": "document", + "node_kind": "page", + "norm_label": "002-google-news-extractor/spec.md", + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L1" + }, + { + "id": "specs_002_google_news_extractor_tasks", + "label": "002-google-news-extractor/tasks.md", + "_origin": "ast", + "community": 96, + "community_name": "readiness.md", + "file_type": "document", + "node_kind": "page", + "norm_label": "002-google-news-extractor/tasks.md", + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L1" + }, + { + "id": "argumentparser", + "label": "ArgumentParser", + "_origin": "ast", + "community": 98, + "community_name": "build_parser", + "file_type": "code", + "norm_label": "argumentparser", + "source_file": "", + "source_location": "" + }, + { + "id": "scripts_extract_google_news_rationale_339", + "label": "Cria e configura o parser de argumentos CLI.", + "_origin": "ast", + "community": 98, + "community_name": "build_parser", + "file_type": "rationale", + "norm_label": "cria e configura o parser de argumentos cli.", + "source_file": "scripts/extract_google_news.py", + "source_location": "L339" + }, + { + "id": "tests_test_extract_google_news_py_fixture", + "label": "fixture", + "_origin": "ast", + "community": 99, + "community_name": "sample_rss_xml", + "file_type": "code", + "norm_label": "fixture", + "source_file": "", + "source_location": "" + }, + { + "id": "tests_test_extract_google_news_rationale_33", + "label": "Fixture que fornece o conte\u00fado do XML de exemplo para testes offline.", + "_origin": "ast", + "community": 99, + "community_name": "sample_rss_xml", + "file_type": "rationale", + "norm_label": "fixture que fornece o conteudo do xml de exemplo para testes offline.", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L33" } ], "links": [ @@ -6983,31 +9290,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "classify.py", - "source_location": "L67", - "weight": 1.0 - }, - { - "source": "classify_main", - "target": "src_models_ecpsnapshot_from_json_str", - "relation": "calls", - "_origin": "ast", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "context": "call", - "source_file": "classify.py", - "source_location": "L115", - "weight": 1.0 - }, - { - "source": "classify_main", - "target": "src_classifier_inherenceclassifier", - "relation": "calls", - "_origin": "ast", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "context": "call", - "source_file": "classify.py", - "source_location": "L160", + "source_location": "L79", "weight": 1.0 }, { @@ -7019,7 +9302,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "classify.py", - "source_location": "L88", + "source_location": "L100", "weight": 1.0 }, { @@ -7031,7 +9314,151 @@ "confidence_score": 1.0, "context": "call", "source_file": "classify.py", - "source_location": "L97", + "source_location": "L109", + "weight": 1.0 + }, + { + "source": "classify_main", + "target": "src_models_ecpsnapshot_from_json_str", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "classify.py", + "source_location": "L127", + "weight": 1.0 + }, + { + "source": "classify_main", + "target": "src_classifier_inherenceclassifier", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "classify.py", + "source_location": "L172", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_extract_google_news", + "target": "scripts_extract_google_news_get_hl_gl_ceid", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/extract_google_news.py", + "source_location": "L307", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_extract_google_news", + "target": "scripts_extract_google_news_fetch_rss_content", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/extract_google_news.py", + "source_location": "L316", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_extract_google_news", + "target": "scripts_extract_google_news_parse_google_news_rss", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/extract_google_news.py", + "source_location": "L320", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_extract_google_news", + "target": "scripts_extract_google_news_resolve_articles_urls", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/extract_google_news.py", + "source_location": "L325", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_extract_google_news", + "target": "scripts_extract_google_news_extractionresult", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/extract_google_news.py", + "source_location": "L327", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_main", + "target": "scripts_extract_google_news_build_parser", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/extract_google_news.py", + "source_location": "L418", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_main", + "target": "scripts_extract_google_news_searchquery", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/extract_google_news.py", + "source_location": "L422", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_main", + "target": "scripts_extract_google_news_extract_google_news", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/extract_google_news.py", + "source_location": "L437", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_parse_google_news_rss", + "target": "scripts_extract_google_news_normalize_text_for_comparison", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/extract_google_news.py", + "source_location": "L190", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_parse_google_news_rss", + "target": "scripts_extract_google_news_newsarticle", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/extract_google_news.py", + "source_location": "L197", "weight": 1.0 }, { @@ -7079,7 +9506,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/classifier.py", - "source_location": "L192", + "source_location": "L204", "weight": 1.0 }, { @@ -7091,7 +9518,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "src/classifier.py", - "source_location": "L196", + "source_location": "L208", "weight": 1.0 }, { @@ -7334,6 +9761,90 @@ "source_location": "L16", "weight": 1.0 }, + { + "source": "tests_test_adversarial_test_adversarial_apple_fruit_recipe", + "target": "src_models_ecpsnapshot", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_adversarial.py", + "source_location": "L42", + "weight": 1.0 + }, + { + "source": "tests_test_adversarial_test_adversarial_apple_fruit_recipe", + "target": "src_classifier_inherenceclassifier", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_adversarial.py", + "source_location": "L57", + "weight": 1.0 + }, + { + "source": "tests_test_adversarial_test_adversarial_related_entity_without_scope_context", + "target": "src_models_ecpsnapshot", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_adversarial.py", + "source_location": "L65", + "weight": 1.0 + }, + { + "source": "tests_test_adversarial_test_adversarial_related_entity_without_scope_context", + "target": "src_models_relatedentity", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_adversarial.py", + "source_location": "L73", + "weight": 1.0 + }, + { + "source": "tests_test_adversarial_test_adversarial_related_entity_without_scope_context", + "target": "src_classifier_inherenceclassifier", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_adversarial.py", + "source_location": "L90", + "weight": 1.0 + }, + { + "source": "tests_test_adversarial_test_adversarial_sao_paulo_city_vs_fc", + "target": "src_models_ecpsnapshot", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_adversarial.py", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "tests_test_adversarial_test_adversarial_sao_paulo_city_vs_fc", + "target": "src_classifier_inherenceclassifier", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_adversarial.py", + "source_location": "L33", + "weight": 1.0 + }, { "source": "tests_test_benchmark_24_test_benchmark_case", "target": "src_models_ecpsnapshot_from_json_str", @@ -7466,6 +9977,234 @@ "source_location": "L22", "weight": 1.0 }, + { + "source": "tests_test_extract_google_news_test_cli_empty_query_error", + "target": "scripts_extract_google_news_main", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L265", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_test_cli_execution_file_output", + "target": "scripts_extract_google_news_main", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L255", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_test_cli_execution_stdout", + "target": "scripts_extract_google_news_main", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L228", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_test_cli_network_error_handling", + "target": "scripts_extract_google_news_main", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L278", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_test_e2e_cli_live_file_output", + "target": "scripts_extract_google_news_main", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L331", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_test_e2e_extract_google_news_live_pipeline", + "target": "scripts_extract_google_news_searchquery", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L314", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_test_e2e_extract_google_news_live_pipeline", + "target": "scripts_extract_google_news_extract_google_news", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L315", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_test_e2e_resolve_real_google_news_url", + "target": "scripts_extract_google_news_resolve_article_url", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L303", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", + "target": "scripts_extract_google_news_searchquery", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L190", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", + "target": "scripts_extract_google_news_extract_google_news", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L204", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", + "target": "scripts_extract_google_news_get_hl_gl_ceid", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L39", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_test_get_hl_gl_ceid_dynamic_fallback", + "target": "scripts_extract_google_news_get_hl_gl_ceid", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L80", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", + "target": "scripts_extract_google_news_get_hl_gl_ceid", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L62", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", + "target": "scripts_extract_google_news_parse_google_news_rss", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L113", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_test_resolve_article_url_fallback", + "target": "scripts_extract_google_news_resolve_article_url", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L141", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_test_resolve_article_url_success", + "target": "scripts_extract_google_news_resolve_article_url", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L159", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_test_resolve_articles_urls_batch", + "target": "scripts_extract_google_news_newsarticle", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L166", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_test_resolve_articles_urls_batch", + "target": "scripts_extract_google_news_resolve_articles_urls", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L182", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_test_search_query_validation", + "target": "scripts_extract_google_news_searchquery", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L89", + "weight": 1.0 + }, { "source": "tests_test_language_test_detect_english", "target": "src_language_detect_language", @@ -7682,6 +10421,54 @@ "source_location": "L8", "weight": 1.0 }, + { + "source": "tests_test_extract_google_news_sample_rss_xml", + "target": "tests_test_extract_google_news_py_fixture", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L31", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_extractionresult_to_dict", + "target": "scripts_extract_google_news_py_any", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "scripts/extract_google_news.py", + "source_location": "L97", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_newsarticle_to_dict", + "target": "scripts_extract_google_news_py_any", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "scripts/extract_google_news.py", + "source_location": "L75", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_resolve_articles_urls", + "target": "scripts_extract_google_news_newsarticle", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "scripts/extract_google_news.py", + "source_location": "L222", + "weight": 1.0 + }, { "source": "src_adapters_base_basenlpadapter_disambiguate", "target": "src_models_classificationresult", @@ -7720,7 +10507,7 @@ }, { "source": "src_models_classificationerror_to_dict", - "target": "any", + "target": "src_models_py_any", "relation": "references", "_origin": "ast", "confidence": "EXTRACTED", @@ -7732,7 +10519,7 @@ }, { "source": "src_models_classificationresult_to_dict", - "target": "any", + "target": "src_models_py_any", "relation": "references", "_origin": "ast", "confidence": "EXTRACTED", @@ -7744,7 +10531,7 @@ }, { "source": "src_models_ecpsnapshot_from_dict", - "target": "any", + "target": "src_models_py_any", "relation": "references", "_origin": "ast", "confidence": "EXTRACTED", @@ -7756,7 +10543,7 @@ }, { "source": "src_models_relatedentity_from_dict", - "target": "any", + "target": "src_models_py_any", "relation": "references", "_origin": "ast", "confidence": "EXTRACTED", @@ -7766,6 +10553,42 @@ "source_location": "L37", "weight": 1.0 }, + { + "source": "tests_test_extract_google_news_test_cli_empty_query_error", + "target": "capturefixture", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L263", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_test_cli_execution_stdout", + "target": "capturefixture", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L217", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_test_cli_network_error_handling", + "target": "capturefixture", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L272", + "weight": 1.0 + }, { "source": "classify", "target": "src_models_classificationerror", @@ -8102,6 +10925,54 @@ "source_location": "L6", "weight": 1.0 }, + { + "source": "tests_test_adversarial", + "target": "src_models_decisioncategory", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "tests/test_adversarial.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "tests_test_adversarial", + "target": "src_models_ecpsnapshot", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "tests/test_adversarial.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "tests_test_adversarial", + "target": "src_models_relatedentity", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "tests/test_adversarial.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "tests_test_adversarial", + "target": "src_classifier_inherenceclassifier", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "tests/test_adversarial.py", + "source_location": "L32", + "weight": 1.0 + }, { "source": "tests_test_benchmark_24", "target": "src_models_decisioncategory", @@ -8198,6 +11069,114 @@ "source_location": "L6", "weight": 1.0 }, + { + "source": "tests_test_extract_google_news", + "target": "scripts_extract_google_news_extract_google_news", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "scripts_extract_google_news_extractionresult", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "scripts_extract_google_news_get_hl_gl_ceid", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "scripts_extract_google_news_main", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "scripts_extract_google_news_newsarticle", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "scripts_extract_google_news_parse_google_news_rss", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "scripts_extract_google_news_resolve_article_url", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "scripts_extract_google_news_resolve_articles_urls", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "scripts_extract_google_news_searchquery", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L16", + "weight": 1.0 + }, { "source": "tests_test_language", "target": "src_language_detect_language", @@ -8522,6 +11501,18 @@ "source_location": "L6", "weight": 1.0 }, + { + "source": "tests_test_adversarial", + "target": "src_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "tests/test_adversarial.py", + "source_location": "L12", + "weight": 1.0 + }, { "source": "tests_test_benchmark_24", "target": "src_models", @@ -8582,6 +11573,18 @@ "source_location": "L6", "weight": 1.0 }, + { + "source": "tests_test_extract_google_news", + "target": "scripts_extract_google_news", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L16", + "weight": 1.0 + }, { "source": "tests_test_language", "target": "src_language", @@ -8618,6 +11621,18 @@ "source_location": "L4", "weight": 1.0 }, + { + "source": "scripts_extract_google_news_extract_google_news", + "target": "scripts_extract_google_news_searchquery", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "scripts/extract_google_news.py", + "source_location": "L299", + "weight": 1.0 + }, { "source": "src_adapters_base_basenlpadapter_disambiguate", "target": "src_models_ecpsnapshot", @@ -8666,6 +11681,30 @@ "source_location": "L61", "weight": 1.0 }, + { + "source": "tests_test_extract_google_news_test_cli_execution_file_output", + "target": "path", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L242", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_test_e2e_cli_live_file_output", + "target": "path", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L328", + "weight": 1.0 + }, { "source": "classify_parse_args", "target": "namespace", @@ -8675,7 +11714,19 @@ "confidence_score": 1.0, "context": "return_type", "source_file": "classify.py", - "source_location": "L16", + "source_location": "L28", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_build_parser", + "target": "argumentparser", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "scripts/extract_google_news.py", + "source_location": "L338", "weight": 1.0 }, { @@ -10820,7 +13871,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "classify.py", - "source_location": "L16", + "source_location": "L28", "weight": 1.0 }, { @@ -10831,7 +13882,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "classify.py", - "source_location": "L61", + "source_location": "L73", "weight": 1.0 }, { @@ -10842,7 +13893,271 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "classify.py", - "source_location": "L86", + "source_location": "L98", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo", + "target": "docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_2_entrada", + "target": "docs_googlenews_extractor_guia_completo_2_1_dto_de_entrada_googlenews_etl_application_dtos_extract_news_dto_py", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L58", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_2_entrada", + "target": "docs_googlenews_extractor_guia_completo_2_2_value_object_de_valida\u00e7\u00e3o_googlenews_etl_domain_entities_search_query_py", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L75", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_3_3_o_adaptador_concreto_o_cora\u00e7\u00e3o_do_extrator_googlenews_etl_infrastructure_adapters_google_news_extractor_adapter_py", + "target": "docs_googlenews_extractor_guia_completo_3_3_1_inicializa\u00e7\u00e3o_sess\u00e3o_http_com_impersona\u00e7\u00e3o_de_browser", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L185", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_3_3_o_adaptador_concreto_o_cora\u00e7\u00e3o_do_extrator_googlenews_etl_infrastructure_adapters_google_news_extractor_adapter_py", + "target": "docs_googlenews_extractor_guia_completo_3_3_2_mapeamento_idioma_par\u00e2metros_hl_gl_get_hl_gl", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L213", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_3_3_o_adaptador_concreto_o_cora\u00e7\u00e3o_do_extrator_googlenews_etl_infrastructure_adapters_google_news_extractor_adapter_py", + "target": "docs_googlenews_extractor_guia_completo_3_3_3_extra\u00e7\u00e3o_do_rss_o_ponto_fundamental_fetch_rss", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L250", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_3_3_o_adaptador_concreto_o_cora\u00e7\u00e3o_do_extrator_googlenews_etl_infrastructure_adapters_google_news_extractor_adapter_py", + "target": "docs_googlenews_extractor_guia_completo_3_3_4_orquestra\u00e7\u00e3o_com_resolu\u00e7\u00e3o_de_urls_extract", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L306", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_3_processamento_passo_a_passo", + "target": "docs_googlenews_extractor_guia_completo_3_1_o_caso_de_uso_googlenews_etl_application_use_cases_extract_news_use_case_py", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L115", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_3_processamento_passo_a_passo", + "target": "docs_googlenews_extractor_guia_completo_3_2_a_porta_googlenews_etl_domain_ports_news_extractor_port_py", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L168", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_3_processamento_passo_a_passo", + "target": "docs_googlenews_extractor_guia_completo_3_3_o_adaptador_concreto_o_cora\u00e7\u00e3o_do_extrator_googlenews_etl_infrastructure_adapters_google_news_extractor_adapter_py", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L183", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_3_processamento_passo_a_passo", + "target": "docs_googlenews_extractor_guia_completo_3_4_resolu\u00e7\u00e3o_de_urls_googlenews_etl_infrastructure_adapters_playwright_url_resolver_adapter_py", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L332", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_3_processamento_passo_a_passo", + "target": "docs_googlenews_extractor_guia_completo_3_5_rate_limiter_googlenews_etl_domain_services_rate_limiter_service_py", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L384", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_5_sa\u00edda", + "target": "docs_googlenews_extractor_guia_completo_5_1_dtos_de_sa\u00edda_googlenews_etl_application_dtos_extract_news_dto_py", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L437", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_5_sa\u00edda", + "target": "docs_googlenews_extractor_guia_completo_5_2_exemplo_de_sa\u00edda_json", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L461", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_7_depend\u00eancias_para_rodar_o_que_n\u00e3o_est\u00e1_nos_4_arquivos_centrais", + "target": "docs_googlenews_extractor_guia_completo_depend\u00eancias_de_bibliotecas_requirements", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L529", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_7_depend\u00eancias_para_rodar_o_que_n\u00e3o_est\u00e1_nos_4_arquivos_centrais", + "target": "docs_googlenews_extractor_guia_completo_comportamentos_observ\u00e1veis_honestidade", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L537", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", + "target": "docs_googlenews_extractor_guia_completo_3_processamento_passo_a_passo", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L113", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", + "target": "docs_googlenews_extractor_guia_completo_4_entidade_de_dom\u00ednio_da_not\u00edcia_googlenews_etl_domain_entities_news_article_py", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L403", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", + "target": "docs_googlenews_extractor_guia_completo_5_sa\u00edda", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L435", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", + "target": "docs_googlenews_extractor_guia_completo_6_resumo_do_fluxo_completo_entrada_sa\u00edda", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L486", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", + "target": "docs_googlenews_extractor_guia_completo_7_depend\u00eancias_para_rodar_o_que_n\u00e3o_est\u00e1_nos_4_arquivos_centrais", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L514", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", + "target": "docs_googlenews_extractor_guia_completo_8_como_chamar_exemplo_de_uso", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L548", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", + "target": "docs_googlenews_extractor_guia_completo_2_entrada", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L56", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", + "target": "docs_googlenews_extractor_guia_completo_1_vis\u00e3o_geral_arquitetura", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L9", "weight": 1.0 }, { @@ -10878,6 +14193,138 @@ "source_location": "L1", "weight": 1.0 }, + { + "source": "scripts_extract_google_news", + "target": "scripts_extract_google_news_get_hl_gl_ceid", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L109", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news", + "target": "scripts_extract_google_news_normalize_text_for_comparison", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L153", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news", + "target": "scripts_extract_google_news_parse_google_news_rss", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L158", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news", + "target": "scripts_extract_google_news_resolve_article_url", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L209", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news", + "target": "scripts_extract_google_news_resolve_articles_urls", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L222", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news", + "target": "scripts_extract_google_news_fetch_rss_content", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L255", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news", + "target": "scripts_extract_google_news_extract_google_news", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L299", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news", + "target": "scripts_extract_google_news_searchquery", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L32", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news", + "target": "scripts_extract_google_news_build_parser", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L338", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news", + "target": "scripts_extract_google_news_main", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L405", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news", + "target": "scripts_extract_google_news_newsarticle", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L66", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news", + "target": "scripts_extract_google_news_extractionresult", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L86", + "weight": 1.0 + }, { "source": "specify_memory_constitution", "target": "specify_memory_constitution_project_name_constitution", @@ -12693,6 +16140,798 @@ "source_location": "L97", "weight": 1.0 }, + { + "source": "specs_002_google_news_extractor_checklists_readiness", + "target": "specs_002_google_news_extractor_checklists_readiness_general_readiness_checklist_google_news_headlines_extractor", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/checklists/readiness.md", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_checklists_readiness_general_readiness_checklist_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_checklists_readiness_cli_interface_parameter_contracts", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/checklists/readiness.md", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_checklists_readiness_general_readiness_checklist_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_checklists_readiness_scraping_engine_feed_mapping", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/checklists/readiness.md", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_checklists_readiness_general_readiness_checklist_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_checklists_readiness_data_sanitization_article_extraction", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/checklists/readiness.md", + "source_location": "L27", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_checklists_readiness_general_readiness_checklist_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_checklists_readiness_error_handling_edge_cases", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/checklists/readiness.md", + "source_location": "L35", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_checklists_readiness_general_readiness_checklist_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_checklists_readiness_non_functional_operational_readiness", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/checklists/readiness.md", + "source_location": "L42", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_checklists_readiness_general_readiness_checklist_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_checklists_readiness_notes", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/checklists/readiness.md", + "source_location": "L48", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_checklists_requirements", + "target": "specs_002_google_news_extractor_checklists_requirements_specification_quality_checklist_google_news_headlines_extractor", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/checklists/requirements.md", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_checklists_requirements_specification_quality_checklist_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_checklists_requirements_requirement_completeness", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/checklists/requirements.md", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_checklists_requirements_specification_quality_checklist_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_checklists_requirements_feature_readiness", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/checklists/requirements.md", + "source_location": "L25", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_checklists_requirements_specification_quality_checklist_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_checklists_requirements_notes", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/checklists/requirements.md", + "source_location": "L32", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_checklists_requirements_specification_quality_checklist_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_checklists_requirements_content_quality", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/checklists/requirements.md", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_contracts_cli_contract", + "target": "specs_002_google_news_extractor_contracts_cli_contract_cli_contract_google_news_headlines_extractor", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_contracts_cli_contract_1_comando_e_argumentos", + "target": "specs_002_google_news_extractor_contracts_cli_contract_argumentos_de_linha_de_comando", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_contracts_cli_contract_1_comando_e_argumentos", + "target": "specs_002_google_news_extractor_contracts_cli_contract_sintaxe", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_contracts_cli_contract_cli_contract_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_contracts_cli_contract_2_c\u00f3digos_de_sa\u00edda_exit_codes", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", + "source_location": "L25", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_contracts_cli_contract_cli_contract_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_contracts_cli_contract_1_comando_e_argumentos", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_contracts_cli_contract_cli_contract_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_contracts_cli_contract_3_protocolo_de_streams_stdout_stderr", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", + "source_location": "L35", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_data_model", + "target": "specs_002_google_news_extractor_data_model_data_model_google_news_headlines_extractor", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/data-model.md", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_data_model_1_entidades_de_dom\u00ednio_dtos", + "target": "specs_002_google_news_extractor_data_model_1_2_newsarticle_item_de_not\u00edcia", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/data-model.md", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_data_model_1_entidades_de_dom\u00ednio_dtos", + "target": "specs_002_google_news_extractor_data_model_1_3_extractionresult_sa\u00edda_estruturada_consolidada", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/data-model.md", + "source_location": "L26", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_data_model_1_entidades_de_dom\u00ednio_dtos", + "target": "specs_002_google_news_extractor_data_model_1_1_searchquery_par\u00e2metros_da_busca", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/data-model.md", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_data_model_data_model_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_data_model_1_entidades_de_dom\u00ednio_dtos", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/data-model.md", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_data_model_data_model_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_data_model_2_esquema_json_de_sa\u00edda", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/data-model.md", + "source_location": "L41", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_plan", + "target": "specs_002_google_news_extractor_plan_implementation_plan_google_news_headlines_extractor", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/plan.md", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_plan_implementation_plan_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_plan_technical_context", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/plan.md", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_plan_implementation_plan_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_plan_architecture_pipeline", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/plan.md", + "source_location": "L28", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_plan_implementation_plan_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_plan_project_structure", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/plan.md", + "source_location": "L45", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_plan_implementation_plan_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_plan_summary", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/plan.md", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_plan_project_structure", + "target": "specs_002_google_news_extractor_plan_documentation_this_feature", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/plan.md", + "source_location": "L47", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_plan_project_structure", + "target": "specs_002_google_news_extractor_plan_source_code", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/plan.md", + "source_location": "L63", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_quickstart", + "target": "specs_002_google_news_extractor_quickstart_quickstart_google_news_headlines_extractor", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/quickstart.md", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_quickstart_2_cen\u00e1rios_pr\u00e1ticos_de_uso", + "target": "specs_002_google_news_extractor_quickstart_cen\u00e1rio_1_river_plate_argentina_espanhol_2_p\u00e1ginas_salvar_em_arquivo", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/quickstart.md", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_quickstart_2_cen\u00e1rios_pr\u00e1ticos_de_uso", + "target": "specs_002_google_news_extractor_quickstart_cen\u00e1rio_2_cruzeiro_brasil_portugu\u00eas_formatado_no_terminal", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/quickstart.md", + "source_location": "L39", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_quickstart_2_cen\u00e1rios_pr\u00e1ticos_de_uso", + "target": "specs_002_google_news_extractor_quickstart_cen\u00e1rio_3_f\u00f3rmula_1_reino_unido_ingl\u00eas", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/quickstart.md", + "source_location": "L47", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_quickstart_2_cen\u00e1rios_pr\u00e1ticos_de_uso", + "target": "specs_002_google_news_extractor_quickstart_cen\u00e1rio_4_integra\u00e7\u00e3o_em_pipeline_com_jq_modo_silencioso", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/quickstart.md", + "source_location": "L55", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_quickstart_2_cen\u00e1rios_pr\u00e1ticos_de_uso", + "target": "specs_002_google_news_extractor_quickstart_cen\u00e1rio_5_extra\u00e7\u00e3o_r\u00e1pida_com_links_brutos_sem_resolu\u00e7\u00e3o_de_urls", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/quickstart.md", + "source_location": "L62", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_quickstart_quickstart_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_quickstart_2_cen\u00e1rios_pr\u00e1ticos_de_uso", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/quickstart.md", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_quickstart_quickstart_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_quickstart_3_valida\u00e7\u00e3o_dos_testes_automatizados_e_linter", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/quickstart.md", + "source_location": "L69", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_quickstart_quickstart_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_quickstart_1_pr\u00e9_requisitos_e_instala\u00e7\u00e3o", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/quickstart.md", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_research", + "target": "specs_002_google_news_extractor_research_research_google_news_headlines_extractor", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/research.md", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_research_1_technical_decisions_tradeoffs", + "target": "specs_002_google_news_extractor_research_decision_2_endpoint_rss_do_google_news_vs_scraping_de_dom", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/research.md", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_research_1_technical_decisions_tradeoffs", + "target": "specs_002_google_news_extractor_research_decision_3_mapeamento_de_idioma_e_locale_hl_gl_ceid", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/research.md", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_research_1_technical_decisions_tradeoffs", + "target": "specs_002_google_news_extractor_research_decision_4_resolu\u00e7\u00e3o_de_urls_do_google_news_via_googlenewsdecoder", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/research.md", + "source_location": "L36", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_research_1_technical_decisions_tradeoffs", + "target": "specs_002_google_news_extractor_research_decision_5_logging_em_tempo_real_no_stderr_e_segrega\u00e7\u00e3o_de_streams", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/research.md", + "source_location": "L45", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_research_1_technical_decisions_tradeoffs", + "target": "specs_002_google_news_extractor_research_decision_1_motor_de_requisi\u00e7\u00e3o_e_scraping_com_foxcape_em_modo_headless", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/research.md", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_research_research_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_research_1_technical_decisions_tradeoffs", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/research.md", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_spec", + "target": "specs_002_google_news_extractor_spec_feature_specification_google_news_headlines_extractor", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_spec_clarifications", + "target": "specs_002_google_news_extractor_spec_session_2026_08_20", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_spec_feature_specification_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_spec_clarifications", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_spec_feature_specification_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_spec_user_scenarios_testing_mandatory", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_spec_feature_specification_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_spec_edge_cases", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L64", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_spec_feature_specification_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_spec_requirements_mandatory", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L74", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_spec_feature_specification_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_spec_success_criteria_mandatory", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L92", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_spec_requirements_mandatory", + "target": "specs_002_google_news_extractor_spec_functional_requirements", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L76", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_spec_user_scenarios_testing_mandatory", + "target": "specs_002_google_news_extractor_spec_user_story_1_extra\u00e7\u00e3o_b\u00e1sica_de_not\u00edcias_com_urls_finais_resolvidas_priority_p1_mvp", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L22", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_spec_user_scenarios_testing_mandatory", + "target": "specs_002_google_news_extractor_spec_user_story_2_filtragem_regional_e_edi\u00e7\u00e3o_geogr\u00e1fica_priority_p2", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L36", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_spec_user_scenarios_testing_mandatory", + "target": "specs_002_google_news_extractor_spec_user_story_3_pagina\u00e7\u00e3o_exporta\u00e7\u00e3o_em_arquivo_e_feedback_visual_priority_p3", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L50", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_tasks", + "target": "specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_tasks_phase_2_foundational_blocking_prerequisites", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_tasks_phase_3_user_story_1_extra\u00e7\u00e3o_b\u00e1sica_de_not\u00edcias_por_assunto_e_idioma_priority_p1_mvp", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L27", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_tasks_phase_4_user_story_2_filtragem_regional_e_edi\u00e7\u00e3o_geogr\u00e1fica_priority_p2", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L45", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_tasks_phase_5_user_story_3_pagina\u00e7\u00e3o_e_controle_de_volume_de_resultados_priority_p3", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L61", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_tasks_phase_6_url_resolution_headless_configuration_real_time_logging", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L77", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_tasks_phase_7_verification_e2e_testing", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L88", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_tasks_phase_1_setup_shared_infrastructure", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_tasks_phase_3_user_story_1_extra\u00e7\u00e3o_b\u00e1sica_de_not\u00edcias_por_assunto_e_idioma_priority_p1_mvp", + "target": "specs_002_google_news_extractor_tasks_tests_for_user_story_1", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L33", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_tasks_phase_3_user_story_1_extra\u00e7\u00e3o_b\u00e1sica_de_not\u00edcias_por_assunto_e_idioma_priority_p1_mvp", + "target": "specs_002_google_news_extractor_tasks_implementation_for_user_story_1", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L36", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_tasks_phase_4_user_story_2_filtragem_regional_e_edi\u00e7\u00e3o_geogr\u00e1fica_priority_p2", + "target": "specs_002_google_news_extractor_tasks_tests_for_user_story_2", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L51", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_tasks_phase_4_user_story_2_filtragem_regional_e_edi\u00e7\u00e3o_geogr\u00e1fica_priority_p2", + "target": "specs_002_google_news_extractor_tasks_implementation_for_user_story_2", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L54", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_tasks_phase_5_user_story_3_pagina\u00e7\u00e3o_e_controle_de_volume_de_resultados_priority_p3", + "target": "specs_002_google_news_extractor_tasks_tests_for_user_story_3", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L67", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_tasks_phase_5_user_story_3_pagina\u00e7\u00e3o_e_controle_de_volume_de_resultados_priority_p3", + "target": "specs_002_google_news_extractor_tasks_implementation_for_user_story_3", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L70", + "weight": 1.0 + }, { "source": "src_adapters_base", "target": "src_adapters_base_basenlpadapter", @@ -13199,6 +17438,83 @@ "source_location": "L9", "weight": 1.0 }, + { + "source": "tests_test_adversarial", + "target": "tests_test_adversarial_test_adversarial_subprocess_cli_empty_content", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_adversarial.py", + "source_location": "L133", + "weight": 1.0 + }, + { + "source": "tests_test_adversarial", + "target": "tests_test_adversarial_test_adversarial_sao_paulo_city_vs_fc", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_adversarial.py", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "tests_test_adversarial", + "target": "tests_test_adversarial_test_adversarial_subprocess_cli_missing_required_field", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_adversarial.py", + "source_location": "L164", + "weight": 1.0 + }, + { + "source": "tests_test_adversarial", + "target": "tests_test_adversarial_test_adversarial_subprocess_cli_corrupted_json", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_adversarial.py", + "source_location": "L193", + "weight": 1.0 + }, + { + "source": "tests_test_adversarial", + "target": "tests_test_adversarial_test_adversarial_apple_fruit_recipe", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_adversarial.py", + "source_location": "L40", + "weight": 1.0 + }, + { + "source": "tests_test_adversarial", + "target": "tests_test_adversarial_test_adversarial_related_entity_without_scope_context", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_adversarial.py", + "source_location": "L63", + "weight": 1.0 + }, + { + "source": "tests_test_adversarial", + "target": "tests_test_adversarial_test_adversarial_subprocess_cli_success_stdout", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_adversarial.py", + "source_location": "L98", + "weight": 1.0 + }, { "source": "tests_test_benchmark_24", "target": "tests_test_benchmark_24_classifier", @@ -13342,6 +17658,193 @@ "source_location": "L9", "weight": 1.0 }, + { + "source": "tests_test_extract_google_news", + "target": "tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L111", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "tests_test_extract_google_news_test_resolve_article_url_fallback", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L138", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "tests_test_extract_google_news_test_resolve_article_url_success", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L150", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "tests_test_extract_google_news_test_resolve_articles_urls_batch", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L163", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L188", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "tests_test_extract_google_news_test_cli_execution_stdout", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L217", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "tests_test_extract_google_news_test_cli_execution_file_output", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L242", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "tests_test_extract_google_news_test_cli_empty_query_error", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L263", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "tests_test_extract_google_news_test_cli_network_error_handling", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L272", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "tests_test_extract_google_news_test_e2e_resolve_real_google_news_url", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L291", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "tests_test_extract_google_news_test_e2e_extract_google_news_live_pipeline", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L312", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "tests_test_extract_google_news_sample_rss_xml", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L32", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "tests_test_extract_google_news_test_e2e_cli_live_file_output", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L328", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L37", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L60", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "tests_test_extract_google_news_test_get_hl_gl_ceid_dynamic_fallback", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L78", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "tests_test_extract_google_news_test_search_query_validation", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L86", + "weight": 1.0 + }, { "source": "tests_test_language", "target": "tests_test_language_test_detect_portuguese", @@ -13584,6 +18087,72 @@ "source_location": "L18", "weight": 1.0 }, + { + "source": "scripts_extract_google_news_extractionresult", + "target": "scripts_extract_google_news_extractionresult_to_dict", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L97", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_newsarticle", + "target": "scripts_extract_google_news_newsarticle_to_dict", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L75", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_searchquery", + "target": "scripts_extract_google_news_searchquery_post_init", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L40", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_searchquery", + "target": "scripts_extract_google_news_searchquery_clean_keyword", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L53", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_searchquery", + "target": "scripts_extract_google_news_searchquery_clean_language", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L57", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_searchquery", + "target": "scripts_extract_google_news_searchquery_clean_locale", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L61", + "weight": 1.0 + }, { "source": "src_adapters_base_basenlpadapter", "target": "src_adapters_base_basenlpadapter_is_available", @@ -13804,6 +18373,149 @@ "source_location": "L37", "weight": 1.0 }, + { + "source": "scripts_extract_google_news_rationale_110", + "target": "scripts_extract_google_news_get_hl_gl_ceid", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L110", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_rationale_154", + "target": "scripts_extract_google_news_normalize_text_for_comparison", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L154", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_rationale_159", + "target": "scripts_extract_google_news_parse_google_news_rss", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L159", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_rationale_210", + "target": "scripts_extract_google_news_resolve_article_url", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L210", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_rationale_225", + "target": "scripts_extract_google_news_resolve_articles_urls", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L225", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_rationale_256", + "target": "scripts_extract_google_news_fetch_rss_content", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L256", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_rationale_302", + "target": "scripts_extract_google_news_extract_google_news", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L302", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_rationale_33", + "target": "scripts_extract_google_news_searchquery", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L33", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_rationale_339", + "target": "scripts_extract_google_news_build_parser", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L339", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_rationale_406", + "target": "scripts_extract_google_news_main", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L406", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_rationale_67", + "target": "scripts_extract_google_news_newsarticle", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L67", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_rationale_87", + "target": "scripts_extract_google_news_extractionresult", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L87", + "weight": 1.0 + }, + { + "source": "scripts_init_rationale_1", + "target": "scripts_init", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/__init__.py", + "source_location": "L1", + "weight": 1.0 + }, { "source": "src_adapters_base_rationale_1", "target": "src_adapters_base", @@ -14101,6 +18813,94 @@ "source_location": "L1", "weight": 1.0 }, + { + "source": "tests_test_adversarial_rationale_1", + "target": "tests_test_adversarial", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_adversarial.py", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "tests_test_adversarial_rationale_134", + "target": "tests_test_adversarial_test_adversarial_subprocess_cli_empty_content", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_adversarial.py", + "source_location": "L134", + "weight": 1.0 + }, + { + "source": "tests_test_adversarial_rationale_16", + "target": "tests_test_adversarial_test_adversarial_sao_paulo_city_vs_fc", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_adversarial.py", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "tests_test_adversarial_rationale_165", + "target": "tests_test_adversarial_test_adversarial_subprocess_cli_missing_required_field", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_adversarial.py", + "source_location": "L165", + "weight": 1.0 + }, + { + "source": "tests_test_adversarial_rationale_194", + "target": "tests_test_adversarial_test_adversarial_subprocess_cli_corrupted_json", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_adversarial.py", + "source_location": "L194", + "weight": 1.0 + }, + { + "source": "tests_test_adversarial_rationale_41", + "target": "tests_test_adversarial_test_adversarial_apple_fruit_recipe", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_adversarial.py", + "source_location": "L41", + "weight": 1.0 + }, + { + "source": "tests_test_adversarial_rationale_64", + "target": "tests_test_adversarial_test_adversarial_related_entity_without_scope_context", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_adversarial.py", + "source_location": "L64", + "weight": 1.0 + }, + { + "source": "tests_test_adversarial_rationale_99", + "target": "tests_test_adversarial_test_adversarial_subprocess_cli_success_stdout", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_adversarial.py", + "source_location": "L99", + "weight": 1.0 + }, { "source": "tests_test_benchmark_24_rationale_1", "target": "tests_test_benchmark_24", @@ -14134,6 +18934,204 @@ "source_location": "L1", "weight": 1.0 }, + { + "source": "tests_test_extract_google_news_rationale_1", + "target": "tests_test_extract_google_news", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_rationale_112", + "target": "tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L112", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_rationale_139", + "target": "tests_test_extract_google_news_test_resolve_article_url_fallback", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L139", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_rationale_151", + "target": "tests_test_extract_google_news_test_resolve_article_url_success", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L151", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_rationale_164", + "target": "tests_test_extract_google_news_test_resolve_articles_urls_batch", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L164", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_rationale_189", + "target": "tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L189", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_rationale_218", + "target": "tests_test_extract_google_news_test_cli_execution_stdout", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L218", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_rationale_243", + "target": "tests_test_extract_google_news_test_cli_execution_file_output", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L243", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_rationale_264", + "target": "tests_test_extract_google_news_test_cli_empty_query_error", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L264", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_rationale_273", + "target": "tests_test_extract_google_news_test_cli_network_error_handling", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L273", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_rationale_292", + "target": "tests_test_extract_google_news_test_e2e_resolve_real_google_news_url", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L292", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_rationale_313", + "target": "tests_test_extract_google_news_test_e2e_extract_google_news_live_pipeline", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L313", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_rationale_329", + "target": "tests_test_extract_google_news_test_e2e_cli_live_file_output", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L329", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_rationale_33", + "target": "tests_test_extract_google_news_sample_rss_xml", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L33", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_rationale_38", + "target": "tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L38", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_rationale_61", + "target": "tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L61", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_rationale_79", + "target": "tests_test_extract_google_news_test_get_hl_gl_ceid_dynamic_fallback", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L79", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_rationale_87", + "target": "tests_test_extract_google_news_test_search_query_validation", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L87", + "weight": 1.0 + }, { "source": "tests_test_language_rationale_1", "target": "tests_test_language", @@ -14222,6 +19220,152 @@ "source_location": "L3", "weight": 1.0 }, + { + "source": "specs_002_google_news_extractor_checklists_readiness", + "target": "specs_002_google_news_extractor_contracts_cli_contract", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/checklists/readiness.md", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_checklists_readiness", + "target": "specs_002_google_news_extractor_data_model", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/checklists/readiness.md", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_checklists_readiness", + "target": "specs_002_google_news_extractor_plan", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/checklists/readiness.md", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_checklists_readiness", + "target": "specs_002_google_news_extractor_research", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/checklists/readiness.md", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_checklists_readiness", + "target": "specs_002_google_news_extractor_spec", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/checklists/readiness.md", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_checklists_requirements", + "target": "specs_002_google_news_extractor_spec", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/checklists/requirements.md", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_plan", + "target": "specs_002_google_news_extractor_spec", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/plan.md", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_tasks", + "target": "specs_002_google_news_extractor_contracts_cli_contract", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_tasks", + "target": "specs_002_google_news_extractor_plan", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_tasks", + "target": "specs_002_google_news_extractor_spec", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "classify_emit_error", + "target": "path", + "relation": "calls", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "call", + "source_file": "classify.py", + "source_location": "L88", + "weight": 1.0 + }, + { + "source": "classify_main", + "target": "path", + "relation": "calls", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "call", + "source_file": "classify.py", + "source_location": "L104", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_main", + "target": "path", + "relation": "calls", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "call", + "source_file": "scripts/extract_google_news.py", + "source_location": "L447", + "weight": 1.0 + }, { "source": "classify_emit_error", "target": "src_models_errorcode", @@ -14231,7 +19375,18 @@ "confidence_score": 0.95, "context": "parameter_type", "source_file": "classify.py", - "source_location": "L62", + "source_location": "L74", + "weight": 0.8 + }, + { + "source": "classify_main", + "target": "src_models_errorcode", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "classify.py", + "source_location": "L110", "weight": 0.8 }, { @@ -14242,18 +19397,7 @@ "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "classify.py", - "source_location": "L115", - "weight": 0.8 - }, - { - "source": "classify_main", - "target": "src_models_errorcode", - "relation": "uses", - "_origin": "ast", - "confidence": "INFERRED", - "confidence_score": 0.95, - "source_file": "classify.py", - "source_location": "L98", + "source_location": "L127", "weight": 0.8 }, { @@ -14377,6 +19521,39 @@ "source_location": "L61", "weight": 0.8 }, + { + "source": "tests_test_adversarial_test_adversarial_apple_fruit_recipe", + "target": "src_models_decisioncategory", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "tests/test_adversarial.py", + "source_location": "L59", + "weight": 0.8 + }, + { + "source": "tests_test_adversarial_test_adversarial_related_entity_without_scope_context", + "target": "src_models_decisioncategory", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "tests/test_adversarial.py", + "source_location": "L93", + "weight": 0.8 + }, + { + "source": "tests_test_adversarial_test_adversarial_sao_paulo_city_vs_fc", + "target": "src_models_decisioncategory", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "tests/test_adversarial.py", + "source_location": "L35", + "weight": 0.8 + }, { "source": "tests_test_benchmark_24_classifier", "target": "src_classifier_inherenceclassifier", @@ -14476,6 +19653,28 @@ "source_location": "L71", "weight": 0.8 }, + { + "source": "tests_test_extract_google_news_test_e2e_extract_google_news_live_pipeline", + "target": "scripts_extract_google_news_extractionresult", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L317", + "weight": 0.8 + }, + { + "source": "tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", + "target": "scripts_extract_google_news_extractionresult", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L206", + "weight": 0.8 + }, { "source": "tests_test_models_test_classification_error_serialization", "target": "src_models_errorcode", @@ -14533,5 +19732,5 @@ } ], "hyperedges": [], - "built_at_commit": "d371b81aa466c7bad9f22f4cad0121a5683990d2" + "built_at_commit": "67cc40f91af76783f3463a6bb456b68eb159af5b" } \ No newline at end of file diff --git a/graphify-out/2026-08-20/manifest.json b/graphify-out/2026-08-20/manifest.json index 71f49c2..c0b4294 100644 --- a/graphify-out/2026-08-20/manifest.json +++ b/graphify-out/2026-08-20/manifest.json @@ -294,15 +294,15 @@ "semantic_hash": "" }, "classify.py": { - "mtime": 1787195933.7872643, - "seen": 1787196463.095295, - "ast_hash": "5fa90ecfb87bdf15ee99165a3be7c63b", + "mtime": 1787197110.3753626, + "seen": 1787197159.9828603, + "ast_hash": "d09a35a5e25d42f6ecc537d5b67bef8e", "semantic_hash": "" }, "pyproject.toml": { - "mtime": 1787195827.3305018, - "seen": 1787196463.0953014, - "ast_hash": "f2503e96d08f5a4e41b13352e81709c6", + "mtime": 1787234982.768605, + "seen": 1787235020.6850271, + "ast_hash": "26f5f979658067bf447f375f044a8f21", "semantic_hash": "" }, "src/__init__.py": { @@ -336,9 +336,9 @@ "semantic_hash": "" }, "src/classifier.py": { - "mtime": 1787196413.3774571, - "seen": 1787196463.095319, - "ast_hash": "d7bab620ae29badf0d3779fab44552bc", + "mtime": 1787197085.0250447, + "seen": 1787197159.985785, + "ast_hash": "a2e70f968109d213fdab0ae81ac819ff", "semantic_hash": "" }, "src/language.py": { @@ -420,9 +420,9 @@ "semantic_hash": "" }, "requirements.txt": { - "mtime": 1787195817.4782183, - "seen": 1787196463.1020837, - "ast_hash": "5612073a1e7034d7c25765379baa5da4", + "mtime": 1787236111.876247, + "seen": 1787236262.0105975, + "ast_hash": "9fb7e3f8ecb04ff30d650c772f509557", "semantic_hash": "" }, "tests/fixtures/benchmark_24/de/contextual.md": { @@ -568,5 +568,89 @@ "seen": 1787196463.1031141, "ast_hash": "e05ab20a5190cfb5b9d41da64d5273cf", "semantic_hash": "" + }, + "tests/test_adversarial.py": { + "mtime": 1787197141.2340336, + "seen": 1787197159.9881344, + "ast_hash": "5e8daf517ee32c261617d96264ef0473", + "semantic_hash": "" + }, + "scripts/extract_google_news.py": { + "mtime": 1787236453.5231855, + "seen": 1787236509.1147037, + "ast_hash": "4216de490a87378d21dab707a3166679", + "semantic_hash": "" + }, + "tests/test_extract_google_news.py": { + "mtime": 1787236301.513448, + "seen": 1787236353.5582018, + "ast_hash": "1fc9a108a8abfecf1d37c8642a885e9e", + "semantic_hash": "" + }, + "docs/googlenews_extractor_guia_completo.md": { + "mtime": 1787231605.0830677, + "seen": 1787234772.8112028, + "ast_hash": "59db8e652000ba6087a00289a0ce0959", + "semantic_hash": "" + }, + "specs/002-google-news-extractor/checklists/readiness.md": { + "mtime": 1787234305.932687, + "seen": 1787234772.8123577, + "ast_hash": "a1200a6959d41e256a73403dd5c4e1f6", + "semantic_hash": "" + }, + "specs/002-google-news-extractor/checklists/requirements.md": { + "mtime": 1787232386.6763985, + "seen": 1787234772.812359, + "ast_hash": "39cd86af76c9f74baa2984418870b677", + "semantic_hash": "" + }, + "specs/002-google-news-extractor/contracts/cli_contract.md": { + "mtime": 1787236744.3139226, + "seen": 1787236817.4979818, + "ast_hash": "76a61ad31df989244edc5e739081bf7b", + "semantic_hash": "" + }, + "specs/002-google-news-extractor/data-model.md": { + "mtime": 1787234040.8134317, + "seen": 1787234772.8123617, + "ast_hash": "e8380c98d2f6418f60ac8a511ecdb637", + "semantic_hash": "" + }, + "specs/002-google-news-extractor/plan.md": { + "mtime": 1787236725.9825225, + "seen": 1787236817.4983613, + "ast_hash": "a787c974414ae6c173d4c39e76113c31", + "semantic_hash": "" + }, + "specs/002-google-news-extractor/quickstart.md": { + "mtime": 1787236764.0206513, + "seen": 1787236817.4983652, + "ast_hash": "ada22d34a0fa8341f88136cf42f055a9", + "semantic_hash": "" + }, + "specs/002-google-news-extractor/research.md": { + "mtime": 1787236785.0466182, + "seen": 1787236817.498368, + "ast_hash": "60837e6c7463c4413911ceca0087374c", + "semantic_hash": "" + }, + "specs/002-google-news-extractor/spec.md": { + "mtime": 1787236709.0783155, + "seen": 1787236817.4983711, + "ast_hash": "dfd963f7ca351c93e09f74af9b11d19e", + "semantic_hash": "" + }, + "specs/002-google-news-extractor/tasks.md": { + "mtime": 1787236802.4808047, + "seen": 1787236817.4983742, + "ast_hash": "427f24026deaa7c9aca95d99e7587ae6", + "semantic_hash": "" + }, + "scripts/__init__.py": { + "mtime": 1787234973.5782337, + "seen": 1787235020.6850297, + "ast_hash": "627a6c953b250083ebe76ee74d605bb5", + "semantic_hash": "" } } \ No newline at end of file diff --git a/graphify-out/GRAPH_REPORT.md b/graphify-out/GRAPH_REPORT.md index 175382c..920c7e5 100644 --- a/graphify-out/GRAPH_REPORT.md +++ b/graphify-out/GRAPH_REPORT.md @@ -1,16 +1,16 @@ # Graph Report - TextNLPClassifierApp (2026-08-20) ## Corpus Check -- 133 files · ~54,759 words +- 148 files · ~67,357 words - Verdict: corpus is large enough that graph structure adds value. ## Summary -- 595 nodes · 704 edges · 80 communities (43 shown, 37 thin omitted) -- Extraction: 96% EXTRACTED · 4% INFERRED · 0% AMBIGUOUS · INFERRED: 31 edges (avg confidence: 0.95) +- 802 nodes · 957 edges · 104 communities (66 shown, 38 thin omitted) +- Extraction: 96% EXTRACTED · 4% INFERRED · 0% AMBIGUOUS · INFERRED: 36 edges (avg confidence: 0.94) - Token cost: 0 input · 0 output ## Graph Freshness -- Built from commit: `d371b81a` +- Built from commit: `67cc40f9` - Run `git rev-parse HEAD` and compare to check if the graph is stale. - Run `graphify update .` after code changes (no API cost). @@ -51,15 +51,15 @@ - Media Transcription - Extraction Specification - Graphify Workflows -- Feature Specification: Multilingual NLP Entity Inherence Classifier (POC) +- main - 1. Technical Decisions & Tradeoffs - 1. Input Schemas - 2. Basic CLI Usage Examples - 2. Standard Streams & Exit Codes -- ECPSnapshot -- test_models.py +- ClassificationResult +- InherenceClassifier - detect_language -- main +- test_models.py - content_northvolt_de.md - content_presal_pt.md - content_tangential_es.md @@ -91,35 +91,58 @@ - pt/tangential.md - tests/__init__.py - text-nlp-classifier +- get_hl_gl_ceid +- Extrator de Notícias do Google News — Guia Completo de Funcionamento +- extract_google_news.py +- ExtractionResult +- test_extract_google_news.py +- Implementation Tasks: Google News Headlines Extractor +- Feature Specification: Google News Headlines Extractor +- 2. Cenários Práticos de Uso +- Implementation Plan: Google News Headlines Extractor +- scripts/__init__.py +- SearchQuery +- 1. Technical Decisions & Tradeoffs +- General Readiness Checklist: Google News Headlines Extractor +- 1. Entidades de Domínio & DTOs +- Specification Quality Checklist: Google News Headlines Extractor +- CLI Contract: Google News Headlines Extractor +- 🧠 TextNLPClassifierApp +- build_parser +- sample_rss_xml +- classifier.py +- ECPSnapshot +- Feature Specification: Multilingual NLP Entity Inherence Classifier (POC) +- main ## God Nodes (most connected - your core abstractions) 1. `ECPSnapshot` - 31 edges 2. `InherenceClassifier` - 25 edges 3. `DecisionCategory` - 18 edges 4. `ClassificationResult` - 17 edges -5. `LocalEmbeddingsAdapter` - 14 edges -6. `LLMFallbackAdapter` - 14 edges -7. `detect_language()` - 14 edges -8. `main()` - 13 edges +5. `main()` - 14 edges +6. `LocalEmbeddingsAdapter` - 14 edges +7. `LLMFallbackAdapter` - 14 edges +8. `detect_language()` - 14 edges 9. `Tasks: [FEATURE NAME]` - 13 edges -10. `BaseNLPAdapter` - 12 edges +10. `SearchQuery` - 12 edges ## Surprising Connections (you probably didn't know these) -- `emit_error()` --uses--> `ErrorCode` [INFERRED] - classify.py → src/models.py - `main()` --uses--> `ECPSnapshot` [INFERRED] classify.py → src/models.py - `main()` --uses--> `ErrorCode` [INFERRED] classify.py → src/models.py -- `test_classification_error_serialization()` --uses--> `ErrorCode` [INFERRED] - tests/test_models.py → src/models.py -- `test_ecp_snapshot_defaults()` --uses--> `ECPSnapshot` [INFERRED] +- `test_extract_google_news_orchestration_mocked()` --uses--> `ExtractionResult` [INFERRED] + tests/test_extract_google_news.py → scripts/extract_google_news.py +- `classifier()` --uses--> `InherenceClassifier` [INFERRED] + tests/test_benchmark_24.py → src/classifier.py +- `test_classification_result_serialization()` --uses--> `DecisionCategory` [INFERRED] tests/test_models.py → src/models.py ## Import Cycles - None detected. -## Communities (80 total, 37 thin omitted) +## Communities (104 total, 38 thin omitted) ### Community 0 - "Task Planning" Cohesion: 0.07 @@ -241,9 +264,9 @@ Nodes (3): For --cluster-only, For --update (incremental re-extraction), graphif Cohesion: 0.50 Nodes (3): Boundaries, Output, Scan -### Community 40 - "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)" -Cohesion: 0.14 -Nodes (14): Assumptions, Assumptions & Scope, Clarifications, Explicit Out of Scope (POC), Feature Specification: Multilingual NLP Entity Inherence Classifier (POC), Functional Requirements, Key Entities *(data models & domain entities)*, Measurable Outcomes (+6 more) +### Community 40 - "main" +Cohesion: 0.19 +Nodes (14): CaptureFixture, Path, main(), Ponto de entrada do script CLI., Valida execução padrão do CLI com saída JSON no stdout., Valida gravação em arquivo com criação automática de diretórios pais., Valida tratamento de erro e código de saída 1 para parâmetro vazio., Valida tratamento de erro e código de saída 2 para falhas de rede. (+6 more) ### Community 41 - "1. Technical Decisions & Tradeoffs" Cohesion: 0.22 @@ -261,36 +284,124 @@ Nodes (7): 1. Prerequisites & Installation, 2.1 Direct Inherence (Portuguese), 2 Cohesion: 0.29 Nodes (6): 1.1 Arguments & Options, 1. Command Line Interface, 2.1 Exit Codes, 2.2 Standard Output (`stdout`) / Standard Error (`stderr`), 2. Standard Streams & Exit Codes, CLI Contract & Interface Specification (POC) -### Community 45 - "ECPSnapshot" -Cohesion: 0.05 -Nodes (63): ABC, Enum, parametrize, BaseNLPAdapter, Base abstract adapter interface for optional Tier 2 / Tier 3 NLP enhancers., Abstract interface for pluggable NLP classification adapters., Return True if the underlying provider or model is installed and configured., Compute semantic similarity score between text and a set of candidate terms. (+55 more) +### Community 45 - "ClassificationResult" +Cohesion: 0.10 +Nodes (18): ABC, BaseNLPAdapter, Base abstract adapter interface for optional Tier 2 / Tier 3 NLP enhancers., Abstract interface for pluggable NLP classification adapters., Return True if the underlying provider or model is installed and configured., Compute semantic similarity score between text and a set of candidate terms., Optionally refine an ambiguous classification result., LocalEmbeddingsAdapter (+10 more) -### Community 46 - "test_models.py" +### Community 46 - "InherenceClassifier" Cohesion: 0.12 -Nodes (17): Any, emit_error(), ClassificationError, extract_evidence_snippets(), extract_sentences(), Markdown content parser and excerpt extraction utilities., Remove markdown syntax markers (headers, bold, italics, links, code blocks) to…, Split text into individual sentences. (+9 more) +Nodes (27): InherenceClassifier, Tier 1 Deterministic NLP Entity Inherence Classifier., DecisionCategory, RelatedEntity, Adversarial and robustness test suite for Multilingual NLP Entity Inherence…, Run CLI via subprocess with empty content and verify error code and exit code., Content about city/state governance of São Paulo against ECP for São Paulo FC., Run CLI via subprocess with missing target_name and verify error payload. (+19 more) ### Community 47 - "detect_language" -Cohesion: 0.19 -Nodes (16): detect_language(), extract_words(), normalize_text(), Lightweight multilingual language detection and text normalization., Normalize text by converting to lowercase and stripping combining diacritical…, Tokenize text into lowercase alphanumeric words., Detect the ISO-639-1 language code of text among supported languages (pt, en,…, Unit tests for language detection and text normalization. (+8 more) +Cohesion: 0.14 +Nodes (20): count_phrase_occurrences(), match_phrase_in_text(), Check if a normalized phrase appears in normalized text with word boundary…, Count occurrences of a phrase in text., detect_language(), extract_words(), normalize_text(), Lightweight multilingual language detection and text normalization. (+12 more) -### Community 48 - "main" +### Community 48 - "test_models.py" +Cohesion: 0.21 +Nodes (12): Classify inherence of content against an ECP snapshot., extract_evidence_snippets(), extract_sentences(), Markdown content parser and excerpt extraction utilities., Remove markdown syntax markers (headers, bold, italics, links, code blocks) to…, Split text into individual sentences., Extract relevant sentence excerpts from Markdown text that contain any of the…, strip_markdown() (+4 more) + +### Community 80 - "get_hl_gl_ceid" +Cohesion: 0.25 +Nodes (8): get_hl_gl_ceid(), Mapeia idioma e locale para os parâmetros hl, gl e ceid do Google News., Valida o mapeamento padrão de idiomas para pares (hl, gl, ceid)., Valida a sobrescrita geográfica quando o argumento locale é especificado., Valida fallback dinâmico para idiomas regionais não listados explicitamente., test_get_hl_gl_ceid_default_mappings(), test_get_hl_gl_ceid_dynamic_fallback(), test_get_hl_gl_ceid_with_custom_locale() + +### Community 81 - "Extrator de Notícias do Google News — Guia Completo de Funcionamento" +Cohesion: 0.08 +Nodes (24): 1. Visão geral (arquitetura), 2.1 DTO de entrada (`googlenews_etl/application/dtos/extract_news_dto.py`), 2.2 Value Object de validação (`googlenews_etl/domain/entities/search_query.py`), 2. Entrada, 3.1 O caso de uso (`googlenews_etl/application/use_cases/extract_news_use_case.py`), 3.2 A porta (`googlenews_etl/domain/ports/news_extractor_port.py`), 3.3.1 Inicialização: sessão HTTP com impersonação de browser, 3.3.2 Mapeamento idioma → parâmetros `hl`/`gl` (`_get_hl_gl`) (+16 more) + +### Community 82 - "extract_google_news.py" +Cohesion: 0.20 +Nodes (14): extract_google_news(), _fetch_rss_content(), NewsArticle, _normalize_text_for_comparison(), parse_google_news_rss(), Remove pontuação e espaços extras para comparação de redundância., Parseia o XML do RSS do Google News e extrai os itens estruturados., Resolve em paralelo as URLs intermediárias do Google News para os links finais… (+6 more) + +### Community 83 - "ExtractionResult" +Cohesion: 0.29 +Nodes (5): ExtractionResult, Any, Resultado consolidado da extração., Valida E2E o fluxo completo de busca, parsing e resolução de URLs reais ao vivo., test_e2e_extract_google_news_live_pipeline() + +### Community 84 - "test_extract_google_news.py" +Cohesion: 0.21 +Nodes (11): Resolve a URL intermediária do Google News para a URL real do veículo., resolve_article_url(), Testes unitários e de integração para o Extrator de Manchetes do Google News.…, Valida o parsing do feed RSS, higienização de tags HTML e deduplicação., Valida fallback gracioso de URL quando não é link do Google News ou em erro., Valida resolução bem-sucedida de URL do Google News para o portal destino., Valida E2E que o decodificador resolve uma URL real do Google News para o…, test_e2e_resolve_real_google_news_url() (+3 more) + +### Community 85 - "Implementation Tasks: Google News Headlines Extractor" +Cohesion: 0.14 +Nodes (14): Implementation for User Story 1, Implementation for User Story 2, Implementation for User Story 3, Implementation Tasks: Google News Headlines Extractor, Phase 1: Setup (Shared Infrastructure), Phase 2: Foundational (Blocking Prerequisites), Phase 3: User Story 1 - Extração Básica de Notícias por Assunto e Idioma (Priority: P1) 🌟 MVP, Phase 4: User Story 2 - Filtragem Regional e Edição Geográfica (Priority: P2) (+6 more) + +### Community 86 - "Feature Specification: Google News Headlines Extractor" +Cohesion: 0.18 +Nodes (11): Clarifications, Edge Cases, Feature Specification: Google News Headlines Extractor, Functional Requirements, Requirements *(mandatory)*, Session 2026-08-20, Success Criteria *(mandatory)*, User Scenarios & Testing *(mandatory)* (+3 more) + +### Community 87 - "2. Cenários Práticos de Uso" +Cohesion: 0.20 +Nodes (9): 1. Pré-requisitos e Instalação, 2. Cenários Práticos de Uso, 3. Validação dos Testes Automatizados e Linter, Cenário 1: River Plate — Argentina (Espanhol / 2 Páginas / Salvar em Arquivo), Cenário 2: Cruzeiro — Brasil (Português / Formatado no Terminal), Cenário 3: Fórmula 1 — Reino Unido (Inglês), Cenário 4: Integração em Pipeline com `jq` (Modo Silencioso), Cenário 5: Extração Rápida com Links Brutos (Sem Resolução de URLs) (+1 more) + +### Community 88 - "Implementation Plan: Google News Headlines Extractor" +Cohesion: 0.29 +Nodes (7): Architecture & Pipeline, Documentation (this feature), Implementation Plan: Google News Headlines Extractor, Project Structure, Source Code, Summary, Technical Context + +### Community 90 - "SearchQuery" +Cohesion: 0.20 +Nodes (6): Value Object com parâmetros de busca validados., SearchQuery, Valida a consolidação do ExtractionResult a partir da busca mockada com URLs…, Valida as regras de negócio e limites de SearchQuery., test_extract_google_news_orchestration_mocked(), test_search_query_validation() + +### Community 91 - "1. Technical Decisions & Tradeoffs" +Cohesion: 0.25 +Nodes (7): 1. Technical Decisions & Tradeoffs, Decision 1: Motor de Requisição e Scraping com `foxcape` em Modo Headless, Decision 2: Endpoint RSS do Google News vs. Scraping de DOM, Decision 3: Mapeamento de Idioma e Locale (`hl`, `gl`, `ceid`), Decision 4: Resolução de URLs do Google News via `googlenewsdecoder`, Decision 5: Logging em Tempo Real no `stderr` e Segregação de Streams, Research: Google News Headlines Extractor + +### Community 92 - "General Readiness Checklist: Google News Headlines Extractor" +Cohesion: 0.29 +Nodes (7): CLI Interface & Parameter Contracts, Data Sanitization & Article Extraction, Error Handling & Edge Cases, General Readiness Checklist: Google News Headlines Extractor, Non-Functional & Operational Readiness, Notes, Scraping Engine & Feed Mapping + +### Community 93 - "1. Entidades de Domínio & DTOs" +Cohesion: 0.29 +Nodes (6): 1.1 SearchQuery (Parâmetros da Busca), 1.2 NewsArticle (Item de Notícia), 1.3 ExtractionResult (Saída Estruturada Consolidada), 1. Entidades de Domínio & DTOs, 2. Esquema JSON de Saída, Data Model: Google News Headlines Extractor + +### Community 94 - "Specification Quality Checklist: Google News Headlines Extractor" +Cohesion: 0.33 +Nodes (5): Content Quality, Feature Readiness, Notes, Requirement Completeness, Specification Quality Checklist: Google News Headlines Extractor + +### Community 95 - "CLI Contract: Google News Headlines Extractor" +Cohesion: 0.33 +Nodes (6): 1. Comando e Argumentos, 2. Códigos de Saída (Exit Codes), 3. Protocolo de Streams (Stdout / Stderr), Argumentos de Linha de Comando, CLI Contract: Google News Headlines Extractor, Sintaxe + +### Community 97 - "🧠 TextNLPClassifierApp" +Cohesion: 0.07 +Nodes (26): 1. 🧠 Classificador de Conteúdo e Inerência (NLP / LLM / ECP), 1. Clonar o Repositório e Criar Ambiente Virtual, 1. River Plate (Argentina / Espanhol / 2 Páginas / Salvar em Arquivo), 2. Cruzeiro (Brasil / Português / Formatado no Terminal), 2. 📰 Extrator de Manchetes do Google News, 2. Instalar Dependências, 3. Baixar Binários do Navegador Stealth (Camoufox), 3. Fórmula 1 (Inglaterra / Inglês) (+18 more) + +### Community 98 - "build_parser" +Cohesion: 0.67 +Nodes (3): ArgumentParser, build_parser(), Cria e configura o parser de argumentos CLI. + +### Community 99 - "sample_rss_xml" +Cohesion: 0.67 +Nodes (3): fixture, Fixture que fornece o conteúdo do XML de exemplo para testes offline., sample_rss_xml() + +### Community 100 - "classifier.py" +Cohesion: 0.23 +Nodes (9): emit_error(), Enum, Core deterministic classification engine (Tier 1 core)., ClassificationError, ErrorCode, MatchedGraphEntity, Data models and validation schemas for Multilingual NLP Entity Inherence…, str (+1 more) + +### Community 101 - "ECPSnapshot" +Cohesion: 0.20 +Nodes (10): parametrize, ECPSnapshot, Any, classifier(), fixture, Controlled 24-case benchmark suite for Multilingual NLP Entity Inherence…, test_benchmark_case(), test_ecp_snapshot_defaults() (+2 more) + +### Community 102 - "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)" +Cohesion: 0.14 +Nodes (14): Assumptions, Assumptions & Scope, Clarifications, Explicit Out of Scope (POC), Feature Specification: Multilingual NLP Entity Inherence Classifier (POC), Functional Requirements, Key Entities *(data models & domain entities)*, Measurable Outcomes (+6 more) + +### Community 103 - "main" Cohesion: 0.31 Nodes (9): main(), parse_args(), Namespace, CLI execution tests covering flags, arguments, stdout, and error handling., test_cli_empty_content_file(), test_cli_missing_ecp_file(), test_cli_missing_required_ecp_field(), test_cli_output_file() (+1 more) ## Knowledge Gaps -- **291 isolated node(s):** `text-nlp-classifier`, `MatchedGraphEntity`, `graphify`, `Usage`, `What graphify is for` (+286 more) +- **381 isolated node(s):** `text-nlp-classifier`, `MatchedGraphEntity`, `graphify`, `Usage`, `What graphify is for` (+376 more) These have ≤1 connection - possible missing edges or undocumented components. -- **37 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. +- **38 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 `ECPSnapshot` connect `ECPSnapshot` to `main`, `test_models.py`?** - _High betweenness centrality (0.015) - this node is a cross-community bridge._ -- **Why does `InherenceClassifier` connect `ECPSnapshot` to `main`?** - _High betweenness centrality (0.008) - this node is a cross-community bridge._ -- **Why does `detect_language()` connect `detect_language` to `ECPSnapshot`?** - _High betweenness centrality (0.007) - this node is a cross-community bridge._ +- **Why does `main()` connect `main` to `main`, `classifier.py`, `ECPSnapshot`, `InherenceClassifier`?** + _High betweenness centrality (0.029) - this node is a cross-community bridge._ +- **Why does `ECPSnapshot` connect `ECPSnapshot` to `classifier.py`, `main`, `ClassificationResult`, `InherenceClassifier`, `test_models.py`?** + _High betweenness centrality (0.020) - this node is a cross-community bridge._ +- **Why does `main()` connect `main` to `extract_google_news.py`, `test_extract_google_news.py`, `SearchQuery`, `build_parser`?** + _High betweenness centrality (0.020) - this node is a cross-community bridge._ - **Are the 10 inferred relationships involving `ECPSnapshot` (e.g. with `main()` and `BaseNLPAdapter`) actually correct?** _`ECPSnapshot` has 10 INFERRED edges - model-reasoned connections that need verification._ - **Are the 6 inferred relationships involving `InherenceClassifier` (e.g. with `LocalEmbeddingsAdapter` and `LLMFallbackAdapter`) actually correct?** diff --git a/graphify-out/cache/ast/v0.9.47-s2/290cd57feaac930e62af6b2a02ccd477c87210fa00f117cf9a2e7848fa9160dd.json b/graphify-out/cache/ast/v0.9.47-s2/290cd57feaac930e62af6b2a02ccd477c87210fa00f117cf9a2e7848fa9160dd.json new file mode 100644 index 0000000..3b36c83 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/290cd57feaac930e62af6b2a02ccd477c87210fa00f117cf9a2e7848fa9160dd.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_md", "label": "googlenews_extractor_guia_completo.md", "file_type": "document", "node_kind": "page", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L1"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", "label": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L1"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_1_vis\u00e3o_geral_arquitetura", "label": "1. Vis\u00e3o geral (arquitetura)", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L9"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_2_entrada", "label": "2. Entrada", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L56"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_2_1_dto_de_entrada_googlenews_etl_application_dtos_extract_news_dto_py", "label": "2.1 DTO de entrada (`googlenews_etl/application/dtos/extract_news_dto.py`)", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L58"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_2_2_value_object_de_valida\u00e7\u00e3o_googlenews_etl_domain_entities_search_query_py", "label": "2.2 Value Object de valida\u00e7\u00e3o (`googlenews_etl/domain/entities/search_query.py`)", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L75"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_processamento_passo_a_passo", "label": "3. Processamento \u2014 passo a passo", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L113"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_1_o_caso_de_uso_googlenews_etl_application_use_cases_extract_news_use_case_py", "label": "3.1 O caso de uso (`googlenews_etl/application/use_cases/extract_news_use_case.py`)", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L115"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_2_a_porta_googlenews_etl_domain_ports_news_extractor_port_py", "label": "3.2 A porta (`googlenews_etl/domain/ports/news_extractor_port.py`)", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L168"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_3_o_adaptador_concreto_o_cora\u00e7\u00e3o_do_extrator_googlenews_etl_infrastructure_adapters_google_news_extractor_adapter_py", "label": "3.3 O adaptador concreto \u2014 o cora\u00e7\u00e3o do extrator (`googlenews_etl/infrastructure/adapters/google_news_extractor_adapter.py`)", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L183"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_3_1_inicializa\u00e7\u00e3o_sess\u00e3o_http_com_impersona\u00e7\u00e3o_de_browser", "label": "3.3.1 Inicializa\u00e7\u00e3o: sess\u00e3o HTTP com impersona\u00e7\u00e3o de browser", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L185"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_3_2_mapeamento_idioma_par\u00e2metros_hl_gl_get_hl_gl", "label": "3.3.2 Mapeamento idioma \u2192 par\u00e2metros `hl`/`gl` (`_get_hl_gl`)", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L213"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_3_3_extra\u00e7\u00e3o_do_rss_o_ponto_fundamental_fetch_rss", "label": "3.3.3 \u2605 Extra\u00e7\u00e3o do RSS \u2014 o ponto fundamental (`_fetch_rss`)", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L250"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_3_4_orquestra\u00e7\u00e3o_com_resolu\u00e7\u00e3o_de_urls_extract", "label": "3.3.4 Orquestra\u00e7\u00e3o com resolu\u00e7\u00e3o de URLs (`extract`)", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L306"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_4_resolu\u00e7\u00e3o_de_urls_googlenews_etl_infrastructure_adapters_playwright_url_resolver_adapter_py", "label": "3.4 Resolu\u00e7\u00e3o de URLs (`googlenews_etl/infrastructure/adapters/playwright_url_resolver_adapter.py`)", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L332"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_5_rate_limiter_googlenews_etl_domain_services_rate_limiter_service_py", "label": "3.5 Rate limiter (`googlenews_etl/domain/services/rate_limiter_service.py`)", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L384"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_4_entidade_de_dom\u00ednio_da_not\u00edcia_googlenews_etl_domain_entities_news_article_py", "label": "4. Entidade de dom\u00ednio da not\u00edcia (`googlenews_etl/domain/entities/news_article.py`)", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L403"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_5_sa\u00edda", "label": "5. Sa\u00edda", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L435"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_5_1_dtos_de_sa\u00edda_googlenews_etl_application_dtos_extract_news_dto_py", "label": "5.1 DTOs de sa\u00edda (`googlenews_etl/application/dtos/extract_news_dto.py`)", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L437"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_5_2_exemplo_de_sa\u00edda_json", "label": "5.2 Exemplo de sa\u00edda JSON", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L461"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_6_resumo_do_fluxo_completo_entrada_sa\u00edda", "label": "6. Resumo do fluxo completo (entrada \u2192 sa\u00edda)", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L486"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_7_depend\u00eancias_para_rodar_o_que_n\u00e3o_est\u00e1_nos_4_arquivos_centrais", "label": "7. Depend\u00eancias para rodar (o que N\u00c3O est\u00e1 nos 4 arquivos centrais)", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L514"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_depend\u00eancias_de_bibliotecas_requirements", "label": "Depend\u00eancias de bibliotecas (requirements)", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L529"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_comportamentos_observ\u00e1veis_honestidade", "label": "Comportamentos observ\u00e1veis (honestidade)", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L537"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_8_como_chamar_exemplo_de_uso", "label": "8. Como chamar (exemplo de uso)", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L548"}], "edges": [{"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_md", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_1_vis\u00e3o_geral_arquitetura", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_2_entrada", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L56", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_2_entrada", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_2_1_dto_de_entrada_googlenews_etl_application_dtos_extract_news_dto_py", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L58", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_2_entrada", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_2_2_value_object_de_valida\u00e7\u00e3o_googlenews_etl_domain_entities_search_query_py", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L75", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_processamento_passo_a_passo", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L113", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_processamento_passo_a_passo", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_1_o_caso_de_uso_googlenews_etl_application_use_cases_extract_news_use_case_py", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L115", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_processamento_passo_a_passo", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_2_a_porta_googlenews_etl_domain_ports_news_extractor_port_py", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L168", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_processamento_passo_a_passo", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_3_o_adaptador_concreto_o_cora\u00e7\u00e3o_do_extrator_googlenews_etl_infrastructure_adapters_google_news_extractor_adapter_py", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L183", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_3_o_adaptador_concreto_o_cora\u00e7\u00e3o_do_extrator_googlenews_etl_infrastructure_adapters_google_news_extractor_adapter_py", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_3_1_inicializa\u00e7\u00e3o_sess\u00e3o_http_com_impersona\u00e7\u00e3o_de_browser", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L185", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_3_o_adaptador_concreto_o_cora\u00e7\u00e3o_do_extrator_googlenews_etl_infrastructure_adapters_google_news_extractor_adapter_py", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_3_2_mapeamento_idioma_par\u00e2metros_hl_gl_get_hl_gl", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L213", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_3_o_adaptador_concreto_o_cora\u00e7\u00e3o_do_extrator_googlenews_etl_infrastructure_adapters_google_news_extractor_adapter_py", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_3_3_extra\u00e7\u00e3o_do_rss_o_ponto_fundamental_fetch_rss", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L250", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_3_o_adaptador_concreto_o_cora\u00e7\u00e3o_do_extrator_googlenews_etl_infrastructure_adapters_google_news_extractor_adapter_py", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_3_4_orquestra\u00e7\u00e3o_com_resolu\u00e7\u00e3o_de_urls_extract", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L306", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_processamento_passo_a_passo", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_4_resolu\u00e7\u00e3o_de_urls_googlenews_etl_infrastructure_adapters_playwright_url_resolver_adapter_py", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L332", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_processamento_passo_a_passo", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_5_rate_limiter_googlenews_etl_domain_services_rate_limiter_service_py", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L384", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_4_entidade_de_dom\u00ednio_da_not\u00edcia_googlenews_etl_domain_entities_news_article_py", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L403", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_5_sa\u00edda", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L435", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_5_sa\u00edda", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_5_1_dtos_de_sa\u00edda_googlenews_etl_application_dtos_extract_news_dto_py", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L437", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_5_sa\u00edda", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_5_2_exemplo_de_sa\u00edda_json", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L461", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_6_resumo_do_fluxo_completo_entrada_sa\u00edda", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L486", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_7_depend\u00eancias_para_rodar_o_que_n\u00e3o_est\u00e1_nos_4_arquivos_centrais", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L514", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_7_depend\u00eancias_para_rodar_o_que_n\u00e3o_est\u00e1_nos_4_arquivos_centrais", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_depend\u00eancias_de_bibliotecas_requirements", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L529", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_7_depend\u00eancias_para_rodar_o_que_n\u00e3o_est\u00e1_nos_4_arquivos_centrais", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_comportamentos_observ\u00e1veis_honestidade", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L537", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_8_como_chamar_exemplo_de_uso", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L548", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/3478a487614358839b3e53c15b05b86a4b850bead9b4142384566e244753bde3.json b/graphify-out/cache/ast/v0.9.47-s2/3478a487614358839b3e53c15b05b86a4b850bead9b4142384566e244753bde3.json new file mode 100644 index 0000000..fb3e5b1 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/3478a487614358839b3e53c15b05b86a4b850bead9b4142384566e244753bde3.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_specs_002_google_news_extractor_quickstart_md", "label": "quickstart.md", "file_type": "document", "node_kind": "page", "source_file": "specs/002-google-news-extractor/quickstart.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_002_google_news_extractor_quickstart_quickstart_google_news_headlines_extractor", "label": "Quickstart: Google News Headlines Extractor", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/quickstart.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_002_google_news_extractor_quickstart_1_pr\u00e9_requisitos_e_instala\u00e7\u00e3o", "label": "1. Pr\u00e9-requisitos e Instala\u00e7\u00e3o", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/quickstart.md", "source_location": "L7"}, {"id": "$graphify-root$_specs_002_google_news_extractor_quickstart_2_cen\u00e1rios_pr\u00e1ticos_de_uso", "label": "2. Cen\u00e1rios Pr\u00e1ticos de Uso", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/quickstart.md", "source_location": "L21"}, {"id": "$graphify-root$_specs_002_google_news_extractor_quickstart_cen\u00e1rio_1_river_plate_argentina_espanhol_2_p\u00e1ginas_salvar_em_arquivo", "label": "Cen\u00e1rio 1: River Plate \u2014 Argentina (Espanhol / 2 P\u00e1ginas / Salvar em Arquivo)", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/quickstart.md", "source_location": "L23"}, {"id": "$graphify-root$_specs_002_google_news_extractor_quickstart_cen\u00e1rio_2_cruzeiro_brasil_portugu\u00eas_formatado_no_terminal", "label": "Cen\u00e1rio 2: Cruzeiro \u2014 Brasil (Portugu\u00eas / Formatado no Terminal)", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/quickstart.md", "source_location": "L39"}, {"id": "$graphify-root$_specs_002_google_news_extractor_quickstart_cen\u00e1rio_3_f\u00f3rmula_1_reino_unido_ingl\u00eas", "label": "Cen\u00e1rio 3: F\u00f3rmula 1 \u2014 Reino Unido (Ingl\u00eas)", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/quickstart.md", "source_location": "L47"}, {"id": "$graphify-root$_specs_002_google_news_extractor_quickstart_cen\u00e1rio_4_integra\u00e7\u00e3o_em_pipeline_com_jq_modo_silencioso", "label": "Cen\u00e1rio 4: Integra\u00e7\u00e3o em Pipeline com `jq` (Modo Silencioso)", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/quickstart.md", "source_location": "L55"}, {"id": "$graphify-root$_specs_002_google_news_extractor_quickstart_cen\u00e1rio_5_extra\u00e7\u00e3o_r\u00e1pida_com_links_brutos_sem_resolu\u00e7\u00e3o_de_urls", "label": "Cen\u00e1rio 5: Extra\u00e7\u00e3o R\u00e1pida com Links Brutos (Sem Resolu\u00e7\u00e3o de URLs)", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/quickstart.md", "source_location": "L62"}, {"id": "$graphify-root$_specs_002_google_news_extractor_quickstart_3_valida\u00e7\u00e3o_dos_testes_automatizados_e_linter", "label": "3. Valida\u00e7\u00e3o dos Testes Automatizados e Linter", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/quickstart.md", "source_location": "L69"}], "edges": [{"source": "$graphify-root$_specs_002_google_news_extractor_quickstart_md", "target": "$graphify-root$_specs_002_google_news_extractor_quickstart_quickstart_google_news_headlines_extractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/quickstart.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_quickstart_quickstart_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_quickstart_1_pr\u00e9_requisitos_e_instala\u00e7\u00e3o", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/quickstart.md", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_quickstart_quickstart_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_quickstart_2_cen\u00e1rios_pr\u00e1ticos_de_uso", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/quickstart.md", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_quickstart_2_cen\u00e1rios_pr\u00e1ticos_de_uso", "target": "$graphify-root$_specs_002_google_news_extractor_quickstart_cen\u00e1rio_1_river_plate_argentina_espanhol_2_p\u00e1ginas_salvar_em_arquivo", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/quickstart.md", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_quickstart_2_cen\u00e1rios_pr\u00e1ticos_de_uso", "target": "$graphify-root$_specs_002_google_news_extractor_quickstart_cen\u00e1rio_2_cruzeiro_brasil_portugu\u00eas_formatado_no_terminal", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/quickstart.md", "source_location": "L39", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_quickstart_2_cen\u00e1rios_pr\u00e1ticos_de_uso", "target": "$graphify-root$_specs_002_google_news_extractor_quickstart_cen\u00e1rio_3_f\u00f3rmula_1_reino_unido_ingl\u00eas", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/quickstart.md", "source_location": "L47", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_quickstart_2_cen\u00e1rios_pr\u00e1ticos_de_uso", "target": "$graphify-root$_specs_002_google_news_extractor_quickstart_cen\u00e1rio_4_integra\u00e7\u00e3o_em_pipeline_com_jq_modo_silencioso", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/quickstart.md", "source_location": "L55", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_quickstart_2_cen\u00e1rios_pr\u00e1ticos_de_uso", "target": "$graphify-root$_specs_002_google_news_extractor_quickstart_cen\u00e1rio_5_extra\u00e7\u00e3o_r\u00e1pida_com_links_brutos_sem_resolu\u00e7\u00e3o_de_urls", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/quickstart.md", "source_location": "L62", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_quickstart_quickstart_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_quickstart_3_valida\u00e7\u00e3o_dos_testes_automatizados_e_linter", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/quickstart.md", "source_location": "L69", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/48e2fc3e8a7de40958ac83df18b460bf6fc5e0e23cd5f617a96c5edf8579e219.json b/graphify-out/cache/ast/v0.9.47-s2/48e2fc3e8a7de40958ac83df18b460bf6fc5e0e23cd5f617a96c5edf8579e219.json new file mode 100644 index 0000000..bb06515 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/48e2fc3e8a7de40958ac83df18b460bf6fc5e0e23cd5f617a96c5edf8579e219.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_scripts_extract_google_news_py", "label": "extract_google_news.py", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L1"}, {"id": "$graphify-root$_scripts_extract_google_news_searchquery", "label": "SearchQuery", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L29", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "label": ".__post_init__()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L37", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_searchquery_clean_keyword", "label": ".clean_keyword()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L50", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_searchquery_clean_language", "label": ".clean_language()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L54", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_searchquery_clean_locale", "label": ".clean_locale()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L58", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_newsarticle", "label": "NewsArticle", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L63", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_google_news_newsarticle_to_dict", "label": ".to_dict()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L72", "_callable": true}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/extract_google_news.py"}, {"id": "$graphify-root$_scripts_extract_google_news_extractionresult", "label": "ExtractionResult", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L83", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_google_news_extractionresult_to_dict", "label": ".to_dict()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L94", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "label": "get_hl_gl_ceid()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L106", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "label": "_normalize_text_for_comparison()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L150", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "label": "parse_google_news_rss()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L155", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "label": "_fetch_rss_content()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L206", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_extract_google_news", "label": "extract_google_news()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L250", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_build_parser", "label": "build_parser()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L272", "_callable": true}, {"id": "argumentparser", "label": "ArgumentParser", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/extract_google_news.py"}, {"id": "$graphify-root$_scripts_extract_google_news_main", "label": "main()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L324", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_30", "label": "Value Object com par\u00e2metros de busca validados.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L30"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_64", "label": "Entidade que representa uma not\u00edcia extra\u00edda.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L64"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_84", "label": "Resultado consolidado da extra\u00e7\u00e3o.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L84"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_107", "label": "Mapeia idioma e locale para os par\u00e2metros hl, gl e ceid do Google News.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L107"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_151", "label": "Remove pontua\u00e7\u00e3o e espa\u00e7os extras para compara\u00e7\u00e3o de redund\u00e2ncia.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L151"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_156", "label": "Parseia o XML do RSS do Google News e extrai os itens estruturados.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L156"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_207", "label": "Realiza a requisi\u00e7\u00e3o ao feed RSS utilizando a biblioteca Foxcape como motor\u2026", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L207"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_251", "label": "Orquestra a consulta ao Google News e retorna o resultado consolidado.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L251"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_273", "label": "Cria e configura o parser de argumentos CLI.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L273"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_325", "label": "Ponto de entrada do script CLI.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L325"}], "edges": [{"source": "$graphify-root$_scripts_extract_google_news_py", "target": "argparse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "re", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "urllib_error", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "urllib_parse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "urllib_request", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "dataclasses", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "bs4", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "foxcape", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_searchquery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L29", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_searchquery", "target": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_searchquery", "target": "$graphify-root$_scripts_extract_google_news_searchquery_clean_keyword", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L50", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_searchquery", "target": "$graphify-root$_scripts_extract_google_news_searchquery_clean_language", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L54", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_searchquery", "target": "$graphify-root$_scripts_extract_google_news_searchquery_clean_locale", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L58", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_newsarticle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L63", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_newsarticle", "target": "$graphify-root$_scripts_extract_google_news_newsarticle_to_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L72", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_newsarticle_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L72", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_extractionresult", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L83", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extractionresult", "target": "$graphify-root$_scripts_extract_google_news_extractionresult_to_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L94", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extractionresult_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L94", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L106", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L150", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L155", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "target": "$graphify-root$_scripts_extract_google_news_newsarticle", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L155", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L206", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_extract_google_news", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L250", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_searchquery", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L250", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_extractionresult", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L250", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_build_parser", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L272", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_build_parser", "target": "argumentparser", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L272", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L324", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "target": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L187", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "target": "$graphify-root$_scripts_extract_google_news_newsarticle", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L194", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L255", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L258", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L259", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_extractionresult", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L261", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_main", "target": "$graphify-root$_scripts_extract_google_news_build_parser", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L337", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_main", "target": "$graphify-root$_scripts_extract_google_news_searchquery", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L341", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_main", "target": "$graphify-root$_scripts_extract_google_news_extract_google_news", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L354", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_30", "target": "$graphify-root$_scripts_extract_google_news_searchquery", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L30", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_64", "target": "$graphify-root$_scripts_extract_google_news_newsarticle", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L64", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_84", "target": "$graphify-root$_scripts_extract_google_news_extractionresult", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L84", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_107", "target": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L107", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_151", "target": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L151", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_156", "target": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L156", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_207", "target": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L207", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_251", "target": "$graphify-root$_scripts_extract_google_news_extract_google_news", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L251", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_273", "target": "$graphify-root$_scripts_extract_google_news_build_parser", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L273", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_325", "target": "$graphify-root$_scripts_extract_google_news_main", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L325", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L38", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "callee": "ValueError", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L39", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L41", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "callee": "ValueError", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L42", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "callee": "ValueError", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L47", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_clean_keyword", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L51", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_clean_language", "callee": "lower", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L55", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_clean_language", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L55", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_clean_locale", "callee": "upper", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L59", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_clean_locale", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L59", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_extractionresult_to_dict", "callee": "to_dict", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L102", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "replace", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L110", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "lower", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L110", "receiver": "lang_raw"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "split", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L133", "receiver": "lang_clean"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "upper", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L135", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "upper", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L135", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "upper", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L137", "receiver": "lang_clean"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "upper", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L140", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L140", "receiver": "locale"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L152", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "callee": "lower", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L152", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "callee": "sub", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L152", "receiver": "re"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "BeautifulSoup", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L160", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "BeautifulSoup", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L162", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "find_all", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L164", "receiver": "soup"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "find", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L171", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "find", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L172", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "find", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L173", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "find", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L174", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "get_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L176", "receiver": "title_tag"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "get_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L177", "receiver": "link_tag"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "get_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L178", "receiver": "pubdate_tag"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "get_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L179", "receiver": "desc_tag"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "BeautifulSoup", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L184", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "get_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L185", "receiver": "desc_soup"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "append", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L193", "receiver": "articles"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "FoxcapeConfig", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L211", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "fetch", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L216", "receiver": "Foxcape"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "RuntimeError", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L224", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "RuntimeError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L225"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "OSError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L225"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "TimeoutError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L225"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L225"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "urlopen", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L237", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "decode", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L238", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "read", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L238", "receiver": "response"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "OSError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L242"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "TimeoutError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L243"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "RuntimeError", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L245", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_extract_google_news", "callee": "quote_plus", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L254", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_extract_google_news", "callee": "isoformat", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L267", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_extract_google_news", "callee": "now", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L267", "receiver": "datetime"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "ArgumentParser", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L274", "receiver": "argparse"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L278", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L286", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L294", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L301", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "int", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_google_news.py", "source_location": "L305"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L309", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L316", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "reconfigure", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L328", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "reconfigure", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L333", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "parse_args", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L340", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L347"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L348", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "int", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_google_news.py", "source_location": "L351"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "dumps", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L355", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "to_dict", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L356", "receiver": "result"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "Path", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L362", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "mkdir", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L363", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "write_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L364", "receiver": "out_path"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L366", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L370", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L373", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/57a0a3eb1fd6d7afbe394be62e681a02d7ef26124f4142b9d8b72ea95259a34b.json b/graphify-out/cache/ast/v0.9.47-s2/57a0a3eb1fd6d7afbe394be62e681a02d7ef26124f4142b9d8b72ea95259a34b.json new file mode 100644 index 0000000..c02016b --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/57a0a3eb1fd6d7afbe394be62e681a02d7ef26124f4142b9d8b72ea95259a34b.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_specs_002_google_news_extractor_plan_md", "label": "plan.md", "file_type": "document", "node_kind": "page", "source_file": "specs/002-google-news-extractor/plan.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_002_google_news_extractor_plan_implementation_plan_google_news_headlines_extractor", "label": "Implementation Plan: Google News Headlines Extractor", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/plan.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_002_google_news_extractor_plan_summary", "label": "Summary", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/plan.md", "source_location": "L7"}, {"id": "$graphify-root$_specs_002_google_news_extractor_plan_technical_context", "label": "Technical Context", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/plan.md", "source_location": "L11"}, {"id": "$graphify-root$_specs_002_google_news_extractor_plan_architecture_pipeline", "label": "Architecture & Pipeline", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/plan.md", "source_location": "L28"}, {"id": "$graphify-root$_specs_002_google_news_extractor_plan_project_structure", "label": "Project Structure", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/plan.md", "source_location": "L45"}, {"id": "$graphify-root$_specs_002_google_news_extractor_plan_documentation_this_feature", "label": "Documentation (this feature)", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/plan.md", "source_location": "L47"}, {"id": "$graphify-root$_specs_002_google_news_extractor_plan_source_code", "label": "Source Code", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/plan.md", "source_location": "L63"}], "edges": [{"source": "$graphify-root$_specs_002_google_news_extractor_plan_md", "target": "$graphify-root$_specs_002_google_news_extractor_plan_implementation_plan_google_news_headlines_extractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/plan.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_plan_md", "target": "$graphify-root$_specs_002_google_news_extractor_spec_md", "relation": "references", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/plan.md", "source_location": "L3", "weight": 1.0, "target_file": "$graphify-root$/specs/002-google-news-extractor/spec.md"}, {"source": "$graphify-root$_specs_002_google_news_extractor_plan_implementation_plan_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_plan_summary", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/plan.md", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_plan_implementation_plan_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_plan_technical_context", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/plan.md", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_plan_implementation_plan_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_plan_architecture_pipeline", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/plan.md", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_plan_implementation_plan_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_plan_project_structure", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/plan.md", "source_location": "L45", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_plan_project_structure", "target": "$graphify-root$_specs_002_google_news_extractor_plan_documentation_this_feature", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/plan.md", "source_location": "L47", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_plan_project_structure", "target": "$graphify-root$_specs_002_google_news_extractor_plan_source_code", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/plan.md", "source_location": "L63", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/5daaacf1ae38b390fecd514996fb7150aea886c3c763e400ac5af36d2d9e0f6a.json b/graphify-out/cache/ast/v0.9.47-s2/5daaacf1ae38b390fecd514996fb7150aea886c3c763e400ac5af36d2d9e0f6a.json new file mode 100644 index 0000000..ddceea4 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/5daaacf1ae38b390fecd514996fb7150aea886c3c763e400ac5af36d2d9e0f6a.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_specs_002_google_news_extractor_research_md", "label": "research.md", "file_type": "document", "node_kind": "page", "source_file": "specs/002-google-news-extractor/research.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_002_google_news_extractor_research_research_google_news_headlines_extractor", "label": "Research: Google News Headlines Extractor", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/research.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_002_google_news_extractor_research_1_technical_decisions_tradeoffs", "label": "1. Technical Decisions & Tradeoffs", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/research.md", "source_location": "L3"}, {"id": "$graphify-root$_specs_002_google_news_extractor_research_decision_1_motor_de_requisi\u00e7\u00e3o_e_scraping_com_foxcape", "label": "Decision 1: Motor de Requisi\u00e7\u00e3o e Scraping com `foxcape`", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/research.md", "source_location": "L5"}, {"id": "$graphify-root$_specs_002_google_news_extractor_research_decision_2_endpoint_rss_do_google_news_vs_scraping_de_dom", "label": "Decision 2: Endpoint RSS do Google News vs. Scraping de DOM", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/research.md", "source_location": "L13"}, {"id": "$graphify-root$_specs_002_google_news_extractor_research_decision_3_mapeamento_de_idioma_e_locale_hl_gl_ceid", "label": "Decision 3: Mapeamento de Idioma e Locale (`hl`, `gl`, `ceid`)", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/research.md", "source_location": "L19"}, {"id": "$graphify-root$_specs_002_google_news_extractor_research_decision_4_interface_cli_e_sa\u00edda_json_para_stdout", "label": "Decision 4: Interface CLI e Sa\u00edda JSON para Stdout", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/research.md", "source_location": "L30"}, {"id": "$graphify-root$_specs_002_google_news_extractor_research_decision_5_limpeza_de_tags_html_e_deduplica\u00e7\u00e3o", "label": "Decision 5: Limpeza de Tags HTML e Deduplica\u00e7\u00e3o", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/research.md", "source_location": "L36"}], "edges": [{"source": "$graphify-root$_specs_002_google_news_extractor_research_md", "target": "$graphify-root$_specs_002_google_news_extractor_research_research_google_news_headlines_extractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/research.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_research_research_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_research_1_technical_decisions_tradeoffs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/research.md", "source_location": "L3", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_research_1_technical_decisions_tradeoffs", "target": "$graphify-root$_specs_002_google_news_extractor_research_decision_1_motor_de_requisi\u00e7\u00e3o_e_scraping_com_foxcape", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/research.md", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_research_1_technical_decisions_tradeoffs", "target": "$graphify-root$_specs_002_google_news_extractor_research_decision_2_endpoint_rss_do_google_news_vs_scraping_de_dom", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/research.md", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_research_1_technical_decisions_tradeoffs", "target": "$graphify-root$_specs_002_google_news_extractor_research_decision_3_mapeamento_de_idioma_e_locale_hl_gl_ceid", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/research.md", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_research_1_technical_decisions_tradeoffs", "target": "$graphify-root$_specs_002_google_news_extractor_research_decision_4_interface_cli_e_sa\u00edda_json_para_stdout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/research.md", "source_location": "L30", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_research_1_technical_decisions_tradeoffs", "target": "$graphify-root$_specs_002_google_news_extractor_research_decision_5_limpeza_de_tags_html_e_deduplica\u00e7\u00e3o", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/research.md", "source_location": "L36", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/60084a23d0cb5e7f2ae4dcd86849fc83dca47b865f3429c24256209513a78691.json b/graphify-out/cache/ast/v0.9.47-s2/60084a23d0cb5e7f2ae4dcd86849fc83dca47b865f3429c24256209513a78691.json new file mode 100644 index 0000000..6210b59 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/60084a23d0cb5e7f2ae4dcd86849fc83dca47b865f3429c24256209513a78691.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_test_extract_google_news_py", "label": "test_extract_google_news.py", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L1"}, {"id": "fixture", "label": "fixture", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_extract_google_news.py"}, {"id": "$graphify-root$_tests_test_extract_google_news_sample_rss_xml", "label": "sample_rss_xml()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L32", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "label": "test_get_hl_gl_ceid_default_mappings()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L37", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", "label": "test_get_hl_gl_ceid_with_custom_locale()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L60", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_dynamic_fallback", "label": "test_get_hl_gl_ceid_dynamic_fallback()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L78", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "label": "test_search_query_validation()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L86", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", "label": "test_parse_google_news_rss_with_fixture()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L111", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_fallback", "label": "test_resolve_article_url_fallback()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L138", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_success", "label": "test_resolve_article_url_success()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L150", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_resolve_articles_urls_batch", "label": "test_resolve_articles_urls_batch()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L163", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "label": "test_extract_google_news_orchestration_mocked()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L188", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "label": "test_cli_execution_stdout()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L217", "_callable": true}, {"id": "capturefixture", "label": "CaptureFixture", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_extract_google_news.py"}, {"id": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "label": "test_cli_execution_file_output()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L242", "_callable": true}, {"id": "path", "label": "Path", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_extract_google_news.py"}, {"id": "$graphify-root$_tests_test_extract_google_news_test_cli_empty_query_error", "label": "test_cli_empty_query_error()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L263", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "label": "test_cli_network_error_handling()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L272", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_e2e_resolve_real_google_news_url", "label": "test_e2e_resolve_real_google_news_url()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L291", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_e2e_extract_google_news_live_pipeline", "label": "test_e2e_extract_google_news_live_pipeline()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L312", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_e2e_cli_live_file_output", "label": "test_e2e_cli_live_file_output()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L328", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_1", "label": "Testes unit\u00e1rios e de integra\u00e7\u00e3o para o Extrator de Manchetes do Google News.\u2026", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_33", "label": "Fixture que fornece o conte\u00fado do XML de exemplo para testes offline.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L33"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_38", "label": "Valida o mapeamento padr\u00e3o de idiomas para pares (hl, gl, ceid).", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L38"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_61", "label": "Valida a sobrescrita geogr\u00e1fica quando o argumento locale \u00e9 especificado.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L61"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_79", "label": "Valida fallback din\u00e2mico para idiomas regionais n\u00e3o listados explicitamente.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L79"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_87", "label": "Valida as regras de neg\u00f3cio e limites de SearchQuery.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L87"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_112", "label": "Valida o parsing do feed RSS, higieniza\u00e7\u00e3o de tags HTML e deduplica\u00e7\u00e3o.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L112"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_139", "label": "Valida fallback gracioso de URL quando n\u00e3o \u00e9 link do Google News ou em erro.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L139"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_151", "label": "Valida resolu\u00e7\u00e3o bem-sucedida de URL do Google News para o portal destino.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L151"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_164", "label": "Valida a resolu\u00e7\u00e3o concorrente em lote de uma lista de NewsArticle.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L164"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_189", "label": "Valida a consolida\u00e7\u00e3o do ExtractionResult a partir da busca mockada com URLs\u2026", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L189"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_218", "label": "Valida execu\u00e7\u00e3o padr\u00e3o do CLI com sa\u00edda JSON no stdout.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L218"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_243", "label": "Valida grava\u00e7\u00e3o em arquivo com cria\u00e7\u00e3o autom\u00e1tica de diret\u00f3rios pais.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L243"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_264", "label": "Valida tratamento de erro e c\u00f3digo de sa\u00edda 1 para par\u00e2metro vazio.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L264"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_273", "label": "Valida tratamento de erro e c\u00f3digo de sa\u00edda 2 para falhas de rede.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L273"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_292", "label": "Valida E2E que o decodificador resolve uma URL real do Google News para o\u2026", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L292"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_313", "label": "Valida E2E o fluxo completo de busca, parsing e resolu\u00e7\u00e3o de URLs reais ao vivo.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L313"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_329", "label": "Valida E2E a execu\u00e7\u00e3o do CLI com sa\u00edda real em arquivo e URLs decodificadas.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L329"}], "edges": [{"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "unittest_mock", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "pytest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "scripts_extract_google_news", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_sample_rss_xml", "target": "fixture", "relation": "references", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L31", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_sample_rss_xml", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L32", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L60", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_dynamic_fallback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L78", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L86", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L111", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_fallback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L138", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_success", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L150", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_resolve_articles_urls_batch", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L163", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L188", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L217", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "target": "capturefixture", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L217", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "target": "capturefixture", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L217", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L242", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L242", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_empty_query_error", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L263", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_test_cli_empty_query_error", "target": "capturefixture", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L263", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_test_cli_empty_query_error", "target": "capturefixture", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L263", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L272", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "target": "capturefixture", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L272", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "target": "capturefixture", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L272", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_e2e_resolve_real_google_news_url", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L291", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_e2e_extract_google_news_live_pipeline", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L312", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_e2e_cli_live_file_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L328", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_test_e2e_cli_live_file_output", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L328", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_1", "target": "$graphify-root$_tests_test_extract_google_news_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_33", "target": "$graphify-root$_tests_test_extract_google_news_sample_rss_xml", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L33", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_38", "target": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L38", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_61", "target": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L61", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_79", "target": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_dynamic_fallback", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L79", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_87", "target": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L87", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_112", "target": "$graphify-root$_tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L112", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_139", "target": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_fallback", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L139", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_151", "target": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_success", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L151", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_164", "target": "$graphify-root$_tests_test_extract_google_news_test_resolve_articles_urls_batch", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L164", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_189", "target": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L189", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_218", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L218", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_243", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L243", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_264", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_empty_query_error", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L264", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_273", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L273", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_292", "target": "$graphify-root$_tests_test_extract_google_news_test_e2e_resolve_real_google_news_url", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L292", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_313", "target": "$graphify-root$_tests_test_extract_google_news_test_e2e_extract_google_news_live_pipeline", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L313", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_329", "target": "$graphify-root$_tests_test_extract_google_news_test_e2e_cli_live_file_output", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L329", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_extract_google_news_sample_rss_xml", "callee": "read_text", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L34", "receiver": "FIXTURE_PATH"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L39", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L44", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L49", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L54", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L62", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L67", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L72", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_dynamic_fallback", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L80", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "SearchQuery", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L89", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "raises", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L96", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_google_news.py", "source_location": "L96"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "SearchQuery", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L97", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "raises", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L100", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_google_news.py", "source_location": "L100"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "SearchQuery", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L101", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "raises", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L104", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_google_news.py", "source_location": "L104"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "SearchQuery", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L105", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "raises", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L107", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_google_news.py", "source_location": "L107"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "SearchQuery", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L108", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", "callee": "parse_google_news_rss", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L113", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", "callee": "startswith", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L121", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_fallback", "callee": "resolve_article_url", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L141", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_fallback", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L143", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_fallback", "callee": "resolve_article_url", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L147", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_success", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L155", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_success", "callee": "resolve_article_url", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L159", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_resolve_articles_urls_batch", "callee": "NewsArticle", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L166", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_resolve_articles_urls_batch", "callee": "NewsArticle", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L171", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_resolve_articles_urls_batch", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L178", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_resolve_articles_urls_batch", "callee": "split", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L180", "receiver": "u"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_resolve_articles_urls_batch", "callee": "resolve_articles_urls", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L182", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "callee": "SearchQuery", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L190", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L195", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L199", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "callee": "extract_google_news", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L204", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "callee": "ExtractionResult", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_google_news.py", "source_location": "L206"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "callee": "startswith", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L214", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L220", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L224", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "callee": "main", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L228", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "callee": "readouterr", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L233", "receiver": "capsys"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "callee": "loads", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L234", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L247", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L251", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "callee": "main", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L255", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "callee": "exists", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L258", "receiver": "out_file"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "callee": "loads", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L259", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "callee": "read_text", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L259", "receiver": "out_file"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_empty_query_error", "callee": "main", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L265", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_empty_query_error", "callee": "readouterr", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L268", "receiver": "capsys"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L274", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "callee": "RuntimeError", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L276", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "callee": "main", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L278", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "callee": "readouterr", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L281", "receiver": "capsys"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_e2e_resolve_real_google_news_url", "callee": "resolve_article_url", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L303", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_e2e_resolve_real_google_news_url", "callee": "startswith", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L308", "receiver": "resolved_url"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_e2e_extract_google_news_live_pipeline", "callee": "SearchQuery", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L314", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_e2e_extract_google_news_live_pipeline", "callee": "extract_google_news", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L315", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_e2e_extract_google_news_live_pipeline", "callee": "ExtractionResult", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_google_news.py", "source_location": "L317"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_e2e_extract_google_news_live_pipeline", "callee": "startswith", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L323", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_e2e_cli_live_file_output", "callee": "main", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L331", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_e2e_cli_live_file_output", "callee": "exists", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L345", "receiver": "out_file"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_e2e_cli_live_file_output", "callee": "loads", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L347", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_e2e_cli_live_file_output", "callee": "read_text", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L347", "receiver": "out_file"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_e2e_cli_live_file_output", "callee": "startswith", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L354", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/632d56d622867a9d615eb5d3500864d3ad3b5a1dce14b006ada8c1fbcd6a744c.json b/graphify-out/cache/ast/v0.9.47-s2/632d56d622867a9d615eb5d3500864d3ad3b5a1dce14b006ada8c1fbcd6a744c.json new file mode 100644 index 0000000..2a2659d --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/632d56d622867a9d615eb5d3500864d3ad3b5a1dce14b006ada8c1fbcd6a744c.json @@ -0,0 +1 @@ +{"nodes": [{"id": "pkg_text_nlp_classifier", "label": "text-nlp-classifier", "file_type": "code", "type": "package", "ecosystem": "python", "source_file": "pyproject.toml", "source_location": "L1", "version": "0.1.0"}], "edges": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/6b9e3c10becd7b8fa633e409e9a3298ff4b2903dfd5194054c8e41dd0c0c5f23.json b/graphify-out/cache/ast/v0.9.47-s2/6b9e3c10becd7b8fa633e409e9a3298ff4b2903dfd5194054c8e41dd0c0c5f23.json new file mode 100644 index 0000000..0c65a02 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/6b9e3c10becd7b8fa633e409e9a3298ff4b2903dfd5194054c8e41dd0c0c5f23.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_specs_002_google_news_extractor_contracts_cli_contract_md", "label": "cli_contract.md", "file_type": "document", "node_kind": "page", "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_002_google_news_extractor_contracts_cli_contract_cli_contract_google_news_headlines_extractor", "label": "CLI Contract: Google News Headlines Extractor", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_002_google_news_extractor_contracts_cli_contract_1_comando_e_argumentos", "label": "1. Comando e Argumentos", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", "source_location": "L3"}, {"id": "$graphify-root$_specs_002_google_news_extractor_contracts_cli_contract_sintaxe", "label": "Sintaxe", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", "source_location": "L5"}, {"id": "$graphify-root$_specs_002_google_news_extractor_contracts_cli_contract_argumentos_de_linha_de_comando", "label": "Argumentos de Linha de Comando", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", "source_location": "L10"}, {"id": "$graphify-root$_specs_002_google_news_extractor_contracts_cli_contract_2_c\u00f3digos_de_sa\u00edda_exit_codes", "label": "2. C\u00f3digos de Sa\u00edda (Exit Codes)", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", "source_location": "L25"}, {"id": "$graphify-root$_specs_002_google_news_extractor_contracts_cli_contract_3_protocolo_de_streams_stdout_stderr", "label": "3. Protocolo de Streams (Stdout / Stderr)", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", "source_location": "L35"}], "edges": [{"source": "$graphify-root$_specs_002_google_news_extractor_contracts_cli_contract_md", "target": "$graphify-root$_specs_002_google_news_extractor_contracts_cli_contract_cli_contract_google_news_headlines_extractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_contracts_cli_contract_cli_contract_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_contracts_cli_contract_1_comando_e_argumentos", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", "source_location": "L3", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_contracts_cli_contract_1_comando_e_argumentos", "target": "$graphify-root$_specs_002_google_news_extractor_contracts_cli_contract_sintaxe", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_contracts_cli_contract_1_comando_e_argumentos", "target": "$graphify-root$_specs_002_google_news_extractor_contracts_cli_contract_argumentos_de_linha_de_comando", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_contracts_cli_contract_cli_contract_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_contracts_cli_contract_2_c\u00f3digos_de_sa\u00edda_exit_codes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_contracts_cli_contract_cli_contract_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_contracts_cli_contract_3_protocolo_de_streams_stdout_stderr", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", "source_location": "L35", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/6e21eba445b58b4993c56ccfb6d1ec43858c6af6917306dce21c222f7cb25ea0.json b/graphify-out/cache/ast/v0.9.47-s2/6e21eba445b58b4993c56ccfb6d1ec43858c6af6917306dce21c222f7cb25ea0.json new file mode 100644 index 0000000..3374f6a --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/6e21eba445b58b4993c56ccfb6d1ec43858c6af6917306dce21c222f7cb25ea0.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_readme_md", "label": "README.md", "file_type": "document", "node_kind": "page", "source_file": "README.md", "source_location": "L1"}, {"id": "$graphify-root$_readme_textnlpclassifierapp", "label": "\ud83e\udde0 TextNLPClassifierApp", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L1"}, {"id": "$graphify-root$_readme_tabela_de_conte\u00fados", "label": "\ud83d\udcd1 Tabela de Conte\u00fados", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L13"}, {"id": "$graphify-root$_readme_vis\u00e3o_geral", "label": "\ud83c\udf1f Vis\u00e3o Geral", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L34"}, {"id": "$graphify-root$_readme_instala\u00e7\u00e3o_e_setup", "label": "\u2699\ufe0f Instala\u00e7\u00e3o e Setup", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L43"}, {"id": "$graphify-root$_readme_1_clonar_o_reposit\u00f3rio_e_criar_ambiente_virtual", "label": "1. Clonar o Reposit\u00f3rio e Criar Ambiente Virtual", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L45"}, {"id": "$graphify-root$_readme_2_instalar_depend\u00eancias", "label": "2. Instalar Depend\u00eancias", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L58"}, {"id": "$graphify-root$_readme_3_baixar_bin\u00e1rios_do_navegador_stealth_camoufox", "label": "3. Baixar Bin\u00e1rios do Navegador Stealth (Camoufox)", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L64"}, {"id": "$graphify-root$_readme_1_classificador_de_conte\u00fado_e_iner\u00eancia_nlp_llm_ecp", "label": "1. \ud83e\udde0 Classificador de Conte\u00fado e Iner\u00eancia (NLP / LLM / ECP)", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L74"}, {"id": "$graphify-root$_readme_o_que_\u00e9_e_como_funciona", "label": "O que \u00e9 e Como Funciona", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L76"}, {"id": "$graphify-root$_readme_arquitetura_de_classifica\u00e7\u00e3o_em_3_tiers", "label": "Arquitetura de Classifica\u00e7\u00e3o em 3 Tiers", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L82"}, {"id": "$graphify-root$_readme_categorias_de_decis\u00e3o", "label": "Categorias de Decis\u00e3o", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L103"}, {"id": "$graphify-root$_readme_formato_do_ecp_snapshot_e_markdown", "label": "Formato do ECP Snapshot e Markdown", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L112"}, {"id": "$graphify-root$_readme_exemplo_de_ecp_snapshot_ecp_sample_json", "label": "Exemplo de ECP Snapshot (`ecp_sample.json`):", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L114"}, {"id": "$graphify-root$_readme_exemplos_de_uso_cli", "label": "Exemplos de Uso CLI", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L136"}, {"id": "$graphify-root$_readme_2_extrator_de_manchetes_do_google_news", "label": "2. \ud83d\udcf0 Extrator de Manchetes do Google News", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L151"}, {"id": "$graphify-root$_readme_o_que_\u00e9_e_como_funciona_153", "label": "O que \u00e9 e Como Funciona", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L153"}, {"id": "$graphify-root$_readme_diferenciais_t\u00e9cnicos", "label": "Diferenciais T\u00e9cnicos", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L157"}, {"id": "$graphify-root$_readme_argumentos_e_flags_de_linha_de_comando", "label": "Argumentos e Flags de Linha de Comando", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L165"}, {"id": "$graphify-root$_readme_exemplos_pr\u00e1ticos_de_uso", "label": "Exemplos Pr\u00e1ticos de Uso", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L178"}, {"id": "$graphify-root$_readme_1_river_plate_argentina_espanhol_2_p\u00e1ginas_salvar_em_arquivo", "label": "1. River Plate (Argentina / Espanhol / 2 P\u00e1ginas / Salvar em Arquivo)", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L180"}, {"id": "$graphify-root$_readme_2_cruzeiro_brasil_portugu\u00eas_formatado_no_terminal", "label": "2. Cruzeiro (Brasil / Portugu\u00eas / Formatado no Terminal)", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L194"}, {"id": "$graphify-root$_readme_3_f\u00f3rmula_1_inglaterra_ingl\u00eas", "label": "3. F\u00f3rmula 1 (Inglaterra / Ingl\u00eas)", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L199"}, {"id": "$graphify-root$_readme_4_filtragem_com_jq_em_modo_silencioso", "label": "4. Filtragem com `jq` em Modo Silencioso", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L204"}, {"id": "$graphify-root$_readme_estrutura_do_projeto", "label": "\ud83d\udcc1 Estrutura do Projeto", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L211"}, {"id": "$graphify-root$_readme_testes_e_qualidade_de_c\u00f3digo", "label": "\ud83e\uddea Testes e Qualidade de C\u00f3digo", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L238"}, {"id": "$graphify-root$_readme_licen\u00e7a", "label": "\ud83d\udcc4 Licen\u00e7a", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L259"}], "edges": [{"source": "$graphify-root$_readme_md", "target": "$graphify-root$_readme_textnlpclassifierapp", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_readme_textnlpclassifierapp", "target": "$graphify-root$_readme_tabela_de_conte\u00fados", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_readme_textnlpclassifierapp", "target": "$graphify-root$_readme_vis\u00e3o_geral", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L34", "weight": 1.0}, {"source": "$graphify-root$_readme_textnlpclassifierapp", "target": "$graphify-root$_readme_instala\u00e7\u00e3o_e_setup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L43", "weight": 1.0}, {"source": "$graphify-root$_readme_instala\u00e7\u00e3o_e_setup", "target": "$graphify-root$_readme_1_clonar_o_reposit\u00f3rio_e_criar_ambiente_virtual", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L45", "weight": 1.0}, {"source": "$graphify-root$_readme_instala\u00e7\u00e3o_e_setup", "target": "$graphify-root$_readme_2_instalar_depend\u00eancias", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L58", "weight": 1.0}, {"source": "$graphify-root$_readme_instala\u00e7\u00e3o_e_setup", "target": "$graphify-root$_readme_3_baixar_bin\u00e1rios_do_navegador_stealth_camoufox", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L64", "weight": 1.0}, {"source": "$graphify-root$_readme_textnlpclassifierapp", "target": "$graphify-root$_readme_1_classificador_de_conte\u00fado_e_iner\u00eancia_nlp_llm_ecp", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L74", "weight": 1.0}, {"source": "$graphify-root$_readme_1_classificador_de_conte\u00fado_e_iner\u00eancia_nlp_llm_ecp", "target": "$graphify-root$_readme_o_que_\u00e9_e_como_funciona", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L76", "weight": 1.0}, {"source": "$graphify-root$_readme_1_classificador_de_conte\u00fado_e_iner\u00eancia_nlp_llm_ecp", "target": "$graphify-root$_readme_arquitetura_de_classifica\u00e7\u00e3o_em_3_tiers", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L82", "weight": 1.0}, {"source": "$graphify-root$_readme_1_classificador_de_conte\u00fado_e_iner\u00eancia_nlp_llm_ecp", "target": "$graphify-root$_readme_categorias_de_decis\u00e3o", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L103", "weight": 1.0}, {"source": "$graphify-root$_readme_1_classificador_de_conte\u00fado_e_iner\u00eancia_nlp_llm_ecp", "target": "$graphify-root$_readme_formato_do_ecp_snapshot_e_markdown", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L112", "weight": 1.0}, {"source": "$graphify-root$_readme_formato_do_ecp_snapshot_e_markdown", "target": "$graphify-root$_readme_exemplo_de_ecp_snapshot_ecp_sample_json", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L114", "weight": 1.0}, {"source": "$graphify-root$_readme_1_classificador_de_conte\u00fado_e_iner\u00eancia_nlp_llm_ecp", "target": "$graphify-root$_readme_exemplos_de_uso_cli", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L136", "weight": 1.0}, {"source": "$graphify-root$_readme_textnlpclassifierapp", "target": "$graphify-root$_readme_2_extrator_de_manchetes_do_google_news", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L151", "weight": 1.0}, {"source": "$graphify-root$_readme_2_extrator_de_manchetes_do_google_news", "target": "$graphify-root$_readme_o_que_\u00e9_e_como_funciona_153", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L153", "weight": 1.0}, {"source": "$graphify-root$_readme_2_extrator_de_manchetes_do_google_news", "target": "$graphify-root$_readme_diferenciais_t\u00e9cnicos", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L157", "weight": 1.0}, {"source": "$graphify-root$_readme_2_extrator_de_manchetes_do_google_news", "target": "$graphify-root$_readme_argumentos_e_flags_de_linha_de_comando", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L165", "weight": 1.0}, {"source": "$graphify-root$_readme_2_extrator_de_manchetes_do_google_news", "target": "$graphify-root$_readme_exemplos_pr\u00e1ticos_de_uso", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L178", "weight": 1.0}, {"source": "$graphify-root$_readme_exemplos_pr\u00e1ticos_de_uso", "target": "$graphify-root$_readme_1_river_plate_argentina_espanhol_2_p\u00e1ginas_salvar_em_arquivo", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L180", "weight": 1.0}, {"source": "$graphify-root$_readme_exemplos_pr\u00e1ticos_de_uso", "target": "$graphify-root$_readme_2_cruzeiro_brasil_portugu\u00eas_formatado_no_terminal", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L194", "weight": 1.0}, {"source": "$graphify-root$_readme_exemplos_pr\u00e1ticos_de_uso", "target": "$graphify-root$_readme_3_f\u00f3rmula_1_inglaterra_ingl\u00eas", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L199", "weight": 1.0}, {"source": "$graphify-root$_readme_exemplos_pr\u00e1ticos_de_uso", "target": "$graphify-root$_readme_4_filtragem_com_jq_em_modo_silencioso", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L204", "weight": 1.0}, {"source": "$graphify-root$_readme_textnlpclassifierapp", "target": "$graphify-root$_readme_estrutura_do_projeto", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L211", "weight": 1.0}, {"source": "$graphify-root$_readme_textnlpclassifierapp", "target": "$graphify-root$_readme_testes_e_qualidade_de_c\u00f3digo", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L238", "weight": 1.0}, {"source": "$graphify-root$_readme_textnlpclassifierapp", "target": "$graphify-root$_readme_licen\u00e7a", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L259", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/6eeb131ccc266f515693b75c184bd25446c9ec6613e7f2e61249c1543b6f7295.json b/graphify-out/cache/ast/v0.9.47-s2/6eeb131ccc266f515693b75c184bd25446c9ec6613e7f2e61249c1543b6f7295.json new file mode 100644 index 0000000..68f9199 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/6eeb131ccc266f515693b75c184bd25446c9ec6613e7f2e61249c1543b6f7295.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_scripts_extract_google_news_py", "label": "extract_google_news.py", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L1"}, {"id": "$graphify-root$_scripts_extract_google_news_searchquery", "label": "SearchQuery", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L32", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "label": ".__post_init__()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L40", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_searchquery_clean_keyword", "label": ".clean_keyword()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L53", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_searchquery_clean_language", "label": ".clean_language()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L57", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_searchquery_clean_locale", "label": ".clean_locale()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L61", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_newsarticle", "label": "NewsArticle", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L66", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_google_news_newsarticle_to_dict", "label": ".to_dict()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L75", "_callable": true}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/extract_google_news.py"}, {"id": "$graphify-root$_scripts_extract_google_news_extractionresult", "label": "ExtractionResult", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L86", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_google_news_extractionresult_to_dict", "label": ".to_dict()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L97", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "label": "get_hl_gl_ceid()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L109", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "label": "_normalize_text_for_comparison()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L153", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "label": "parse_google_news_rss()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L158", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_resolve_article_url", "label": "resolve_article_url()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L209", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_resolve_articles_urls", "label": "resolve_articles_urls()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L222", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "label": "_fetch_rss_content()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L255", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_extract_google_news", "label": "extract_google_news()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L299", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_build_parser", "label": "build_parser()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L338", "_callable": true}, {"id": "argumentparser", "label": "ArgumentParser", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/extract_google_news.py"}, {"id": "$graphify-root$_scripts_extract_google_news_main", "label": "main()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L405", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_33", "label": "Value Object com par\u00e2metros de busca validados.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L33"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_67", "label": "Entidade que representa uma not\u00edcia extra\u00edda.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L67"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_87", "label": "Resultado consolidado da extra\u00e7\u00e3o.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L87"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_110", "label": "Mapeia idioma e locale para os par\u00e2metros hl, gl e ceid do Google News.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L110"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_154", "label": "Remove pontua\u00e7\u00e3o e espa\u00e7os extras para compara\u00e7\u00e3o de redund\u00e2ncia.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L154"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_159", "label": "Parseia o XML do RSS do Google News e extrai os itens estruturados.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L159"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_210", "label": "Resolve a URL intermedi\u00e1ria do Google News para a URL real do ve\u00edculo.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L210"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_225", "label": "Resolve em paralelo as URLs intermedi\u00e1rias do Google News para os links finais\u2026", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L225"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_256", "label": "Realiza a requisi\u00e7\u00e3o ao feed RSS utilizando a biblioteca Foxcape como motor\u2026", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L256"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_302", "label": "Orquestra a consulta ao Google News e retorna o resultado consolidado com URLs\u2026", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L302"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_339", "label": "Cria e configura o parser de argumentos CLI.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L339"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_406", "label": "Ponto de entrada do script CLI.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L406"}], "edges": [{"source": "$graphify-root$_scripts_extract_google_news_py", "target": "argparse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "concurrent_futures", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "re", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "urllib_error", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "urllib_parse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "urllib_request", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "dataclasses", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "bs4", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L26", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "foxcape", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "googlenewsdecoder", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_searchquery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L32", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_searchquery", "target": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L40", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_searchquery", "target": "$graphify-root$_scripts_extract_google_news_searchquery_clean_keyword", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L53", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_searchquery", "target": "$graphify-root$_scripts_extract_google_news_searchquery_clean_language", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L57", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_searchquery", "target": "$graphify-root$_scripts_extract_google_news_searchquery_clean_locale", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L61", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_newsarticle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L66", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_newsarticle", "target": "$graphify-root$_scripts_extract_google_news_newsarticle_to_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L75", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_newsarticle_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L75", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_extractionresult", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L86", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extractionresult", "target": "$graphify-root$_scripts_extract_google_news_extractionresult_to_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L97", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extractionresult_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L97", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L109", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L153", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L158", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "target": "$graphify-root$_scripts_extract_google_news_newsarticle", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L158", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_resolve_article_url", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L209", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_resolve_articles_urls", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L222", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_resolve_articles_urls", "target": "$graphify-root$_scripts_extract_google_news_newsarticle", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L222", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_resolve_articles_urls", "target": "$graphify-root$_scripts_extract_google_news_newsarticle", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L222", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L255", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_extract_google_news", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L299", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_searchquery", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L299", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_extractionresult", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L299", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_build_parser", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L338", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_build_parser", "target": "argumentparser", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L338", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L405", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "target": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L190", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "target": "$graphify-root$_scripts_extract_google_news_newsarticle", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L197", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L307", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L316", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L320", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_resolve_articles_urls", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L325", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_extractionresult", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L327", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_main", "target": "$graphify-root$_scripts_extract_google_news_build_parser", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L418", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_main", "target": "$graphify-root$_scripts_extract_google_news_searchquery", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L422", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_main", "target": "$graphify-root$_scripts_extract_google_news_extract_google_news", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L437", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_33", "target": "$graphify-root$_scripts_extract_google_news_searchquery", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L33", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_67", "target": "$graphify-root$_scripts_extract_google_news_newsarticle", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L67", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_87", "target": "$graphify-root$_scripts_extract_google_news_extractionresult", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L87", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_110", "target": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L110", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_154", "target": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L154", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_159", "target": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L159", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_210", "target": "$graphify-root$_scripts_extract_google_news_resolve_article_url", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L210", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_225", "target": "$graphify-root$_scripts_extract_google_news_resolve_articles_urls", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L225", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_256", "target": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L256", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_302", "target": "$graphify-root$_scripts_extract_google_news_extract_google_news", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L302", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_339", "target": "$graphify-root$_scripts_extract_google_news_build_parser", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L339", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_406", "target": "$graphify-root$_scripts_extract_google_news_main", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L406", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L41", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "callee": "ValueError", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L42", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L44", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "callee": "ValueError", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L45", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "callee": "ValueError", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L50", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_clean_keyword", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L54", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_clean_language", "callee": "lower", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L58", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_clean_language", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L58", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_clean_locale", "callee": "upper", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L62", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_clean_locale", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L62", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_extractionresult_to_dict", "callee": "to_dict", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L105", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "replace", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L113", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "lower", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L113", "receiver": "lang_raw"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "split", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L136", "receiver": "lang_clean"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "upper", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L138", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "upper", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L138", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "upper", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L140", "receiver": "lang_clean"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "upper", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L143", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L143", "receiver": "locale"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L155", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "callee": "lower", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L155", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "callee": "sub", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L155", "receiver": "re"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "BeautifulSoup", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L163", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "BeautifulSoup", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L165", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "find_all", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L167", "receiver": "soup"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "find", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L174", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "find", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L175", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "find", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L176", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "find", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L177", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "get_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L179", "receiver": "title_tag"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "get_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L180", "receiver": "link_tag"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "get_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L181", "receiver": "pubdate_tag"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "get_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L182", "receiver": "desc_tag"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "BeautifulSoup", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L187", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "get_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L188", "receiver": "desc_soup"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "append", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L196", "receiver": "articles"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_resolve_article_url", "callee": "gnewsdecoder", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L214", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_resolve_article_url", "callee": "dict", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_google_news.py", "source_location": "L215"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_resolve_article_url", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L215", "receiver": "res"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_resolve_article_url", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L215", "receiver": "res"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_resolve_article_url", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L217"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_resolve_article_url", "callee": "OSError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L217"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_resolve_article_url", "callee": "RuntimeError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L217"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_resolve_article_url", "callee": "TypeError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L217"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_resolve_articles_urls", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L230", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_resolve_articles_urls", "callee": "ThreadPoolExecutor", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L243", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_resolve_articles_urls", "callee": "_resolve_single", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_google_news.py", "source_location": "L244"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_resolve_articles_urls", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L248", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "FoxcapeConfig", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L260", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "fetch", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L265", "receiver": "Foxcape"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "RuntimeError", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L273", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "RuntimeError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L274"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "OSError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L274"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "TimeoutError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L274"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L274"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "urlopen", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L286", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "decode", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L287", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "read", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L287", "receiver": "response"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "OSError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L291"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "TimeoutError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L292"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "RuntimeError", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L294", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_extract_google_news", "callee": "quote_plus", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L306", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_extract_google_news", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L311", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_extract_google_news", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L318", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_extract_google_news", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L322", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_extract_google_news", "callee": "isoformat", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L333", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_extract_google_news", "callee": "now", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L333", "receiver": "datetime"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "ArgumentParser", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L340", "receiver": "argparse"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L344", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L352", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L360", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L367", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "int", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_google_news.py", "source_location": "L371"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L375", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L382", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L387", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L394", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "reconfigure", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L409", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "reconfigure", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L414", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "parse_args", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L421", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L428"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L429", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "int", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_google_news.py", "source_location": "L432"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "silent", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "scripts/extract_google_news.py", "source_location": "L434"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "dumps", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L440", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "to_dict", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L441", "receiver": "result"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "Path", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L447", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "mkdir", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L448", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "write_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L449", "receiver": "out_path"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L451", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L455", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L459", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L462", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/71e796c83a1c293fa380b4f01a2eed810275e4628548e0f8e8b9ecaa90d3ac13.json b/graphify-out/cache/ast/v0.9.47-s2/71e796c83a1c293fa380b4f01a2eed810275e4628548e0f8e8b9ecaa90d3ac13.json new file mode 100644 index 0000000..7199fba --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/71e796c83a1c293fa380b4f01a2eed810275e4628548e0f8e8b9ecaa90d3ac13.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_specs_002_google_news_extractor_research_md", "label": "research.md", "file_type": "document", "node_kind": "page", "source_file": "specs/002-google-news-extractor/research.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_002_google_news_extractor_research_research_google_news_headlines_extractor", "label": "Research: Google News Headlines Extractor", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/research.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_002_google_news_extractor_research_1_technical_decisions_tradeoffs", "label": "1. Technical Decisions & Tradeoffs", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/research.md", "source_location": "L3"}, {"id": "$graphify-root$_specs_002_google_news_extractor_research_decision_1_motor_de_requisi\u00e7\u00e3o_e_scraping_com_foxcape_em_modo_headless", "label": "Decision 1: Motor de Requisi\u00e7\u00e3o e Scraping com `foxcape` em Modo Headless", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/research.md", "source_location": "L5"}, {"id": "$graphify-root$_specs_002_google_news_extractor_research_decision_2_endpoint_rss_do_google_news_vs_scraping_de_dom", "label": "Decision 2: Endpoint RSS do Google News vs. Scraping de DOM", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/research.md", "source_location": "L15"}, {"id": "$graphify-root$_specs_002_google_news_extractor_research_decision_3_mapeamento_de_idioma_e_locale_hl_gl_ceid", "label": "Decision 3: Mapeamento de Idioma e Locale (`hl`, `gl`, `ceid`)", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/research.md", "source_location": "L23"}, {"id": "$graphify-root$_specs_002_google_news_extractor_research_decision_4_resolu\u00e7\u00e3o_de_urls_do_google_news_via_googlenewsdecoder", "label": "Decision 4: Resolu\u00e7\u00e3o de URLs do Google News via `googlenewsdecoder`", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/research.md", "source_location": "L36"}, {"id": "$graphify-root$_specs_002_google_news_extractor_research_decision_5_logging_em_tempo_real_no_stderr_e_segrega\u00e7\u00e3o_de_streams", "label": "Decision 5: Logging em Tempo Real no `stderr` e Segrega\u00e7\u00e3o de Streams", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/research.md", "source_location": "L45"}], "edges": [{"source": "$graphify-root$_specs_002_google_news_extractor_research_md", "target": "$graphify-root$_specs_002_google_news_extractor_research_research_google_news_headlines_extractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/research.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_research_research_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_research_1_technical_decisions_tradeoffs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/research.md", "source_location": "L3", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_research_1_technical_decisions_tradeoffs", "target": "$graphify-root$_specs_002_google_news_extractor_research_decision_1_motor_de_requisi\u00e7\u00e3o_e_scraping_com_foxcape_em_modo_headless", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/research.md", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_research_1_technical_decisions_tradeoffs", "target": "$graphify-root$_specs_002_google_news_extractor_research_decision_2_endpoint_rss_do_google_news_vs_scraping_de_dom", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/research.md", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_research_1_technical_decisions_tradeoffs", "target": "$graphify-root$_specs_002_google_news_extractor_research_decision_3_mapeamento_de_idioma_e_locale_hl_gl_ceid", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/research.md", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_research_1_technical_decisions_tradeoffs", "target": "$graphify-root$_specs_002_google_news_extractor_research_decision_4_resolu\u00e7\u00e3o_de_urls_do_google_news_via_googlenewsdecoder", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/research.md", "source_location": "L36", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_research_1_technical_decisions_tradeoffs", "target": "$graphify-root$_specs_002_google_news_extractor_research_decision_5_logging_em_tempo_real_no_stderr_e_segrega\u00e7\u00e3o_de_streams", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/research.md", "source_location": "L45", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/78cec846c1173fbdff3c77313ba02c7977365e5ab102df527f90ed7b06e69519.json b/graphify-out/cache/ast/v0.9.47-s2/78cec846c1173fbdff3c77313ba02c7977365e5ab102df527f90ed7b06e69519.json new file mode 100644 index 0000000..5f3d8ae --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/78cec846c1173fbdff3c77313ba02c7977365e5ab102df527f90ed7b06e69519.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_specs_002_google_news_extractor_data_model_md", "label": "data-model.md", "file_type": "document", "node_kind": "page", "source_file": "specs/002-google-news-extractor/data-model.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_002_google_news_extractor_data_model_data_model_google_news_headlines_extractor", "label": "Data Model: Google News Headlines Extractor", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/data-model.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_002_google_news_extractor_data_model_1_entidades_de_dom\u00ednio_dtos", "label": "1. Entidades de Dom\u00ednio & DTOs", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/data-model.md", "source_location": "L3"}, {"id": "$graphify-root$_specs_002_google_news_extractor_data_model_1_1_searchquery_par\u00e2metros_da_busca", "label": "1.1 SearchQuery (Par\u00e2metros da Busca)", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/data-model.md", "source_location": "L5"}, {"id": "$graphify-root$_specs_002_google_news_extractor_data_model_1_2_newsarticle_item_de_not\u00edcia", "label": "1.2 NewsArticle (Item de Not\u00edcia)", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/data-model.md", "source_location": "L15"}, {"id": "$graphify-root$_specs_002_google_news_extractor_data_model_1_3_extractionresult_sa\u00edda_estruturada_consolidada", "label": "1.3 ExtractionResult (Sa\u00edda Estruturada Consolidada)", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/data-model.md", "source_location": "L26"}, {"id": "$graphify-root$_specs_002_google_news_extractor_data_model_2_esquema_json_de_sa\u00edda", "label": "2. Esquema JSON de Sa\u00edda", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/data-model.md", "source_location": "L41"}], "edges": [{"source": "$graphify-root$_specs_002_google_news_extractor_data_model_md", "target": "$graphify-root$_specs_002_google_news_extractor_data_model_data_model_google_news_headlines_extractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/data-model.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_data_model_data_model_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_data_model_1_entidades_de_dom\u00ednio_dtos", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/data-model.md", "source_location": "L3", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_data_model_1_entidades_de_dom\u00ednio_dtos", "target": "$graphify-root$_specs_002_google_news_extractor_data_model_1_1_searchquery_par\u00e2metros_da_busca", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/data-model.md", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_data_model_1_entidades_de_dom\u00ednio_dtos", "target": "$graphify-root$_specs_002_google_news_extractor_data_model_1_2_newsarticle_item_de_not\u00edcia", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/data-model.md", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_data_model_1_entidades_de_dom\u00ednio_dtos", "target": "$graphify-root$_specs_002_google_news_extractor_data_model_1_3_extractionresult_sa\u00edda_estruturada_consolidada", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/data-model.md", "source_location": "L26", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_data_model_data_model_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_data_model_2_esquema_json_de_sa\u00edda", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/data-model.md", "source_location": "L41", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/7e62df3edf389ef4775cd4ebc7c30947406e0954bac70ec04412ad197c18b434.json b/graphify-out/cache/ast/v0.9.47-s2/7e62df3edf389ef4775cd4ebc7c30947406e0954bac70ec04412ad197c18b434.json new file mode 100644 index 0000000..0b8a5ca --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/7e62df3edf389ef4775cd4ebc7c30947406e0954bac70ec04412ad197c18b434.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_specs_002_google_news_extractor_tasks_md", "label": "tasks.md", "file_type": "document", "node_kind": "page", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", "label": "Implementation Tasks: Google News Headlines Extractor", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_002_google_news_extractor_tasks_phase_1_setup_shared_infrastructure", "label": "Phase 1: Setup (Shared Infrastructure)", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L9"}, {"id": "$graphify-root$_specs_002_google_news_extractor_tasks_phase_2_foundational_blocking_prerequisites", "label": "Phase 2: Foundational (Blocking Prerequisites)", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L18"}, {"id": "$graphify-root$_specs_002_google_news_extractor_tasks_phase_3_user_story_1_extra\u00e7\u00e3o_b\u00e1sica_de_not\u00edcias_por_assunto_e_idioma_priority_p1_mvp", "label": "Phase 3: User Story 1 - Extra\u00e7\u00e3o B\u00e1sica de Not\u00edcias por Assunto e Idioma (Priority: P1) \ud83c\udf1f MVP", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L27"}, {"id": "$graphify-root$_specs_002_google_news_extractor_tasks_tests_for_user_story_1", "label": "Tests for User Story 1 \ud83e\uddea", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L33"}, {"id": "$graphify-root$_specs_002_google_news_extractor_tasks_implementation_for_user_story_1", "label": "Implementation for User Story 1", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L36"}, {"id": "$graphify-root$_specs_002_google_news_extractor_tasks_phase_4_user_story_2_filtragem_regional_e_edi\u00e7\u00e3o_geogr\u00e1fica_priority_p2", "label": "Phase 4: User Story 2 - Filtragem Regional e Edi\u00e7\u00e3o Geogr\u00e1fica (Priority: P2)", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L45"}, {"id": "$graphify-root$_specs_002_google_news_extractor_tasks_tests_for_user_story_2", "label": "Tests for User Story 2 \ud83e\uddea", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L51"}, {"id": "$graphify-root$_specs_002_google_news_extractor_tasks_implementation_for_user_story_2", "label": "Implementation for User Story 2", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L54"}, {"id": "$graphify-root$_specs_002_google_news_extractor_tasks_phase_5_user_story_3_pagina\u00e7\u00e3o_e_controle_de_volume_de_resultados_priority_p3", "label": "Phase 5: User Story 3 - Pagina\u00e7\u00e3o e Controle de Volume de Resultados (Priority: P3)", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L61"}, {"id": "$graphify-root$_specs_002_google_news_extractor_tasks_tests_for_user_story_3", "label": "Tests for User Story 3 \ud83e\uddea", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L67"}, {"id": "$graphify-root$_specs_002_google_news_extractor_tasks_implementation_for_user_story_3", "label": "Implementation for User Story 3", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L70"}, {"id": "$graphify-root$_specs_002_google_news_extractor_tasks_phase_6_polish_cross_cutting_concerns", "label": "Phase 6: Polish & Cross-Cutting Concerns", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L77"}, {"id": "$graphify-root$_specs_002_google_news_extractor_tasks_dependencies_execution_order", "label": "Dependencies & Execution Order", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L87"}, {"id": "$graphify-root$_specs_002_google_news_extractor_tasks_parallel_opportunities", "label": "Parallel Opportunities", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L98"}], "edges": [{"source": "$graphify-root$_specs_002_google_news_extractor_tasks_md", "target": "$graphify-root$_specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_tasks_md", "target": "$graphify-root$_specs_002_google_news_extractor_spec_md", "relation": "references", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L5", "weight": 1.0, "target_file": "$graphify-root$/specs/002-google-news-extractor/spec.md"}, {"source": "$graphify-root$_specs_002_google_news_extractor_tasks_md", "target": "$graphify-root$_specs_002_google_news_extractor_plan_md", "relation": "references", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L5", "weight": 1.0, "target_file": "$graphify-root$/specs/002-google-news-extractor/plan.md"}, {"source": "$graphify-root$_specs_002_google_news_extractor_tasks_md", "target": "$graphify-root$_specs_002_google_news_extractor_contracts_cli_contract_md", "relation": "references", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L5", "weight": 1.0, "target_file": "$graphify-root$/specs/002-google-news-extractor/contracts/cli_contract.md"}, {"source": "$graphify-root$_specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_tasks_phase_1_setup_shared_infrastructure", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_tasks_phase_2_foundational_blocking_prerequisites", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_tasks_phase_3_user_story_1_extra\u00e7\u00e3o_b\u00e1sica_de_not\u00edcias_por_assunto_e_idioma_priority_p1_mvp", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_tasks_phase_3_user_story_1_extra\u00e7\u00e3o_b\u00e1sica_de_not\u00edcias_por_assunto_e_idioma_priority_p1_mvp", "target": "$graphify-root$_specs_002_google_news_extractor_tasks_tests_for_user_story_1", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L33", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_tasks_phase_3_user_story_1_extra\u00e7\u00e3o_b\u00e1sica_de_not\u00edcias_por_assunto_e_idioma_priority_p1_mvp", "target": "$graphify-root$_specs_002_google_news_extractor_tasks_implementation_for_user_story_1", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L36", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_tasks_phase_4_user_story_2_filtragem_regional_e_edi\u00e7\u00e3o_geogr\u00e1fica_priority_p2", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L45", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_tasks_phase_4_user_story_2_filtragem_regional_e_edi\u00e7\u00e3o_geogr\u00e1fica_priority_p2", "target": "$graphify-root$_specs_002_google_news_extractor_tasks_tests_for_user_story_2", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L51", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_tasks_phase_4_user_story_2_filtragem_regional_e_edi\u00e7\u00e3o_geogr\u00e1fica_priority_p2", "target": "$graphify-root$_specs_002_google_news_extractor_tasks_implementation_for_user_story_2", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L54", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_tasks_phase_5_user_story_3_pagina\u00e7\u00e3o_e_controle_de_volume_de_resultados_priority_p3", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L61", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_tasks_phase_5_user_story_3_pagina\u00e7\u00e3o_e_controle_de_volume_de_resultados_priority_p3", "target": "$graphify-root$_specs_002_google_news_extractor_tasks_tests_for_user_story_3", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L67", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_tasks_phase_5_user_story_3_pagina\u00e7\u00e3o_e_controle_de_volume_de_resultados_priority_p3", "target": "$graphify-root$_specs_002_google_news_extractor_tasks_implementation_for_user_story_3", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L70", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_tasks_phase_6_polish_cross_cutting_concerns", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L77", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_tasks_dependencies_execution_order", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L87", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_tasks_dependencies_execution_order", "target": "$graphify-root$_specs_002_google_news_extractor_tasks_parallel_opportunities", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L98", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/85d028e158cce8838ecdcd69f101e4904f1e8274d876ee6cd34ec37ba62aa02e.json b/graphify-out/cache/ast/v0.9.47-s2/85d028e158cce8838ecdcd69f101e4904f1e8274d876ee6cd34ec37ba62aa02e.json new file mode 100644 index 0000000..d91aff6 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/85d028e158cce8838ecdcd69f101e4904f1e8274d876ee6cd34ec37ba62aa02e.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_specs_002_google_news_extractor_contracts_cli_contract_md", "label": "cli_contract.md", "file_type": "document", "node_kind": "page", "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_002_google_news_extractor_contracts_cli_contract_cli_contract_google_news_headlines_extractor", "label": "CLI Contract: Google News Headlines Extractor", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_002_google_news_extractor_contracts_cli_contract_1_comando_e_argumentos", "label": "1. Comando e Argumentos", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", "source_location": "L3"}, {"id": "$graphify-root$_specs_002_google_news_extractor_contracts_cli_contract_sintaxe", "label": "Sintaxe", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", "source_location": "L5"}, {"id": "$graphify-root$_specs_002_google_news_extractor_contracts_cli_contract_argumentos_de_linha_de_comando", "label": "Argumentos de Linha de Comando", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", "source_location": "L10"}, {"id": "$graphify-root$_specs_002_google_news_extractor_contracts_cli_contract_2_c\u00f3digos_de_sa\u00edda_exit_codes", "label": "2. C\u00f3digos de Sa\u00edda (Exit Codes)", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", "source_location": "L23"}, {"id": "$graphify-root$_specs_002_google_news_extractor_contracts_cli_contract_3_protocolo_de_streams_stdout_stderr", "label": "3. Protocolo de Streams (Stdout / Stderr)", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", "source_location": "L33"}], "edges": [{"source": "$graphify-root$_specs_002_google_news_extractor_contracts_cli_contract_md", "target": "$graphify-root$_specs_002_google_news_extractor_contracts_cli_contract_cli_contract_google_news_headlines_extractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_contracts_cli_contract_cli_contract_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_contracts_cli_contract_1_comando_e_argumentos", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", "source_location": "L3", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_contracts_cli_contract_1_comando_e_argumentos", "target": "$graphify-root$_specs_002_google_news_extractor_contracts_cli_contract_sintaxe", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_contracts_cli_contract_1_comando_e_argumentos", "target": "$graphify-root$_specs_002_google_news_extractor_contracts_cli_contract_argumentos_de_linha_de_comando", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_contracts_cli_contract_cli_contract_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_contracts_cli_contract_2_c\u00f3digos_de_sa\u00edda_exit_codes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_contracts_cli_contract_cli_contract_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_contracts_cli_contract_3_protocolo_de_streams_stdout_stderr", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", "source_location": "L33", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/94430da291ad0dc34b1cde7c30f2b8e1ce0c83d35b5e71ab68bd135146c9ef47.json b/graphify-out/cache/ast/v0.9.47-s2/94430da291ad0dc34b1cde7c30f2b8e1ce0c83d35b5e71ab68bd135146c9ef47.json new file mode 100644 index 0000000..a456a6c --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/94430da291ad0dc34b1cde7c30f2b8e1ce0c83d35b5e71ab68bd135146c9ef47.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_specs_002_google_news_extractor_tasks_md", "label": "tasks.md", "file_type": "document", "node_kind": "page", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", "label": "Implementation Tasks: Google News Headlines Extractor", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_002_google_news_extractor_tasks_phase_1_setup_shared_infrastructure", "label": "Phase 1: Setup (Shared Infrastructure)", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L9"}, {"id": "$graphify-root$_specs_002_google_news_extractor_tasks_phase_2_foundational_blocking_prerequisites", "label": "Phase 2: Foundational (Blocking Prerequisites)", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L18"}, {"id": "$graphify-root$_specs_002_google_news_extractor_tasks_phase_3_user_story_1_extra\u00e7\u00e3o_b\u00e1sica_de_not\u00edcias_por_assunto_e_idioma_priority_p1_mvp", "label": "Phase 3: User Story 1 - Extra\u00e7\u00e3o B\u00e1sica de Not\u00edcias por Assunto e Idioma (Priority: P1) \ud83c\udf1f MVP", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L27"}, {"id": "$graphify-root$_specs_002_google_news_extractor_tasks_tests_for_user_story_1", "label": "Tests for User Story 1 \ud83e\uddea", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L33"}, {"id": "$graphify-root$_specs_002_google_news_extractor_tasks_implementation_for_user_story_1", "label": "Implementation for User Story 1", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L36"}, {"id": "$graphify-root$_specs_002_google_news_extractor_tasks_phase_4_user_story_2_filtragem_regional_e_edi\u00e7\u00e3o_geogr\u00e1fica_priority_p2", "label": "Phase 4: User Story 2 - Filtragem Regional e Edi\u00e7\u00e3o Geogr\u00e1fica (Priority: P2)", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L45"}, {"id": "$graphify-root$_specs_002_google_news_extractor_tasks_tests_for_user_story_2", "label": "Tests for User Story 2 \ud83e\uddea", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L51"}, {"id": "$graphify-root$_specs_002_google_news_extractor_tasks_implementation_for_user_story_2", "label": "Implementation for User Story 2", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L54"}, {"id": "$graphify-root$_specs_002_google_news_extractor_tasks_phase_5_user_story_3_pagina\u00e7\u00e3o_e_controle_de_volume_de_resultados_priority_p3", "label": "Phase 5: User Story 3 - Pagina\u00e7\u00e3o e Controle de Volume de Resultados (Priority: P3)", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L61"}, {"id": "$graphify-root$_specs_002_google_news_extractor_tasks_tests_for_user_story_3", "label": "Tests for User Story 3 \ud83e\uddea", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L67"}, {"id": "$graphify-root$_specs_002_google_news_extractor_tasks_implementation_for_user_story_3", "label": "Implementation for User Story 3", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L70"}, {"id": "$graphify-root$_specs_002_google_news_extractor_tasks_phase_6_url_resolution_headless_configuration_real_time_logging", "label": "Phase 6: URL Resolution, Headless Configuration & Real-Time Logging", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L77"}, {"id": "$graphify-root$_specs_002_google_news_extractor_tasks_phase_7_verification_e2e_testing", "label": "Phase 7: Verification & E2E Testing", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L88"}], "edges": [{"source": "$graphify-root$_specs_002_google_news_extractor_tasks_md", "target": "$graphify-root$_specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_tasks_md", "target": "$graphify-root$_specs_002_google_news_extractor_spec_md", "relation": "references", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L5", "weight": 1.0, "target_file": "$graphify-root$/specs/002-google-news-extractor/spec.md"}, {"source": "$graphify-root$_specs_002_google_news_extractor_tasks_md", "target": "$graphify-root$_specs_002_google_news_extractor_plan_md", "relation": "references", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L5", "weight": 1.0, "target_file": "$graphify-root$/specs/002-google-news-extractor/plan.md"}, {"source": "$graphify-root$_specs_002_google_news_extractor_tasks_md", "target": "$graphify-root$_specs_002_google_news_extractor_contracts_cli_contract_md", "relation": "references", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L5", "weight": 1.0, "target_file": "$graphify-root$/specs/002-google-news-extractor/contracts/cli_contract.md"}, {"source": "$graphify-root$_specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_tasks_phase_1_setup_shared_infrastructure", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_tasks_phase_2_foundational_blocking_prerequisites", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_tasks_phase_3_user_story_1_extra\u00e7\u00e3o_b\u00e1sica_de_not\u00edcias_por_assunto_e_idioma_priority_p1_mvp", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_tasks_phase_3_user_story_1_extra\u00e7\u00e3o_b\u00e1sica_de_not\u00edcias_por_assunto_e_idioma_priority_p1_mvp", "target": "$graphify-root$_specs_002_google_news_extractor_tasks_tests_for_user_story_1", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L33", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_tasks_phase_3_user_story_1_extra\u00e7\u00e3o_b\u00e1sica_de_not\u00edcias_por_assunto_e_idioma_priority_p1_mvp", "target": "$graphify-root$_specs_002_google_news_extractor_tasks_implementation_for_user_story_1", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L36", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_tasks_phase_4_user_story_2_filtragem_regional_e_edi\u00e7\u00e3o_geogr\u00e1fica_priority_p2", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L45", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_tasks_phase_4_user_story_2_filtragem_regional_e_edi\u00e7\u00e3o_geogr\u00e1fica_priority_p2", "target": "$graphify-root$_specs_002_google_news_extractor_tasks_tests_for_user_story_2", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L51", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_tasks_phase_4_user_story_2_filtragem_regional_e_edi\u00e7\u00e3o_geogr\u00e1fica_priority_p2", "target": "$graphify-root$_specs_002_google_news_extractor_tasks_implementation_for_user_story_2", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L54", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_tasks_phase_5_user_story_3_pagina\u00e7\u00e3o_e_controle_de_volume_de_resultados_priority_p3", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L61", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_tasks_phase_5_user_story_3_pagina\u00e7\u00e3o_e_controle_de_volume_de_resultados_priority_p3", "target": "$graphify-root$_specs_002_google_news_extractor_tasks_tests_for_user_story_3", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L67", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_tasks_phase_5_user_story_3_pagina\u00e7\u00e3o_e_controle_de_volume_de_resultados_priority_p3", "target": "$graphify-root$_specs_002_google_news_extractor_tasks_implementation_for_user_story_3", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L70", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_tasks_phase_6_url_resolution_headless_configuration_real_time_logging", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L77", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_tasks_phase_7_verification_e2e_testing", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/tasks.md", "source_location": "L88", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/95a7a2d913e284c24849db47815657747893f6be68bef02c86132650a76490b5.json b/graphify-out/cache/ast/v0.9.47-s2/95a7a2d913e284c24849db47815657747893f6be68bef02c86132650a76490b5.json new file mode 100644 index 0000000..13aca17 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/95a7a2d913e284c24849db47815657747893f6be68bef02c86132650a76490b5.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_specs_002_google_news_extractor_quickstart_md", "label": "quickstart.md", "file_type": "document", "node_kind": "page", "source_file": "specs/002-google-news-extractor/quickstart.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_002_google_news_extractor_quickstart_quickstart_google_news_headlines_extractor", "label": "Quickstart: Google News Headlines Extractor", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/quickstart.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_002_google_news_extractor_quickstart_1_pr\u00e9_requisitos", "label": "1. Pr\u00e9-requisitos", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/quickstart.md", "source_location": "L7"}, {"id": "$graphify-root$_specs_002_google_news_extractor_quickstart_2_cen\u00e1rios_de_execu\u00e7\u00e3o_e_valida\u00e7\u00e3o", "label": "2. Cen\u00e1rios de Execu\u00e7\u00e3o e Valida\u00e7\u00e3o", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/quickstart.md", "source_location": "L15"}, {"id": "$graphify-root$_specs_002_google_news_extractor_quickstart_cen\u00e1rio_1_extra\u00e7\u00e3o_b\u00e1sica_portugu\u00eas_brasil", "label": "Cen\u00e1rio 1: Extra\u00e7\u00e3o B\u00e1sica (Portugu\u00eas / Brasil)", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/quickstart.md", "source_location": "L17"}, {"id": "$graphify-root$_specs_002_google_news_extractor_quickstart_cen\u00e1rio_2_filtragem_regional_espanhol_m\u00e9xico", "label": "Cen\u00e1rio 2: Filtragem Regional (Espanhol / M\u00e9xico)", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/quickstart.md", "source_location": "L28"}, {"id": "$graphify-root$_specs_002_google_news_extractor_quickstart_cen\u00e1rio_3_pagina\u00e7\u00e3o_ampliada_ingl\u00eas_eua_2_p\u00e1ginas", "label": "Cen\u00e1rio 3: Pagina\u00e7\u00e3o Ampliada (Ingl\u00eas / EUA / 2 P\u00e1ginas)", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/quickstart.md", "source_location": "L38"}, {"id": "$graphify-root$_specs_002_google_news_extractor_quickstart_cen\u00e1rio_4_valida\u00e7\u00e3o_de_erro_termo_ausente_ou_inv\u00e1lido", "label": "Cen\u00e1rio 4: Valida\u00e7\u00e3o de Erro (Termo Ausente ou Inv\u00e1lido)", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/quickstart.md", "source_location": "L48"}, {"id": "$graphify-root$_specs_002_google_news_extractor_quickstart_3_execu\u00e7\u00e3o_dos_testes_automatizados", "label": "3. Execu\u00e7\u00e3o dos Testes Automatizados", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/quickstart.md", "source_location": "L58"}], "edges": [{"source": "$graphify-root$_specs_002_google_news_extractor_quickstart_md", "target": "$graphify-root$_specs_002_google_news_extractor_quickstart_quickstart_google_news_headlines_extractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/quickstart.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_quickstart_quickstart_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_quickstart_1_pr\u00e9_requisitos", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/quickstart.md", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_quickstart_quickstart_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_quickstart_2_cen\u00e1rios_de_execu\u00e7\u00e3o_e_valida\u00e7\u00e3o", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/quickstart.md", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_quickstart_2_cen\u00e1rios_de_execu\u00e7\u00e3o_e_valida\u00e7\u00e3o", "target": "$graphify-root$_specs_002_google_news_extractor_quickstart_cen\u00e1rio_1_extra\u00e7\u00e3o_b\u00e1sica_portugu\u00eas_brasil", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/quickstart.md", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_quickstart_2_cen\u00e1rios_de_execu\u00e7\u00e3o_e_valida\u00e7\u00e3o", "target": "$graphify-root$_specs_002_google_news_extractor_quickstart_cen\u00e1rio_2_filtragem_regional_espanhol_m\u00e9xico", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/quickstart.md", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_quickstart_2_cen\u00e1rios_de_execu\u00e7\u00e3o_e_valida\u00e7\u00e3o", "target": "$graphify-root$_specs_002_google_news_extractor_quickstart_cen\u00e1rio_3_pagina\u00e7\u00e3o_ampliada_ingl\u00eas_eua_2_p\u00e1ginas", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/quickstart.md", "source_location": "L38", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_quickstart_2_cen\u00e1rios_de_execu\u00e7\u00e3o_e_valida\u00e7\u00e3o", "target": "$graphify-root$_specs_002_google_news_extractor_quickstart_cen\u00e1rio_4_valida\u00e7\u00e3o_de_erro_termo_ausente_ou_inv\u00e1lido", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/quickstart.md", "source_location": "L48", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_quickstart_quickstart_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_quickstart_3_execu\u00e7\u00e3o_dos_testes_automatizados", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/quickstart.md", "source_location": "L58", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/9a49f74effae9147666fb0d91e9b055fc35730aed23856021b02b9957b2e9912.json b/graphify-out/cache/ast/v0.9.47-s2/9a49f74effae9147666fb0d91e9b055fc35730aed23856021b02b9957b2e9912.json new file mode 100644 index 0000000..06f15cc --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/9a49f74effae9147666fb0d91e9b055fc35730aed23856021b02b9957b2e9912.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_test_extract_google_news_py", "label": "test_extract_google_news.py", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L1"}, {"id": "fixture", "label": "fixture", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_extract_google_news.py"}, {"id": "$graphify-root$_tests_test_extract_google_news_sample_rss_xml", "label": "sample_rss_xml()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L32", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "label": "test_get_hl_gl_ceid_default_mappings()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L37", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", "label": "test_get_hl_gl_ceid_with_custom_locale()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L60", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_dynamic_fallback", "label": "test_get_hl_gl_ceid_dynamic_fallback()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L78", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "label": "test_search_query_validation()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L86", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", "label": "test_parse_google_news_rss_with_fixture()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L111", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_fallback", "label": "test_resolve_article_url_fallback()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L138", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_success", "label": "test_resolve_article_url_success()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L148", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_resolve_articles_urls_batch", "label": "test_resolve_articles_urls_batch()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L161", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "label": "test_extract_google_news_orchestration_mocked()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L186", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "label": "test_cli_execution_stdout()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L215", "_callable": true}, {"id": "capturefixture", "label": "CaptureFixture", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_extract_google_news.py"}, {"id": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "label": "test_cli_execution_file_output()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L240", "_callable": true}, {"id": "path", "label": "Path", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_extract_google_news.py"}, {"id": "$graphify-root$_tests_test_extract_google_news_test_cli_empty_query_error", "label": "test_cli_empty_query_error()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L261", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "label": "test_cli_network_error_handling()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L270", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_1", "label": "Testes unit\u00e1rios e de integra\u00e7\u00e3o para o Extrator de Manchetes do Google News.\u2026", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_33", "label": "Fixture que fornece o conte\u00fado do XML de exemplo para testes offline.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L33"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_38", "label": "Valida o mapeamento padr\u00e3o de idiomas para pares (hl, gl, ceid).", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L38"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_61", "label": "Valida a sobrescrita geogr\u00e1fica quando o argumento locale \u00e9 especificado.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L61"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_79", "label": "Valida fallback din\u00e2mico para idiomas regionais n\u00e3o listados explicitamente.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L79"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_87", "label": "Valida as regras de neg\u00f3cio e limites de SearchQuery.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L87"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_112", "label": "Valida o parsing do feed RSS, higieniza\u00e7\u00e3o de tags HTML e deduplica\u00e7\u00e3o.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L112"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_139", "label": "Valida fallback gracioso de URL quando n\u00e3o \u00e9 link do Google News ou em erro.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L139"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_149", "label": "Valida resolu\u00e7\u00e3o bem-sucedida de URL do Google News para o portal destino.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L149"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_162", "label": "Valida a resolu\u00e7\u00e3o concorrente em lote de uma lista de NewsArticle.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L162"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_187", "label": "Valida a consolida\u00e7\u00e3o do ExtractionResult a partir da busca mockada com URLs\u2026", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L187"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_216", "label": "Valida execu\u00e7\u00e3o padr\u00e3o do CLI com sa\u00edda JSON no stdout.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L216"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_241", "label": "Valida grava\u00e7\u00e3o em arquivo com cria\u00e7\u00e3o autom\u00e1tica de diret\u00f3rios pais.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L241"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_262", "label": "Valida tratamento de erro e c\u00f3digo de sa\u00edda 1 para par\u00e2metro vazio.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L262"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_271", "label": "Valida tratamento de erro e c\u00f3digo de sa\u00edda 2 para falhas de rede.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L271"}], "edges": [{"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "unittest_mock", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "pytest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "scripts_extract_google_news", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_sample_rss_xml", "target": "fixture", "relation": "references", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L31", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_sample_rss_xml", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L32", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L60", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_dynamic_fallback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L78", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L86", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L111", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_fallback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L138", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_success", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L148", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_resolve_articles_urls_batch", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L161", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L186", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L215", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "target": "capturefixture", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L215", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "target": "capturefixture", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L215", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L240", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L240", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_empty_query_error", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L261", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_test_cli_empty_query_error", "target": "capturefixture", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L261", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_test_cli_empty_query_error", "target": "capturefixture", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L261", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L270", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "target": "capturefixture", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L270", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "target": "capturefixture", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L270", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_1", "target": "$graphify-root$_tests_test_extract_google_news_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_33", "target": "$graphify-root$_tests_test_extract_google_news_sample_rss_xml", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L33", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_38", "target": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L38", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_61", "target": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L61", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_79", "target": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_dynamic_fallback", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L79", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_87", "target": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L87", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_112", "target": "$graphify-root$_tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L112", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_139", "target": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_fallback", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L139", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_149", "target": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_success", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L149", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_162", "target": "$graphify-root$_tests_test_extract_google_news_test_resolve_articles_urls_batch", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L162", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_187", "target": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L187", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_216", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L216", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_241", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L241", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_262", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_empty_query_error", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L262", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_271", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L271", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_extract_google_news_sample_rss_xml", "callee": "read_text", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L34", "receiver": "FIXTURE_PATH"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L39", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L44", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L49", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L54", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L62", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L67", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L72", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_dynamic_fallback", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L80", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "SearchQuery", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L89", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "raises", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L96", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_google_news.py", "source_location": "L96"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "SearchQuery", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L97", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "raises", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L100", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_google_news.py", "source_location": "L100"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "SearchQuery", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L101", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "raises", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L104", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_google_news.py", "source_location": "L104"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "SearchQuery", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L105", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "raises", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L107", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_google_news.py", "source_location": "L107"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "SearchQuery", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L108", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", "callee": "parse_google_news_rss", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L113", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", "callee": "startswith", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L121", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_fallback", "callee": "resolve_article_url", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L141", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_fallback", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L143", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_fallback", "callee": "resolve_article_url", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L145", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_success", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L153", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_success", "callee": "resolve_article_url", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L157", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_resolve_articles_urls_batch", "callee": "NewsArticle", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L164", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_resolve_articles_urls_batch", "callee": "NewsArticle", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L169", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_resolve_articles_urls_batch", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L176", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_resolve_articles_urls_batch", "callee": "split", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L178", "receiver": "u"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_resolve_articles_urls_batch", "callee": "resolve_articles_urls", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L180", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "callee": "SearchQuery", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L188", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L193", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L197", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "callee": "extract_google_news", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L202", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "callee": "ExtractionResult", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_google_news.py", "source_location": "L204"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "callee": "startswith", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L212", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L218", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L222", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "callee": "main", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L226", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "callee": "readouterr", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L231", "receiver": "capsys"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "callee": "loads", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L232", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L245", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L249", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "callee": "main", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L253", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "callee": "exists", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L256", "receiver": "out_file"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "callee": "loads", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L257", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "callee": "read_text", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L257", "receiver": "out_file"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_empty_query_error", "callee": "main", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L263", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_empty_query_error", "callee": "readouterr", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L266", "receiver": "capsys"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L272", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "callee": "RuntimeError", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L274", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "callee": "main", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L276", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "callee": "readouterr", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L279", "receiver": "capsys"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/ad4c18a1fe1c6f19f45a043748fe4f195db525afac53ed77905222015ec5230c.json b/graphify-out/cache/ast/v0.9.47-s2/ad4c18a1fe1c6f19f45a043748fe4f195db525afac53ed77905222015ec5230c.json new file mode 100644 index 0000000..324b241 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/ad4c18a1fe1c6f19f45a043748fe4f195db525afac53ed77905222015ec5230c.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_specs_002_google_news_extractor_checklists_readiness_md", "label": "readiness.md", "file_type": "document", "node_kind": "page", "source_file": "specs/002-google-news-extractor/checklists/readiness.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_002_google_news_extractor_checklists_readiness_general_readiness_checklist_google_news_headlines_extractor", "label": "General Readiness Checklist: Google News Headlines Extractor", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/checklists/readiness.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_002_google_news_extractor_checklists_readiness_cli_interface_parameter_contracts", "label": "CLI Interface & Parameter Contracts", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/checklists/readiness.md", "source_location": "L12"}, {"id": "$graphify-root$_specs_002_google_news_extractor_checklists_readiness_scraping_engine_feed_mapping", "label": "Scraping Engine & Feed Mapping", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/checklists/readiness.md", "source_location": "L20"}, {"id": "$graphify-root$_specs_002_google_news_extractor_checklists_readiness_data_sanitization_article_extraction", "label": "Data Sanitization & Article Extraction", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/checklists/readiness.md", "source_location": "L27"}, {"id": "$graphify-root$_specs_002_google_news_extractor_checklists_readiness_error_handling_edge_cases", "label": "Error Handling & Edge Cases", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/checklists/readiness.md", "source_location": "L35"}, {"id": "$graphify-root$_specs_002_google_news_extractor_checklists_readiness_non_functional_operational_readiness", "label": "Non-Functional & Operational Readiness", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/checklists/readiness.md", "source_location": "L42"}, {"id": "$graphify-root$_specs_002_google_news_extractor_checklists_readiness_notes", "label": "Notes", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/checklists/readiness.md", "source_location": "L48"}], "edges": [{"source": "$graphify-root$_specs_002_google_news_extractor_checklists_readiness_md", "target": "$graphify-root$_specs_002_google_news_extractor_checklists_readiness_general_readiness_checklist_google_news_headlines_extractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/checklists/readiness.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_checklists_readiness_md", "target": "$graphify-root$_specs_002_google_news_extractor_spec_md", "relation": "references", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/checklists/readiness.md", "source_location": "L6", "weight": 1.0, "target_file": "$graphify-root$/specs/002-google-news-extractor/spec.md"}, {"source": "$graphify-root$_specs_002_google_news_extractor_checklists_readiness_md", "target": "$graphify-root$_specs_002_google_news_extractor_plan_md", "relation": "references", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/checklists/readiness.md", "source_location": "L6", "weight": 1.0, "target_file": "$graphify-root$/specs/002-google-news-extractor/plan.md"}, {"source": "$graphify-root$_specs_002_google_news_extractor_checklists_readiness_md", "target": "$graphify-root$_specs_002_google_news_extractor_contracts_cli_contract_md", "relation": "references", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/checklists/readiness.md", "source_location": "L6", "weight": 1.0, "target_file": "$graphify-root$/specs/002-google-news-extractor/contracts/cli_contract.md"}, {"source": "$graphify-root$_specs_002_google_news_extractor_checklists_readiness_md", "target": "$graphify-root$_specs_002_google_news_extractor_data_model_md", "relation": "references", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/checklists/readiness.md", "source_location": "L6", "weight": 1.0, "target_file": "$graphify-root$/specs/002-google-news-extractor/data-model.md"}, {"source": "$graphify-root$_specs_002_google_news_extractor_checklists_readiness_md", "target": "$graphify-root$_specs_002_google_news_extractor_research_md", "relation": "references", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/checklists/readiness.md", "source_location": "L6", "weight": 1.0, "target_file": "$graphify-root$/specs/002-google-news-extractor/research.md"}, {"source": "$graphify-root$_specs_002_google_news_extractor_checklists_readiness_general_readiness_checklist_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_checklists_readiness_cli_interface_parameter_contracts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/checklists/readiness.md", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_checklists_readiness_general_readiness_checklist_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_checklists_readiness_scraping_engine_feed_mapping", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/checklists/readiness.md", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_checklists_readiness_general_readiness_checklist_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_checklists_readiness_data_sanitization_article_extraction", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/checklists/readiness.md", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_checklists_readiness_general_readiness_checklist_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_checklists_readiness_error_handling_edge_cases", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/checklists/readiness.md", "source_location": "L35", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_checklists_readiness_general_readiness_checklist_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_checklists_readiness_non_functional_operational_readiness", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/checklists/readiness.md", "source_location": "L42", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_checklists_readiness_general_readiness_checklist_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_checklists_readiness_notes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/checklists/readiness.md", "source_location": "L48", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/afdab227277787fb6ca235cb3b6589551f407617e2fcca99e60c7c4a34cbb322.json b/graphify-out/cache/ast/v0.9.47-s2/afdab227277787fb6ca235cb3b6589551f407617e2fcca99e60c7c4a34cbb322.json new file mode 100644 index 0000000..e3787f5 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/afdab227277787fb6ca235cb3b6589551f407617e2fcca99e60c7c4a34cbb322.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_test_extract_google_news_py", "label": "test_extract_google_news.py", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L1"}, {"id": "fixture", "label": "fixture", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_extract_google_news.py"}, {"id": "$graphify-root$_tests_test_extract_google_news_sample_rss_xml", "label": "sample_rss_xml()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L30", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "label": "test_get_hl_gl_ceid_default_mappings()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L35", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", "label": "test_get_hl_gl_ceid_with_custom_locale()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L58", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_dynamic_fallback", "label": "test_get_hl_gl_ceid_dynamic_fallback()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L76", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "label": "test_search_query_validation()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L84", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", "label": "test_parse_google_news_rss_with_fixture()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L109", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "label": "test_extract_google_news_orchestration_mocked()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L136", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "label": "test_cli_execution_stdout()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L159", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "label": "test_cli_execution_file_output()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L174", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_cli_empty_query_error", "label": "test_cli_empty_query_error()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L187", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "label": "test_cli_network_error_handling()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L196", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_1", "label": "Testes unit\u00e1rios e de integra\u00e7\u00e3o para o Extrator de Manchetes do Google News.\u2026", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_31", "label": "Fixture que fornece o conte\u00fado do XML de exemplo para testes offline.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L31"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_36", "label": "Valida o mapeamento padr\u00e3o de idiomas para pares (hl, gl, ceid).", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L36"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_59", "label": "Valida a sobrescrita geogr\u00e1fica quando o argumento locale \u00e9 especificado.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L59"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_77", "label": "Valida fallback din\u00e2mico para idiomas regionais n\u00e3o listados explicitamente.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L77"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_85", "label": "Valida as regras de neg\u00f3cio e limites de SearchQuery.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L85"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_110", "label": "Valida o parsing do feed RSS, higieniza\u00e7\u00e3o de tags HTML e deduplica\u00e7\u00e3o.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L110"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_137", "label": "Valida a consolida\u00e7\u00e3o do ExtractionResult a partir da busca mockada.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L137"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_160", "label": "Valida execu\u00e7\u00e3o padr\u00e3o do CLI com sa\u00edda JSON no stdout.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L160"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_175", "label": "Valida grava\u00e7\u00e3o em arquivo com cria\u00e7\u00e3o autom\u00e1tica de diret\u00f3rios pais.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L175"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_188", "label": "Valida tratamento de erro e c\u00f3digo de sa\u00edda 1 para par\u00e2metro vazio.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L188"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_197", "label": "Valida tratamento de erro e c\u00f3digo de sa\u00edda 2 para falhas de rede.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L197"}], "edges": [{"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "unittest_mock", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "pytest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "scripts_extract_google_news", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_sample_rss_xml", "target": "fixture", "relation": "references", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L29", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_sample_rss_xml", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L30", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L35", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L58", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_dynamic_fallback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L76", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L84", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L109", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L136", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L159", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L174", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_empty_query_error", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L187", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L196", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_1", "target": "$graphify-root$_tests_test_extract_google_news_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_31", "target": "$graphify-root$_tests_test_extract_google_news_sample_rss_xml", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L31", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_36", "target": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L36", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_59", "target": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L59", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_77", "target": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_dynamic_fallback", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L77", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_85", "target": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L85", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_110", "target": "$graphify-root$_tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L110", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_137", "target": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L137", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_160", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L160", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_175", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L175", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_188", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_empty_query_error", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L188", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_197", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L197", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_extract_google_news_sample_rss_xml", "callee": "read_text", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L32", "receiver": "FIXTURE_PATH"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L37", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L42", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L47", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L52", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L60", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L65", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L70", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_dynamic_fallback", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L78", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "SearchQuery", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L87", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "raises", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L94", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_google_news.py", "source_location": "L94"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "SearchQuery", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L95", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "raises", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L98", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_google_news.py", "source_location": "L98"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "SearchQuery", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L99", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "raises", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L102", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_google_news.py", "source_location": "L102"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "SearchQuery", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L103", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "raises", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L105", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_google_news.py", "source_location": "L105"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "SearchQuery", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L106", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", "callee": "parse_google_news_rss", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L111", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", "callee": "startswith", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L119", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "callee": "SearchQuery", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L138", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L140", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "callee": "extract_google_news", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L141", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "callee": "ExtractionResult", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_google_news.py", "source_location": "L143"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "callee": "to_dict", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L153", "receiver": "result"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L161", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "callee": "main", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L162", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "callee": "readouterr", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L165", "receiver": "capsys"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "callee": "loads", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L166", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L178", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "callee": "main", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L179", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "callee": "exists", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L182", "receiver": "out_file"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "callee": "loads", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L183", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "callee": "read_text", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L183", "receiver": "out_file"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_empty_query_error", "callee": "main", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L189", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_empty_query_error", "callee": "readouterr", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L192", "receiver": "capsys"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L198", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "callee": "RuntimeError", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L198", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "callee": "main", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L199", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "callee": "readouterr", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L202", "receiver": "capsys"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/b891ffeaee84638899cd142c1f46a2827f627b4fa30135f65bfcfd5b650ebaae.json b/graphify-out/cache/ast/v0.9.47-s2/b891ffeaee84638899cd142c1f46a2827f627b4fa30135f65bfcfd5b650ebaae.json new file mode 100644 index 0000000..e94beaf --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/b891ffeaee84638899cd142c1f46a2827f627b4fa30135f65bfcfd5b650ebaae.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_scripts_extract_google_news_py", "label": "extract_google_news.py", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L1"}, {"id": "$graphify-root$_scripts_extract_google_news_searchquery", "label": "SearchQuery", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L32", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "label": ".__post_init__()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L40", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_searchquery_clean_keyword", "label": ".clean_keyword()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L53", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_searchquery_clean_language", "label": ".clean_language()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L57", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_searchquery_clean_locale", "label": ".clean_locale()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L61", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_newsarticle", "label": "NewsArticle", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L66", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_google_news_newsarticle_to_dict", "label": ".to_dict()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L75", "_callable": true}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/extract_google_news.py"}, {"id": "$graphify-root$_scripts_extract_google_news_extractionresult", "label": "ExtractionResult", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L86", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_google_news_extractionresult_to_dict", "label": ".to_dict()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L97", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "label": "get_hl_gl_ceid()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L109", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "label": "_normalize_text_for_comparison()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L153", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "label": "parse_google_news_rss()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L158", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_resolve_article_url", "label": "resolve_article_url()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L209", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_resolve_articles_urls", "label": "resolve_articles_urls()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L222", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "label": "_fetch_rss_content()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L242", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_extract_google_news", "label": "extract_google_news()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L286", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_build_parser", "label": "build_parser()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L314", "_callable": true}, {"id": "argumentparser", "label": "ArgumentParser", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/extract_google_news.py"}, {"id": "$graphify-root$_scripts_extract_google_news_main", "label": "main()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L373", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_33", "label": "Value Object com par\u00e2metros de busca validados.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L33"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_67", "label": "Entidade que representa uma not\u00edcia extra\u00edda.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L67"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_87", "label": "Resultado consolidado da extra\u00e7\u00e3o.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L87"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_110", "label": "Mapeia idioma e locale para os par\u00e2metros hl, gl e ceid do Google News.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L110"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_154", "label": "Remove pontua\u00e7\u00e3o e espa\u00e7os extras para compara\u00e7\u00e3o de redund\u00e2ncia.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L154"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_159", "label": "Parseia o XML do RSS do Google News e extrai os itens estruturados.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L159"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_210", "label": "Resolve a URL intermedi\u00e1ria do Google News para a URL real do ve\u00edculo.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L210"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_225", "label": "Resolve em paralelo as URLs intermedi\u00e1rias do Google News para os links finais\u2026", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L225"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_243", "label": "Realiza a requisi\u00e7\u00e3o ao feed RSS utilizando a biblioteca Foxcape como motor\u2026", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L243"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_289", "label": "Orquestra a consulta ao Google News e retorna o resultado consolidado com URLs\u2026", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L289"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_315", "label": "Cria e configura o parser de argumentos CLI.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L315"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_374", "label": "Ponto de entrada do script CLI.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L374"}], "edges": [{"source": "$graphify-root$_scripts_extract_google_news_py", "target": "argparse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "concurrent_futures", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "re", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "urllib_error", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "urllib_parse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "urllib_request", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "dataclasses", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "bs4", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L26", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "foxcape", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "googlenewsdecoder", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_searchquery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L32", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_searchquery", "target": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L40", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_searchquery", "target": "$graphify-root$_scripts_extract_google_news_searchquery_clean_keyword", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L53", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_searchquery", "target": "$graphify-root$_scripts_extract_google_news_searchquery_clean_language", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L57", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_searchquery", "target": "$graphify-root$_scripts_extract_google_news_searchquery_clean_locale", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L61", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_newsarticle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L66", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_newsarticle", "target": "$graphify-root$_scripts_extract_google_news_newsarticle_to_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L75", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_newsarticle_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L75", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_extractionresult", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L86", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extractionresult", "target": "$graphify-root$_scripts_extract_google_news_extractionresult_to_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L97", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extractionresult_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L97", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L109", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L153", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L158", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "target": "$graphify-root$_scripts_extract_google_news_newsarticle", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L158", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_resolve_article_url", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L209", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_resolve_articles_urls", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L222", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_resolve_articles_urls", "target": "$graphify-root$_scripts_extract_google_news_newsarticle", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L222", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_resolve_articles_urls", "target": "$graphify-root$_scripts_extract_google_news_newsarticle", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L222", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L242", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_extract_google_news", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L286", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_searchquery", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L286", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_extractionresult", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L286", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_build_parser", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L314", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_build_parser", "target": "argumentparser", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L314", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L373", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "target": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L190", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "target": "$graphify-root$_scripts_extract_google_news_newsarticle", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L197", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L294", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L297", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L298", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_resolve_articles_urls", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L301", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_extractionresult", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L303", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_main", "target": "$graphify-root$_scripts_extract_google_news_build_parser", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L386", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_main", "target": "$graphify-root$_scripts_extract_google_news_searchquery", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L390", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_main", "target": "$graphify-root$_scripts_extract_google_news_extract_google_news", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L403", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_33", "target": "$graphify-root$_scripts_extract_google_news_searchquery", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L33", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_67", "target": "$graphify-root$_scripts_extract_google_news_newsarticle", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L67", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_87", "target": "$graphify-root$_scripts_extract_google_news_extractionresult", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L87", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_110", "target": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L110", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_154", "target": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L154", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_159", "target": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L159", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_210", "target": "$graphify-root$_scripts_extract_google_news_resolve_article_url", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L210", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_225", "target": "$graphify-root$_scripts_extract_google_news_resolve_articles_urls", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L225", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_243", "target": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L243", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_289", "target": "$graphify-root$_scripts_extract_google_news_extract_google_news", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L289", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_315", "target": "$graphify-root$_scripts_extract_google_news_build_parser", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L315", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_374", "target": "$graphify-root$_scripts_extract_google_news_main", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L374", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L41", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "callee": "ValueError", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L42", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L44", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "callee": "ValueError", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L45", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "callee": "ValueError", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L50", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_clean_keyword", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L54", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_clean_language", "callee": "lower", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L58", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_clean_language", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L58", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_clean_locale", "callee": "upper", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L62", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_clean_locale", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L62", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_extractionresult_to_dict", "callee": "to_dict", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L105", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "replace", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L113", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "lower", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L113", "receiver": "lang_raw"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "split", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L136", "receiver": "lang_clean"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "upper", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L138", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "upper", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L138", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "upper", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L140", "receiver": "lang_clean"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "upper", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L143", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L143", "receiver": "locale"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L155", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "callee": "lower", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L155", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "callee": "sub", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L155", "receiver": "re"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "BeautifulSoup", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L163", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "BeautifulSoup", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L165", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "find_all", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L167", "receiver": "soup"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "find", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L174", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "find", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L175", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "find", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L176", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "find", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L177", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "get_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L179", "receiver": "title_tag"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "get_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L180", "receiver": "link_tag"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "get_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L181", "receiver": "pubdate_tag"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "get_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L182", "receiver": "desc_tag"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "BeautifulSoup", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L187", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "get_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L188", "receiver": "desc_soup"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "append", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L196", "receiver": "articles"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_resolve_article_url", "callee": "gnewsdecoder", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L214", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_resolve_article_url", "callee": "dict", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_google_news.py", "source_location": "L215"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_resolve_article_url", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L215", "receiver": "res"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_resolve_article_url", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L215", "receiver": "res"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_resolve_article_url", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L217"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_resolve_article_url", "callee": "OSError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L217"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_resolve_article_url", "callee": "RuntimeError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L217"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_resolve_article_url", "callee": "TypeError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L217"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_resolve_articles_urls", "callee": "ThreadPoolExecutor", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L238", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_resolve_articles_urls", "callee": "_resolve_single", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_google_news.py", "source_location": "L239"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "FoxcapeConfig", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L247", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "fetch", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L252", "receiver": "Foxcape"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "RuntimeError", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L260", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "RuntimeError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L261"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "OSError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L261"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "TimeoutError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L261"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L261"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "urlopen", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L273", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "decode", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L274", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "read", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L274", "receiver": "response"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "OSError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L278"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "TimeoutError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L279"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "RuntimeError", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L281", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_extract_google_news", "callee": "quote_plus", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L293", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_extract_google_news", "callee": "isoformat", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L309", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_extract_google_news", "callee": "now", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L309", "receiver": "datetime"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "ArgumentParser", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L316", "receiver": "argparse"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L320", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L328", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L336", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L343", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "int", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_google_news.py", "source_location": "L347"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L351", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L358", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L363", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "reconfigure", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L377", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "reconfigure", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L382", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "parse_args", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L389", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L396"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L397", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "int", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_google_news.py", "source_location": "L400"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "dumps", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L404", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "to_dict", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L405", "receiver": "result"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "Path", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L411", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "mkdir", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L412", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "write_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L413", "receiver": "out_path"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L415", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L419", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L422", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/b9bf3789223ca93f659508907e9574ccc5c15fbefd817b0aedc99439a65d4b26.json b/graphify-out/cache/ast/v0.9.47-s2/b9bf3789223ca93f659508907e9574ccc5c15fbefd817b0aedc99439a65d4b26.json new file mode 100644 index 0000000..8904f9e --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/b9bf3789223ca93f659508907e9574ccc5c15fbefd817b0aedc99439a65d4b26.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_scripts_extract_google_news_py", "label": "extract_google_news.py", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L1"}, {"id": "$graphify-root$_scripts_extract_google_news_searchquery", "label": "SearchQuery", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L27", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "label": ".__post_init__()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L35", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_searchquery_clean_keyword", "label": ".clean_keyword()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L48", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_searchquery_clean_language", "label": ".clean_language()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L52", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_searchquery_clean_locale", "label": ".clean_locale()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L56", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_newsarticle", "label": "NewsArticle", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L61", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_google_news_newsarticle_to_dict", "label": ".to_dict()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L70", "_callable": true}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/extract_google_news.py"}, {"id": "$graphify-root$_scripts_extract_google_news_extractionresult", "label": "ExtractionResult", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L81", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_google_news_extractionresult_to_dict", "label": ".to_dict()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L92", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "label": "get_hl_gl_ceid()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L104", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "label": "_normalize_text_for_comparison()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L148", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "label": "parse_google_news_rss()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L153", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "label": "_fetch_rss_content()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L204", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_extract_google_news", "label": "extract_google_news()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L228", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_build_parser", "label": "build_parser()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L250", "_callable": true}, {"id": "argumentparser", "label": "ArgumentParser", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/extract_google_news.py"}, {"id": "$graphify-root$_scripts_extract_google_news_main", "label": "main()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L302", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_28", "label": "Value Object com par\u00e2metros de busca validados.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L28"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_62", "label": "Entidade que representa uma not\u00edcia extra\u00edda.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L62"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_82", "label": "Resultado consolidado da extra\u00e7\u00e3o.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L82"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_105", "label": "Mapeia idioma e locale para os par\u00e2metros hl, gl e ceid do Google News.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L105"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_149", "label": "Remove pontua\u00e7\u00e3o e espa\u00e7os extras para compara\u00e7\u00e3o de redund\u00e2ncia.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L149"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_154", "label": "Parseia o XML do RSS do Google News e extrai os itens estruturados.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L154"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_205", "label": "Realiza a requisi\u00e7\u00e3o HTTP ao feed RSS utilizando headers de browser com timeout.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L205"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_229", "label": "Orquestra a consulta ao Google News e retorna o resultado consolidado.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L229"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_251", "label": "Cria e configura o parser de argumentos CLI.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L251"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_303", "label": "Ponto de entrada do script CLI.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L303"}], "edges": [{"source": "$graphify-root$_scripts_extract_google_news_py", "target": "argparse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "re", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "urllib_error", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "urllib_parse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "urllib_request", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "dataclasses", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "bs4", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_searchquery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_searchquery", "target": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L35", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_searchquery", "target": "$graphify-root$_scripts_extract_google_news_searchquery_clean_keyword", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L48", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_searchquery", "target": "$graphify-root$_scripts_extract_google_news_searchquery_clean_language", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L52", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_searchquery", "target": "$graphify-root$_scripts_extract_google_news_searchquery_clean_locale", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L56", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_newsarticle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L61", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_newsarticle", "target": "$graphify-root$_scripts_extract_google_news_newsarticle_to_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L70", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_newsarticle_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L70", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_extractionresult", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L81", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extractionresult", "target": "$graphify-root$_scripts_extract_google_news_extractionresult_to_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L92", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extractionresult_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L92", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L104", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L148", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L153", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "target": "$graphify-root$_scripts_extract_google_news_newsarticle", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L153", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L204", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_extract_google_news", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L228", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_searchquery", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L228", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_extractionresult", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L228", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_build_parser", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L250", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_build_parser", "target": "argumentparser", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L250", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L302", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "target": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L185", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "target": "$graphify-root$_scripts_extract_google_news_newsarticle", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L192", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L233", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L236", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L237", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_extractionresult", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L239", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_main", "target": "$graphify-root$_scripts_extract_google_news_build_parser", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L315", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_main", "target": "$graphify-root$_scripts_extract_google_news_searchquery", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L319", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_main", "target": "$graphify-root$_scripts_extract_google_news_extract_google_news", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L332", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_28", "target": "$graphify-root$_scripts_extract_google_news_searchquery", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_62", "target": "$graphify-root$_scripts_extract_google_news_newsarticle", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L62", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_82", "target": "$graphify-root$_scripts_extract_google_news_extractionresult", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L82", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_105", "target": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L105", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_149", "target": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L149", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_154", "target": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L154", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_205", "target": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L205", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_229", "target": "$graphify-root$_scripts_extract_google_news_extract_google_news", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L229", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_251", "target": "$graphify-root$_scripts_extract_google_news_build_parser", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L251", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_303", "target": "$graphify-root$_scripts_extract_google_news_main", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L303", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L36", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "callee": "ValueError", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L37", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L39", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "callee": "ValueError", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L40", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "callee": "ValueError", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L45", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_clean_keyword", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L49", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_clean_language", "callee": "lower", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L53", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_clean_language", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L53", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_clean_locale", "callee": "upper", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L57", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_clean_locale", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L57", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_extractionresult_to_dict", "callee": "to_dict", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L100", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "replace", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L108", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "lower", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L108", "receiver": "lang_raw"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "split", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L131", "receiver": "lang_clean"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "upper", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L133", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "upper", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L133", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "upper", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L135", "receiver": "lang_clean"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "upper", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L138", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L138", "receiver": "locale"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L150", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "callee": "lower", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L150", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "callee": "sub", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L150", "receiver": "re"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "BeautifulSoup", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L158", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "BeautifulSoup", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L160", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "find_all", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L162", "receiver": "soup"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "find", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L169", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "find", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L170", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "find", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L171", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "find", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L172", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "get_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L174", "receiver": "title_tag"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "get_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L175", "receiver": "link_tag"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "get_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L176", "receiver": "pubdate_tag"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "get_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L177", "receiver": "desc_tag"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "BeautifulSoup", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L182", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "get_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L183", "receiver": "desc_soup"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "append", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L191", "receiver": "articles"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "urlopen", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L217", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "decode", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L218", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "read", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L218", "receiver": "response"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "OSError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L222"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "TimeoutError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L223"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "RuntimeError", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L225", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_extract_google_news", "callee": "quote_plus", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L232", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_extract_google_news", "callee": "isoformat", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L245", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_extract_google_news", "callee": "now", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L245", "receiver": "datetime"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "ArgumentParser", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L252", "receiver": "argparse"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L256", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L264", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L272", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L279", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "int", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_google_news.py", "source_location": "L283"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L287", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L294", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "reconfigure", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L306", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "reconfigure", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L311", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "parse_args", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L318", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L325"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L326", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "int", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_google_news.py", "source_location": "L329"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "dumps", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L333", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "to_dict", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L334", "receiver": "result"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "Path", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L340", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "mkdir", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L341", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "write_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L342", "receiver": "out_path"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L344", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L348", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L351", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/cc0e94d4e1b176d15f573d29771e7fc8f6ad87571a8f1b2862055afd3e28c7b4.json b/graphify-out/cache/ast/v0.9.47-s2/cc0e94d4e1b176d15f573d29771e7fc8f6ad87571a8f1b2862055afd3e28c7b4.json new file mode 100644 index 0000000..a0de556 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/cc0e94d4e1b176d15f573d29771e7fc8f6ad87571a8f1b2862055afd3e28c7b4.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_scripts_extract_google_news_py", "label": "extract_google_news.py", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L1"}, {"id": "$graphify-root$_scripts_extract_google_news_searchquery", "label": "SearchQuery", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L29", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "label": ".__post_init__()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L37", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_searchquery_clean_keyword", "label": ".clean_keyword()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L50", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_searchquery_clean_language", "label": ".clean_language()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L54", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_searchquery_clean_locale", "label": ".clean_locale()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L58", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_newsarticle", "label": "NewsArticle", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L63", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_google_news_newsarticle_to_dict", "label": ".to_dict()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L72", "_callable": true}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/extract_google_news.py"}, {"id": "$graphify-root$_scripts_extract_google_news_extractionresult", "label": "ExtractionResult", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L83", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_google_news_extractionresult_to_dict", "label": ".to_dict()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L94", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "label": "get_hl_gl_ceid()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L106", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "label": "_normalize_text_for_comparison()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L150", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "label": "parse_google_news_rss()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L155", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "label": "_fetch_rss_content()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L206", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_extract_google_news", "label": "extract_google_news()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L240", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_build_parser", "label": "build_parser()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L262", "_callable": true}, {"id": "argumentparser", "label": "ArgumentParser", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/extract_google_news.py"}, {"id": "$graphify-root$_scripts_extract_google_news_main", "label": "main()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L314", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_30", "label": "Value Object com par\u00e2metros de busca validados.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L30"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_64", "label": "Entidade que representa uma not\u00edcia extra\u00edda.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L64"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_84", "label": "Resultado consolidado da extra\u00e7\u00e3o.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L84"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_107", "label": "Mapeia idioma e locale para os par\u00e2metros hl, gl e ceid do Google News.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L107"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_151", "label": "Remove pontua\u00e7\u00e3o e espa\u00e7os extras para compara\u00e7\u00e3o de redund\u00e2ncia.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L151"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_156", "label": "Parseia o XML do RSS do Google News e extrai os itens estruturados.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L156"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_207", "label": "Realiza a requisi\u00e7\u00e3o ao feed RSS utilizando a biblioteca Foxcape como motor\u2026", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L207"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_241", "label": "Orquestra a consulta ao Google News e retorna o resultado consolidado.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L241"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_263", "label": "Cria e configura o parser de argumentos CLI.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L263"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_315", "label": "Ponto de entrada do script CLI.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L315"}], "edges": [{"source": "$graphify-root$_scripts_extract_google_news_py", "target": "argparse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "re", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "urllib_error", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "urllib_parse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "urllib_request", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "dataclasses", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "bs4", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "foxcape", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_searchquery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L29", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_searchquery", "target": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_searchquery", "target": "$graphify-root$_scripts_extract_google_news_searchquery_clean_keyword", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L50", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_searchquery", "target": "$graphify-root$_scripts_extract_google_news_searchquery_clean_language", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L54", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_searchquery", "target": "$graphify-root$_scripts_extract_google_news_searchquery_clean_locale", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L58", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_newsarticle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L63", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_newsarticle", "target": "$graphify-root$_scripts_extract_google_news_newsarticle_to_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L72", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_newsarticle_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L72", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_extractionresult", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L83", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extractionresult", "target": "$graphify-root$_scripts_extract_google_news_extractionresult_to_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L94", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extractionresult_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L94", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L106", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L150", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L155", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "target": "$graphify-root$_scripts_extract_google_news_newsarticle", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L155", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L206", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_extract_google_news", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L240", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_searchquery", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L240", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_extractionresult", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L240", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_build_parser", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L262", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_build_parser", "target": "argumentparser", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L262", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L314", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "target": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L187", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "target": "$graphify-root$_scripts_extract_google_news_newsarticle", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L194", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L245", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L248", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L249", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_extractionresult", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L251", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_main", "target": "$graphify-root$_scripts_extract_google_news_build_parser", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L327", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_main", "target": "$graphify-root$_scripts_extract_google_news_searchquery", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L331", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_main", "target": "$graphify-root$_scripts_extract_google_news_extract_google_news", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L344", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_30", "target": "$graphify-root$_scripts_extract_google_news_searchquery", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L30", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_64", "target": "$graphify-root$_scripts_extract_google_news_newsarticle", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L64", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_84", "target": "$graphify-root$_scripts_extract_google_news_extractionresult", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L84", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_107", "target": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L107", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_151", "target": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L151", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_156", "target": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L156", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_207", "target": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L207", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_241", "target": "$graphify-root$_scripts_extract_google_news_extract_google_news", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L241", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_263", "target": "$graphify-root$_scripts_extract_google_news_build_parser", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L263", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_315", "target": "$graphify-root$_scripts_extract_google_news_main", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L315", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L38", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "callee": "ValueError", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L39", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L41", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "callee": "ValueError", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L42", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "callee": "ValueError", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L47", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_clean_keyword", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L51", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_clean_language", "callee": "lower", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L55", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_clean_language", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L55", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_clean_locale", "callee": "upper", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L59", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_clean_locale", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L59", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_extractionresult_to_dict", "callee": "to_dict", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L102", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "replace", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L110", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "lower", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L110", "receiver": "lang_raw"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "split", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L133", "receiver": "lang_clean"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "upper", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L135", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "upper", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L135", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "upper", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L137", "receiver": "lang_clean"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "upper", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L140", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L140", "receiver": "locale"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L152", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "callee": "lower", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L152", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "callee": "sub", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L152", "receiver": "re"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "BeautifulSoup", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L160", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "BeautifulSoup", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L162", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "find_all", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L164", "receiver": "soup"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "find", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L171", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "find", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L172", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "find", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L173", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "find", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L174", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "get_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L176", "receiver": "title_tag"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "get_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L177", "receiver": "link_tag"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "get_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L178", "receiver": "pubdate_tag"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "get_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L179", "receiver": "desc_tag"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "BeautifulSoup", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L184", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "get_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L185", "receiver": "desc_soup"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "append", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L193", "receiver": "articles"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "fetch", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L212", "receiver": "Foxcape"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "RuntimeError", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L219", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "urlopen", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L232", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "decode", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L233", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "read", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L233", "receiver": "response"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "RuntimeError", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L235", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_extract_google_news", "callee": "quote_plus", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L244", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_extract_google_news", "callee": "isoformat", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L257", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_extract_google_news", "callee": "now", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L257", "receiver": "datetime"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "ArgumentParser", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L264", "receiver": "argparse"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L268", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L276", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L284", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L291", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "int", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_google_news.py", "source_location": "L295"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L299", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L306", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "reconfigure", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L318", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "reconfigure", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L323", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "parse_args", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L330", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L337"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L338", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "int", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_google_news.py", "source_location": "L341"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "dumps", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L345", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "to_dict", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L346", "receiver": "result"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "Path", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L352", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "mkdir", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L353", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "write_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L354", "receiver": "out_path"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L356", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L360", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L363", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/d2968dc459d535356d5aa2b518e356138a5e4a5c702a47c403f9fb76374e2b1f.json b/graphify-out/cache/ast/v0.9.47-s2/d2968dc459d535356d5aa2b518e356138a5e4a5c702a47c403f9fb76374e2b1f.json new file mode 100644 index 0000000..db4a0c2 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/d2968dc459d535356d5aa2b518e356138a5e4a5c702a47c403f9fb76374e2b1f.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_test_extract_google_news_py", "label": "test_extract_google_news.py", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L1"}, {"id": "fixture", "label": "fixture", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_extract_google_news.py"}, {"id": "$graphify-root$_tests_test_extract_google_news_sample_rss_xml", "label": "sample_rss_xml()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L29", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "label": "test_get_hl_gl_ceid_default_mappings()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L34", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", "label": "test_get_hl_gl_ceid_with_custom_locale()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L57", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_dynamic_fallback", "label": "test_get_hl_gl_ceid_dynamic_fallback()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L75", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "label": "test_search_query_validation()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L83", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", "label": "test_parse_google_news_rss_with_fixture()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L108", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "label": "test_extract_google_news_orchestration_mocked()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L135", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "label": "test_cli_execution_stdout()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L162", "_callable": true}, {"id": "capturefixture", "label": "CaptureFixture", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_extract_google_news.py"}, {"id": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "label": "test_cli_execution_file_output()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L181", "_callable": true}, {"id": "path", "label": "Path", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_extract_google_news.py"}, {"id": "$graphify-root$_tests_test_extract_google_news_test_cli_empty_query_error", "label": "test_cli_empty_query_error()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L196", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "label": "test_cli_network_error_handling()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L205", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_1", "label": "Testes unit\u00e1rios e de integra\u00e7\u00e3o para o Extrator de Manchetes do Google News.\u2026", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_30", "label": "Fixture que fornece o conte\u00fado do XML de exemplo para testes offline.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L30"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_35", "label": "Valida o mapeamento padr\u00e3o de idiomas para pares (hl, gl, ceid).", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L35"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_58", "label": "Valida a sobrescrita geogr\u00e1fica quando o argumento locale \u00e9 especificado.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L58"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_76", "label": "Valida fallback din\u00e2mico para idiomas regionais n\u00e3o listados explicitamente.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L76"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_84", "label": "Valida as regras de neg\u00f3cio e limites de SearchQuery.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L84"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_109", "label": "Valida o parsing do feed RSS, higieniza\u00e7\u00e3o de tags HTML e deduplica\u00e7\u00e3o.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L109"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_136", "label": "Valida a consolida\u00e7\u00e3o do ExtractionResult a partir da busca mockada.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L136"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_163", "label": "Valida execu\u00e7\u00e3o padr\u00e3o do CLI com sa\u00edda JSON no stdout.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L163"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_182", "label": "Valida grava\u00e7\u00e3o em arquivo com cria\u00e7\u00e3o autom\u00e1tica de diret\u00f3rios pais.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L182"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_197", "label": "Valida tratamento de erro e c\u00f3digo de sa\u00edda 1 para par\u00e2metro vazio.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L197"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_206", "label": "Valida tratamento de erro e c\u00f3digo de sa\u00edda 2 para falhas de rede.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L206"}], "edges": [{"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "unittest_mock", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "pytest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "scripts_extract_google_news", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_sample_rss_xml", "target": "fixture", "relation": "references", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L28", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_sample_rss_xml", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L29", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L34", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L57", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_dynamic_fallback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L75", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L83", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L108", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L135", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L162", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "target": "capturefixture", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L162", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "target": "capturefixture", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L162", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L181", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L181", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_empty_query_error", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L196", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_test_cli_empty_query_error", "target": "capturefixture", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L196", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_test_cli_empty_query_error", "target": "capturefixture", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L196", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L205", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "target": "capturefixture", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L205", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "target": "capturefixture", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L205", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_1", "target": "$graphify-root$_tests_test_extract_google_news_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_30", "target": "$graphify-root$_tests_test_extract_google_news_sample_rss_xml", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L30", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_35", "target": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L35", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_58", "target": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L58", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_76", "target": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_dynamic_fallback", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L76", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_84", "target": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L84", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_109", "target": "$graphify-root$_tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L109", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_136", "target": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L136", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_163", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L163", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_182", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L182", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_197", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_empty_query_error", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L197", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_206", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L206", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_extract_google_news_sample_rss_xml", "callee": "read_text", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L31", "receiver": "FIXTURE_PATH"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L36", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L41", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L46", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L51", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L59", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L64", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L69", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_dynamic_fallback", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L77", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "SearchQuery", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L86", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "raises", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L93", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_google_news.py", "source_location": "L93"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "SearchQuery", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L94", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "raises", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L97", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_google_news.py", "source_location": "L97"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "SearchQuery", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L98", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "raises", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L101", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_google_news.py", "source_location": "L101"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "SearchQuery", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L102", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "raises", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L104", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_google_news.py", "source_location": "L104"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "SearchQuery", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L105", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", "callee": "parse_google_news_rss", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L110", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", "callee": "startswith", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L118", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "callee": "SearchQuery", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L137", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L141", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "callee": "extract_google_news", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L144", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "callee": "ExtractionResult", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_google_news.py", "source_location": "L146"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "callee": "to_dict", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L156", "receiver": "result"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L164", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "callee": "main", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L167", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "callee": "readouterr", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L172", "receiver": "capsys"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "callee": "loads", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L173", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L185", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "callee": "main", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L188", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "callee": "exists", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L191", "receiver": "out_file"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "callee": "loads", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L192", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "callee": "read_text", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L192", "receiver": "out_file"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_empty_query_error", "callee": "main", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L198", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_empty_query_error", "callee": "readouterr", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L201", "receiver": "capsys"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L207", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "callee": "RuntimeError", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L209", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "callee": "main", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L211", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "callee": "readouterr", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L214", "receiver": "capsys"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/d7910bb4af069cb278dbc72d59247455b938efb3fca877b0464b47bd08c2c5b2.json b/graphify-out/cache/ast/v0.9.47-s2/d7910bb4af069cb278dbc72d59247455b938efb3fca877b0464b47bd08c2c5b2.json new file mode 100644 index 0000000..d79883e --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/d7910bb4af069cb278dbc72d59247455b938efb3fca877b0464b47bd08c2c5b2.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_specs_002_google_news_extractor_spec_md", "label": "spec.md", "file_type": "document", "node_kind": "page", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_002_google_news_extractor_spec_feature_specification_google_news_headlines_extractor", "label": "Feature Specification: Google News Headlines Extractor", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_002_google_news_extractor_spec_clarifications", "label": "Clarifications", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L11"}, {"id": "$graphify-root$_specs_002_google_news_extractor_spec_session_2026_08_20", "label": "Session 2026-08-20", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L13"}, {"id": "$graphify-root$_specs_002_google_news_extractor_spec_user_scenarios_testing_mandatory", "label": "User Scenarios & Testing *(mandatory)*", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L17"}, {"id": "$graphify-root$_specs_002_google_news_extractor_spec_user_story_1_extra\u00e7\u00e3o_b\u00e1sica_de_not\u00edcias_por_assunto_e_idioma_priority_p1", "label": "User Story 1 - Extra\u00e7\u00e3o B\u00e1sica de Not\u00edcias por Assunto e Idioma (Priority: P1)", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L19"}, {"id": "$graphify-root$_specs_002_google_news_extractor_spec_user_story_2_filtragem_regional_e_edi\u00e7\u00e3o_geogr\u00e1fica_priority_p2", "label": "User Story 2 - Filtragem Regional e Edi\u00e7\u00e3o Geogr\u00e1fica (Priority: P2)", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L34"}, {"id": "$graphify-root$_specs_002_google_news_extractor_spec_user_story_3_pagina\u00e7\u00e3o_e_controle_de_volume_de_resultados_priority_p3", "label": "User Story 3 - Pagina\u00e7\u00e3o e Controle de Volume de Resultados (Priority: P3)", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L49"}, {"id": "$graphify-root$_specs_002_google_news_extractor_spec_edge_cases", "label": "Edge Cases", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L64"}, {"id": "$graphify-root$_specs_002_google_news_extractor_spec_requirements_mandatory", "label": "Requirements *(mandatory)*", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L74"}, {"id": "$graphify-root$_specs_002_google_news_extractor_spec_functional_requirements", "label": "Functional Requirements", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L76"}, {"id": "$graphify-root$_specs_002_google_news_extractor_spec_key_entities", "label": "Key Entities", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L89"}, {"id": "$graphify-root$_specs_002_google_news_extractor_spec_success_criteria_mandatory", "label": "Success Criteria *(mandatory)*", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L97"}, {"id": "$graphify-root$_specs_002_google_news_extractor_spec_measurable_outcomes", "label": "Measurable Outcomes", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L99"}, {"id": "$graphify-root$_specs_002_google_news_extractor_spec_assumptions", "label": "Assumptions", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L109"}], "edges": [{"source": "$graphify-root$_specs_002_google_news_extractor_spec_md", "target": "$graphify-root$_specs_002_google_news_extractor_spec_feature_specification_google_news_headlines_extractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_spec_feature_specification_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_spec_clarifications", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_spec_clarifications", "target": "$graphify-root$_specs_002_google_news_extractor_spec_session_2026_08_20", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_spec_feature_specification_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_spec_user_scenarios_testing_mandatory", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_spec_user_scenarios_testing_mandatory", "target": "$graphify-root$_specs_002_google_news_extractor_spec_user_story_1_extra\u00e7\u00e3o_b\u00e1sica_de_not\u00edcias_por_assunto_e_idioma_priority_p1", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_spec_user_scenarios_testing_mandatory", "target": "$graphify-root$_specs_002_google_news_extractor_spec_user_story_2_filtragem_regional_e_edi\u00e7\u00e3o_geogr\u00e1fica_priority_p2", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L34", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_spec_user_scenarios_testing_mandatory", "target": "$graphify-root$_specs_002_google_news_extractor_spec_user_story_3_pagina\u00e7\u00e3o_e_controle_de_volume_de_resultados_priority_p3", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L49", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_spec_user_scenarios_testing_mandatory", "target": "$graphify-root$_specs_002_google_news_extractor_spec_edge_cases", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L64", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_spec_feature_specification_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_spec_requirements_mandatory", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L74", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_spec_requirements_mandatory", "target": "$graphify-root$_specs_002_google_news_extractor_spec_functional_requirements", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L76", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_spec_requirements_mandatory", "target": "$graphify-root$_specs_002_google_news_extractor_spec_key_entities", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L89", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_spec_feature_specification_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_spec_success_criteria_mandatory", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L97", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_spec_success_criteria_mandatory", "target": "$graphify-root$_specs_002_google_news_extractor_spec_measurable_outcomes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L99", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_spec_feature_specification_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_spec_assumptions", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L109", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/d83944755d7f6e43d8c76e032f0047be6f8c4cb2b80dea65e198f57b9c5eccd7.json b/graphify-out/cache/ast/v0.9.47-s2/d83944755d7f6e43d8c76e032f0047be6f8c4cb2b80dea65e198f57b9c5eccd7.json new file mode 100644 index 0000000..c73dde0 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/d83944755d7f6e43d8c76e032f0047be6f8c4cb2b80dea65e198f57b9c5eccd7.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_specs_002_google_news_extractor_checklists_requirements_md", "label": "requirements.md", "file_type": "document", "node_kind": "page", "source_file": "specs/002-google-news-extractor/checklists/requirements.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_002_google_news_extractor_checklists_requirements_specification_quality_checklist_google_news_headlines_extractor", "label": "Specification Quality Checklist: Google News Headlines Extractor", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/checklists/requirements.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_002_google_news_extractor_checklists_requirements_content_quality", "label": "Content Quality", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/checklists/requirements.md", "source_location": "L7"}, {"id": "$graphify-root$_specs_002_google_news_extractor_checklists_requirements_requirement_completeness", "label": "Requirement Completeness", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/checklists/requirements.md", "source_location": "L14"}, {"id": "$graphify-root$_specs_002_google_news_extractor_checklists_requirements_feature_readiness", "label": "Feature Readiness", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/checklists/requirements.md", "source_location": "L25"}, {"id": "$graphify-root$_specs_002_google_news_extractor_checklists_requirements_notes", "label": "Notes", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/checklists/requirements.md", "source_location": "L32"}], "edges": [{"source": "$graphify-root$_specs_002_google_news_extractor_checklists_requirements_md", "target": "$graphify-root$_specs_002_google_news_extractor_checklists_requirements_specification_quality_checklist_google_news_headlines_extractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/checklists/requirements.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_checklists_requirements_md", "target": "$graphify-root$_specs_002_google_news_extractor_spec_md", "relation": "references", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/checklists/requirements.md", "source_location": "L5", "weight": 1.0, "target_file": "$graphify-root$/specs/002-google-news-extractor/spec.md"}, {"source": "$graphify-root$_specs_002_google_news_extractor_checklists_requirements_specification_quality_checklist_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_checklists_requirements_content_quality", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/checklists/requirements.md", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_checklists_requirements_specification_quality_checklist_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_checklists_requirements_requirement_completeness", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/checklists/requirements.md", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_checklists_requirements_specification_quality_checklist_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_checklists_requirements_feature_readiness", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/checklists/requirements.md", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_checklists_requirements_specification_quality_checklist_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_checklists_requirements_notes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/checklists/requirements.md", "source_location": "L32", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/e6937ac9cb1b27e61bf60c0f4151afe4f0d82cfab9e02811c0fa8a50f31fdef2.json b/graphify-out/cache/ast/v0.9.47-s2/e6937ac9cb1b27e61bf60c0f4151afe4f0d82cfab9e02811c0fa8a50f31fdef2.json new file mode 100644 index 0000000..24eb342 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/e6937ac9cb1b27e61bf60c0f4151afe4f0d82cfab9e02811c0fa8a50f31fdef2.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_scripts_extract_google_news_py", "label": "extract_google_news.py", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L1"}, {"id": "$graphify-root$_scripts_extract_google_news_searchquery", "label": "SearchQuery", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L29", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "label": ".__post_init__()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L37", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_searchquery_clean_keyword", "label": ".clean_keyword()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L50", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_searchquery_clean_language", "label": ".clean_language()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L54", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_searchquery_clean_locale", "label": ".clean_locale()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L58", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_newsarticle", "label": "NewsArticle", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L63", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_google_news_newsarticle_to_dict", "label": ".to_dict()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L72", "_callable": true}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/extract_google_news.py"}, {"id": "$graphify-root$_scripts_extract_google_news_extractionresult", "label": "ExtractionResult", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L83", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_google_news_extractionresult_to_dict", "label": ".to_dict()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L94", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "label": "get_hl_gl_ceid()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L106", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "label": "_normalize_text_for_comparison()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L150", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "label": "parse_google_news_rss()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L155", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "label": "_fetch_rss_content()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L206", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_extract_google_news", "label": "extract_google_news()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L239", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_build_parser", "label": "build_parser()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L261", "_callable": true}, {"id": "argumentparser", "label": "ArgumentParser", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/extract_google_news.py"}, {"id": "$graphify-root$_scripts_extract_google_news_main", "label": "main()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L313", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_30", "label": "Value Object com par\u00e2metros de busca validados.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L30"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_64", "label": "Entidade que representa uma not\u00edcia extra\u00edda.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L64"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_84", "label": "Resultado consolidado da extra\u00e7\u00e3o.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L84"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_107", "label": "Mapeia idioma e locale para os par\u00e2metros hl, gl e ceid do Google News.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L107"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_151", "label": "Remove pontua\u00e7\u00e3o e espa\u00e7os extras para compara\u00e7\u00e3o de redund\u00e2ncia.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L151"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_156", "label": "Parseia o XML do RSS do Google News e extrai os itens estruturados.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L156"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_207", "label": "Realiza a requisi\u00e7\u00e3o HTTP ao feed RSS utilizando a biblioteca Foxcape com\u2026", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L207"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_240", "label": "Orquestra a consulta ao Google News e retorna o resultado consolidado.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L240"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_262", "label": "Cria e configura o parser de argumentos CLI.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L262"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_314", "label": "Ponto de entrada do script CLI.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L314"}], "edges": [{"source": "$graphify-root$_scripts_extract_google_news_py", "target": "argparse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "re", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "urllib_error", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "urllib_parse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "urllib_request", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "dataclasses", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "bs4", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "foxcape", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_searchquery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L29", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_searchquery", "target": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_searchquery", "target": "$graphify-root$_scripts_extract_google_news_searchquery_clean_keyword", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L50", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_searchquery", "target": "$graphify-root$_scripts_extract_google_news_searchquery_clean_language", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L54", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_searchquery", "target": "$graphify-root$_scripts_extract_google_news_searchquery_clean_locale", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L58", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_newsarticle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L63", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_newsarticle", "target": "$graphify-root$_scripts_extract_google_news_newsarticle_to_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L72", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_newsarticle_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L72", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_extractionresult", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L83", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extractionresult", "target": "$graphify-root$_scripts_extract_google_news_extractionresult_to_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L94", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extractionresult_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L94", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L106", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L150", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L155", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "target": "$graphify-root$_scripts_extract_google_news_newsarticle", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L155", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L206", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_extract_google_news", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L239", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_searchquery", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L239", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_extractionresult", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L239", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_build_parser", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L261", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_build_parser", "target": "argumentparser", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L261", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L313", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "target": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L187", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "target": "$graphify-root$_scripts_extract_google_news_newsarticle", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L194", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L244", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L247", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L248", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_extractionresult", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L250", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_main", "target": "$graphify-root$_scripts_extract_google_news_build_parser", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L326", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_main", "target": "$graphify-root$_scripts_extract_google_news_searchquery", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L330", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_main", "target": "$graphify-root$_scripts_extract_google_news_extract_google_news", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L343", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_30", "target": "$graphify-root$_scripts_extract_google_news_searchquery", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L30", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_64", "target": "$graphify-root$_scripts_extract_google_news_newsarticle", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L64", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_84", "target": "$graphify-root$_scripts_extract_google_news_extractionresult", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L84", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_107", "target": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L107", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_151", "target": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L151", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_156", "target": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L156", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_207", "target": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L207", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_240", "target": "$graphify-root$_scripts_extract_google_news_extract_google_news", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L240", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_262", "target": "$graphify-root$_scripts_extract_google_news_build_parser", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L262", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_314", "target": "$graphify-root$_scripts_extract_google_news_main", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L314", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L38", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "callee": "ValueError", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L39", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L41", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "callee": "ValueError", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L42", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "callee": "ValueError", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L47", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_clean_keyword", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L51", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_clean_language", "callee": "lower", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L55", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_clean_language", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L55", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_clean_locale", "callee": "upper", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L59", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_clean_locale", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L59", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_extractionresult_to_dict", "callee": "to_dict", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L102", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "replace", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L110", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "lower", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L110", "receiver": "lang_raw"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "split", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L133", "receiver": "lang_clean"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "upper", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L135", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "upper", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L135", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "upper", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L137", "receiver": "lang_clean"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "upper", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L140", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L140", "receiver": "locale"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L152", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "callee": "lower", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L152", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "callee": "sub", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L152", "receiver": "re"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "BeautifulSoup", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L160", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "BeautifulSoup", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L162", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "find_all", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L164", "receiver": "soup"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "find", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L171", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "find", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L172", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "find", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L173", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "find", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L174", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "get_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L176", "receiver": "title_tag"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "get_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L177", "receiver": "link_tag"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "get_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L178", "receiver": "pubdate_tag"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "get_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L179", "receiver": "desc_tag"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "BeautifulSoup", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L184", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "get_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L185", "receiver": "desc_soup"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "append", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L193", "receiver": "articles"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "fetch", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L212", "receiver": "Foxcape"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "RuntimeError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L215"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "OSError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L215"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "TimeoutError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L215"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L215"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "urlopen", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L228", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "decode", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L229", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "read", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L229", "receiver": "response"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "OSError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L233"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "TimeoutError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L234"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "RuntimeError", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L236", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_extract_google_news", "callee": "quote_plus", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L243", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_extract_google_news", "callee": "isoformat", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L256", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_extract_google_news", "callee": "now", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L256", "receiver": "datetime"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "ArgumentParser", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L263", "receiver": "argparse"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L267", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L275", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L283", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L290", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "int", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_google_news.py", "source_location": "L294"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L298", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L305", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "reconfigure", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L317", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "reconfigure", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L322", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "parse_args", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L329", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L336"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L337", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "int", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_google_news.py", "source_location": "L340"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "dumps", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L344", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "to_dict", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L345", "receiver": "result"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "Path", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L351", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "mkdir", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L352", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "write_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L353", "receiver": "out_path"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L355", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L359", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L362", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/e84b37b25f61ed209d1295f77bf84024ac6c3c818f6b98043204a9f81bff49f0.json b/graphify-out/cache/ast/v0.9.47-s2/e84b37b25f61ed209d1295f77bf84024ac6c3c818f6b98043204a9f81bff49f0.json new file mode 100644 index 0000000..e6758db --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/e84b37b25f61ed209d1295f77bf84024ac6c3c818f6b98043204a9f81bff49f0.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_specs_002_google_news_extractor_spec_md", "label": "spec.md", "file_type": "document", "node_kind": "page", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_002_google_news_extractor_spec_feature_specification_google_news_headlines_extractor", "label": "Feature Specification: Google News Headlines Extractor", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_002_google_news_extractor_spec_clarifications", "label": "Clarifications", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L10"}, {"id": "$graphify-root$_specs_002_google_news_extractor_spec_session_2026_08_20", "label": "Session 2026-08-20", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L12"}, {"id": "$graphify-root$_specs_002_google_news_extractor_spec_user_scenarios_testing_mandatory", "label": "User Scenarios & Testing *(mandatory)*", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L20"}, {"id": "$graphify-root$_specs_002_google_news_extractor_spec_user_story_1_extra\u00e7\u00e3o_b\u00e1sica_de_not\u00edcias_com_urls_finais_resolvidas_priority_p1_mvp", "label": "User Story 1 - Extra\u00e7\u00e3o B\u00e1sica de Not\u00edcias com URLs Finais Resolvidas (Priority: P1) \ud83c\udf1f MVP", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L22"}, {"id": "$graphify-root$_specs_002_google_news_extractor_spec_user_story_2_filtragem_regional_e_edi\u00e7\u00e3o_geogr\u00e1fica_priority_p2", "label": "User Story 2 - Filtragem Regional e Edi\u00e7\u00e3o Geogr\u00e1fica (Priority: P2)", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L36"}, {"id": "$graphify-root$_specs_002_google_news_extractor_spec_user_story_3_pagina\u00e7\u00e3o_exporta\u00e7\u00e3o_em_arquivo_e_feedback_visual_priority_p3", "label": "User Story 3 - Pagina\u00e7\u00e3o, Exporta\u00e7\u00e3o em Arquivo e Feedback Visual (Priority: P3)", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L50"}, {"id": "$graphify-root$_specs_002_google_news_extractor_spec_edge_cases", "label": "Edge Cases", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L64"}, {"id": "$graphify-root$_specs_002_google_news_extractor_spec_requirements_mandatory", "label": "Requirements *(mandatory)*", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L74"}, {"id": "$graphify-root$_specs_002_google_news_extractor_spec_functional_requirements", "label": "Functional Requirements", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L76"}, {"id": "$graphify-root$_specs_002_google_news_extractor_spec_success_criteria_mandatory", "label": "Success Criteria *(mandatory)*", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L92"}], "edges": [{"source": "$graphify-root$_specs_002_google_news_extractor_spec_md", "target": "$graphify-root$_specs_002_google_news_extractor_spec_feature_specification_google_news_headlines_extractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_spec_feature_specification_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_spec_clarifications", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_spec_clarifications", "target": "$graphify-root$_specs_002_google_news_extractor_spec_session_2026_08_20", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_spec_feature_specification_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_spec_user_scenarios_testing_mandatory", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_spec_user_scenarios_testing_mandatory", "target": "$graphify-root$_specs_002_google_news_extractor_spec_user_story_1_extra\u00e7\u00e3o_b\u00e1sica_de_not\u00edcias_com_urls_finais_resolvidas_priority_p1_mvp", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_spec_user_scenarios_testing_mandatory", "target": "$graphify-root$_specs_002_google_news_extractor_spec_user_story_2_filtragem_regional_e_edi\u00e7\u00e3o_geogr\u00e1fica_priority_p2", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L36", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_spec_user_scenarios_testing_mandatory", "target": "$graphify-root$_specs_002_google_news_extractor_spec_user_story_3_pagina\u00e7\u00e3o_exporta\u00e7\u00e3o_em_arquivo_e_feedback_visual_priority_p3", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L50", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_spec_feature_specification_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_spec_edge_cases", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L64", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_spec_feature_specification_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_spec_requirements_mandatory", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L74", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_spec_requirements_mandatory", "target": "$graphify-root$_specs_002_google_news_extractor_spec_functional_requirements", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L76", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_spec_feature_specification_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_spec_success_criteria_mandatory", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/spec.md", "source_location": "L92", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/f30a694c2114ef6bc58efa1caea7265dde8ef296d92cdb77c8b3e3d1f21af3a5.json b/graphify-out/cache/ast/v0.9.47-s2/f30a694c2114ef6bc58efa1caea7265dde8ef296d92cdb77c8b3e3d1f21af3a5.json new file mode 100644 index 0000000..db87ee0 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/f30a694c2114ef6bc58efa1caea7265dde8ef296d92cdb77c8b3e3d1f21af3a5.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_scripts_init_py", "label": "__init__.py", "file_type": "code", "source_file": "scripts/__init__.py", "source_location": "L1"}, {"id": "$graphify-root$_scripts_init_rationale_1", "label": "M\u00f3dulo de scripts utilit\u00e1rios do projeto.", "file_type": "rationale", "source_file": "scripts/__init__.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_scripts_init_rationale_1", "target": "$graphify-root$_scripts_init_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/__init__.py", "source_location": "L1", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/f46d0fe2c96c50cd92426af3ca85b55c81e493633b0d31eb03a576b72f474044.json b/graphify-out/cache/ast/v0.9.47-s2/f46d0fe2c96c50cd92426af3ca85b55c81e493633b0d31eb03a576b72f474044.json new file mode 100644 index 0000000..92cd7cf --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/f46d0fe2c96c50cd92426af3ca85b55c81e493633b0d31eb03a576b72f474044.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_specs_002_google_news_extractor_plan_md", "label": "plan.md", "file_type": "document", "node_kind": "page", "source_file": "specs/002-google-news-extractor/plan.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_002_google_news_extractor_plan_implementation_plan_google_news_headlines_extractor", "label": "Implementation Plan: Google News Headlines Extractor", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/plan.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_002_google_news_extractor_plan_summary", "label": "Summary", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/plan.md", "source_location": "L7"}, {"id": "$graphify-root$_specs_002_google_news_extractor_plan_technical_context", "label": "Technical Context", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/plan.md", "source_location": "L11"}, {"id": "$graphify-root$_specs_002_google_news_extractor_plan_constitution_check", "label": "Constitution Check", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/plan.md", "source_location": "L23"}, {"id": "$graphify-root$_specs_002_google_news_extractor_plan_project_structure", "label": "Project Structure", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/plan.md", "source_location": "L34"}, {"id": "$graphify-root$_specs_002_google_news_extractor_plan_documentation_this_feature", "label": "Documentation (this feature)", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/plan.md", "source_location": "L36"}, {"id": "$graphify-root$_specs_002_google_news_extractor_plan_source_code_repository_root", "label": "Source Code (repository root)", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/plan.md", "source_location": "L51"}, {"id": "$graphify-root$_specs_002_google_news_extractor_plan_complexity_tracking", "label": "Complexity Tracking", "file_type": "document", "node_kind": "heading", "source_file": "specs/002-google-news-extractor/plan.md", "source_location": "L65"}], "edges": [{"source": "$graphify-root$_specs_002_google_news_extractor_plan_md", "target": "$graphify-root$_specs_002_google_news_extractor_plan_implementation_plan_google_news_headlines_extractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/plan.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_plan_md", "target": "$graphify-root$_specs_002_google_news_extractor_spec_md", "relation": "references", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/plan.md", "source_location": "L3", "weight": 1.0, "target_file": "$graphify-root$/specs/002-google-news-extractor/spec.md"}, {"source": "$graphify-root$_specs_002_google_news_extractor_plan_implementation_plan_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_plan_summary", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/plan.md", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_plan_implementation_plan_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_plan_technical_context", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/plan.md", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_plan_implementation_plan_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_plan_constitution_check", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/plan.md", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_plan_implementation_plan_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_plan_project_structure", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/plan.md", "source_location": "L34", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_plan_project_structure", "target": "$graphify-root$_specs_002_google_news_extractor_plan_documentation_this_feature", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/plan.md", "source_location": "L36", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_plan_project_structure", "target": "$graphify-root$_specs_002_google_news_extractor_plan_source_code_repository_root", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/plan.md", "source_location": "L51", "weight": 1.0}, {"source": "$graphify-root$_specs_002_google_news_extractor_plan_implementation_plan_google_news_headlines_extractor", "target": "$graphify-root$_specs_002_google_news_extractor_plan_complexity_tracking", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/002-google-news-extractor/plan.md", "source_location": "L65", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/f9137353fa9e63c4369076e2ab1c67985043f684fb2fa2ad047894cfefc68d56.json b/graphify-out/cache/ast/v0.9.47-s2/f9137353fa9e63c4369076e2ab1c67985043f684fb2fa2ad047894cfefc68d56.json new file mode 100644 index 0000000..cb3da65 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/f9137353fa9e63c4369076e2ab1c67985043f684fb2fa2ad047894cfefc68d56.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_scripts_extract_google_news_py", "label": "extract_google_news.py", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L1"}, {"id": "$graphify-root$_scripts_extract_google_news_searchquery", "label": "SearchQuery", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L26", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "label": ".__post_init__()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L34", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_searchquery_clean_keyword", "label": ".clean_keyword()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L45", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_searchquery_clean_language", "label": ".clean_language()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L49", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_searchquery_clean_locale", "label": ".clean_locale()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L53", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_newsarticle", "label": "NewsArticle", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L58", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_google_news_newsarticle_to_dict", "label": ".to_dict()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L67", "_callable": true}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/extract_google_news.py"}, {"id": "$graphify-root$_scripts_extract_google_news_extractionresult", "label": "ExtractionResult", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L78", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_google_news_extractionresult_to_dict", "label": ".to_dict()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L89", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "label": "get_hl_gl_ceid()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L101", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "label": "_normalize_text_for_comparison()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L145", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "label": "parse_google_news_rss()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L150", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "label": "_fetch_rss_content()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L201", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_extract_google_news", "label": "extract_google_news()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L222", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_build_parser", "label": "build_parser()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L244", "_callable": true}, {"id": "argumentparser", "label": "ArgumentParser", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/extract_google_news.py"}, {"id": "$graphify-root$_scripts_extract_google_news_main", "label": "main()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L296", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_27", "label": "Value Object com par\u00e2metros de busca validados.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L27"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_59", "label": "Entidade que representa uma not\u00edcia extra\u00edda.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L59"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_79", "label": "Resultado consolidado da extra\u00e7\u00e3o.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L79"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_102", "label": "Mapeia idioma e locale para os par\u00e2metros hl, gl e ceid do Google News.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L102"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_146", "label": "Remove pontua\u00e7\u00e3o e espa\u00e7os extras para compara\u00e7\u00e3o de redund\u00e2ncia.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L146"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_151", "label": "Parseia o XML do RSS do Google News e extrai os itens estruturados.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L151"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_202", "label": "Realiza a requisi\u00e7\u00e3o HTTP ao feed RSS utilizando Foxcape com fallback\u2026", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L202"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_223", "label": "Orquestra a consulta ao Google News e retorna o resultado consolidado.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L223"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_245", "label": "Cria e configura o parser de argumentos CLI.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L245"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_297", "label": "Ponto de entrada do script CLI.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L297"}], "edges": [{"source": "$graphify-root$_scripts_extract_google_news_py", "target": "argparse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "dataclasses", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "dataclasses", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "re", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "urllib_parse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "bs4", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_searchquery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L26", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_searchquery", "target": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L34", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_searchquery", "target": "$graphify-root$_scripts_extract_google_news_searchquery_clean_keyword", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L45", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_searchquery", "target": "$graphify-root$_scripts_extract_google_news_searchquery_clean_language", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L49", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_searchquery", "target": "$graphify-root$_scripts_extract_google_news_searchquery_clean_locale", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L53", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_newsarticle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L58", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_newsarticle", "target": "$graphify-root$_scripts_extract_google_news_newsarticle_to_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L67", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_newsarticle_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L67", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_extractionresult", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L78", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extractionresult", "target": "$graphify-root$_scripts_extract_google_news_extractionresult_to_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L89", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extractionresult_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L89", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L101", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L145", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L150", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "target": "$graphify-root$_scripts_extract_google_news_newsarticle", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L150", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L201", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_extract_google_news", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L222", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_searchquery", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L222", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_extractionresult", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L222", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_build_parser", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L244", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_build_parser", "target": "argumentparser", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L244", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L296", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "target": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L182", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "target": "$graphify-root$_scripts_extract_google_news_newsarticle", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L189", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L227", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L230", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L231", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_extractionresult", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L233", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_main", "target": "$graphify-root$_scripts_extract_google_news_build_parser", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L310", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_main", "target": "$graphify-root$_scripts_extract_google_news_searchquery", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L314", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_main", "target": "$graphify-root$_scripts_extract_google_news_extract_google_news", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L327", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_27", "target": "$graphify-root$_scripts_extract_google_news_searchquery", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_59", "target": "$graphify-root$_scripts_extract_google_news_newsarticle", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L59", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_79", "target": "$graphify-root$_scripts_extract_google_news_extractionresult", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L79", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_102", "target": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L102", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_146", "target": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L146", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_151", "target": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L151", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_202", "target": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L202", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_223", "target": "$graphify-root$_scripts_extract_google_news_extract_google_news", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L223", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_245", "target": "$graphify-root$_scripts_extract_google_news_build_parser", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L245", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_297", "target": "$graphify-root$_scripts_extract_google_news_main", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L297", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L35", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "callee": "ValueError", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L36", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L38", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "callee": "ValueError", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L39", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "callee": "ValueError", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L42", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_clean_keyword", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L46", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_clean_language", "callee": "lower", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L50", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_clean_language", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L50", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_clean_locale", "callee": "upper", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L54", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_clean_locale", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L54", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_extractionresult_to_dict", "callee": "to_dict", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L97", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "replace", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L105", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "lower", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L105", "receiver": "lang_raw"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "split", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L128", "receiver": "lang_clean"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "upper", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L130", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "upper", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L130", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "upper", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L132", "receiver": "lang_clean"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "upper", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L135", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L135", "receiver": "locale"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L147", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "callee": "lower", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L147", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "callee": "sub", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L147", "receiver": "re"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "BeautifulSoup", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L155", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "BeautifulSoup", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L157", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "find_all", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L159", "receiver": "soup"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "find", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L166", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "find", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L167", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "find", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L168", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "find", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L169", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "get_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L171", "receiver": "title_tag"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "get_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L172", "receiver": "link_tag"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "get_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L173", "receiver": "pubdate_tag"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "get_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L174", "receiver": "desc_tag"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "BeautifulSoup", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L179", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "get_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L180", "receiver": "desc_soup"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "append", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L188", "receiver": "articles"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "urlopen", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L216", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "decode", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L217", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "read", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L217", "receiver": "response"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "RuntimeError", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L219", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_extract_google_news", "callee": "quote_plus", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L226", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_extract_google_news", "callee": "isoformat", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L239", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_extract_google_news", "callee": "now", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L239", "receiver": "datetime"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "ArgumentParser", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L246", "receiver": "argparse"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L250", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L258", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L266", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L273", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "int", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_google_news.py", "source_location": "L277"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L281", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L288", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "reconfigure", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L301", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "reconfigure", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L306", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "parse_args", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L313", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L320"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L321", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "int", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_google_news.py", "source_location": "L324"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "dumps", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L328", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "to_dict", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L329", "receiver": "result"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "Path", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L335", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "mkdir", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L336", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "write_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L337", "receiver": "out_path"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L339", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L343", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/stat-index.json b/graphify-out/cache/stat-index.json index abbb8da..5821781 100644 --- a/graphify-out/cache/stat-index.json +++ b/graphify-out/cache/stat-index.json @@ -1 +1 @@ -{".agents/skills/graphify/SKILL.md":{"size":41276,"mtime_ns":1787189375574389900,"indexed_at_ns":1787189383574665500,"word_count":5211,"hashes":{".agents/skills/graphify/skill.md":"3f0ba089a04e342e4337913a03515905fe205f57914b53b8eb1ff59dc926a4ea"}},".agents/skills/graphify/references/add-watch.md":{"size":2486,"mtime_ns":1787176247108301100,"indexed_at_ns":1787189352249948700,"word_count":366,"hashes":{".agents/skills/graphify/references/add-watch.md":"bc4c3ac2e736e36fff3e120b2a7967f1f049c6b05ca39db50606b4bb83c768f7"}},".agents/skills/graphify/references/exports.md":{"size":3362,"mtime_ns":1787176247109325900,"indexed_at_ns":1787189352252005200,"word_count":470,"hashes":{".agents/skills/graphify/references/exports.md":"81b09c0ad09d54d52b68755c32544024e290c02f53bdeb283b1b76d7eebc2445"}},".agents/skills/graphify/references/extraction-spec.md":{"size":7960,"mtime_ns":1787176247109325900,"indexed_at_ns":1787189352254091000,"word_count":1038,"hashes":{".agents/skills/graphify/references/extraction-spec.md":"d07c5b2e8224b1006b1a336f77d0af22f637fe8d20166895bf852c32324d851b"}},".agents/skills/graphify/references/github-and-merge.md":{"size":2177,"mtime_ns":1787176247111831300,"indexed_at_ns":1787189352255826900,"word_count":271,"hashes":{".agents/skills/graphify/references/github-and-merge.md":"189cf7c8c51988d23f6ad25dff96855ce0e7336bffa352dedb3867954e702f7b"}},".agents/skills/graphify/references/hooks.md":{"size":1267,"mtime_ns":1787176247112843500,"indexed_at_ns":1787189352257586300,"word_count":193,"hashes":{".agents/skills/graphify/references/hooks.md":"3e7d2df361e7059e921192b1693cc7859e4a2b0474446f8352be5a4624790eaa"}},".agents/skills/graphify/references/query.md":{"size":13456,"mtime_ns":1787176247113897600,"indexed_at_ns":1787189352259619700,"word_count":1763,"hashes":{".agents/skills/graphify/references/query.md":"151ad7ed0ee4aefe411f026261f605a61134cc6247324fe8df3ae1e785321283"}},".agents/skills/graphify/references/transcribe.md":{"size":3173,"mtime_ns":1787176247113897600,"indexed_at_ns":1787189352261502100,"word_count":418,"hashes":{".agents/skills/graphify/references/transcribe.md":"cbbbae90e451d722b39df0df7bc267bb9b7ecb3dd8a9e8be4b40237df053c8d6"}},".agents/skills/graphify/references/update.md":{"size":10425,"mtime_ns":1787176247115420200,"indexed_at_ns":1787189352263334600,"word_count":1196,"hashes":{".agents/skills/graphify/references/update.md":"b209dbb3bb5466e601a530b65925c55c34f040ffcf56d38ea64be9aaf75f92ce"}},".agents/skills/ponytail-audit/SKILL.md":{"size":1693,"mtime_ns":1786995804152832800,"indexed_at_ns":1787189325036907200,"word_count":234,"hashes":{".agents/skills/ponytail-audit/skill.md":"b29dd08e26692c4bdd87b024d43820e2b45527984d9b3330b5fcfc78491aac52"}},".agents/skills/ponytail-debt/SKILL.md":{"size":1747,"mtime_ns":1786995804152832800,"indexed_at_ns":1787189325037560500,"word_count":261,"hashes":{".agents/skills/ponytail-debt/skill.md":"4b8e8de454f0d7d46bce20b3f4b4ea4c5a1eb60691c0d8bef27ef4ded155e4bc"}},".agents/skills/ponytail-gain/SKILL.md":{"size":2023,"mtime_ns":1786995804154227800,"indexed_at_ns":1787189325038161300,"word_count":246,"hashes":{".agents/skills/ponytail-gain/skill.md":"9e15d99db7452555dae0cc55e5c37799e1dc8acaed4eb89c0e9641d3afbb9646"}},".agents/skills/ponytail-help/SKILL.md":{"size":2867,"mtime_ns":1786995804154227800,"indexed_at_ns":1787189325038779900,"word_count":379,"hashes":{".agents/skills/ponytail-help/skill.md":"4b6ba4d12d19068c08b12af63c05b0acc9ce3beed06654065450c0cd6042d9db"}},".agents/skills/ponytail-review/SKILL.md":{"size":2440,"mtime_ns":1786995804155238700,"indexed_at_ns":1787189325039426100,"word_count":339,"hashes":{".agents/skills/ponytail-review/skill.md":"694090b91438cff578931361d36947da438722dd1f9f7460022bb3aa5b18b4de"}},".agents/skills/ponytail/SKILL.md":{"size":6757,"mtime_ns":1786995804156239700,"indexed_at_ns":1787189325040071200,"word_count":1079,"hashes":{".agents/skills/ponytail/skill.md":"64fc6e81a1b2b008fd72f5c9686498e53383e9cb25d518dc81305799e985bf6f"}},".agents/skills/speckit-analyze/SKILL.md":{"size":11642,"mtime_ns":1787189272133064100,"indexed_at_ns":1787189325040713600,"word_count":1569,"hashes":{".agents/skills/speckit-analyze/skill.md":"12f78b5b87a05d7075320de7e7df0fc3890ee915bf5203ef2c397fee48b0d04e"}},".agents/skills/speckit-checklist/SKILL.md":{"size":22277,"mtime_ns":1787189272160379600,"indexed_at_ns":1787189325041377200,"word_count":2981,"hashes":{".agents/skills/speckit-checklist/skill.md":"1b9b592206c499d1c46699ea99fd3795ec31638e3968aa90054d07bff9f26852"}},".agents/skills/speckit-clarify/SKILL.md":{"size":19212,"mtime_ns":1787189272137533000,"indexed_at_ns":1787189325042095600,"word_count":2688,"hashes":{".agents/skills/speckit-clarify/skill.md":"d091faedcb83b3f11a3049a84424f5d66b6bdf181b192a8167c07b94133e617d"}},".agents/skills/speckit-constitution/SKILL.md":{"size":9959,"mtime_ns":1787189272141381400,"indexed_at_ns":1787189325042781900,"word_count":1376,"hashes":{".agents/skills/speckit-constitution/skill.md":"791892a3d87f7bd6ea936f896c5050b183942489d68bfb383c2ba4de8380a901"}},".agents/skills/speckit-converge/SKILL.md":{"size":12639,"mtime_ns":1787189272150381400,"indexed_at_ns":1787189325043428600,"word_count":1798,"hashes":{".agents/skills/speckit-converge/skill.md":"c04c22c94ac9a47d73d547636127b06f38647627a4dbfbc36ae50dd0a95971b3"}},".agents/skills/speckit-implement/SKILL.md":{"size":12703,"mtime_ns":1787189272146373000,"indexed_at_ns":1787189325044057400,"word_count":1691,"hashes":{".agents/skills/speckit-implement/skill.md":"a779bc551abfa24d77556554b4cc0225b3c57bc436956b9cb9aafe306c581945"}},".agents/skills/speckit-plan/SKILL.md":{"size":7857,"mtime_ns":1787189272154380100,"indexed_at_ns":1787189325044689700,"word_count":1083,"hashes":{".agents/skills/speckit-plan/skill.md":"74b5f950130fa658b857d1c81ac052d89277cbe9901c51f01270963c746277b6"}},".agents/skills/speckit-specify/SKILL.md":{"size":18258,"mtime_ns":1787189272165381000,"indexed_at_ns":1787189325045384300,"word_count":2452,"hashes":{".agents/skills/speckit-specify/skill.md":"b86e839509339a9e11a605b6db50fcd3a435511d5cbe1bbbf4f473ac4bdd5447"}},".agents/skills/speckit-tasks/SKILL.md":{"size":10978,"mtime_ns":1787189272169379600,"indexed_at_ns":1787189325046041900,"word_count":1581,"hashes":{".agents/skills/speckit-tasks/skill.md":"69de6853783574ace13eadf7c706a610df2f2584901974b713a51c1576e53339"}},".agents/skills/speckit-taskstoissues/SKILL.md":{"size":7686,"mtime_ns":1787189272172364900,"indexed_at_ns":1787189325046665600,"word_count":1153,"hashes":{".agents/skills/speckit-taskstoissues/skill.md":"fc53c7413cf050b143775a1aeca2773eabb248782a58d599b52d0d232c6c05fd"}},".specify/init-options.json":{"size":174,"mtime_ns":1787189272252382200,"indexed_at_ns":1787189325022221000,"word_count":16,"hashes":{".specify/init-options.json":"b39c8c1030871841dded0aede892fe2d25b36883333777cbab7d7c1c67b36f87"}},".specify/integration.json":{"size":279,"mtime_ns":1787189272181379700,"indexed_at_ns":1787189325023926100,"word_count":24,"hashes":{".specify/integration.json":"d7545650420a2ed3fd6878ad7006b8de79f5e812dd6352c0d86d530db3a12134"}},".specify/integrations/agy.manifest.json":{"size":1299,"mtime_ns":1787189272178366200,"indexed_at_ns":1787189325024675000,"word_count":31,"hashes":{".specify/integrations/agy.manifest.json":"504c42820b8e37a7eb26b328881026982f3a6a71fa16de670c425b35b37f00e4"}},".specify/integrations/speckit.manifest.json":{"size":1536,"mtime_ns":1787189272238379600,"indexed_at_ns":1787189325025369900,"word_count":35,"hashes":{".specify/integrations/speckit.manifest.json":"cc15502df7b241b7ef08785a613f642d69dc561b8b5db2ccba121fcb6d2c1680"}},".specify/memory/.constitution-template.json":{"size":103,"mtime_ns":1787189272257369800,"indexed_at_ns":1787189325026009300,"word_count":6,"hashes":{".specify/memory/.constitution-template.json":"a0f4bf5e5399e118b61e8bae9404743316cea6d0fff4270d8758aeb55525b988"}},".specify/memory/constitution.md":{"size":2346,"mtime_ns":1787189272254379900,"indexed_at_ns":1787189325047314000,"word_count":272,"hashes":{".specify/memory/constitution.md":"51f14d46d5b6abddce28779396666792636c8d9629f0202e84501a5e759267ab"}},".specify/scripts/powershell/check-prerequisites.ps1":{"size":6122,"mtime_ns":1787189272202379800,"indexed_at_ns":1787189325026668000,"word_count":685,"hashes":{".specify/scripts/powershell/check-prerequisites.ps1":"80f1c4dc6817140dea987bb5727d38be754679c7052f1d9a088031536423cb23"}},".specify/scripts/powershell/common.ps1":{"size":34245,"mtime_ns":1787189272206379800,"indexed_at_ns":1787189325027347800,"word_count":3419,"hashes":{".specify/scripts/powershell/common.ps1":"63b253c967802e85ab12e76ac716eca4bb164dde2b9324e08e406d848ec4104b"}},".specify/scripts/powershell/create-new-feature.ps1":{"size":13026,"mtime_ns":1787189272211369000,"indexed_at_ns":1787189325028005300,"word_count":1421,"hashes":{".specify/scripts/powershell/create-new-feature.ps1":"7b4eb36a1fbbbe9a449b5f99de1055b1aad88e775eeb0db3f86e4ff013e6ddd1"}},".specify/scripts/powershell/resolve-template.ps1":{"size":889,"mtime_ns":1787189272214379900,"indexed_at_ns":1787189325028621300,"word_count":86,"hashes":{".specify/scripts/powershell/resolve-template.ps1":"78234a87c584e697a8fda8b18f134914e41465cbb67c1608b81e69860741502c"}},".specify/scripts/powershell/setup-plan.ps1":{"size":2927,"mtime_ns":1787189272218379500,"indexed_at_ns":1787189325029271700,"word_count":325,"hashes":{".specify/scripts/powershell/setup-plan.ps1":"4d5b636734ae78061da3a7675f0af4acfa6b65f7d994d5372c8c051f25bb8966"}},".specify/scripts/powershell/setup-tasks.ps1":{"size":3892,"mtime_ns":1787189272221379900,"indexed_at_ns":1787189325029900900,"word_count":429,"hashes":{".specify/scripts/powershell/setup-tasks.ps1":"5c980d1a41d186b634bc350128c31e5f3074099b996989c0a0d95b22623b2932"}},".specify/templates/checklist-template.md":{"size":2033,"mtime_ns":1787189272223379700,"indexed_at_ns":1787189325047907900,"word_count":271,"hashes":{".specify/templates/checklist-template.md":"6fb0a979b8534e1b3343d1ce6e45f84d32b118e096620bfdeed241dbc1a1da8a"}},".specify/templates/constitution-template.md":{"size":2346,"mtime_ns":1787189272226379800,"indexed_at_ns":1787189325048534600,"word_count":272,"hashes":{".specify/templates/constitution-template.md":"ae22b7c7ecb6ccd516fed25916e465146432c58f1bef904a92b535ac0bbecfcf"}},".specify/templates/plan-template.md":{"size":3682,"mtime_ns":1787189272229368600,"indexed_at_ns":1787189325049160100,"word_count":463,"hashes":{".specify/templates/plan-template.md":"e5cfe5097c5de0add0f0de02b7a5d2cd2470c9a2f24c0e6e15439d274e12abe0"}},".specify/templates/spec-template.md":{"size":4556,"mtime_ns":1787189272231368600,"indexed_at_ns":1787189325049780800,"word_count":629,"hashes":{".specify/templates/spec-template.md":"2734a509d4b2f34ee6258475c4fb2e80a6dbfcbc47c8552df5b6278907529250"}},".specify/templates/tasks-template.md":{"size":9171,"mtime_ns":1787189272234379700,"indexed_at_ns":1787189325050369300,"word_count":1384,"hashes":{".specify/templates/tasks-template.md":"070ed0dfafd8310a243b51cc30b1b6dfb19883fdd5ad20e4b53e45eb7f939e3e"}},".specify/workflows/speckit/workflow.yml":{"size":2216,"mtime_ns":1787160407462626700,"indexed_at_ns":1787189324996696100,"word_count":276},".specify/workflows/workflow-registry.json":{"size":381,"mtime_ns":1787189272250379800,"indexed_at_ns":1787189325030509700,"word_count":34,"hashes":{".specify/workflows/workflow-registry.json":"2c5bf7f4ba03ddf54945cd64d4740301036c18ebea47448d93ff428c771eff3d"}},".agents/rules/graphify.md":{"size":947,"mtime_ns":1787189347444181700,"indexed_at_ns":1787189352246818600,"word_count":127,"hashes":{".agents/rules/graphify.md":"e55792958648fb69255e3ce3f71a8fcead36307c34b2d67feda9ac650ac61803"}},".agents/workflows/graphify.md":{"size":239,"mtime_ns":1787189347444181700,"indexed_at_ns":1787189352301037700,"word_count":37,"hashes":{".agents/workflows/graphify.md":"d92622463299d313da48e2cdbebf79d7ea24ffaf2ae2de2a1714be8ee42b22b3"}},"specs/001-multilingual-entity-classifier/checklists/requirements.md":{"size":1897,"mtime_ns":1787193985655018100,"indexed_at_ns":1787194002726038300,"word_count":258,"hashes":{"specs/001-multilingual-entity-classifier/checklists/requirements.md":"277036c8add1bae5eeae6da5595cf66405670d33f9d4842784b1c5581cef62d0"}},"specs/001-multilingual-entity-classifier/spec.md":{"size":10753,"mtime_ns":1787194850510689300,"indexed_at_ns":1787194930726970700,"word_count":1423,"hashes":{"specs/001-multilingual-entity-classifier/spec.md":"f136d1d2e6a539072ea238be9d0e918dbc32eb89555ffd37e9b84579064e7799"}},"specs/001-multilingual-entity-classifier/contracts/cli-contract.md":{"size":1808,"mtime_ns":1787194605824187100,"indexed_at_ns":1787194638410863000,"word_count":281,"hashes":{"specs/001-multilingual-entity-classifier/contracts/cli-contract.md":"894670a7228b93a2202203ac532aa0d415bd1921272b61a8d07e951a417bc75c"}},"specs/001-multilingual-entity-classifier/data-model.md":{"size":5137,"mtime_ns":1787194591677816000,"indexed_at_ns":1787194638411601100,"word_count":524,"hashes":{"specs/001-multilingual-entity-classifier/data-model.md":"89ecf2e55508b53ba208d011a76868294f0ff3cab87a217e7ed73c19edfbd9f6"}},"specs/001-multilingual-entity-classifier/plan.md":{"size":6215,"mtime_ns":1787194897854106700,"indexed_at_ns":1787194930724386200,"word_count":782,"hashes":{"specs/001-multilingual-entity-classifier/plan.md":"d37d1c5f3bffc4dad289ad128024ab6dffb409b06f49e96fc5a2fd2a735472a5"}},"specs/001-multilingual-entity-classifier/quickstart.md":{"size":3235,"mtime_ns":1787194877439851000,"indexed_at_ns":1787194930725082000,"word_count":339,"hashes":{"specs/001-multilingual-entity-classifier/quickstart.md":"816060813a37d728ceed955aa829d7fa4f80862f0932133cd5293bdbfdbd40db"}},"specs/001-multilingual-entity-classifier/research.md":{"size":4059,"mtime_ns":1787194581004019000,"indexed_at_ns":1787194638413783100,"word_count":509,"hashes":{"specs/001-multilingual-entity-classifier/research.md":"d4b61795fb09da693ead647d4c05e8f44699c36e9f43b47e808e09a2f970d996"}},"specs/001-multilingual-entity-classifier/tasks.md":{"size":6951,"mtime_ns":1787196452595599000,"indexed_at_ns":1787196460266934400,"word_count":874,"hashes":{"specs/001-multilingual-entity-classifier/tasks.md":"7a33202595cf192baf702d3d8e169ea8db59ca0f2fecb471594f7f3c48417082"}},"specs/001-multilingual-entity-classifier/checklists/poc-readiness.md":{"size":4154,"mtime_ns":1787195218247525200,"indexed_at_ns":1787195224690016000,"word_count":546,"hashes":{"specs/001-multilingual-entity-classifier/checklists/poc-readiness.md":"6da9d16dcd60e927f892c69aa05945e99840b6dc824f93ea2686f12801e81a8a"}},"classify.py":{"size":6155,"mtime_ns":1787197110375362700,"indexed_at_ns":1787197157466076000,"word_count":484,"hashes":{"classify.py":"d139cd5f045a922bfca70c7c521498f0120a569e438d9864c2e508440977af29"}},"examples/content_northvolt_de.md":{"size":530,"mtime_ns":1787195963813740900,"indexed_at_ns":1787196460246681400,"word_count":57,"hashes":{"examples/content_northvolt_de.md":"5708f5dac050fea9c5e4fbdee40910cbb4c4be0efc9c3212f7cf2a7a034eb91d"}},"examples/content_presal_pt.md":{"size":506,"mtime_ns":1787195950024799800,"indexed_at_ns":1787196460247532700,"word_count":72,"hashes":{"examples/content_presal_pt.md":"ef8c7d61a4d721f7d702fa608274da920476be3a4f7bfe6e4f603abba12a133f"}},"examples/content_tangential_es.md":{"size":414,"mtime_ns":1787195975527150700,"indexed_at_ns":1787196460248387000,"word_count":60,"hashes":{"examples/content_tangential_es.md":"d02c405931b0752377a2ba10cbffe4d664713e33c3b6a8fbdd36b4a75b30f11b"}},"examples/ecp_apple.json":{"size":723,"mtime_ns":1787195969757856700,"indexed_at_ns":1787196460143672700,"word_count":68,"hashes":{"examples/ecp_apple.json":"166fb76e5d0d181835dd636450b6828565c2baafcb21228313bcea3c850d9a92"}},"examples/ecp_petrobras.json":{"size":714,"mtime_ns":1787195944394575600,"indexed_at_ns":1787196460144504800,"word_count":62,"hashes":{"examples/ecp_petrobras.json":"5dd24cf4d5cb9f636f3a1c2511eeaa152be0511b80974a4f36d5d68aded046db"}},"examples/ecp_volkswagen.json":{"size":720,"mtime_ns":1787195955456870500,"indexed_at_ns":1787196460145217300,"word_count":56,"hashes":{"examples/ecp_volkswagen.json":"3d3866179c67e332ad5aa46f5d15eeb4de3fa829d1cc21ccf73cc7f3a7eb32c5"}},"pyproject.toml":{"size":478,"mtime_ns":1787195827330501700,"indexed_at_ns":1787196460145901100,"word_count":50,"hashes":{"pyproject.toml":"c99485b6d21e12747a3a94217e80572f77a3cc0e2ac155a22565ff7bd94923fa"}},"requirements.txt":{"size":155,"mtime_ns":1787195817478218200,"indexed_at_ns":1787196459879639800,"word_count":21},"src/__init__.py":{"size":83,"mtime_ns":1787195832559486000,"indexed_at_ns":1787196460146819200,"word_count":9,"hashes":{"src/__init__.py":"81c4eae46f05fd529d4f81f2d318c2b4e3af282f140963e9c5c876690bb1ca74"}},"src/adapters/__init__.py":{"size":73,"mtime_ns":1787195842271676800,"indexed_at_ns":1787196460147577400,"word_count":9,"hashes":{"src/adapters/__init__.py":"f4dcecfaeea2ae0852fd9836bfb4f9b2a9bedd60057157064e6d3fed4a8c1bd7"}},"src/adapters/base.py":{"size":993,"mtime_ns":1787196396619994900,"indexed_at_ns":1787196460148332300,"word_count":103,"hashes":{"src/adapters/base.py":"9ac400ed397a6344d870d842eac4ba1dd388b95aa8178eb5c6761642948724e5"}},"src/adapters/embeddings.py":{"size":1421,"mtime_ns":1787196402748426100,"indexed_at_ns":1787196460149090900,"word_count":140,"hashes":{"src/adapters/embeddings.py":"88dfea4ba85c6d996d52eddd56d00cc625642c1ae4f371c80483c592ff77730e"}},"src/adapters/llm.py":{"size":1271,"mtime_ns":1787196408180450900,"indexed_at_ns":1787196460149934600,"word_count":136,"hashes":{"src/adapters/llm.py":"259e6ea0b5941f3d5c168775fad2d0fc2b47404b900a1c14f5b4c0ae74201a4a"}},"src/classifier.py":{"size":9632,"mtime_ns":1787197085025044700,"indexed_at_ns":1787197157479422500,"word_count":826,"hashes":{"src/classifier.py":"5b4fb6d6d36903918dda91c9be971ec0314cb2355c3814418f12b9e04a206796"}},"src/language.py":{"size":7515,"mtime_ns":1787196384554574400,"indexed_at_ns":1787196460151564300,"word_count":896,"hashes":{"src/language.py":"cea675866db47e33cdc2d0ae5817d96308d38024813ba4aafb410df92d38aab2"}},"src/models.py":{"size":5997,"mtime_ns":1787195855326628100,"indexed_at_ns":1787196460152268300,"word_count":491,"hashes":{"src/models.py":"06a87c0cfa02cedb689c3994d7dcfae40c0ef4c9d6c310880bf38675b7634c44"}},"src/parser.py":{"size":2679,"mtime_ns":1787195873911980500,"indexed_at_ns":1787196460152923000,"word_count":302,"hashes":{"src/parser.py":"9c09324ba1dac303bd3a9da944fcf6953cc932c0f3a3c4dd0bbf039a30682ec2"}},"tests/__init__.py":{"size":69,"mtime_ns":1787195847518641200,"indexed_at_ns":1787196460153585600,"word_count":8,"hashes":{"tests/__init__.py":"2acdae7d2696c23d5391ed343046cffa11b82f3f0d7d85767dacf0e762a955d1"}},"tests/fixtures/benchmark_24/de/contextual.md":{"size":144,"mtime_ns":1787196180779459400,"indexed_at_ns":1787196460268138600,"word_count":17,"hashes":{"tests/fixtures/benchmark_24/de/contextual.md":"b6a18c4bef2defe99773d3ba43137148d25b42ac27562b10b73ccdee1a49f203"}},"tests/fixtures/benchmark_24/de/contextual_expected.json":{"size":136,"mtime_ns":1787196187032823100,"indexed_at_ns":1787196460154321700,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/de/contextual_expected.json":"cb741ed9bef3359a41d5c031ad213d4320c5b8fe3f8579e497ee9b1eda0ed478"}},"tests/fixtures/benchmark_24/de/direct.md":{"size":148,"mtime_ns":1787196169572812500,"indexed_at_ns":1787196460269192500,"word_count":16,"hashes":{"tests/fixtures/benchmark_24/de/direct.md":"67f375d26d8424655b76d5650c656b4af79b9964d52f2d24049e1f4de6545c9b"}},"tests/fixtures/benchmark_24/de/direct_expected.json":{"size":132,"mtime_ns":1787196175168070900,"indexed_at_ns":1787196460155004400,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/de/direct_expected.json":"5301a39d31b365266b529ce9823145381241f8876af1ec21f0a9c27c9bdc80fa"}},"tests/fixtures/benchmark_24/de/ecp.json":{"size":579,"mtime_ns":1787196164027193900,"indexed_at_ns":1787196460155664300,"word_count":40,"hashes":{"tests/fixtures/benchmark_24/de/ecp.json":"061fc3a9468d2baaaf2b3e8355d08d23261a9a7adc484cb06b45646eacba46fc"}},"tests/fixtures/benchmark_24/de/not_related.md":{"size":137,"mtime_ns":1787196204093781400,"indexed_at_ns":1787196460270056100,"word_count":21,"hashes":{"tests/fixtures/benchmark_24/de/not_related.md":"4904b694b45a2058614a4e4350046eee042c4bbd7bcd6b88c56408ee3aebd81d"}},"tests/fixtures/benchmark_24/de/not_related_expected.json":{"size":129,"mtime_ns":1787196209729787600,"indexed_at_ns":1787196460156391600,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/de/not_related_expected.json":"730fa882c1f3b8a7c0e2d3da9af55ee57ad7425a8b304c11f54e01899c740952"}},"tests/fixtures/benchmark_24/de/tangential.md":{"size":150,"mtime_ns":1787196193187087300,"indexed_at_ns":1787196460270857700,"word_count":21,"hashes":{"tests/fixtures/benchmark_24/de/tangential.md":"8207068977006dafa7c9c4459bd996b5c124972d25f1015a589d3b06d0999613"}},"tests/fixtures/benchmark_24/de/tangential_expected.json":{"size":128,"mtime_ns":1787196198703847300,"indexed_at_ns":1787196460157130400,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/de/tangential_expected.json":"82dea5e55d7586c4e7005755e3da4f44560238733094876047de51e854d41d92"}},"tests/fixtures/benchmark_24/en/contextual.md":{"size":148,"mtime_ns":1787196066427405900,"indexed_at_ns":1787196460271878300,"word_count":19,"hashes":{"tests/fixtures/benchmark_24/en/contextual.md":"258a9f1ae01dae52955c1f45cb176e7d981a72ba869c33232c8c295f4816acc0"}},"tests/fixtures/benchmark_24/en/contextual_expected.json":{"size":136,"mtime_ns":1787196073211713100,"indexed_at_ns":1787196460158457500,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/en/contextual_expected.json":"70605f9d8901d4c4b99d9fda1f30bc114cb0b65893579f77a1f9d50f62c1e3fc"}},"tests/fixtures/benchmark_24/en/direct.md":{"size":155,"mtime_ns":1787196054149613200,"indexed_at_ns":1787196460272766400,"word_count":21,"hashes":{"tests/fixtures/benchmark_24/en/direct.md":"c7e0b093c386ccf19d9d7cbef4763dfb665213a7a245093af43529b1eaff8266"}},"tests/fixtures/benchmark_24/en/direct_expected.json":{"size":132,"mtime_ns":1787196059966736300,"indexed_at_ns":1787196460159526700,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/en/direct_expected.json":"0b803b2ad37388be7ef4ea1d164db22c9fd784bcb9be6f56627d412f1f9299bc"}},"tests/fixtures/benchmark_24/en/ecp.json":{"size":594,"mtime_ns":1787197123717795600,"indexed_at_ns":1787197157494285900,"word_count":52,"hashes":{"tests/fixtures/benchmark_24/en/ecp.json":"601423ac1e0b0e2bb7a0151ac87f5bdfd32450d90a022eaf9ef030338e0b4893"}},"tests/fixtures/benchmark_24/en/not_related.md":{"size":146,"mtime_ns":1787196350333465500,"indexed_at_ns":1787196460273595300,"word_count":24,"hashes":{"tests/fixtures/benchmark_24/en/not_related.md":"2fa405b123733c5a9b5beba8c646b886b27e212cff55496a9fe7d6208ddfb11c"}},"tests/fixtures/benchmark_24/en/not_related_expected.json":{"size":129,"mtime_ns":1787196104521133100,"indexed_at_ns":1787196460161344300,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/en/not_related_expected.json":"cb046b055b5c72d8146b6035a935211d60fb0b313ef819576bb8e7048d55f468"}},"tests/fixtures/benchmark_24/en/tangential.md":{"size":147,"mtime_ns":1787196082730266300,"indexed_at_ns":1787196460274648200,"word_count":25,"hashes":{"tests/fixtures/benchmark_24/en/tangential.md":"793acebc11e5d6c17872d56881c8fe99cb187116c38fa4b2647d28fe3063a61e"}},"tests/fixtures/benchmark_24/en/tangential_expected.json":{"size":128,"mtime_ns":1787196089699545000,"indexed_at_ns":1787196460162151700,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/en/tangential_expected.json":"d5b1a4dc64246838a066f73c41f0e33dcd59636e61d6c0842a3728247e536aff"}},"tests/fixtures/benchmark_24/es/contextual.md":{"size":167,"mtime_ns":1787196129959491900,"indexed_at_ns":1787196460275850900,"word_count":22,"hashes":{"tests/fixtures/benchmark_24/es/contextual.md":"d45ef46752e2093455e35cbf97076f943ab2be736c9bc4580607960b9d068731"}},"tests/fixtures/benchmark_24/es/contextual_expected.json":{"size":136,"mtime_ns":1787196135705341100,"indexed_at_ns":1787196460162957600,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/es/contextual_expected.json":"083f7153df08f93f595782eb2959e8505ac4bda4daaf6634c7a11d444c1ba6b0"}},"tests/fixtures/benchmark_24/es/direct.md":{"size":179,"mtime_ns":1787196118640588800,"indexed_at_ns":1787196460276716800,"word_count":29,"hashes":{"tests/fixtures/benchmark_24/es/direct.md":"f6e282a68830d5518285b0cda510fe57fa844cc6322979604a427797f07fdbd7"}},"tests/fixtures/benchmark_24/es/direct_expected.json":{"size":132,"mtime_ns":1787196124282103900,"indexed_at_ns":1787196460163727400,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/es/direct_expected.json":"fb96e4ae9e2e1603b9ac4d31b6984b31d814b3f31a8a3ca03c52c1ffa4199471"}},"tests/fixtures/benchmark_24/es/ecp.json":{"size":590,"mtime_ns":1787196110761765400,"indexed_at_ns":1787196460164509700,"word_count":52,"hashes":{"tests/fixtures/benchmark_24/es/ecp.json":"09cad55a4cc5a8c04b9898dee21c28b0d40561fcdd8ff012fe4de96616c05f7f"}},"tests/fixtures/benchmark_24/es/not_related.md":{"size":148,"mtime_ns":1787196152611035900,"indexed_at_ns":1787196460277631800,"word_count":23,"hashes":{"tests/fixtures/benchmark_24/es/not_related.md":"1b8a7f7a6852c9ec33fc34513ab479bd5edba48762a0801f7982e48adcb0089b"}},"tests/fixtures/benchmark_24/es/not_related_expected.json":{"size":129,"mtime_ns":1787196158098444000,"indexed_at_ns":1787196460165309300,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/es/not_related_expected.json":"01645746a62894e6448895d9bf5eac394e94e54711d7f519d2ed14d8b8957487"}},"tests/fixtures/benchmark_24/es/tangential.md":{"size":141,"mtime_ns":1787196141436479100,"indexed_at_ns":1787196460278451000,"word_count":23,"hashes":{"tests/fixtures/benchmark_24/es/tangential.md":"41888c762fdc38fb9d5a6dc39373ac2e38331ba4520535088efef8943ea40e49"}},"tests/fixtures/benchmark_24/es/tangential_expected.json":{"size":128,"mtime_ns":1787196147026058000,"indexed_at_ns":1787196460166503400,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/es/tangential_expected.json":"aac2bd9ab5946710c62dc0a8daf8b1481462bed081e11db4558c08ef917fcf81"}},"tests/fixtures/benchmark_24/fr/contextual.md":{"size":167,"mtime_ns":1787196288415259700,"indexed_at_ns":1787196460279288100,"word_count":23,"hashes":{"tests/fixtures/benchmark_24/fr/contextual.md":"8a36d5737429e743ffbdc8c6ae78bcc9410915e048056dbd1fb4d3d493ac7ec6"}},"tests/fixtures/benchmark_24/fr/contextual_expected.json":{"size":136,"mtime_ns":1787196295706997200,"indexed_at_ns":1787196460167650500,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/fr/contextual_expected.json":"4a155288609fc5c935a39a633d7185109629871380b88af1c367922e44abe900"}},"tests/fixtures/benchmark_24/fr/direct.md":{"size":160,"mtime_ns":1787196277020128300,"indexed_at_ns":1787196460280073100,"word_count":20,"hashes":{"tests/fixtures/benchmark_24/fr/direct.md":"f218d9c8ada6c31e813c41bcb5e6a081a1df526022b907795065c0f845480077"}},"tests/fixtures/benchmark_24/fr/direct_expected.json":{"size":132,"mtime_ns":1787196282775093400,"indexed_at_ns":1787196460168573600,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/fr/direct_expected.json":"b93c2059a731e06a164fe1331e1c7ff01fb741f728c8aa1df151ee51bc993268"}},"tests/fixtures/benchmark_24/fr/ecp.json":{"size":600,"mtime_ns":1787197131861351500,"indexed_at_ns":1787197157506006100,"word_count":50,"hashes":{"tests/fixtures/benchmark_24/fr/ecp.json":"f2e7f9eafa1fd24514541868c83db90b69784d5faf4e8d039d79d11597b51428"}},"tests/fixtures/benchmark_24/fr/not_related.md":{"size":181,"mtime_ns":1787196312472120100,"indexed_at_ns":1787196460280811500,"word_count":30,"hashes":{"tests/fixtures/benchmark_24/fr/not_related.md":"475984d25541d876b7d9e3e8f7cff7b3db2bc1489c25d6612b911da6d2b2af8e"}},"tests/fixtures/benchmark_24/fr/not_related_expected.json":{"size":129,"mtime_ns":1787196317906240800,"indexed_at_ns":1787196460170379300,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/fr/not_related_expected.json":"31b3104faa21c2a417399fdd85d077d1c58fe74ee33fd41b0942580be6f81267"}},"tests/fixtures/benchmark_24/fr/tangential.md":{"size":158,"mtime_ns":1787196301225610200,"indexed_at_ns":1787196460281594400,"word_count":25,"hashes":{"tests/fixtures/benchmark_24/fr/tangential.md":"7f6c6ab84d2a26675f9f16fb23d45cf1e97b3ff5e28fb98df6aeaa2368d2c305"}},"tests/fixtures/benchmark_24/fr/tangential_expected.json":{"size":128,"mtime_ns":1787196306729905200,"indexed_at_ns":1787196460171141500,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/fr/tangential_expected.json":"cc117a22ba73be1b308d377767ca0ae8da8e5889ccdaa430893b3ae70a58c9ca"}},"tests/fixtures/benchmark_24/it/contextual.md":{"size":150,"mtime_ns":1787196234462201200,"indexed_at_ns":1787196460283346800,"word_count":21,"hashes":{"tests/fixtures/benchmark_24/it/contextual.md":"045391f6f676add7e1ae9391419ef65442259ab90f9cacb5caca4d468d292017"}},"tests/fixtures/benchmark_24/it/contextual_expected.json":{"size":136,"mtime_ns":1787196240055631300,"indexed_at_ns":1787196460171870600,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/it/contextual_expected.json":"b2b4b297f43e5af1cda526e259acede43a31b552c0321bee1ce1c72572cec557"}},"tests/fixtures/benchmark_24/it/direct.md":{"size":145,"mtime_ns":1787196221664473400,"indexed_at_ns":1787196460284281100,"word_count":23,"hashes":{"tests/fixtures/benchmark_24/it/direct.md":"d54bad27d944692fa7f00a036f882d1c0e42d189241822adcae86edf73a444da"}},"tests/fixtures/benchmark_24/it/direct_expected.json":{"size":132,"mtime_ns":1787196228986408600,"indexed_at_ns":1787196460172673300,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/it/direct_expected.json":"f94e71dc4b78c0646190ff288f08dab46c67f2356b8b75cc515c28af7c9c423c"}},"tests/fixtures/benchmark_24/it/ecp.json":{"size":529,"mtime_ns":1787196215715634300,"indexed_at_ns":1787196460173452600,"word_count":45,"hashes":{"tests/fixtures/benchmark_24/it/ecp.json":"bcbd12d3057368618b006c24f384341f91349c713d10a3028d3eb4afada32de6"}},"tests/fixtures/benchmark_24/it/not_related.md":{"size":153,"mtime_ns":1787196259362992300,"indexed_at_ns":1787196460285099000,"word_count":23,"hashes":{"tests/fixtures/benchmark_24/it/not_related.md":"bca227c7b17fd4404e5ca1d082b848981c1da28d0b657df1e025c03056387f13"}},"tests/fixtures/benchmark_24/it/not_related_expected.json":{"size":129,"mtime_ns":1787196265318256200,"indexed_at_ns":1787196460174468400,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/it/not_related_expected.json":"d007ac531224ad0834e9a8807582d0e047524be4c30fffdd1a19a51dba36d85d"}},"tests/fixtures/benchmark_24/it/tangential.md":{"size":155,"mtime_ns":1787196245918356300,"indexed_at_ns":1787196460285993500,"word_count":23,"hashes":{"tests/fixtures/benchmark_24/it/tangential.md":"a78a886f11462033c996a20b629e13c6bb55d4e08ffed20601cd4ea877b9db09"}},"tests/fixtures/benchmark_24/it/tangential_expected.json":{"size":128,"mtime_ns":1787196252898853500,"indexed_at_ns":1787196460175957500,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/it/tangential_expected.json":"18872f6fe4cbd71812566494e88bd97633d696f732b3b5bad871f81076703f74"}},"tests/fixtures/benchmark_24/pt/contextual.md":{"size":125,"mtime_ns":1787196014201071400,"indexed_at_ns":1787196460286845200,"word_count":18,"hashes":{"tests/fixtures/benchmark_24/pt/contextual.md":"e9ea12885a5c68822f96691e543b55885afba3d00a9e0fa65837bd88e559f157"}},"tests/fixtures/benchmark_24/pt/contextual_expected.json":{"size":136,"mtime_ns":1787196019487136800,"indexed_at_ns":1787196460176915600,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/pt/contextual_expected.json":"34145a845a7f6b155bf42c028bb0c6d8d43ed5cd0b1d179c089b1e621fecd08f"}},"tests/fixtures/benchmark_24/pt/direct.md":{"size":140,"mtime_ns":1787196003236562000,"indexed_at_ns":1787196460287899900,"word_count":21,"hashes":{"tests/fixtures/benchmark_24/pt/direct.md":"150182b9c1352163cb136c19141b85b3f0323e7eaa0cd023fce1dfef0de63d29"}},"tests/fixtures/benchmark_24/pt/direct_expected.json":{"size":132,"mtime_ns":1787196008785189600,"indexed_at_ns":1787196460177800600,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/pt/direct_expected.json":"a9c666394db6a6e2fcd503d8cf67549531ee9e70eb73b1edb2b6a2443316cbf2"}},"tests/fixtures/benchmark_24/pt/ecp.json":{"size":507,"mtime_ns":1787195997549710300,"indexed_at_ns":1787196460178615000,"word_count":40,"hashes":{"tests/fixtures/benchmark_24/pt/ecp.json":"cec78c3ed8d2ec311d079239922a10a35a7fc9c382d8886fec81c6322d2a70ac"}},"tests/fixtures/benchmark_24/pt/not_related.md":{"size":124,"mtime_ns":1787196036724084200,"indexed_at_ns":1787196460288769500,"word_count":19,"hashes":{"tests/fixtures/benchmark_24/pt/not_related.md":"3af103a7f0df8e93c6154157e9903dc7fc10d64fa69dd7c2b08d4f68b99b1972"}},"tests/fixtures/benchmark_24/pt/not_related_expected.json":{"size":129,"mtime_ns":1787196042201218800,"indexed_at_ns":1787196460179403700,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/pt/not_related_expected.json":"d5ce36bca028f31ba472e325993610eb82f98e1a8f84fa770bf92aa7158ce954"}},"tests/fixtures/benchmark_24/pt/tangential.md":{"size":140,"mtime_ns":1787196024978861700,"indexed_at_ns":1787196460289652400,"word_count":24,"hashes":{"tests/fixtures/benchmark_24/pt/tangential.md":"77d86f819ccbefe9830a57151354ca47d83e46b3d0e55d0f5139f37a1d9df0b8"}},"tests/fixtures/benchmark_24/pt/tangential_expected.json":{"size":128,"mtime_ns":1787196030395574000,"indexed_at_ns":1787196460180223100,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/pt/tangential_expected.json":"fb977fec8db613f9545c81adffe0295084c6198b5f7c9a85d8901a228de63a51"}},"tests/test_adapters.py":{"size":1165,"mtime_ns":1787196418632815700,"indexed_at_ns":1787196460180932200,"word_count":91,"hashes":{"tests/test_adapters.py":"8f251df2dd437652fcec9067de65259150a8ab268da9e6130525c616ae6482d9"}},"tests/test_benchmark_24.py":{"size":2787,"mtime_ns":1787196325540979600,"indexed_at_ns":1787196460181671200,"word_count":260,"hashes":{"tests/test_benchmark_24.py":"8531c79d25c9512f12066b7f4d807b80edfd4a304c59c616b364ce6724317252"}},"tests/test_classifier.py":{"size":3833,"mtime_ns":1787196364719572900,"indexed_at_ns":1787196460182437000,"word_count":351,"hashes":{"tests/test_classifier.py":"2ebb64b34c89563c5b8d34bc55249a03caf4fb4fd10d486b3f879d9abb273592"}},"tests/test_cli.py":{"size":3575,"mtime_ns":1787195939567137000,"indexed_at_ns":1787196460183174100,"word_count":302,"hashes":{"tests/test_cli.py":"11042bbc99e66b090af8640e547bcbfd57fe228c8fdf0b5f32a9267eca0fc291"}},"tests/test_language.py":{"size":1920,"mtime_ns":1787195891332966800,"indexed_at_ns":1787196460183874300,"word_count":239,"hashes":{"tests/test_language.py":"aca16328c2dd212cd8fd20b874a7d957d070e43a10b8730e4cc8e6b561fcc6e9"}},"tests/test_models.py":{"size":3700,"mtime_ns":1787195886500998800,"indexed_at_ns":1787196460184612900,"word_count":308,"hashes":{"tests/test_models.py":"e2094c6d23e805559813c496adeb60bd7b98205682c7fcb91b3ec945d2fe2a71"}},"tests/test_adversarial.py":{"size":8112,"mtime_ns":1787197141234033600,"indexed_at_ns":1787197157527186500,"word_count":694,"hashes":{"tests/test_adversarial.py":"254c6ff8fb35dbedfed6cedc4ee0dcdeb5247626406b42982bbc415315baeda2"}}} \ No newline at end of file +{".agents/skills/graphify/SKILL.md":{"size":41276,"mtime_ns":1787189375574389900,"indexed_at_ns":1787189383574665500,"word_count":5211,"hashes":{".agents/skills/graphify/skill.md":"3f0ba089a04e342e4337913a03515905fe205f57914b53b8eb1ff59dc926a4ea"}},".agents/skills/graphify/references/add-watch.md":{"size":2486,"mtime_ns":1787176247108301100,"indexed_at_ns":1787189352249948700,"word_count":366,"hashes":{".agents/skills/graphify/references/add-watch.md":"bc4c3ac2e736e36fff3e120b2a7967f1f049c6b05ca39db50606b4bb83c768f7"}},".agents/skills/graphify/references/exports.md":{"size":3362,"mtime_ns":1787176247109325900,"indexed_at_ns":1787189352252005200,"word_count":470,"hashes":{".agents/skills/graphify/references/exports.md":"81b09c0ad09d54d52b68755c32544024e290c02f53bdeb283b1b76d7eebc2445"}},".agents/skills/graphify/references/extraction-spec.md":{"size":7960,"mtime_ns":1787176247109325900,"indexed_at_ns":1787189352254091000,"word_count":1038,"hashes":{".agents/skills/graphify/references/extraction-spec.md":"d07c5b2e8224b1006b1a336f77d0af22f637fe8d20166895bf852c32324d851b"}},".agents/skills/graphify/references/github-and-merge.md":{"size":2177,"mtime_ns":1787176247111831300,"indexed_at_ns":1787189352255826900,"word_count":271,"hashes":{".agents/skills/graphify/references/github-and-merge.md":"189cf7c8c51988d23f6ad25dff96855ce0e7336bffa352dedb3867954e702f7b"}},".agents/skills/graphify/references/hooks.md":{"size":1267,"mtime_ns":1787176247112843500,"indexed_at_ns":1787189352257586300,"word_count":193,"hashes":{".agents/skills/graphify/references/hooks.md":"3e7d2df361e7059e921192b1693cc7859e4a2b0474446f8352be5a4624790eaa"}},".agents/skills/graphify/references/query.md":{"size":13456,"mtime_ns":1787176247113897600,"indexed_at_ns":1787189352259619700,"word_count":1763,"hashes":{".agents/skills/graphify/references/query.md":"151ad7ed0ee4aefe411f026261f605a61134cc6247324fe8df3ae1e785321283"}},".agents/skills/graphify/references/transcribe.md":{"size":3173,"mtime_ns":1787176247113897600,"indexed_at_ns":1787189352261502100,"word_count":418,"hashes":{".agents/skills/graphify/references/transcribe.md":"cbbbae90e451d722b39df0df7bc267bb9b7ecb3dd8a9e8be4b40237df053c8d6"}},".agents/skills/graphify/references/update.md":{"size":10425,"mtime_ns":1787176247115420200,"indexed_at_ns":1787189352263334600,"word_count":1196,"hashes":{".agents/skills/graphify/references/update.md":"b209dbb3bb5466e601a530b65925c55c34f040ffcf56d38ea64be9aaf75f92ce"}},".agents/skills/ponytail-audit/SKILL.md":{"size":1693,"mtime_ns":1786995804152832800,"indexed_at_ns":1787189325036907200,"word_count":234,"hashes":{".agents/skills/ponytail-audit/skill.md":"b29dd08e26692c4bdd87b024d43820e2b45527984d9b3330b5fcfc78491aac52"}},".agents/skills/ponytail-debt/SKILL.md":{"size":1747,"mtime_ns":1786995804152832800,"indexed_at_ns":1787189325037560500,"word_count":261,"hashes":{".agents/skills/ponytail-debt/skill.md":"4b8e8de454f0d7d46bce20b3f4b4ea4c5a1eb60691c0d8bef27ef4ded155e4bc"}},".agents/skills/ponytail-gain/SKILL.md":{"size":2023,"mtime_ns":1786995804154227800,"indexed_at_ns":1787189325038161300,"word_count":246,"hashes":{".agents/skills/ponytail-gain/skill.md":"9e15d99db7452555dae0cc55e5c37799e1dc8acaed4eb89c0e9641d3afbb9646"}},".agents/skills/ponytail-help/SKILL.md":{"size":2867,"mtime_ns":1786995804154227800,"indexed_at_ns":1787189325038779900,"word_count":379,"hashes":{".agents/skills/ponytail-help/skill.md":"4b6ba4d12d19068c08b12af63c05b0acc9ce3beed06654065450c0cd6042d9db"}},".agents/skills/ponytail-review/SKILL.md":{"size":2440,"mtime_ns":1786995804155238700,"indexed_at_ns":1787189325039426100,"word_count":339,"hashes":{".agents/skills/ponytail-review/skill.md":"694090b91438cff578931361d36947da438722dd1f9f7460022bb3aa5b18b4de"}},".agents/skills/ponytail/SKILL.md":{"size":6757,"mtime_ns":1786995804156239700,"indexed_at_ns":1787189325040071200,"word_count":1079,"hashes":{".agents/skills/ponytail/skill.md":"64fc6e81a1b2b008fd72f5c9686498e53383e9cb25d518dc81305799e985bf6f"}},".agents/skills/speckit-analyze/SKILL.md":{"size":11642,"mtime_ns":1787189272133064100,"indexed_at_ns":1787189325040713600,"word_count":1569,"hashes":{".agents/skills/speckit-analyze/skill.md":"12f78b5b87a05d7075320de7e7df0fc3890ee915bf5203ef2c397fee48b0d04e"}},".agents/skills/speckit-checklist/SKILL.md":{"size":22277,"mtime_ns":1787189272160379600,"indexed_at_ns":1787189325041377200,"word_count":2981,"hashes":{".agents/skills/speckit-checklist/skill.md":"1b9b592206c499d1c46699ea99fd3795ec31638e3968aa90054d07bff9f26852"}},".agents/skills/speckit-clarify/SKILL.md":{"size":19212,"mtime_ns":1787189272137533000,"indexed_at_ns":1787189325042095600,"word_count":2688,"hashes":{".agents/skills/speckit-clarify/skill.md":"d091faedcb83b3f11a3049a84424f5d66b6bdf181b192a8167c07b94133e617d"}},".agents/skills/speckit-constitution/SKILL.md":{"size":9959,"mtime_ns":1787189272141381400,"indexed_at_ns":1787189325042781900,"word_count":1376,"hashes":{".agents/skills/speckit-constitution/skill.md":"791892a3d87f7bd6ea936f896c5050b183942489d68bfb383c2ba4de8380a901"}},".agents/skills/speckit-converge/SKILL.md":{"size":12639,"mtime_ns":1787189272150381400,"indexed_at_ns":1787189325043428600,"word_count":1798,"hashes":{".agents/skills/speckit-converge/skill.md":"c04c22c94ac9a47d73d547636127b06f38647627a4dbfbc36ae50dd0a95971b3"}},".agents/skills/speckit-implement/SKILL.md":{"size":12703,"mtime_ns":1787189272146373000,"indexed_at_ns":1787189325044057400,"word_count":1691,"hashes":{".agents/skills/speckit-implement/skill.md":"a779bc551abfa24d77556554b4cc0225b3c57bc436956b9cb9aafe306c581945"}},".agents/skills/speckit-plan/SKILL.md":{"size":7857,"mtime_ns":1787189272154380100,"indexed_at_ns":1787189325044689700,"word_count":1083,"hashes":{".agents/skills/speckit-plan/skill.md":"74b5f950130fa658b857d1c81ac052d89277cbe9901c51f01270963c746277b6"}},".agents/skills/speckit-specify/SKILL.md":{"size":18258,"mtime_ns":1787189272165381000,"indexed_at_ns":1787189325045384300,"word_count":2452,"hashes":{".agents/skills/speckit-specify/skill.md":"b86e839509339a9e11a605b6db50fcd3a435511d5cbe1bbbf4f473ac4bdd5447"}},".agents/skills/speckit-tasks/SKILL.md":{"size":10978,"mtime_ns":1787189272169379600,"indexed_at_ns":1787189325046041900,"word_count":1581,"hashes":{".agents/skills/speckit-tasks/skill.md":"69de6853783574ace13eadf7c706a610df2f2584901974b713a51c1576e53339"}},".agents/skills/speckit-taskstoissues/SKILL.md":{"size":7686,"mtime_ns":1787189272172364900,"indexed_at_ns":1787189325046665600,"word_count":1153,"hashes":{".agents/skills/speckit-taskstoissues/skill.md":"fc53c7413cf050b143775a1aeca2773eabb248782a58d599b52d0d232c6c05fd"}},".specify/init-options.json":{"size":174,"mtime_ns":1787189272252382200,"indexed_at_ns":1787189325022221000,"word_count":16,"hashes":{".specify/init-options.json":"b39c8c1030871841dded0aede892fe2d25b36883333777cbab7d7c1c67b36f87"}},".specify/integration.json":{"size":279,"mtime_ns":1787189272181379700,"indexed_at_ns":1787189325023926100,"word_count":24,"hashes":{".specify/integration.json":"d7545650420a2ed3fd6878ad7006b8de79f5e812dd6352c0d86d530db3a12134"}},".specify/integrations/agy.manifest.json":{"size":1299,"mtime_ns":1787189272178366200,"indexed_at_ns":1787189325024675000,"word_count":31,"hashes":{".specify/integrations/agy.manifest.json":"504c42820b8e37a7eb26b328881026982f3a6a71fa16de670c425b35b37f00e4"}},".specify/integrations/speckit.manifest.json":{"size":1536,"mtime_ns":1787189272238379600,"indexed_at_ns":1787189325025369900,"word_count":35,"hashes":{".specify/integrations/speckit.manifest.json":"cc15502df7b241b7ef08785a613f642d69dc561b8b5db2ccba121fcb6d2c1680"}},".specify/memory/.constitution-template.json":{"size":103,"mtime_ns":1787189272257369800,"indexed_at_ns":1787189325026009300,"word_count":6,"hashes":{".specify/memory/.constitution-template.json":"a0f4bf5e5399e118b61e8bae9404743316cea6d0fff4270d8758aeb55525b988"}},".specify/memory/constitution.md":{"size":2346,"mtime_ns":1787189272254379900,"indexed_at_ns":1787189325047314000,"word_count":272,"hashes":{".specify/memory/constitution.md":"51f14d46d5b6abddce28779396666792636c8d9629f0202e84501a5e759267ab"}},".specify/scripts/powershell/check-prerequisites.ps1":{"size":6122,"mtime_ns":1787189272202379800,"indexed_at_ns":1787189325026668000,"word_count":685,"hashes":{".specify/scripts/powershell/check-prerequisites.ps1":"80f1c4dc6817140dea987bb5727d38be754679c7052f1d9a088031536423cb23"}},".specify/scripts/powershell/common.ps1":{"size":34245,"mtime_ns":1787189272206379800,"indexed_at_ns":1787189325027347800,"word_count":3419,"hashes":{".specify/scripts/powershell/common.ps1":"63b253c967802e85ab12e76ac716eca4bb164dde2b9324e08e406d848ec4104b"}},".specify/scripts/powershell/create-new-feature.ps1":{"size":13026,"mtime_ns":1787189272211369000,"indexed_at_ns":1787189325028005300,"word_count":1421,"hashes":{".specify/scripts/powershell/create-new-feature.ps1":"7b4eb36a1fbbbe9a449b5f99de1055b1aad88e775eeb0db3f86e4ff013e6ddd1"}},".specify/scripts/powershell/resolve-template.ps1":{"size":889,"mtime_ns":1787189272214379900,"indexed_at_ns":1787189325028621300,"word_count":86,"hashes":{".specify/scripts/powershell/resolve-template.ps1":"78234a87c584e697a8fda8b18f134914e41465cbb67c1608b81e69860741502c"}},".specify/scripts/powershell/setup-plan.ps1":{"size":2927,"mtime_ns":1787189272218379500,"indexed_at_ns":1787189325029271700,"word_count":325,"hashes":{".specify/scripts/powershell/setup-plan.ps1":"4d5b636734ae78061da3a7675f0af4acfa6b65f7d994d5372c8c051f25bb8966"}},".specify/scripts/powershell/setup-tasks.ps1":{"size":3892,"mtime_ns":1787189272221379900,"indexed_at_ns":1787189325029900900,"word_count":429,"hashes":{".specify/scripts/powershell/setup-tasks.ps1":"5c980d1a41d186b634bc350128c31e5f3074099b996989c0a0d95b22623b2932"}},".specify/templates/checklist-template.md":{"size":2033,"mtime_ns":1787189272223379700,"indexed_at_ns":1787189325047907900,"word_count":271,"hashes":{".specify/templates/checklist-template.md":"6fb0a979b8534e1b3343d1ce6e45f84d32b118e096620bfdeed241dbc1a1da8a"}},".specify/templates/constitution-template.md":{"size":2346,"mtime_ns":1787189272226379800,"indexed_at_ns":1787189325048534600,"word_count":272,"hashes":{".specify/templates/constitution-template.md":"ae22b7c7ecb6ccd516fed25916e465146432c58f1bef904a92b535ac0bbecfcf"}},".specify/templates/plan-template.md":{"size":3682,"mtime_ns":1787189272229368600,"indexed_at_ns":1787189325049160100,"word_count":463,"hashes":{".specify/templates/plan-template.md":"e5cfe5097c5de0add0f0de02b7a5d2cd2470c9a2f24c0e6e15439d274e12abe0"}},".specify/templates/spec-template.md":{"size":4556,"mtime_ns":1787189272231368600,"indexed_at_ns":1787189325049780800,"word_count":629,"hashes":{".specify/templates/spec-template.md":"2734a509d4b2f34ee6258475c4fb2e80a6dbfcbc47c8552df5b6278907529250"}},".specify/templates/tasks-template.md":{"size":9171,"mtime_ns":1787189272234379700,"indexed_at_ns":1787189325050369300,"word_count":1384,"hashes":{".specify/templates/tasks-template.md":"070ed0dfafd8310a243b51cc30b1b6dfb19883fdd5ad20e4b53e45eb7f939e3e"}},".specify/workflows/speckit/workflow.yml":{"size":2216,"mtime_ns":1787160407462626700,"indexed_at_ns":1787189324996696100,"word_count":276},".specify/workflows/workflow-registry.json":{"size":381,"mtime_ns":1787189272250379800,"indexed_at_ns":1787189325030509700,"word_count":34,"hashes":{".specify/workflows/workflow-registry.json":"2c5bf7f4ba03ddf54945cd64d4740301036c18ebea47448d93ff428c771eff3d"}},".agents/rules/graphify.md":{"size":947,"mtime_ns":1787189347444181700,"indexed_at_ns":1787189352246818600,"word_count":127,"hashes":{".agents/rules/graphify.md":"e55792958648fb69255e3ce3f71a8fcead36307c34b2d67feda9ac650ac61803"}},".agents/workflows/graphify.md":{"size":239,"mtime_ns":1787189347444181700,"indexed_at_ns":1787189352301037700,"word_count":37,"hashes":{".agents/workflows/graphify.md":"d92622463299d313da48e2cdbebf79d7ea24ffaf2ae2de2a1714be8ee42b22b3"}},"specs/001-multilingual-entity-classifier/checklists/requirements.md":{"size":1897,"mtime_ns":1787193985655018100,"indexed_at_ns":1787194002726038300,"word_count":258,"hashes":{"specs/001-multilingual-entity-classifier/checklists/requirements.md":"277036c8add1bae5eeae6da5595cf66405670d33f9d4842784b1c5581cef62d0"}},"specs/001-multilingual-entity-classifier/spec.md":{"size":10753,"mtime_ns":1787194850510689300,"indexed_at_ns":1787194930726970700,"word_count":1423,"hashes":{"specs/001-multilingual-entity-classifier/spec.md":"f136d1d2e6a539072ea238be9d0e918dbc32eb89555ffd37e9b84579064e7799"}},"specs/001-multilingual-entity-classifier/contracts/cli-contract.md":{"size":1808,"mtime_ns":1787194605824187100,"indexed_at_ns":1787194638410863000,"word_count":281,"hashes":{"specs/001-multilingual-entity-classifier/contracts/cli-contract.md":"894670a7228b93a2202203ac532aa0d415bd1921272b61a8d07e951a417bc75c"}},"specs/001-multilingual-entity-classifier/data-model.md":{"size":5137,"mtime_ns":1787194591677816000,"indexed_at_ns":1787194638411601100,"word_count":524,"hashes":{"specs/001-multilingual-entity-classifier/data-model.md":"89ecf2e55508b53ba208d011a76868294f0ff3cab87a217e7ed73c19edfbd9f6"}},"specs/001-multilingual-entity-classifier/plan.md":{"size":6215,"mtime_ns":1787194897854106700,"indexed_at_ns":1787194930724386200,"word_count":782,"hashes":{"specs/001-multilingual-entity-classifier/plan.md":"d37d1c5f3bffc4dad289ad128024ab6dffb409b06f49e96fc5a2fd2a735472a5"}},"specs/001-multilingual-entity-classifier/quickstart.md":{"size":3235,"mtime_ns":1787194877439851000,"indexed_at_ns":1787194930725082000,"word_count":339,"hashes":{"specs/001-multilingual-entity-classifier/quickstart.md":"816060813a37d728ceed955aa829d7fa4f80862f0932133cd5293bdbfdbd40db"}},"specs/001-multilingual-entity-classifier/research.md":{"size":4059,"mtime_ns":1787194581004019000,"indexed_at_ns":1787194638413783100,"word_count":509,"hashes":{"specs/001-multilingual-entity-classifier/research.md":"d4b61795fb09da693ead647d4c05e8f44699c36e9f43b47e808e09a2f970d996"}},"specs/001-multilingual-entity-classifier/tasks.md":{"size":6951,"mtime_ns":1787196452595599000,"indexed_at_ns":1787196460266934400,"word_count":874,"hashes":{"specs/001-multilingual-entity-classifier/tasks.md":"7a33202595cf192baf702d3d8e169ea8db59ca0f2fecb471594f7f3c48417082"}},"specs/001-multilingual-entity-classifier/checklists/poc-readiness.md":{"size":4154,"mtime_ns":1787195218247525200,"indexed_at_ns":1787195224690016000,"word_count":546,"hashes":{"specs/001-multilingual-entity-classifier/checklists/poc-readiness.md":"6da9d16dcd60e927f892c69aa05945e99840b6dc824f93ea2686f12801e81a8a"}},"classify.py":{"size":6155,"mtime_ns":1787197110375362700,"indexed_at_ns":1787197157466076000,"word_count":484,"hashes":{"classify.py":"d139cd5f045a922bfca70c7c521498f0120a569e438d9864c2e508440977af29"}},"examples/content_northvolt_de.md":{"size":530,"mtime_ns":1787195963813740900,"indexed_at_ns":1787196460246681400,"word_count":57,"hashes":{"examples/content_northvolt_de.md":"5708f5dac050fea9c5e4fbdee40910cbb4c4be0efc9c3212f7cf2a7a034eb91d"}},"examples/content_presal_pt.md":{"size":506,"mtime_ns":1787195950024799800,"indexed_at_ns":1787196460247532700,"word_count":72,"hashes":{"examples/content_presal_pt.md":"ef8c7d61a4d721f7d702fa608274da920476be3a4f7bfe6e4f603abba12a133f"}},"examples/content_tangential_es.md":{"size":414,"mtime_ns":1787195975527150700,"indexed_at_ns":1787196460248387000,"word_count":60,"hashes":{"examples/content_tangential_es.md":"d02c405931b0752377a2ba10cbffe4d664713e33c3b6a8fbdd36b4a75b30f11b"}},"examples/ecp_apple.json":{"size":723,"mtime_ns":1787195969757856700,"indexed_at_ns":1787196460143672700,"word_count":68,"hashes":{"examples/ecp_apple.json":"166fb76e5d0d181835dd636450b6828565c2baafcb21228313bcea3c850d9a92"}},"examples/ecp_petrobras.json":{"size":714,"mtime_ns":1787195944394575600,"indexed_at_ns":1787196460144504800,"word_count":62,"hashes":{"examples/ecp_petrobras.json":"5dd24cf4d5cb9f636f3a1c2511eeaa152be0511b80974a4f36d5d68aded046db"}},"examples/ecp_volkswagen.json":{"size":720,"mtime_ns":1787195955456870500,"indexed_at_ns":1787196460145217300,"word_count":56,"hashes":{"examples/ecp_volkswagen.json":"3d3866179c67e332ad5aa46f5d15eeb4de3fa829d1cc21ccf73cc7f3a7eb32c5"}},"pyproject.toml":{"size":546,"mtime_ns":1787234982768605000,"indexed_at_ns":1787235018162790500,"word_count":59,"hashes":{"pyproject.toml":"632d56d622867a9d615eb5d3500864d3ad3b5a1dce14b006ada8c1fbcd6a744c"}},"requirements.txt":{"size":237,"mtime_ns":1787236111876247000,"indexed_at_ns":1787236259133529300,"word_count":25},"src/__init__.py":{"size":83,"mtime_ns":1787195832559486000,"indexed_at_ns":1787196460146819200,"word_count":9,"hashes":{"src/__init__.py":"81c4eae46f05fd529d4f81f2d318c2b4e3af282f140963e9c5c876690bb1ca74"}},"src/adapters/__init__.py":{"size":73,"mtime_ns":1787195842271676800,"indexed_at_ns":1787196460147577400,"word_count":9,"hashes":{"src/adapters/__init__.py":"f4dcecfaeea2ae0852fd9836bfb4f9b2a9bedd60057157064e6d3fed4a8c1bd7"}},"src/adapters/base.py":{"size":993,"mtime_ns":1787196396619994900,"indexed_at_ns":1787196460148332300,"word_count":103,"hashes":{"src/adapters/base.py":"9ac400ed397a6344d870d842eac4ba1dd388b95aa8178eb5c6761642948724e5"}},"src/adapters/embeddings.py":{"size":1421,"mtime_ns":1787196402748426100,"indexed_at_ns":1787196460149090900,"word_count":140,"hashes":{"src/adapters/embeddings.py":"88dfea4ba85c6d996d52eddd56d00cc625642c1ae4f371c80483c592ff77730e"}},"src/adapters/llm.py":{"size":1271,"mtime_ns":1787196408180450900,"indexed_at_ns":1787196460149934600,"word_count":136,"hashes":{"src/adapters/llm.py":"259e6ea0b5941f3d5c168775fad2d0fc2b47404b900a1c14f5b4c0ae74201a4a"}},"src/classifier.py":{"size":9632,"mtime_ns":1787197085025044700,"indexed_at_ns":1787197157479422500,"word_count":826,"hashes":{"src/classifier.py":"5b4fb6d6d36903918dda91c9be971ec0314cb2355c3814418f12b9e04a206796"}},"src/language.py":{"size":7515,"mtime_ns":1787196384554574400,"indexed_at_ns":1787196460151564300,"word_count":896,"hashes":{"src/language.py":"cea675866db47e33cdc2d0ae5817d96308d38024813ba4aafb410df92d38aab2"}},"src/models.py":{"size":5997,"mtime_ns":1787195855326628100,"indexed_at_ns":1787196460152268300,"word_count":491,"hashes":{"src/models.py":"06a87c0cfa02cedb689c3994d7dcfae40c0ef4c9d6c310880bf38675b7634c44"}},"src/parser.py":{"size":2679,"mtime_ns":1787195873911980500,"indexed_at_ns":1787196460152923000,"word_count":302,"hashes":{"src/parser.py":"9c09324ba1dac303bd3a9da944fcf6953cc932c0f3a3c4dd0bbf039a30682ec2"}},"tests/__init__.py":{"size":69,"mtime_ns":1787195847518641200,"indexed_at_ns":1787196460153585600,"word_count":8,"hashes":{"tests/__init__.py":"2acdae7d2696c23d5391ed343046cffa11b82f3f0d7d85767dacf0e762a955d1"}},"tests/fixtures/benchmark_24/de/contextual.md":{"size":144,"mtime_ns":1787196180779459400,"indexed_at_ns":1787196460268138600,"word_count":17,"hashes":{"tests/fixtures/benchmark_24/de/contextual.md":"b6a18c4bef2defe99773d3ba43137148d25b42ac27562b10b73ccdee1a49f203"}},"tests/fixtures/benchmark_24/de/contextual_expected.json":{"size":136,"mtime_ns":1787196187032823100,"indexed_at_ns":1787196460154321700,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/de/contextual_expected.json":"cb741ed9bef3359a41d5c031ad213d4320c5b8fe3f8579e497ee9b1eda0ed478"}},"tests/fixtures/benchmark_24/de/direct.md":{"size":148,"mtime_ns":1787196169572812500,"indexed_at_ns":1787196460269192500,"word_count":16,"hashes":{"tests/fixtures/benchmark_24/de/direct.md":"67f375d26d8424655b76d5650c656b4af79b9964d52f2d24049e1f4de6545c9b"}},"tests/fixtures/benchmark_24/de/direct_expected.json":{"size":132,"mtime_ns":1787196175168070900,"indexed_at_ns":1787196460155004400,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/de/direct_expected.json":"5301a39d31b365266b529ce9823145381241f8876af1ec21f0a9c27c9bdc80fa"}},"tests/fixtures/benchmark_24/de/ecp.json":{"size":579,"mtime_ns":1787196164027193900,"indexed_at_ns":1787196460155664300,"word_count":40,"hashes":{"tests/fixtures/benchmark_24/de/ecp.json":"061fc3a9468d2baaaf2b3e8355d08d23261a9a7adc484cb06b45646eacba46fc"}},"tests/fixtures/benchmark_24/de/not_related.md":{"size":137,"mtime_ns":1787196204093781400,"indexed_at_ns":1787196460270056100,"word_count":21,"hashes":{"tests/fixtures/benchmark_24/de/not_related.md":"4904b694b45a2058614a4e4350046eee042c4bbd7bcd6b88c56408ee3aebd81d"}},"tests/fixtures/benchmark_24/de/not_related_expected.json":{"size":129,"mtime_ns":1787196209729787600,"indexed_at_ns":1787196460156391600,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/de/not_related_expected.json":"730fa882c1f3b8a7c0e2d3da9af55ee57ad7425a8b304c11f54e01899c740952"}},"tests/fixtures/benchmark_24/de/tangential.md":{"size":150,"mtime_ns":1787196193187087300,"indexed_at_ns":1787196460270857700,"word_count":21,"hashes":{"tests/fixtures/benchmark_24/de/tangential.md":"8207068977006dafa7c9c4459bd996b5c124972d25f1015a589d3b06d0999613"}},"tests/fixtures/benchmark_24/de/tangential_expected.json":{"size":128,"mtime_ns":1787196198703847300,"indexed_at_ns":1787196460157130400,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/de/tangential_expected.json":"82dea5e55d7586c4e7005755e3da4f44560238733094876047de51e854d41d92"}},"tests/fixtures/benchmark_24/en/contextual.md":{"size":148,"mtime_ns":1787196066427405900,"indexed_at_ns":1787196460271878300,"word_count":19,"hashes":{"tests/fixtures/benchmark_24/en/contextual.md":"258a9f1ae01dae52955c1f45cb176e7d981a72ba869c33232c8c295f4816acc0"}},"tests/fixtures/benchmark_24/en/contextual_expected.json":{"size":136,"mtime_ns":1787196073211713100,"indexed_at_ns":1787196460158457500,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/en/contextual_expected.json":"70605f9d8901d4c4b99d9fda1f30bc114cb0b65893579f77a1f9d50f62c1e3fc"}},"tests/fixtures/benchmark_24/en/direct.md":{"size":155,"mtime_ns":1787196054149613200,"indexed_at_ns":1787196460272766400,"word_count":21,"hashes":{"tests/fixtures/benchmark_24/en/direct.md":"c7e0b093c386ccf19d9d7cbef4763dfb665213a7a245093af43529b1eaff8266"}},"tests/fixtures/benchmark_24/en/direct_expected.json":{"size":132,"mtime_ns":1787196059966736300,"indexed_at_ns":1787196460159526700,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/en/direct_expected.json":"0b803b2ad37388be7ef4ea1d164db22c9fd784bcb9be6f56627d412f1f9299bc"}},"tests/fixtures/benchmark_24/en/ecp.json":{"size":594,"mtime_ns":1787197123717795600,"indexed_at_ns":1787197157494285900,"word_count":52,"hashes":{"tests/fixtures/benchmark_24/en/ecp.json":"601423ac1e0b0e2bb7a0151ac87f5bdfd32450d90a022eaf9ef030338e0b4893"}},"tests/fixtures/benchmark_24/en/not_related.md":{"size":146,"mtime_ns":1787196350333465500,"indexed_at_ns":1787196460273595300,"word_count":24,"hashes":{"tests/fixtures/benchmark_24/en/not_related.md":"2fa405b123733c5a9b5beba8c646b886b27e212cff55496a9fe7d6208ddfb11c"}},"tests/fixtures/benchmark_24/en/not_related_expected.json":{"size":129,"mtime_ns":1787196104521133100,"indexed_at_ns":1787196460161344300,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/en/not_related_expected.json":"cb046b055b5c72d8146b6035a935211d60fb0b313ef819576bb8e7048d55f468"}},"tests/fixtures/benchmark_24/en/tangential.md":{"size":147,"mtime_ns":1787196082730266300,"indexed_at_ns":1787196460274648200,"word_count":25,"hashes":{"tests/fixtures/benchmark_24/en/tangential.md":"793acebc11e5d6c17872d56881c8fe99cb187116c38fa4b2647d28fe3063a61e"}},"tests/fixtures/benchmark_24/en/tangential_expected.json":{"size":128,"mtime_ns":1787196089699545000,"indexed_at_ns":1787196460162151700,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/en/tangential_expected.json":"d5b1a4dc64246838a066f73c41f0e33dcd59636e61d6c0842a3728247e536aff"}},"tests/fixtures/benchmark_24/es/contextual.md":{"size":167,"mtime_ns":1787196129959491900,"indexed_at_ns":1787196460275850900,"word_count":22,"hashes":{"tests/fixtures/benchmark_24/es/contextual.md":"d45ef46752e2093455e35cbf97076f943ab2be736c9bc4580607960b9d068731"}},"tests/fixtures/benchmark_24/es/contextual_expected.json":{"size":136,"mtime_ns":1787196135705341100,"indexed_at_ns":1787196460162957600,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/es/contextual_expected.json":"083f7153df08f93f595782eb2959e8505ac4bda4daaf6634c7a11d444c1ba6b0"}},"tests/fixtures/benchmark_24/es/direct.md":{"size":179,"mtime_ns":1787196118640588800,"indexed_at_ns":1787196460276716800,"word_count":29,"hashes":{"tests/fixtures/benchmark_24/es/direct.md":"f6e282a68830d5518285b0cda510fe57fa844cc6322979604a427797f07fdbd7"}},"tests/fixtures/benchmark_24/es/direct_expected.json":{"size":132,"mtime_ns":1787196124282103900,"indexed_at_ns":1787196460163727400,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/es/direct_expected.json":"fb96e4ae9e2e1603b9ac4d31b6984b31d814b3f31a8a3ca03c52c1ffa4199471"}},"tests/fixtures/benchmark_24/es/ecp.json":{"size":590,"mtime_ns":1787196110761765400,"indexed_at_ns":1787196460164509700,"word_count":52,"hashes":{"tests/fixtures/benchmark_24/es/ecp.json":"09cad55a4cc5a8c04b9898dee21c28b0d40561fcdd8ff012fe4de96616c05f7f"}},"tests/fixtures/benchmark_24/es/not_related.md":{"size":148,"mtime_ns":1787196152611035900,"indexed_at_ns":1787196460277631800,"word_count":23,"hashes":{"tests/fixtures/benchmark_24/es/not_related.md":"1b8a7f7a6852c9ec33fc34513ab479bd5edba48762a0801f7982e48adcb0089b"}},"tests/fixtures/benchmark_24/es/not_related_expected.json":{"size":129,"mtime_ns":1787196158098444000,"indexed_at_ns":1787196460165309300,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/es/not_related_expected.json":"01645746a62894e6448895d9bf5eac394e94e54711d7f519d2ed14d8b8957487"}},"tests/fixtures/benchmark_24/es/tangential.md":{"size":141,"mtime_ns":1787196141436479100,"indexed_at_ns":1787196460278451000,"word_count":23,"hashes":{"tests/fixtures/benchmark_24/es/tangential.md":"41888c762fdc38fb9d5a6dc39373ac2e38331ba4520535088efef8943ea40e49"}},"tests/fixtures/benchmark_24/es/tangential_expected.json":{"size":128,"mtime_ns":1787196147026058000,"indexed_at_ns":1787196460166503400,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/es/tangential_expected.json":"aac2bd9ab5946710c62dc0a8daf8b1481462bed081e11db4558c08ef917fcf81"}},"tests/fixtures/benchmark_24/fr/contextual.md":{"size":167,"mtime_ns":1787196288415259700,"indexed_at_ns":1787196460279288100,"word_count":23,"hashes":{"tests/fixtures/benchmark_24/fr/contextual.md":"8a36d5737429e743ffbdc8c6ae78bcc9410915e048056dbd1fb4d3d493ac7ec6"}},"tests/fixtures/benchmark_24/fr/contextual_expected.json":{"size":136,"mtime_ns":1787196295706997200,"indexed_at_ns":1787196460167650500,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/fr/contextual_expected.json":"4a155288609fc5c935a39a633d7185109629871380b88af1c367922e44abe900"}},"tests/fixtures/benchmark_24/fr/direct.md":{"size":160,"mtime_ns":1787196277020128300,"indexed_at_ns":1787196460280073100,"word_count":20,"hashes":{"tests/fixtures/benchmark_24/fr/direct.md":"f218d9c8ada6c31e813c41bcb5e6a081a1df526022b907795065c0f845480077"}},"tests/fixtures/benchmark_24/fr/direct_expected.json":{"size":132,"mtime_ns":1787196282775093400,"indexed_at_ns":1787196460168573600,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/fr/direct_expected.json":"b93c2059a731e06a164fe1331e1c7ff01fb741f728c8aa1df151ee51bc993268"}},"tests/fixtures/benchmark_24/fr/ecp.json":{"size":600,"mtime_ns":1787197131861351500,"indexed_at_ns":1787197157506006100,"word_count":50,"hashes":{"tests/fixtures/benchmark_24/fr/ecp.json":"f2e7f9eafa1fd24514541868c83db90b69784d5faf4e8d039d79d11597b51428"}},"tests/fixtures/benchmark_24/fr/not_related.md":{"size":181,"mtime_ns":1787196312472120100,"indexed_at_ns":1787196460280811500,"word_count":30,"hashes":{"tests/fixtures/benchmark_24/fr/not_related.md":"475984d25541d876b7d9e3e8f7cff7b3db2bc1489c25d6612b911da6d2b2af8e"}},"tests/fixtures/benchmark_24/fr/not_related_expected.json":{"size":129,"mtime_ns":1787196317906240800,"indexed_at_ns":1787196460170379300,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/fr/not_related_expected.json":"31b3104faa21c2a417399fdd85d077d1c58fe74ee33fd41b0942580be6f81267"}},"tests/fixtures/benchmark_24/fr/tangential.md":{"size":158,"mtime_ns":1787196301225610200,"indexed_at_ns":1787196460281594400,"word_count":25,"hashes":{"tests/fixtures/benchmark_24/fr/tangential.md":"7f6c6ab84d2a26675f9f16fb23d45cf1e97b3ff5e28fb98df6aeaa2368d2c305"}},"tests/fixtures/benchmark_24/fr/tangential_expected.json":{"size":128,"mtime_ns":1787196306729905200,"indexed_at_ns":1787196460171141500,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/fr/tangential_expected.json":"cc117a22ba73be1b308d377767ca0ae8da8e5889ccdaa430893b3ae70a58c9ca"}},"tests/fixtures/benchmark_24/it/contextual.md":{"size":150,"mtime_ns":1787196234462201200,"indexed_at_ns":1787196460283346800,"word_count":21,"hashes":{"tests/fixtures/benchmark_24/it/contextual.md":"045391f6f676add7e1ae9391419ef65442259ab90f9cacb5caca4d468d292017"}},"tests/fixtures/benchmark_24/it/contextual_expected.json":{"size":136,"mtime_ns":1787196240055631300,"indexed_at_ns":1787196460171870600,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/it/contextual_expected.json":"b2b4b297f43e5af1cda526e259acede43a31b552c0321bee1ce1c72572cec557"}},"tests/fixtures/benchmark_24/it/direct.md":{"size":145,"mtime_ns":1787196221664473400,"indexed_at_ns":1787196460284281100,"word_count":23,"hashes":{"tests/fixtures/benchmark_24/it/direct.md":"d54bad27d944692fa7f00a036f882d1c0e42d189241822adcae86edf73a444da"}},"tests/fixtures/benchmark_24/it/direct_expected.json":{"size":132,"mtime_ns":1787196228986408600,"indexed_at_ns":1787196460172673300,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/it/direct_expected.json":"f94e71dc4b78c0646190ff288f08dab46c67f2356b8b75cc515c28af7c9c423c"}},"tests/fixtures/benchmark_24/it/ecp.json":{"size":529,"mtime_ns":1787196215715634300,"indexed_at_ns":1787196460173452600,"word_count":45,"hashes":{"tests/fixtures/benchmark_24/it/ecp.json":"bcbd12d3057368618b006c24f384341f91349c713d10a3028d3eb4afada32de6"}},"tests/fixtures/benchmark_24/it/not_related.md":{"size":153,"mtime_ns":1787196259362992300,"indexed_at_ns":1787196460285099000,"word_count":23,"hashes":{"tests/fixtures/benchmark_24/it/not_related.md":"bca227c7b17fd4404e5ca1d082b848981c1da28d0b657df1e025c03056387f13"}},"tests/fixtures/benchmark_24/it/not_related_expected.json":{"size":129,"mtime_ns":1787196265318256200,"indexed_at_ns":1787196460174468400,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/it/not_related_expected.json":"d007ac531224ad0834e9a8807582d0e047524be4c30fffdd1a19a51dba36d85d"}},"tests/fixtures/benchmark_24/it/tangential.md":{"size":155,"mtime_ns":1787196245918356300,"indexed_at_ns":1787196460285993500,"word_count":23,"hashes":{"tests/fixtures/benchmark_24/it/tangential.md":"a78a886f11462033c996a20b629e13c6bb55d4e08ffed20601cd4ea877b9db09"}},"tests/fixtures/benchmark_24/it/tangential_expected.json":{"size":128,"mtime_ns":1787196252898853500,"indexed_at_ns":1787196460175957500,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/it/tangential_expected.json":"18872f6fe4cbd71812566494e88bd97633d696f732b3b5bad871f81076703f74"}},"tests/fixtures/benchmark_24/pt/contextual.md":{"size":125,"mtime_ns":1787196014201071400,"indexed_at_ns":1787196460286845200,"word_count":18,"hashes":{"tests/fixtures/benchmark_24/pt/contextual.md":"e9ea12885a5c68822f96691e543b55885afba3d00a9e0fa65837bd88e559f157"}},"tests/fixtures/benchmark_24/pt/contextual_expected.json":{"size":136,"mtime_ns":1787196019487136800,"indexed_at_ns":1787196460176915600,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/pt/contextual_expected.json":"34145a845a7f6b155bf42c028bb0c6d8d43ed5cd0b1d179c089b1e621fecd08f"}},"tests/fixtures/benchmark_24/pt/direct.md":{"size":140,"mtime_ns":1787196003236562000,"indexed_at_ns":1787196460287899900,"word_count":21,"hashes":{"tests/fixtures/benchmark_24/pt/direct.md":"150182b9c1352163cb136c19141b85b3f0323e7eaa0cd023fce1dfef0de63d29"}},"tests/fixtures/benchmark_24/pt/direct_expected.json":{"size":132,"mtime_ns":1787196008785189600,"indexed_at_ns":1787196460177800600,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/pt/direct_expected.json":"a9c666394db6a6e2fcd503d8cf67549531ee9e70eb73b1edb2b6a2443316cbf2"}},"tests/fixtures/benchmark_24/pt/ecp.json":{"size":507,"mtime_ns":1787195997549710300,"indexed_at_ns":1787196460178615000,"word_count":40,"hashes":{"tests/fixtures/benchmark_24/pt/ecp.json":"cec78c3ed8d2ec311d079239922a10a35a7fc9c382d8886fec81c6322d2a70ac"}},"tests/fixtures/benchmark_24/pt/not_related.md":{"size":124,"mtime_ns":1787196036724084200,"indexed_at_ns":1787196460288769500,"word_count":19,"hashes":{"tests/fixtures/benchmark_24/pt/not_related.md":"3af103a7f0df8e93c6154157e9903dc7fc10d64fa69dd7c2b08d4f68b99b1972"}},"tests/fixtures/benchmark_24/pt/not_related_expected.json":{"size":129,"mtime_ns":1787196042201218800,"indexed_at_ns":1787196460179403700,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/pt/not_related_expected.json":"d5ce36bca028f31ba472e325993610eb82f98e1a8f84fa770bf92aa7158ce954"}},"tests/fixtures/benchmark_24/pt/tangential.md":{"size":140,"mtime_ns":1787196024978861700,"indexed_at_ns":1787196460289652400,"word_count":24,"hashes":{"tests/fixtures/benchmark_24/pt/tangential.md":"77d86f819ccbefe9830a57151354ca47d83e46b3d0e55d0f5139f37a1d9df0b8"}},"tests/fixtures/benchmark_24/pt/tangential_expected.json":{"size":128,"mtime_ns":1787196030395574000,"indexed_at_ns":1787196460180223100,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/pt/tangential_expected.json":"fb977fec8db613f9545c81adffe0295084c6198b5f7c9a85d8901a228de63a51"}},"tests/test_adapters.py":{"size":1165,"mtime_ns":1787196418632815700,"indexed_at_ns":1787196460180932200,"word_count":91,"hashes":{"tests/test_adapters.py":"8f251df2dd437652fcec9067de65259150a8ab268da9e6130525c616ae6482d9"}},"tests/test_benchmark_24.py":{"size":2787,"mtime_ns":1787196325540979600,"indexed_at_ns":1787196460181671200,"word_count":260,"hashes":{"tests/test_benchmark_24.py":"8531c79d25c9512f12066b7f4d807b80edfd4a304c59c616b364ce6724317252"}},"tests/test_classifier.py":{"size":3833,"mtime_ns":1787196364719572900,"indexed_at_ns":1787196460182437000,"word_count":351,"hashes":{"tests/test_classifier.py":"2ebb64b34c89563c5b8d34bc55249a03caf4fb4fd10d486b3f879d9abb273592"}},"tests/test_cli.py":{"size":3575,"mtime_ns":1787195939567137000,"indexed_at_ns":1787196460183174100,"word_count":302,"hashes":{"tests/test_cli.py":"11042bbc99e66b090af8640e547bcbfd57fe228c8fdf0b5f32a9267eca0fc291"}},"tests/test_language.py":{"size":1920,"mtime_ns":1787195891332966800,"indexed_at_ns":1787196460183874300,"word_count":239,"hashes":{"tests/test_language.py":"aca16328c2dd212cd8fd20b874a7d957d070e43a10b8730e4cc8e6b561fcc6e9"}},"tests/test_models.py":{"size":3700,"mtime_ns":1787195886500998800,"indexed_at_ns":1787196460184612900,"word_count":308,"hashes":{"tests/test_models.py":"e2094c6d23e805559813c496adeb60bd7b98205682c7fcb91b3ec945d2fe2a71"}},"tests/test_adversarial.py":{"size":8112,"mtime_ns":1787197141234033600,"indexed_at_ns":1787197157527186500,"word_count":694,"hashes":{"tests/test_adversarial.py":"254c6ff8fb35dbedfed6cedc4ee0dcdeb5247626406b42982bbc415315baeda2"}},"docs/googlenews_extractor_guia_completo.md":{"size":23056,"mtime_ns":1787231605083067700,"indexed_at_ns":1787234770705515600,"word_count":2286,"hashes":{"docs/googlenews_extractor_guia_completo.md":"290cd57feaac930e62af6b2a02ccd477c87210fa00f117cf9a2e7848fa9160dd"}},"examples/ecp_sao_paulo_futebol_clube.json":{"size":23358,"mtime_ns":1787229477299354200,"indexed_at_ns":1787234770609429300,"word_count":1524,"hashes":{"examples/ecp_sao_paulo_futebol_clube.json":"1af9006669d57f8dc123f0edea0d0fe8aaeb9016e36ec3e0d95023ea26996915"}},"scripts/extract_google_news.py":{"size":14772,"mtime_ns":1787236453523185500,"indexed_at_ns":1787236506840080000,"word_count":1318,"hashes":{"scripts/extract_google_news.py":"6eeb131ccc266f515693b75c184bd25446c9ec6613e7f2e61249c1543b6f7295"}},"specs/002-google-news-extractor/checklists/readiness.md":{"size":5258,"mtime_ns":1787234305932687100,"indexed_at_ns":1787234770736852100,"word_count":706,"hashes":{"specs/002-google-news-extractor/checklists/readiness.md":"ad4c18a1fe1c6f19f45a043748fe4f195db525afac53ed77905222015ec5230c"}},"specs/002-google-news-extractor/checklists/requirements.md":{"size":1144,"mtime_ns":1787232386676398600,"indexed_at_ns":1787234770737689600,"word_count":158,"hashes":{"specs/002-google-news-extractor/checklists/requirements.md":"d83944755d7f6e43d8c76e032f0047be6f8c4cb2b80dea65e198f57b9c5eccd7"}},"specs/002-google-news-extractor/contracts/cli_contract.md":{"size":2681,"mtime_ns":1787236744313922700,"indexed_at_ns":1787236813512122300,"word_count":424,"hashes":{"specs/002-google-news-extractor/contracts/cli_contract.md":"6b9e3c10becd7b8fa633e409e9a3298ff4b2903dfd5194054c8e41dd0c0c5f23"}},"specs/002-google-news-extractor/data-model.md":{"size":3008,"mtime_ns":1787234040813431800,"indexed_at_ns":1787234770739130200,"word_count":472,"hashes":{"specs/002-google-news-extractor/data-model.md":"78cec846c1173fbdff3c77313ba02c7977365e5ab102df527f90ed7b06e69519"}},"specs/002-google-news-extractor/plan.md":{"size":3947,"mtime_ns":1787236725982522400,"indexed_at_ns":1787236813514970600,"word_count":448,"hashes":{"specs/002-google-news-extractor/plan.md":"57a0a3eb1fd6d7afbe394be62e681a02d7ef26124f4142b9d8b72ea95259a34b"}},"specs/002-google-news-extractor/quickstart.md":{"size":2341,"mtime_ns":1787236764020651300,"indexed_at_ns":1787236813515935900,"word_count":317,"hashes":{"specs/002-google-news-extractor/quickstart.md":"3478a487614358839b3e53c15b05b86a4b850bead9b4142384566e244753bde3"}},"specs/002-google-news-extractor/research.md":{"size":3630,"mtime_ns":1787236785046618200,"indexed_at_ns":1787236813516811500,"word_count":483,"hashes":{"specs/002-google-news-extractor/research.md":"71e796c83a1c293fa380b4f01a2eed810275e4628548e0f8e8b9ecaa90d3ac13"}},"specs/002-google-news-extractor/spec.md":{"size":7506,"mtime_ns":1787236709078315600,"indexed_at_ns":1787236813517705300,"word_count":1096,"hashes":{"specs/002-google-news-extractor/spec.md":"e84b37b25f61ed209d1295f77bf84024ac6c3c818f6b98043204a9f81bff49f0"}},"specs/002-google-news-extractor/tasks.md":{"size":5315,"mtime_ns":1787236802480804800,"indexed_at_ns":1787236813518644500,"word_count":692,"hashes":{"specs/002-google-news-extractor/tasks.md":"94430da291ad0dc34b1cde7c30f2b8e1ce0c83d35b5e71ab68bd135146c9ef47"}},"tests/test_extract_google_news.py":{"size":12315,"mtime_ns":1787236301513448100,"indexed_at_ns":1787236351077424600,"word_count":1124,"hashes":{"tests/test_extract_google_news.py":"60084a23d0cb5e7f2ae4dcd86849fc83dca47b865f3429c24256209513a78691"}},"scripts/__init__.py":{"size":50,"mtime_ns":1787234973578233800,"indexed_at_ns":1787235018163517900,"word_count":6,"hashes":{"scripts/__init__.py":"f30a694c2114ef6bc58efa1caea7265dde8ef296d92cdb77c8b3e3d1f21af3a5"}},"README.md":{"size":12170,"mtime_ns":1787237002328848100,"indexed_at_ns":1787237011084017400,"word_count":1531,"hashes":{"readme.md":"6e21eba445b58b4993c56ccfb6d1ec43858c6af6917306dce21c222f7cb25ea0"}}} \ No newline at end of file diff --git a/graphify-out/graph.html b/graphify-out/graph.html index d83e864..afee3e0 100644 --- a/graphify-out/graph.html +++ b/graphify-out/graph.html @@ -63,12 +63,12 @@ </div> <div id="legend"></div> </div> - <div id="stats">595 nodes · 704 edges · 80 communities</div> + <div id="stats">802 nodes · 957 edges · 104 communities</div> </div> <script> -const RAW_NODES = [{"id": "specify_scripts_powershell_check_prerequisites", "label": "check-prerequisites.ps1", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "check-prerequisites.ps1", "community": 35, "community_name": "Prerequisite Checks", "source_file": ".specify/scripts/powershell/check-prerequisites.ps1", "file_type": "code", "degree": 0}, {"id": "specify_scripts_powershell_common", "label": "common.ps1", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 24.5, "font": {"size": 12, "color": "#ffffff"}, "title": "common.ps1", "community": 2, "community_name": "SpecKit Utilities", "source_file": ".specify/scripts/powershell/common.ps1", "file_type": "code", "degree": 15}, {"id": "specify_scripts_powershell_common_find_specifyroot", "label": "Find-SpecifyRoot()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Find-SpecifyRoot()", "community": 2, "community_name": "SpecKit Utilities", "source_file": ".specify/scripts/powershell/common.ps1", "file_type": "code", "degree": 2}, {"id": "specify_scripts_powershell_common_resolve_specifyinitdir", "label": "Resolve-SpecifyInitDir()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Resolve-SpecifyInitDir()", "community": 2, "community_name": "SpecKit Utilities", "source_file": ".specify/scripts/powershell/common.ps1", "file_type": "code", "degree": 2}, {"id": "specify_scripts_powershell_common_get_reporoot", "label": "Get-RepoRoot()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Get-RepoRoot()", "community": 2, "community_name": "SpecKit Utilities", "source_file": ".specify/scripts/powershell/common.ps1", "file_type": "code", "degree": 4}, {"id": "specify_scripts_powershell_common_get_currentbranch", "label": "Get-CurrentBranch()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Get-CurrentBranch()", "community": 2, "community_name": "SpecKit Utilities", "source_file": ".specify/scripts/powershell/common.ps1", "file_type": "code", "degree": 2}, {"id": "specify_scripts_powershell_common_save_featurejson", "label": "Save-FeatureJson()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Save-FeatureJson()", "community": 2, "community_name": "SpecKit Utilities", "source_file": ".specify/scripts/powershell/common.ps1", "file_type": "code", "degree": 2}, {"id": "specify_scripts_powershell_common_get_featurepathsenv", "label": "Get-FeaturePathsEnv()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Get-FeaturePathsEnv()", "community": 2, "community_name": "SpecKit Utilities", "source_file": ".specify/scripts/powershell/common.ps1", "file_type": "code", "degree": 4}, {"id": "specify_scripts_powershell_common_test_fileexists", "label": "Test-FileExists()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Test-FileExists()", "community": 2, "community_name": "SpecKit Utilities", "source_file": ".specify/scripts/powershell/common.ps1", "file_type": "code", "degree": 1}, {"id": "specify_scripts_powershell_common_test_dirhasfiles", "label": "Test-DirHasFiles()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Test-DirHasFiles()", "community": 2, "community_name": "SpecKit Utilities", "source_file": ".specify/scripts/powershell/common.ps1", "file_type": "code", "degree": 1}, {"id": "specify_scripts_powershell_common_get_invokeseparator", "label": "Get-InvokeSeparator()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Get-InvokeSeparator()", "community": 2, "community_name": "SpecKit Utilities", "source_file": ".specify/scripts/powershell/common.ps1", "file_type": "code", "degree": 2}, {"id": "specify_scripts_powershell_common_format_speckitcommand", "label": "Format-SpecKitCommand()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Format-SpecKitCommand()", "community": 2, "community_name": "SpecKit Utilities", "source_file": ".specify/scripts/powershell/common.ps1", "file_type": "code", "degree": 2}, {"id": "specify_scripts_powershell_common_get_python3command", "label": "Get-Python3Command()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Get-Python3Command()", "community": 2, "community_name": "SpecKit Utilities", "source_file": ".specify/scripts/powershell/common.ps1", "file_type": "code", "degree": 2}, {"id": "specify_scripts_powershell_common_get_normalizedpriority", "label": "Get-NormalizedPriority()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Get-NormalizedPriority()", "community": 2, "community_name": "SpecKit Utilities", "source_file": ".specify/scripts/powershell/common.ps1", "file_type": "code", "degree": 4}, {"id": "specify_scripts_powershell_common_get_sortedextensionids", "label": "Get-SortedExtensionIds()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Get-SortedExtensionIds()", "community": 2, "community_name": "SpecKit Utilities", "source_file": ".specify/scripts/powershell/common.ps1", "file_type": "code", "degree": 4}, {"id": "specify_scripts_powershell_common_resolve_template", "label": "Resolve-Template()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Resolve-Template()", "community": 2, "community_name": "SpecKit Utilities", "source_file": ".specify/scripts/powershell/common.ps1", "file_type": "code", "degree": 3}, {"id": "specify_scripts_powershell_common_resolve_templatecontent", "label": "Resolve-TemplateContent()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Resolve-TemplateContent()", "community": 2, "community_name": "SpecKit Utilities", "source_file": ".specify/scripts/powershell/common.ps1", "file_type": "code", "degree": 4}, {"id": "specify_scripts_powershell_create_new_feature", "label": "create-new-feature.ps1", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 14.8, "font": {"size": 12, "color": "#ffffff"}, "title": "create-new-feature.ps1", "community": 22, "community_name": "Feature Branch Creation", "source_file": ".specify/scripts/powershell/create-new-feature.ps1", "file_type": "code", "degree": 5}, {"id": "specify_scripts_powershell_create_new_feature_get_highestnumberfromspecs", "label": "Get-HighestNumberFromSpecs()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Get-HighestNumberFromSpecs()", "community": 22, "community_name": "Feature Branch Creation", "source_file": ".specify/scripts/powershell/create-new-feature.ps1", "file_type": "code", "degree": 1}, {"id": "specify_scripts_powershell_create_new_feature_test_specprefixinuse", "label": "Test-SpecPrefixInUse()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Test-SpecPrefixInUse()", "community": 22, "community_name": "Feature Branch Creation", "source_file": ".specify/scripts/powershell/create-new-feature.ps1", "file_type": "code", "degree": 1}, {"id": "specify_scripts_powershell_create_new_feature_convertto_cleanbranchname", "label": "ConvertTo-CleanBranchName()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "ConvertTo-CleanBranchName()", "community": 22, "community_name": "Feature Branch Creation", "source_file": ".specify/scripts/powershell/create-new-feature.ps1", "file_type": "code", "degree": 2}, {"id": "specify_scripts_powershell_create_new_feature_get_fittedbranchname", "label": "Get-FittedBranchName()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Get-FittedBranchName()", "community": 22, "community_name": "Feature Branch Creation", "source_file": ".specify/scripts/powershell/create-new-feature.ps1", "file_type": "code", "degree": 1}, {"id": "specify_scripts_powershell_create_new_feature_get_branchname", "label": "Get-BranchName()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Get-BranchName()", "community": 22, "community_name": "Feature Branch Creation", "source_file": ".specify/scripts/powershell/create-new-feature.ps1", "file_type": "code", "degree": 2}, {"id": "specify_scripts_powershell_resolve_template", "label": "resolve-template.ps1", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "resolve-template.ps1", "community": 36, "community_name": "Template Resolution", "source_file": ".specify/scripts/powershell/resolve-template.ps1", "file_type": "code", "degree": 0}, {"id": "specify_scripts_powershell_setup_plan", "label": "setup-plan.ps1", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "setup-plan.ps1", "community": 37, "community_name": "Plan Setup", "source_file": ".specify/scripts/powershell/setup-plan.ps1", "file_type": "code", "degree": 0}, {"id": "specify_scripts_powershell_setup_tasks", "label": "setup-tasks.ps1", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "setup-tasks.ps1", "community": 38, "community_name": "Task Setup", "source_file": ".specify/scripts/powershell/setup-tasks.ps1", "file_type": "code", "degree": 0}, {"id": "classify", "label": "classify.py", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 19.7, "font": {"size": 12, "color": "#ffffff"}, "title": "classify.py", "community": 45, "community_name": "ECPSnapshot", "source_file": "classify.py", "file_type": "code", "degree": 10}, {"id": "classify_parse_args", "label": "parse_args()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "parse_args()", "community": 48, "community_name": "main", "source_file": "classify.py", "file_type": "code", "degree": 3}, {"id": "namespace", "label": "Namespace", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Namespace", "community": 48, "community_name": "main", "source_file": "", "file_type": "code", "degree": 1}, {"id": "classify_emit_error", "label": "emit_error()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "emit_error()", "community": 46, "community_name": "test_models.py", "source_file": "classify.py", "file_type": "code", "degree": 4}, {"id": "classify_main", "label": "main()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 22.6, "font": {"size": 12, "color": "#ffffff"}, "title": "main()", "community": 48, "community_name": "main", "source_file": "classify.py", "file_type": "code", "degree": 13}, {"id": "pkg_text_nlp_classifier", "label": "text-nlp-classifier", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "text-nlp-classifier", "community": 79, "community_name": "text-nlp-classifier", "source_file": "pyproject.toml", "file_type": "code", "degree": 0}, {"id": "src_init", "label": "src/__init__.py", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "src/__init__.py", "community": 53, "community_name": "src/__init__.py", "source_file": "src/__init__.py", "file_type": "code", "degree": 1}, {"id": "src_init_rationale_1", "label": "Multilingual NLP Entity Inherence Classifier package.", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Multilingual NLP Entity Inherence Classifier package.", "community": 53, "community_name": "src/__init__.py", "source_file": "src/__init__.py", "file_type": "rationale", "degree": 1}, {"id": "src_adapters_init", "label": "adapters/__init__.py", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "adapters/__init__.py", "community": 52, "community_name": "adapters/__init__.py", "source_file": "src/adapters/__init__.py", "file_type": "code", "degree": 1}, {"id": "src_adapters_init_rationale_1", "label": "Adapters package for optional vector embeddings and LLM providers.", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Adapters package for optional vector embeddings and LLM providers.", "community": 52, "community_name": "adapters/__init__.py", "source_file": "src/adapters/__init__.py", "file_type": "rationale", "degree": 1}, {"id": "src_adapters_base", "label": "base.py", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 17.7, "font": {"size": 12, "color": "#ffffff"}, "title": "base.py", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/adapters/base.py", "file_type": "code", "degree": 8}, {"id": "src_adapters_base_basenlpadapter", "label": "BaseNLPAdapter", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 21.6, "font": {"size": 12, "color": "#ffffff"}, "title": "BaseNLPAdapter", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/adapters/base.py", "file_type": "code", "degree": 12}, {"id": "abc", "label": "ABC", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "ABC", "community": 45, "community_name": "ECPSnapshot", "source_file": "", "file_type": "code", "degree": 2}, {"id": "src_adapters_base_basenlpadapter_is_available", "label": ".is_available()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".is_available()", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/adapters/base.py", "file_type": "code", "degree": 2}, {"id": "src_adapters_base_basenlpadapter_evaluate_similarity", "label": ".evaluate_similarity()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".evaluate_similarity()", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/adapters/base.py", "file_type": "code", "degree": 2}, {"id": "src_adapters_base_basenlpadapter_disambiguate", "label": ".disambiguate()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".disambiguate()", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/adapters/base.py", "file_type": "code", "degree": 4}, {"id": "src_adapters_base_rationale_1", "label": "Base abstract adapter interface for optional Tier 2 / Tier 3 NLP enhancers.", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Base abstract adapter interface for optional Tier 2 / Tier 3 NLP enhancers.", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/adapters/base.py", "file_type": "rationale", "degree": 1}, {"id": "src_adapters_base_rationale_11", "label": "Abstract interface for pluggable NLP classification adapters.", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Abstract interface for pluggable NLP classification adapters.", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/adapters/base.py", "file_type": "rationale", "degree": 1}, {"id": "src_adapters_base_rationale_15", "label": "Return True if the underlying provider or model is installed and configured.", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Return True if the underlying provider or model is installed and configured.", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/adapters/base.py", "file_type": "rationale", "degree": 1}, {"id": "src_adapters_base_rationale_20", "label": "Compute semantic similarity score between text and a set of candidate terms.", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Compute semantic similarity score between text and a set of candidate terms.", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/adapters/base.py", "file_type": "rationale", "degree": 1}, {"id": "src_adapters_base_rationale_30", "label": "Optionally refine an ambiguous classification result.", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Optionally refine an ambiguous classification result.", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/adapters/base.py", "file_type": "rationale", "degree": 1}, {"id": "src_adapters_embeddings", "label": "embeddings.py", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 17.7, "font": {"size": 12, "color": "#ffffff"}, "title": "embeddings.py", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/adapters/embeddings.py", "file_type": "code", "degree": 8}, {"id": "src_adapters_embeddings_localembeddingsadapter", "label": "LocalEmbeddingsAdapter", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 23.5, "font": {"size": 12, "color": "#ffffff"}, "title": "LocalEmbeddingsAdapter", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/adapters/embeddings.py", "file_type": "code", "degree": 14}, {"id": "src_adapters_embeddings_localembeddingsadapter_init", "label": ".__init__()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".__init__()", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/adapters/embeddings.py", "file_type": "code", "degree": 1}, {"id": "src_adapters_embeddings_localembeddingsadapter_is_available", "label": ".is_available()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".is_available()", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/adapters/embeddings.py", "file_type": "code", "degree": 2}, {"id": "src_adapters_embeddings_localembeddingsadapter_evaluate_similarity", "label": ".evaluate_similarity()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".evaluate_similarity()", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/adapters/embeddings.py", "file_type": "code", "degree": 2}, {"id": "src_adapters_embeddings_localembeddingsadapter_disambiguate", "label": ".disambiguate()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".disambiguate()", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/adapters/embeddings.py", "file_type": "code", "degree": 3}, {"id": "src_adapters_embeddings_rationale_1", "label": "Optional local vector embeddings adapter (Tier 2). Disabled by default.\u2026", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Optional local vector embeddings adapter (Tier 2). Disabled by default.\u2026", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/adapters/embeddings.py", "file_type": "rationale", "degree": 1}, {"id": "src_adapters_embeddings_rationale_15", "label": "Optional adapter for local multilingual semantic vector embeddings.", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Optional adapter for local multilingual semantic vector embeddings.", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/adapters/embeddings.py", "file_type": "rationale", "degree": 1}, {"id": "src_adapters_llm", "label": "llm.py", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 17.7, "font": {"size": 12, "color": "#ffffff"}, "title": "llm.py", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/adapters/llm.py", "file_type": "code", "degree": 8}, {"id": "src_adapters_llm_llmfallbackadapter", "label": "LLMFallbackAdapter", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 23.5, "font": {"size": 12, "color": "#ffffff"}, "title": "LLMFallbackAdapter", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/adapters/llm.py", "file_type": "code", "degree": 14}, {"id": "src_adapters_llm_llmfallbackadapter_init", "label": ".__init__()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".__init__()", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/adapters/llm.py", "file_type": "code", "degree": 1}, {"id": "src_adapters_llm_llmfallbackadapter_is_available", "label": ".is_available()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".is_available()", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/adapters/llm.py", "file_type": "code", "degree": 2}, {"id": "src_adapters_llm_llmfallbackadapter_evaluate_similarity", "label": ".evaluate_similarity()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".evaluate_similarity()", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/adapters/llm.py", "file_type": "code", "degree": 1}, {"id": "src_adapters_llm_llmfallbackadapter_disambiguate", "label": ".disambiguate()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".disambiguate()", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/adapters/llm.py", "file_type": "code", "degree": 4}, {"id": "src_adapters_llm_rationale_1", "label": "Optional LLM fallback adapter (Tier 3). Disabled by default. Provides fallback\u2026", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Optional LLM fallback adapter (Tier 3). Disabled by default. Provides fallback\u2026", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/adapters/llm.py", "file_type": "rationale", "degree": 1}, {"id": "src_adapters_llm_rationale_16", "label": "Optional adapter for LLM fallback boundary disambiguation.", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Optional adapter for LLM fallback boundary disambiguation.", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/adapters/llm.py", "file_type": "rationale", "degree": 1}, {"id": "src_classifier", "label": "classifier.py", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 32.3, "font": {"size": 12, "color": "#ffffff"}, "title": "classifier.py", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/classifier.py", "file_type": "code", "degree": 23}, {"id": "src_classifier_match_phrase_in_text", "label": "match_phrase_in_text()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "match_phrase_in_text()", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/classifier.py", "file_type": "code", "degree": 4}, {"id": "src_classifier_count_phrase_occurrences", "label": "count_phrase_occurrences()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "count_phrase_occurrences()", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/classifier.py", "file_type": "code", "degree": 4}, {"id": "src_classifier_inherenceclassifier", "label": "InherenceClassifier", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 34.2, "font": {"size": 12, "color": "#ffffff"}, "title": "InherenceClassifier", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/classifier.py", "file_type": "code", "degree": 25}, {"id": "src_classifier_inherenceclassifier_init", "label": ".__init__()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".__init__()", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/classifier.py", "file_type": "code", "degree": 3}, {"id": "src_classifier_inherenceclassifier_classify", "label": ".classify()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 19.7, "font": {"size": 12, "color": "#ffffff"}, "title": ".classify()", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/classifier.py", "file_type": "code", "degree": 10}, {"id": "src_classifier_rationale_1", "label": "Core deterministic classification engine (Tier 1 core).", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Core deterministic classification engine (Tier 1 core).", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/classifier.py", "file_type": "rationale", "degree": 1}, {"id": "src_classifier_rationale_21", "label": "Check if a normalized phrase appears in normalized text with word boundary\u2026", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Check if a normalized phrase appears in normalized text with word boundary\u2026", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/classifier.py", "file_type": "rationale", "degree": 1}, {"id": "src_classifier_rationale_34", "label": "Count occurrences of a phrase in text.", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Count occurrences of a phrase in text.", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/classifier.py", "file_type": "rationale", "degree": 1}, {"id": "src_classifier_rationale_45", "label": "Tier 1 Deterministic NLP Entity Inherence Classifier.", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Tier 1 Deterministic NLP Entity Inherence Classifier.", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/classifier.py", "file_type": "rationale", "degree": 1}, {"id": "src_classifier_rationale_62", "label": "Classify inherence of content against an ECP snapshot.", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Classify inherence of content against an ECP snapshot.", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/classifier.py", "file_type": "rationale", "degree": 1}, {"id": "src_language", "label": "language.py", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 15.8, "font": {"size": 12, "color": "#ffffff"}, "title": "language.py", "community": 47, "community_name": "detect_language", "source_file": "src/language.py", "file_type": "code", "degree": 6}, {"id": "src_language_normalize_text", "label": "normalize_text()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 18.7, "font": {"size": 12, "color": "#ffffff"}, "title": "normalize_text()", "community": 47, "community_name": "detect_language", "source_file": "src/language.py", "file_type": "code", "degree": 9}, {"id": "src_language_extract_words", "label": "extract_words()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "extract_words()", "community": 47, "community_name": "detect_language", "source_file": "src/language.py", "file_type": "code", "degree": 3}, {"id": "src_language_detect_language", "label": "detect_language()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 23.5, "font": {"size": 12, "color": "#ffffff"}, "title": "detect_language()", "community": 47, "community_name": "detect_language", "source_file": "src/language.py", "file_type": "code", "degree": 14}, {"id": "src_language_rationale_1", "label": "Lightweight multilingual language detection and text normalization.", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Lightweight multilingual language detection and text normalization.", "community": 47, "community_name": "detect_language", "source_file": "src/language.py", "file_type": "rationale", "degree": 1}, {"id": "src_language_rationale_71", "label": "Normalize text by converting to lowercase and stripping combining diacritical\u2026", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Normalize text by converting to lowercase and stripping combining diacritical\u2026", "community": 47, "community_name": "detect_language", "source_file": "src/language.py", "file_type": "rationale", "degree": 1}, {"id": "src_language_rationale_81", "label": "Tokenize text into lowercase alphanumeric words.", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Tokenize text into lowercase alphanumeric words.", "community": 47, "community_name": "detect_language", "source_file": "src/language.py", "file_type": "rationale", "degree": 1}, {"id": "src_language_rationale_86", "label": "Detect the ISO-639-1 language code of text among supported languages (pt, en,\u2026", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Detect the ISO-639-1 language code of text among supported languages (pt, en,\u2026", "community": 47, "community_name": "detect_language", "source_file": "src/language.py", "file_type": "rationale", "degree": 1}, {"id": "src_models", "label": "models.py", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 28.4, "font": {"size": 12, "color": "#ffffff"}, "title": "models.py", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/models.py", "file_type": "code", "degree": 19}, {"id": "src_models_decisioncategory", "label": "DecisionCategory", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 27.4, "font": {"size": 12, "color": "#ffffff"}, "title": "DecisionCategory", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/models.py", "file_type": "code", "degree": 18}, {"id": "str", "label": "str", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "str", "community": 45, "community_name": "ECPSnapshot", "source_file": "", "file_type": "code", "degree": 2}, {"id": "enum", "label": "Enum", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Enum", "community": 45, "community_name": "ECPSnapshot", "source_file": "", "file_type": "code", "degree": 3}, {"id": "src_models_errorcode", "label": "ErrorCode", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 18.7, "font": {"size": 12, "color": "#ffffff"}, "title": "ErrorCode", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/models.py", "file_type": "code", "degree": 9}, {"id": "src_models_relatedentity", "label": "RelatedEntity", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 17.7, "font": {"size": 12, "color": "#ffffff"}, "title": "RelatedEntity", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/models.py", "file_type": "code", "degree": 8}, {"id": "src_models_relatedentity_from_dict", "label": ".from_dict()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".from_dict()", "community": 46, "community_name": "test_models.py", "source_file": "src/models.py", "file_type": "code", "degree": 3}, {"id": "any", "label": "Any", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Any", "community": 46, "community_name": "test_models.py", "source_file": "", "file_type": "code", "degree": 4}, {"id": "src_models_ecpsnapshot", "label": "ECPSnapshot", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 40.0, "font": {"size": 12, "color": "#ffffff"}, "title": "ECPSnapshot", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/models.py", "file_type": "code", "degree": 31}, {"id": "src_models_ecpsnapshot_from_dict", "label": ".from_dict()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 16.8, "font": {"size": 12, "color": "#ffffff"}, "title": ".from_dict()", "community": 46, "community_name": "test_models.py", "source_file": "src/models.py", "file_type": "code", "degree": 7}, {"id": "src_models_ecpsnapshot_from_json_str", "label": ".from_json_str()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".from_json_str()", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/models.py", "file_type": "code", "degree": 4}, {"id": "src_models_matchedgraphentity", "label": "MatchedGraphEntity", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "MatchedGraphEntity", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/models.py", "file_type": "code", "degree": 1}, {"id": "src_models_classificationresult", "label": "ClassificationResult", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 26.5, "font": {"size": 12, "color": "#ffffff"}, "title": "ClassificationResult", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/models.py", "file_type": "code", "degree": 17}, {"id": "src_models_classificationresult_to_dict", "label": ".to_dict()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".to_dict()", "community": 46, "community_name": "test_models.py", "source_file": "src/models.py", "file_type": "code", "degree": 2}, {"id": "src_models_classificationresult_to_json_str", "label": ".to_json_str()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".to_json_str()", "community": 46, "community_name": "test_models.py", "source_file": "src/models.py", "file_type": "code", "degree": 2}, {"id": "src_models_classificationerror", "label": "ClassificationError", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 17.7, "font": {"size": 12, "color": "#ffffff"}, "title": "ClassificationError", "community": 46, "community_name": "test_models.py", "source_file": "src/models.py", "file_type": "code", "degree": 8}, {"id": "src_models_classificationerror_to_dict", "label": ".to_dict()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".to_dict()", "community": 46, "community_name": "test_models.py", "source_file": "src/models.py", "file_type": "code", "degree": 4}, {"id": "src_models_classificationerror_to_json_str", "label": ".to_json_str()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".to_json_str()", "community": 46, "community_name": "test_models.py", "source_file": "src/models.py", "file_type": "code", "degree": 2}, {"id": "src_models_rationale_1", "label": "Data models and validation schemas for Multilingual NLP Entity Inherence\u2026", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Data models and validation schemas for Multilingual NLP Entity Inherence\u2026", "community": 45, "community_name": "ECPSnapshot", "source_file": "src/models.py", "file_type": "rationale", "degree": 1}, {"id": "src_parser", "label": "parser.py", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 15.8, "font": {"size": 12, "color": "#ffffff"}, "title": "parser.py", "community": 46, "community_name": "test_models.py", "source_file": "src/parser.py", "file_type": "code", "degree": 6}, {"id": "src_parser_strip_markdown", "label": "strip_markdown()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 16.8, "font": {"size": 12, "color": "#ffffff"}, "title": "strip_markdown()", "community": 46, "community_name": "test_models.py", "source_file": "src/parser.py", "file_type": "code", "degree": 7}, {"id": "src_parser_extract_sentences", "label": "extract_sentences()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "extract_sentences()", "community": 46, "community_name": "test_models.py", "source_file": "src/parser.py", "file_type": "code", "degree": 4}, {"id": "src_parser_extract_evidence_snippets", "label": "extract_evidence_snippets()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 17.7, "font": {"size": 12, "color": "#ffffff"}, "title": "extract_evidence_snippets()", "community": 46, "community_name": "test_models.py", "source_file": "src/parser.py", "file_type": "code", "degree": 8}, {"id": "src_parser_rationale_1", "label": "Markdown content parser and excerpt extraction utilities.", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Markdown content parser and excerpt extraction utilities.", "community": 46, "community_name": "test_models.py", "source_file": "src/parser.py", "file_type": "rationale", "degree": 1}, {"id": "src_parser_rationale_10", "label": "Remove markdown syntax markers (headers, bold, italics, links, code blocks) to\u2026", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Remove markdown syntax markers (headers, bold, italics, links, code blocks) to\u2026", "community": 46, "community_name": "test_models.py", "source_file": "src/parser.py", "file_type": "rationale", "degree": 1}, {"id": "src_parser_rationale_44", "label": "Split text into individual sentences.", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Split text into individual sentences.", "community": 46, "community_name": "test_models.py", "source_file": "src/parser.py", "file_type": "rationale", "degree": 1}, {"id": "src_parser_rationale_52", "label": "Extract relevant sentence excerpts from Markdown text that contain any of the\u2026", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Extract relevant sentence excerpts from Markdown text that contain any of the\u2026", "community": 46, "community_name": "test_models.py", "source_file": "src/parser.py", "file_type": "rationale", "degree": 1}, {"id": "tests_init", "label": "tests/__init__.py", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "tests/__init__.py", "community": 78, "community_name": "tests/__init__.py", "source_file": "tests/__init__.py", "file_type": "code", "degree": 1}, {"id": "tests_init_rationale_1", "label": "Test package for Multilingual NLP Entity Inherence Classifier.", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Test package for Multilingual NLP Entity Inherence Classifier.", "community": 78, "community_name": "tests/__init__.py", "source_file": "tests/__init__.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_adapters", "label": "test_adapters.py", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 21.6, "font": {"size": 12, "color": "#ffffff"}, "title": "test_adapters.py", "community": 45, "community_name": "ECPSnapshot", "source_file": "tests/test_adapters.py", "file_type": "code", "degree": 12}, {"id": "tests_test_adapters_test_embeddings_adapter_interface", "label": "test_embeddings_adapter_interface()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_embeddings_adapter_interface()", "community": 45, "community_name": "ECPSnapshot", "source_file": "tests/test_adapters.py", "file_type": "code", "degree": 2}, {"id": "tests_test_adapters_test_llm_adapter_interface", "label": "test_llm_adapter_interface()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_llm_adapter_interface()", "community": 45, "community_name": "ECPSnapshot", "source_file": "tests/test_adapters.py", "file_type": "code", "degree": 2}, {"id": "tests_test_adapters_test_classifier_with_adapter_flags", "label": "test_classifier_with_adapter_flags()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_classifier_with_adapter_flags()", "community": 45, "community_name": "ECPSnapshot", "source_file": "tests/test_adapters.py", "file_type": "code", "degree": 3}, {"id": "tests_test_adapters_rationale_1", "label": "Unit tests for optional adapter interfaces (Tier 2 / Tier 3).", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Unit tests for optional adapter interfaces (Tier 2 / Tier 3).", "community": 45, "community_name": "ECPSnapshot", "source_file": "tests/test_adapters.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_adversarial", "label": "test_adversarial.py", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 22.6, "font": {"size": 12, "color": "#ffffff"}, "title": "test_adversarial.py", "community": 45, "community_name": "ECPSnapshot", "source_file": "tests/test_adversarial.py", "file_type": "code", "degree": 13}, {"id": "tests_test_adversarial_test_adversarial_sao_paulo_city_vs_fc", "label": "test_adversarial_sao_paulo_city_vs_fc()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 14.8, "font": {"size": 12, "color": "#ffffff"}, "title": "test_adversarial_sao_paulo_city_vs_fc()", "community": 45, "community_name": "ECPSnapshot", "source_file": "tests/test_adversarial.py", "file_type": "code", "degree": 5}, {"id": "tests_test_adversarial_test_adversarial_apple_fruit_recipe", "label": "test_adversarial_apple_fruit_recipe()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 14.8, "font": {"size": 12, "color": "#ffffff"}, "title": "test_adversarial_apple_fruit_recipe()", "community": 45, "community_name": "ECPSnapshot", "source_file": "tests/test_adversarial.py", "file_type": "code", "degree": 5}, {"id": "tests_test_adversarial_test_adversarial_related_entity_without_scope_context", "label": "test_adversarial_related_entity_without_scope_context()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 15.8, "font": {"size": 12, "color": "#ffffff"}, "title": "test_adversarial_related_entity_without_scope_context()", "community": 45, "community_name": "ECPSnapshot", "source_file": "tests/test_adversarial.py", "file_type": "code", "degree": 6}, {"id": "tests_test_adversarial_test_adversarial_subprocess_cli_success_stdout", "label": "test_adversarial_subprocess_cli_success_stdout()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_adversarial_subprocess_cli_success_stdout()", "community": 45, "community_name": "ECPSnapshot", "source_file": "tests/test_adversarial.py", "file_type": "code", "degree": 2}, {"id": "tests_test_adversarial_test_adversarial_subprocess_cli_empty_content", "label": "test_adversarial_subprocess_cli_empty_content()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_adversarial_subprocess_cli_empty_content()", "community": 45, "community_name": "ECPSnapshot", "source_file": "tests/test_adversarial.py", "file_type": "code", "degree": 2}, {"id": "tests_test_adversarial_test_adversarial_subprocess_cli_missing_required_field", "label": "test_adversarial_subprocess_cli_missing_required_field()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_adversarial_subprocess_cli_missing_required_field()", "community": 45, "community_name": "ECPSnapshot", "source_file": "tests/test_adversarial.py", "file_type": "code", "degree": 2}, {"id": "tests_test_adversarial_test_adversarial_subprocess_cli_corrupted_json", "label": "test_adversarial_subprocess_cli_corrupted_json()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_adversarial_subprocess_cli_corrupted_json()", "community": 45, "community_name": "ECPSnapshot", "source_file": "tests/test_adversarial.py", "file_type": "code", "degree": 2}, {"id": "tests_test_adversarial_rationale_1", "label": "Adversarial and robustness test suite for Multilingual NLP Entity Inherence\u2026", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Adversarial and robustness test suite for Multilingual NLP Entity Inherence\u2026", "community": 45, "community_name": "ECPSnapshot", "source_file": "tests/test_adversarial.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_adversarial_rationale_16", "label": "Content about city/state governance of S\u00e3o Paulo against ECP for S\u00e3o Paulo FC.", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Content about city/state governance of S\u00e3o Paulo against ECP for S\u00e3o Paulo FC.", "community": 45, "community_name": "ECPSnapshot", "source_file": "tests/test_adversarial.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_adversarial_rationale_41", "label": "Content about apple fruit/culinary recipe against Apple Inc. tech entity.", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Content about apple fruit/culinary recipe against Apple Inc. tech entity.", "community": 45, "community_name": "ECPSnapshot", "source_file": "tests/test_adversarial.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_adversarial_rationale_64", "label": "High-weight related entity mentioned in passing without required domain anchors.", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "High-weight related entity mentioned in passing without required domain anchors.", "community": 45, "community_name": "ECPSnapshot", "source_file": "tests/test_adversarial.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_adversarial_rationale_99", "label": "Run CLI via subprocess without --output and verify stdout is pure parseable\u2026", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Run CLI via subprocess without --output and verify stdout is pure parseable\u2026", "community": 45, "community_name": "ECPSnapshot", "source_file": "tests/test_adversarial.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_adversarial_rationale_134", "label": "Run CLI via subprocess with empty content and verify error code and exit code.", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Run CLI via subprocess with empty content and verify error code and exit code.", "community": 45, "community_name": "ECPSnapshot", "source_file": "tests/test_adversarial.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_adversarial_rationale_165", "label": "Run CLI via subprocess with missing target_name and verify error payload.", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Run CLI via subprocess with missing target_name and verify error payload.", "community": 45, "community_name": "ECPSnapshot", "source_file": "tests/test_adversarial.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_adversarial_rationale_194", "label": "Run CLI via subprocess with corrupted JSON and verify error payload.", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Run CLI via subprocess with corrupted JSON and verify error payload.", "community": 45, "community_name": "ECPSnapshot", "source_file": "tests/test_adversarial.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_benchmark_24", "label": "test_benchmark_24.py", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 17.7, "font": {"size": 12, "color": "#ffffff"}, "title": "test_benchmark_24.py", "community": 45, "community_name": "ECPSnapshot", "source_file": "tests/test_benchmark_24.py", "file_type": "code", "degree": 8}, {"id": "tests_test_benchmark_24_py_fixture", "label": "fixture", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "fixture", "community": 45, "community_name": "ECPSnapshot", "source_file": "", "file_type": "code", "degree": 1}, {"id": "tests_test_benchmark_24_classifier", "label": "classifier()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "classifier()", "community": 45, "community_name": "ECPSnapshot", "source_file": "tests/test_benchmark_24.py", "file_type": "code", "degree": 3}, {"id": "parametrize", "label": "parametrize", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "parametrize", "community": 45, "community_name": "ECPSnapshot", "source_file": "", "file_type": "code", "degree": 1}, {"id": "tests_test_benchmark_24_test_benchmark_case", "label": "test_benchmark_case()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_benchmark_case()", "community": 45, "community_name": "ECPSnapshot", "source_file": "tests/test_benchmark_24.py", "file_type": "code", "degree": 4}, {"id": "tests_test_benchmark_24_rationale_1", "label": "Controlled 24-case benchmark suite for Multilingual NLP Entity Inherence\u2026", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Controlled 24-case benchmark suite for Multilingual NLP Entity Inherence\u2026", "community": 45, "community_name": "ECPSnapshot", "source_file": "tests/test_benchmark_24.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_classifier", "label": "test_classifier.py", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 22.6, "font": {"size": 12, "color": "#ffffff"}, "title": "test_classifier.py", "community": 45, "community_name": "ECPSnapshot", "source_file": "tests/test_classifier.py", "file_type": "code", "degree": 13}, {"id": "tests_test_classifier_py_fixture", "label": "fixture", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "fixture", "community": 45, "community_name": "ECPSnapshot", "source_file": "", "file_type": "code", "degree": 1}, {"id": "tests_test_classifier_petrobras_ecp", "label": "petrobras_ecp()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "petrobras_ecp()", "community": 45, "community_name": "ECPSnapshot", "source_file": "tests/test_classifier.py", "file_type": "code", "degree": 4}, {"id": "tests_test_classifier_test_direct_inherent", "label": "test_direct_inherent()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_direct_inherent()", "community": 45, "community_name": "ECPSnapshot", "source_file": "tests/test_classifier.py", "file_type": "code", "degree": 3}, {"id": "tests_test_classifier_test_contextual_inherent", "label": "test_contextual_inherent()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_contextual_inherent()", "community": 45, "community_name": "ECPSnapshot", "source_file": "tests/test_classifier.py", "file_type": "code", "degree": 3}, {"id": "tests_test_classifier_test_tangential_inherent", "label": "test_tangential_inherent()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_tangential_inherent()", "community": 45, "community_name": "ECPSnapshot", "source_file": "tests/test_classifier.py", "file_type": "code", "degree": 3}, {"id": "tests_test_classifier_test_not_related", "label": "test_not_related()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_not_related()", "community": 45, "community_name": "ECPSnapshot", "source_file": "tests/test_classifier.py", "file_type": "code", "degree": 3}, {"id": "tests_test_classifier_test_negative_anchor_suppression", "label": "test_negative_anchor_suppression()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_negative_anchor_suppression()", "community": 45, "community_name": "ECPSnapshot", "source_file": "tests/test_classifier.py", "file_type": "code", "degree": 3}, {"id": "tests_test_classifier_rationale_1", "label": "Unit tests for deterministic classification decision logic.", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Unit tests for deterministic classification decision logic.", "community": 45, "community_name": "ECPSnapshot", "source_file": "tests/test_classifier.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_cli", "label": "test_cli.py", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 17.7, "font": {"size": 12, "color": "#ffffff"}, "title": "test_cli.py", "community": 48, "community_name": "main", "source_file": "tests/test_cli.py", "file_type": "code", "degree": 8}, {"id": "tests_test_cli_test_cli_success_stdout", "label": "test_cli_success_stdout()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_cli_success_stdout()", "community": 48, "community_name": "main", "source_file": "tests/test_cli.py", "file_type": "code", "degree": 2}, {"id": "tests_test_cli_test_cli_output_file", "label": "test_cli_output_file()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_cli_output_file()", "community": 48, "community_name": "main", "source_file": "tests/test_cli.py", "file_type": "code", "degree": 2}, {"id": "tests_test_cli_test_cli_missing_ecp_file", "label": "test_cli_missing_ecp_file()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_cli_missing_ecp_file()", "community": 48, "community_name": "main", "source_file": "tests/test_cli.py", "file_type": "code", "degree": 2}, {"id": "tests_test_cli_test_cli_empty_content_file", "label": "test_cli_empty_content_file()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_cli_empty_content_file()", "community": 48, "community_name": "main", "source_file": "tests/test_cli.py", "file_type": "code", "degree": 2}, {"id": "tests_test_cli_test_cli_missing_required_ecp_field", "label": "test_cli_missing_required_ecp_field()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_cli_missing_required_ecp_field()", "community": 48, "community_name": "main", "source_file": "tests/test_cli.py", "file_type": "code", "degree": 2}, {"id": "tests_test_cli_rationale_1", "label": "CLI execution tests covering flags, arguments, stdout, and error handling.", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "CLI execution tests covering flags, arguments, stdout, and error handling.", "community": 48, "community_name": "main", "source_file": "tests/test_cli.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_language", "label": "test_language.py", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 21.6, "font": {"size": 12, "color": "#ffffff"}, "title": "test_language.py", "community": 47, "community_name": "detect_language", "source_file": "tests/test_language.py", "file_type": "code", "degree": 12}, {"id": "tests_test_language_test_normalize_text", "label": "test_normalize_text()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_normalize_text()", "community": 47, "community_name": "detect_language", "source_file": "tests/test_language.py", "file_type": "code", "degree": 2}, {"id": "tests_test_language_test_detect_portuguese", "label": "test_detect_portuguese()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_detect_portuguese()", "community": 47, "community_name": "detect_language", "source_file": "tests/test_language.py", "file_type": "code", "degree": 2}, {"id": "tests_test_language_test_detect_english", "label": "test_detect_english()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_detect_english()", "community": 47, "community_name": "detect_language", "source_file": "tests/test_language.py", "file_type": "code", "degree": 2}, {"id": "tests_test_language_test_detect_spanish", "label": "test_detect_spanish()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_detect_spanish()", "community": 47, "community_name": "detect_language", "source_file": "tests/test_language.py", "file_type": "code", "degree": 2}, {"id": "tests_test_language_test_detect_german", "label": "test_detect_german()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_detect_german()", "community": 47, "community_name": "detect_language", "source_file": "tests/test_language.py", "file_type": "code", "degree": 2}, {"id": "tests_test_language_test_detect_italian", "label": "test_detect_italian()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_detect_italian()", "community": 47, "community_name": "detect_language", "source_file": "tests/test_language.py", "file_type": "code", "degree": 2}, {"id": "tests_test_language_test_detect_french", "label": "test_detect_french()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_detect_french()", "community": 47, "community_name": "detect_language", "source_file": "tests/test_language.py", "file_type": "code", "degree": 2}, {"id": "tests_test_language_test_empty_language", "label": "test_empty_language()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_empty_language()", "community": 47, "community_name": "detect_language", "source_file": "tests/test_language.py", "file_type": "code", "degree": 2}, {"id": "tests_test_language_rationale_1", "label": "Unit tests for language detection and text normalization.", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Unit tests for language detection and text normalization.", "community": 47, "community_name": "detect_language", "source_file": "tests/test_language.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_models", "label": "test_models.py", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 28.4, "font": {"size": 12, "color": "#ffffff"}, "title": "test_models.py", "community": 46, "community_name": "test_models.py", "source_file": "tests/test_models.py", "file_type": "code", "degree": 19}, {"id": "tests_test_models_test_ecp_snapshot_valid", "label": "test_ecp_snapshot_valid()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_ecp_snapshot_valid()", "community": 46, "community_name": "test_models.py", "source_file": "tests/test_models.py", "file_type": "code", "degree": 3}, {"id": "tests_test_models_test_ecp_snapshot_defaults", "label": "test_ecp_snapshot_defaults()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_ecp_snapshot_defaults()", "community": 46, "community_name": "test_models.py", "source_file": "tests/test_models.py", "file_type": "code", "degree": 3}, {"id": "tests_test_models_test_ecp_snapshot_missing_required", "label": "test_ecp_snapshot_missing_required()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_ecp_snapshot_missing_required()", "community": 46, "community_name": "test_models.py", "source_file": "tests/test_models.py", "file_type": "code", "degree": 3}, {"id": "tests_test_models_test_classification_result_serialization", "label": "test_classification_result_serialization()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_classification_result_serialization()", "community": 45, "community_name": "ECPSnapshot", "source_file": "tests/test_models.py", "file_type": "code", "degree": 3}, {"id": "tests_test_models_test_classification_error_serialization", "label": "test_classification_error_serialization()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_classification_error_serialization()", "community": 46, "community_name": "test_models.py", "source_file": "tests/test_models.py", "file_type": "code", "degree": 3}, {"id": "tests_test_models_test_parser_strip_markdown", "label": "test_parser_strip_markdown()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_parser_strip_markdown()", "community": 46, "community_name": "test_models.py", "source_file": "tests/test_models.py", "file_type": "code", "degree": 2}, {"id": "tests_test_models_test_extract_evidence_snippets", "label": "test_extract_evidence_snippets()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_extract_evidence_snippets()", "community": 46, "community_name": "test_models.py", "source_file": "tests/test_models.py", "file_type": "code", "degree": 2}, {"id": "tests_test_models_rationale_1", "label": "Unit tests for ECP models, schema validation, and structured error handling.", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Unit tests for ECP models, schema validation, and structured error handling.", "community": 46, "community_name": "test_models.py", "source_file": "tests/test_models.py", "file_type": "rationale", "degree": 1}, {"id": "agents_rules_graphify", "label": "rules/graphify.md", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "rules/graphify.md", "community": 7, "community_name": "Graphify Rules", "source_file": ".agents/rules/graphify.md", "file_type": "document", "degree": 1}, {"id": "agents_rules_graphify_graphify", "label": "graphify", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "graphify", "community": 7, "community_name": "Graphify Rules", "source_file": ".agents/rules/graphify.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill", "label": "graphify/SKILL.md", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "graphify/SKILL.md", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill_graphify", "label": "/graphify", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 19.7, "font": {"size": 12, "color": "#ffffff"}, "title": "/graphify", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 10}, {"id": "agents_skills_graphify_skill_usage", "label": "Usage", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Usage", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill_what_graphify_is_for", "label": "What graphify is for", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "What graphify is for", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill_what_you_must_do_when_invoked", "label": "What You Must Do When Invoked", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 21.6, "font": {"size": 12, "color": "#ffffff"}, "title": "What You Must Do When Invoked", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 12}, {"id": "agents_skills_graphify_skill_step_0_github_repos_and_multi_path_merge_only_if_a_url_or_several_paths", "label": "Step 0 - GitHub repos and multi-path merge (only if a URL or several paths)", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Step 0 - GitHub repos and multi-path merge (only if a URL or several paths)", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill_step_1_ensure_graphify_is_installed", "label": "Step 1 - Ensure graphify is installed", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Step 1 - Ensure graphify is installed", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill_step_2_detect_files", "label": "Step 2 - Detect files", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Step 2 - Detect files", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill_step_2_5_video_and_audio_only_if_video_files_detected", "label": "Step 2.5 - Video and audio (only if video files detected)", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Step 2.5 - Video and audio (only if video files detected)", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill_step_3_extract_entities_and_relationships", "label": "Step 3 - Extract entities and relationships", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Step 3 - Extract entities and relationships", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 4}, {"id": "agents_skills_graphify_skill_part_a_structural_extraction_for_code_files", "label": "Part A - Structural extraction for code files", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Part A - Structural extraction for code files", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill_part_b_semantic_extraction_parallel_subagents", "label": "Part B - Semantic extraction (parallel subagents)", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Part B - Semantic extraction (parallel subagents)", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill_part_c_merge_ast_semantic_into_final_extraction", "label": "Part C - Merge AST + semantic into final extraction", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Part C - Merge AST + semantic into final extraction", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill_step_4_build_graph_cluster_analyze_generate_outputs", "label": "Step 4 - Build graph, cluster, analyze, generate outputs", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Step 4 - Build graph, cluster, analyze, generate outputs", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill_step_4_5_graph_health_check_read_only_integrity_gate", "label": "Step 4.5 - Graph health check (read-only integrity gate)", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Step 4.5 - Graph health check (read-only integrity gate)", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill_step_5_label_communities", "label": "Step 5 - Label communities", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Step 5 - Label communities", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill_step_6_generate_obsidian_vault_opt_in_html", "label": "Step 6 - Generate Obsidian vault (opt-in) + HTML", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Step 6 - Generate Obsidian vault (opt-in) + HTML", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill_steps_6b_8_wiki_neo4j_falkordb_svg_graphml_mcp_benchmark_only_on_their_flags", "label": "Steps 6b-8 - Wiki, Neo4j, FalkorDB, SVG, GraphML, MCP, benchmark (only on their flags)", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Steps 6b-8 - Wiki, Neo4j, FalkorDB, SVG, GraphML, MCP, benchmark (only on their flags)", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill_step_9_save_manifest_update_cost_tracker_clean_up_and_report", "label": "Step 9 - Save manifest, update cost tracker, clean up, and report", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Step 9 - Save manifest, update cost tracker, clean up, and report", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill_interpreter_guard_for_subcommands", "label": "Interpreter guard for subcommands", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Interpreter guard for subcommands", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill_for_update_and_cluster_only", "label": "For --update and --cluster-only", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "For --update and --cluster-only", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill_for_graphify_query", "label": "For /graphify query", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "For /graphify query", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill_for_graphify_add_and_watch", "label": "For /graphify add and --watch", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "For /graphify add and --watch", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill_for_the_commit_hook_and_native_claude_md_integration", "label": "For the commit hook and native CLAUDE.md integration", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "For the commit hook and native CLAUDE.md integration", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill_honesty_rules", "label": "Honesty Rules", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Honesty Rules", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_add_watch", "label": "add-watch.md", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "add-watch.md", "community": 28, "community_name": "Graphify Watch Mode", "source_file": ".agents/skills/graphify/references/add-watch.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_add_watch_graphify_reference_add_a_url_and_watch_a_folder", "label": "graphify reference: add a URL and watch a folder", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "graphify reference: add a URL and watch a folder", "community": 28, "community_name": "Graphify Watch Mode", "source_file": ".agents/skills/graphify/references/add-watch.md", "file_type": "document", "degree": 3}, {"id": "agents_skills_graphify_references_add_watch_for_graphify_add", "label": "For /graphify add", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "For /graphify add", "community": 28, "community_name": "Graphify Watch Mode", "source_file": ".agents/skills/graphify/references/add-watch.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_add_watch_for_watch", "label": "For --watch", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "For --watch", "community": 28, "community_name": "Graphify Watch Mode", "source_file": ".agents/skills/graphify/references/add-watch.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_exports", "label": "exports.md", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "exports.md", "community": 13, "community_name": "Graphify Exports", "source_file": ".agents/skills/graphify/references/exports.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_exports_graphify_reference_extra_exports_and_benchmark", "label": "graphify reference: extra exports and benchmark", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 17.7, "font": {"size": 12, "color": "#ffffff"}, "title": "graphify reference: extra exports and benchmark", "community": 13, "community_name": "Graphify Exports", "source_file": ".agents/skills/graphify/references/exports.md", "file_type": "document", "degree": 8}, {"id": "agents_skills_graphify_references_exports_step_6b_wiki_only_if_wiki_flag", "label": "Step 6b - Wiki (only if --wiki flag)", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Step 6b - Wiki (only if --wiki flag)", "community": 13, "community_name": "Graphify Exports", "source_file": ".agents/skills/graphify/references/exports.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_exports_step_7_neo4j_export_only_if_neo4j_or_neo4j_push_flag", "label": "Step 7 - Neo4j export (only if --neo4j or --neo4j-push flag)", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Step 7 - Neo4j export (only if --neo4j or --neo4j-push flag)", "community": 13, "community_name": "Graphify Exports", "source_file": ".agents/skills/graphify/references/exports.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_exports_step_7a_falkordb_export_only_if_falkordb_or_falkordb_push_flag", "label": "Step 7a - FalkorDB export (only if --falkordb or --falkordb-push flag)", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Step 7a - FalkorDB export (only if --falkordb or --falkordb-push flag)", "community": 13, "community_name": "Graphify Exports", "source_file": ".agents/skills/graphify/references/exports.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_exports_step_7b_svg_export_only_if_svg_flag", "label": "Step 7b - SVG export (only if --svg flag)", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Step 7b - SVG export (only if --svg flag)", "community": 13, "community_name": "Graphify Exports", "source_file": ".agents/skills/graphify/references/exports.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_exports_step_7c_graphml_export_only_if_graphml_flag", "label": "Step 7c - GraphML export (only if --graphml flag)", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Step 7c - GraphML export (only if --graphml flag)", "community": 13, "community_name": "Graphify Exports", "source_file": ".agents/skills/graphify/references/exports.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_exports_step_7d_mcp_server_only_if_mcp_flag", "label": "Step 7d - MCP server (only if --mcp flag)", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Step 7d - MCP server (only if --mcp flag)", "community": 13, "community_name": "Graphify Exports", "source_file": ".agents/skills/graphify/references/exports.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_exports_step_8_token_reduction_benchmark_only_if_total_words_5000", "label": "Step 8 - Token reduction benchmark (only if total_words > 5000)", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Step 8 - Token reduction benchmark (only if total_words > 5000)", "community": 13, "community_name": "Graphify Exports", "source_file": ".agents/skills/graphify/references/exports.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_extraction_spec", "label": "extraction-spec.md", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "extraction-spec.md", "community": 34, "community_name": "Extraction Specification", "source_file": ".agents/skills/graphify/references/extraction-spec.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_extraction_spec_graphify_reference_extraction_subagent_prompt", "label": "graphify reference: extraction subagent prompt", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "graphify reference: extraction subagent prompt", "community": 34, "community_name": "Extraction Specification", "source_file": ".agents/skills/graphify/references/extraction-spec.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_github_and_merge", "label": "github-and-merge.md", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "github-and-merge.md", "community": 32, "community_name": "Repository Merge", "source_file": ".agents/skills/graphify/references/github-and-merge.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_github_and_merge_graphify_reference_github_clone_and_cross_repo_merge", "label": "graphify reference: GitHub clone and cross-repo merge", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "graphify reference: GitHub clone and cross-repo merge", "community": 32, "community_name": "Repository Merge", "source_file": ".agents/skills/graphify/references/github-and-merge.md", "file_type": "document", "degree": 2}, {"id": "agents_skills_graphify_references_github_and_merge_step_0_clone_github_repo_s_only_if_a_github_url_was_given", "label": "Step 0 - Clone GitHub repo(s) (only if a GitHub URL was given)", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Step 0 - Clone GitHub repo(s) (only if a GitHub URL was given)", "community": 32, "community_name": "Repository Merge", "source_file": ".agents/skills/graphify/references/github-and-merge.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_hooks", "label": "hooks.md", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "hooks.md", "community": 29, "community_name": "Graphify Hooks", "source_file": ".agents/skills/graphify/references/hooks.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_hooks_graphify_reference_commit_hook_and_native_claude_md_integration", "label": "graphify reference: commit hook and native CLAUDE.md integration", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "graphify reference: commit hook and native CLAUDE.md integration", "community": 29, "community_name": "Graphify Hooks", "source_file": ".agents/skills/graphify/references/hooks.md", "file_type": "document", "degree": 3}, {"id": "agents_skills_graphify_references_hooks_for_git_commit_hook", "label": "For git commit hook", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "For git commit hook", "community": 29, "community_name": "Graphify Hooks", "source_file": ".agents/skills/graphify/references/hooks.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_hooks_for_native_claude_md_integration", "label": "For native CLAUDE.md integration", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "For native CLAUDE.md integration", "community": 29, "community_name": "Graphify Hooks", "source_file": ".agents/skills/graphify/references/hooks.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_query", "label": "query.md", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "query.md", "community": 20, "community_name": "Graph Query", "source_file": ".agents/skills/graphify/references/query.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_query_graphify_reference_query_path_explain", "label": "graphify reference: query, path, explain", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 14.8, "font": {"size": 12, "color": "#ffffff"}, "title": "graphify reference: query, path, explain", "community": 20, "community_name": "Graph Query", "source_file": ".agents/skills/graphify/references/query.md", "file_type": "document", "degree": 5}, {"id": "agents_skills_graphify_references_query_step_0_constrained_query_expansion_required_before_traversal", "label": "Step 0 \u2014 Constrained query expansion (REQUIRED before traversal)", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Step 0 \u2014 Constrained query expansion (REQUIRED before traversal)", "community": 20, "community_name": "Graph Query", "source_file": ".agents/skills/graphify/references/query.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_query_step_1_traversal", "label": "Step 1 \u2014 Traversal", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Step 1 \u2014 Traversal", "community": 20, "community_name": "Graph Query", "source_file": ".agents/skills/graphify/references/query.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_query_for_graphify_path", "label": "For /graphify path", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "For /graphify path", "community": 20, "community_name": "Graph Query", "source_file": ".agents/skills/graphify/references/query.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_query_for_graphify_explain", "label": "For /graphify explain", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "For /graphify explain", "community": 20, "community_name": "Graph Query", "source_file": ".agents/skills/graphify/references/query.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_transcribe", "label": "transcribe.md", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "transcribe.md", "community": 33, "community_name": "Media Transcription", "source_file": ".agents/skills/graphify/references/transcribe.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_transcribe_graphify_reference_transcribe_video_and_audio", "label": "graphify reference: transcribe video and audio", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "graphify reference: transcribe video and audio", "community": 33, "community_name": "Media Transcription", "source_file": ".agents/skills/graphify/references/transcribe.md", "file_type": "document", "degree": 2}, {"id": "agents_skills_graphify_references_transcribe_step_2_5_transcribe_video_audio_files_only_if_video_files_detected", "label": "Step 2.5 - Transcribe video / audio files (only if video files detected)", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Step 2.5 - Transcribe video / audio files (only if video files detected)", "community": 33, "community_name": "Media Transcription", "source_file": ".agents/skills/graphify/references/transcribe.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_update", "label": "update.md", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "update.md", "community": 30, "community_name": "Graphify Updates", "source_file": ".agents/skills/graphify/references/update.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_update_graphify_reference_incremental_update_and_cluster_only", "label": "graphify reference: incremental update and cluster-only", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "graphify reference: incremental update and cluster-only", "community": 30, "community_name": "Graphify Updates", "source_file": ".agents/skills/graphify/references/update.md", "file_type": "document", "degree": 3}, {"id": "agents_skills_graphify_references_update_for_update_incremental_re_extraction", "label": "For --update (incremental re-extraction)", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "For --update (incremental re-extraction)", "community": 30, "community_name": "Graphify Updates", "source_file": ".agents/skills/graphify/references/update.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_update_for_cluster_only", "label": "For --cluster-only", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "For --cluster-only", "community": 30, "community_name": "Graphify Updates", "source_file": ".agents/skills/graphify/references/update.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_audit_skill", "label": "ponytail-audit/SKILL.md", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "ponytail-audit/SKILL.md", "community": 23, "community_name": "Ponytail Audit", "source_file": ".agents/skills/ponytail-audit/SKILL.md", "file_type": "document", "degree": 4}, {"id": "agents_skills_ponytail_audit_skill_tags", "label": "Tags", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Tags", "community": 23, "community_name": "Ponytail Audit", "source_file": ".agents/skills/ponytail-audit/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_audit_skill_hunt", "label": "Hunt", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Hunt", "community": 23, "community_name": "Ponytail Audit", "source_file": ".agents/skills/ponytail-audit/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_audit_skill_output", "label": "Output", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Output", "community": 23, "community_name": "Ponytail Audit", "source_file": ".agents/skills/ponytail-audit/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_audit_skill_boundaries", "label": "Boundaries", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Boundaries", "community": 23, "community_name": "Ponytail Audit", "source_file": ".agents/skills/ponytail-audit/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_debt_skill", "label": "ponytail-debt/SKILL.md", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "ponytail-debt/SKILL.md", "community": 31, "community_name": "Ponytail Debt", "source_file": ".agents/skills/ponytail-debt/SKILL.md", "file_type": "document", "degree": 3}, {"id": "agents_skills_ponytail_debt_skill_scan", "label": "Scan", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Scan", "community": 31, "community_name": "Ponytail Debt", "source_file": ".agents/skills/ponytail-debt/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_debt_skill_output", "label": "Output", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Output", "community": 31, "community_name": "Ponytail Debt", "source_file": ".agents/skills/ponytail-debt/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_debt_skill_boundaries", "label": "Boundaries", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Boundaries", "community": 31, "community_name": "Ponytail Debt", "source_file": ".agents/skills/ponytail-debt/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_gain_skill", "label": "ponytail-gain/SKILL.md", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "ponytail-gain/SKILL.md", "community": 24, "community_name": "Ponytail Metrics", "source_file": ".agents/skills/ponytail-gain/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_gain_skill_ponytail_gain", "label": "Ponytail Gain", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Ponytail Gain", "community": 24, "community_name": "Ponytail Metrics", "source_file": ".agents/skills/ponytail-gain/SKILL.md", "file_type": "document", "degree": 4}, {"id": "agents_skills_ponytail_gain_skill_scoreboard", "label": "Scoreboard", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Scoreboard", "community": 24, "community_name": "Ponytail Metrics", "source_file": ".agents/skills/ponytail-gain/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_gain_skill_honesty_boundary", "label": "Honesty boundary", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Honesty boundary", "community": 24, "community_name": "Ponytail Metrics", "source_file": ".agents/skills/ponytail-gain/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_gain_skill_boundaries", "label": "Boundaries", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Boundaries", "community": 24, "community_name": "Ponytail Metrics", "source_file": ".agents/skills/ponytail-gain/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_help_skill", "label": "ponytail-help/SKILL.md", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "ponytail-help/SKILL.md", "community": 16, "community_name": "Ponytail Help", "source_file": ".agents/skills/ponytail-help/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_help_skill_ponytail_help", "label": "Ponytail Help", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 16.8, "font": {"size": 12, "color": "#ffffff"}, "title": "Ponytail Help", "community": 16, "community_name": "Ponytail Help", "source_file": ".agents/skills/ponytail-help/SKILL.md", "file_type": "document", "degree": 7}, {"id": "agents_skills_ponytail_help_skill_levels", "label": "Levels", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Levels", "community": 16, "community_name": "Ponytail Help", "source_file": ".agents/skills/ponytail-help/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_help_skill_skills", "label": "Skills", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Skills", "community": 16, "community_name": "Ponytail Help", "source_file": ".agents/skills/ponytail-help/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_help_skill_deactivate", "label": "Deactivate", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Deactivate", "community": 16, "community_name": "Ponytail Help", "source_file": ".agents/skills/ponytail-help/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_help_skill_configure_default_mode", "label": "Configure Default Mode", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Configure Default Mode", "community": 16, "community_name": "Ponytail Help", "source_file": ".agents/skills/ponytail-help/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_help_skill_update", "label": "Update", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Update", "community": 16, "community_name": "Ponytail Help", "source_file": ".agents/skills/ponytail-help/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_help_skill_more", "label": "More", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "More", "community": 16, "community_name": "Ponytail Help", "source_file": ".agents/skills/ponytail-help/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_review_skill", "label": "ponytail-review/SKILL.md", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "ponytail-review/SKILL.md", "community": 25, "community_name": "Ponytail Review", "source_file": ".agents/skills/ponytail-review/SKILL.md", "file_type": "document", "degree": 4}, {"id": "agents_skills_ponytail_review_skill_format", "label": "Format", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Format", "community": 25, "community_name": "Ponytail Review", "source_file": ".agents/skills/ponytail-review/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_review_skill_examples", "label": "Examples", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Examples", "community": 25, "community_name": "Ponytail Review", "source_file": ".agents/skills/ponytail-review/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_review_skill_scoring", "label": "Scoring", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Scoring", "community": 25, "community_name": "Ponytail Review", "source_file": ".agents/skills/ponytail-review/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_review_skill_boundaries", "label": "Boundaries", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Boundaries", "community": 25, "community_name": "Ponytail Review", "source_file": ".agents/skills/ponytail-review/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_skill", "label": "ponytail/SKILL.md", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "ponytail/SKILL.md", "community": 14, "community_name": "Ponytail Configuration", "source_file": ".agents/skills/ponytail/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_skill_ponytail", "label": "Ponytail", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 17.7, "font": {"size": 12, "color": "#ffffff"}, "title": "Ponytail", "community": 14, "community_name": "Ponytail Configuration", "source_file": ".agents/skills/ponytail/SKILL.md", "file_type": "document", "degree": 8}, {"id": "agents_skills_ponytail_skill_persistence", "label": "Persistence", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Persistence", "community": 14, "community_name": "Ponytail Configuration", "source_file": ".agents/skills/ponytail/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_skill_the_ladder", "label": "The ladder", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "The ladder", "community": 14, "community_name": "Ponytail Configuration", "source_file": ".agents/skills/ponytail/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_skill_rules", "label": "Rules", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Rules", "community": 14, "community_name": "Ponytail Configuration", "source_file": ".agents/skills/ponytail/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_skill_output", "label": "Output", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Output", "community": 14, "community_name": "Ponytail Configuration", "source_file": ".agents/skills/ponytail/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_skill_intensity", "label": "Intensity", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Intensity", "community": 14, "community_name": "Ponytail Configuration", "source_file": ".agents/skills/ponytail/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_skill_when_not_to_be_lazy", "label": "When NOT to be lazy", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "When NOT to be lazy", "community": 14, "community_name": "Ponytail Configuration", "source_file": ".agents/skills/ponytail/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_skill_boundaries", "label": "Boundaries", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Boundaries", "community": 14, "community_name": "Ponytail Configuration", "source_file": ".agents/skills/ponytail/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_analyze_skill", "label": "speckit-analyze/SKILL.md", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 17.7, "font": {"size": 12, "color": "#ffffff"}, "title": "speckit-analyze/SKILL.md", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 8}, {"id": "agents_skills_speckit_analyze_skill_user_input", "label": "User Input", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "User Input", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_analyze_skill_pre_execution_checks", "label": "Pre-Execution Checks", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Pre-Execution Checks", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_analyze_skill_goal", "label": "Goal", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Goal", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_analyze_skill_operating_constraints", "label": "Operating Constraints", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Operating Constraints", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_analyze_skill_execution_steps", "label": "Execution Steps", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 16.8, "font": {"size": 12, "color": "#ffffff"}, "title": "Execution Steps", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 7}, {"id": "agents_skills_speckit_analyze_skill_1_initialize_analysis_context", "label": "1. Initialize Analysis Context", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "1. Initialize Analysis Context", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_analyze_skill_2_load_artifacts_progressive_disclosure", "label": "2. Load Artifacts (Progressive Disclosure)", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "2. Load Artifacts (Progressive Disclosure)", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_analyze_skill_3_build_semantic_models", "label": "3. Build Semantic Models", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "3. Build Semantic Models", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_analyze_skill_4_detection_passes_token_efficient_analysis", "label": "4. Detection Passes (Token-Efficient Analysis)", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 16.8, "font": {"size": 12, "color": "#ffffff"}, "title": "4. Detection Passes (Token-Efficient Analysis)", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 7}, {"id": "agents_skills_speckit_analyze_skill_a_duplication_detection", "label": "A. Duplication Detection", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "A. Duplication Detection", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_analyze_skill_b_ambiguity_detection", "label": "B. Ambiguity Detection", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "B. Ambiguity Detection", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_analyze_skill_c_underspecification", "label": "C. Underspecification", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "C. Underspecification", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_analyze_skill_d_constitution_alignment", "label": "D. Constitution Alignment", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "D. Constitution Alignment", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_analyze_skill_e_coverage_gaps", "label": "E. Coverage Gaps", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "E. Coverage Gaps", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_analyze_skill_f_inconsistency", "label": "F. Inconsistency", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "F. Inconsistency", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_analyze_skill_5_severity_assignment", "label": "5. Severity Assignment", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "5. Severity Assignment", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_analyze_skill_6_produce_compact_analysis_report", "label": "6. Produce Compact Analysis Report", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "6. Produce Compact Analysis Report", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_analyze_skill_specification_analysis_report", "label": "Specification Analysis Report", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Specification Analysis Report", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 4}, {"id": "agents_skills_speckit_analyze_skill_7_provide_next_actions", "label": "7. Provide Next Actions", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "7. Provide Next Actions", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_analyze_skill_8_offer_remediation", "label": "8. Offer Remediation", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "8. Offer Remediation", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_analyze_skill_9_check_for_extension_hooks", "label": "9. Check for extension hooks", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "9. Check for extension hooks", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_analyze_skill_operating_principles", "label": "Operating Principles", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Operating Principles", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 3}, {"id": "agents_skills_speckit_analyze_skill_context_efficiency", "label": "Context Efficiency", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Context Efficiency", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_analyze_skill_analysis_guidelines", "label": "Analysis Guidelines", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Analysis Guidelines", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_analyze_skill_context", "label": "Context", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Context", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_checklist_skill", "label": "speckit-checklist/SKILL.md", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 16.8, "font": {"size": 12, "color": "#ffffff"}, "title": "speckit-checklist/SKILL.md", "community": 17, "community_name": "Checklist Generation", "source_file": ".agents/skills/speckit-checklist/SKILL.md", "file_type": "document", "degree": 7}, {"id": "agents_skills_speckit_checklist_skill_checklist_purpose_unit_tests_for_english", "label": "Checklist Purpose: \"Unit Tests for English\"", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Checklist Purpose: "Unit Tests for English"", "community": 17, "community_name": "Checklist Generation", "source_file": ".agents/skills/speckit-checklist/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_checklist_skill_user_input", "label": "User Input", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "User Input", "community": 17, "community_name": "Checklist Generation", "source_file": ".agents/skills/speckit-checklist/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_checklist_skill_pre_execution_checks", "label": "Pre-Execution Checks", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Pre-Execution Checks", "community": 17, "community_name": "Checklist Generation", "source_file": ".agents/skills/speckit-checklist/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_checklist_skill_execution_steps", "label": "Execution Steps", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Execution Steps", "community": 17, "community_name": "Checklist Generation", "source_file": ".agents/skills/speckit-checklist/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_checklist_skill_example_checklist_types_sample_items", "label": "Example Checklist Types & Sample Items", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Example Checklist Types & Sample Items", "community": 17, "community_name": "Checklist Generation", "source_file": ".agents/skills/speckit-checklist/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_checklist_skill_anti_examples_what_not_to_do", "label": "Anti-Examples: What NOT To Do", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Anti-Examples: What NOT To Do", "community": 17, "community_name": "Checklist Generation", "source_file": ".agents/skills/speckit-checklist/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_checklist_skill_post_execution_checks", "label": "Post-Execution Checks", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Post-Execution Checks", "community": 17, "community_name": "Checklist Generation", "source_file": ".agents/skills/speckit-checklist/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_clarify_skill", "label": "speckit-clarify/SKILL.md", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 15.8, "font": {"size": 12, "color": "#ffffff"}, "title": "speckit-clarify/SKILL.md", "community": 18, "community_name": "Clarification Workflow", "source_file": ".agents/skills/speckit-clarify/SKILL.md", "file_type": "document", "degree": 6}, {"id": "agents_skills_speckit_clarify_skill_user_input", "label": "User Input", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "User Input", "community": 18, "community_name": "Clarification Workflow", "source_file": ".agents/skills/speckit-clarify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_clarify_skill_pre_execution_checks", "label": "Pre-Execution Checks", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Pre-Execution Checks", "community": 18, "community_name": "Clarification Workflow", "source_file": ".agents/skills/speckit-clarify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_clarify_skill_outline", "label": "Outline", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Outline", "community": 18, "community_name": "Clarification Workflow", "source_file": ".agents/skills/speckit-clarify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_clarify_skill_mandatory_post_execution_hooks", "label": "Mandatory Post-Execution Hooks", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Mandatory Post-Execution Hooks", "community": 18, "community_name": "Clarification Workflow", "source_file": ".agents/skills/speckit-clarify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_clarify_skill_completion_report", "label": "Completion Report", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Completion Report", "community": 18, "community_name": "Clarification Workflow", "source_file": ".agents/skills/speckit-clarify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_clarify_skill_done_when", "label": "Done When", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Done When", "community": 18, "community_name": "Clarification Workflow", "source_file": ".agents/skills/speckit-clarify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_constitution_skill", "label": "speckit-constitution/SKILL.md", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 14.8, "font": {"size": 12, "color": "#ffffff"}, "title": "speckit-constitution/SKILL.md", "community": 21, "community_name": "Constitution Workflow", "source_file": ".agents/skills/speckit-constitution/SKILL.md", "file_type": "document", "degree": 5}, {"id": "agents_skills_speckit_constitution_skill_user_input", "label": "User Input", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "User Input", "community": 21, "community_name": "Constitution Workflow", "source_file": ".agents/skills/speckit-constitution/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_constitution_skill_scope_guard", "label": "Scope Guard", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Scope Guard", "community": 21, "community_name": "Constitution Workflow", "source_file": ".agents/skills/speckit-constitution/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_constitution_skill_pre_execution_checks", "label": "Pre-Execution Checks", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Pre-Execution Checks", "community": 21, "community_name": "Constitution Workflow", "source_file": ".agents/skills/speckit-constitution/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_constitution_skill_outline", "label": "Outline", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Outline", "community": 21, "community_name": "Constitution Workflow", "source_file": ".agents/skills/speckit-constitution/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_constitution_skill_post_execution_checks", "label": "Post-Execution Checks", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Post-Execution Checks", "community": 21, "community_name": "Constitution Workflow", "source_file": ".agents/skills/speckit-constitution/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_converge_skill", "label": "speckit-converge/SKILL.md", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 15.8, "font": {"size": 12, "color": "#ffffff"}, "title": "speckit-converge/SKILL.md", "community": 1, "community_name": "Convergence Workflow", "source_file": ".agents/skills/speckit-converge/SKILL.md", "file_type": "document", "degree": 6}, {"id": "agents_skills_speckit_converge_skill_user_input", "label": "User Input", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "User Input", "community": 1, "community_name": "Convergence Workflow", "source_file": ".agents/skills/speckit-converge/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_converge_skill_pre_execution_checks", "label": "Pre-Execution Checks", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Pre-Execution Checks", "community": 1, "community_name": "Convergence Workflow", "source_file": ".agents/skills/speckit-converge/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_converge_skill_goal", "label": "Goal", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Goal", "community": 1, "community_name": "Convergence Workflow", "source_file": ".agents/skills/speckit-converge/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_converge_skill_operating_constraints", "label": "Operating Constraints", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Operating Constraints", "community": 1, "community_name": "Convergence Workflow", "source_file": ".agents/skills/speckit-converge/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_converge_skill_execution_steps", "label": "Execution Steps", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 16.8, "font": {"size": 12, "color": "#ffffff"}, "title": "Execution Steps", "community": 1, "community_name": "Convergence Workflow", "source_file": ".agents/skills/speckit-converge/SKILL.md", "file_type": "document", "degree": 7}, {"id": "agents_skills_speckit_converge_skill_1_initialize_convergence_context", "label": "1. Initialize Convergence Context", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "1. Initialize Convergence Context", "community": 1, "community_name": "Convergence Workflow", "source_file": ".agents/skills/speckit-converge/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_converge_skill_2_load_artifacts_progressive_disclosure", "label": "2. Load Artifacts (Progressive Disclosure)", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "2. Load Artifacts (Progressive Disclosure)", "community": 1, "community_name": "Convergence Workflow", "source_file": ".agents/skills/speckit-converge/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_converge_skill_3_build_the_intent_inventory", "label": "3. Build the Intent Inventory", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "3. Build the Intent Inventory", "community": 1, "community_name": "Convergence Workflow", "source_file": ".agents/skills/speckit-converge/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_converge_skill_4_assess_the_codebase_and_classify_findings", "label": "4. Assess the Codebase and Classify Findings", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "4. Assess the Codebase and Classify Findings", "community": 1, "community_name": "Convergence Workflow", "source_file": ".agents/skills/speckit-converge/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_converge_skill_5_assign_severity", "label": "5. Assign Severity", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "5. Assign Severity", "community": 1, "community_name": "Convergence Workflow", "source_file": ".agents/skills/speckit-converge/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_converge_skill_6_present_the_in_session_findings_summary", "label": "6. Present the In-Session Findings Summary", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "6. Present the In-Session Findings Summary", "community": 1, "community_name": "Convergence Workflow", "source_file": ".agents/skills/speckit-converge/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_converge_skill_convergence_findings", "label": "Convergence Findings", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Convergence Findings", "community": 1, "community_name": "Convergence Workflow", "source_file": ".agents/skills/speckit-converge/SKILL.md", "file_type": "document", "degree": 4}, {"id": "agents_skills_speckit_converge_skill_7_append_convergence_tasks_or_report_converged", "label": "7. Append Convergence Tasks (or report converged)", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "7. Append Convergence Tasks (or report converged)", "community": 1, "community_name": "Convergence Workflow", "source_file": ".agents/skills/speckit-converge/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_converge_skill_8_provide_next_actions_handoff", "label": "8. Provide Next Actions (Handoff)", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "8. Provide Next Actions (Handoff)", "community": 1, "community_name": "Convergence Workflow", "source_file": ".agents/skills/speckit-converge/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_converge_skill_9_check_for_extension_hooks", "label": "9. Check for extension hooks", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "9. Check for extension hooks", "community": 1, "community_name": "Convergence Workflow", "source_file": ".agents/skills/speckit-converge/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_implement_skill", "label": "speckit-implement/SKILL.md", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 15.8, "font": {"size": 12, "color": "#ffffff"}, "title": "speckit-implement/SKILL.md", "community": 19, "community_name": "Implementation Workflow", "source_file": ".agents/skills/speckit-implement/SKILL.md", "file_type": "document", "degree": 6}, {"id": "agents_skills_speckit_implement_skill_user_input", "label": "User Input", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "User Input", "community": 19, "community_name": "Implementation Workflow", "source_file": ".agents/skills/speckit-implement/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_implement_skill_pre_execution_checks", "label": "Pre-Execution Checks", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Pre-Execution Checks", "community": 19, "community_name": "Implementation Workflow", "source_file": ".agents/skills/speckit-implement/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_implement_skill_outline", "label": "Outline", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Outline", "community": 19, "community_name": "Implementation Workflow", "source_file": ".agents/skills/speckit-implement/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_implement_skill_mandatory_post_execution_hooks", "label": "Mandatory Post-Execution Hooks", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Mandatory Post-Execution Hooks", "community": 19, "community_name": "Implementation Workflow", "source_file": ".agents/skills/speckit-implement/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_implement_skill_completion_report", "label": "Completion Report", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Completion Report", "community": 19, "community_name": "Implementation Workflow", "source_file": ".agents/skills/speckit-implement/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_implement_skill_done_when", "label": "Done When", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Done When", "community": 19, "community_name": "Implementation Workflow", "source_file": ".agents/skills/speckit-implement/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_plan_skill", "label": "speckit-plan/SKILL.md", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 17.7, "font": {"size": 12, "color": "#ffffff"}, "title": "speckit-plan/SKILL.md", "community": 8, "community_name": "Implementation Planning", "source_file": ".agents/skills/speckit-plan/SKILL.md", "file_type": "document", "degree": 8}, {"id": "agents_skills_speckit_plan_skill_user_input", "label": "User Input", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "User Input", "community": 8, "community_name": "Implementation Planning", "source_file": ".agents/skills/speckit-plan/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_plan_skill_pre_execution_checks", "label": "Pre-Execution Checks", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Pre-Execution Checks", "community": 8, "community_name": "Implementation Planning", "source_file": ".agents/skills/speckit-plan/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_plan_skill_outline", "label": "Outline", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Outline", "community": 8, "community_name": "Implementation Planning", "source_file": ".agents/skills/speckit-plan/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_plan_skill_mandatory_post_execution_hooks", "label": "Mandatory Post-Execution Hooks", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Mandatory Post-Execution Hooks", "community": 8, "community_name": "Implementation Planning", "source_file": ".agents/skills/speckit-plan/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_plan_skill_completion_report", "label": "Completion Report", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Completion Report", "community": 8, "community_name": "Implementation Planning", "source_file": ".agents/skills/speckit-plan/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_plan_skill_phases", "label": "Phases", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Phases", "community": 8, "community_name": "Implementation Planning", "source_file": ".agents/skills/speckit-plan/SKILL.md", "file_type": "document", "degree": 3}, {"id": "agents_skills_speckit_plan_skill_phase_0_outline_research", "label": "Phase 0: Outline & Research", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Phase 0: Outline & Research", "community": 8, "community_name": "Implementation Planning", "source_file": ".agents/skills/speckit-plan/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_plan_skill_phase_1_design_contracts", "label": "Phase 1: Design & Contracts", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Phase 1: Design & Contracts", "community": 8, "community_name": "Implementation Planning", "source_file": ".agents/skills/speckit-plan/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_plan_skill_key_rules", "label": "Key rules", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Key rules", "community": 8, "community_name": "Implementation Planning", "source_file": ".agents/skills/speckit-plan/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_plan_skill_done_when", "label": "Done When", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Done When", "community": 8, "community_name": "Implementation Planning", "source_file": ".agents/skills/speckit-plan/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_specify_skill", "label": "speckit-specify/SKILL.md", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 16.8, "font": {"size": 12, "color": "#ffffff"}, "title": "speckit-specify/SKILL.md", "community": 9, "community_name": "Feature Specification", "source_file": ".agents/skills/speckit-specify/SKILL.md", "file_type": "document", "degree": 7}, {"id": "agents_skills_speckit_specify_skill_user_input", "label": "User Input", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "User Input", "community": 9, "community_name": "Feature Specification", "source_file": ".agents/skills/speckit-specify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_specify_skill_pre_execution_checks", "label": "Pre-Execution Checks", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Pre-Execution Checks", "community": 9, "community_name": "Feature Specification", "source_file": ".agents/skills/speckit-specify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_specify_skill_outline", "label": "Outline", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Outline", "community": 9, "community_name": "Feature Specification", "source_file": ".agents/skills/speckit-specify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_specify_skill_mandatory_post_execution_hooks", "label": "Mandatory Post-Execution Hooks", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Mandatory Post-Execution Hooks", "community": 9, "community_name": "Feature Specification", "source_file": ".agents/skills/speckit-specify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_specify_skill_completion_report", "label": "Completion Report", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Completion Report", "community": 9, "community_name": "Feature Specification", "source_file": ".agents/skills/speckit-specify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_specify_skill_quick_guidelines", "label": "Quick Guidelines", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Quick Guidelines", "community": 9, "community_name": "Feature Specification", "source_file": ".agents/skills/speckit-specify/SKILL.md", "file_type": "document", "degree": 4}, {"id": "agents_skills_speckit_specify_skill_section_requirements", "label": "Section Requirements", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Section Requirements", "community": 9, "community_name": "Feature Specification", "source_file": ".agents/skills/speckit-specify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_specify_skill_for_ai_generation", "label": "For AI Generation", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "For AI Generation", "community": 9, "community_name": "Feature Specification", "source_file": ".agents/skills/speckit-specify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_specify_skill_success_criteria_guidelines", "label": "Success Criteria Guidelines", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Success Criteria Guidelines", "community": 9, "community_name": "Feature Specification", "source_file": ".agents/skills/speckit-specify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_specify_skill_done_when", "label": "Done When", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Done When", "community": 9, "community_name": "Feature Specification", "source_file": ".agents/skills/speckit-specify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_tasks_skill", "label": "speckit-tasks/SKILL.md", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 16.8, "font": {"size": 12, "color": "#ffffff"}, "title": "speckit-tasks/SKILL.md", "community": 10, "community_name": "Task Generation", "source_file": ".agents/skills/speckit-tasks/SKILL.md", "file_type": "document", "degree": 7}, {"id": "agents_skills_speckit_tasks_skill_user_input", "label": "User Input", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "User Input", "community": 10, "community_name": "Task Generation", "source_file": ".agents/skills/speckit-tasks/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_tasks_skill_pre_execution_checks", "label": "Pre-Execution Checks", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Pre-Execution Checks", "community": 10, "community_name": "Task Generation", "source_file": ".agents/skills/speckit-tasks/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_tasks_skill_outline", "label": "Outline", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Outline", "community": 10, "community_name": "Task Generation", "source_file": ".agents/skills/speckit-tasks/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_tasks_skill_mandatory_post_execution_hooks", "label": "Mandatory Post-Execution Hooks", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Mandatory Post-Execution Hooks", "community": 10, "community_name": "Task Generation", "source_file": ".agents/skills/speckit-tasks/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_tasks_skill_completion_report", "label": "Completion Report", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Completion Report", "community": 10, "community_name": "Task Generation", "source_file": ".agents/skills/speckit-tasks/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_tasks_skill_task_generation_rules", "label": "Task Generation Rules", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Task Generation Rules", "community": 10, "community_name": "Task Generation", "source_file": ".agents/skills/speckit-tasks/SKILL.md", "file_type": "document", "degree": 4}, {"id": "agents_skills_speckit_tasks_skill_checklist_format_required", "label": "Checklist Format (REQUIRED)", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Checklist Format (REQUIRED)", "community": 10, "community_name": "Task Generation", "source_file": ".agents/skills/speckit-tasks/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_tasks_skill_task_organization", "label": "Task Organization", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Task Organization", "community": 10, "community_name": "Task Generation", "source_file": ".agents/skills/speckit-tasks/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_tasks_skill_phase_structure", "label": "Phase Structure", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Phase Structure", "community": 10, "community_name": "Task Generation", "source_file": ".agents/skills/speckit-tasks/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_tasks_skill_done_when", "label": "Done When", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Done When", "community": 10, "community_name": "Task Generation", "source_file": ".agents/skills/speckit-tasks/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_taskstoissues_skill", "label": "speckit-taskstoissues/SKILL.md", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "speckit-taskstoissues/SKILL.md", "community": 26, "community_name": "Task Issue Conversion", "source_file": ".agents/skills/speckit-taskstoissues/SKILL.md", "file_type": "document", "degree": 4}, {"id": "agents_skills_speckit_taskstoissues_skill_user_input", "label": "User Input", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "User Input", "community": 26, "community_name": "Task Issue Conversion", "source_file": ".agents/skills/speckit-taskstoissues/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_taskstoissues_skill_pre_execution_checks", "label": "Pre-Execution Checks", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Pre-Execution Checks", "community": 26, "community_name": "Task Issue Conversion", "source_file": ".agents/skills/speckit-taskstoissues/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_taskstoissues_skill_outline", "label": "Outline", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Outline", "community": 26, "community_name": "Task Issue Conversion", "source_file": ".agents/skills/speckit-taskstoissues/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_taskstoissues_skill_post_execution_checks", "label": "Post-Execution Checks", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Post-Execution Checks", "community": 26, "community_name": "Task Issue Conversion", "source_file": ".agents/skills/speckit-taskstoissues/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_workflows_graphify", "label": "workflows/graphify.md", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "workflows/graphify.md", "community": 39, "community_name": "Graphify Workflows", "source_file": ".agents/workflows/graphify.md", "file_type": "document", "degree": 1}, {"id": "agents_workflows_graphify_workflow_graphify", "label": "Workflow: graphify", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Workflow: graphify", "community": 39, "community_name": "Graphify Workflows", "source_file": ".agents/workflows/graphify.md", "file_type": "document", "degree": 1}, {"id": "specify_memory_constitution", "label": "constitution.md", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "constitution.md", "community": 11, "community_name": "Project Constitution", "source_file": ".specify/memory/constitution.md", "file_type": "document", "degree": 1}, {"id": "specify_memory_constitution_project_name_constitution", "label": "[PROJECT_NAME] Constitution", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 14.8, "font": {"size": 12, "color": "#ffffff"}, "title": "[PROJECT_NAME] Constitution", "community": 11, "community_name": "Project Constitution", "source_file": ".specify/memory/constitution.md", "file_type": "document", "degree": 5}, {"id": "specify_memory_constitution_core_principles", "label": "Core Principles", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 15.8, "font": {"size": 12, "color": "#ffffff"}, "title": "Core Principles", "community": 11, "community_name": "Project Constitution", "source_file": ".specify/memory/constitution.md", "file_type": "document", "degree": 6}, {"id": "specify_memory_constitution_principle_1_name", "label": "[PRINCIPLE_1_NAME]", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "[PRINCIPLE_1_NAME]", "community": 11, "community_name": "Project Constitution", "source_file": ".specify/memory/constitution.md", "file_type": "document", "degree": 1}, {"id": "specify_memory_constitution_principle_2_name", "label": "[PRINCIPLE_2_NAME]", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "[PRINCIPLE_2_NAME]", "community": 11, "community_name": "Project Constitution", "source_file": ".specify/memory/constitution.md", "file_type": "document", "degree": 1}, {"id": "specify_memory_constitution_principle_3_name", "label": "[PRINCIPLE_3_NAME]", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "[PRINCIPLE_3_NAME]", "community": 11, "community_name": "Project Constitution", "source_file": ".specify/memory/constitution.md", "file_type": "document", "degree": 1}, {"id": "specify_memory_constitution_principle_4_name", "label": "[PRINCIPLE_4_NAME]", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "[PRINCIPLE_4_NAME]", "community": 11, "community_name": "Project Constitution", "source_file": ".specify/memory/constitution.md", "file_type": "document", "degree": 1}, {"id": "specify_memory_constitution_principle_5_name", "label": "[PRINCIPLE_5_NAME]", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "[PRINCIPLE_5_NAME]", "community": 11, "community_name": "Project Constitution", "source_file": ".specify/memory/constitution.md", "file_type": "document", "degree": 1}, {"id": "specify_memory_constitution_section_2_name", "label": "[SECTION_2_NAME]", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "[SECTION_2_NAME]", "community": 11, "community_name": "Project Constitution", "source_file": ".specify/memory/constitution.md", "file_type": "document", "degree": 1}, {"id": "specify_memory_constitution_section_3_name", "label": "[SECTION_3_NAME]", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "[SECTION_3_NAME]", "community": 11, "community_name": "Project Constitution", "source_file": ".specify/memory/constitution.md", "file_type": "document", "degree": 1}, {"id": "specify_memory_constitution_governance", "label": "Governance", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Governance", "community": 11, "community_name": "Project Constitution", "source_file": ".specify/memory/constitution.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_checklist_template", "label": "checklist-template.md", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "checklist-template.md", "community": 27, "community_name": "Checklist Template", "source_file": ".specify/templates/checklist-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_checklist_template_checklist_type_checklist_feature_name", "label": "[CHECKLIST TYPE] Checklist: [FEATURE NAME]", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "[CHECKLIST TYPE] Checklist: [FEATURE NAME]", "community": 27, "community_name": "Checklist Template", "source_file": ".specify/templates/checklist-template.md", "file_type": "document", "degree": 4}, {"id": "specify_templates_checklist_template_category_1", "label": "[Category 1]", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "[Category 1]", "community": 27, "community_name": "Checklist Template", "source_file": ".specify/templates/checklist-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_checklist_template_category_2", "label": "[Category 2]", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "[Category 2]", "community": 27, "community_name": "Checklist Template", "source_file": ".specify/templates/checklist-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_checklist_template_notes", "label": "Notes", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Notes", "community": 27, "community_name": "Checklist Template", "source_file": ".specify/templates/checklist-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_constitution_template", "label": "constitution-template.md", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "constitution-template.md", "community": 12, "community_name": "Constitution Template", "source_file": ".specify/templates/constitution-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_constitution_template_project_name_constitution", "label": "[PROJECT_NAME] Constitution", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 14.8, "font": {"size": 12, "color": "#ffffff"}, "title": "[PROJECT_NAME] Constitution", "community": 12, "community_name": "Constitution Template", "source_file": ".specify/templates/constitution-template.md", "file_type": "document", "degree": 5}, {"id": "specify_templates_constitution_template_core_principles", "label": "Core Principles", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 15.8, "font": {"size": 12, "color": "#ffffff"}, "title": "Core Principles", "community": 12, "community_name": "Constitution Template", "source_file": ".specify/templates/constitution-template.md", "file_type": "document", "degree": 6}, {"id": "specify_templates_constitution_template_principle_1_name", "label": "[PRINCIPLE_1_NAME]", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "[PRINCIPLE_1_NAME]", "community": 12, "community_name": "Constitution Template", "source_file": ".specify/templates/constitution-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_constitution_template_principle_2_name", "label": "[PRINCIPLE_2_NAME]", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "[PRINCIPLE_2_NAME]", "community": 12, "community_name": "Constitution Template", "source_file": ".specify/templates/constitution-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_constitution_template_principle_3_name", "label": "[PRINCIPLE_3_NAME]", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "[PRINCIPLE_3_NAME]", "community": 12, "community_name": "Constitution Template", "source_file": ".specify/templates/constitution-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_constitution_template_principle_4_name", "label": "[PRINCIPLE_4_NAME]", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "[PRINCIPLE_4_NAME]", "community": 12, "community_name": "Constitution Template", "source_file": ".specify/templates/constitution-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_constitution_template_principle_5_name", "label": "[PRINCIPLE_5_NAME]", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "[PRINCIPLE_5_NAME]", "community": 12, "community_name": "Constitution Template", "source_file": ".specify/templates/constitution-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_constitution_template_section_2_name", "label": "[SECTION_2_NAME]", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "[SECTION_2_NAME]", "community": 12, "community_name": "Constitution Template", "source_file": ".specify/templates/constitution-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_constitution_template_section_3_name", "label": "[SECTION_3_NAME]", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "[SECTION_3_NAME]", "community": 12, "community_name": "Constitution Template", "source_file": ".specify/templates/constitution-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_constitution_template_governance", "label": "Governance", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Governance", "community": 12, "community_name": "Constitution Template", "source_file": ".specify/templates/constitution-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_plan_template", "label": "plan-template.md", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "plan-template.md", "community": 15, "community_name": "Implementation Planning Template", "source_file": ".specify/templates/plan-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_plan_template_implementation_plan_feature", "label": "Implementation Plan: [FEATURE]", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 15.8, "font": {"size": 12, "color": "#ffffff"}, "title": "Implementation Plan: [FEATURE]", "community": 15, "community_name": "Implementation Planning Template", "source_file": ".specify/templates/plan-template.md", "file_type": "document", "degree": 6}, {"id": "specify_templates_plan_template_summary", "label": "Summary", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Summary", "community": 15, "community_name": "Implementation Planning Template", "source_file": ".specify/templates/plan-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_plan_template_technical_context", "label": "Technical Context", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Technical Context", "community": 15, "community_name": "Implementation Planning Template", "source_file": ".specify/templates/plan-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_plan_template_constitution_check", "label": "Constitution Check", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Constitution Check", "community": 15, "community_name": "Implementation Planning Template", "source_file": ".specify/templates/plan-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_plan_template_project_structure", "label": "Project Structure", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Project Structure", "community": 15, "community_name": "Implementation Planning Template", "source_file": ".specify/templates/plan-template.md", "file_type": "document", "degree": 3}, {"id": "specify_templates_plan_template_documentation_this_feature", "label": "Documentation (this feature)", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Documentation (this feature)", "community": 15, "community_name": "Implementation Planning Template", "source_file": ".specify/templates/plan-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_plan_template_source_code_repository_root", "label": "Source Code (repository root)", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Source Code (repository root)", "community": 15, "community_name": "Implementation Planning Template", "source_file": ".specify/templates/plan-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_plan_template_complexity_tracking", "label": "Complexity Tracking", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Complexity Tracking", "community": 15, "community_name": "Implementation Planning Template", "source_file": ".specify/templates/plan-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_spec_template", "label": "spec-template.md", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "spec-template.md", "community": 6, "community_name": "Feature Specification Template", "source_file": ".specify/templates/spec-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_spec_template_feature_specification_feature_name", "label": "Feature Specification: [FEATURE NAME]", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 14.8, "font": {"size": 12, "color": "#ffffff"}, "title": "Feature Specification: [FEATURE NAME]", "community": 6, "community_name": "Feature Specification Template", "source_file": ".specify/templates/spec-template.md", "file_type": "document", "degree": 5}, {"id": "specify_templates_spec_template_user_scenarios_testing_mandatory", "label": "User Scenarios & Testing *(mandatory)*", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 14.8, "font": {"size": 12, "color": "#ffffff"}, "title": "User Scenarios & Testing *(mandatory)*", "community": 6, "community_name": "Feature Specification Template", "source_file": ".specify/templates/spec-template.md", "file_type": "document", "degree": 5}, {"id": "specify_templates_spec_template_user_story_1_brief_title_priority_p1", "label": "User Story 1 - [Brief Title] (Priority: P1)", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "User Story 1 - [Brief Title] (Priority: P1)", "community": 6, "community_name": "Feature Specification Template", "source_file": ".specify/templates/spec-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_spec_template_user_story_2_brief_title_priority_p2", "label": "User Story 2 - [Brief Title] (Priority: P2)", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "User Story 2 - [Brief Title] (Priority: P2)", "community": 6, "community_name": "Feature Specification Template", "source_file": ".specify/templates/spec-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_spec_template_user_story_3_brief_title_priority_p3", "label": "User Story 3 - [Brief Title] (Priority: P3)", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "User Story 3 - [Brief Title] (Priority: P3)", "community": 6, "community_name": "Feature Specification Template", "source_file": ".specify/templates/spec-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_spec_template_edge_cases", "label": "Edge Cases", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Edge Cases", "community": 6, "community_name": "Feature Specification Template", "source_file": ".specify/templates/spec-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_spec_template_requirements_mandatory", "label": "Requirements *(mandatory)*", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Requirements *(mandatory)*", "community": 6, "community_name": "Feature Specification Template", "source_file": ".specify/templates/spec-template.md", "file_type": "document", "degree": 3}, {"id": "specify_templates_spec_template_functional_requirements", "label": "Functional Requirements", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Functional Requirements", "community": 6, "community_name": "Feature Specification Template", "source_file": ".specify/templates/spec-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_spec_template_key_entities_include_if_feature_involves_data", "label": "Key Entities *(include if feature involves data)*", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Key Entities *(include if feature involves data)*", "community": 6, "community_name": "Feature Specification Template", "source_file": ".specify/templates/spec-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_spec_template_success_criteria_mandatory", "label": "Success Criteria *(mandatory)*", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Success Criteria *(mandatory)*", "community": 6, "community_name": "Feature Specification Template", "source_file": ".specify/templates/spec-template.md", "file_type": "document", "degree": 2}, {"id": "specify_templates_spec_template_measurable_outcomes", "label": "Measurable Outcomes", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Measurable Outcomes", "community": 6, "community_name": "Feature Specification Template", "source_file": ".specify/templates/spec-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_spec_template_assumptions", "label": "Assumptions", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Assumptions", "community": 6, "community_name": "Feature Specification Template", "source_file": ".specify/templates/spec-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_tasks_template", "label": "tasks-template.md", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "tasks-template.md", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_tasks_template_tasks_feature_name", "label": "Tasks: [FEATURE NAME]", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 22.6, "font": {"size": 12, "color": "#ffffff"}, "title": "Tasks: [FEATURE NAME]", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 13}, {"id": "specify_templates_tasks_template_format_id_p_story_description", "label": "Format: `[ID] [P?] [Story] Description`", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Format: `[ID] [P?] [Story] Description`", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_tasks_template_path_conventions", "label": "Path Conventions", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Path Conventions", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_tasks_template_phase_1_setup_shared_infrastructure", "label": "Phase 1: Setup (Shared Infrastructure)", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Phase 1: Setup (Shared Infrastructure)", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_tasks_template_phase_2_foundational_blocking_prerequisites", "label": "Phase 2: Foundational (Blocking Prerequisites)", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Phase 2: Foundational (Blocking Prerequisites)", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_tasks_template_phase_3_user_story_1_title_priority_p1_mvp", "label": "Phase 3: User Story 1 - [Title] (Priority: P1) \ud83c\udfaf MVP", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Phase 3: User Story 1 - [Title] (Priority: P1) \ud83c\udfaf MVP", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 3}, {"id": "specify_templates_tasks_template_tests_for_user_story_1_optional_only_if_tests_requested", "label": "Tests for User Story 1 (OPTIONAL - only if tests requested) \u26a0\ufe0f", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Tests for User Story 1 (OPTIONAL - only if tests requested) \u26a0\ufe0f", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_tasks_template_implementation_for_user_story_1", "label": "Implementation for User Story 1", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Implementation for User Story 1", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_tasks_template_phase_4_user_story_2_title_priority_p2", "label": "Phase 4: User Story 2 - [Title] (Priority: P2)", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Phase 4: User Story 2 - [Title] (Priority: P2)", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 3}, {"id": "specify_templates_tasks_template_tests_for_user_story_2_optional_only_if_tests_requested", "label": "Tests for User Story 2 (OPTIONAL - only if tests requested) \u26a0\ufe0f", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Tests for User Story 2 (OPTIONAL - only if tests requested) \u26a0\ufe0f", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_tasks_template_implementation_for_user_story_2", "label": "Implementation for User Story 2", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Implementation for User Story 2", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_tasks_template_phase_5_user_story_3_title_priority_p3", "label": "Phase 5: User Story 3 - [Title] (Priority: P3)", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Phase 5: User Story 3 - [Title] (Priority: P3)", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 3}, {"id": "specify_templates_tasks_template_tests_for_user_story_3_optional_only_if_tests_requested", "label": "Tests for User Story 3 (OPTIONAL - only if tests requested) \u26a0\ufe0f", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Tests for User Story 3 (OPTIONAL - only if tests requested) \u26a0\ufe0f", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_tasks_template_implementation_for_user_story_3", "label": "Implementation for User Story 3", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Implementation for User Story 3", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_tasks_template_phase_n_polish_cross_cutting_concerns", "label": "Phase N: Polish & Cross-Cutting Concerns", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Phase N: Polish & Cross-Cutting Concerns", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_tasks_template_dependencies_execution_order", "label": "Dependencies & Execution Order", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 14.8, "font": {"size": 12, "color": "#ffffff"}, "title": "Dependencies & Execution Order", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 5}, {"id": "specify_templates_tasks_template_phase_dependencies", "label": "Phase Dependencies", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Phase Dependencies", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_tasks_template_user_story_dependencies", "label": "User Story Dependencies", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "User Story Dependencies", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_tasks_template_within_each_user_story", "label": "Within Each User Story", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Within Each User Story", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_tasks_template_parallel_opportunities", "label": "Parallel Opportunities", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Parallel Opportunities", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_tasks_template_parallel_example_user_story_1", "label": "Parallel Example: User Story 1", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Parallel Example: User Story 1", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_tasks_template_implementation_strategy", "label": "Implementation Strategy", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Implementation Strategy", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 4}, {"id": "specify_templates_tasks_template_mvp_first_user_story_1_only", "label": "MVP First (User Story 1 Only)", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "MVP First (User Story 1 Only)", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_tasks_template_incremental_delivery", "label": "Incremental Delivery", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Incremental Delivery", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_tasks_template_parallel_team_strategy", "label": "Parallel Team Strategy", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Parallel Team Strategy", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_tasks_template_notes", "label": "Notes", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Notes", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 1}, {"id": "examples_content_northvolt_de", "label": "content_northvolt_de.md", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "content_northvolt_de.md", "community": 49, "community_name": "content_northvolt_de.md", "source_file": "examples/content_northvolt_de.md", "file_type": "document", "degree": 1}, {"id": "examples_content_northvolt_de_batteriezellproduktion_f\u00fcr_europ\u00e4ische_elektrofahrzeuge", "label": "Batteriezellproduktion f\u00fcr europ\u00e4ische Elektrofahrzeuge", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Batteriezellproduktion f\u00fcr europ\u00e4ische Elektrofahrzeuge", "community": 49, "community_name": "content_northvolt_de.md", "source_file": "examples/content_northvolt_de.md", "file_type": "document", "degree": 1}, {"id": "examples_content_presal_pt", "label": "content_presal_pt.md", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "content_presal_pt.md", "community": 50, "community_name": "content_presal_pt.md", "source_file": "examples/content_presal_pt.md", "file_type": "document", "degree": 1}, {"id": "examples_content_presal_pt_petrobras_bate_recorde_hist\u00f3rico_de_produ\u00e7\u00e3o_no_pr\u00e9_sal", "label": "Petrobras bate recorde hist\u00f3rico de produ\u00e7\u00e3o no pr\u00e9-sal", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Petrobras bate recorde hist\u00f3rico de produ\u00e7\u00e3o no pr\u00e9-sal", "community": 50, "community_name": "content_presal_pt.md", "source_file": "examples/content_presal_pt.md", "file_type": "document", "degree": 1}, {"id": "examples_content_tangential_es", "label": "content_tangential_es.md", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "content_tangential_es.md", "community": 51, "community_name": "content_tangential_es.md", "source_file": "examples/content_tangential_es.md", "file_type": "document", "degree": 1}, {"id": "examples_content_tangential_es_reflexiones_sobre_el_debate_pol\u00edtico_y_la_diplomacia_regional", "label": "Reflexiones sobre el debate pol\u00edtico y la diplomacia regional", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Reflexiones sobre el debate pol\u00edtico y la diplomacia regional", "community": 51, "community_name": "content_tangential_es.md", "source_file": "examples/content_tangential_es.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_checklists_poc_readiness", "label": "poc-readiness.md", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "poc-readiness.md", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/checklists/poc-readiness.md", "file_type": "document", "degree": 3}, {"id": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_poc_readiness_requirements_quality_checklist_multilingual_nlp_entity_inherence_classifier", "label": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 16.8, "font": {"size": 12, "color": "#ffffff"}, "title": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/checklists/poc-readiness.md", "file_type": "document", "degree": 7}, {"id": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_1_requirement_completeness_scope_boundaries", "label": "1. Requirement Completeness & Scope Boundaries", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "1. Requirement Completeness & Scope Boundaries", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/checklists/poc-readiness.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_2_requirement_clarity_decision_semantics", "label": "2. Requirement Clarity & Decision Semantics", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "2. Requirement Clarity & Decision Semantics", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/checklists/poc-readiness.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_3_requirement_consistency_alignment", "label": "3. Requirement Consistency & Alignment", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "3. Requirement Consistency & Alignment", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/checklists/poc-readiness.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_4_acceptance_criteria_measurability", "label": "4. Acceptance Criteria & Measurability", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "4. Acceptance Criteria & Measurability", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/checklists/poc-readiness.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_5_scenario_edge_case_coverage", "label": "5. Scenario & Edge Case Coverage", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "5. Scenario & Edge Case Coverage", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/checklists/poc-readiness.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_notes", "label": "Notes", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Notes", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/checklists/poc-readiness.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_checklists_requirements", "label": "requirements.md", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "requirements.md", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "file_type": "document", "degree": 2}, {"id": "specs_001_multilingual_entity_classifier_checklists_requirements_specification_quality_checklist_multilingual_nlp_entity_inherence_classifier", "label": "Specification Quality Checklist: Multilingual NLP Entity Inherence Classifier", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 14.8, "font": {"size": 12, "color": "#ffffff"}, "title": "Specification Quality Checklist: Multilingual NLP Entity Inherence Classifier", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "file_type": "document", "degree": 5}, {"id": "specs_001_multilingual_entity_classifier_checklists_requirements_content_quality", "label": "Content Quality", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Content Quality", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_checklists_requirements_requirement_completeness", "label": "Requirement Completeness", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Requirement Completeness", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_checklists_requirements_feature_readiness", "label": "Feature Readiness", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Feature Readiness", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_checklists_requirements_notes", "label": "Notes", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Notes", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_contracts_cli_contract", "label": "cli-contract.md", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "cli-contract.md", "community": 44, "community_name": "2. Standard Streams & Exit Codes", "source_file": "specs/001-multilingual-entity-classifier/contracts/cli-contract.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_contracts_cli_contract_cli_contract_interface_specification_poc", "label": "CLI Contract & Interface Specification (POC)", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "CLI Contract & Interface Specification (POC)", "community": 44, "community_name": "2. Standard Streams & Exit Codes", "source_file": "specs/001-multilingual-entity-classifier/contracts/cli-contract.md", "file_type": "document", "degree": 3}, {"id": "specs_001_multilingual_entity_classifier_contracts_cli_contract_1_command_line_interface", "label": "1. Command Line Interface", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "1. Command Line Interface", "community": 44, "community_name": "2. Standard Streams & Exit Codes", "source_file": "specs/001-multilingual-entity-classifier/contracts/cli-contract.md", "file_type": "document", "degree": 2}, {"id": "specs_001_multilingual_entity_classifier_contracts_cli_contract_1_1_arguments_options", "label": "1.1 Arguments & Options", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "1.1 Arguments & Options", "community": 44, "community_name": "2. Standard Streams & Exit Codes", "source_file": "specs/001-multilingual-entity-classifier/contracts/cli-contract.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_contracts_cli_contract_2_standard_streams_exit_codes", "label": "2. Standard Streams & Exit Codes", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "2. Standard Streams & Exit Codes", "community": 44, "community_name": "2. Standard Streams & Exit Codes", "source_file": "specs/001-multilingual-entity-classifier/contracts/cli-contract.md", "file_type": "document", "degree": 3}, {"id": "specs_001_multilingual_entity_classifier_contracts_cli_contract_2_1_exit_codes", "label": "2.1 Exit Codes", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "2.1 Exit Codes", "community": 44, "community_name": "2. Standard Streams & Exit Codes", "source_file": "specs/001-multilingual-entity-classifier/contracts/cli-contract.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_contracts_cli_contract_2_2_standard_output_stdout_standard_error_stderr", "label": "2.2 Standard Output (`stdout`) / Standard Error (`stderr`)", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "2.2 Standard Output (`stdout`) / Standard Error (`stderr`)", "community": 44, "community_name": "2. Standard Streams & Exit Codes", "source_file": "specs/001-multilingual-entity-classifier/contracts/cli-contract.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_data_model", "label": "data-model.md", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "data-model.md", "community": 42, "community_name": "1. Input Schemas", "source_file": "specs/001-multilingual-entity-classifier/data-model.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_data_model_data_models_schemas_poc", "label": "Data Models & Schemas (POC)", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Data Models & Schemas (POC)", "community": 42, "community_name": "1. Input Schemas", "source_file": "specs/001-multilingual-entity-classifier/data-model.md", "file_type": "document", "degree": 3}, {"id": "specs_001_multilingual_entity_classifier_data_model_1_input_schemas", "label": "1. Input Schemas", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "1. Input Schemas", "community": 42, "community_name": "1. Input Schemas", "source_file": "specs/001-multilingual-entity-classifier/data-model.md", "file_type": "document", "degree": 3}, {"id": "specs_001_multilingual_entity_classifier_data_model_1_1_ecp_snapshot_schema_snapshot_json", "label": "1.1 ECP Snapshot Schema (`snapshot.json`)", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "1.1 ECP Snapshot Schema (`snapshot.json`)", "community": 42, "community_name": "1. Input Schemas", "source_file": "specs/001-multilingual-entity-classifier/data-model.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_data_model_1_2_content_item_schema_content_md", "label": "1.2 Content Item Schema (`content.md`)", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "1.2 Content Item Schema (`content.md`)", "community": 42, "community_name": "1. Input Schemas", "source_file": "specs/001-multilingual-entity-classifier/data-model.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_data_model_2_output_schemas", "label": "2. Output Schemas", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "2. Output Schemas", "community": 42, "community_name": "1. Input Schemas", "source_file": "specs/001-multilingual-entity-classifier/data-model.md", "file_type": "document", "degree": 3}, {"id": "specs_001_multilingual_entity_classifier_data_model_2_1_classification_success_result_schema_result_json", "label": "2.1 Classification Success Result Schema (`result.json`)", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "2.1 Classification Success Result Schema (`result.json`)", "community": 42, "community_name": "1. Input Schemas", "source_file": "specs/001-multilingual-entity-classifier/data-model.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_data_model_2_2_error_result_schema", "label": "2.2 Error Result Schema", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "2.2 Error Result Schema", "community": 42, "community_name": "1. Input Schemas", "source_file": "specs/001-multilingual-entity-classifier/data-model.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_plan", "label": "plan.md", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "plan.md", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/plan.md", "file_type": "document", "degree": 4}, {"id": "specs_001_multilingual_entity_classifier_plan_implementation_plan_multilingual_nlp_entity_inherence_classifier_poc", "label": "Implementation Plan: Multilingual NLP Entity Inherence Classifier (POC)", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 15.8, "font": {"size": 12, "color": "#ffffff"}, "title": "Implementation Plan: Multilingual NLP Entity Inherence Classifier (POC)", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/plan.md", "file_type": "document", "degree": 6}, {"id": "specs_001_multilingual_entity_classifier_plan_summary", "label": "Summary", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Summary", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/plan.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_plan_technical_context", "label": "Technical Context", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Technical Context", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/plan.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_plan_constitution_check", "label": "Constitution Check", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Constitution Check", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/plan.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_plan_project_structure", "label": "Project Structure", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Project Structure", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/plan.md", "file_type": "document", "degree": 3}, {"id": "specs_001_multilingual_entity_classifier_plan_documentation_this_feature", "label": "Documentation (this feature)", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Documentation (this feature)", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/plan.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_plan_source_code_repository_root", "label": "Source Code (repository root)", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Source Code (repository root)", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/plan.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_plan_complexity_tracking", "label": "Complexity Tracking", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Complexity Tracking", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/plan.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_quickstart", "label": "quickstart.md", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "quickstart.md", "community": 43, "community_name": "2. Basic CLI Usage Examples", "source_file": "specs/001-multilingual-entity-classifier/quickstart.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_quickstart_quickstart_validation_guide_poc", "label": "Quickstart & Validation Guide (POC)", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Quickstart & Validation Guide (POC)", "community": 43, "community_name": "2. Basic CLI Usage Examples", "source_file": "specs/001-multilingual-entity-classifier/quickstart.md", "file_type": "document", "degree": 4}, {"id": "specs_001_multilingual_entity_classifier_quickstart_1_prerequisites_installation", "label": "1. Prerequisites & Installation", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "1. Prerequisites & Installation", "community": 43, "community_name": "2. Basic CLI Usage Examples", "source_file": "specs/001-multilingual-entity-classifier/quickstart.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_quickstart_2_basic_cli_usage_examples", "label": "2. Basic CLI Usage Examples", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "2. Basic CLI Usage Examples", "community": 43, "community_name": "2. Basic CLI Usage Examples", "source_file": "specs/001-multilingual-entity-classifier/quickstart.md", "file_type": "document", "degree": 4}, {"id": "specs_001_multilingual_entity_classifier_quickstart_2_1_direct_inherence_portuguese", "label": "2.1 Direct Inherence (Portuguese)", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "2.1 Direct Inherence (Portuguese)", "community": 43, "community_name": "2. Basic CLI Usage Examples", "source_file": "specs/001-multilingual-entity-classifier/quickstart.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_quickstart_2_2_contextual_inherence_via_graph_snapshot_german", "label": "2.2 Contextual Inherence via Graph Snapshot (German)", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "2.2 Contextual Inherence via Graph Snapshot (German)", "community": 43, "community_name": "2. Basic CLI Usage Examples", "source_file": "specs/001-multilingual-entity-classifier/quickstart.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_quickstart_2_3_tangential_mention_spanish", "label": "2.3 Tangential Mention (Spanish)", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "2.3 Tangential Mention (Spanish)", "community": 43, "community_name": "2. Basic CLI Usage Examples", "source_file": "specs/001-multilingual-entity-classifier/quickstart.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_quickstart_3_running_the_controlled_24_case_benchmark", "label": "3. Running the Controlled 24-Case Benchmark", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "3. Running the Controlled 24-Case Benchmark", "community": 43, "community_name": "2. Basic CLI Usage Examples", "source_file": "specs/001-multilingual-entity-classifier/quickstart.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_research", "label": "research.md", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "research.md", "community": 41, "community_name": "1. Technical Decisions & Tradeoffs", "source_file": "specs/001-multilingual-entity-classifier/research.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_research_technical_research_architecture_decisions_poc", "label": "Technical Research & Architecture Decisions (POC)", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Technical Research & Architecture Decisions (POC)", "community": 41, "community_name": "1. Technical Decisions & Tradeoffs", "source_file": "specs/001-multilingual-entity-classifier/research.md", "file_type": "document", "degree": 3}, {"id": "specs_001_multilingual_entity_classifier_research_1_technical_decisions_tradeoffs", "label": "1. Technical Decisions & Tradeoffs", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 15.8, "font": {"size": 12, "color": "#ffffff"}, "title": "1. Technical Decisions & Tradeoffs", "community": 41, "community_name": "1. Technical Decisions & Tradeoffs", "source_file": "specs/001-multilingual-entity-classifier/research.md", "file_type": "document", "degree": 6}, {"id": "specs_001_multilingual_entity_classifier_research_decision_1_execution_engine_cli_architecture", "label": "Decision 1: Execution Engine & CLI Architecture", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Decision 1: Execution Engine & CLI Architecture", "community": 41, "community_name": "1. Technical Decisions & Tradeoffs", "source_file": "specs/001-multilingual-entity-classifier/research.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_research_decision_2_multilingual_language_detection_normalization_tier_1_core", "label": "Decision 2: Multilingual Language Detection & Normalization (Tier 1 Core)", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Decision 2: Multilingual Language Detection & Normalization (Tier 1 Core)", "community": 41, "community_name": "1. Technical Decisions & Tradeoffs", "source_file": "specs/001-multilingual-entity-classifier/research.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_research_decision_3_materialized_ecp_snapshot_contract_matching_logic", "label": "Decision 3: Materialized ECP Snapshot Contract & Matching Logic", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Decision 3: Materialized ECP Snapshot Contract & Matching Logic", "community": 41, "community_name": "1. Technical Decisions & Tradeoffs", "source_file": "specs/001-multilingual-entity-classifier/research.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_research_decision_4_tier_2_embeddings_tier_3_llm_optional_adapters", "label": "Decision 4: Tier 2 (Embeddings) & Tier 3 (LLM) Optional Adapters", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Decision 4: Tier 2 (Embeddings) & Tier 3 (LLM) Optional Adapters", "community": 41, "community_name": "1. Technical Decisions & Tradeoffs", "source_file": "specs/001-multilingual-entity-classifier/research.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_research_decision_5_controlled_24_case_poc_benchmark_suite", "label": "Decision 5: Controlled 24-Case POC Benchmark Suite", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Decision 5: Controlled 24-Case POC Benchmark Suite", "community": 41, "community_name": "1. Technical Decisions & Tradeoffs", "source_file": "specs/001-multilingual-entity-classifier/research.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_research_2_standardized_error_handling_strategy", "label": "2. Standardized Error Handling Strategy", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "2. Standardized Error Handling Strategy", "community": 41, "community_name": "1. Technical Decisions & Tradeoffs", "source_file": "specs/001-multilingual-entity-classifier/research.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_spec", "label": "spec.md", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 14.8, "font": {"size": 12, "color": "#ffffff"}, "title": "spec.md", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/spec.md", "file_type": "document", "degree": 5}, {"id": "specs_001_multilingual_entity_classifier_spec_feature_specification_multilingual_nlp_entity_inherence_classifier_poc", "label": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 15.8, "font": {"size": 12, "color": "#ffffff"}, "title": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", "community": 40, "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/spec.md", "file_type": "document", "degree": 6}, {"id": "specs_001_multilingual_entity_classifier_spec_clarifications", "label": "Clarifications", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Clarifications", "community": 40, "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/spec.md", "file_type": "document", "degree": 2}, {"id": "specs_001_multilingual_entity_classifier_spec_session_2026_08_19", "label": "Session 2026-08-19", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Session 2026-08-19", "community": 40, "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/spec.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_spec_user_scenarios_testing_mandatory", "label": "User Scenarios & Testing *(mandatory)*", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "User Scenarios & Testing *(mandatory)*", "community": 40, "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/spec.md", "file_type": "document", "degree": 3}, {"id": "specs_001_multilingual_entity_classifier_spec_user_story_1_classify_content_inherence_via_cli_for_an_ecp_snapshot_priority_p1", "label": "User Story 1 - Classify Content Inherence via CLI for an ECP Snapshot (Priority: P1)", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "User Story 1 - Classify Content Inherence via CLI for an ECP Snapshot (Priority: P1)", "community": 40, "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/spec.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_spec_user_story_2_multilingual_language_support_edge_validation_priority_p2", "label": "User Story 2 - Multilingual Language Support & Edge Validation (Priority: P2)", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "User Story 2 - Multilingual Language Support & Edge Validation (Priority: P2)", "community": 40, "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/spec.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_spec_requirements_mandatory", "label": "Requirements *(mandatory)*", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Requirements *(mandatory)*", "community": 40, "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/spec.md", "file_type": "document", "degree": 3}, {"id": "specs_001_multilingual_entity_classifier_spec_functional_requirements", "label": "Functional Requirements", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Functional Requirements", "community": 40, "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/spec.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_spec_key_entities_data_models_domain_entities", "label": "Key Entities *(data models & domain entities)*", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Key Entities *(data models & domain entities)*", "community": 40, "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/spec.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_spec_success_criteria_mandatory", "label": "Success Criteria *(mandatory)*", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Success Criteria *(mandatory)*", "community": 40, "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/spec.md", "file_type": "document", "degree": 2}, {"id": "specs_001_multilingual_entity_classifier_spec_measurable_outcomes", "label": "Measurable Outcomes", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Measurable Outcomes", "community": 40, "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/spec.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_spec_assumptions_scope", "label": "Assumptions & Scope", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Assumptions & Scope", "community": 40, "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/spec.md", "file_type": "document", "degree": 3}, {"id": "specs_001_multilingual_entity_classifier_spec_assumptions", "label": "Assumptions", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Assumptions", "community": 40, "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/spec.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_spec_explicit_out_of_scope_poc", "label": "Explicit Out of Scope (POC)", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Explicit Out of Scope (POC)", "community": 40, "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/spec.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_tasks", "label": "tasks.md", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "tasks.md", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/tasks.md", "file_type": "document", "degree": 3}, {"id": "specs_001_multilingual_entity_classifier_tasks_tasks_multilingual_nlp_entity_inherence_classifier_poc", "label": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 17.7, "font": {"size": 12, "color": "#ffffff"}, "title": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/tasks.md", "file_type": "document", "degree": 8}, {"id": "specs_001_multilingual_entity_classifier_tasks_phase_1_setup_shared_infrastructure", "label": "Phase 1: Setup (Shared Infrastructure)", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Phase 1: Setup (Shared Infrastructure)", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/tasks.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_tasks_phase_2_foundational_blocking_prerequisites", "label": "Phase 2: Foundational (Blocking Prerequisites)", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Phase 2: Foundational (Blocking Prerequisites)", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/tasks.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_tasks_phase_3_user_story_1_core_tier_1_deterministic_classification_cli_priority_p1_mvp", "label": "Phase 3: User Story 1 - Core Tier 1 Deterministic Classification & CLI (Priority: P1) [MVP]", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Phase 3: User Story 1 - Core Tier 1 Deterministic Classification & CLI (Priority: P1) [MVP]", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/tasks.md", "file_type": "document", "degree": 3}, {"id": "specs_001_multilingual_entity_classifier_tasks_tests_for_user_story_1", "label": "Tests for User Story 1", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Tests for User Story 1", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/tasks.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_tasks_implementation_for_user_story_1", "label": "Implementation for User Story 1", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Implementation for User Story 1", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/tasks.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_tasks_phase_4_user_story_2_multilingual_24_case_controlled_benchmark_suite_priority_p2", "label": "Phase 4: User Story 2 - Multilingual 24-Case Controlled Benchmark Suite (Priority: P2)", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Phase 4: User Story 2 - Multilingual 24-Case Controlled Benchmark Suite (Priority: P2)", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/tasks.md", "file_type": "document", "degree": 2}, {"id": "specs_001_multilingual_entity_classifier_tasks_implementation_for_user_story_2", "label": "Implementation for User Story 2", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Implementation for User Story 2", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/tasks.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_tasks_phase_5_optional_adapters_tier_2_embeddings_tier_3_llm_priority_p3", "label": "Phase 5: Optional Adapters - Tier 2 (Embeddings) & Tier 3 (LLM) (Priority: P3)", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Phase 5: Optional Adapters - Tier 2 (Embeddings) & Tier 3 (LLM) (Priority: P3)", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/tasks.md", "file_type": "document", "degree": 2}, {"id": "specs_001_multilingual_entity_classifier_tasks_implementation_for_user_story_3", "label": "Implementation for User Story 3", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Implementation for User Story 3", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/tasks.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_tasks_phase_6_polish_validation", "label": "Phase 6: Polish & Validation", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Phase 6: Polish & Validation", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/tasks.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_tasks_dependencies_execution_order", "label": "Dependencies & Execution Order", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Dependencies & Execution Order", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/tasks.md", "file_type": "document", "degree": 2}, {"id": "specs_001_multilingual_entity_classifier_tasks_implementation_strategy", "label": "Implementation Strategy", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Implementation Strategy", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/tasks.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_de_contextual", "label": "de/contextual.md", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "de/contextual.md", "community": 54, "community_name": "de/contextual.md", "source_file": "tests/fixtures/benchmark_24/de/contextual.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_de_contextual_batteriefabrik_in_europa", "label": "Batteriefabrik in Europa", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Batteriefabrik in Europa", "community": 54, "community_name": "de/contextual.md", "source_file": "tests/fixtures/benchmark_24/de/contextual.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_de_direct", "label": "de/direct.md", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "de/direct.md", "community": 55, "community_name": "de/direct.md", "source_file": "tests/fixtures/benchmark_24/de/direct.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_de_direct_investitionsoffensive_in_wolfsburg", "label": "Investitionsoffensive in Wolfsburg", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Investitionsoffensive in Wolfsburg", "community": 55, "community_name": "de/direct.md", "source_file": "tests/fixtures/benchmark_24/de/direct.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_de_not_related", "label": "de/not_related.md", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "de/not_related.md", "community": 56, "community_name": "de/not_related.md", "source_file": "tests/fixtures/benchmark_24/de/not_related.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_de_not_related_backrezept_f\u00fcr_apfelstrudel", "label": "Backrezept f\u00fcr Apfelstrudel", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Backrezept f\u00fcr Apfelstrudel", "community": 56, "community_name": "de/not_related.md", "source_file": "tests/fixtures/benchmark_24/de/not_related.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_de_tangential", "label": "de/tangential.md", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "de/tangential.md", "community": 57, "community_name": "de/tangential.md", "source_file": "tests/fixtures/benchmark_24/de/tangential.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_de_tangential_reisebericht_aus_niedersachsen", "label": "Reisebericht aus Niedersachsen", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Reisebericht aus Niedersachsen", "community": 57, "community_name": "de/tangential.md", "source_file": "tests/fixtures/benchmark_24/de/tangential.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_en_contextual", "label": "en/contextual.md", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "en/contextual.md", "community": 58, "community_name": "en/contextual.md", "source_file": "tests/fixtures/benchmark_24/en/contextual.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_en_contextual_electronics_assembly_expansion", "label": "Electronics Assembly Expansion", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Electronics Assembly Expansion", "community": 58, "community_name": "en/contextual.md", "source_file": "tests/fixtures/benchmark_24/en/contextual.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_en_direct", "label": "en/direct.md", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "en/direct.md", "community": 59, "community_name": "en/direct.md", "source_file": "tests/fixtures/benchmark_24/en/direct.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_en_direct_apple_unveils_next_generation_iphone", "label": "Apple Unveils Next-Generation iPhone", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Apple Unveils Next-Generation iPhone", "community": 59, "community_name": "en/direct.md", "source_file": "tests/fixtures/benchmark_24/en/direct.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_en_not_related", "label": "en/not_related.md", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "en/not_related.md", "community": 60, "community_name": "en/not_related.md", "source_file": "tests/fixtures/benchmark_24/en/not_related.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_en_not_related_classic_apple_pie_baking_guide", "label": "Classic Apple Pie Baking Guide", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Classic Apple Pie Baking Guide", "community": 60, "community_name": "en/not_related.md", "source_file": "tests/fixtures/benchmark_24/en/not_related.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_en_tangential", "label": "en/tangential.md", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "en/tangential.md", "community": 61, "community_name": "en/tangential.md", "source_file": "tests/fixtures/benchmark_24/en/tangential.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_en_tangential_morning_city_walk", "label": "Morning City Walk", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Morning City Walk", "community": 61, "community_name": "en/tangential.md", "source_file": "tests/fixtures/benchmark_24/en/tangential.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_es_contextual", "label": "es/contextual.md", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "es/contextual.md", "community": 62, "community_name": "es/contextual.md", "source_file": "tests/fixtures/benchmark_24/es/contextual.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_es_contextual_nuevas_soluciones_de_pagos_electr\u00f3nicos", "label": "Nuevas Soluciones de Pagos Electr\u00f3nicos", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Nuevas Soluciones de Pagos Electr\u00f3nicos", "community": 62, "community_name": "es/contextual.md", "source_file": "tests/fixtures/benchmark_24/es/contextual.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_es_direct", "label": "es/direct.md", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "es/direct.md", "community": 63, "community_name": "es/direct.md", "source_file": "tests/fixtures/benchmark_24/es/direct.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_es_direct_expansi\u00f3n_de_servicios_financieros_en_espa\u00f1a", "label": "Expansi\u00f3n de Servicios Financieros en Espa\u00f1a", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Expansi\u00f3n de Servicios Financieros en Espa\u00f1a", "community": 63, "community_name": "es/direct.md", "source_file": "tests/fixtures/benchmark_24/es/direct.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_es_not_related", "label": "es/not_related.md", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "es/not_related.md", "community": 64, "community_name": "es/not_related.md", "source_file": "tests/fixtures/benchmark_24/es/not_related.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_es_not_related_turismo_en_la_costa_norte", "label": "Turismo en la Costa Norte", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Turismo en la Costa Norte", "community": 64, "community_name": "es/not_related.md", "source_file": "tests/fixtures/benchmark_24/es/not_related.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_es_tangential", "label": "es/tangential.md", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "es/tangential.md", "community": 65, "community_name": "es/tangential.md", "source_file": "tests/fixtures/benchmark_24/es/tangential.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_es_tangential_gu\u00eda_cultural_de_la_ciudad", "label": "Gu\u00eda Cultural de la Ciudad", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Gu\u00eda Cultural de la Ciudad", "community": 65, "community_name": "es/tangential.md", "source_file": "tests/fixtures/benchmark_24/es/tangential.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_fr_contextual", "label": "fr/contextual.md", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "fr/contextual.md", "community": 66, "community_name": "fr/contextual.md", "source_file": "tests/fixtures/benchmark_24/fr/contextual.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_fr_contextual_batteries_industrielles_de_pointe", "label": "Batteries Industrielles de Pointe", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Batteries Industrielles de Pointe", "community": 66, "community_name": "fr/contextual.md", "source_file": "tests/fixtures/benchmark_24/fr/contextual.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_fr_direct", "label": "fr/direct.md", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "fr/direct.md", "community": 67, "community_name": "fr/direct.md", "source_file": "tests/fixtures/benchmark_24/fr/direct.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_fr_direct_d\u00e9veloppement_\u00e9nerg\u00e9tique_en_france", "label": "D\u00e9veloppement \u00c9nerg\u00e9tique en France", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "D\u00e9veloppement \u00c9nerg\u00e9tique en France", "community": 67, "community_name": "fr/direct.md", "source_file": "tests/fixtures/benchmark_24/fr/direct.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_fr_not_related", "label": "fr/not_related.md", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "fr/not_related.md", "community": 68, "community_name": "fr/not_related.md", "source_file": "tests/fixtures/benchmark_24/fr/not_related.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_fr_not_related_recette_traditionnelle_de_la_quiche_lorraine", "label": "Recette Traditionnelle de la Quiche Lorraine", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Recette Traditionnelle de la Quiche Lorraine", "community": 68, "community_name": "fr/not_related.md", "source_file": "tests/fixtures/benchmark_24/fr/not_related.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_fr_tangential", "label": "fr/tangential.md", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "fr/tangential.md", "community": 69, "community_name": "fr/tangential.md", "source_file": "tests/fixtures/benchmark_24/fr/tangential.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_fr_tangential_promenade_dans_paris", "label": "Promenade dans Paris", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Promenade dans Paris", "community": 69, "community_name": "fr/tangential.md", "source_file": "tests/fixtures/benchmark_24/fr/tangential.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_it_contextual", "label": "it/contextual.md", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "it/contextual.md", "community": 70, "community_name": "it/contextual.md", "source_file": "tests/fixtures/benchmark_24/it/contextual.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_it_contextual_innovazione_negli_impianti_frenanti", "label": "Innovazione negli Impianti Frenanti", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Innovazione negli Impianti Frenanti", "community": 70, "community_name": "it/contextual.md", "source_file": "tests/fixtures/benchmark_24/it/contextual.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_it_direct", "label": "it/direct.md", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "it/direct.md", "community": 71, "community_name": "it/direct.md", "source_file": "tests/fixtures/benchmark_24/it/direct.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_it_direct_nuova_monoposto_a_maranello", "label": "Nuova Monoposto a Maranello", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Nuova Monoposto a Maranello", "community": 71, "community_name": "it/direct.md", "source_file": "tests/fixtures/benchmark_24/it/direct.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_it_not_related", "label": "it/not_related.md", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "it/not_related.md", "community": 72, "community_name": "it/not_related.md", "source_file": "tests/fixtures/benchmark_24/it/not_related.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_it_not_related_ricetta_tradizionale_del_risotto", "label": "Ricetta Tradizionale del Risotto", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Ricetta Tradizionale del Risotto", "community": 72, "community_name": "it/not_related.md", "source_file": "tests/fixtures/benchmark_24/it/not_related.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_it_tangential", "label": "it/tangential.md", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "it/tangential.md", "community": 73, "community_name": "it/tangential.md", "source_file": "tests/fixtures/benchmark_24/it/tangential.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_it_tangential_passeggiata_pomeridiana_a_modena", "label": "Passeggiata Pomeridiana a Modena", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Passeggiata Pomeridiana a Modena", "community": 73, "community_name": "it/tangential.md", "source_file": "tests/fixtures/benchmark_24/it/tangential.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_pt_contextual", "label": "pt/contextual.md", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "pt/contextual.md", "community": 74, "community_name": "pt/contextual.md", "source_file": "tests/fixtures/benchmark_24/pt/contextual.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_pt_contextual_log\u00edstica_de_derivados", "label": "Log\u00edstica de Derivados", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Log\u00edstica de Derivados", "community": 74, "community_name": "pt/contextual.md", "source_file": "tests/fixtures/benchmark_24/pt/contextual.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_pt_direct", "label": "pt/direct.md", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "pt/direct.md", "community": 75, "community_name": "pt/direct.md", "source_file": "tests/fixtures/benchmark_24/pt/direct.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_pt_direct_produ\u00e7\u00e3o_de_petr\u00f3leo_no_brasil", "label": "Produ\u00e7\u00e3o de Petr\u00f3leo no Brasil", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Produ\u00e7\u00e3o de Petr\u00f3leo no Brasil", "community": 75, "community_name": "pt/direct.md", "source_file": "tests/fixtures/benchmark_24/pt/direct.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_pt_not_related", "label": "pt/not_related.md", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "pt/not_related.md", "community": 76, "community_name": "pt/not_related.md", "source_file": "tests/fixtures/benchmark_24/pt/not_related.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_pt_not_related_dicas_de_jardinagem", "label": "Dicas de Jardinagem", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Dicas de Jardinagem", "community": 76, "community_name": "pt/not_related.md", "source_file": "tests/fixtures/benchmark_24/pt/not_related.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_pt_tangential", "label": "pt/tangential.md", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "pt/tangential.md", "community": 77, "community_name": "pt/tangential.md", "source_file": "tests/fixtures/benchmark_24/pt/tangential.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_pt_tangential_turismo_no_rio_de_janeiro", "label": "Turismo no Rio de Janeiro", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Turismo no Rio de Janeiro", "community": 77, "community_name": "pt/tangential.md", "source_file": "tests/fixtures/benchmark_24/pt/tangential.md", "file_type": "document", "degree": 1}]; -const RAW_EDGES = [{"from": "specify_scripts_powershell_common", "to": "specify_scripts_powershell_common_find_specifyroot", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common", "to": "specify_scripts_powershell_common_format_speckitcommand", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common", "to": "specify_scripts_powershell_common_get_currentbranch", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common", "to": "specify_scripts_powershell_common_get_featurepathsenv", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common", "to": "specify_scripts_powershell_common_get_invokeseparator", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common", "to": "specify_scripts_powershell_common_get_normalizedpriority", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common", "to": "specify_scripts_powershell_common_get_python3command", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common", "to": "specify_scripts_powershell_common_get_reporoot", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common", "to": "specify_scripts_powershell_common_get_sortedextensionids", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common", "to": "specify_scripts_powershell_common_resolve_specifyinitdir", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common", "to": "specify_scripts_powershell_common_resolve_template", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common", "to": "specify_scripts_powershell_common_resolve_templatecontent", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common", "to": "specify_scripts_powershell_common_save_featurejson", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common", "to": "specify_scripts_powershell_common_test_dirhasfiles", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common", "to": "specify_scripts_powershell_common_test_fileexists", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common_get_reporoot", "to": "specify_scripts_powershell_common_find_specifyroot", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common_get_reporoot", "to": "specify_scripts_powershell_common_resolve_specifyinitdir", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common_get_featurepathsenv", "to": "specify_scripts_powershell_common_get_reporoot", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common_get_featurepathsenv", "to": "specify_scripts_powershell_common_get_currentbranch", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common_get_featurepathsenv", "to": "specify_scripts_powershell_common_save_featurejson", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common_format_speckitcommand", "to": "specify_scripts_powershell_common_get_invokeseparator", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common_resolve_templatecontent", "to": "specify_scripts_powershell_common_get_python3command", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common_get_sortedextensionids", "to": "specify_scripts_powershell_common_get_normalizedpriority", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common_resolve_template", "to": "specify_scripts_powershell_common_get_normalizedpriority", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common_resolve_templatecontent", "to": "specify_scripts_powershell_common_get_normalizedpriority", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common_resolve_template", "to": "specify_scripts_powershell_common_get_sortedextensionids", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common_resolve_templatecontent", "to": "specify_scripts_powershell_common_get_sortedextensionids", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_create_new_feature", "to": "specify_scripts_powershell_create_new_feature_convertto_cleanbranchname", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_create_new_feature", "to": "specify_scripts_powershell_create_new_feature_get_branchname", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_create_new_feature", "to": "specify_scripts_powershell_create_new_feature_get_fittedbranchname", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_create_new_feature", "to": "specify_scripts_powershell_create_new_feature_get_highestnumberfromspecs", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_create_new_feature", "to": "specify_scripts_powershell_create_new_feature_test_specprefixinuse", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_create_new_feature_get_branchname", "to": "specify_scripts_powershell_create_new_feature_convertto_cleanbranchname", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "classify", "to": "classify_emit_error", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "classify", "to": "classify_main", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "classify", "to": "classify_parse_args", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "classify", "to": "src_classifier", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "classify", "to": "src_classifier_inherenceclassifier", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "classify", "to": "src_models", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "classify", "to": "src_models_classificationerror", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "classify", "to": "src_models_ecpsnapshot", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "classify", "to": "src_models_errorcode", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_cli", "to": "classify", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "classify_main", "to": "classify_parse_args", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "classify_parse_args", "to": "namespace", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "classify_emit_error", "to": "src_models_classificationerror", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "classify_emit_error", "to": "src_models_errorcode", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "classify_main", "to": "classify_emit_error", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "classify_main", "to": "src_classifier_inherenceclassifier", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "classify_main", "to": "src_models_ecpsnapshot", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "classify_main", "to": "src_models_ecpsnapshot_from_json_str", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "classify_main", "to": "src_models_errorcode", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "tests_test_cli", "to": "classify_main", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_cli_test_cli_empty_content_file", "to": "classify_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_cli_test_cli_missing_ecp_file", "to": "classify_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_cli_test_cli_missing_required_ecp_field", "to": "classify_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_cli_test_cli_output_file", "to": "classify_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_cli_test_cli_success_stdout", "to": "classify_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_init_rationale_1", "to": "src_init", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_init_rationale_1", "to": "src_adapters_init", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_base", "to": "abc", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_base", "to": "src_adapters_base_basenlpadapter", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_base", "to": "src_models", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_base", "to": "src_models_classificationresult", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_base", "to": "src_models_ecpsnapshot", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_base_rationale_1", "to": "src_adapters_base", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_embeddings", "to": "src_adapters_base", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_llm", "to": "src_adapters_base", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_base_basenlpadapter", "to": "abc", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_base_basenlpadapter", "to": "src_adapters_base_basenlpadapter_disambiguate", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_base_basenlpadapter", "to": "src_adapters_base_basenlpadapter_evaluate_similarity", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_base_basenlpadapter", "to": "src_adapters_base_basenlpadapter_is_available", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_base_basenlpadapter", "to": "src_models_classificationresult", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "src_adapters_base_basenlpadapter", "to": "src_models_ecpsnapshot", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "src_adapters_base_rationale_11", "to": "src_adapters_base_basenlpadapter", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_embeddings", "to": "src_adapters_base_basenlpadapter", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_embeddings_localembeddingsadapter", "to": "src_adapters_base_basenlpadapter", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_llm", "to": "src_adapters_base_basenlpadapter", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_llm_llmfallbackadapter", "to": "src_adapters_base_basenlpadapter", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_base_rationale_15", "to": "src_adapters_base_basenlpadapter_is_available", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_base_rationale_20", "to": "src_adapters_base_basenlpadapter_evaluate_similarity", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_base_basenlpadapter_disambiguate", "to": "src_models_classificationresult", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_base_basenlpadapter_disambiguate", "to": "src_models_ecpsnapshot", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_base_rationale_30", "to": "src_adapters_base_basenlpadapter_disambiguate", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_embeddings", "to": "src_adapters_embeddings_localembeddingsadapter", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_embeddings", "to": "src_models", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_embeddings", "to": "src_models_classificationresult", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_embeddings", "to": "src_models_ecpsnapshot", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_embeddings_rationale_1", "to": "src_adapters_embeddings", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adapters", "to": "src_adapters_embeddings", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_embeddings_localembeddingsadapter", "to": "src_adapters_embeddings_localembeddingsadapter_disambiguate", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_embeddings_localembeddingsadapter", "to": "src_adapters_embeddings_localembeddingsadapter_evaluate_similarity", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_embeddings_localembeddingsadapter", "to": "src_adapters_embeddings_localembeddingsadapter_init", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_embeddings_localembeddingsadapter", "to": "src_adapters_embeddings_localembeddingsadapter_is_available", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_embeddings_localembeddingsadapter", "to": "src_models_classificationresult", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "src_adapters_embeddings_localembeddingsadapter", "to": "src_models_ecpsnapshot", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "src_adapters_embeddings_rationale_15", "to": "src_adapters_embeddings_localembeddingsadapter", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier", "to": "src_adapters_embeddings_localembeddingsadapter", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier_inherenceclassifier", "to": "src_adapters_embeddings_localembeddingsadapter", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "src_classifier_inherenceclassifier_init", "to": "src_adapters_embeddings_localembeddingsadapter", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adapters", "to": "src_adapters_embeddings_localembeddingsadapter", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adapters_test_embeddings_adapter_interface", "to": "src_adapters_embeddings_localembeddingsadapter", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_embeddings_localembeddingsadapter_evaluate_similarity", "to": "src_adapters_embeddings_localembeddingsadapter_is_available", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_embeddings_localembeddingsadapter_disambiguate", "to": "src_models_classificationresult", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_embeddings_localembeddingsadapter_disambiguate", "to": "src_models_ecpsnapshot", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_llm", "to": "src_adapters_llm_llmfallbackadapter", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_llm", "to": "src_models", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_llm", "to": "src_models_classificationresult", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_llm", "to": "src_models_ecpsnapshot", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_llm_rationale_1", "to": "src_adapters_llm", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adapters", "to": "src_adapters_llm", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_llm_llmfallbackadapter", "to": "src_adapters_llm_llmfallbackadapter_disambiguate", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_llm_llmfallbackadapter", "to": "src_adapters_llm_llmfallbackadapter_evaluate_similarity", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_llm_llmfallbackadapter", "to": "src_adapters_llm_llmfallbackadapter_init", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_llm_llmfallbackadapter", "to": "src_adapters_llm_llmfallbackadapter_is_available", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_llm_llmfallbackadapter", "to": "src_models_classificationresult", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "src_adapters_llm_llmfallbackadapter", "to": "src_models_ecpsnapshot", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "src_adapters_llm_rationale_16", "to": "src_adapters_llm_llmfallbackadapter", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier", "to": "src_adapters_llm_llmfallbackadapter", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier_inherenceclassifier", "to": "src_adapters_llm_llmfallbackadapter", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "src_classifier_inherenceclassifier_init", "to": "src_adapters_llm_llmfallbackadapter", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adapters", "to": "src_adapters_llm_llmfallbackadapter", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adapters_test_llm_adapter_interface", "to": "src_adapters_llm_llmfallbackadapter", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_llm_llmfallbackadapter_disambiguate", "to": "src_adapters_llm_llmfallbackadapter_is_available", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_llm_llmfallbackadapter_disambiguate", "to": "src_models_classificationresult", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_llm_llmfallbackadapter_disambiguate", "to": "src_models_ecpsnapshot", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier", "to": "src_classifier_count_phrase_occurrences", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier", "to": "src_classifier_inherenceclassifier", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier", "to": "src_classifier_match_phrase_in_text", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier", "to": "src_language", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier", "to": "src_language_detect_language", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier", "to": "src_language_normalize_text", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier", "to": "src_models", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier", "to": "src_models_classificationerror", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier", "to": "src_models_classificationresult", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier", "to": "src_models_decisioncategory", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier", "to": "src_models_ecpsnapshot", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier", "to": "src_models_errorcode", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier", "to": "src_models_relatedentity", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier", "to": "src_parser", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier", "to": "src_parser_extract_evidence_snippets", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier", "to": "src_parser_strip_markdown", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier_rationale_1", "to": "src_classifier", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adapters", "to": "src_classifier", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_benchmark_24", "to": "src_classifier", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_classifier", "to": "src_classifier", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier_inherenceclassifier_classify", "to": "src_classifier_match_phrase_in_text", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier_match_phrase_in_text", "to": "src_language_normalize_text", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier_rationale_21", "to": "src_classifier_match_phrase_in_text", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier_count_phrase_occurrences", "to": "src_language_normalize_text", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier_inherenceclassifier_classify", "to": "src_classifier_count_phrase_occurrences", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier_rationale_34", "to": "src_classifier_count_phrase_occurrences", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier_inherenceclassifier", "to": "src_classifier_inherenceclassifier_classify", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier_inherenceclassifier", "to": "src_classifier_inherenceclassifier_init", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier_inherenceclassifier", "to": "src_models_classificationresult", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "src_classifier_inherenceclassifier", "to": "src_models_decisioncategory", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "src_classifier_inherenceclassifier", "to": "src_models_ecpsnapshot", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "src_classifier_rationale_45", "to": "src_classifier_inherenceclassifier", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adapters", "to": "src_classifier_inherenceclassifier", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adapters_test_classifier_with_adapter_flags", "to": "src_classifier_inherenceclassifier", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial", "to": "src_classifier_inherenceclassifier", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial_test_adversarial_apple_fruit_recipe", "to": "src_classifier_inherenceclassifier", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial_test_adversarial_related_entity_without_scope_context", "to": "src_classifier_inherenceclassifier", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial_test_adversarial_sao_paulo_city_vs_fc", "to": "src_classifier_inherenceclassifier", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_benchmark_24", "to": "src_classifier_inherenceclassifier", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_benchmark_24_classifier", "to": "src_classifier_inherenceclassifier", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "tests_test_classifier", "to": "src_classifier_inherenceclassifier", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_classifier_test_contextual_inherent", "to": "src_classifier_inherenceclassifier", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_classifier_test_direct_inherent", "to": "src_classifier_inherenceclassifier", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_classifier_test_negative_anchor_suppression", "to": "src_classifier_inherenceclassifier", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_classifier_test_not_related", "to": "src_classifier_inherenceclassifier", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_classifier_test_tangential_inherent", "to": "src_classifier_inherenceclassifier", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier_inherenceclassifier_classify", "to": "src_language_detect_language", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier_inherenceclassifier_classify", "to": "src_language_normalize_text", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier_inherenceclassifier_classify", "to": "src_models_classificationresult", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier_inherenceclassifier_classify", "to": "src_models_ecpsnapshot", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier_inherenceclassifier_classify", "to": "src_parser_extract_evidence_snippets", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier_inherenceclassifier_classify", "to": "src_parser_strip_markdown", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier_rationale_62", "to": "src_classifier_inherenceclassifier_classify", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_language", "to": "src_language_detect_language", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_language", "to": "src_language_extract_words", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_language", "to": "src_language_normalize_text", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_language_rationale_1", "to": "src_language", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_language", "to": "src_language", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_language_detect_language", "to": "src_language_normalize_text", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_language_rationale_71", "to": "src_language_normalize_text", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_language", "to": "src_language_normalize_text", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_language_test_normalize_text", "to": "src_language_normalize_text", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_language_detect_language", "to": "src_language_extract_words", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_language_rationale_81", "to": "src_language_extract_words", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_language_rationale_86", "to": "src_language_detect_language", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_language", "to": "src_language_detect_language", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_language_test_detect_english", "to": "src_language_detect_language", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_language_test_detect_french", "to": "src_language_detect_language", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_language_test_detect_german", "to": "src_language_detect_language", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_language_test_detect_italian", "to": "src_language_detect_language", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_language_test_detect_portuguese", "to": "src_language_detect_language", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_language_test_detect_spanish", "to": "src_language_detect_language", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_language_test_empty_language", "to": "src_language_detect_language", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models", "to": "enum", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models", "to": "src_models_classificationerror", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models", "to": "src_models_classificationresult", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models", "to": "src_models_decisioncategory", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models", "to": "src_models_ecpsnapshot", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models", "to": "src_models_errorcode", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models", "to": "src_models_matchedgraphentity", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models", "to": "src_models_relatedentity", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models_rationale_1", "to": "src_models", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adapters", "to": "src_models", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial", "to": "src_models", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_benchmark_24", "to": "src_models", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_classifier", "to": "src_models", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models", "to": "src_models", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models_decisioncategory", "to": "enum", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models_decisioncategory", "to": "str", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial", "to": "src_models_decisioncategory", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial_test_adversarial_apple_fruit_recipe", "to": "src_models_decisioncategory", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "tests_test_adversarial_test_adversarial_related_entity_without_scope_context", "to": "src_models_decisioncategory", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "tests_test_adversarial_test_adversarial_sao_paulo_city_vs_fc", "to": "src_models_decisioncategory", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "tests_test_benchmark_24", "to": "src_models_decisioncategory", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_classifier", "to": "src_models_decisioncategory", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_classifier_test_contextual_inherent", "to": "src_models_decisioncategory", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "tests_test_classifier_test_direct_inherent", "to": "src_models_decisioncategory", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "tests_test_classifier_test_negative_anchor_suppression", "to": "src_models_decisioncategory", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "tests_test_classifier_test_not_related", "to": "src_models_decisioncategory", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "tests_test_classifier_test_tangential_inherent", "to": "src_models_decisioncategory", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "tests_test_models", "to": "src_models_decisioncategory", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models_test_classification_result_serialization", "to": "src_models_decisioncategory", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "src_models_errorcode", "to": "str", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models_errorcode", "to": "enum", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models", "to": "src_models_errorcode", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models_test_classification_error_serialization", "to": "src_models_errorcode", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "src_models_relatedentity", "to": "src_models_relatedentity_from_dict", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial", "to": "src_models_relatedentity", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial_test_adversarial_related_entity_without_scope_context", "to": "src_models_relatedentity", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_classifier", "to": "src_models_relatedentity", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_classifier_petrobras_ecp", "to": "src_models_relatedentity", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "tests_test_models", "to": "src_models_relatedentity", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models_ecpsnapshot_from_dict", "to": "src_models_relatedentity_from_dict", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models_relatedentity_from_dict", "to": "any", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models_classificationerror_to_dict", "to": "any", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models_classificationresult_to_dict", "to": "any", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models_ecpsnapshot_from_dict", "to": "any", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models_ecpsnapshot", "to": "src_models_ecpsnapshot_from_dict", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models_ecpsnapshot", "to": "src_models_ecpsnapshot_from_json_str", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adapters", "to": "src_models_ecpsnapshot", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adapters_test_classifier_with_adapter_flags", "to": "src_models_ecpsnapshot", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial", "to": "src_models_ecpsnapshot", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial_test_adversarial_apple_fruit_recipe", "to": "src_models_ecpsnapshot", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial_test_adversarial_related_entity_without_scope_context", "to": "src_models_ecpsnapshot", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial_test_adversarial_sao_paulo_city_vs_fc", "to": "src_models_ecpsnapshot", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_benchmark_24", "to": "src_models_ecpsnapshot", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_benchmark_24_test_benchmark_case", "to": "src_models_ecpsnapshot", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "tests_test_classifier", "to": "src_models_ecpsnapshot", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_classifier_petrobras_ecp", "to": "src_models_ecpsnapshot", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "tests_test_models", "to": "src_models_ecpsnapshot", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models_test_ecp_snapshot_defaults", "to": "src_models_ecpsnapshot", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "tests_test_models_test_ecp_snapshot_missing_required", "to": "src_models_ecpsnapshot", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "tests_test_models_test_ecp_snapshot_valid", "to": "src_models_ecpsnapshot", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "src_models_ecpsnapshot_from_json_str", "to": "src_models_ecpsnapshot_from_dict", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models_test_ecp_snapshot_defaults", "to": "src_models_ecpsnapshot_from_dict", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models_test_ecp_snapshot_missing_required", "to": "src_models_ecpsnapshot_from_dict", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models_test_ecp_snapshot_valid", "to": "src_models_ecpsnapshot_from_dict", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_benchmark_24_test_benchmark_case", "to": "src_models_ecpsnapshot_from_json_str", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models_classificationresult", "to": "src_models_classificationresult_to_dict", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models_classificationresult", "to": "src_models_classificationresult_to_json_str", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models", "to": "src_models_classificationresult", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models_test_classification_result_serialization", "to": "src_models_classificationresult", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models_classificationresult_to_json_str", "to": "src_models_classificationerror_to_dict", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models_classificationerror", "to": "src_models_classificationerror_to_dict", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models_classificationerror", "to": "src_models_classificationerror_to_json_str", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models", "to": "src_models_classificationerror", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models_test_classification_error_serialization", "to": "src_models_classificationerror", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models_classificationerror_to_json_str", "to": "src_models_classificationerror_to_dict", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_parser", "to": "src_parser_extract_evidence_snippets", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_parser", "to": "src_parser_extract_sentences", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_parser", "to": "src_parser_strip_markdown", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_parser_rationale_1", "to": "src_parser", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models", "to": "src_parser", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_parser_extract_evidence_snippets", "to": "src_parser_strip_markdown", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_parser_rationale_10", "to": "src_parser_strip_markdown", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models", "to": "src_parser_strip_markdown", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models_test_parser_strip_markdown", "to": "src_parser_strip_markdown", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_parser_extract_evidence_snippets", "to": "src_parser_extract_sentences", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_parser_rationale_44", "to": "src_parser_extract_sentences", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models", "to": "src_parser_extract_sentences", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_parser_rationale_52", "to": "src_parser_extract_evidence_snippets", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models", "to": "src_parser_extract_evidence_snippets", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models_test_extract_evidence_snippets", "to": "src_parser_extract_evidence_snippets", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_init_rationale_1", "to": "tests_init", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adapters", "to": "tests_test_adapters_test_classifier_with_adapter_flags", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adapters", "to": "tests_test_adapters_test_embeddings_adapter_interface", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adapters", "to": "tests_test_adapters_test_llm_adapter_interface", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adapters_rationale_1", "to": "tests_test_adapters", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial", "to": "tests_test_adversarial_test_adversarial_apple_fruit_recipe", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial", "to": "tests_test_adversarial_test_adversarial_related_entity_without_scope_context", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial", "to": "tests_test_adversarial_test_adversarial_sao_paulo_city_vs_fc", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial", "to": "tests_test_adversarial_test_adversarial_subprocess_cli_corrupted_json", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial", "to": "tests_test_adversarial_test_adversarial_subprocess_cli_empty_content", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial", "to": "tests_test_adversarial_test_adversarial_subprocess_cli_missing_required_field", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial", "to": "tests_test_adversarial_test_adversarial_subprocess_cli_success_stdout", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial_rationale_1", "to": "tests_test_adversarial", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial_rationale_16", "to": "tests_test_adversarial_test_adversarial_sao_paulo_city_vs_fc", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial_rationale_41", "to": "tests_test_adversarial_test_adversarial_apple_fruit_recipe", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial_rationale_64", "to": "tests_test_adversarial_test_adversarial_related_entity_without_scope_context", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial_rationale_99", "to": "tests_test_adversarial_test_adversarial_subprocess_cli_success_stdout", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial_rationale_134", "to": "tests_test_adversarial_test_adversarial_subprocess_cli_empty_content", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial_rationale_165", "to": "tests_test_adversarial_test_adversarial_subprocess_cli_missing_required_field", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial_rationale_194", "to": "tests_test_adversarial_test_adversarial_subprocess_cli_corrupted_json", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_benchmark_24", "to": "tests_test_benchmark_24_classifier", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_benchmark_24", "to": "tests_test_benchmark_24_test_benchmark_case", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_benchmark_24_rationale_1", "to": "tests_test_benchmark_24", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_benchmark_24_classifier", "to": "tests_test_benchmark_24_py_fixture", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_benchmark_24_test_benchmark_case", "to": "parametrize", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_classifier", "to": "tests_test_classifier_petrobras_ecp", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_classifier", "to": "tests_test_classifier_test_contextual_inherent", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_classifier", "to": "tests_test_classifier_test_direct_inherent", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_classifier", "to": "tests_test_classifier_test_negative_anchor_suppression", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_classifier", "to": "tests_test_classifier_test_not_related", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_classifier", "to": "tests_test_classifier_test_tangential_inherent", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_classifier_rationale_1", "to": "tests_test_classifier", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_classifier_petrobras_ecp", "to": "tests_test_classifier_py_fixture", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_cli", "to": "tests_test_cli_test_cli_empty_content_file", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_cli", "to": "tests_test_cli_test_cli_missing_ecp_file", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_cli", "to": "tests_test_cli_test_cli_missing_required_ecp_field", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_cli", "to": "tests_test_cli_test_cli_output_file", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_cli", "to": "tests_test_cli_test_cli_success_stdout", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_cli_rationale_1", "to": "tests_test_cli", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_language", "to": "tests_test_language_test_detect_english", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_language", "to": "tests_test_language_test_detect_french", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_language", "to": "tests_test_language_test_detect_german", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_language", "to": "tests_test_language_test_detect_italian", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_language", "to": "tests_test_language_test_detect_portuguese", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_language", "to": "tests_test_language_test_detect_spanish", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_language", "to": "tests_test_language_test_empty_language", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_language", "to": "tests_test_language_test_normalize_text", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_language_rationale_1", "to": "tests_test_language", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models", "to": "tests_test_models_test_classification_error_serialization", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models", "to": "tests_test_models_test_classification_result_serialization", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models", "to": "tests_test_models_test_ecp_snapshot_defaults", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models", "to": "tests_test_models_test_ecp_snapshot_missing_required", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models", "to": "tests_test_models_test_ecp_snapshot_valid", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models", "to": "tests_test_models_test_extract_evidence_snippets", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models", "to": "tests_test_models_test_parser_strip_markdown", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models_rationale_1", "to": "tests_test_models", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_rules_graphify", "to": "agents_rules_graphify_graphify", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill", "to": "agents_skills_graphify_skill_graphify", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_graphify", "to": "agents_skills_graphify_skill_for_graphify_add_and_watch", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_graphify", "to": "agents_skills_graphify_skill_for_graphify_query", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_graphify", "to": "agents_skills_graphify_skill_for_the_commit_hook_and_native_claude_md_integration", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_graphify", "to": "agents_skills_graphify_skill_for_update_and_cluster_only", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_graphify", "to": "agents_skills_graphify_skill_honesty_rules", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_graphify", "to": "agents_skills_graphify_skill_interpreter_guard_for_subcommands", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_graphify", "to": "agents_skills_graphify_skill_usage", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_graphify", "to": "agents_skills_graphify_skill_what_graphify_is_for", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_graphify", "to": "agents_skills_graphify_skill_what_you_must_do_when_invoked", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_what_you_must_do_when_invoked", "to": "agents_skills_graphify_skill_step_0_github_repos_and_multi_path_merge_only_if_a_url_or_several_paths", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_what_you_must_do_when_invoked", "to": "agents_skills_graphify_skill_step_1_ensure_graphify_is_installed", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_what_you_must_do_when_invoked", "to": "agents_skills_graphify_skill_step_2_5_video_and_audio_only_if_video_files_detected", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_what_you_must_do_when_invoked", "to": "agents_skills_graphify_skill_step_2_detect_files", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_what_you_must_do_when_invoked", "to": "agents_skills_graphify_skill_step_3_extract_entities_and_relationships", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_what_you_must_do_when_invoked", "to": "agents_skills_graphify_skill_step_4_5_graph_health_check_read_only_integrity_gate", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_what_you_must_do_when_invoked", "to": "agents_skills_graphify_skill_step_4_build_graph_cluster_analyze_generate_outputs", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_what_you_must_do_when_invoked", "to": "agents_skills_graphify_skill_step_5_label_communities", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_what_you_must_do_when_invoked", "to": "agents_skills_graphify_skill_step_6_generate_obsidian_vault_opt_in_html", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_what_you_must_do_when_invoked", "to": "agents_skills_graphify_skill_step_9_save_manifest_update_cost_tracker_clean_up_and_report", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_what_you_must_do_when_invoked", "to": "agents_skills_graphify_skill_steps_6b_8_wiki_neo4j_falkordb_svg_graphml_mcp_benchmark_only_on_their_flags", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_step_3_extract_entities_and_relationships", "to": "agents_skills_graphify_skill_part_a_structural_extraction_for_code_files", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_step_3_extract_entities_and_relationships", "to": "agents_skills_graphify_skill_part_b_semantic_extraction_parallel_subagents", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_step_3_extract_entities_and_relationships", "to": "agents_skills_graphify_skill_part_c_merge_ast_semantic_into_final_extraction", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_add_watch", "to": "agents_skills_graphify_references_add_watch_graphify_reference_add_a_url_and_watch_a_folder", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_add_watch_graphify_reference_add_a_url_and_watch_a_folder", "to": "agents_skills_graphify_references_add_watch_for_graphify_add", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_add_watch_graphify_reference_add_a_url_and_watch_a_folder", "to": "agents_skills_graphify_references_add_watch_for_watch", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_exports", "to": "agents_skills_graphify_references_exports_graphify_reference_extra_exports_and_benchmark", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_exports_graphify_reference_extra_exports_and_benchmark", "to": "agents_skills_graphify_references_exports_step_6b_wiki_only_if_wiki_flag", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_exports_graphify_reference_extra_exports_and_benchmark", "to": "agents_skills_graphify_references_exports_step_7_neo4j_export_only_if_neo4j_or_neo4j_push_flag", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_exports_graphify_reference_extra_exports_and_benchmark", "to": "agents_skills_graphify_references_exports_step_7a_falkordb_export_only_if_falkordb_or_falkordb_push_flag", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_exports_graphify_reference_extra_exports_and_benchmark", "to": "agents_skills_graphify_references_exports_step_7b_svg_export_only_if_svg_flag", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_exports_graphify_reference_extra_exports_and_benchmark", "to": "agents_skills_graphify_references_exports_step_7c_graphml_export_only_if_graphml_flag", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_exports_graphify_reference_extra_exports_and_benchmark", "to": "agents_skills_graphify_references_exports_step_7d_mcp_server_only_if_mcp_flag", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_exports_graphify_reference_extra_exports_and_benchmark", "to": "agents_skills_graphify_references_exports_step_8_token_reduction_benchmark_only_if_total_words_5000", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_extraction_spec", "to": "agents_skills_graphify_references_extraction_spec_graphify_reference_extraction_subagent_prompt", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_github_and_merge", "to": "agents_skills_graphify_references_github_and_merge_graphify_reference_github_clone_and_cross_repo_merge", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_github_and_merge_graphify_reference_github_clone_and_cross_repo_merge", "to": "agents_skills_graphify_references_github_and_merge_step_0_clone_github_repo_s_only_if_a_github_url_was_given", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_hooks", "to": "agents_skills_graphify_references_hooks_graphify_reference_commit_hook_and_native_claude_md_integration", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_hooks_graphify_reference_commit_hook_and_native_claude_md_integration", "to": "agents_skills_graphify_references_hooks_for_git_commit_hook", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_hooks_graphify_reference_commit_hook_and_native_claude_md_integration", "to": "agents_skills_graphify_references_hooks_for_native_claude_md_integration", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_query", "to": "agents_skills_graphify_references_query_graphify_reference_query_path_explain", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_query_graphify_reference_query_path_explain", "to": "agents_skills_graphify_references_query_for_graphify_explain", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_query_graphify_reference_query_path_explain", "to": "agents_skills_graphify_references_query_for_graphify_path", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_query_graphify_reference_query_path_explain", "to": "agents_skills_graphify_references_query_step_0_constrained_query_expansion_required_before_traversal", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_query_graphify_reference_query_path_explain", "to": "agents_skills_graphify_references_query_step_1_traversal", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_transcribe", "to": "agents_skills_graphify_references_transcribe_graphify_reference_transcribe_video_and_audio", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_transcribe_graphify_reference_transcribe_video_and_audio", "to": "agents_skills_graphify_references_transcribe_step_2_5_transcribe_video_audio_files_only_if_video_files_detected", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_update", "to": "agents_skills_graphify_references_update_graphify_reference_incremental_update_and_cluster_only", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_update_graphify_reference_incremental_update_and_cluster_only", "to": "agents_skills_graphify_references_update_for_cluster_only", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_update_graphify_reference_incremental_update_and_cluster_only", "to": "agents_skills_graphify_references_update_for_update_incremental_re_extraction", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_audit_skill", "to": "agents_skills_ponytail_audit_skill_boundaries", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_audit_skill", "to": "agents_skills_ponytail_audit_skill_hunt", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_audit_skill", "to": "agents_skills_ponytail_audit_skill_output", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_audit_skill", "to": "agents_skills_ponytail_audit_skill_tags", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_debt_skill", "to": "agents_skills_ponytail_debt_skill_boundaries", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_debt_skill", "to": "agents_skills_ponytail_debt_skill_output", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_debt_skill", "to": "agents_skills_ponytail_debt_skill_scan", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_gain_skill", "to": "agents_skills_ponytail_gain_skill_ponytail_gain", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_gain_skill_ponytail_gain", "to": "agents_skills_ponytail_gain_skill_boundaries", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_gain_skill_ponytail_gain", "to": "agents_skills_ponytail_gain_skill_honesty_boundary", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_gain_skill_ponytail_gain", "to": "agents_skills_ponytail_gain_skill_scoreboard", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_help_skill", "to": "agents_skills_ponytail_help_skill_ponytail_help", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_help_skill_ponytail_help", "to": "agents_skills_ponytail_help_skill_configure_default_mode", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_help_skill_ponytail_help", "to": "agents_skills_ponytail_help_skill_deactivate", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_help_skill_ponytail_help", "to": "agents_skills_ponytail_help_skill_levels", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_help_skill_ponytail_help", "to": "agents_skills_ponytail_help_skill_more", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_help_skill_ponytail_help", "to": "agents_skills_ponytail_help_skill_skills", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_help_skill_ponytail_help", "to": "agents_skills_ponytail_help_skill_update", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_review_skill", "to": "agents_skills_ponytail_review_skill_boundaries", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_review_skill", "to": "agents_skills_ponytail_review_skill_examples", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_review_skill", "to": "agents_skills_ponytail_review_skill_format", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_review_skill", "to": "agents_skills_ponytail_review_skill_scoring", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_skill", "to": "agents_skills_ponytail_skill_ponytail", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_skill_ponytail", "to": "agents_skills_ponytail_skill_boundaries", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_skill_ponytail", "to": "agents_skills_ponytail_skill_intensity", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_skill_ponytail", "to": "agents_skills_ponytail_skill_output", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_skill_ponytail", "to": "agents_skills_ponytail_skill_persistence", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_skill_ponytail", "to": "agents_skills_ponytail_skill_rules", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_skill_ponytail", "to": "agents_skills_ponytail_skill_the_ladder", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_skill_ponytail", "to": "agents_skills_ponytail_skill_when_not_to_be_lazy", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill", "to": "agents_skills_speckit_analyze_skill_context", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill", "to": "agents_skills_speckit_analyze_skill_execution_steps", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill", "to": "agents_skills_speckit_analyze_skill_goal", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill", "to": "agents_skills_speckit_analyze_skill_operating_constraints", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill", "to": "agents_skills_speckit_analyze_skill_operating_principles", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill", "to": "agents_skills_speckit_analyze_skill_pre_execution_checks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill", "to": "agents_skills_speckit_analyze_skill_specification_analysis_report", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill", "to": "agents_skills_speckit_analyze_skill_user_input", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill_execution_steps", "to": "agents_skills_speckit_analyze_skill_1_initialize_analysis_context", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill_execution_steps", "to": "agents_skills_speckit_analyze_skill_2_load_artifacts_progressive_disclosure", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill_execution_steps", "to": "agents_skills_speckit_analyze_skill_3_build_semantic_models", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill_execution_steps", "to": "agents_skills_speckit_analyze_skill_4_detection_passes_token_efficient_analysis", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill_execution_steps", "to": "agents_skills_speckit_analyze_skill_5_severity_assignment", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill_execution_steps", "to": "agents_skills_speckit_analyze_skill_6_produce_compact_analysis_report", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill_4_detection_passes_token_efficient_analysis", "to": "agents_skills_speckit_analyze_skill_a_duplication_detection", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill_4_detection_passes_token_efficient_analysis", "to": "agents_skills_speckit_analyze_skill_b_ambiguity_detection", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill_4_detection_passes_token_efficient_analysis", "to": "agents_skills_speckit_analyze_skill_c_underspecification", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill_4_detection_passes_token_efficient_analysis", "to": "agents_skills_speckit_analyze_skill_d_constitution_alignment", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill_4_detection_passes_token_efficient_analysis", "to": "agents_skills_speckit_analyze_skill_e_coverage_gaps", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill_4_detection_passes_token_efficient_analysis", "to": "agents_skills_speckit_analyze_skill_f_inconsistency", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill_specification_analysis_report", "to": "agents_skills_speckit_analyze_skill_7_provide_next_actions", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill_specification_analysis_report", "to": "agents_skills_speckit_analyze_skill_8_offer_remediation", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill_specification_analysis_report", "to": "agents_skills_speckit_analyze_skill_9_check_for_extension_hooks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill_operating_principles", "to": "agents_skills_speckit_analyze_skill_analysis_guidelines", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill_operating_principles", "to": "agents_skills_speckit_analyze_skill_context_efficiency", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_checklist_skill", "to": "agents_skills_speckit_checklist_skill_anti_examples_what_not_to_do", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_checklist_skill", "to": "agents_skills_speckit_checklist_skill_checklist_purpose_unit_tests_for_english", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_checklist_skill", "to": "agents_skills_speckit_checklist_skill_example_checklist_types_sample_items", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_checklist_skill", "to": "agents_skills_speckit_checklist_skill_execution_steps", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_checklist_skill", "to": "agents_skills_speckit_checklist_skill_post_execution_checks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_checklist_skill", "to": "agents_skills_speckit_checklist_skill_pre_execution_checks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_checklist_skill", "to": "agents_skills_speckit_checklist_skill_user_input", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_clarify_skill", "to": "agents_skills_speckit_clarify_skill_completion_report", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_clarify_skill", "to": "agents_skills_speckit_clarify_skill_done_when", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_clarify_skill", "to": "agents_skills_speckit_clarify_skill_mandatory_post_execution_hooks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_clarify_skill", "to": "agents_skills_speckit_clarify_skill_outline", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_clarify_skill", "to": "agents_skills_speckit_clarify_skill_pre_execution_checks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_clarify_skill", "to": "agents_skills_speckit_clarify_skill_user_input", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_constitution_skill", "to": "agents_skills_speckit_constitution_skill_outline", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_constitution_skill", "to": "agents_skills_speckit_constitution_skill_post_execution_checks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_constitution_skill", "to": "agents_skills_speckit_constitution_skill_pre_execution_checks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_constitution_skill", "to": "agents_skills_speckit_constitution_skill_scope_guard", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_constitution_skill", "to": "agents_skills_speckit_constitution_skill_user_input", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_converge_skill", "to": "agents_skills_speckit_converge_skill_convergence_findings", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_converge_skill", "to": "agents_skills_speckit_converge_skill_execution_steps", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_converge_skill", "to": "agents_skills_speckit_converge_skill_goal", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_converge_skill", "to": "agents_skills_speckit_converge_skill_operating_constraints", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_converge_skill", "to": "agents_skills_speckit_converge_skill_pre_execution_checks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_converge_skill", "to": "agents_skills_speckit_converge_skill_user_input", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_converge_skill_execution_steps", "to": "agents_skills_speckit_converge_skill_1_initialize_convergence_context", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_converge_skill_execution_steps", "to": "agents_skills_speckit_converge_skill_2_load_artifacts_progressive_disclosure", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_converge_skill_execution_steps", "to": "agents_skills_speckit_converge_skill_3_build_the_intent_inventory", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_converge_skill_execution_steps", "to": "agents_skills_speckit_converge_skill_4_assess_the_codebase_and_classify_findings", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_converge_skill_execution_steps", "to": "agents_skills_speckit_converge_skill_5_assign_severity", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_converge_skill_execution_steps", "to": "agents_skills_speckit_converge_skill_6_present_the_in_session_findings_summary", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_converge_skill_convergence_findings", "to": "agents_skills_speckit_converge_skill_7_append_convergence_tasks_or_report_converged", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_converge_skill_convergence_findings", "to": "agents_skills_speckit_converge_skill_8_provide_next_actions_handoff", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_converge_skill_convergence_findings", "to": "agents_skills_speckit_converge_skill_9_check_for_extension_hooks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_implement_skill", "to": "agents_skills_speckit_implement_skill_completion_report", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_implement_skill", "to": "agents_skills_speckit_implement_skill_done_when", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_implement_skill", "to": "agents_skills_speckit_implement_skill_mandatory_post_execution_hooks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_implement_skill", "to": "agents_skills_speckit_implement_skill_outline", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_implement_skill", "to": "agents_skills_speckit_implement_skill_pre_execution_checks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_implement_skill", "to": "agents_skills_speckit_implement_skill_user_input", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_plan_skill", "to": "agents_skills_speckit_plan_skill_completion_report", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_plan_skill", "to": "agents_skills_speckit_plan_skill_done_when", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_plan_skill", "to": "agents_skills_speckit_plan_skill_key_rules", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_plan_skill", "to": "agents_skills_speckit_plan_skill_mandatory_post_execution_hooks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_plan_skill", "to": "agents_skills_speckit_plan_skill_outline", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_plan_skill", "to": "agents_skills_speckit_plan_skill_phases", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_plan_skill", "to": "agents_skills_speckit_plan_skill_pre_execution_checks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_plan_skill", "to": "agents_skills_speckit_plan_skill_user_input", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_plan_skill_phases", "to": "agents_skills_speckit_plan_skill_phase_0_outline_research", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_plan_skill_phases", "to": "agents_skills_speckit_plan_skill_phase_1_design_contracts", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_specify_skill", "to": "agents_skills_speckit_specify_skill_completion_report", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_specify_skill", "to": "agents_skills_speckit_specify_skill_done_when", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_specify_skill", "to": "agents_skills_speckit_specify_skill_mandatory_post_execution_hooks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_specify_skill", "to": "agents_skills_speckit_specify_skill_outline", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_specify_skill", "to": "agents_skills_speckit_specify_skill_pre_execution_checks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_specify_skill", "to": "agents_skills_speckit_specify_skill_quick_guidelines", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_specify_skill", "to": "agents_skills_speckit_specify_skill_user_input", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_specify_skill_quick_guidelines", "to": "agents_skills_speckit_specify_skill_for_ai_generation", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_specify_skill_quick_guidelines", "to": "agents_skills_speckit_specify_skill_section_requirements", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_specify_skill_quick_guidelines", "to": "agents_skills_speckit_specify_skill_success_criteria_guidelines", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_tasks_skill", "to": "agents_skills_speckit_tasks_skill_completion_report", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_tasks_skill", "to": "agents_skills_speckit_tasks_skill_done_when", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_tasks_skill", "to": "agents_skills_speckit_tasks_skill_mandatory_post_execution_hooks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_tasks_skill", "to": "agents_skills_speckit_tasks_skill_outline", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_tasks_skill", "to": "agents_skills_speckit_tasks_skill_pre_execution_checks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_tasks_skill", "to": "agents_skills_speckit_tasks_skill_task_generation_rules", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_tasks_skill", "to": "agents_skills_speckit_tasks_skill_user_input", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_tasks_skill_task_generation_rules", "to": "agents_skills_speckit_tasks_skill_checklist_format_required", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_tasks_skill_task_generation_rules", "to": "agents_skills_speckit_tasks_skill_phase_structure", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_tasks_skill_task_generation_rules", "to": "agents_skills_speckit_tasks_skill_task_organization", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_taskstoissues_skill", "to": "agents_skills_speckit_taskstoissues_skill_outline", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_taskstoissues_skill", "to": "agents_skills_speckit_taskstoissues_skill_post_execution_checks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_taskstoissues_skill", "to": "agents_skills_speckit_taskstoissues_skill_pre_execution_checks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_taskstoissues_skill", "to": "agents_skills_speckit_taskstoissues_skill_user_input", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_workflows_graphify", "to": "agents_workflows_graphify_workflow_graphify", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_memory_constitution", "to": "specify_memory_constitution_project_name_constitution", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_memory_constitution_project_name_constitution", "to": "specify_memory_constitution_core_principles", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_memory_constitution_project_name_constitution", "to": "specify_memory_constitution_governance", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_memory_constitution_project_name_constitution", "to": "specify_memory_constitution_section_2_name", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_memory_constitution_project_name_constitution", "to": "specify_memory_constitution_section_3_name", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_memory_constitution_core_principles", "to": "specify_memory_constitution_principle_1_name", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_memory_constitution_core_principles", "to": "specify_memory_constitution_principle_2_name", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_memory_constitution_core_principles", "to": "specify_memory_constitution_principle_3_name", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_memory_constitution_core_principles", "to": "specify_memory_constitution_principle_4_name", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_memory_constitution_core_principles", "to": "specify_memory_constitution_principle_5_name", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_checklist_template", "to": "specify_templates_checklist_template_checklist_type_checklist_feature_name", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_checklist_template_checklist_type_checklist_feature_name", "to": "specify_templates_checklist_template_category_1", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_checklist_template_checklist_type_checklist_feature_name", "to": "specify_templates_checklist_template_category_2", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_checklist_template_checklist_type_checklist_feature_name", "to": "specify_templates_checklist_template_notes", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_constitution_template", "to": "specify_templates_constitution_template_project_name_constitution", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_constitution_template_project_name_constitution", "to": "specify_templates_constitution_template_core_principles", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_constitution_template_project_name_constitution", "to": "specify_templates_constitution_template_governance", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_constitution_template_project_name_constitution", "to": "specify_templates_constitution_template_section_2_name", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_constitution_template_project_name_constitution", "to": "specify_templates_constitution_template_section_3_name", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_constitution_template_core_principles", "to": "specify_templates_constitution_template_principle_1_name", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_constitution_template_core_principles", "to": "specify_templates_constitution_template_principle_2_name", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_constitution_template_core_principles", "to": "specify_templates_constitution_template_principle_3_name", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_constitution_template_core_principles", "to": "specify_templates_constitution_template_principle_4_name", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_constitution_template_core_principles", "to": "specify_templates_constitution_template_principle_5_name", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_plan_template", "to": "specify_templates_plan_template_implementation_plan_feature", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_plan_template_implementation_plan_feature", "to": "specify_templates_plan_template_complexity_tracking", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_plan_template_implementation_plan_feature", "to": "specify_templates_plan_template_constitution_check", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_plan_template_implementation_plan_feature", "to": "specify_templates_plan_template_project_structure", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_plan_template_implementation_plan_feature", "to": "specify_templates_plan_template_summary", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_plan_template_implementation_plan_feature", "to": "specify_templates_plan_template_technical_context", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_plan_template_project_structure", "to": "specify_templates_plan_template_documentation_this_feature", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_plan_template_project_structure", "to": "specify_templates_plan_template_source_code_repository_root", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_spec_template", "to": "specify_templates_spec_template_feature_specification_feature_name", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_spec_template_feature_specification_feature_name", "to": "specify_templates_spec_template_assumptions", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_spec_template_feature_specification_feature_name", "to": "specify_templates_spec_template_requirements_mandatory", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_spec_template_feature_specification_feature_name", "to": "specify_templates_spec_template_success_criteria_mandatory", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_spec_template_feature_specification_feature_name", "to": "specify_templates_spec_template_user_scenarios_testing_mandatory", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_spec_template_user_scenarios_testing_mandatory", "to": "specify_templates_spec_template_edge_cases", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_spec_template_user_scenarios_testing_mandatory", "to": "specify_templates_spec_template_user_story_1_brief_title_priority_p1", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_spec_template_user_scenarios_testing_mandatory", "to": "specify_templates_spec_template_user_story_2_brief_title_priority_p2", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_spec_template_user_scenarios_testing_mandatory", "to": "specify_templates_spec_template_user_story_3_brief_title_priority_p3", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_spec_template_requirements_mandatory", "to": "specify_templates_spec_template_functional_requirements", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_spec_template_requirements_mandatory", "to": "specify_templates_spec_template_key_entities_include_if_feature_involves_data", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_spec_template_success_criteria_mandatory", "to": "specify_templates_spec_template_measurable_outcomes", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template", "to": "specify_templates_tasks_template_tasks_feature_name", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_tasks_feature_name", "to": "specify_templates_tasks_template_dependencies_execution_order", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_tasks_feature_name", "to": "specify_templates_tasks_template_format_id_p_story_description", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_tasks_feature_name", "to": "specify_templates_tasks_template_implementation_strategy", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_tasks_feature_name", "to": "specify_templates_tasks_template_notes", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_tasks_feature_name", "to": "specify_templates_tasks_template_parallel_example_user_story_1", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_tasks_feature_name", "to": "specify_templates_tasks_template_path_conventions", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_tasks_feature_name", "to": "specify_templates_tasks_template_phase_1_setup_shared_infrastructure", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_tasks_feature_name", "to": "specify_templates_tasks_template_phase_2_foundational_blocking_prerequisites", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_tasks_feature_name", "to": "specify_templates_tasks_template_phase_3_user_story_1_title_priority_p1_mvp", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_tasks_feature_name", "to": "specify_templates_tasks_template_phase_4_user_story_2_title_priority_p2", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_tasks_feature_name", "to": "specify_templates_tasks_template_phase_5_user_story_3_title_priority_p3", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_tasks_feature_name", "to": "specify_templates_tasks_template_phase_n_polish_cross_cutting_concerns", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_phase_3_user_story_1_title_priority_p1_mvp", "to": "specify_templates_tasks_template_implementation_for_user_story_1", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_phase_3_user_story_1_title_priority_p1_mvp", "to": "specify_templates_tasks_template_tests_for_user_story_1_optional_only_if_tests_requested", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_phase_4_user_story_2_title_priority_p2", "to": "specify_templates_tasks_template_implementation_for_user_story_2", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_phase_4_user_story_2_title_priority_p2", "to": "specify_templates_tasks_template_tests_for_user_story_2_optional_only_if_tests_requested", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_phase_5_user_story_3_title_priority_p3", "to": "specify_templates_tasks_template_implementation_for_user_story_3", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_phase_5_user_story_3_title_priority_p3", "to": "specify_templates_tasks_template_tests_for_user_story_3_optional_only_if_tests_requested", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_dependencies_execution_order", "to": "specify_templates_tasks_template_parallel_opportunities", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_dependencies_execution_order", "to": "specify_templates_tasks_template_phase_dependencies", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_dependencies_execution_order", "to": "specify_templates_tasks_template_user_story_dependencies", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_dependencies_execution_order", "to": "specify_templates_tasks_template_within_each_user_story", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_implementation_strategy", "to": "specify_templates_tasks_template_incremental_delivery", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_implementation_strategy", "to": "specify_templates_tasks_template_mvp_first_user_story_1_only", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_implementation_strategy", "to": "specify_templates_tasks_template_parallel_team_strategy", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "examples_content_northvolt_de", "to": "examples_content_northvolt_de_batteriezellproduktion_f\u00fcr_europ\u00e4ische_elektrofahrzeuge", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "examples_content_presal_pt", "to": "examples_content_presal_pt_petrobras_bate_recorde_hist\u00f3rico_de_produ\u00e7\u00e3o_no_pr\u00e9_sal", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "examples_content_tangential_es", "to": "examples_content_tangential_es_reflexiones_sobre_el_debate_pol\u00edtico_y_la_diplomacia_regional", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_checklists_poc_readiness", "to": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_poc_readiness_requirements_quality_checklist_multilingual_nlp_entity_inherence_classifier", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_checklists_poc_readiness", "to": "specs_001_multilingual_entity_classifier_plan", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_checklists_poc_readiness", "to": "specs_001_multilingual_entity_classifier_spec", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_poc_readiness_requirements_quality_checklist_multilingual_nlp_entity_inherence_classifier", "to": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_1_requirement_completeness_scope_boundaries", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_poc_readiness_requirements_quality_checklist_multilingual_nlp_entity_inherence_classifier", "to": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_2_requirement_clarity_decision_semantics", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_poc_readiness_requirements_quality_checklist_multilingual_nlp_entity_inherence_classifier", "to": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_3_requirement_consistency_alignment", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_poc_readiness_requirements_quality_checklist_multilingual_nlp_entity_inherence_classifier", "to": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_4_acceptance_criteria_measurability", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_poc_readiness_requirements_quality_checklist_multilingual_nlp_entity_inherence_classifier", "to": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_5_scenario_edge_case_coverage", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_poc_readiness_requirements_quality_checklist_multilingual_nlp_entity_inherence_classifier", "to": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_notes", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_checklists_requirements", "to": "specs_001_multilingual_entity_classifier_checklists_requirements_specification_quality_checklist_multilingual_nlp_entity_inherence_classifier", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_checklists_requirements", "to": "specs_001_multilingual_entity_classifier_spec", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_checklists_requirements_specification_quality_checklist_multilingual_nlp_entity_inherence_classifier", "to": "specs_001_multilingual_entity_classifier_checklists_requirements_content_quality", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_checklists_requirements_specification_quality_checklist_multilingual_nlp_entity_inherence_classifier", "to": "specs_001_multilingual_entity_classifier_checklists_requirements_feature_readiness", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_checklists_requirements_specification_quality_checklist_multilingual_nlp_entity_inherence_classifier", "to": "specs_001_multilingual_entity_classifier_checklists_requirements_notes", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_checklists_requirements_specification_quality_checklist_multilingual_nlp_entity_inherence_classifier", "to": "specs_001_multilingual_entity_classifier_checklists_requirements_requirement_completeness", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_contracts_cli_contract", "to": "specs_001_multilingual_entity_classifier_contracts_cli_contract_cli_contract_interface_specification_poc", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_contracts_cli_contract_cli_contract_interface_specification_poc", "to": "specs_001_multilingual_entity_classifier_contracts_cli_contract_1_command_line_interface", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_contracts_cli_contract_cli_contract_interface_specification_poc", "to": "specs_001_multilingual_entity_classifier_contracts_cli_contract_2_standard_streams_exit_codes", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_contracts_cli_contract_1_command_line_interface", "to": "specs_001_multilingual_entity_classifier_contracts_cli_contract_1_1_arguments_options", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_contracts_cli_contract_2_standard_streams_exit_codes", "to": "specs_001_multilingual_entity_classifier_contracts_cli_contract_2_1_exit_codes", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_contracts_cli_contract_2_standard_streams_exit_codes", "to": "specs_001_multilingual_entity_classifier_contracts_cli_contract_2_2_standard_output_stdout_standard_error_stderr", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_data_model", "to": "specs_001_multilingual_entity_classifier_data_model_data_models_schemas_poc", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_data_model_data_models_schemas_poc", "to": "specs_001_multilingual_entity_classifier_data_model_1_input_schemas", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_data_model_data_models_schemas_poc", "to": "specs_001_multilingual_entity_classifier_data_model_2_output_schemas", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_data_model_1_input_schemas", "to": "specs_001_multilingual_entity_classifier_data_model_1_1_ecp_snapshot_schema_snapshot_json", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_data_model_1_input_schemas", "to": "specs_001_multilingual_entity_classifier_data_model_1_2_content_item_schema_content_md", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_data_model_2_output_schemas", "to": "specs_001_multilingual_entity_classifier_data_model_2_1_classification_success_result_schema_result_json", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_data_model_2_output_schemas", "to": "specs_001_multilingual_entity_classifier_data_model_2_2_error_result_schema", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_plan", "to": "specs_001_multilingual_entity_classifier_plan_implementation_plan_multilingual_nlp_entity_inherence_classifier_poc", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_plan", "to": "specs_001_multilingual_entity_classifier_spec", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_tasks", "to": "specs_001_multilingual_entity_classifier_plan", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_plan_implementation_plan_multilingual_nlp_entity_inherence_classifier_poc", "to": "specs_001_multilingual_entity_classifier_plan_complexity_tracking", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_plan_implementation_plan_multilingual_nlp_entity_inherence_classifier_poc", "to": "specs_001_multilingual_entity_classifier_plan_constitution_check", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_plan_implementation_plan_multilingual_nlp_entity_inherence_classifier_poc", "to": "specs_001_multilingual_entity_classifier_plan_project_structure", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_plan_implementation_plan_multilingual_nlp_entity_inherence_classifier_poc", "to": "specs_001_multilingual_entity_classifier_plan_summary", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_plan_implementation_plan_multilingual_nlp_entity_inherence_classifier_poc", "to": "specs_001_multilingual_entity_classifier_plan_technical_context", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_plan_project_structure", "to": "specs_001_multilingual_entity_classifier_plan_documentation_this_feature", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_plan_project_structure", "to": "specs_001_multilingual_entity_classifier_plan_source_code_repository_root", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_quickstart", "to": "specs_001_multilingual_entity_classifier_quickstart_quickstart_validation_guide_poc", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_quickstart_quickstart_validation_guide_poc", "to": "specs_001_multilingual_entity_classifier_quickstart_1_prerequisites_installation", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_quickstart_quickstart_validation_guide_poc", "to": "specs_001_multilingual_entity_classifier_quickstart_2_basic_cli_usage_examples", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_quickstart_quickstart_validation_guide_poc", "to": "specs_001_multilingual_entity_classifier_quickstart_3_running_the_controlled_24_case_benchmark", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_quickstart_2_basic_cli_usage_examples", "to": "specs_001_multilingual_entity_classifier_quickstart_2_1_direct_inherence_portuguese", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_quickstart_2_basic_cli_usage_examples", "to": "specs_001_multilingual_entity_classifier_quickstart_2_2_contextual_inherence_via_graph_snapshot_german", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_quickstart_2_basic_cli_usage_examples", "to": "specs_001_multilingual_entity_classifier_quickstart_2_3_tangential_mention_spanish", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_research", "to": "specs_001_multilingual_entity_classifier_research_technical_research_architecture_decisions_poc", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_research_technical_research_architecture_decisions_poc", "to": "specs_001_multilingual_entity_classifier_research_1_technical_decisions_tradeoffs", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_research_technical_research_architecture_decisions_poc", "to": "specs_001_multilingual_entity_classifier_research_2_standardized_error_handling_strategy", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_research_1_technical_decisions_tradeoffs", "to": "specs_001_multilingual_entity_classifier_research_decision_1_execution_engine_cli_architecture", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_research_1_technical_decisions_tradeoffs", "to": "specs_001_multilingual_entity_classifier_research_decision_2_multilingual_language_detection_normalization_tier_1_core", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_research_1_technical_decisions_tradeoffs", "to": "specs_001_multilingual_entity_classifier_research_decision_3_materialized_ecp_snapshot_contract_matching_logic", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_research_1_technical_decisions_tradeoffs", "to": "specs_001_multilingual_entity_classifier_research_decision_4_tier_2_embeddings_tier_3_llm_optional_adapters", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_research_1_technical_decisions_tradeoffs", "to": "specs_001_multilingual_entity_classifier_research_decision_5_controlled_24_case_poc_benchmark_suite", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_spec", "to": "specs_001_multilingual_entity_classifier_spec_feature_specification_multilingual_nlp_entity_inherence_classifier_poc", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_tasks", "to": "specs_001_multilingual_entity_classifier_spec", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_spec_feature_specification_multilingual_nlp_entity_inherence_classifier_poc", "to": "specs_001_multilingual_entity_classifier_spec_assumptions_scope", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_spec_feature_specification_multilingual_nlp_entity_inherence_classifier_poc", "to": "specs_001_multilingual_entity_classifier_spec_clarifications", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_spec_feature_specification_multilingual_nlp_entity_inherence_classifier_poc", "to": "specs_001_multilingual_entity_classifier_spec_requirements_mandatory", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_spec_feature_specification_multilingual_nlp_entity_inherence_classifier_poc", "to": "specs_001_multilingual_entity_classifier_spec_success_criteria_mandatory", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_spec_feature_specification_multilingual_nlp_entity_inherence_classifier_poc", "to": "specs_001_multilingual_entity_classifier_spec_user_scenarios_testing_mandatory", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_spec_clarifications", "to": "specs_001_multilingual_entity_classifier_spec_session_2026_08_19", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_spec_user_scenarios_testing_mandatory", "to": "specs_001_multilingual_entity_classifier_spec_user_story_1_classify_content_inherence_via_cli_for_an_ecp_snapshot_priority_p1", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_spec_user_scenarios_testing_mandatory", "to": "specs_001_multilingual_entity_classifier_spec_user_story_2_multilingual_language_support_edge_validation_priority_p2", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_spec_requirements_mandatory", "to": "specs_001_multilingual_entity_classifier_spec_functional_requirements", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_spec_requirements_mandatory", "to": "specs_001_multilingual_entity_classifier_spec_key_entities_data_models_domain_entities", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_spec_success_criteria_mandatory", "to": "specs_001_multilingual_entity_classifier_spec_measurable_outcomes", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_spec_assumptions_scope", "to": "specs_001_multilingual_entity_classifier_spec_assumptions", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_spec_assumptions_scope", "to": "specs_001_multilingual_entity_classifier_spec_explicit_out_of_scope_poc", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_tasks", "to": "specs_001_multilingual_entity_classifier_tasks_tasks_multilingual_nlp_entity_inherence_classifier_poc", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_tasks_tasks_multilingual_nlp_entity_inherence_classifier_poc", "to": "specs_001_multilingual_entity_classifier_tasks_dependencies_execution_order", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_tasks_tasks_multilingual_nlp_entity_inherence_classifier_poc", "to": "specs_001_multilingual_entity_classifier_tasks_phase_1_setup_shared_infrastructure", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_tasks_tasks_multilingual_nlp_entity_inherence_classifier_poc", "to": "specs_001_multilingual_entity_classifier_tasks_phase_2_foundational_blocking_prerequisites", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_tasks_tasks_multilingual_nlp_entity_inherence_classifier_poc", "to": "specs_001_multilingual_entity_classifier_tasks_phase_3_user_story_1_core_tier_1_deterministic_classification_cli_priority_p1_mvp", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_tasks_tasks_multilingual_nlp_entity_inherence_classifier_poc", "to": "specs_001_multilingual_entity_classifier_tasks_phase_4_user_story_2_multilingual_24_case_controlled_benchmark_suite_priority_p2", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_tasks_tasks_multilingual_nlp_entity_inherence_classifier_poc", "to": "specs_001_multilingual_entity_classifier_tasks_phase_5_optional_adapters_tier_2_embeddings_tier_3_llm_priority_p3", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_tasks_tasks_multilingual_nlp_entity_inherence_classifier_poc", "to": "specs_001_multilingual_entity_classifier_tasks_phase_6_polish_validation", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_tasks_phase_3_user_story_1_core_tier_1_deterministic_classification_cli_priority_p1_mvp", "to": "specs_001_multilingual_entity_classifier_tasks_implementation_for_user_story_1", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_tasks_phase_3_user_story_1_core_tier_1_deterministic_classification_cli_priority_p1_mvp", "to": "specs_001_multilingual_entity_classifier_tasks_tests_for_user_story_1", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_tasks_phase_4_user_story_2_multilingual_24_case_controlled_benchmark_suite_priority_p2", "to": "specs_001_multilingual_entity_classifier_tasks_implementation_for_user_story_2", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_tasks_phase_5_optional_adapters_tier_2_embeddings_tier_3_llm_priority_p3", "to": "specs_001_multilingual_entity_classifier_tasks_implementation_for_user_story_3", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_tasks_dependencies_execution_order", "to": "specs_001_multilingual_entity_classifier_tasks_implementation_strategy", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_de_contextual", "to": "tests_fixtures_benchmark_24_de_contextual_batteriefabrik_in_europa", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_de_direct", "to": "tests_fixtures_benchmark_24_de_direct_investitionsoffensive_in_wolfsburg", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_de_not_related", "to": "tests_fixtures_benchmark_24_de_not_related_backrezept_f\u00fcr_apfelstrudel", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_de_tangential", "to": "tests_fixtures_benchmark_24_de_tangential_reisebericht_aus_niedersachsen", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_en_contextual", "to": "tests_fixtures_benchmark_24_en_contextual_electronics_assembly_expansion", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_en_direct", "to": "tests_fixtures_benchmark_24_en_direct_apple_unveils_next_generation_iphone", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_en_not_related", "to": "tests_fixtures_benchmark_24_en_not_related_classic_apple_pie_baking_guide", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_en_tangential", "to": "tests_fixtures_benchmark_24_en_tangential_morning_city_walk", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_es_contextual", "to": "tests_fixtures_benchmark_24_es_contextual_nuevas_soluciones_de_pagos_electr\u00f3nicos", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_es_direct", "to": "tests_fixtures_benchmark_24_es_direct_expansi\u00f3n_de_servicios_financieros_en_espa\u00f1a", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_es_not_related", "to": "tests_fixtures_benchmark_24_es_not_related_turismo_en_la_costa_norte", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_es_tangential", "to": "tests_fixtures_benchmark_24_es_tangential_gu\u00eda_cultural_de_la_ciudad", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_fr_contextual", "to": "tests_fixtures_benchmark_24_fr_contextual_batteries_industrielles_de_pointe", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_fr_direct", "to": "tests_fixtures_benchmark_24_fr_direct_d\u00e9veloppement_\u00e9nerg\u00e9tique_en_france", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_fr_not_related", "to": "tests_fixtures_benchmark_24_fr_not_related_recette_traditionnelle_de_la_quiche_lorraine", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_fr_tangential", "to": "tests_fixtures_benchmark_24_fr_tangential_promenade_dans_paris", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_it_contextual", "to": "tests_fixtures_benchmark_24_it_contextual_innovazione_negli_impianti_frenanti", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_it_direct", "to": "tests_fixtures_benchmark_24_it_direct_nuova_monoposto_a_maranello", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_it_not_related", "to": "tests_fixtures_benchmark_24_it_not_related_ricetta_tradizionale_del_risotto", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_it_tangential", "to": "tests_fixtures_benchmark_24_it_tangential_passeggiata_pomeridiana_a_modena", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_pt_contextual", "to": "tests_fixtures_benchmark_24_pt_contextual_log\u00edstica_de_derivados", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_pt_direct", "to": "tests_fixtures_benchmark_24_pt_direct_produ\u00e7\u00e3o_de_petr\u00f3leo_no_brasil", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_pt_not_related", "to": "tests_fixtures_benchmark_24_pt_not_related_dicas_de_jardinagem", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_pt_tangential", "to": "tests_fixtures_benchmark_24_pt_tangential_turismo_no_rio_de_janeiro", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}]; -const LEGEND = [{"cid": 0, "color": "#4E79A7", "label": "Task Planning", "count": 27}, {"cid": 1, "color": "#F28E2B", "label": "Convergence Workflow", "count": 16}, {"cid": 2, "color": "#E15759", "label": "SpecKit Utilities", "count": 16}, {"cid": 3, "color": "#76B7B2", "label": "Graphify Commands", "count": 25}, {"cid": 4, "color": "#59A14F", "label": "speckit-analyze/SKILL.md", "count": 26}, {"cid": 5, "color": "#EDC948", "label": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "count": 38}, {"cid": 6, "color": "#B07AA1", "label": "Feature Specification Template", "count": 13}, {"cid": 7, "color": "#FF9DA7", "label": "Graphify Rules", "count": 2}, {"cid": 8, "color": "#9C755F", "label": "Implementation Planning", "count": 11}, {"cid": 9, "color": "#BAB0AC", "label": "Feature Specification", "count": 11}, {"cid": 10, "color": "#4E79A7", "label": "Task Generation", "count": 11}, {"cid": 11, "color": "#F28E2B", "label": "Project Constitution", "count": 11}, {"cid": 12, "color": "#E15759", "label": "Constitution Template", "count": 11}, {"cid": 13, "color": "#76B7B2", "label": "Graphify Exports", "count": 9}, {"cid": 14, "color": "#59A14F", "label": "Ponytail Configuration", "count": 9}, {"cid": 15, "color": "#EDC948", "label": "Implementation Planning Template", "count": 9}, {"cid": 16, "color": "#B07AA1", "label": "Ponytail Help", "count": 8}, {"cid": 17, "color": "#FF9DA7", "label": "Checklist Generation", "count": 8}, {"cid": 18, "color": "#9C755F", "label": "Clarification Workflow", "count": 7}, {"cid": 19, "color": "#BAB0AC", "label": "Implementation Workflow", "count": 7}, {"cid": 20, "color": "#4E79A7", "label": "Graph Query", "count": 6}, {"cid": 21, "color": "#F28E2B", "label": "Constitution Workflow", "count": 6}, {"cid": 22, "color": "#E15759", "label": "Feature Branch Creation", "count": 6}, {"cid": 23, "color": "#76B7B2", "label": "Ponytail Audit", "count": 5}, {"cid": 24, "color": "#59A14F", "label": "Ponytail Metrics", "count": 5}, {"cid": 25, "color": "#EDC948", "label": "Ponytail Review", "count": 5}, {"cid": 26, "color": "#B07AA1", "label": "Task Issue Conversion", "count": 5}, {"cid": 27, "color": "#FF9DA7", "label": "Checklist Template", "count": 5}, {"cid": 28, "color": "#9C755F", "label": "Graphify Watch Mode", "count": 4}, {"cid": 29, "color": "#BAB0AC", "label": "Graphify Hooks", "count": 4}, {"cid": 30, "color": "#4E79A7", "label": "Graphify Updates", "count": 4}, {"cid": 31, "color": "#F28E2B", "label": "Ponytail Debt", "count": 4}, {"cid": 32, "color": "#E15759", "label": "Repository Merge", "count": 3}, {"cid": 33, "color": "#76B7B2", "label": "Media Transcription", "count": 3}, {"cid": 34, "color": "#59A14F", "label": "Extraction Specification", "count": 2}, {"cid": 35, "color": "#EDC948", "label": "Prerequisite Checks", "count": 1}, {"cid": 36, "color": "#B07AA1", "label": "Template Resolution", "count": 1}, {"cid": 37, "color": "#FF9DA7", "label": "Plan Setup", "count": 1}, {"cid": 38, "color": "#9C755F", "label": "Task Setup", "count": 1}, {"cid": 39, "color": "#BAB0AC", "label": "Graphify Workflows", "count": 2}, {"cid": 40, "color": "#4E79A7", "label": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", "count": 14}, {"cid": 41, "color": "#F28E2B", "label": "1. Technical Decisions & Tradeoffs", "count": 9}, {"cid": 42, "color": "#E15759", "label": "1. Input Schemas", "count": 8}, {"cid": 43, "color": "#76B7B2", "label": "2. Basic CLI Usage Examples", "count": 8}, {"cid": 44, "color": "#59A14F", "label": "2. Standard Streams & Exit Codes", "count": 7}, {"cid": 45, "color": "#EDC948", "label": "ECPSnapshot", "count": 87}, {"cid": 46, "color": "#B07AA1", "label": "test_models.py", "count": 25}, {"cid": 47, "color": "#FF9DA7", "label": "detect_language", "count": 18}, {"cid": 48, "color": "#9C755F", "label": "main", "count": 10}, {"cid": 49, "color": "#BAB0AC", "label": "content_northvolt_de.md", "count": 2}, {"cid": 50, "color": "#4E79A7", "label": "content_presal_pt.md", "count": 2}, {"cid": 51, "color": "#F28E2B", "label": "content_tangential_es.md", "count": 2}, {"cid": 52, "color": "#E15759", "label": "adapters/__init__.py", "count": 2}, {"cid": 53, "color": "#76B7B2", "label": "src/__init__.py", "count": 2}, {"cid": 54, "color": "#59A14F", "label": "de/contextual.md", "count": 2}, {"cid": 55, "color": "#EDC948", "label": "de/direct.md", "count": 2}, {"cid": 56, "color": "#B07AA1", "label": "de/not_related.md", "count": 2}, {"cid": 57, "color": "#FF9DA7", "label": "de/tangential.md", "count": 2}, {"cid": 58, "color": "#9C755F", "label": "en/contextual.md", "count": 2}, {"cid": 59, "color": "#BAB0AC", "label": "en/direct.md", "count": 2}, {"cid": 60, "color": "#4E79A7", "label": "en/not_related.md", "count": 2}, {"cid": 61, "color": "#F28E2B", "label": "en/tangential.md", "count": 2}, {"cid": 62, "color": "#E15759", "label": "es/contextual.md", "count": 2}, {"cid": 63, "color": "#76B7B2", "label": "es/direct.md", "count": 2}, {"cid": 64, "color": "#59A14F", "label": "es/not_related.md", "count": 2}, {"cid": 65, "color": "#EDC948", "label": "es/tangential.md", "count": 2}, {"cid": 66, "color": "#B07AA1", "label": "fr/contextual.md", "count": 2}, {"cid": 67, "color": "#FF9DA7", "label": "fr/direct.md", "count": 2}, {"cid": 68, "color": "#9C755F", "label": "fr/not_related.md", "count": 2}, {"cid": 69, "color": "#BAB0AC", "label": "fr/tangential.md", "count": 2}, {"cid": 70, "color": "#4E79A7", "label": "it/contextual.md", "count": 2}, {"cid": 71, "color": "#F28E2B", "label": "it/direct.md", "count": 2}, {"cid": 72, "color": "#E15759", "label": "it/not_related.md", "count": 2}, {"cid": 73, "color": "#76B7B2", "label": "it/tangential.md", "count": 2}, {"cid": 74, "color": "#59A14F", "label": "pt/contextual.md", "count": 2}, {"cid": 75, "color": "#EDC948", "label": "pt/direct.md", "count": 2}, {"cid": 76, "color": "#B07AA1", "label": "pt/not_related.md", "count": 2}, {"cid": 77, "color": "#FF9DA7", "label": "pt/tangential.md", "count": 2}, {"cid": 78, "color": "#9C755F", "label": "tests/__init__.py", "count": 2}, {"cid": 79, "color": "#BAB0AC", "label": "text-nlp-classifier", "count": 1}]; +const RAW_NODES = [{"id": "specify_scripts_powershell_check_prerequisites", "label": "check-prerequisites.ps1", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "check-prerequisites.ps1", "community": 35, "community_name": "Prerequisite Checks", "source_file": ".specify/scripts/powershell/check-prerequisites.ps1", "file_type": "code", "degree": 0}, {"id": "specify_scripts_powershell_common", "label": "common.ps1", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 24.5, "font": {"size": 12, "color": "#ffffff"}, "title": "common.ps1", "community": 2, "community_name": "SpecKit Utilities", "source_file": ".specify/scripts/powershell/common.ps1", "file_type": "code", "degree": 15}, {"id": "specify_scripts_powershell_common_find_specifyroot", "label": "Find-SpecifyRoot()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Find-SpecifyRoot()", "community": 2, "community_name": "SpecKit Utilities", "source_file": ".specify/scripts/powershell/common.ps1", "file_type": "code", "degree": 2}, {"id": "specify_scripts_powershell_common_resolve_specifyinitdir", "label": "Resolve-SpecifyInitDir()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Resolve-SpecifyInitDir()", "community": 2, "community_name": "SpecKit Utilities", "source_file": ".specify/scripts/powershell/common.ps1", "file_type": "code", "degree": 2}, {"id": "specify_scripts_powershell_common_get_reporoot", "label": "Get-RepoRoot()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Get-RepoRoot()", "community": 2, "community_name": "SpecKit Utilities", "source_file": ".specify/scripts/powershell/common.ps1", "file_type": "code", "degree": 4}, {"id": "specify_scripts_powershell_common_get_currentbranch", "label": "Get-CurrentBranch()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Get-CurrentBranch()", "community": 2, "community_name": "SpecKit Utilities", "source_file": ".specify/scripts/powershell/common.ps1", "file_type": "code", "degree": 2}, {"id": "specify_scripts_powershell_common_save_featurejson", "label": "Save-FeatureJson()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Save-FeatureJson()", "community": 2, "community_name": "SpecKit Utilities", "source_file": ".specify/scripts/powershell/common.ps1", "file_type": "code", "degree": 2}, {"id": "specify_scripts_powershell_common_get_featurepathsenv", "label": "Get-FeaturePathsEnv()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Get-FeaturePathsEnv()", "community": 2, "community_name": "SpecKit Utilities", "source_file": ".specify/scripts/powershell/common.ps1", "file_type": "code", "degree": 4}, {"id": "specify_scripts_powershell_common_test_fileexists", "label": "Test-FileExists()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Test-FileExists()", "community": 2, "community_name": "SpecKit Utilities", "source_file": ".specify/scripts/powershell/common.ps1", "file_type": "code", "degree": 1}, {"id": "specify_scripts_powershell_common_test_dirhasfiles", "label": "Test-DirHasFiles()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Test-DirHasFiles()", "community": 2, "community_name": "SpecKit Utilities", "source_file": ".specify/scripts/powershell/common.ps1", "file_type": "code", "degree": 1}, {"id": "specify_scripts_powershell_common_get_invokeseparator", "label": "Get-InvokeSeparator()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Get-InvokeSeparator()", "community": 2, "community_name": "SpecKit Utilities", "source_file": ".specify/scripts/powershell/common.ps1", "file_type": "code", "degree": 2}, {"id": "specify_scripts_powershell_common_format_speckitcommand", "label": "Format-SpecKitCommand()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Format-SpecKitCommand()", "community": 2, "community_name": "SpecKit Utilities", "source_file": ".specify/scripts/powershell/common.ps1", "file_type": "code", "degree": 2}, {"id": "specify_scripts_powershell_common_get_python3command", "label": "Get-Python3Command()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Get-Python3Command()", "community": 2, "community_name": "SpecKit Utilities", "source_file": ".specify/scripts/powershell/common.ps1", "file_type": "code", "degree": 2}, {"id": "specify_scripts_powershell_common_get_normalizedpriority", "label": "Get-NormalizedPriority()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Get-NormalizedPriority()", "community": 2, "community_name": "SpecKit Utilities", "source_file": ".specify/scripts/powershell/common.ps1", "file_type": "code", "degree": 4}, {"id": "specify_scripts_powershell_common_get_sortedextensionids", "label": "Get-SortedExtensionIds()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Get-SortedExtensionIds()", "community": 2, "community_name": "SpecKit Utilities", "source_file": ".specify/scripts/powershell/common.ps1", "file_type": "code", "degree": 4}, {"id": "specify_scripts_powershell_common_resolve_template", "label": "Resolve-Template()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Resolve-Template()", "community": 2, "community_name": "SpecKit Utilities", "source_file": ".specify/scripts/powershell/common.ps1", "file_type": "code", "degree": 3}, {"id": "specify_scripts_powershell_common_resolve_templatecontent", "label": "Resolve-TemplateContent()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Resolve-TemplateContent()", "community": 2, "community_name": "SpecKit Utilities", "source_file": ".specify/scripts/powershell/common.ps1", "file_type": "code", "degree": 4}, {"id": "specify_scripts_powershell_create_new_feature", "label": "create-new-feature.ps1", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 14.8, "font": {"size": 12, "color": "#ffffff"}, "title": "create-new-feature.ps1", "community": 22, "community_name": "Feature Branch Creation", "source_file": ".specify/scripts/powershell/create-new-feature.ps1", "file_type": "code", "degree": 5}, {"id": "specify_scripts_powershell_create_new_feature_get_highestnumberfromspecs", "label": "Get-HighestNumberFromSpecs()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Get-HighestNumberFromSpecs()", "community": 22, "community_name": "Feature Branch Creation", "source_file": ".specify/scripts/powershell/create-new-feature.ps1", "file_type": "code", "degree": 1}, {"id": "specify_scripts_powershell_create_new_feature_test_specprefixinuse", "label": "Test-SpecPrefixInUse()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Test-SpecPrefixInUse()", "community": 22, "community_name": "Feature Branch Creation", "source_file": ".specify/scripts/powershell/create-new-feature.ps1", "file_type": "code", "degree": 1}, {"id": "specify_scripts_powershell_create_new_feature_convertto_cleanbranchname", "label": "ConvertTo-CleanBranchName()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "ConvertTo-CleanBranchName()", "community": 22, "community_name": "Feature Branch Creation", "source_file": ".specify/scripts/powershell/create-new-feature.ps1", "file_type": "code", "degree": 2}, {"id": "specify_scripts_powershell_create_new_feature_get_fittedbranchname", "label": "Get-FittedBranchName()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Get-FittedBranchName()", "community": 22, "community_name": "Feature Branch Creation", "source_file": ".specify/scripts/powershell/create-new-feature.ps1", "file_type": "code", "degree": 1}, {"id": "specify_scripts_powershell_create_new_feature_get_branchname", "label": "Get-BranchName()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Get-BranchName()", "community": 22, "community_name": "Feature Branch Creation", "source_file": ".specify/scripts/powershell/create-new-feature.ps1", "file_type": "code", "degree": 2}, {"id": "specify_scripts_powershell_resolve_template", "label": "resolve-template.ps1", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "resolve-template.ps1", "community": 36, "community_name": "Template Resolution", "source_file": ".specify/scripts/powershell/resolve-template.ps1", "file_type": "code", "degree": 0}, {"id": "specify_scripts_powershell_setup_plan", "label": "setup-plan.ps1", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "setup-plan.ps1", "community": 37, "community_name": "Plan Setup", "source_file": ".specify/scripts/powershell/setup-plan.ps1", "file_type": "code", "degree": 0}, {"id": "specify_scripts_powershell_setup_tasks", "label": "setup-tasks.ps1", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "setup-tasks.ps1", "community": 38, "community_name": "Task Setup", "source_file": ".specify/scripts/powershell/setup-tasks.ps1", "file_type": "code", "degree": 0}, {"id": "classify", "label": "classify.py", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 19.7, "font": {"size": 12, "color": "#ffffff"}, "title": "classify.py", "community": 100, "community_name": "classifier.py", "source_file": "classify.py", "file_type": "code", "degree": 10}, {"id": "classify_parse_args", "label": "parse_args()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "parse_args()", "community": 103, "community_name": "main", "source_file": "classify.py", "file_type": "code", "degree": 3}, {"id": "namespace", "label": "Namespace", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Namespace", "community": 103, "community_name": "main", "source_file": "", "file_type": "code", "degree": 1}, {"id": "classify_emit_error", "label": "emit_error()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 14.8, "font": {"size": 12, "color": "#ffffff"}, "title": "emit_error()", "community": 100, "community_name": "classifier.py", "source_file": "classify.py", "file_type": "code", "degree": 5}, {"id": "classify_main", "label": "main()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 23.5, "font": {"size": 12, "color": "#ffffff"}, "title": "main()", "community": 103, "community_name": "main", "source_file": "classify.py", "file_type": "code", "degree": 14}, {"id": "pkg_text_nlp_classifier", "label": "text-nlp-classifier", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "text-nlp-classifier", "community": 79, "community_name": "text-nlp-classifier", "source_file": "pyproject.toml", "file_type": "code", "degree": 0}, {"id": "scripts_init", "label": "scripts/__init__.py", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "scripts/__init__.py", "community": 89, "community_name": "scripts/__init__.py", "source_file": "scripts/__init__.py", "file_type": "code", "degree": 1}, {"id": "scripts_init_rationale_1", "label": "M\u00f3dulo de scripts utilit\u00e1rios do projeto.", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "M\u00f3dulo de scripts utilit\u00e1rios do projeto.", "community": 89, "community_name": "scripts/__init__.py", "source_file": "scripts/__init__.py", "file_type": "rationale", "degree": 1}, {"id": "scripts_extract_google_news", "label": "extract_google_news.py", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 22.6, "font": {"size": 12, "color": "#ffffff"}, "title": "extract_google_news.py", "community": 82, "community_name": "extract_google_news.py", "source_file": "scripts/extract_google_news.py", "file_type": "code", "degree": 13}, {"id": "scripts_extract_google_news_searchquery", "label": "SearchQuery", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 21.6, "font": {"size": 12, "color": "#ffffff"}, "title": "SearchQuery", "community": 90, "community_name": "SearchQuery", "source_file": "scripts/extract_google_news.py", "file_type": "code", "degree": 12}, {"id": "scripts_extract_google_news_searchquery_post_init", "label": ".__post_init__()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".__post_init__()", "community": 90, "community_name": "SearchQuery", "source_file": "scripts/extract_google_news.py", "file_type": "code", "degree": 1}, {"id": "scripts_extract_google_news_searchquery_clean_keyword", "label": ".clean_keyword()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".clean_keyword()", "community": 90, "community_name": "SearchQuery", "source_file": "scripts/extract_google_news.py", "file_type": "code", "degree": 1}, {"id": "scripts_extract_google_news_searchquery_clean_language", "label": ".clean_language()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".clean_language()", "community": 90, "community_name": "SearchQuery", "source_file": "scripts/extract_google_news.py", "file_type": "code", "degree": 1}, {"id": "scripts_extract_google_news_searchquery_clean_locale", "label": ".clean_locale()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".clean_locale()", "community": 90, "community_name": "SearchQuery", "source_file": "scripts/extract_google_news.py", "file_type": "code", "degree": 1}, {"id": "scripts_extract_google_news_newsarticle", "label": "NewsArticle", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 16.8, "font": {"size": 12, "color": "#ffffff"}, "title": "NewsArticle", "community": 82, "community_name": "extract_google_news.py", "source_file": "scripts/extract_google_news.py", "file_type": "code", "degree": 7}, {"id": "scripts_extract_google_news_newsarticle_to_dict", "label": ".to_dict()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".to_dict()", "community": 83, "community_name": "ExtractionResult", "source_file": "scripts/extract_google_news.py", "file_type": "code", "degree": 2}, {"id": "scripts_extract_google_news_py_any", "label": "Any", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Any", "community": 83, "community_name": "ExtractionResult", "source_file": "", "file_type": "code", "degree": 2}, {"id": "scripts_extract_google_news_extractionresult", "label": "ExtractionResult", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 16.8, "font": {"size": 12, "color": "#ffffff"}, "title": "ExtractionResult", "community": 83, "community_name": "ExtractionResult", "source_file": "scripts/extract_google_news.py", "file_type": "code", "degree": 7}, {"id": "scripts_extract_google_news_extractionresult_to_dict", "label": ".to_dict()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".to_dict()", "community": 83, "community_name": "ExtractionResult", "source_file": "scripts/extract_google_news.py", "file_type": "code", "degree": 2}, {"id": "scripts_extract_google_news_get_hl_gl_ceid", "label": "get_hl_gl_ceid()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 16.8, "font": {"size": 12, "color": "#ffffff"}, "title": "get_hl_gl_ceid()", "community": 80, "community_name": "get_hl_gl_ceid", "source_file": "scripts/extract_google_news.py", "file_type": "code", "degree": 7}, {"id": "scripts_extract_google_news_normalize_text_for_comparison", "label": "_normalize_text_for_comparison()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "_normalize_text_for_comparison()", "community": 82, "community_name": "extract_google_news.py", "source_file": "scripts/extract_google_news.py", "file_type": "code", "degree": 3}, {"id": "scripts_extract_google_news_parse_google_news_rss", "label": "parse_google_news_rss()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 16.8, "font": {"size": 12, "color": "#ffffff"}, "title": "parse_google_news_rss()", "community": 82, "community_name": "extract_google_news.py", "source_file": "scripts/extract_google_news.py", "file_type": "code", "degree": 7}, {"id": "scripts_extract_google_news_resolve_article_url", "label": "resolve_article_url()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 15.8, "font": {"size": 12, "color": "#ffffff"}, "title": "resolve_article_url()", "community": 84, "community_name": "test_extract_google_news.py", "source_file": "scripts/extract_google_news.py", "file_type": "code", "degree": 6}, {"id": "scripts_extract_google_news_resolve_articles_urls", "label": "resolve_articles_urls()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 15.8, "font": {"size": 12, "color": "#ffffff"}, "title": "resolve_articles_urls()", "community": 82, "community_name": "extract_google_news.py", "source_file": "scripts/extract_google_news.py", "file_type": "code", "degree": 6}, {"id": "scripts_extract_google_news_fetch_rss_content", "label": "_fetch_rss_content()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "_fetch_rss_content()", "community": 82, "community_name": "extract_google_news.py", "source_file": "scripts/extract_google_news.py", "file_type": "code", "degree": 3}, {"id": "scripts_extract_google_news_extract_google_news", "label": "extract_google_news()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 21.6, "font": {"size": 12, "color": "#ffffff"}, "title": "extract_google_news()", "community": 82, "community_name": "extract_google_news.py", "source_file": "scripts/extract_google_news.py", "file_type": "code", "degree": 12}, {"id": "scripts_extract_google_news_build_parser", "label": "build_parser()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "build_parser()", "community": 98, "community_name": "build_parser", "source_file": "scripts/extract_google_news.py", "file_type": "code", "degree": 4}, {"id": "argumentparser", "label": "ArgumentParser", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "ArgumentParser", "community": 98, "community_name": "build_parser", "source_file": "", "file_type": "code", "degree": 1}, {"id": "scripts_extract_google_news_main", "label": "main()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 21.6, "font": {"size": 12, "color": "#ffffff"}, "title": "main()", "community": 40, "community_name": "main", "source_file": "scripts/extract_google_news.py", "file_type": "code", "degree": 12}, {"id": "scripts_extract_google_news_rationale_33", "label": "Value Object com par\u00e2metros de busca validados.", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Value Object com par\u00e2metros de busca validados.", "community": 90, "community_name": "SearchQuery", "source_file": "scripts/extract_google_news.py", "file_type": "rationale", "degree": 1}, {"id": "scripts_extract_google_news_rationale_67", "label": "Entidade que representa uma not\u00edcia extra\u00edda.", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Entidade que representa uma not\u00edcia extra\u00edda.", "community": 82, "community_name": "extract_google_news.py", "source_file": "scripts/extract_google_news.py", "file_type": "rationale", "degree": 1}, {"id": "scripts_extract_google_news_rationale_87", "label": "Resultado consolidado da extra\u00e7\u00e3o.", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Resultado consolidado da extra\u00e7\u00e3o.", "community": 83, "community_name": "ExtractionResult", "source_file": "scripts/extract_google_news.py", "file_type": "rationale", "degree": 1}, {"id": "scripts_extract_google_news_rationale_110", "label": "Mapeia idioma e locale para os par\u00e2metros hl, gl e ceid do Google News.", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Mapeia idioma e locale para os par\u00e2metros hl, gl e ceid do Google News.", "community": 80, "community_name": "get_hl_gl_ceid", "source_file": "scripts/extract_google_news.py", "file_type": "rationale", "degree": 1}, {"id": "scripts_extract_google_news_rationale_154", "label": "Remove pontua\u00e7\u00e3o e espa\u00e7os extras para compara\u00e7\u00e3o de redund\u00e2ncia.", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Remove pontua\u00e7\u00e3o e espa\u00e7os extras para compara\u00e7\u00e3o de redund\u00e2ncia.", "community": 82, "community_name": "extract_google_news.py", "source_file": "scripts/extract_google_news.py", "file_type": "rationale", "degree": 1}, {"id": "scripts_extract_google_news_rationale_159", "label": "Parseia o XML do RSS do Google News e extrai os itens estruturados.", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Parseia o XML do RSS do Google News e extrai os itens estruturados.", "community": 82, "community_name": "extract_google_news.py", "source_file": "scripts/extract_google_news.py", "file_type": "rationale", "degree": 1}, {"id": "scripts_extract_google_news_rationale_210", "label": "Resolve a URL intermedi\u00e1ria do Google News para a URL real do ve\u00edculo.", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Resolve a URL intermedi\u00e1ria do Google News para a URL real do ve\u00edculo.", "community": 84, "community_name": "test_extract_google_news.py", "source_file": "scripts/extract_google_news.py", "file_type": "rationale", "degree": 1}, {"id": "scripts_extract_google_news_rationale_225", "label": "Resolve em paralelo as URLs intermedi\u00e1rias do Google News para os links finais\u2026", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Resolve em paralelo as URLs intermedi\u00e1rias do Google News para os links finais\u2026", "community": 82, "community_name": "extract_google_news.py", "source_file": "scripts/extract_google_news.py", "file_type": "rationale", "degree": 1}, {"id": "scripts_extract_google_news_rationale_256", "label": "Realiza a requisi\u00e7\u00e3o ao feed RSS utilizando a biblioteca Foxcape como motor\u2026", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Realiza a requisi\u00e7\u00e3o ao feed RSS utilizando a biblioteca Foxcape como motor\u2026", "community": 82, "community_name": "extract_google_news.py", "source_file": "scripts/extract_google_news.py", "file_type": "rationale", "degree": 1}, {"id": "scripts_extract_google_news_rationale_302", "label": "Orquestra a consulta ao Google News e retorna o resultado consolidado com URLs\u2026", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Orquestra a consulta ao Google News e retorna o resultado consolidado com URLs\u2026", "community": 82, "community_name": "extract_google_news.py", "source_file": "scripts/extract_google_news.py", "file_type": "rationale", "degree": 1}, {"id": "scripts_extract_google_news_rationale_339", "label": "Cria e configura o parser de argumentos CLI.", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Cria e configura o parser de argumentos CLI.", "community": 98, "community_name": "build_parser", "source_file": "scripts/extract_google_news.py", "file_type": "rationale", "degree": 1}, {"id": "scripts_extract_google_news_rationale_406", "label": "Ponto de entrada do script CLI.", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Ponto de entrada do script CLI.", "community": 40, "community_name": "main", "source_file": "scripts/extract_google_news.py", "file_type": "rationale", "degree": 1}, {"id": "src_init", "label": "src/__init__.py", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "src/__init__.py", "community": 53, "community_name": "src/__init__.py", "source_file": "src/__init__.py", "file_type": "code", "degree": 1}, {"id": "src_init_rationale_1", "label": "Multilingual NLP Entity Inherence Classifier package.", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Multilingual NLP Entity Inherence Classifier package.", "community": 53, "community_name": "src/__init__.py", "source_file": "src/__init__.py", "file_type": "rationale", "degree": 1}, {"id": "src_adapters_init", "label": "adapters/__init__.py", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "adapters/__init__.py", "community": 52, "community_name": "adapters/__init__.py", "source_file": "src/adapters/__init__.py", "file_type": "code", "degree": 1}, {"id": "src_adapters_init_rationale_1", "label": "Adapters package for optional vector embeddings and LLM providers.", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Adapters package for optional vector embeddings and LLM providers.", "community": 52, "community_name": "adapters/__init__.py", "source_file": "src/adapters/__init__.py", "file_type": "rationale", "degree": 1}, {"id": "src_adapters_base", "label": "base.py", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 17.7, "font": {"size": 12, "color": "#ffffff"}, "title": "base.py", "community": 45, "community_name": "ClassificationResult", "source_file": "src/adapters/base.py", "file_type": "code", "degree": 8}, {"id": "src_adapters_base_basenlpadapter", "label": "BaseNLPAdapter", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 21.6, "font": {"size": 12, "color": "#ffffff"}, "title": "BaseNLPAdapter", "community": 45, "community_name": "ClassificationResult", "source_file": "src/adapters/base.py", "file_type": "code", "degree": 12}, {"id": "abc", "label": "ABC", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "ABC", "community": 45, "community_name": "ClassificationResult", "source_file": "", "file_type": "code", "degree": 2}, {"id": "src_adapters_base_basenlpadapter_is_available", "label": ".is_available()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".is_available()", "community": 45, "community_name": "ClassificationResult", "source_file": "src/adapters/base.py", "file_type": "code", "degree": 2}, {"id": "src_adapters_base_basenlpadapter_evaluate_similarity", "label": ".evaluate_similarity()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".evaluate_similarity()", "community": 45, "community_name": "ClassificationResult", "source_file": "src/adapters/base.py", "file_type": "code", "degree": 2}, {"id": "src_adapters_base_basenlpadapter_disambiguate", "label": ".disambiguate()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".disambiguate()", "community": 45, "community_name": "ClassificationResult", "source_file": "src/adapters/base.py", "file_type": "code", "degree": 4}, {"id": "src_adapters_base_rationale_1", "label": "Base abstract adapter interface for optional Tier 2 / Tier 3 NLP enhancers.", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Base abstract adapter interface for optional Tier 2 / Tier 3 NLP enhancers.", "community": 45, "community_name": "ClassificationResult", "source_file": "src/adapters/base.py", "file_type": "rationale", "degree": 1}, {"id": "src_adapters_base_rationale_11", "label": "Abstract interface for pluggable NLP classification adapters.", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Abstract interface for pluggable NLP classification adapters.", "community": 45, "community_name": "ClassificationResult", "source_file": "src/adapters/base.py", "file_type": "rationale", "degree": 1}, {"id": "src_adapters_base_rationale_15", "label": "Return True if the underlying provider or model is installed and configured.", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Return True if the underlying provider or model is installed and configured.", "community": 45, "community_name": "ClassificationResult", "source_file": "src/adapters/base.py", "file_type": "rationale", "degree": 1}, {"id": "src_adapters_base_rationale_20", "label": "Compute semantic similarity score between text and a set of candidate terms.", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Compute semantic similarity score between text and a set of candidate terms.", "community": 45, "community_name": "ClassificationResult", "source_file": "src/adapters/base.py", "file_type": "rationale", "degree": 1}, {"id": "src_adapters_base_rationale_30", "label": "Optionally refine an ambiguous classification result.", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Optionally refine an ambiguous classification result.", "community": 45, "community_name": "ClassificationResult", "source_file": "src/adapters/base.py", "file_type": "rationale", "degree": 1}, {"id": "src_adapters_embeddings", "label": "embeddings.py", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 17.7, "font": {"size": 12, "color": "#ffffff"}, "title": "embeddings.py", "community": 45, "community_name": "ClassificationResult", "source_file": "src/adapters/embeddings.py", "file_type": "code", "degree": 8}, {"id": "src_adapters_embeddings_localembeddingsadapter", "label": "LocalEmbeddingsAdapter", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 23.5, "font": {"size": 12, "color": "#ffffff"}, "title": "LocalEmbeddingsAdapter", "community": 45, "community_name": "ClassificationResult", "source_file": "src/adapters/embeddings.py", "file_type": "code", "degree": 14}, {"id": "src_adapters_embeddings_localembeddingsadapter_init", "label": ".__init__()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".__init__()", "community": 45, "community_name": "ClassificationResult", "source_file": "src/adapters/embeddings.py", "file_type": "code", "degree": 1}, {"id": "src_adapters_embeddings_localembeddingsadapter_is_available", "label": ".is_available()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".is_available()", "community": 45, "community_name": "ClassificationResult", "source_file": "src/adapters/embeddings.py", "file_type": "code", "degree": 2}, {"id": "src_adapters_embeddings_localembeddingsadapter_evaluate_similarity", "label": ".evaluate_similarity()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".evaluate_similarity()", "community": 45, "community_name": "ClassificationResult", "source_file": "src/adapters/embeddings.py", "file_type": "code", "degree": 2}, {"id": "src_adapters_embeddings_localembeddingsadapter_disambiguate", "label": ".disambiguate()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".disambiguate()", "community": 45, "community_name": "ClassificationResult", "source_file": "src/adapters/embeddings.py", "file_type": "code", "degree": 3}, {"id": "src_adapters_embeddings_rationale_1", "label": "Optional local vector embeddings adapter (Tier 2). Disabled by default.\u2026", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Optional local vector embeddings adapter (Tier 2). Disabled by default.\u2026", "community": 45, "community_name": "ClassificationResult", "source_file": "src/adapters/embeddings.py", "file_type": "rationale", "degree": 1}, {"id": "src_adapters_embeddings_rationale_15", "label": "Optional adapter for local multilingual semantic vector embeddings.", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Optional adapter for local multilingual semantic vector embeddings.", "community": 45, "community_name": "ClassificationResult", "source_file": "src/adapters/embeddings.py", "file_type": "rationale", "degree": 1}, {"id": "src_adapters_llm", "label": "llm.py", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 17.7, "font": {"size": 12, "color": "#ffffff"}, "title": "llm.py", "community": 45, "community_name": "ClassificationResult", "source_file": "src/adapters/llm.py", "file_type": "code", "degree": 8}, {"id": "src_adapters_llm_llmfallbackadapter", "label": "LLMFallbackAdapter", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 23.5, "font": {"size": 12, "color": "#ffffff"}, "title": "LLMFallbackAdapter", "community": 45, "community_name": "ClassificationResult", "source_file": "src/adapters/llm.py", "file_type": "code", "degree": 14}, {"id": "src_adapters_llm_llmfallbackadapter_init", "label": ".__init__()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".__init__()", "community": 45, "community_name": "ClassificationResult", "source_file": "src/adapters/llm.py", "file_type": "code", "degree": 1}, {"id": "src_adapters_llm_llmfallbackadapter_is_available", "label": ".is_available()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".is_available()", "community": 45, "community_name": "ClassificationResult", "source_file": "src/adapters/llm.py", "file_type": "code", "degree": 2}, {"id": "src_adapters_llm_llmfallbackadapter_evaluate_similarity", "label": ".evaluate_similarity()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".evaluate_similarity()", "community": 45, "community_name": "ClassificationResult", "source_file": "src/adapters/llm.py", "file_type": "code", "degree": 1}, {"id": "src_adapters_llm_llmfallbackadapter_disambiguate", "label": ".disambiguate()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".disambiguate()", "community": 45, "community_name": "ClassificationResult", "source_file": "src/adapters/llm.py", "file_type": "code", "degree": 4}, {"id": "src_adapters_llm_rationale_1", "label": "Optional LLM fallback adapter (Tier 3). Disabled by default. Provides fallback\u2026", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Optional LLM fallback adapter (Tier 3). Disabled by default. Provides fallback\u2026", "community": 45, "community_name": "ClassificationResult", "source_file": "src/adapters/llm.py", "file_type": "rationale", "degree": 1}, {"id": "src_adapters_llm_rationale_16", "label": "Optional adapter for LLM fallback boundary disambiguation.", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Optional adapter for LLM fallback boundary disambiguation.", "community": 45, "community_name": "ClassificationResult", "source_file": "src/adapters/llm.py", "file_type": "rationale", "degree": 1}, {"id": "src_classifier", "label": "classifier.py", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 32.3, "font": {"size": 12, "color": "#ffffff"}, "title": "classifier.py", "community": 100, "community_name": "classifier.py", "source_file": "src/classifier.py", "file_type": "code", "degree": 23}, {"id": "src_classifier_match_phrase_in_text", "label": "match_phrase_in_text()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "match_phrase_in_text()", "community": 47, "community_name": "detect_language", "source_file": "src/classifier.py", "file_type": "code", "degree": 4}, {"id": "src_classifier_count_phrase_occurrences", "label": "count_phrase_occurrences()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "count_phrase_occurrences()", "community": 47, "community_name": "detect_language", "source_file": "src/classifier.py", "file_type": "code", "degree": 4}, {"id": "src_classifier_inherenceclassifier", "label": "InherenceClassifier", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 34.2, "font": {"size": 12, "color": "#ffffff"}, "title": "InherenceClassifier", "community": 46, "community_name": "InherenceClassifier", "source_file": "src/classifier.py", "file_type": "code", "degree": 25}, {"id": "src_classifier_inherenceclassifier_init", "label": ".__init__()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".__init__()", "community": 45, "community_name": "ClassificationResult", "source_file": "src/classifier.py", "file_type": "code", "degree": 3}, {"id": "src_classifier_inherenceclassifier_classify", "label": ".classify()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 19.7, "font": {"size": 12, "color": "#ffffff"}, "title": ".classify()", "community": 48, "community_name": "test_models.py", "source_file": "src/classifier.py", "file_type": "code", "degree": 10}, {"id": "src_classifier_rationale_1", "label": "Core deterministic classification engine (Tier 1 core).", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Core deterministic classification engine (Tier 1 core).", "community": 100, "community_name": "classifier.py", "source_file": "src/classifier.py", "file_type": "rationale", "degree": 1}, {"id": "src_classifier_rationale_21", "label": "Check if a normalized phrase appears in normalized text with word boundary\u2026", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Check if a normalized phrase appears in normalized text with word boundary\u2026", "community": 47, "community_name": "detect_language", "source_file": "src/classifier.py", "file_type": "rationale", "degree": 1}, {"id": "src_classifier_rationale_34", "label": "Count occurrences of a phrase in text.", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Count occurrences of a phrase in text.", "community": 47, "community_name": "detect_language", "source_file": "src/classifier.py", "file_type": "rationale", "degree": 1}, {"id": "src_classifier_rationale_45", "label": "Tier 1 Deterministic NLP Entity Inherence Classifier.", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Tier 1 Deterministic NLP Entity Inherence Classifier.", "community": 46, "community_name": "InherenceClassifier", "source_file": "src/classifier.py", "file_type": "rationale", "degree": 1}, {"id": "src_classifier_rationale_62", "label": "Classify inherence of content against an ECP snapshot.", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Classify inherence of content against an ECP snapshot.", "community": 48, "community_name": "test_models.py", "source_file": "src/classifier.py", "file_type": "rationale", "degree": 1}, {"id": "src_language", "label": "language.py", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 15.8, "font": {"size": 12, "color": "#ffffff"}, "title": "language.py", "community": 47, "community_name": "detect_language", "source_file": "src/language.py", "file_type": "code", "degree": 6}, {"id": "src_language_normalize_text", "label": "normalize_text()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 18.7, "font": {"size": 12, "color": "#ffffff"}, "title": "normalize_text()", "community": 47, "community_name": "detect_language", "source_file": "src/language.py", "file_type": "code", "degree": 9}, {"id": "src_language_extract_words", "label": "extract_words()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "extract_words()", "community": 47, "community_name": "detect_language", "source_file": "src/language.py", "file_type": "code", "degree": 3}, {"id": "src_language_detect_language", "label": "detect_language()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 23.5, "font": {"size": 12, "color": "#ffffff"}, "title": "detect_language()", "community": 47, "community_name": "detect_language", "source_file": "src/language.py", "file_type": "code", "degree": 14}, {"id": "src_language_rationale_1", "label": "Lightweight multilingual language detection and text normalization.", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Lightweight multilingual language detection and text normalization.", "community": 47, "community_name": "detect_language", "source_file": "src/language.py", "file_type": "rationale", "degree": 1}, {"id": "src_language_rationale_71", "label": "Normalize text by converting to lowercase and stripping combining diacritical\u2026", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Normalize text by converting to lowercase and stripping combining diacritical\u2026", "community": 47, "community_name": "detect_language", "source_file": "src/language.py", "file_type": "rationale", "degree": 1}, {"id": "src_language_rationale_81", "label": "Tokenize text into lowercase alphanumeric words.", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Tokenize text into lowercase alphanumeric words.", "community": 47, "community_name": "detect_language", "source_file": "src/language.py", "file_type": "rationale", "degree": 1}, {"id": "src_language_rationale_86", "label": "Detect the ISO-639-1 language code of text among supported languages (pt, en,\u2026", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Detect the ISO-639-1 language code of text among supported languages (pt, en,\u2026", "community": 47, "community_name": "detect_language", "source_file": "src/language.py", "file_type": "rationale", "degree": 1}, {"id": "src_models", "label": "models.py", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 28.4, "font": {"size": 12, "color": "#ffffff"}, "title": "models.py", "community": 100, "community_name": "classifier.py", "source_file": "src/models.py", "file_type": "code", "degree": 19}, {"id": "src_models_decisioncategory", "label": "DecisionCategory", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 27.4, "font": {"size": 12, "color": "#ffffff"}, "title": "DecisionCategory", "community": 46, "community_name": "InherenceClassifier", "source_file": "src/models.py", "file_type": "code", "degree": 18}, {"id": "str", "label": "str", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "str", "community": 100, "community_name": "classifier.py", "source_file": "", "file_type": "code", "degree": 2}, {"id": "enum", "label": "Enum", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Enum", "community": 100, "community_name": "classifier.py", "source_file": "", "file_type": "code", "degree": 3}, {"id": "src_models_errorcode", "label": "ErrorCode", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 18.7, "font": {"size": 12, "color": "#ffffff"}, "title": "ErrorCode", "community": 100, "community_name": "classifier.py", "source_file": "src/models.py", "file_type": "code", "degree": 9}, {"id": "src_models_relatedentity", "label": "RelatedEntity", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 17.7, "font": {"size": 12, "color": "#ffffff"}, "title": "RelatedEntity", "community": 46, "community_name": "InherenceClassifier", "source_file": "src/models.py", "file_type": "code", "degree": 8}, {"id": "src_models_relatedentity_from_dict", "label": ".from_dict()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".from_dict()", "community": 101, "community_name": "ECPSnapshot", "source_file": "src/models.py", "file_type": "code", "degree": 3}, {"id": "src_models_py_any", "label": "Any", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Any", "community": 101, "community_name": "ECPSnapshot", "source_file": "", "file_type": "code", "degree": 4}, {"id": "src_models_ecpsnapshot", "label": "ECPSnapshot", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 40.0, "font": {"size": 12, "color": "#ffffff"}, "title": "ECPSnapshot", "community": 101, "community_name": "ECPSnapshot", "source_file": "src/models.py", "file_type": "code", "degree": 31}, {"id": "src_models_ecpsnapshot_from_dict", "label": ".from_dict()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 16.8, "font": {"size": 12, "color": "#ffffff"}, "title": ".from_dict()", "community": 101, "community_name": "ECPSnapshot", "source_file": "src/models.py", "file_type": "code", "degree": 7}, {"id": "src_models_ecpsnapshot_from_json_str", "label": ".from_json_str()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".from_json_str()", "community": 101, "community_name": "ECPSnapshot", "source_file": "src/models.py", "file_type": "code", "degree": 4}, {"id": "src_models_matchedgraphentity", "label": "MatchedGraphEntity", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "MatchedGraphEntity", "community": 100, "community_name": "classifier.py", "source_file": "src/models.py", "file_type": "code", "degree": 1}, {"id": "src_models_classificationresult", "label": "ClassificationResult", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 26.5, "font": {"size": 12, "color": "#ffffff"}, "title": "ClassificationResult", "community": 45, "community_name": "ClassificationResult", "source_file": "src/models.py", "file_type": "code", "degree": 17}, {"id": "src_models_classificationresult_to_dict", "label": ".to_dict()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".to_dict()", "community": 101, "community_name": "ECPSnapshot", "source_file": "src/models.py", "file_type": "code", "degree": 2}, {"id": "src_models_classificationresult_to_json_str", "label": ".to_json_str()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".to_json_str()", "community": 100, "community_name": "classifier.py", "source_file": "src/models.py", "file_type": "code", "degree": 2}, {"id": "src_models_classificationerror", "label": "ClassificationError", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 17.7, "font": {"size": 12, "color": "#ffffff"}, "title": "ClassificationError", "community": 100, "community_name": "classifier.py", "source_file": "src/models.py", "file_type": "code", "degree": 8}, {"id": "src_models_classificationerror_to_dict", "label": ".to_dict()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".to_dict()", "community": 100, "community_name": "classifier.py", "source_file": "src/models.py", "file_type": "code", "degree": 4}, {"id": "src_models_classificationerror_to_json_str", "label": ".to_json_str()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".to_json_str()", "community": 100, "community_name": "classifier.py", "source_file": "src/models.py", "file_type": "code", "degree": 2}, {"id": "src_models_rationale_1", "label": "Data models and validation schemas for Multilingual NLP Entity Inherence\u2026", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Data models and validation schemas for Multilingual NLP Entity Inherence\u2026", "community": 100, "community_name": "classifier.py", "source_file": "src/models.py", "file_type": "rationale", "degree": 1}, {"id": "src_parser", "label": "parser.py", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 15.8, "font": {"size": 12, "color": "#ffffff"}, "title": "parser.py", "community": 48, "community_name": "test_models.py", "source_file": "src/parser.py", "file_type": "code", "degree": 6}, {"id": "src_parser_strip_markdown", "label": "strip_markdown()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 16.8, "font": {"size": 12, "color": "#ffffff"}, "title": "strip_markdown()", "community": 48, "community_name": "test_models.py", "source_file": "src/parser.py", "file_type": "code", "degree": 7}, {"id": "src_parser_extract_sentences", "label": "extract_sentences()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "extract_sentences()", "community": 48, "community_name": "test_models.py", "source_file": "src/parser.py", "file_type": "code", "degree": 4}, {"id": "src_parser_extract_evidence_snippets", "label": "extract_evidence_snippets()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 17.7, "font": {"size": 12, "color": "#ffffff"}, "title": "extract_evidence_snippets()", "community": 48, "community_name": "test_models.py", "source_file": "src/parser.py", "file_type": "code", "degree": 8}, {"id": "src_parser_rationale_1", "label": "Markdown content parser and excerpt extraction utilities.", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Markdown content parser and excerpt extraction utilities.", "community": 48, "community_name": "test_models.py", "source_file": "src/parser.py", "file_type": "rationale", "degree": 1}, {"id": "src_parser_rationale_10", "label": "Remove markdown syntax markers (headers, bold, italics, links, code blocks) to\u2026", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Remove markdown syntax markers (headers, bold, italics, links, code blocks) to\u2026", "community": 48, "community_name": "test_models.py", "source_file": "src/parser.py", "file_type": "rationale", "degree": 1}, {"id": "src_parser_rationale_44", "label": "Split text into individual sentences.", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Split text into individual sentences.", "community": 48, "community_name": "test_models.py", "source_file": "src/parser.py", "file_type": "rationale", "degree": 1}, {"id": "src_parser_rationale_52", "label": "Extract relevant sentence excerpts from Markdown text that contain any of the\u2026", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Extract relevant sentence excerpts from Markdown text that contain any of the\u2026", "community": 48, "community_name": "test_models.py", "source_file": "src/parser.py", "file_type": "rationale", "degree": 1}, {"id": "tests_init", "label": "tests/__init__.py", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "tests/__init__.py", "community": 78, "community_name": "tests/__init__.py", "source_file": "tests/__init__.py", "file_type": "code", "degree": 1}, {"id": "tests_init_rationale_1", "label": "Test package for Multilingual NLP Entity Inherence Classifier.", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Test package for Multilingual NLP Entity Inherence Classifier.", "community": 78, "community_name": "tests/__init__.py", "source_file": "tests/__init__.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_adapters", "label": "test_adapters.py", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 21.6, "font": {"size": 12, "color": "#ffffff"}, "title": "test_adapters.py", "community": 45, "community_name": "ClassificationResult", "source_file": "tests/test_adapters.py", "file_type": "code", "degree": 12}, {"id": "tests_test_adapters_test_embeddings_adapter_interface", "label": "test_embeddings_adapter_interface()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_embeddings_adapter_interface()", "community": 45, "community_name": "ClassificationResult", "source_file": "tests/test_adapters.py", "file_type": "code", "degree": 2}, {"id": "tests_test_adapters_test_llm_adapter_interface", "label": "test_llm_adapter_interface()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_llm_adapter_interface()", "community": 45, "community_name": "ClassificationResult", "source_file": "tests/test_adapters.py", "file_type": "code", "degree": 2}, {"id": "tests_test_adapters_test_classifier_with_adapter_flags", "label": "test_classifier_with_adapter_flags()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_classifier_with_adapter_flags()", "community": 45, "community_name": "ClassificationResult", "source_file": "tests/test_adapters.py", "file_type": "code", "degree": 3}, {"id": "tests_test_adapters_rationale_1", "label": "Unit tests for optional adapter interfaces (Tier 2 / Tier 3).", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Unit tests for optional adapter interfaces (Tier 2 / Tier 3).", "community": 45, "community_name": "ClassificationResult", "source_file": "tests/test_adapters.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_adversarial", "label": "test_adversarial.py", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 22.6, "font": {"size": 12, "color": "#ffffff"}, "title": "test_adversarial.py", "community": 46, "community_name": "InherenceClassifier", "source_file": "tests/test_adversarial.py", "file_type": "code", "degree": 13}, {"id": "tests_test_adversarial_test_adversarial_sao_paulo_city_vs_fc", "label": "test_adversarial_sao_paulo_city_vs_fc()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 14.8, "font": {"size": 12, "color": "#ffffff"}, "title": "test_adversarial_sao_paulo_city_vs_fc()", "community": 46, "community_name": "InherenceClassifier", "source_file": "tests/test_adversarial.py", "file_type": "code", "degree": 5}, {"id": "tests_test_adversarial_test_adversarial_apple_fruit_recipe", "label": "test_adversarial_apple_fruit_recipe()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 14.8, "font": {"size": 12, "color": "#ffffff"}, "title": "test_adversarial_apple_fruit_recipe()", "community": 46, "community_name": "InherenceClassifier", "source_file": "tests/test_adversarial.py", "file_type": "code", "degree": 5}, {"id": "tests_test_adversarial_test_adversarial_related_entity_without_scope_context", "label": "test_adversarial_related_entity_without_scope_context()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 15.8, "font": {"size": 12, "color": "#ffffff"}, "title": "test_adversarial_related_entity_without_scope_context()", "community": 46, "community_name": "InherenceClassifier", "source_file": "tests/test_adversarial.py", "file_type": "code", "degree": 6}, {"id": "tests_test_adversarial_test_adversarial_subprocess_cli_success_stdout", "label": "test_adversarial_subprocess_cli_success_stdout()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_adversarial_subprocess_cli_success_stdout()", "community": 46, "community_name": "InherenceClassifier", "source_file": "tests/test_adversarial.py", "file_type": "code", "degree": 2}, {"id": "tests_test_adversarial_test_adversarial_subprocess_cli_empty_content", "label": "test_adversarial_subprocess_cli_empty_content()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_adversarial_subprocess_cli_empty_content()", "community": 46, "community_name": "InherenceClassifier", "source_file": "tests/test_adversarial.py", "file_type": "code", "degree": 2}, {"id": "tests_test_adversarial_test_adversarial_subprocess_cli_missing_required_field", "label": "test_adversarial_subprocess_cli_missing_required_field()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_adversarial_subprocess_cli_missing_required_field()", "community": 46, "community_name": "InherenceClassifier", "source_file": "tests/test_adversarial.py", "file_type": "code", "degree": 2}, {"id": "tests_test_adversarial_test_adversarial_subprocess_cli_corrupted_json", "label": "test_adversarial_subprocess_cli_corrupted_json()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_adversarial_subprocess_cli_corrupted_json()", "community": 46, "community_name": "InherenceClassifier", "source_file": "tests/test_adversarial.py", "file_type": "code", "degree": 2}, {"id": "tests_test_adversarial_rationale_1", "label": "Adversarial and robustness test suite for Multilingual NLP Entity Inherence\u2026", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Adversarial and robustness test suite for Multilingual NLP Entity Inherence\u2026", "community": 46, "community_name": "InherenceClassifier", "source_file": "tests/test_adversarial.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_adversarial_rationale_16", "label": "Content about city/state governance of S\u00e3o Paulo against ECP for S\u00e3o Paulo FC.", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Content about city/state governance of S\u00e3o Paulo against ECP for S\u00e3o Paulo FC.", "community": 46, "community_name": "InherenceClassifier", "source_file": "tests/test_adversarial.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_adversarial_rationale_41", "label": "Content about apple fruit/culinary recipe against Apple Inc. tech entity.", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Content about apple fruit/culinary recipe against Apple Inc. tech entity.", "community": 46, "community_name": "InherenceClassifier", "source_file": "tests/test_adversarial.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_adversarial_rationale_64", "label": "High-weight related entity mentioned in passing without required domain anchors.", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "High-weight related entity mentioned in passing without required domain anchors.", "community": 46, "community_name": "InherenceClassifier", "source_file": "tests/test_adversarial.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_adversarial_rationale_99", "label": "Run CLI via subprocess without --output and verify stdout is pure parseable\u2026", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Run CLI via subprocess without --output and verify stdout is pure parseable\u2026", "community": 46, "community_name": "InherenceClassifier", "source_file": "tests/test_adversarial.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_adversarial_rationale_134", "label": "Run CLI via subprocess with empty content and verify error code and exit code.", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Run CLI via subprocess with empty content and verify error code and exit code.", "community": 46, "community_name": "InherenceClassifier", "source_file": "tests/test_adversarial.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_adversarial_rationale_165", "label": "Run CLI via subprocess with missing target_name and verify error payload.", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Run CLI via subprocess with missing target_name and verify error payload.", "community": 46, "community_name": "InherenceClassifier", "source_file": "tests/test_adversarial.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_adversarial_rationale_194", "label": "Run CLI via subprocess with corrupted JSON and verify error payload.", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Run CLI via subprocess with corrupted JSON and verify error payload.", "community": 46, "community_name": "InherenceClassifier", "source_file": "tests/test_adversarial.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_benchmark_24", "label": "test_benchmark_24.py", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 17.7, "font": {"size": 12, "color": "#ffffff"}, "title": "test_benchmark_24.py", "community": 101, "community_name": "ECPSnapshot", "source_file": "tests/test_benchmark_24.py", "file_type": "code", "degree": 8}, {"id": "tests_test_benchmark_24_py_fixture", "label": "fixture", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "fixture", "community": 101, "community_name": "ECPSnapshot", "source_file": "", "file_type": "code", "degree": 1}, {"id": "tests_test_benchmark_24_classifier", "label": "classifier()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "classifier()", "community": 101, "community_name": "ECPSnapshot", "source_file": "tests/test_benchmark_24.py", "file_type": "code", "degree": 3}, {"id": "parametrize", "label": "parametrize", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "parametrize", "community": 101, "community_name": "ECPSnapshot", "source_file": "", "file_type": "code", "degree": 1}, {"id": "tests_test_benchmark_24_test_benchmark_case", "label": "test_benchmark_case()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_benchmark_case()", "community": 101, "community_name": "ECPSnapshot", "source_file": "tests/test_benchmark_24.py", "file_type": "code", "degree": 4}, {"id": "tests_test_benchmark_24_rationale_1", "label": "Controlled 24-case benchmark suite for Multilingual NLP Entity Inherence\u2026", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Controlled 24-case benchmark suite for Multilingual NLP Entity Inherence\u2026", "community": 101, "community_name": "ECPSnapshot", "source_file": "tests/test_benchmark_24.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_classifier", "label": "test_classifier.py", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 22.6, "font": {"size": 12, "color": "#ffffff"}, "title": "test_classifier.py", "community": 46, "community_name": "InherenceClassifier", "source_file": "tests/test_classifier.py", "file_type": "code", "degree": 13}, {"id": "tests_test_classifier_py_fixture", "label": "fixture", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "fixture", "community": 46, "community_name": "InherenceClassifier", "source_file": "", "file_type": "code", "degree": 1}, {"id": "tests_test_classifier_petrobras_ecp", "label": "petrobras_ecp()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "petrobras_ecp()", "community": 46, "community_name": "InherenceClassifier", "source_file": "tests/test_classifier.py", "file_type": "code", "degree": 4}, {"id": "tests_test_classifier_test_direct_inherent", "label": "test_direct_inherent()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_direct_inherent()", "community": 46, "community_name": "InherenceClassifier", "source_file": "tests/test_classifier.py", "file_type": "code", "degree": 3}, {"id": "tests_test_classifier_test_contextual_inherent", "label": "test_contextual_inherent()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_contextual_inherent()", "community": 46, "community_name": "InherenceClassifier", "source_file": "tests/test_classifier.py", "file_type": "code", "degree": 3}, {"id": "tests_test_classifier_test_tangential_inherent", "label": "test_tangential_inherent()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_tangential_inherent()", "community": 46, "community_name": "InherenceClassifier", "source_file": "tests/test_classifier.py", "file_type": "code", "degree": 3}, {"id": "tests_test_classifier_test_not_related", "label": "test_not_related()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_not_related()", "community": 46, "community_name": "InherenceClassifier", "source_file": "tests/test_classifier.py", "file_type": "code", "degree": 3}, {"id": "tests_test_classifier_test_negative_anchor_suppression", "label": "test_negative_anchor_suppression()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_negative_anchor_suppression()", "community": 46, "community_name": "InherenceClassifier", "source_file": "tests/test_classifier.py", "file_type": "code", "degree": 3}, {"id": "tests_test_classifier_rationale_1", "label": "Unit tests for deterministic classification decision logic.", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Unit tests for deterministic classification decision logic.", "community": 46, "community_name": "InherenceClassifier", "source_file": "tests/test_classifier.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_cli", "label": "test_cli.py", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 17.7, "font": {"size": 12, "color": "#ffffff"}, "title": "test_cli.py", "community": 103, "community_name": "main", "source_file": "tests/test_cli.py", "file_type": "code", "degree": 8}, {"id": "tests_test_cli_test_cli_success_stdout", "label": "test_cli_success_stdout()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_cli_success_stdout()", "community": 103, "community_name": "main", "source_file": "tests/test_cli.py", "file_type": "code", "degree": 2}, {"id": "tests_test_cli_test_cli_output_file", "label": "test_cli_output_file()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_cli_output_file()", "community": 103, "community_name": "main", "source_file": "tests/test_cli.py", "file_type": "code", "degree": 2}, {"id": "tests_test_cli_test_cli_missing_ecp_file", "label": "test_cli_missing_ecp_file()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_cli_missing_ecp_file()", "community": 103, "community_name": "main", "source_file": "tests/test_cli.py", "file_type": "code", "degree": 2}, {"id": "tests_test_cli_test_cli_empty_content_file", "label": "test_cli_empty_content_file()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_cli_empty_content_file()", "community": 103, "community_name": "main", "source_file": "tests/test_cli.py", "file_type": "code", "degree": 2}, {"id": "tests_test_cli_test_cli_missing_required_ecp_field", "label": "test_cli_missing_required_ecp_field()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_cli_missing_required_ecp_field()", "community": 103, "community_name": "main", "source_file": "tests/test_cli.py", "file_type": "code", "degree": 2}, {"id": "tests_test_cli_rationale_1", "label": "CLI execution tests covering flags, arguments, stdout, and error handling.", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "CLI execution tests covering flags, arguments, stdout, and error handling.", "community": 103, "community_name": "main", "source_file": "tests/test_cli.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_extract_google_news", "label": "test_extract_google_news.py", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 37.1, "font": {"size": 12, "color": "#ffffff"}, "title": "test_extract_google_news.py", "community": 84, "community_name": "test_extract_google_news.py", "source_file": "tests/test_extract_google_news.py", "file_type": "code", "degree": 28}, {"id": "tests_test_extract_google_news_py_fixture", "label": "fixture", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "fixture", "community": 99, "community_name": "sample_rss_xml", "source_file": "", "file_type": "code", "degree": 1}, {"id": "tests_test_extract_google_news_sample_rss_xml", "label": "sample_rss_xml()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "sample_rss_xml()", "community": 99, "community_name": "sample_rss_xml", "source_file": "tests/test_extract_google_news.py", "file_type": "code", "degree": 3}, {"id": "tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "label": "test_get_hl_gl_ceid_default_mappings()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_get_hl_gl_ceid_default_mappings()", "community": 80, "community_name": "get_hl_gl_ceid", "source_file": "tests/test_extract_google_news.py", "file_type": "code", "degree": 3}, {"id": "tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", "label": "test_get_hl_gl_ceid_with_custom_locale()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_get_hl_gl_ceid_with_custom_locale()", "community": 80, "community_name": "get_hl_gl_ceid", "source_file": "tests/test_extract_google_news.py", "file_type": "code", "degree": 3}, {"id": "tests_test_extract_google_news_test_get_hl_gl_ceid_dynamic_fallback", "label": "test_get_hl_gl_ceid_dynamic_fallback()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_get_hl_gl_ceid_dynamic_fallback()", "community": 80, "community_name": "get_hl_gl_ceid", "source_file": "tests/test_extract_google_news.py", "file_type": "code", "degree": 3}, {"id": "tests_test_extract_google_news_test_search_query_validation", "label": "test_search_query_validation()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_search_query_validation()", "community": 90, "community_name": "SearchQuery", "source_file": "tests/test_extract_google_news.py", "file_type": "code", "degree": 3}, {"id": "tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", "label": "test_parse_google_news_rss_with_fixture()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_parse_google_news_rss_with_fixture()", "community": 84, "community_name": "test_extract_google_news.py", "source_file": "tests/test_extract_google_news.py", "file_type": "code", "degree": 3}, {"id": "tests_test_extract_google_news_test_resolve_article_url_fallback", "label": "test_resolve_article_url_fallback()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_resolve_article_url_fallback()", "community": 84, "community_name": "test_extract_google_news.py", "source_file": "tests/test_extract_google_news.py", "file_type": "code", "degree": 3}, {"id": "tests_test_extract_google_news_test_resolve_article_url_success", "label": "test_resolve_article_url_success()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_resolve_article_url_success()", "community": 84, "community_name": "test_extract_google_news.py", "source_file": "tests/test_extract_google_news.py", "file_type": "code", "degree": 3}, {"id": "tests_test_extract_google_news_test_resolve_articles_urls_batch", "label": "test_resolve_articles_urls_batch()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_resolve_articles_urls_batch()", "community": 82, "community_name": "extract_google_news.py", "source_file": "tests/test_extract_google_news.py", "file_type": "code", "degree": 4}, {"id": "tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "label": "test_extract_google_news_orchestration_mocked()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 14.8, "font": {"size": 12, "color": "#ffffff"}, "title": "test_extract_google_news_orchestration_mocked()", "community": 90, "community_name": "SearchQuery", "source_file": "tests/test_extract_google_news.py", "file_type": "code", "degree": 5}, {"id": "tests_test_extract_google_news_test_cli_execution_stdout", "label": "test_cli_execution_stdout()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_cli_execution_stdout()", "community": 40, "community_name": "main", "source_file": "tests/test_extract_google_news.py", "file_type": "code", "degree": 4}, {"id": "capturefixture", "label": "CaptureFixture", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "CaptureFixture", "community": 40, "community_name": "main", "source_file": "", "file_type": "code", "degree": 3}, {"id": "tests_test_extract_google_news_test_cli_execution_file_output", "label": "test_cli_execution_file_output()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_cli_execution_file_output()", "community": 40, "community_name": "main", "source_file": "tests/test_extract_google_news.py", "file_type": "code", "degree": 4}, {"id": "path", "label": "Path", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 14.8, "font": {"size": 12, "color": "#ffffff"}, "title": "Path", "community": 40, "community_name": "main", "source_file": "", "file_type": "code", "degree": 5}, {"id": "tests_test_extract_google_news_test_cli_empty_query_error", "label": "test_cli_empty_query_error()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_cli_empty_query_error()", "community": 40, "community_name": "main", "source_file": "tests/test_extract_google_news.py", "file_type": "code", "degree": 4}, {"id": "tests_test_extract_google_news_test_cli_network_error_handling", "label": "test_cli_network_error_handling()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_cli_network_error_handling()", "community": 40, "community_name": "main", "source_file": "tests/test_extract_google_news.py", "file_type": "code", "degree": 4}, {"id": "tests_test_extract_google_news_test_e2e_resolve_real_google_news_url", "label": "test_e2e_resolve_real_google_news_url()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_e2e_resolve_real_google_news_url()", "community": 84, "community_name": "test_extract_google_news.py", "source_file": "tests/test_extract_google_news.py", "file_type": "code", "degree": 3}, {"id": "tests_test_extract_google_news_test_e2e_extract_google_news_live_pipeline", "label": "test_e2e_extract_google_news_live_pipeline()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 14.8, "font": {"size": 12, "color": "#ffffff"}, "title": "test_e2e_extract_google_news_live_pipeline()", "community": 83, "community_name": "ExtractionResult", "source_file": "tests/test_extract_google_news.py", "file_type": "code", "degree": 5}, {"id": "tests_test_extract_google_news_test_e2e_cli_live_file_output", "label": "test_e2e_cli_live_file_output()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_e2e_cli_live_file_output()", "community": 40, "community_name": "main", "source_file": "tests/test_extract_google_news.py", "file_type": "code", "degree": 4}, {"id": "tests_test_extract_google_news_rationale_1", "label": "Testes unit\u00e1rios e de integra\u00e7\u00e3o para o Extrator de Manchetes do Google News.\u2026", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Testes unit\u00e1rios e de integra\u00e7\u00e3o para o Extrator de Manchetes do Google News.\u2026", "community": 84, "community_name": "test_extract_google_news.py", "source_file": "tests/test_extract_google_news.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_extract_google_news_rationale_33", "label": "Fixture que fornece o conte\u00fado do XML de exemplo para testes offline.", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Fixture que fornece o conte\u00fado do XML de exemplo para testes offline.", "community": 99, "community_name": "sample_rss_xml", "source_file": "tests/test_extract_google_news.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_extract_google_news_rationale_38", "label": "Valida o mapeamento padr\u00e3o de idiomas para pares (hl, gl, ceid).", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Valida o mapeamento padr\u00e3o de idiomas para pares (hl, gl, ceid).", "community": 80, "community_name": "get_hl_gl_ceid", "source_file": "tests/test_extract_google_news.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_extract_google_news_rationale_61", "label": "Valida a sobrescrita geogr\u00e1fica quando o argumento locale \u00e9 especificado.", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Valida a sobrescrita geogr\u00e1fica quando o argumento locale \u00e9 especificado.", "community": 80, "community_name": "get_hl_gl_ceid", "source_file": "tests/test_extract_google_news.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_extract_google_news_rationale_79", "label": "Valida fallback din\u00e2mico para idiomas regionais n\u00e3o listados explicitamente.", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Valida fallback din\u00e2mico para idiomas regionais n\u00e3o listados explicitamente.", "community": 80, "community_name": "get_hl_gl_ceid", "source_file": "tests/test_extract_google_news.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_extract_google_news_rationale_87", "label": "Valida as regras de neg\u00f3cio e limites de SearchQuery.", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Valida as regras de neg\u00f3cio e limites de SearchQuery.", "community": 90, "community_name": "SearchQuery", "source_file": "tests/test_extract_google_news.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_extract_google_news_rationale_112", "label": "Valida o parsing do feed RSS, higieniza\u00e7\u00e3o de tags HTML e deduplica\u00e7\u00e3o.", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Valida o parsing do feed RSS, higieniza\u00e7\u00e3o de tags HTML e deduplica\u00e7\u00e3o.", "community": 84, "community_name": "test_extract_google_news.py", "source_file": "tests/test_extract_google_news.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_extract_google_news_rationale_139", "label": "Valida fallback gracioso de URL quando n\u00e3o \u00e9 link do Google News ou em erro.", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Valida fallback gracioso de URL quando n\u00e3o \u00e9 link do Google News ou em erro.", "community": 84, "community_name": "test_extract_google_news.py", "source_file": "tests/test_extract_google_news.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_extract_google_news_rationale_151", "label": "Valida resolu\u00e7\u00e3o bem-sucedida de URL do Google News para o portal destino.", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Valida resolu\u00e7\u00e3o bem-sucedida de URL do Google News para o portal destino.", "community": 84, "community_name": "test_extract_google_news.py", "source_file": "tests/test_extract_google_news.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_extract_google_news_rationale_164", "label": "Valida a resolu\u00e7\u00e3o concorrente em lote de uma lista de NewsArticle.", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Valida a resolu\u00e7\u00e3o concorrente em lote de uma lista de NewsArticle.", "community": 82, "community_name": "extract_google_news.py", "source_file": "tests/test_extract_google_news.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_extract_google_news_rationale_189", "label": "Valida a consolida\u00e7\u00e3o do ExtractionResult a partir da busca mockada com URLs\u2026", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Valida a consolida\u00e7\u00e3o do ExtractionResult a partir da busca mockada com URLs\u2026", "community": 90, "community_name": "SearchQuery", "source_file": "tests/test_extract_google_news.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_extract_google_news_rationale_218", "label": "Valida execu\u00e7\u00e3o padr\u00e3o do CLI com sa\u00edda JSON no stdout.", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Valida execu\u00e7\u00e3o padr\u00e3o do CLI com sa\u00edda JSON no stdout.", "community": 40, "community_name": "main", "source_file": "tests/test_extract_google_news.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_extract_google_news_rationale_243", "label": "Valida grava\u00e7\u00e3o em arquivo com cria\u00e7\u00e3o autom\u00e1tica de diret\u00f3rios pais.", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Valida grava\u00e7\u00e3o em arquivo com cria\u00e7\u00e3o autom\u00e1tica de diret\u00f3rios pais.", "community": 40, "community_name": "main", "source_file": "tests/test_extract_google_news.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_extract_google_news_rationale_264", "label": "Valida tratamento de erro e c\u00f3digo de sa\u00edda 1 para par\u00e2metro vazio.", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Valida tratamento de erro e c\u00f3digo de sa\u00edda 1 para par\u00e2metro vazio.", "community": 40, "community_name": "main", "source_file": "tests/test_extract_google_news.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_extract_google_news_rationale_273", "label": "Valida tratamento de erro e c\u00f3digo de sa\u00edda 2 para falhas de rede.", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Valida tratamento de erro e c\u00f3digo de sa\u00edda 2 para falhas de rede.", "community": 40, "community_name": "main", "source_file": "tests/test_extract_google_news.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_extract_google_news_rationale_292", "label": "Valida E2E que o decodificador resolve uma URL real do Google News para o\u2026", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Valida E2E que o decodificador resolve uma URL real do Google News para o\u2026", "community": 84, "community_name": "test_extract_google_news.py", "source_file": "tests/test_extract_google_news.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_extract_google_news_rationale_313", "label": "Valida E2E o fluxo completo de busca, parsing e resolu\u00e7\u00e3o de URLs reais ao vivo.", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Valida E2E o fluxo completo de busca, parsing e resolu\u00e7\u00e3o de URLs reais ao vivo.", "community": 83, "community_name": "ExtractionResult", "source_file": "tests/test_extract_google_news.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_extract_google_news_rationale_329", "label": "Valida E2E a execu\u00e7\u00e3o do CLI com sa\u00edda real em arquivo e URLs decodificadas.", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Valida E2E a execu\u00e7\u00e3o do CLI com sa\u00edda real em arquivo e URLs decodificadas.", "community": 40, "community_name": "main", "source_file": "tests/test_extract_google_news.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_language", "label": "test_language.py", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 21.6, "font": {"size": 12, "color": "#ffffff"}, "title": "test_language.py", "community": 47, "community_name": "detect_language", "source_file": "tests/test_language.py", "file_type": "code", "degree": 12}, {"id": "tests_test_language_test_normalize_text", "label": "test_normalize_text()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_normalize_text()", "community": 47, "community_name": "detect_language", "source_file": "tests/test_language.py", "file_type": "code", "degree": 2}, {"id": "tests_test_language_test_detect_portuguese", "label": "test_detect_portuguese()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_detect_portuguese()", "community": 47, "community_name": "detect_language", "source_file": "tests/test_language.py", "file_type": "code", "degree": 2}, {"id": "tests_test_language_test_detect_english", "label": "test_detect_english()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_detect_english()", "community": 47, "community_name": "detect_language", "source_file": "tests/test_language.py", "file_type": "code", "degree": 2}, {"id": "tests_test_language_test_detect_spanish", "label": "test_detect_spanish()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_detect_spanish()", "community": 47, "community_name": "detect_language", "source_file": "tests/test_language.py", "file_type": "code", "degree": 2}, {"id": "tests_test_language_test_detect_german", "label": "test_detect_german()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_detect_german()", "community": 47, "community_name": "detect_language", "source_file": "tests/test_language.py", "file_type": "code", "degree": 2}, {"id": "tests_test_language_test_detect_italian", "label": "test_detect_italian()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_detect_italian()", "community": 47, "community_name": "detect_language", "source_file": "tests/test_language.py", "file_type": "code", "degree": 2}, {"id": "tests_test_language_test_detect_french", "label": "test_detect_french()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_detect_french()", "community": 47, "community_name": "detect_language", "source_file": "tests/test_language.py", "file_type": "code", "degree": 2}, {"id": "tests_test_language_test_empty_language", "label": "test_empty_language()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_empty_language()", "community": 47, "community_name": "detect_language", "source_file": "tests/test_language.py", "file_type": "code", "degree": 2}, {"id": "tests_test_language_rationale_1", "label": "Unit tests for language detection and text normalization.", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Unit tests for language detection and text normalization.", "community": 47, "community_name": "detect_language", "source_file": "tests/test_language.py", "file_type": "rationale", "degree": 1}, {"id": "tests_test_models", "label": "test_models.py", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 28.4, "font": {"size": 12, "color": "#ffffff"}, "title": "test_models.py", "community": 48, "community_name": "test_models.py", "source_file": "tests/test_models.py", "file_type": "code", "degree": 19}, {"id": "tests_test_models_test_ecp_snapshot_valid", "label": "test_ecp_snapshot_valid()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_ecp_snapshot_valid()", "community": 101, "community_name": "ECPSnapshot", "source_file": "tests/test_models.py", "file_type": "code", "degree": 3}, {"id": "tests_test_models_test_ecp_snapshot_defaults", "label": "test_ecp_snapshot_defaults()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_ecp_snapshot_defaults()", "community": 101, "community_name": "ECPSnapshot", "source_file": "tests/test_models.py", "file_type": "code", "degree": 3}, {"id": "tests_test_models_test_ecp_snapshot_missing_required", "label": "test_ecp_snapshot_missing_required()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_ecp_snapshot_missing_required()", "community": 101, "community_name": "ECPSnapshot", "source_file": "tests/test_models.py", "file_type": "code", "degree": 3}, {"id": "tests_test_models_test_classification_result_serialization", "label": "test_classification_result_serialization()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_classification_result_serialization()", "community": 48, "community_name": "test_models.py", "source_file": "tests/test_models.py", "file_type": "code", "degree": 3}, {"id": "tests_test_models_test_classification_error_serialization", "label": "test_classification_error_serialization()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_classification_error_serialization()", "community": 100, "community_name": "classifier.py", "source_file": "tests/test_models.py", "file_type": "code", "degree": 3}, {"id": "tests_test_models_test_parser_strip_markdown", "label": "test_parser_strip_markdown()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_parser_strip_markdown()", "community": 48, "community_name": "test_models.py", "source_file": "tests/test_models.py", "file_type": "code", "degree": 2}, {"id": "tests_test_models_test_extract_evidence_snippets", "label": "test_extract_evidence_snippets()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_extract_evidence_snippets()", "community": 48, "community_name": "test_models.py", "source_file": "tests/test_models.py", "file_type": "code", "degree": 2}, {"id": "tests_test_models_rationale_1", "label": "Unit tests for ECP models, schema validation, and structured error handling.", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Unit tests for ECP models, schema validation, and structured error handling.", "community": 48, "community_name": "test_models.py", "source_file": "tests/test_models.py", "file_type": "rationale", "degree": 1}, {"id": "agents_rules_graphify", "label": "rules/graphify.md", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "rules/graphify.md", "community": 7, "community_name": "Graphify Rules", "source_file": ".agents/rules/graphify.md", "file_type": "document", "degree": 1}, {"id": "agents_rules_graphify_graphify", "label": "graphify", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "graphify", "community": 7, "community_name": "Graphify Rules", "source_file": ".agents/rules/graphify.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill", "label": "graphify/SKILL.md", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "graphify/SKILL.md", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill_graphify", "label": "/graphify", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 19.7, "font": {"size": 12, "color": "#ffffff"}, "title": "/graphify", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 10}, {"id": "agents_skills_graphify_skill_usage", "label": "Usage", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Usage", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill_what_graphify_is_for", "label": "What graphify is for", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "What graphify is for", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill_what_you_must_do_when_invoked", "label": "What You Must Do When Invoked", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 21.6, "font": {"size": 12, "color": "#ffffff"}, "title": "What You Must Do When Invoked", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 12}, {"id": "agents_skills_graphify_skill_step_0_github_repos_and_multi_path_merge_only_if_a_url_or_several_paths", "label": "Step 0 - GitHub repos and multi-path merge (only if a URL or several paths)", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Step 0 - GitHub repos and multi-path merge (only if a URL or several paths)", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill_step_1_ensure_graphify_is_installed", "label": "Step 1 - Ensure graphify is installed", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Step 1 - Ensure graphify is installed", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill_step_2_detect_files", "label": "Step 2 - Detect files", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Step 2 - Detect files", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill_step_2_5_video_and_audio_only_if_video_files_detected", "label": "Step 2.5 - Video and audio (only if video files detected)", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Step 2.5 - Video and audio (only if video files detected)", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill_step_3_extract_entities_and_relationships", "label": "Step 3 - Extract entities and relationships", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Step 3 - Extract entities and relationships", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 4}, {"id": "agents_skills_graphify_skill_part_a_structural_extraction_for_code_files", "label": "Part A - Structural extraction for code files", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Part A - Structural extraction for code files", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill_part_b_semantic_extraction_parallel_subagents", "label": "Part B - Semantic extraction (parallel subagents)", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Part B - Semantic extraction (parallel subagents)", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill_part_c_merge_ast_semantic_into_final_extraction", "label": "Part C - Merge AST + semantic into final extraction", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Part C - Merge AST + semantic into final extraction", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill_step_4_build_graph_cluster_analyze_generate_outputs", "label": "Step 4 - Build graph, cluster, analyze, generate outputs", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Step 4 - Build graph, cluster, analyze, generate outputs", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill_step_4_5_graph_health_check_read_only_integrity_gate", "label": "Step 4.5 - Graph health check (read-only integrity gate)", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Step 4.5 - Graph health check (read-only integrity gate)", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill_step_5_label_communities", "label": "Step 5 - Label communities", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Step 5 - Label communities", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill_step_6_generate_obsidian_vault_opt_in_html", "label": "Step 6 - Generate Obsidian vault (opt-in) + HTML", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Step 6 - Generate Obsidian vault (opt-in) + HTML", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill_steps_6b_8_wiki_neo4j_falkordb_svg_graphml_mcp_benchmark_only_on_their_flags", "label": "Steps 6b-8 - Wiki, Neo4j, FalkorDB, SVG, GraphML, MCP, benchmark (only on their flags)", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Steps 6b-8 - Wiki, Neo4j, FalkorDB, SVG, GraphML, MCP, benchmark (only on their flags)", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill_step_9_save_manifest_update_cost_tracker_clean_up_and_report", "label": "Step 9 - Save manifest, update cost tracker, clean up, and report", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Step 9 - Save manifest, update cost tracker, clean up, and report", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill_interpreter_guard_for_subcommands", "label": "Interpreter guard for subcommands", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Interpreter guard for subcommands", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill_for_update_and_cluster_only", "label": "For --update and --cluster-only", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "For --update and --cluster-only", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill_for_graphify_query", "label": "For /graphify query", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "For /graphify query", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill_for_graphify_add_and_watch", "label": "For /graphify add and --watch", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "For /graphify add and --watch", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill_for_the_commit_hook_and_native_claude_md_integration", "label": "For the commit hook and native CLAUDE.md integration", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "For the commit hook and native CLAUDE.md integration", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_skill_honesty_rules", "label": "Honesty Rules", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Honesty Rules", "community": 3, "community_name": "Graphify Commands", "source_file": ".agents/skills/graphify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_add_watch", "label": "add-watch.md", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "add-watch.md", "community": 28, "community_name": "Graphify Watch Mode", "source_file": ".agents/skills/graphify/references/add-watch.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_add_watch_graphify_reference_add_a_url_and_watch_a_folder", "label": "graphify reference: add a URL and watch a folder", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "graphify reference: add a URL and watch a folder", "community": 28, "community_name": "Graphify Watch Mode", "source_file": ".agents/skills/graphify/references/add-watch.md", "file_type": "document", "degree": 3}, {"id": "agents_skills_graphify_references_add_watch_for_graphify_add", "label": "For /graphify add", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "For /graphify add", "community": 28, "community_name": "Graphify Watch Mode", "source_file": ".agents/skills/graphify/references/add-watch.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_add_watch_for_watch", "label": "For --watch", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "For --watch", "community": 28, "community_name": "Graphify Watch Mode", "source_file": ".agents/skills/graphify/references/add-watch.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_exports", "label": "exports.md", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "exports.md", "community": 13, "community_name": "Graphify Exports", "source_file": ".agents/skills/graphify/references/exports.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_exports_graphify_reference_extra_exports_and_benchmark", "label": "graphify reference: extra exports and benchmark", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 17.7, "font": {"size": 12, "color": "#ffffff"}, "title": "graphify reference: extra exports and benchmark", "community": 13, "community_name": "Graphify Exports", "source_file": ".agents/skills/graphify/references/exports.md", "file_type": "document", "degree": 8}, {"id": "agents_skills_graphify_references_exports_step_6b_wiki_only_if_wiki_flag", "label": "Step 6b - Wiki (only if --wiki flag)", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Step 6b - Wiki (only if --wiki flag)", "community": 13, "community_name": "Graphify Exports", "source_file": ".agents/skills/graphify/references/exports.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_exports_step_7_neo4j_export_only_if_neo4j_or_neo4j_push_flag", "label": "Step 7 - Neo4j export (only if --neo4j or --neo4j-push flag)", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Step 7 - Neo4j export (only if --neo4j or --neo4j-push flag)", "community": 13, "community_name": "Graphify Exports", "source_file": ".agents/skills/graphify/references/exports.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_exports_step_7a_falkordb_export_only_if_falkordb_or_falkordb_push_flag", "label": "Step 7a - FalkorDB export (only if --falkordb or --falkordb-push flag)", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Step 7a - FalkorDB export (only if --falkordb or --falkordb-push flag)", "community": 13, "community_name": "Graphify Exports", "source_file": ".agents/skills/graphify/references/exports.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_exports_step_7b_svg_export_only_if_svg_flag", "label": "Step 7b - SVG export (only if --svg flag)", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Step 7b - SVG export (only if --svg flag)", "community": 13, "community_name": "Graphify Exports", "source_file": ".agents/skills/graphify/references/exports.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_exports_step_7c_graphml_export_only_if_graphml_flag", "label": "Step 7c - GraphML export (only if --graphml flag)", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Step 7c - GraphML export (only if --graphml flag)", "community": 13, "community_name": "Graphify Exports", "source_file": ".agents/skills/graphify/references/exports.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_exports_step_7d_mcp_server_only_if_mcp_flag", "label": "Step 7d - MCP server (only if --mcp flag)", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Step 7d - MCP server (only if --mcp flag)", "community": 13, "community_name": "Graphify Exports", "source_file": ".agents/skills/graphify/references/exports.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_exports_step_8_token_reduction_benchmark_only_if_total_words_5000", "label": "Step 8 - Token reduction benchmark (only if total_words > 5000)", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Step 8 - Token reduction benchmark (only if total_words > 5000)", "community": 13, "community_name": "Graphify Exports", "source_file": ".agents/skills/graphify/references/exports.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_extraction_spec", "label": "extraction-spec.md", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "extraction-spec.md", "community": 34, "community_name": "Extraction Specification", "source_file": ".agents/skills/graphify/references/extraction-spec.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_extraction_spec_graphify_reference_extraction_subagent_prompt", "label": "graphify reference: extraction subagent prompt", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "graphify reference: extraction subagent prompt", "community": 34, "community_name": "Extraction Specification", "source_file": ".agents/skills/graphify/references/extraction-spec.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_github_and_merge", "label": "github-and-merge.md", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "github-and-merge.md", "community": 32, "community_name": "Repository Merge", "source_file": ".agents/skills/graphify/references/github-and-merge.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_github_and_merge_graphify_reference_github_clone_and_cross_repo_merge", "label": "graphify reference: GitHub clone and cross-repo merge", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "graphify reference: GitHub clone and cross-repo merge", "community": 32, "community_name": "Repository Merge", "source_file": ".agents/skills/graphify/references/github-and-merge.md", "file_type": "document", "degree": 2}, {"id": "agents_skills_graphify_references_github_and_merge_step_0_clone_github_repo_s_only_if_a_github_url_was_given", "label": "Step 0 - Clone GitHub repo(s) (only if a GitHub URL was given)", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Step 0 - Clone GitHub repo(s) (only if a GitHub URL was given)", "community": 32, "community_name": "Repository Merge", "source_file": ".agents/skills/graphify/references/github-and-merge.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_hooks", "label": "hooks.md", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "hooks.md", "community": 29, "community_name": "Graphify Hooks", "source_file": ".agents/skills/graphify/references/hooks.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_hooks_graphify_reference_commit_hook_and_native_claude_md_integration", "label": "graphify reference: commit hook and native CLAUDE.md integration", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "graphify reference: commit hook and native CLAUDE.md integration", "community": 29, "community_name": "Graphify Hooks", "source_file": ".agents/skills/graphify/references/hooks.md", "file_type": "document", "degree": 3}, {"id": "agents_skills_graphify_references_hooks_for_git_commit_hook", "label": "For git commit hook", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "For git commit hook", "community": 29, "community_name": "Graphify Hooks", "source_file": ".agents/skills/graphify/references/hooks.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_hooks_for_native_claude_md_integration", "label": "For native CLAUDE.md integration", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "For native CLAUDE.md integration", "community": 29, "community_name": "Graphify Hooks", "source_file": ".agents/skills/graphify/references/hooks.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_query", "label": "query.md", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "query.md", "community": 20, "community_name": "Graph Query", "source_file": ".agents/skills/graphify/references/query.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_query_graphify_reference_query_path_explain", "label": "graphify reference: query, path, explain", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 14.8, "font": {"size": 12, "color": "#ffffff"}, "title": "graphify reference: query, path, explain", "community": 20, "community_name": "Graph Query", "source_file": ".agents/skills/graphify/references/query.md", "file_type": "document", "degree": 5}, {"id": "agents_skills_graphify_references_query_step_0_constrained_query_expansion_required_before_traversal", "label": "Step 0 \u2014 Constrained query expansion (REQUIRED before traversal)", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Step 0 \u2014 Constrained query expansion (REQUIRED before traversal)", "community": 20, "community_name": "Graph Query", "source_file": ".agents/skills/graphify/references/query.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_query_step_1_traversal", "label": "Step 1 \u2014 Traversal", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Step 1 \u2014 Traversal", "community": 20, "community_name": "Graph Query", "source_file": ".agents/skills/graphify/references/query.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_query_for_graphify_path", "label": "For /graphify path", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "For /graphify path", "community": 20, "community_name": "Graph Query", "source_file": ".agents/skills/graphify/references/query.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_query_for_graphify_explain", "label": "For /graphify explain", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "For /graphify explain", "community": 20, "community_name": "Graph Query", "source_file": ".agents/skills/graphify/references/query.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_transcribe", "label": "transcribe.md", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "transcribe.md", "community": 33, "community_name": "Media Transcription", "source_file": ".agents/skills/graphify/references/transcribe.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_transcribe_graphify_reference_transcribe_video_and_audio", "label": "graphify reference: transcribe video and audio", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "graphify reference: transcribe video and audio", "community": 33, "community_name": "Media Transcription", "source_file": ".agents/skills/graphify/references/transcribe.md", "file_type": "document", "degree": 2}, {"id": "agents_skills_graphify_references_transcribe_step_2_5_transcribe_video_audio_files_only_if_video_files_detected", "label": "Step 2.5 - Transcribe video / audio files (only if video files detected)", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Step 2.5 - Transcribe video / audio files (only if video files detected)", "community": 33, "community_name": "Media Transcription", "source_file": ".agents/skills/graphify/references/transcribe.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_update", "label": "update.md", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "update.md", "community": 30, "community_name": "Graphify Updates", "source_file": ".agents/skills/graphify/references/update.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_update_graphify_reference_incremental_update_and_cluster_only", "label": "graphify reference: incremental update and cluster-only", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "graphify reference: incremental update and cluster-only", "community": 30, "community_name": "Graphify Updates", "source_file": ".agents/skills/graphify/references/update.md", "file_type": "document", "degree": 3}, {"id": "agents_skills_graphify_references_update_for_update_incremental_re_extraction", "label": "For --update (incremental re-extraction)", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "For --update (incremental re-extraction)", "community": 30, "community_name": "Graphify Updates", "source_file": ".agents/skills/graphify/references/update.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_graphify_references_update_for_cluster_only", "label": "For --cluster-only", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "For --cluster-only", "community": 30, "community_name": "Graphify Updates", "source_file": ".agents/skills/graphify/references/update.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_audit_skill", "label": "ponytail-audit/SKILL.md", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "ponytail-audit/SKILL.md", "community": 23, "community_name": "Ponytail Audit", "source_file": ".agents/skills/ponytail-audit/SKILL.md", "file_type": "document", "degree": 4}, {"id": "agents_skills_ponytail_audit_skill_tags", "label": "Tags", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Tags", "community": 23, "community_name": "Ponytail Audit", "source_file": ".agents/skills/ponytail-audit/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_audit_skill_hunt", "label": "Hunt", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Hunt", "community": 23, "community_name": "Ponytail Audit", "source_file": ".agents/skills/ponytail-audit/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_audit_skill_output", "label": "Output", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Output", "community": 23, "community_name": "Ponytail Audit", "source_file": ".agents/skills/ponytail-audit/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_audit_skill_boundaries", "label": "Boundaries", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Boundaries", "community": 23, "community_name": "Ponytail Audit", "source_file": ".agents/skills/ponytail-audit/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_debt_skill", "label": "ponytail-debt/SKILL.md", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "ponytail-debt/SKILL.md", "community": 31, "community_name": "Ponytail Debt", "source_file": ".agents/skills/ponytail-debt/SKILL.md", "file_type": "document", "degree": 3}, {"id": "agents_skills_ponytail_debt_skill_scan", "label": "Scan", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Scan", "community": 31, "community_name": "Ponytail Debt", "source_file": ".agents/skills/ponytail-debt/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_debt_skill_output", "label": "Output", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Output", "community": 31, "community_name": "Ponytail Debt", "source_file": ".agents/skills/ponytail-debt/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_debt_skill_boundaries", "label": "Boundaries", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Boundaries", "community": 31, "community_name": "Ponytail Debt", "source_file": ".agents/skills/ponytail-debt/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_gain_skill", "label": "ponytail-gain/SKILL.md", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "ponytail-gain/SKILL.md", "community": 24, "community_name": "Ponytail Metrics", "source_file": ".agents/skills/ponytail-gain/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_gain_skill_ponytail_gain", "label": "Ponytail Gain", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Ponytail Gain", "community": 24, "community_name": "Ponytail Metrics", "source_file": ".agents/skills/ponytail-gain/SKILL.md", "file_type": "document", "degree": 4}, {"id": "agents_skills_ponytail_gain_skill_scoreboard", "label": "Scoreboard", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Scoreboard", "community": 24, "community_name": "Ponytail Metrics", "source_file": ".agents/skills/ponytail-gain/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_gain_skill_honesty_boundary", "label": "Honesty boundary", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Honesty boundary", "community": 24, "community_name": "Ponytail Metrics", "source_file": ".agents/skills/ponytail-gain/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_gain_skill_boundaries", "label": "Boundaries", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Boundaries", "community": 24, "community_name": "Ponytail Metrics", "source_file": ".agents/skills/ponytail-gain/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_help_skill", "label": "ponytail-help/SKILL.md", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "ponytail-help/SKILL.md", "community": 16, "community_name": "Ponytail Help", "source_file": ".agents/skills/ponytail-help/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_help_skill_ponytail_help", "label": "Ponytail Help", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 16.8, "font": {"size": 12, "color": "#ffffff"}, "title": "Ponytail Help", "community": 16, "community_name": "Ponytail Help", "source_file": ".agents/skills/ponytail-help/SKILL.md", "file_type": "document", "degree": 7}, {"id": "agents_skills_ponytail_help_skill_levels", "label": "Levels", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Levels", "community": 16, "community_name": "Ponytail Help", "source_file": ".agents/skills/ponytail-help/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_help_skill_skills", "label": "Skills", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Skills", "community": 16, "community_name": "Ponytail Help", "source_file": ".agents/skills/ponytail-help/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_help_skill_deactivate", "label": "Deactivate", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Deactivate", "community": 16, "community_name": "Ponytail Help", "source_file": ".agents/skills/ponytail-help/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_help_skill_configure_default_mode", "label": "Configure Default Mode", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Configure Default Mode", "community": 16, "community_name": "Ponytail Help", "source_file": ".agents/skills/ponytail-help/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_help_skill_update", "label": "Update", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Update", "community": 16, "community_name": "Ponytail Help", "source_file": ".agents/skills/ponytail-help/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_help_skill_more", "label": "More", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "More", "community": 16, "community_name": "Ponytail Help", "source_file": ".agents/skills/ponytail-help/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_review_skill", "label": "ponytail-review/SKILL.md", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "ponytail-review/SKILL.md", "community": 25, "community_name": "Ponytail Review", "source_file": ".agents/skills/ponytail-review/SKILL.md", "file_type": "document", "degree": 4}, {"id": "agents_skills_ponytail_review_skill_format", "label": "Format", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Format", "community": 25, "community_name": "Ponytail Review", "source_file": ".agents/skills/ponytail-review/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_review_skill_examples", "label": "Examples", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Examples", "community": 25, "community_name": "Ponytail Review", "source_file": ".agents/skills/ponytail-review/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_review_skill_scoring", "label": "Scoring", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Scoring", "community": 25, "community_name": "Ponytail Review", "source_file": ".agents/skills/ponytail-review/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_review_skill_boundaries", "label": "Boundaries", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Boundaries", "community": 25, "community_name": "Ponytail Review", "source_file": ".agents/skills/ponytail-review/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_skill", "label": "ponytail/SKILL.md", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "ponytail/SKILL.md", "community": 14, "community_name": "Ponytail Configuration", "source_file": ".agents/skills/ponytail/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_skill_ponytail", "label": "Ponytail", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 17.7, "font": {"size": 12, "color": "#ffffff"}, "title": "Ponytail", "community": 14, "community_name": "Ponytail Configuration", "source_file": ".agents/skills/ponytail/SKILL.md", "file_type": "document", "degree": 8}, {"id": "agents_skills_ponytail_skill_persistence", "label": "Persistence", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Persistence", "community": 14, "community_name": "Ponytail Configuration", "source_file": ".agents/skills/ponytail/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_skill_the_ladder", "label": "The ladder", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "The ladder", "community": 14, "community_name": "Ponytail Configuration", "source_file": ".agents/skills/ponytail/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_skill_rules", "label": "Rules", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Rules", "community": 14, "community_name": "Ponytail Configuration", "source_file": ".agents/skills/ponytail/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_skill_output", "label": "Output", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Output", "community": 14, "community_name": "Ponytail Configuration", "source_file": ".agents/skills/ponytail/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_skill_intensity", "label": "Intensity", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Intensity", "community": 14, "community_name": "Ponytail Configuration", "source_file": ".agents/skills/ponytail/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_skill_when_not_to_be_lazy", "label": "When NOT to be lazy", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "When NOT to be lazy", "community": 14, "community_name": "Ponytail Configuration", "source_file": ".agents/skills/ponytail/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_ponytail_skill_boundaries", "label": "Boundaries", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Boundaries", "community": 14, "community_name": "Ponytail Configuration", "source_file": ".agents/skills/ponytail/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_analyze_skill", "label": "speckit-analyze/SKILL.md", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 17.7, "font": {"size": 12, "color": "#ffffff"}, "title": "speckit-analyze/SKILL.md", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 8}, {"id": "agents_skills_speckit_analyze_skill_user_input", "label": "User Input", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "User Input", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_analyze_skill_pre_execution_checks", "label": "Pre-Execution Checks", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Pre-Execution Checks", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_analyze_skill_goal", "label": "Goal", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Goal", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_analyze_skill_operating_constraints", "label": "Operating Constraints", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Operating Constraints", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_analyze_skill_execution_steps", "label": "Execution Steps", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 16.8, "font": {"size": 12, "color": "#ffffff"}, "title": "Execution Steps", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 7}, {"id": "agents_skills_speckit_analyze_skill_1_initialize_analysis_context", "label": "1. Initialize Analysis Context", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "1. Initialize Analysis Context", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_analyze_skill_2_load_artifacts_progressive_disclosure", "label": "2. Load Artifacts (Progressive Disclosure)", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "2. Load Artifacts (Progressive Disclosure)", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_analyze_skill_3_build_semantic_models", "label": "3. Build Semantic Models", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "3. Build Semantic Models", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_analyze_skill_4_detection_passes_token_efficient_analysis", "label": "4. Detection Passes (Token-Efficient Analysis)", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 16.8, "font": {"size": 12, "color": "#ffffff"}, "title": "4. Detection Passes (Token-Efficient Analysis)", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 7}, {"id": "agents_skills_speckit_analyze_skill_a_duplication_detection", "label": "A. Duplication Detection", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "A. Duplication Detection", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_analyze_skill_b_ambiguity_detection", "label": "B. Ambiguity Detection", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "B. Ambiguity Detection", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_analyze_skill_c_underspecification", "label": "C. Underspecification", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "C. Underspecification", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_analyze_skill_d_constitution_alignment", "label": "D. Constitution Alignment", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "D. Constitution Alignment", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_analyze_skill_e_coverage_gaps", "label": "E. Coverage Gaps", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "E. Coverage Gaps", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_analyze_skill_f_inconsistency", "label": "F. Inconsistency", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "F. Inconsistency", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_analyze_skill_5_severity_assignment", "label": "5. Severity Assignment", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "5. Severity Assignment", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_analyze_skill_6_produce_compact_analysis_report", "label": "6. Produce Compact Analysis Report", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "6. Produce Compact Analysis Report", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_analyze_skill_specification_analysis_report", "label": "Specification Analysis Report", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Specification Analysis Report", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 4}, {"id": "agents_skills_speckit_analyze_skill_7_provide_next_actions", "label": "7. Provide Next Actions", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "7. Provide Next Actions", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_analyze_skill_8_offer_remediation", "label": "8. Offer Remediation", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "8. Offer Remediation", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_analyze_skill_9_check_for_extension_hooks", "label": "9. Check for extension hooks", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "9. Check for extension hooks", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_analyze_skill_operating_principles", "label": "Operating Principles", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Operating Principles", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 3}, {"id": "agents_skills_speckit_analyze_skill_context_efficiency", "label": "Context Efficiency", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Context Efficiency", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_analyze_skill_analysis_guidelines", "label": "Analysis Guidelines", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Analysis Guidelines", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_analyze_skill_context", "label": "Context", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Context", "community": 4, "community_name": "speckit-analyze/SKILL.md", "source_file": ".agents/skills/speckit-analyze/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_checklist_skill", "label": "speckit-checklist/SKILL.md", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 16.8, "font": {"size": 12, "color": "#ffffff"}, "title": "speckit-checklist/SKILL.md", "community": 17, "community_name": "Checklist Generation", "source_file": ".agents/skills/speckit-checklist/SKILL.md", "file_type": "document", "degree": 7}, {"id": "agents_skills_speckit_checklist_skill_checklist_purpose_unit_tests_for_english", "label": "Checklist Purpose: \"Unit Tests for English\"", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Checklist Purpose: "Unit Tests for English"", "community": 17, "community_name": "Checklist Generation", "source_file": ".agents/skills/speckit-checklist/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_checklist_skill_user_input", "label": "User Input", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "User Input", "community": 17, "community_name": "Checklist Generation", "source_file": ".agents/skills/speckit-checklist/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_checklist_skill_pre_execution_checks", "label": "Pre-Execution Checks", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Pre-Execution Checks", "community": 17, "community_name": "Checklist Generation", "source_file": ".agents/skills/speckit-checklist/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_checklist_skill_execution_steps", "label": "Execution Steps", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Execution Steps", "community": 17, "community_name": "Checklist Generation", "source_file": ".agents/skills/speckit-checklist/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_checklist_skill_example_checklist_types_sample_items", "label": "Example Checklist Types & Sample Items", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Example Checklist Types & Sample Items", "community": 17, "community_name": "Checklist Generation", "source_file": ".agents/skills/speckit-checklist/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_checklist_skill_anti_examples_what_not_to_do", "label": "Anti-Examples: What NOT To Do", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Anti-Examples: What NOT To Do", "community": 17, "community_name": "Checklist Generation", "source_file": ".agents/skills/speckit-checklist/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_checklist_skill_post_execution_checks", "label": "Post-Execution Checks", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Post-Execution Checks", "community": 17, "community_name": "Checklist Generation", "source_file": ".agents/skills/speckit-checklist/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_clarify_skill", "label": "speckit-clarify/SKILL.md", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 15.8, "font": {"size": 12, "color": "#ffffff"}, "title": "speckit-clarify/SKILL.md", "community": 18, "community_name": "Clarification Workflow", "source_file": ".agents/skills/speckit-clarify/SKILL.md", "file_type": "document", "degree": 6}, {"id": "agents_skills_speckit_clarify_skill_user_input", "label": "User Input", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "User Input", "community": 18, "community_name": "Clarification Workflow", "source_file": ".agents/skills/speckit-clarify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_clarify_skill_pre_execution_checks", "label": "Pre-Execution Checks", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Pre-Execution Checks", "community": 18, "community_name": "Clarification Workflow", "source_file": ".agents/skills/speckit-clarify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_clarify_skill_outline", "label": "Outline", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Outline", "community": 18, "community_name": "Clarification Workflow", "source_file": ".agents/skills/speckit-clarify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_clarify_skill_mandatory_post_execution_hooks", "label": "Mandatory Post-Execution Hooks", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Mandatory Post-Execution Hooks", "community": 18, "community_name": "Clarification Workflow", "source_file": ".agents/skills/speckit-clarify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_clarify_skill_completion_report", "label": "Completion Report", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Completion Report", "community": 18, "community_name": "Clarification Workflow", "source_file": ".agents/skills/speckit-clarify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_clarify_skill_done_when", "label": "Done When", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Done When", "community": 18, "community_name": "Clarification Workflow", "source_file": ".agents/skills/speckit-clarify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_constitution_skill", "label": "speckit-constitution/SKILL.md", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 14.8, "font": {"size": 12, "color": "#ffffff"}, "title": "speckit-constitution/SKILL.md", "community": 21, "community_name": "Constitution Workflow", "source_file": ".agents/skills/speckit-constitution/SKILL.md", "file_type": "document", "degree": 5}, {"id": "agents_skills_speckit_constitution_skill_user_input", "label": "User Input", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "User Input", "community": 21, "community_name": "Constitution Workflow", "source_file": ".agents/skills/speckit-constitution/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_constitution_skill_scope_guard", "label": "Scope Guard", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Scope Guard", "community": 21, "community_name": "Constitution Workflow", "source_file": ".agents/skills/speckit-constitution/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_constitution_skill_pre_execution_checks", "label": "Pre-Execution Checks", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Pre-Execution Checks", "community": 21, "community_name": "Constitution Workflow", "source_file": ".agents/skills/speckit-constitution/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_constitution_skill_outline", "label": "Outline", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Outline", "community": 21, "community_name": "Constitution Workflow", "source_file": ".agents/skills/speckit-constitution/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_constitution_skill_post_execution_checks", "label": "Post-Execution Checks", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Post-Execution Checks", "community": 21, "community_name": "Constitution Workflow", "source_file": ".agents/skills/speckit-constitution/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_converge_skill", "label": "speckit-converge/SKILL.md", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 15.8, "font": {"size": 12, "color": "#ffffff"}, "title": "speckit-converge/SKILL.md", "community": 1, "community_name": "Convergence Workflow", "source_file": ".agents/skills/speckit-converge/SKILL.md", "file_type": "document", "degree": 6}, {"id": "agents_skills_speckit_converge_skill_user_input", "label": "User Input", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "User Input", "community": 1, "community_name": "Convergence Workflow", "source_file": ".agents/skills/speckit-converge/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_converge_skill_pre_execution_checks", "label": "Pre-Execution Checks", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Pre-Execution Checks", "community": 1, "community_name": "Convergence Workflow", "source_file": ".agents/skills/speckit-converge/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_converge_skill_goal", "label": "Goal", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Goal", "community": 1, "community_name": "Convergence Workflow", "source_file": ".agents/skills/speckit-converge/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_converge_skill_operating_constraints", "label": "Operating Constraints", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Operating Constraints", "community": 1, "community_name": "Convergence Workflow", "source_file": ".agents/skills/speckit-converge/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_converge_skill_execution_steps", "label": "Execution Steps", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 16.8, "font": {"size": 12, "color": "#ffffff"}, "title": "Execution Steps", "community": 1, "community_name": "Convergence Workflow", "source_file": ".agents/skills/speckit-converge/SKILL.md", "file_type": "document", "degree": 7}, {"id": "agents_skills_speckit_converge_skill_1_initialize_convergence_context", "label": "1. Initialize Convergence Context", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "1. Initialize Convergence Context", "community": 1, "community_name": "Convergence Workflow", "source_file": ".agents/skills/speckit-converge/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_converge_skill_2_load_artifacts_progressive_disclosure", "label": "2. Load Artifacts (Progressive Disclosure)", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "2. Load Artifacts (Progressive Disclosure)", "community": 1, "community_name": "Convergence Workflow", "source_file": ".agents/skills/speckit-converge/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_converge_skill_3_build_the_intent_inventory", "label": "3. Build the Intent Inventory", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "3. Build the Intent Inventory", "community": 1, "community_name": "Convergence Workflow", "source_file": ".agents/skills/speckit-converge/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_converge_skill_4_assess_the_codebase_and_classify_findings", "label": "4. Assess the Codebase and Classify Findings", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "4. Assess the Codebase and Classify Findings", "community": 1, "community_name": "Convergence Workflow", "source_file": ".agents/skills/speckit-converge/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_converge_skill_5_assign_severity", "label": "5. Assign Severity", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "5. Assign Severity", "community": 1, "community_name": "Convergence Workflow", "source_file": ".agents/skills/speckit-converge/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_converge_skill_6_present_the_in_session_findings_summary", "label": "6. Present the In-Session Findings Summary", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "6. Present the In-Session Findings Summary", "community": 1, "community_name": "Convergence Workflow", "source_file": ".agents/skills/speckit-converge/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_converge_skill_convergence_findings", "label": "Convergence Findings", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Convergence Findings", "community": 1, "community_name": "Convergence Workflow", "source_file": ".agents/skills/speckit-converge/SKILL.md", "file_type": "document", "degree": 4}, {"id": "agents_skills_speckit_converge_skill_7_append_convergence_tasks_or_report_converged", "label": "7. Append Convergence Tasks (or report converged)", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "7. Append Convergence Tasks (or report converged)", "community": 1, "community_name": "Convergence Workflow", "source_file": ".agents/skills/speckit-converge/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_converge_skill_8_provide_next_actions_handoff", "label": "8. Provide Next Actions (Handoff)", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "8. Provide Next Actions (Handoff)", "community": 1, "community_name": "Convergence Workflow", "source_file": ".agents/skills/speckit-converge/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_converge_skill_9_check_for_extension_hooks", "label": "9. Check for extension hooks", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "9. Check for extension hooks", "community": 1, "community_name": "Convergence Workflow", "source_file": ".agents/skills/speckit-converge/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_implement_skill", "label": "speckit-implement/SKILL.md", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 15.8, "font": {"size": 12, "color": "#ffffff"}, "title": "speckit-implement/SKILL.md", "community": 19, "community_name": "Implementation Workflow", "source_file": ".agents/skills/speckit-implement/SKILL.md", "file_type": "document", "degree": 6}, {"id": "agents_skills_speckit_implement_skill_user_input", "label": "User Input", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "User Input", "community": 19, "community_name": "Implementation Workflow", "source_file": ".agents/skills/speckit-implement/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_implement_skill_pre_execution_checks", "label": "Pre-Execution Checks", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Pre-Execution Checks", "community": 19, "community_name": "Implementation Workflow", "source_file": ".agents/skills/speckit-implement/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_implement_skill_outline", "label": "Outline", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Outline", "community": 19, "community_name": "Implementation Workflow", "source_file": ".agents/skills/speckit-implement/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_implement_skill_mandatory_post_execution_hooks", "label": "Mandatory Post-Execution Hooks", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Mandatory Post-Execution Hooks", "community": 19, "community_name": "Implementation Workflow", "source_file": ".agents/skills/speckit-implement/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_implement_skill_completion_report", "label": "Completion Report", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Completion Report", "community": 19, "community_name": "Implementation Workflow", "source_file": ".agents/skills/speckit-implement/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_implement_skill_done_when", "label": "Done When", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Done When", "community": 19, "community_name": "Implementation Workflow", "source_file": ".agents/skills/speckit-implement/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_plan_skill", "label": "speckit-plan/SKILL.md", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 17.7, "font": {"size": 12, "color": "#ffffff"}, "title": "speckit-plan/SKILL.md", "community": 8, "community_name": "Implementation Planning", "source_file": ".agents/skills/speckit-plan/SKILL.md", "file_type": "document", "degree": 8}, {"id": "agents_skills_speckit_plan_skill_user_input", "label": "User Input", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "User Input", "community": 8, "community_name": "Implementation Planning", "source_file": ".agents/skills/speckit-plan/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_plan_skill_pre_execution_checks", "label": "Pre-Execution Checks", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Pre-Execution Checks", "community": 8, "community_name": "Implementation Planning", "source_file": ".agents/skills/speckit-plan/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_plan_skill_outline", "label": "Outline", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Outline", "community": 8, "community_name": "Implementation Planning", "source_file": ".agents/skills/speckit-plan/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_plan_skill_mandatory_post_execution_hooks", "label": "Mandatory Post-Execution Hooks", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Mandatory Post-Execution Hooks", "community": 8, "community_name": "Implementation Planning", "source_file": ".agents/skills/speckit-plan/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_plan_skill_completion_report", "label": "Completion Report", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Completion Report", "community": 8, "community_name": "Implementation Planning", "source_file": ".agents/skills/speckit-plan/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_plan_skill_phases", "label": "Phases", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Phases", "community": 8, "community_name": "Implementation Planning", "source_file": ".agents/skills/speckit-plan/SKILL.md", "file_type": "document", "degree": 3}, {"id": "agents_skills_speckit_plan_skill_phase_0_outline_research", "label": "Phase 0: Outline & Research", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Phase 0: Outline & Research", "community": 8, "community_name": "Implementation Planning", "source_file": ".agents/skills/speckit-plan/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_plan_skill_phase_1_design_contracts", "label": "Phase 1: Design & Contracts", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Phase 1: Design & Contracts", "community": 8, "community_name": "Implementation Planning", "source_file": ".agents/skills/speckit-plan/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_plan_skill_key_rules", "label": "Key rules", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Key rules", "community": 8, "community_name": "Implementation Planning", "source_file": ".agents/skills/speckit-plan/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_plan_skill_done_when", "label": "Done When", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Done When", "community": 8, "community_name": "Implementation Planning", "source_file": ".agents/skills/speckit-plan/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_specify_skill", "label": "speckit-specify/SKILL.md", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 16.8, "font": {"size": 12, "color": "#ffffff"}, "title": "speckit-specify/SKILL.md", "community": 9, "community_name": "Feature Specification", "source_file": ".agents/skills/speckit-specify/SKILL.md", "file_type": "document", "degree": 7}, {"id": "agents_skills_speckit_specify_skill_user_input", "label": "User Input", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "User Input", "community": 9, "community_name": "Feature Specification", "source_file": ".agents/skills/speckit-specify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_specify_skill_pre_execution_checks", "label": "Pre-Execution Checks", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Pre-Execution Checks", "community": 9, "community_name": "Feature Specification", "source_file": ".agents/skills/speckit-specify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_specify_skill_outline", "label": "Outline", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Outline", "community": 9, "community_name": "Feature Specification", "source_file": ".agents/skills/speckit-specify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_specify_skill_mandatory_post_execution_hooks", "label": "Mandatory Post-Execution Hooks", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Mandatory Post-Execution Hooks", "community": 9, "community_name": "Feature Specification", "source_file": ".agents/skills/speckit-specify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_specify_skill_completion_report", "label": "Completion Report", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Completion Report", "community": 9, "community_name": "Feature Specification", "source_file": ".agents/skills/speckit-specify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_specify_skill_quick_guidelines", "label": "Quick Guidelines", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Quick Guidelines", "community": 9, "community_name": "Feature Specification", "source_file": ".agents/skills/speckit-specify/SKILL.md", "file_type": "document", "degree": 4}, {"id": "agents_skills_speckit_specify_skill_section_requirements", "label": "Section Requirements", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Section Requirements", "community": 9, "community_name": "Feature Specification", "source_file": ".agents/skills/speckit-specify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_specify_skill_for_ai_generation", "label": "For AI Generation", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "For AI Generation", "community": 9, "community_name": "Feature Specification", "source_file": ".agents/skills/speckit-specify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_specify_skill_success_criteria_guidelines", "label": "Success Criteria Guidelines", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Success Criteria Guidelines", "community": 9, "community_name": "Feature Specification", "source_file": ".agents/skills/speckit-specify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_specify_skill_done_when", "label": "Done When", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Done When", "community": 9, "community_name": "Feature Specification", "source_file": ".agents/skills/speckit-specify/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_tasks_skill", "label": "speckit-tasks/SKILL.md", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 16.8, "font": {"size": 12, "color": "#ffffff"}, "title": "speckit-tasks/SKILL.md", "community": 10, "community_name": "Task Generation", "source_file": ".agents/skills/speckit-tasks/SKILL.md", "file_type": "document", "degree": 7}, {"id": "agents_skills_speckit_tasks_skill_user_input", "label": "User Input", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "User Input", "community": 10, "community_name": "Task Generation", "source_file": ".agents/skills/speckit-tasks/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_tasks_skill_pre_execution_checks", "label": "Pre-Execution Checks", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Pre-Execution Checks", "community": 10, "community_name": "Task Generation", "source_file": ".agents/skills/speckit-tasks/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_tasks_skill_outline", "label": "Outline", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Outline", "community": 10, "community_name": "Task Generation", "source_file": ".agents/skills/speckit-tasks/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_tasks_skill_mandatory_post_execution_hooks", "label": "Mandatory Post-Execution Hooks", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Mandatory Post-Execution Hooks", "community": 10, "community_name": "Task Generation", "source_file": ".agents/skills/speckit-tasks/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_tasks_skill_completion_report", "label": "Completion Report", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Completion Report", "community": 10, "community_name": "Task Generation", "source_file": ".agents/skills/speckit-tasks/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_tasks_skill_task_generation_rules", "label": "Task Generation Rules", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Task Generation Rules", "community": 10, "community_name": "Task Generation", "source_file": ".agents/skills/speckit-tasks/SKILL.md", "file_type": "document", "degree": 4}, {"id": "agents_skills_speckit_tasks_skill_checklist_format_required", "label": "Checklist Format (REQUIRED)", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Checklist Format (REQUIRED)", "community": 10, "community_name": "Task Generation", "source_file": ".agents/skills/speckit-tasks/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_tasks_skill_task_organization", "label": "Task Organization", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Task Organization", "community": 10, "community_name": "Task Generation", "source_file": ".agents/skills/speckit-tasks/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_tasks_skill_phase_structure", "label": "Phase Structure", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Phase Structure", "community": 10, "community_name": "Task Generation", "source_file": ".agents/skills/speckit-tasks/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_tasks_skill_done_when", "label": "Done When", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Done When", "community": 10, "community_name": "Task Generation", "source_file": ".agents/skills/speckit-tasks/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_taskstoissues_skill", "label": "speckit-taskstoissues/SKILL.md", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "speckit-taskstoissues/SKILL.md", "community": 26, "community_name": "Task Issue Conversion", "source_file": ".agents/skills/speckit-taskstoissues/SKILL.md", "file_type": "document", "degree": 4}, {"id": "agents_skills_speckit_taskstoissues_skill_user_input", "label": "User Input", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "User Input", "community": 26, "community_name": "Task Issue Conversion", "source_file": ".agents/skills/speckit-taskstoissues/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_taskstoissues_skill_pre_execution_checks", "label": "Pre-Execution Checks", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Pre-Execution Checks", "community": 26, "community_name": "Task Issue Conversion", "source_file": ".agents/skills/speckit-taskstoissues/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_taskstoissues_skill_outline", "label": "Outline", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Outline", "community": 26, "community_name": "Task Issue Conversion", "source_file": ".agents/skills/speckit-taskstoissues/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_skills_speckit_taskstoissues_skill_post_execution_checks", "label": "Post-Execution Checks", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Post-Execution Checks", "community": 26, "community_name": "Task Issue Conversion", "source_file": ".agents/skills/speckit-taskstoissues/SKILL.md", "file_type": "document", "degree": 1}, {"id": "agents_workflows_graphify", "label": "workflows/graphify.md", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "workflows/graphify.md", "community": 39, "community_name": "Graphify Workflows", "source_file": ".agents/workflows/graphify.md", "file_type": "document", "degree": 1}, {"id": "agents_workflows_graphify_workflow_graphify", "label": "Workflow: graphify", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Workflow: graphify", "community": 39, "community_name": "Graphify Workflows", "source_file": ".agents/workflows/graphify.md", "file_type": "document", "degree": 1}, {"id": "specify_memory_constitution", "label": "constitution.md", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "constitution.md", "community": 11, "community_name": "Project Constitution", "source_file": ".specify/memory/constitution.md", "file_type": "document", "degree": 1}, {"id": "specify_memory_constitution_project_name_constitution", "label": "[PROJECT_NAME] Constitution", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 14.8, "font": {"size": 12, "color": "#ffffff"}, "title": "[PROJECT_NAME] Constitution", "community": 11, "community_name": "Project Constitution", "source_file": ".specify/memory/constitution.md", "file_type": "document", "degree": 5}, {"id": "specify_memory_constitution_core_principles", "label": "Core Principles", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 15.8, "font": {"size": 12, "color": "#ffffff"}, "title": "Core Principles", "community": 11, "community_name": "Project Constitution", "source_file": ".specify/memory/constitution.md", "file_type": "document", "degree": 6}, {"id": "specify_memory_constitution_principle_1_name", "label": "[PRINCIPLE_1_NAME]", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "[PRINCIPLE_1_NAME]", "community": 11, "community_name": "Project Constitution", "source_file": ".specify/memory/constitution.md", "file_type": "document", "degree": 1}, {"id": "specify_memory_constitution_principle_2_name", "label": "[PRINCIPLE_2_NAME]", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "[PRINCIPLE_2_NAME]", "community": 11, "community_name": "Project Constitution", "source_file": ".specify/memory/constitution.md", "file_type": "document", "degree": 1}, {"id": "specify_memory_constitution_principle_3_name", "label": "[PRINCIPLE_3_NAME]", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "[PRINCIPLE_3_NAME]", "community": 11, "community_name": "Project Constitution", "source_file": ".specify/memory/constitution.md", "file_type": "document", "degree": 1}, {"id": "specify_memory_constitution_principle_4_name", "label": "[PRINCIPLE_4_NAME]", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "[PRINCIPLE_4_NAME]", "community": 11, "community_name": "Project Constitution", "source_file": ".specify/memory/constitution.md", "file_type": "document", "degree": 1}, {"id": "specify_memory_constitution_principle_5_name", "label": "[PRINCIPLE_5_NAME]", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "[PRINCIPLE_5_NAME]", "community": 11, "community_name": "Project Constitution", "source_file": ".specify/memory/constitution.md", "file_type": "document", "degree": 1}, {"id": "specify_memory_constitution_section_2_name", "label": "[SECTION_2_NAME]", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "[SECTION_2_NAME]", "community": 11, "community_name": "Project Constitution", "source_file": ".specify/memory/constitution.md", "file_type": "document", "degree": 1}, {"id": "specify_memory_constitution_section_3_name", "label": "[SECTION_3_NAME]", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "[SECTION_3_NAME]", "community": 11, "community_name": "Project Constitution", "source_file": ".specify/memory/constitution.md", "file_type": "document", "degree": 1}, {"id": "specify_memory_constitution_governance", "label": "Governance", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Governance", "community": 11, "community_name": "Project Constitution", "source_file": ".specify/memory/constitution.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_checklist_template", "label": "checklist-template.md", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "checklist-template.md", "community": 27, "community_name": "Checklist Template", "source_file": ".specify/templates/checklist-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_checklist_template_checklist_type_checklist_feature_name", "label": "[CHECKLIST TYPE] Checklist: [FEATURE NAME]", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "[CHECKLIST TYPE] Checklist: [FEATURE NAME]", "community": 27, "community_name": "Checklist Template", "source_file": ".specify/templates/checklist-template.md", "file_type": "document", "degree": 4}, {"id": "specify_templates_checklist_template_category_1", "label": "[Category 1]", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "[Category 1]", "community": 27, "community_name": "Checklist Template", "source_file": ".specify/templates/checklist-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_checklist_template_category_2", "label": "[Category 2]", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "[Category 2]", "community": 27, "community_name": "Checklist Template", "source_file": ".specify/templates/checklist-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_checklist_template_notes", "label": "Notes", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Notes", "community": 27, "community_name": "Checklist Template", "source_file": ".specify/templates/checklist-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_constitution_template", "label": "constitution-template.md", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "constitution-template.md", "community": 12, "community_name": "Constitution Template", "source_file": ".specify/templates/constitution-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_constitution_template_project_name_constitution", "label": "[PROJECT_NAME] Constitution", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 14.8, "font": {"size": 12, "color": "#ffffff"}, "title": "[PROJECT_NAME] Constitution", "community": 12, "community_name": "Constitution Template", "source_file": ".specify/templates/constitution-template.md", "file_type": "document", "degree": 5}, {"id": "specify_templates_constitution_template_core_principles", "label": "Core Principles", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 15.8, "font": {"size": 12, "color": "#ffffff"}, "title": "Core Principles", "community": 12, "community_name": "Constitution Template", "source_file": ".specify/templates/constitution-template.md", "file_type": "document", "degree": 6}, {"id": "specify_templates_constitution_template_principle_1_name", "label": "[PRINCIPLE_1_NAME]", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "[PRINCIPLE_1_NAME]", "community": 12, "community_name": "Constitution Template", "source_file": ".specify/templates/constitution-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_constitution_template_principle_2_name", "label": "[PRINCIPLE_2_NAME]", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "[PRINCIPLE_2_NAME]", "community": 12, "community_name": "Constitution Template", "source_file": ".specify/templates/constitution-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_constitution_template_principle_3_name", "label": "[PRINCIPLE_3_NAME]", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "[PRINCIPLE_3_NAME]", "community": 12, "community_name": "Constitution Template", "source_file": ".specify/templates/constitution-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_constitution_template_principle_4_name", "label": "[PRINCIPLE_4_NAME]", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "[PRINCIPLE_4_NAME]", "community": 12, "community_name": "Constitution Template", "source_file": ".specify/templates/constitution-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_constitution_template_principle_5_name", "label": "[PRINCIPLE_5_NAME]", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "[PRINCIPLE_5_NAME]", "community": 12, "community_name": "Constitution Template", "source_file": ".specify/templates/constitution-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_constitution_template_section_2_name", "label": "[SECTION_2_NAME]", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "[SECTION_2_NAME]", "community": 12, "community_name": "Constitution Template", "source_file": ".specify/templates/constitution-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_constitution_template_section_3_name", "label": "[SECTION_3_NAME]", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "[SECTION_3_NAME]", "community": 12, "community_name": "Constitution Template", "source_file": ".specify/templates/constitution-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_constitution_template_governance", "label": "Governance", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Governance", "community": 12, "community_name": "Constitution Template", "source_file": ".specify/templates/constitution-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_plan_template", "label": "plan-template.md", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "plan-template.md", "community": 15, "community_name": "Implementation Planning Template", "source_file": ".specify/templates/plan-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_plan_template_implementation_plan_feature", "label": "Implementation Plan: [FEATURE]", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 15.8, "font": {"size": 12, "color": "#ffffff"}, "title": "Implementation Plan: [FEATURE]", "community": 15, "community_name": "Implementation Planning Template", "source_file": ".specify/templates/plan-template.md", "file_type": "document", "degree": 6}, {"id": "specify_templates_plan_template_summary", "label": "Summary", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Summary", "community": 15, "community_name": "Implementation Planning Template", "source_file": ".specify/templates/plan-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_plan_template_technical_context", "label": "Technical Context", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Technical Context", "community": 15, "community_name": "Implementation Planning Template", "source_file": ".specify/templates/plan-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_plan_template_constitution_check", "label": "Constitution Check", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Constitution Check", "community": 15, "community_name": "Implementation Planning Template", "source_file": ".specify/templates/plan-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_plan_template_project_structure", "label": "Project Structure", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Project Structure", "community": 15, "community_name": "Implementation Planning Template", "source_file": ".specify/templates/plan-template.md", "file_type": "document", "degree": 3}, {"id": "specify_templates_plan_template_documentation_this_feature", "label": "Documentation (this feature)", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Documentation (this feature)", "community": 15, "community_name": "Implementation Planning Template", "source_file": ".specify/templates/plan-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_plan_template_source_code_repository_root", "label": "Source Code (repository root)", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Source Code (repository root)", "community": 15, "community_name": "Implementation Planning Template", "source_file": ".specify/templates/plan-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_plan_template_complexity_tracking", "label": "Complexity Tracking", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Complexity Tracking", "community": 15, "community_name": "Implementation Planning Template", "source_file": ".specify/templates/plan-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_spec_template", "label": "spec-template.md", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "spec-template.md", "community": 6, "community_name": "Feature Specification Template", "source_file": ".specify/templates/spec-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_spec_template_feature_specification_feature_name", "label": "Feature Specification: [FEATURE NAME]", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 14.8, "font": {"size": 12, "color": "#ffffff"}, "title": "Feature Specification: [FEATURE NAME]", "community": 6, "community_name": "Feature Specification Template", "source_file": ".specify/templates/spec-template.md", "file_type": "document", "degree": 5}, {"id": "specify_templates_spec_template_user_scenarios_testing_mandatory", "label": "User Scenarios & Testing *(mandatory)*", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 14.8, "font": {"size": 12, "color": "#ffffff"}, "title": "User Scenarios & Testing *(mandatory)*", "community": 6, "community_name": "Feature Specification Template", "source_file": ".specify/templates/spec-template.md", "file_type": "document", "degree": 5}, {"id": "specify_templates_spec_template_user_story_1_brief_title_priority_p1", "label": "User Story 1 - [Brief Title] (Priority: P1)", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "User Story 1 - [Brief Title] (Priority: P1)", "community": 6, "community_name": "Feature Specification Template", "source_file": ".specify/templates/spec-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_spec_template_user_story_2_brief_title_priority_p2", "label": "User Story 2 - [Brief Title] (Priority: P2)", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "User Story 2 - [Brief Title] (Priority: P2)", "community": 6, "community_name": "Feature Specification Template", "source_file": ".specify/templates/spec-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_spec_template_user_story_3_brief_title_priority_p3", "label": "User Story 3 - [Brief Title] (Priority: P3)", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "User Story 3 - [Brief Title] (Priority: P3)", "community": 6, "community_name": "Feature Specification Template", "source_file": ".specify/templates/spec-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_spec_template_edge_cases", "label": "Edge Cases", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Edge Cases", "community": 6, "community_name": "Feature Specification Template", "source_file": ".specify/templates/spec-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_spec_template_requirements_mandatory", "label": "Requirements *(mandatory)*", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Requirements *(mandatory)*", "community": 6, "community_name": "Feature Specification Template", "source_file": ".specify/templates/spec-template.md", "file_type": "document", "degree": 3}, {"id": "specify_templates_spec_template_functional_requirements", "label": "Functional Requirements", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Functional Requirements", "community": 6, "community_name": "Feature Specification Template", "source_file": ".specify/templates/spec-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_spec_template_key_entities_include_if_feature_involves_data", "label": "Key Entities *(include if feature involves data)*", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Key Entities *(include if feature involves data)*", "community": 6, "community_name": "Feature Specification Template", "source_file": ".specify/templates/spec-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_spec_template_success_criteria_mandatory", "label": "Success Criteria *(mandatory)*", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Success Criteria *(mandatory)*", "community": 6, "community_name": "Feature Specification Template", "source_file": ".specify/templates/spec-template.md", "file_type": "document", "degree": 2}, {"id": "specify_templates_spec_template_measurable_outcomes", "label": "Measurable Outcomes", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Measurable Outcomes", "community": 6, "community_name": "Feature Specification Template", "source_file": ".specify/templates/spec-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_spec_template_assumptions", "label": "Assumptions", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Assumptions", "community": 6, "community_name": "Feature Specification Template", "source_file": ".specify/templates/spec-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_tasks_template", "label": "tasks-template.md", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "tasks-template.md", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_tasks_template_tasks_feature_name", "label": "Tasks: [FEATURE NAME]", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 22.6, "font": {"size": 12, "color": "#ffffff"}, "title": "Tasks: [FEATURE NAME]", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 13}, {"id": "specify_templates_tasks_template_format_id_p_story_description", "label": "Format: `[ID] [P?] [Story] Description`", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Format: `[ID] [P?] [Story] Description`", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_tasks_template_path_conventions", "label": "Path Conventions", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Path Conventions", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_tasks_template_phase_1_setup_shared_infrastructure", "label": "Phase 1: Setup (Shared Infrastructure)", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Phase 1: Setup (Shared Infrastructure)", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_tasks_template_phase_2_foundational_blocking_prerequisites", "label": "Phase 2: Foundational (Blocking Prerequisites)", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Phase 2: Foundational (Blocking Prerequisites)", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_tasks_template_phase_3_user_story_1_title_priority_p1_mvp", "label": "Phase 3: User Story 1 - [Title] (Priority: P1) \ud83c\udfaf MVP", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Phase 3: User Story 1 - [Title] (Priority: P1) \ud83c\udfaf MVP", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 3}, {"id": "specify_templates_tasks_template_tests_for_user_story_1_optional_only_if_tests_requested", "label": "Tests for User Story 1 (OPTIONAL - only if tests requested) \u26a0\ufe0f", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Tests for User Story 1 (OPTIONAL - only if tests requested) \u26a0\ufe0f", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_tasks_template_implementation_for_user_story_1", "label": "Implementation for User Story 1", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Implementation for User Story 1", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_tasks_template_phase_4_user_story_2_title_priority_p2", "label": "Phase 4: User Story 2 - [Title] (Priority: P2)", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Phase 4: User Story 2 - [Title] (Priority: P2)", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 3}, {"id": "specify_templates_tasks_template_tests_for_user_story_2_optional_only_if_tests_requested", "label": "Tests for User Story 2 (OPTIONAL - only if tests requested) \u26a0\ufe0f", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Tests for User Story 2 (OPTIONAL - only if tests requested) \u26a0\ufe0f", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_tasks_template_implementation_for_user_story_2", "label": "Implementation for User Story 2", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Implementation for User Story 2", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_tasks_template_phase_5_user_story_3_title_priority_p3", "label": "Phase 5: User Story 3 - [Title] (Priority: P3)", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Phase 5: User Story 3 - [Title] (Priority: P3)", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 3}, {"id": "specify_templates_tasks_template_tests_for_user_story_3_optional_only_if_tests_requested", "label": "Tests for User Story 3 (OPTIONAL - only if tests requested) \u26a0\ufe0f", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Tests for User Story 3 (OPTIONAL - only if tests requested) \u26a0\ufe0f", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_tasks_template_implementation_for_user_story_3", "label": "Implementation for User Story 3", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Implementation for User Story 3", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_tasks_template_phase_n_polish_cross_cutting_concerns", "label": "Phase N: Polish & Cross-Cutting Concerns", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Phase N: Polish & Cross-Cutting Concerns", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_tasks_template_dependencies_execution_order", "label": "Dependencies & Execution Order", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 14.8, "font": {"size": 12, "color": "#ffffff"}, "title": "Dependencies & Execution Order", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 5}, {"id": "specify_templates_tasks_template_phase_dependencies", "label": "Phase Dependencies", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Phase Dependencies", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_tasks_template_user_story_dependencies", "label": "User Story Dependencies", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "User Story Dependencies", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_tasks_template_within_each_user_story", "label": "Within Each User Story", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Within Each User Story", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_tasks_template_parallel_opportunities", "label": "Parallel Opportunities", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Parallel Opportunities", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_tasks_template_parallel_example_user_story_1", "label": "Parallel Example: User Story 1", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Parallel Example: User Story 1", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_tasks_template_implementation_strategy", "label": "Implementation Strategy", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Implementation Strategy", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 4}, {"id": "specify_templates_tasks_template_mvp_first_user_story_1_only", "label": "MVP First (User Story 1 Only)", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "MVP First (User Story 1 Only)", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_tasks_template_incremental_delivery", "label": "Incremental Delivery", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Incremental Delivery", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_tasks_template_parallel_team_strategy", "label": "Parallel Team Strategy", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Parallel Team Strategy", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 1}, {"id": "specify_templates_tasks_template_notes", "label": "Notes", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Notes", "community": 0, "community_name": "Task Planning", "source_file": ".specify/templates/tasks-template.md", "file_type": "document", "degree": 1}, {"id": "readme", "label": "README.md", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "README.md", "community": 97, "community_name": "\ud83e\udde0 TextNLPClassifierApp", "source_file": "README.md", "file_type": "document", "degree": 1}, {"id": "readme_textnlpclassifierapp", "label": "\ud83e\udde0 TextNLPClassifierApp", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 18.7, "font": {"size": 12, "color": "#ffffff"}, "title": "\ud83e\udde0 TextNLPClassifierApp", "community": 97, "community_name": "\ud83e\udde0 TextNLPClassifierApp", "source_file": "README.md", "file_type": "document", "degree": 9}, {"id": "readme_tabela_de_conte\u00fados", "label": "\ud83d\udcd1 Tabela de Conte\u00fados", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "\ud83d\udcd1 Tabela de Conte\u00fados", "community": 97, "community_name": "\ud83e\udde0 TextNLPClassifierApp", "source_file": "README.md", "file_type": "document", "degree": 1}, {"id": "readme_vis\u00e3o_geral", "label": "\ud83c\udf1f Vis\u00e3o Geral", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "\ud83c\udf1f Vis\u00e3o Geral", "community": 97, "community_name": "\ud83e\udde0 TextNLPClassifierApp", "source_file": "README.md", "file_type": "document", "degree": 1}, {"id": "readme_instala\u00e7\u00e3o_e_setup", "label": "\u2699\ufe0f Instala\u00e7\u00e3o e Setup", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "\u2699\ufe0f Instala\u00e7\u00e3o e Setup", "community": 97, "community_name": "\ud83e\udde0 TextNLPClassifierApp", "source_file": "README.md", "file_type": "document", "degree": 4}, {"id": "readme_1_clonar_o_reposit\u00f3rio_e_criar_ambiente_virtual", "label": "1. Clonar o Reposit\u00f3rio e Criar Ambiente Virtual", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "1. Clonar o Reposit\u00f3rio e Criar Ambiente Virtual", "community": 97, "community_name": "\ud83e\udde0 TextNLPClassifierApp", "source_file": "README.md", "file_type": "document", "degree": 1}, {"id": "readme_2_instalar_depend\u00eancias", "label": "2. Instalar Depend\u00eancias", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "2. Instalar Depend\u00eancias", "community": 97, "community_name": "\ud83e\udde0 TextNLPClassifierApp", "source_file": "README.md", "file_type": "document", "degree": 1}, {"id": "readme_3_baixar_bin\u00e1rios_do_navegador_stealth_camoufox", "label": "3. Baixar Bin\u00e1rios do Navegador Stealth (Camoufox)", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "3. Baixar Bin\u00e1rios do Navegador Stealth (Camoufox)", "community": 97, "community_name": "\ud83e\udde0 TextNLPClassifierApp", "source_file": "README.md", "file_type": "document", "degree": 1}, {"id": "readme_1_classificador_de_conte\u00fado_e_iner\u00eancia_nlp_llm_ecp", "label": "1. \ud83e\udde0 Classificador de Conte\u00fado e Iner\u00eancia (NLP / LLM / ECP)", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 15.8, "font": {"size": 12, "color": "#ffffff"}, "title": "1. \ud83e\udde0 Classificador de Conte\u00fado e Iner\u00eancia (NLP / LLM / ECP)", "community": 97, "community_name": "\ud83e\udde0 TextNLPClassifierApp", "source_file": "README.md", "file_type": "document", "degree": 6}, {"id": "readme_o_que_\u00e9_e_como_funciona", "label": "O que \u00e9 e Como Funciona", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "O que \u00e9 e Como Funciona", "community": 97, "community_name": "\ud83e\udde0 TextNLPClassifierApp", "source_file": "README.md", "file_type": "document", "degree": 1}, {"id": "readme_arquitetura_de_classifica\u00e7\u00e3o_em_3_tiers", "label": "Arquitetura de Classifica\u00e7\u00e3o em 3 Tiers", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Arquitetura de Classifica\u00e7\u00e3o em 3 Tiers", "community": 97, "community_name": "\ud83e\udde0 TextNLPClassifierApp", "source_file": "README.md", "file_type": "document", "degree": 1}, {"id": "readme_categorias_de_decis\u00e3o", "label": "Categorias de Decis\u00e3o", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Categorias de Decis\u00e3o", "community": 97, "community_name": "\ud83e\udde0 TextNLPClassifierApp", "source_file": "README.md", "file_type": "document", "degree": 1}, {"id": "readme_formato_do_ecp_snapshot_e_markdown", "label": "Formato do ECP Snapshot e Markdown", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Formato do ECP Snapshot e Markdown", "community": 97, "community_name": "\ud83e\udde0 TextNLPClassifierApp", "source_file": "README.md", "file_type": "document", "degree": 2}, {"id": "readme_exemplo_de_ecp_snapshot_ecp_sample_json", "label": "Exemplo de ECP Snapshot (`ecp_sample.json`):", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Exemplo de ECP Snapshot (`ecp_sample.json`):", "community": 97, "community_name": "\ud83e\udde0 TextNLPClassifierApp", "source_file": "README.md", "file_type": "document", "degree": 1}, {"id": "readme_exemplos_de_uso_cli", "label": "Exemplos de Uso CLI", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Exemplos de Uso CLI", "community": 97, "community_name": "\ud83e\udde0 TextNLPClassifierApp", "source_file": "README.md", "file_type": "document", "degree": 1}, {"id": "readme_2_extrator_de_manchetes_do_google_news", "label": "2. \ud83d\udcf0 Extrator de Manchetes do Google News", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 14.8, "font": {"size": 12, "color": "#ffffff"}, "title": "2. \ud83d\udcf0 Extrator de Manchetes do Google News", "community": 97, "community_name": "\ud83e\udde0 TextNLPClassifierApp", "source_file": "README.md", "file_type": "document", "degree": 5}, {"id": "readme_o_que_\u00e9_e_como_funciona_153", "label": "O que \u00e9 e Como Funciona", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "O que \u00e9 e Como Funciona", "community": 97, "community_name": "\ud83e\udde0 TextNLPClassifierApp", "source_file": "README.md", "file_type": "document", "degree": 1}, {"id": "readme_diferenciais_t\u00e9cnicos", "label": "Diferenciais T\u00e9cnicos", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Diferenciais T\u00e9cnicos", "community": 97, "community_name": "\ud83e\udde0 TextNLPClassifierApp", "source_file": "README.md", "file_type": "document", "degree": 1}, {"id": "readme_argumentos_e_flags_de_linha_de_comando", "label": "Argumentos e Flags de Linha de Comando", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Argumentos e Flags de Linha de Comando", "community": 97, "community_name": "\ud83e\udde0 TextNLPClassifierApp", "source_file": "README.md", "file_type": "document", "degree": 1}, {"id": "readme_exemplos_pr\u00e1ticos_de_uso", "label": "Exemplos Pr\u00e1ticos de Uso", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 14.8, "font": {"size": 12, "color": "#ffffff"}, "title": "Exemplos Pr\u00e1ticos de Uso", "community": 97, "community_name": "\ud83e\udde0 TextNLPClassifierApp", "source_file": "README.md", "file_type": "document", "degree": 5}, {"id": "readme_1_river_plate_argentina_espanhol_2_p\u00e1ginas_salvar_em_arquivo", "label": "1. River Plate (Argentina / Espanhol / 2 P\u00e1ginas / Salvar em Arquivo)", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "1. River Plate (Argentina / Espanhol / 2 P\u00e1ginas / Salvar em Arquivo)", "community": 97, "community_name": "\ud83e\udde0 TextNLPClassifierApp", "source_file": "README.md", "file_type": "document", "degree": 1}, {"id": "readme_2_cruzeiro_brasil_portugu\u00eas_formatado_no_terminal", "label": "2. Cruzeiro (Brasil / Portugu\u00eas / Formatado no Terminal)", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "2. Cruzeiro (Brasil / Portugu\u00eas / Formatado no Terminal)", "community": 97, "community_name": "\ud83e\udde0 TextNLPClassifierApp", "source_file": "README.md", "file_type": "document", "degree": 1}, {"id": "readme_3_f\u00f3rmula_1_inglaterra_ingl\u00eas", "label": "3. F\u00f3rmula 1 (Inglaterra / Ingl\u00eas)", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "3. F\u00f3rmula 1 (Inglaterra / Ingl\u00eas)", "community": 97, "community_name": "\ud83e\udde0 TextNLPClassifierApp", "source_file": "README.md", "file_type": "document", "degree": 1}, {"id": "readme_4_filtragem_com_jq_em_modo_silencioso", "label": "4. Filtragem com `jq` em Modo Silencioso", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "4. Filtragem com `jq` em Modo Silencioso", "community": 97, "community_name": "\ud83e\udde0 TextNLPClassifierApp", "source_file": "README.md", "file_type": "document", "degree": 1}, {"id": "readme_estrutura_do_projeto", "label": "\ud83d\udcc1 Estrutura do Projeto", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "\ud83d\udcc1 Estrutura do Projeto", "community": 97, "community_name": "\ud83e\udde0 TextNLPClassifierApp", "source_file": "README.md", "file_type": "document", "degree": 1}, {"id": "readme_testes_e_qualidade_de_c\u00f3digo", "label": "\ud83e\uddea Testes e Qualidade de C\u00f3digo", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "\ud83e\uddea Testes e Qualidade de C\u00f3digo", "community": 97, "community_name": "\ud83e\udde0 TextNLPClassifierApp", "source_file": "README.md", "file_type": "document", "degree": 1}, {"id": "readme_licen\u00e7a", "label": "\ud83d\udcc4 Licen\u00e7a", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "\ud83d\udcc4 Licen\u00e7a", "community": 97, "community_name": "\ud83e\udde0 TextNLPClassifierApp", "source_file": "README.md", "file_type": "document", "degree": 1}, {"id": "docs_googlenews_extractor_guia_completo", "label": "googlenews_extractor_guia_completo.md", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "googlenews_extractor_guia_completo.md", "community": 81, "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", "source_file": "docs/googlenews_extractor_guia_completo.md", "file_type": "document", "degree": 1}, {"id": "docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", "label": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 18.7, "font": {"size": 12, "color": "#ffffff"}, "title": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", "community": 81, "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", "source_file": "docs/googlenews_extractor_guia_completo.md", "file_type": "document", "degree": 9}, {"id": "docs_googlenews_extractor_guia_completo_1_vis\u00e3o_geral_arquitetura", "label": "1. Vis\u00e3o geral (arquitetura)", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "1. Vis\u00e3o geral (arquitetura)", "community": 81, "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", "source_file": "docs/googlenews_extractor_guia_completo.md", "file_type": "document", "degree": 1}, {"id": "docs_googlenews_extractor_guia_completo_2_entrada", "label": "2. Entrada", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "2. Entrada", "community": 81, "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", "source_file": "docs/googlenews_extractor_guia_completo.md", "file_type": "document", "degree": 3}, {"id": "docs_googlenews_extractor_guia_completo_2_1_dto_de_entrada_googlenews_etl_application_dtos_extract_news_dto_py", "label": "2.1 DTO de entrada (`googlenews_etl/application/dtos/extract_news_dto.py`)", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "2.1 DTO de entrada (`googlenews_etl/application/dtos/extract_news_dto.py`)", "community": 81, "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", "source_file": "docs/googlenews_extractor_guia_completo.md", "file_type": "document", "degree": 1}, {"id": "docs_googlenews_extractor_guia_completo_2_2_value_object_de_valida\u00e7\u00e3o_googlenews_etl_domain_entities_search_query_py", "label": "2.2 Value Object de valida\u00e7\u00e3o (`googlenews_etl/domain/entities/search_query.py`)", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "2.2 Value Object de valida\u00e7\u00e3o (`googlenews_etl/domain/entities/search_query.py`)", "community": 81, "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", "source_file": "docs/googlenews_extractor_guia_completo.md", "file_type": "document", "degree": 1}, {"id": "docs_googlenews_extractor_guia_completo_3_processamento_passo_a_passo", "label": "3. Processamento \u2014 passo a passo", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 15.8, "font": {"size": 12, "color": "#ffffff"}, "title": "3. Processamento \u2014 passo a passo", "community": 81, "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", "source_file": "docs/googlenews_extractor_guia_completo.md", "file_type": "document", "degree": 6}, {"id": "docs_googlenews_extractor_guia_completo_3_1_o_caso_de_uso_googlenews_etl_application_use_cases_extract_news_use_case_py", "label": "3.1 O caso de uso (`googlenews_etl/application/use_cases/extract_news_use_case.py`)", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "3.1 O caso de uso (`googlenews_etl/application/use_cases/extract_news_use_case.py`)", "community": 81, "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", "source_file": "docs/googlenews_extractor_guia_completo.md", "file_type": "document", "degree": 1}, {"id": "docs_googlenews_extractor_guia_completo_3_2_a_porta_googlenews_etl_domain_ports_news_extractor_port_py", "label": "3.2 A porta (`googlenews_etl/domain/ports/news_extractor_port.py`)", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "3.2 A porta (`googlenews_etl/domain/ports/news_extractor_port.py`)", "community": 81, "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", "source_file": "docs/googlenews_extractor_guia_completo.md", "file_type": "document", "degree": 1}, {"id": "docs_googlenews_extractor_guia_completo_3_3_o_adaptador_concreto_o_cora\u00e7\u00e3o_do_extrator_googlenews_etl_infrastructure_adapters_google_news_extractor_adapter_py", "label": "3.3 O adaptador concreto \u2014 o cora\u00e7\u00e3o do extrator (`googlenews_etl/infrastructure/adapters/google_news_extractor_adapter.py`)", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 14.8, "font": {"size": 12, "color": "#ffffff"}, "title": "3.3 O adaptador concreto \u2014 o cora\u00e7\u00e3o do extrator (`googlenews_etl/infrastructure/adapters/google_news_extractor_adapter.py`)", "community": 81, "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", "source_file": "docs/googlenews_extractor_guia_completo.md", "file_type": "document", "degree": 5}, {"id": "docs_googlenews_extractor_guia_completo_3_3_1_inicializa\u00e7\u00e3o_sess\u00e3o_http_com_impersona\u00e7\u00e3o_de_browser", "label": "3.3.1 Inicializa\u00e7\u00e3o: sess\u00e3o HTTP com impersona\u00e7\u00e3o de browser", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "3.3.1 Inicializa\u00e7\u00e3o: sess\u00e3o HTTP com impersona\u00e7\u00e3o de browser", "community": 81, "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", "source_file": "docs/googlenews_extractor_guia_completo.md", "file_type": "document", "degree": 1}, {"id": "docs_googlenews_extractor_guia_completo_3_3_2_mapeamento_idioma_par\u00e2metros_hl_gl_get_hl_gl", "label": "3.3.2 Mapeamento idioma \u2192 par\u00e2metros `hl`/`gl` (`_get_hl_gl`)", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "3.3.2 Mapeamento idioma \u2192 par\u00e2metros `hl`/`gl` (`_get_hl_gl`)", "community": 81, "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", "source_file": "docs/googlenews_extractor_guia_completo.md", "file_type": "document", "degree": 1}, {"id": "docs_googlenews_extractor_guia_completo_3_3_3_extra\u00e7\u00e3o_do_rss_o_ponto_fundamental_fetch_rss", "label": "3.3.3 \u2605 Extra\u00e7\u00e3o do RSS \u2014 o ponto fundamental (`_fetch_rss`)", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "3.3.3 \u2605 Extra\u00e7\u00e3o do RSS \u2014 o ponto fundamental (`_fetch_rss`)", "community": 81, "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", "source_file": "docs/googlenews_extractor_guia_completo.md", "file_type": "document", "degree": 1}, {"id": "docs_googlenews_extractor_guia_completo_3_3_4_orquestra\u00e7\u00e3o_com_resolu\u00e7\u00e3o_de_urls_extract", "label": "3.3.4 Orquestra\u00e7\u00e3o com resolu\u00e7\u00e3o de URLs (`extract`)", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "3.3.4 Orquestra\u00e7\u00e3o com resolu\u00e7\u00e3o de URLs (`extract`)", "community": 81, "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", "source_file": "docs/googlenews_extractor_guia_completo.md", "file_type": "document", "degree": 1}, {"id": "docs_googlenews_extractor_guia_completo_3_4_resolu\u00e7\u00e3o_de_urls_googlenews_etl_infrastructure_adapters_playwright_url_resolver_adapter_py", "label": "3.4 Resolu\u00e7\u00e3o de URLs (`googlenews_etl/infrastructure/adapters/playwright_url_resolver_adapter.py`)", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "3.4 Resolu\u00e7\u00e3o de URLs (`googlenews_etl/infrastructure/adapters/playwright_url_resolver_adapter.py`)", "community": 81, "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", "source_file": "docs/googlenews_extractor_guia_completo.md", "file_type": "document", "degree": 1}, {"id": "docs_googlenews_extractor_guia_completo_3_5_rate_limiter_googlenews_etl_domain_services_rate_limiter_service_py", "label": "3.5 Rate limiter (`googlenews_etl/domain/services/rate_limiter_service.py`)", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "3.5 Rate limiter (`googlenews_etl/domain/services/rate_limiter_service.py`)", "community": 81, "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", "source_file": "docs/googlenews_extractor_guia_completo.md", "file_type": "document", "degree": 1}, {"id": "docs_googlenews_extractor_guia_completo_4_entidade_de_dom\u00ednio_da_not\u00edcia_googlenews_etl_domain_entities_news_article_py", "label": "4. Entidade de dom\u00ednio da not\u00edcia (`googlenews_etl/domain/entities/news_article.py`)", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "4. Entidade de dom\u00ednio da not\u00edcia (`googlenews_etl/domain/entities/news_article.py`)", "community": 81, "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", "source_file": "docs/googlenews_extractor_guia_completo.md", "file_type": "document", "degree": 1}, {"id": "docs_googlenews_extractor_guia_completo_5_sa\u00edda", "label": "5. Sa\u00edda", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "5. Sa\u00edda", "community": 81, "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", "source_file": "docs/googlenews_extractor_guia_completo.md", "file_type": "document", "degree": 3}, {"id": "docs_googlenews_extractor_guia_completo_5_1_dtos_de_sa\u00edda_googlenews_etl_application_dtos_extract_news_dto_py", "label": "5.1 DTOs de sa\u00edda (`googlenews_etl/application/dtos/extract_news_dto.py`)", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "5.1 DTOs de sa\u00edda (`googlenews_etl/application/dtos/extract_news_dto.py`)", "community": 81, "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", "source_file": "docs/googlenews_extractor_guia_completo.md", "file_type": "document", "degree": 1}, {"id": "docs_googlenews_extractor_guia_completo_5_2_exemplo_de_sa\u00edda_json", "label": "5.2 Exemplo de sa\u00edda JSON", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "5.2 Exemplo de sa\u00edda JSON", "community": 81, "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", "source_file": "docs/googlenews_extractor_guia_completo.md", "file_type": "document", "degree": 1}, {"id": "docs_googlenews_extractor_guia_completo_6_resumo_do_fluxo_completo_entrada_sa\u00edda", "label": "6. Resumo do fluxo completo (entrada \u2192 sa\u00edda)", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "6. Resumo do fluxo completo (entrada \u2192 sa\u00edda)", "community": 81, "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", "source_file": "docs/googlenews_extractor_guia_completo.md", "file_type": "document", "degree": 1}, {"id": "docs_googlenews_extractor_guia_completo_7_depend\u00eancias_para_rodar_o_que_n\u00e3o_est\u00e1_nos_4_arquivos_centrais", "label": "7. Depend\u00eancias para rodar (o que N\u00c3O est\u00e1 nos 4 arquivos centrais)", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "7. Depend\u00eancias para rodar (o que N\u00c3O est\u00e1 nos 4 arquivos centrais)", "community": 81, "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", "source_file": "docs/googlenews_extractor_guia_completo.md", "file_type": "document", "degree": 3}, {"id": "docs_googlenews_extractor_guia_completo_depend\u00eancias_de_bibliotecas_requirements", "label": "Depend\u00eancias de bibliotecas (requirements)", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Depend\u00eancias de bibliotecas (requirements)", "community": 81, "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", "source_file": "docs/googlenews_extractor_guia_completo.md", "file_type": "document", "degree": 1}, {"id": "docs_googlenews_extractor_guia_completo_comportamentos_observ\u00e1veis_honestidade", "label": "Comportamentos observ\u00e1veis (honestidade)", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Comportamentos observ\u00e1veis (honestidade)", "community": 81, "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", "source_file": "docs/googlenews_extractor_guia_completo.md", "file_type": "document", "degree": 1}, {"id": "docs_googlenews_extractor_guia_completo_8_como_chamar_exemplo_de_uso", "label": "8. Como chamar (exemplo de uso)", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "8. Como chamar (exemplo de uso)", "community": 81, "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", "source_file": "docs/googlenews_extractor_guia_completo.md", "file_type": "document", "degree": 1}, {"id": "examples_content_northvolt_de", "label": "content_northvolt_de.md", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "content_northvolt_de.md", "community": 49, "community_name": "content_northvolt_de.md", "source_file": "examples/content_northvolt_de.md", "file_type": "document", "degree": 1}, {"id": "examples_content_northvolt_de_batteriezellproduktion_f\u00fcr_europ\u00e4ische_elektrofahrzeuge", "label": "Batteriezellproduktion f\u00fcr europ\u00e4ische Elektrofahrzeuge", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Batteriezellproduktion f\u00fcr europ\u00e4ische Elektrofahrzeuge", "community": 49, "community_name": "content_northvolt_de.md", "source_file": "examples/content_northvolt_de.md", "file_type": "document", "degree": 1}, {"id": "examples_content_presal_pt", "label": "content_presal_pt.md", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "content_presal_pt.md", "community": 50, "community_name": "content_presal_pt.md", "source_file": "examples/content_presal_pt.md", "file_type": "document", "degree": 1}, {"id": "examples_content_presal_pt_petrobras_bate_recorde_hist\u00f3rico_de_produ\u00e7\u00e3o_no_pr\u00e9_sal", "label": "Petrobras bate recorde hist\u00f3rico de produ\u00e7\u00e3o no pr\u00e9-sal", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Petrobras bate recorde hist\u00f3rico de produ\u00e7\u00e3o no pr\u00e9-sal", "community": 50, "community_name": "content_presal_pt.md", "source_file": "examples/content_presal_pt.md", "file_type": "document", "degree": 1}, {"id": "examples_content_tangential_es", "label": "content_tangential_es.md", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "content_tangential_es.md", "community": 51, "community_name": "content_tangential_es.md", "source_file": "examples/content_tangential_es.md", "file_type": "document", "degree": 1}, {"id": "examples_content_tangential_es_reflexiones_sobre_el_debate_pol\u00edtico_y_la_diplomacia_regional", "label": "Reflexiones sobre el debate pol\u00edtico y la diplomacia regional", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Reflexiones sobre el debate pol\u00edtico y la diplomacia regional", "community": 51, "community_name": "content_tangential_es.md", "source_file": "examples/content_tangential_es.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_checklists_poc_readiness", "label": "poc-readiness.md", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "poc-readiness.md", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/checklists/poc-readiness.md", "file_type": "document", "degree": 3}, {"id": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_poc_readiness_requirements_quality_checklist_multilingual_nlp_entity_inherence_classifier", "label": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 16.8, "font": {"size": 12, "color": "#ffffff"}, "title": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/checklists/poc-readiness.md", "file_type": "document", "degree": 7}, {"id": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_1_requirement_completeness_scope_boundaries", "label": "1. Requirement Completeness & Scope Boundaries", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "1. Requirement Completeness & Scope Boundaries", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/checklists/poc-readiness.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_2_requirement_clarity_decision_semantics", "label": "2. Requirement Clarity & Decision Semantics", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "2. Requirement Clarity & Decision Semantics", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/checklists/poc-readiness.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_3_requirement_consistency_alignment", "label": "3. Requirement Consistency & Alignment", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "3. Requirement Consistency & Alignment", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/checklists/poc-readiness.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_4_acceptance_criteria_measurability", "label": "4. Acceptance Criteria & Measurability", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "4. Acceptance Criteria & Measurability", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/checklists/poc-readiness.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_5_scenario_edge_case_coverage", "label": "5. Scenario & Edge Case Coverage", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "5. Scenario & Edge Case Coverage", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/checklists/poc-readiness.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_notes", "label": "Notes", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Notes", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/checklists/poc-readiness.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_checklists_requirements", "label": "001-multilingual-entity-classifier/checklists/requirements.md", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "001-multilingual-entity-classifier/checklists/requirements.md", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "file_type": "document", "degree": 2}, {"id": "specs_001_multilingual_entity_classifier_checklists_requirements_specification_quality_checklist_multilingual_nlp_entity_inherence_classifier", "label": "Specification Quality Checklist: Multilingual NLP Entity Inherence Classifier", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 14.8, "font": {"size": 12, "color": "#ffffff"}, "title": "Specification Quality Checklist: Multilingual NLP Entity Inherence Classifier", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "file_type": "document", "degree": 5}, {"id": "specs_001_multilingual_entity_classifier_checklists_requirements_content_quality", "label": "Content Quality", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Content Quality", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_checklists_requirements_requirement_completeness", "label": "Requirement Completeness", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Requirement Completeness", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_checklists_requirements_feature_readiness", "label": "Feature Readiness", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Feature Readiness", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_checklists_requirements_notes", "label": "Notes", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Notes", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_contracts_cli_contract", "label": "cli-contract.md", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "cli-contract.md", "community": 44, "community_name": "2. Standard Streams & Exit Codes", "source_file": "specs/001-multilingual-entity-classifier/contracts/cli-contract.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_contracts_cli_contract_cli_contract_interface_specification_poc", "label": "CLI Contract & Interface Specification (POC)", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "CLI Contract & Interface Specification (POC)", "community": 44, "community_name": "2. Standard Streams & Exit Codes", "source_file": "specs/001-multilingual-entity-classifier/contracts/cli-contract.md", "file_type": "document", "degree": 3}, {"id": "specs_001_multilingual_entity_classifier_contracts_cli_contract_1_command_line_interface", "label": "1. Command Line Interface", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "1. Command Line Interface", "community": 44, "community_name": "2. Standard Streams & Exit Codes", "source_file": "specs/001-multilingual-entity-classifier/contracts/cli-contract.md", "file_type": "document", "degree": 2}, {"id": "specs_001_multilingual_entity_classifier_contracts_cli_contract_1_1_arguments_options", "label": "1.1 Arguments & Options", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "1.1 Arguments & Options", "community": 44, "community_name": "2. Standard Streams & Exit Codes", "source_file": "specs/001-multilingual-entity-classifier/contracts/cli-contract.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_contracts_cli_contract_2_standard_streams_exit_codes", "label": "2. Standard Streams & Exit Codes", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "2. Standard Streams & Exit Codes", "community": 44, "community_name": "2. Standard Streams & Exit Codes", "source_file": "specs/001-multilingual-entity-classifier/contracts/cli-contract.md", "file_type": "document", "degree": 3}, {"id": "specs_001_multilingual_entity_classifier_contracts_cli_contract_2_1_exit_codes", "label": "2.1 Exit Codes", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "2.1 Exit Codes", "community": 44, "community_name": "2. Standard Streams & Exit Codes", "source_file": "specs/001-multilingual-entity-classifier/contracts/cli-contract.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_contracts_cli_contract_2_2_standard_output_stdout_standard_error_stderr", "label": "2.2 Standard Output (`stdout`) / Standard Error (`stderr`)", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "2.2 Standard Output (`stdout`) / Standard Error (`stderr`)", "community": 44, "community_name": "2. Standard Streams & Exit Codes", "source_file": "specs/001-multilingual-entity-classifier/contracts/cli-contract.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_data_model", "label": "001-multilingual-entity-classifier/data-model.md", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "001-multilingual-entity-classifier/data-model.md", "community": 42, "community_name": "1. Input Schemas", "source_file": "specs/001-multilingual-entity-classifier/data-model.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_data_model_data_models_schemas_poc", "label": "Data Models & Schemas (POC)", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Data Models & Schemas (POC)", "community": 42, "community_name": "1. Input Schemas", "source_file": "specs/001-multilingual-entity-classifier/data-model.md", "file_type": "document", "degree": 3}, {"id": "specs_001_multilingual_entity_classifier_data_model_1_input_schemas", "label": "1. Input Schemas", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "1. Input Schemas", "community": 42, "community_name": "1. Input Schemas", "source_file": "specs/001-multilingual-entity-classifier/data-model.md", "file_type": "document", "degree": 3}, {"id": "specs_001_multilingual_entity_classifier_data_model_1_1_ecp_snapshot_schema_snapshot_json", "label": "1.1 ECP Snapshot Schema (`snapshot.json`)", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "1.1 ECP Snapshot Schema (`snapshot.json`)", "community": 42, "community_name": "1. Input Schemas", "source_file": "specs/001-multilingual-entity-classifier/data-model.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_data_model_1_2_content_item_schema_content_md", "label": "1.2 Content Item Schema (`content.md`)", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "1.2 Content Item Schema (`content.md`)", "community": 42, "community_name": "1. Input Schemas", "source_file": "specs/001-multilingual-entity-classifier/data-model.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_data_model_2_output_schemas", "label": "2. Output Schemas", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "2. Output Schemas", "community": 42, "community_name": "1. Input Schemas", "source_file": "specs/001-multilingual-entity-classifier/data-model.md", "file_type": "document", "degree": 3}, {"id": "specs_001_multilingual_entity_classifier_data_model_2_1_classification_success_result_schema_result_json", "label": "2.1 Classification Success Result Schema (`result.json`)", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "2.1 Classification Success Result Schema (`result.json`)", "community": 42, "community_name": "1. Input Schemas", "source_file": "specs/001-multilingual-entity-classifier/data-model.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_data_model_2_2_error_result_schema", "label": "2.2 Error Result Schema", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "2.2 Error Result Schema", "community": 42, "community_name": "1. Input Schemas", "source_file": "specs/001-multilingual-entity-classifier/data-model.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_plan", "label": "001-multilingual-entity-classifier/plan.md", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "001-multilingual-entity-classifier/plan.md", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/plan.md", "file_type": "document", "degree": 4}, {"id": "specs_001_multilingual_entity_classifier_plan_implementation_plan_multilingual_nlp_entity_inherence_classifier_poc", "label": "Implementation Plan: Multilingual NLP Entity Inherence Classifier (POC)", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 15.8, "font": {"size": 12, "color": "#ffffff"}, "title": "Implementation Plan: Multilingual NLP Entity Inherence Classifier (POC)", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/plan.md", "file_type": "document", "degree": 6}, {"id": "specs_001_multilingual_entity_classifier_plan_summary", "label": "Summary", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Summary", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/plan.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_plan_technical_context", "label": "Technical Context", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Technical Context", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/plan.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_plan_constitution_check", "label": "Constitution Check", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Constitution Check", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/plan.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_plan_project_structure", "label": "Project Structure", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Project Structure", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/plan.md", "file_type": "document", "degree": 3}, {"id": "specs_001_multilingual_entity_classifier_plan_documentation_this_feature", "label": "Documentation (this feature)", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Documentation (this feature)", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/plan.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_plan_source_code_repository_root", "label": "Source Code (repository root)", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Source Code (repository root)", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/plan.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_plan_complexity_tracking", "label": "Complexity Tracking", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Complexity Tracking", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/plan.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_quickstart", "label": "001-multilingual-entity-classifier/quickstart.md", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "001-multilingual-entity-classifier/quickstart.md", "community": 43, "community_name": "2. Basic CLI Usage Examples", "source_file": "specs/001-multilingual-entity-classifier/quickstart.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_quickstart_quickstart_validation_guide_poc", "label": "Quickstart & Validation Guide (POC)", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Quickstart & Validation Guide (POC)", "community": 43, "community_name": "2. Basic CLI Usage Examples", "source_file": "specs/001-multilingual-entity-classifier/quickstart.md", "file_type": "document", "degree": 4}, {"id": "specs_001_multilingual_entity_classifier_quickstart_1_prerequisites_installation", "label": "1. Prerequisites & Installation", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "1. Prerequisites & Installation", "community": 43, "community_name": "2. Basic CLI Usage Examples", "source_file": "specs/001-multilingual-entity-classifier/quickstart.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_quickstart_2_basic_cli_usage_examples", "label": "2. Basic CLI Usage Examples", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "2. Basic CLI Usage Examples", "community": 43, "community_name": "2. Basic CLI Usage Examples", "source_file": "specs/001-multilingual-entity-classifier/quickstart.md", "file_type": "document", "degree": 4}, {"id": "specs_001_multilingual_entity_classifier_quickstart_2_1_direct_inherence_portuguese", "label": "2.1 Direct Inherence (Portuguese)", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "2.1 Direct Inherence (Portuguese)", "community": 43, "community_name": "2. Basic CLI Usage Examples", "source_file": "specs/001-multilingual-entity-classifier/quickstart.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_quickstart_2_2_contextual_inherence_via_graph_snapshot_german", "label": "2.2 Contextual Inherence via Graph Snapshot (German)", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "2.2 Contextual Inherence via Graph Snapshot (German)", "community": 43, "community_name": "2. Basic CLI Usage Examples", "source_file": "specs/001-multilingual-entity-classifier/quickstart.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_quickstart_2_3_tangential_mention_spanish", "label": "2.3 Tangential Mention (Spanish)", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "2.3 Tangential Mention (Spanish)", "community": 43, "community_name": "2. Basic CLI Usage Examples", "source_file": "specs/001-multilingual-entity-classifier/quickstart.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_quickstart_3_running_the_controlled_24_case_benchmark", "label": "3. Running the Controlled 24-Case Benchmark", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "3. Running the Controlled 24-Case Benchmark", "community": 43, "community_name": "2. Basic CLI Usage Examples", "source_file": "specs/001-multilingual-entity-classifier/quickstart.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_research", "label": "001-multilingual-entity-classifier/research.md", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "001-multilingual-entity-classifier/research.md", "community": 41, "community_name": "1. Technical Decisions & Tradeoffs", "source_file": "specs/001-multilingual-entity-classifier/research.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_research_technical_research_architecture_decisions_poc", "label": "Technical Research & Architecture Decisions (POC)", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Technical Research & Architecture Decisions (POC)", "community": 41, "community_name": "1. Technical Decisions & Tradeoffs", "source_file": "specs/001-multilingual-entity-classifier/research.md", "file_type": "document", "degree": 3}, {"id": "specs_001_multilingual_entity_classifier_research_1_technical_decisions_tradeoffs", "label": "1. Technical Decisions & Tradeoffs", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 15.8, "font": {"size": 12, "color": "#ffffff"}, "title": "1. Technical Decisions & Tradeoffs", "community": 41, "community_name": "1. Technical Decisions & Tradeoffs", "source_file": "specs/001-multilingual-entity-classifier/research.md", "file_type": "document", "degree": 6}, {"id": "specs_001_multilingual_entity_classifier_research_decision_1_execution_engine_cli_architecture", "label": "Decision 1: Execution Engine & CLI Architecture", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Decision 1: Execution Engine & CLI Architecture", "community": 41, "community_name": "1. Technical Decisions & Tradeoffs", "source_file": "specs/001-multilingual-entity-classifier/research.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_research_decision_2_multilingual_language_detection_normalization_tier_1_core", "label": "Decision 2: Multilingual Language Detection & Normalization (Tier 1 Core)", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Decision 2: Multilingual Language Detection & Normalization (Tier 1 Core)", "community": 41, "community_name": "1. Technical Decisions & Tradeoffs", "source_file": "specs/001-multilingual-entity-classifier/research.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_research_decision_3_materialized_ecp_snapshot_contract_matching_logic", "label": "Decision 3: Materialized ECP Snapshot Contract & Matching Logic", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Decision 3: Materialized ECP Snapshot Contract & Matching Logic", "community": 41, "community_name": "1. Technical Decisions & Tradeoffs", "source_file": "specs/001-multilingual-entity-classifier/research.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_research_decision_4_tier_2_embeddings_tier_3_llm_optional_adapters", "label": "Decision 4: Tier 2 (Embeddings) & Tier 3 (LLM) Optional Adapters", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Decision 4: Tier 2 (Embeddings) & Tier 3 (LLM) Optional Adapters", "community": 41, "community_name": "1. Technical Decisions & Tradeoffs", "source_file": "specs/001-multilingual-entity-classifier/research.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_research_decision_5_controlled_24_case_poc_benchmark_suite", "label": "Decision 5: Controlled 24-Case POC Benchmark Suite", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Decision 5: Controlled 24-Case POC Benchmark Suite", "community": 41, "community_name": "1. Technical Decisions & Tradeoffs", "source_file": "specs/001-multilingual-entity-classifier/research.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_research_2_standardized_error_handling_strategy", "label": "2. Standardized Error Handling Strategy", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "2. Standardized Error Handling Strategy", "community": 41, "community_name": "1. Technical Decisions & Tradeoffs", "source_file": "specs/001-multilingual-entity-classifier/research.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_spec", "label": "001-multilingual-entity-classifier/spec.md", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 14.8, "font": {"size": 12, "color": "#ffffff"}, "title": "001-multilingual-entity-classifier/spec.md", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/spec.md", "file_type": "document", "degree": 5}, {"id": "specs_001_multilingual_entity_classifier_spec_feature_specification_multilingual_nlp_entity_inherence_classifier_poc", "label": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 15.8, "font": {"size": 12, "color": "#ffffff"}, "title": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", "community": 102, "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/spec.md", "file_type": "document", "degree": 6}, {"id": "specs_001_multilingual_entity_classifier_spec_clarifications", "label": "Clarifications", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Clarifications", "community": 102, "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/spec.md", "file_type": "document", "degree": 2}, {"id": "specs_001_multilingual_entity_classifier_spec_session_2026_08_19", "label": "Session 2026-08-19", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Session 2026-08-19", "community": 102, "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/spec.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_spec_user_scenarios_testing_mandatory", "label": "User Scenarios & Testing *(mandatory)*", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "User Scenarios & Testing *(mandatory)*", "community": 102, "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/spec.md", "file_type": "document", "degree": 3}, {"id": "specs_001_multilingual_entity_classifier_spec_user_story_1_classify_content_inherence_via_cli_for_an_ecp_snapshot_priority_p1", "label": "User Story 1 - Classify Content Inherence via CLI for an ECP Snapshot (Priority: P1)", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "User Story 1 - Classify Content Inherence via CLI for an ECP Snapshot (Priority: P1)", "community": 102, "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/spec.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_spec_user_story_2_multilingual_language_support_edge_validation_priority_p2", "label": "User Story 2 - Multilingual Language Support & Edge Validation (Priority: P2)", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "User Story 2 - Multilingual Language Support & Edge Validation (Priority: P2)", "community": 102, "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/spec.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_spec_requirements_mandatory", "label": "Requirements *(mandatory)*", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Requirements *(mandatory)*", "community": 102, "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/spec.md", "file_type": "document", "degree": 3}, {"id": "specs_001_multilingual_entity_classifier_spec_functional_requirements", "label": "Functional Requirements", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Functional Requirements", "community": 102, "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/spec.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_spec_key_entities_data_models_domain_entities", "label": "Key Entities *(data models & domain entities)*", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Key Entities *(data models & domain entities)*", "community": 102, "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/spec.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_spec_success_criteria_mandatory", "label": "Success Criteria *(mandatory)*", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Success Criteria *(mandatory)*", "community": 102, "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/spec.md", "file_type": "document", "degree": 2}, {"id": "specs_001_multilingual_entity_classifier_spec_measurable_outcomes", "label": "Measurable Outcomes", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Measurable Outcomes", "community": 102, "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/spec.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_spec_assumptions_scope", "label": "Assumptions & Scope", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Assumptions & Scope", "community": 102, "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/spec.md", "file_type": "document", "degree": 3}, {"id": "specs_001_multilingual_entity_classifier_spec_assumptions", "label": "Assumptions", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Assumptions", "community": 102, "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/spec.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_spec_explicit_out_of_scope_poc", "label": "Explicit Out of Scope (POC)", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Explicit Out of Scope (POC)", "community": 102, "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/spec.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_tasks", "label": "001-multilingual-entity-classifier/tasks.md", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "001-multilingual-entity-classifier/tasks.md", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/tasks.md", "file_type": "document", "degree": 3}, {"id": "specs_001_multilingual_entity_classifier_tasks_tasks_multilingual_nlp_entity_inherence_classifier_poc", "label": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 17.7, "font": {"size": 12, "color": "#ffffff"}, "title": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/tasks.md", "file_type": "document", "degree": 8}, {"id": "specs_001_multilingual_entity_classifier_tasks_phase_1_setup_shared_infrastructure", "label": "Phase 1: Setup (Shared Infrastructure)", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Phase 1: Setup (Shared Infrastructure)", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/tasks.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_tasks_phase_2_foundational_blocking_prerequisites", "label": "Phase 2: Foundational (Blocking Prerequisites)", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Phase 2: Foundational (Blocking Prerequisites)", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/tasks.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_tasks_phase_3_user_story_1_core_tier_1_deterministic_classification_cli_priority_p1_mvp", "label": "Phase 3: User Story 1 - Core Tier 1 Deterministic Classification & CLI (Priority: P1) [MVP]", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Phase 3: User Story 1 - Core Tier 1 Deterministic Classification & CLI (Priority: P1) [MVP]", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/tasks.md", "file_type": "document", "degree": 3}, {"id": "specs_001_multilingual_entity_classifier_tasks_tests_for_user_story_1", "label": "Tests for User Story 1", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Tests for User Story 1", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/tasks.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_tasks_implementation_for_user_story_1", "label": "Implementation for User Story 1", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Implementation for User Story 1", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/tasks.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_tasks_phase_4_user_story_2_multilingual_24_case_controlled_benchmark_suite_priority_p2", "label": "Phase 4: User Story 2 - Multilingual 24-Case Controlled Benchmark Suite (Priority: P2)", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Phase 4: User Story 2 - Multilingual 24-Case Controlled Benchmark Suite (Priority: P2)", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/tasks.md", "file_type": "document", "degree": 2}, {"id": "specs_001_multilingual_entity_classifier_tasks_implementation_for_user_story_2", "label": "Implementation for User Story 2", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Implementation for User Story 2", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/tasks.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_tasks_phase_5_optional_adapters_tier_2_embeddings_tier_3_llm_priority_p3", "label": "Phase 5: Optional Adapters - Tier 2 (Embeddings) & Tier 3 (LLM) (Priority: P3)", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Phase 5: Optional Adapters - Tier 2 (Embeddings) & Tier 3 (LLM) (Priority: P3)", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/tasks.md", "file_type": "document", "degree": 2}, {"id": "specs_001_multilingual_entity_classifier_tasks_implementation_for_user_story_3", "label": "Implementation for User Story 3", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Implementation for User Story 3", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/tasks.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_tasks_phase_6_polish_validation", "label": "Phase 6: Polish & Validation", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Phase 6: Polish & Validation", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/tasks.md", "file_type": "document", "degree": 1}, {"id": "specs_001_multilingual_entity_classifier_tasks_dependencies_execution_order", "label": "Dependencies & Execution Order", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Dependencies & Execution Order", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/tasks.md", "file_type": "document", "degree": 2}, {"id": "specs_001_multilingual_entity_classifier_tasks_implementation_strategy", "label": "Implementation Strategy", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Implementation Strategy", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "source_file": "specs/001-multilingual-entity-classifier/tasks.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_checklists_readiness", "label": "readiness.md", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 15.8, "font": {"size": 12, "color": "#ffffff"}, "title": "readiness.md", "community": 96, "community_name": "readiness.md", "source_file": "specs/002-google-news-extractor/checklists/readiness.md", "file_type": "document", "degree": 6}, {"id": "specs_002_google_news_extractor_checklists_readiness_general_readiness_checklist_google_news_headlines_extractor", "label": "General Readiness Checklist: Google News Headlines Extractor", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 16.8, "font": {"size": 12, "color": "#ffffff"}, "title": "General Readiness Checklist: Google News Headlines Extractor", "community": 92, "community_name": "General Readiness Checklist: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/checklists/readiness.md", "file_type": "document", "degree": 7}, {"id": "specs_002_google_news_extractor_checklists_readiness_cli_interface_parameter_contracts", "label": "CLI Interface & Parameter Contracts", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "CLI Interface & Parameter Contracts", "community": 92, "community_name": "General Readiness Checklist: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/checklists/readiness.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_checklists_readiness_scraping_engine_feed_mapping", "label": "Scraping Engine & Feed Mapping", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Scraping Engine & Feed Mapping", "community": 92, "community_name": "General Readiness Checklist: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/checklists/readiness.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_checklists_readiness_data_sanitization_article_extraction", "label": "Data Sanitization & Article Extraction", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Data Sanitization & Article Extraction", "community": 92, "community_name": "General Readiness Checklist: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/checklists/readiness.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_checklists_readiness_error_handling_edge_cases", "label": "Error Handling & Edge Cases", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Error Handling & Edge Cases", "community": 92, "community_name": "General Readiness Checklist: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/checklists/readiness.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_checklists_readiness_non_functional_operational_readiness", "label": "Non-Functional & Operational Readiness", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Non-Functional & Operational Readiness", "community": 92, "community_name": "General Readiness Checklist: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/checklists/readiness.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_checklists_readiness_notes", "label": "Notes", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Notes", "community": 92, "community_name": "General Readiness Checklist: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/checklists/readiness.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_checklists_requirements", "label": "002-google-news-extractor/checklists/requirements.md", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "002-google-news-extractor/checklists/requirements.md", "community": 94, "community_name": "Specification Quality Checklist: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/checklists/requirements.md", "file_type": "document", "degree": 2}, {"id": "specs_002_google_news_extractor_checklists_requirements_specification_quality_checklist_google_news_headlines_extractor", "label": "Specification Quality Checklist: Google News Headlines Extractor", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 14.8, "font": {"size": 12, "color": "#ffffff"}, "title": "Specification Quality Checklist: Google News Headlines Extractor", "community": 94, "community_name": "Specification Quality Checklist: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/checklists/requirements.md", "file_type": "document", "degree": 5}, {"id": "specs_002_google_news_extractor_checklists_requirements_content_quality", "label": "Content Quality", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Content Quality", "community": 94, "community_name": "Specification Quality Checklist: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/checklists/requirements.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_checklists_requirements_requirement_completeness", "label": "Requirement Completeness", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Requirement Completeness", "community": 94, "community_name": "Specification Quality Checklist: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/checklists/requirements.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_checklists_requirements_feature_readiness", "label": "Feature Readiness", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Feature Readiness", "community": 94, "community_name": "Specification Quality Checklist: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/checklists/requirements.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_checklists_requirements_notes", "label": "Notes", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Notes", "community": 94, "community_name": "Specification Quality Checklist: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/checklists/requirements.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_contracts_cli_contract", "label": "cli_contract.md", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "cli_contract.md", "community": 96, "community_name": "readiness.md", "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", "file_type": "document", "degree": 3}, {"id": "specs_002_google_news_extractor_contracts_cli_contract_cli_contract_google_news_headlines_extractor", "label": "CLI Contract: Google News Headlines Extractor", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "CLI Contract: Google News Headlines Extractor", "community": 95, "community_name": "CLI Contract: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", "file_type": "document", "degree": 4}, {"id": "specs_002_google_news_extractor_contracts_cli_contract_1_comando_e_argumentos", "label": "1. Comando e Argumentos", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "1. Comando e Argumentos", "community": 95, "community_name": "CLI Contract: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", "file_type": "document", "degree": 3}, {"id": "specs_002_google_news_extractor_contracts_cli_contract_sintaxe", "label": "Sintaxe", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Sintaxe", "community": 95, "community_name": "CLI Contract: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_contracts_cli_contract_argumentos_de_linha_de_comando", "label": "Argumentos de Linha de Comando", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Argumentos de Linha de Comando", "community": 95, "community_name": "CLI Contract: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_contracts_cli_contract_2_c\u00f3digos_de_sa\u00edda_exit_codes", "label": "2. C\u00f3digos de Sa\u00edda (Exit Codes)", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "2. C\u00f3digos de Sa\u00edda (Exit Codes)", "community": 95, "community_name": "CLI Contract: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_contracts_cli_contract_3_protocolo_de_streams_stdout_stderr", "label": "3. Protocolo de Streams (Stdout / Stderr)", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "3. Protocolo de Streams (Stdout / Stderr)", "community": 95, "community_name": "CLI Contract: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_data_model", "label": "002-google-news-extractor/data-model.md", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "002-google-news-extractor/data-model.md", "community": 93, "community_name": "1. Entidades de Dom\u00ednio & DTOs", "source_file": "specs/002-google-news-extractor/data-model.md", "file_type": "document", "degree": 2}, {"id": "specs_002_google_news_extractor_data_model_data_model_google_news_headlines_extractor", "label": "Data Model: Google News Headlines Extractor", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Data Model: Google News Headlines Extractor", "community": 93, "community_name": "1. Entidades de Dom\u00ednio & DTOs", "source_file": "specs/002-google-news-extractor/data-model.md", "file_type": "document", "degree": 3}, {"id": "specs_002_google_news_extractor_data_model_1_entidades_de_dom\u00ednio_dtos", "label": "1. Entidades de Dom\u00ednio & DTOs", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "1. Entidades de Dom\u00ednio & DTOs", "community": 93, "community_name": "1. Entidades de Dom\u00ednio & DTOs", "source_file": "specs/002-google-news-extractor/data-model.md", "file_type": "document", "degree": 4}, {"id": "specs_002_google_news_extractor_data_model_1_1_searchquery_par\u00e2metros_da_busca", "label": "1.1 SearchQuery (Par\u00e2metros da Busca)", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "1.1 SearchQuery (Par\u00e2metros da Busca)", "community": 93, "community_name": "1. Entidades de Dom\u00ednio & DTOs", "source_file": "specs/002-google-news-extractor/data-model.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_data_model_1_2_newsarticle_item_de_not\u00edcia", "label": "1.2 NewsArticle (Item de Not\u00edcia)", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "1.2 NewsArticle (Item de Not\u00edcia)", "community": 93, "community_name": "1. Entidades de Dom\u00ednio & DTOs", "source_file": "specs/002-google-news-extractor/data-model.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_data_model_1_3_extractionresult_sa\u00edda_estruturada_consolidada", "label": "1.3 ExtractionResult (Sa\u00edda Estruturada Consolidada)", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "1.3 ExtractionResult (Sa\u00edda Estruturada Consolidada)", "community": 93, "community_name": "1. Entidades de Dom\u00ednio & DTOs", "source_file": "specs/002-google-news-extractor/data-model.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_data_model_2_esquema_json_de_sa\u00edda", "label": "2. Esquema JSON de Sa\u00edda", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "2. Esquema JSON de Sa\u00edda", "community": 93, "community_name": "1. Entidades de Dom\u00ednio & DTOs", "source_file": "specs/002-google-news-extractor/data-model.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_plan", "label": "002-google-news-extractor/plan.md", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "002-google-news-extractor/plan.md", "community": 96, "community_name": "readiness.md", "source_file": "specs/002-google-news-extractor/plan.md", "file_type": "document", "degree": 4}, {"id": "specs_002_google_news_extractor_plan_implementation_plan_google_news_headlines_extractor", "label": "Implementation Plan: Google News Headlines Extractor", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 14.8, "font": {"size": 12, "color": "#ffffff"}, "title": "Implementation Plan: Google News Headlines Extractor", "community": 88, "community_name": "Implementation Plan: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/plan.md", "file_type": "document", "degree": 5}, {"id": "specs_002_google_news_extractor_plan_summary", "label": "Summary", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Summary", "community": 88, "community_name": "Implementation Plan: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/plan.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_plan_technical_context", "label": "Technical Context", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Technical Context", "community": 88, "community_name": "Implementation Plan: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/plan.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_plan_architecture_pipeline", "label": "Architecture & Pipeline", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Architecture & Pipeline", "community": 88, "community_name": "Implementation Plan: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/plan.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_plan_project_structure", "label": "Project Structure", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Project Structure", "community": 88, "community_name": "Implementation Plan: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/plan.md", "file_type": "document", "degree": 3}, {"id": "specs_002_google_news_extractor_plan_documentation_this_feature", "label": "Documentation (this feature)", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Documentation (this feature)", "community": 88, "community_name": "Implementation Plan: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/plan.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_plan_source_code", "label": "Source Code", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Source Code", "community": 88, "community_name": "Implementation Plan: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/plan.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_quickstart", "label": "002-google-news-extractor/quickstart.md", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "002-google-news-extractor/quickstart.md", "community": 87, "community_name": "2. Cen\u00e1rios Pr\u00e1ticos de Uso", "source_file": "specs/002-google-news-extractor/quickstart.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_quickstart_quickstart_google_news_headlines_extractor", "label": "Quickstart: Google News Headlines Extractor", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Quickstart: Google News Headlines Extractor", "community": 87, "community_name": "2. Cen\u00e1rios Pr\u00e1ticos de Uso", "source_file": "specs/002-google-news-extractor/quickstart.md", "file_type": "document", "degree": 4}, {"id": "specs_002_google_news_extractor_quickstart_1_pr\u00e9_requisitos_e_instala\u00e7\u00e3o", "label": "1. Pr\u00e9-requisitos e Instala\u00e7\u00e3o", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "1. Pr\u00e9-requisitos e Instala\u00e7\u00e3o", "community": 87, "community_name": "2. Cen\u00e1rios Pr\u00e1ticos de Uso", "source_file": "specs/002-google-news-extractor/quickstart.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_quickstart_2_cen\u00e1rios_pr\u00e1ticos_de_uso", "label": "2. Cen\u00e1rios Pr\u00e1ticos de Uso", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 15.8, "font": {"size": 12, "color": "#ffffff"}, "title": "2. Cen\u00e1rios Pr\u00e1ticos de Uso", "community": 87, "community_name": "2. Cen\u00e1rios Pr\u00e1ticos de Uso", "source_file": "specs/002-google-news-extractor/quickstart.md", "file_type": "document", "degree": 6}, {"id": "specs_002_google_news_extractor_quickstart_cen\u00e1rio_1_river_plate_argentina_espanhol_2_p\u00e1ginas_salvar_em_arquivo", "label": "Cen\u00e1rio 1: River Plate \u2014 Argentina (Espanhol / 2 P\u00e1ginas / Salvar em Arquivo)", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Cen\u00e1rio 1: River Plate \u2014 Argentina (Espanhol / 2 P\u00e1ginas / Salvar em Arquivo)", "community": 87, "community_name": "2. Cen\u00e1rios Pr\u00e1ticos de Uso", "source_file": "specs/002-google-news-extractor/quickstart.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_quickstart_cen\u00e1rio_2_cruzeiro_brasil_portugu\u00eas_formatado_no_terminal", "label": "Cen\u00e1rio 2: Cruzeiro \u2014 Brasil (Portugu\u00eas / Formatado no Terminal)", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Cen\u00e1rio 2: Cruzeiro \u2014 Brasil (Portugu\u00eas / Formatado no Terminal)", "community": 87, "community_name": "2. Cen\u00e1rios Pr\u00e1ticos de Uso", "source_file": "specs/002-google-news-extractor/quickstart.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_quickstart_cen\u00e1rio_3_f\u00f3rmula_1_reino_unido_ingl\u00eas", "label": "Cen\u00e1rio 3: F\u00f3rmula 1 \u2014 Reino Unido (Ingl\u00eas)", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Cen\u00e1rio 3: F\u00f3rmula 1 \u2014 Reino Unido (Ingl\u00eas)", "community": 87, "community_name": "2. Cen\u00e1rios Pr\u00e1ticos de Uso", "source_file": "specs/002-google-news-extractor/quickstart.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_quickstart_cen\u00e1rio_4_integra\u00e7\u00e3o_em_pipeline_com_jq_modo_silencioso", "label": "Cen\u00e1rio 4: Integra\u00e7\u00e3o em Pipeline com `jq` (Modo Silencioso)", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Cen\u00e1rio 4: Integra\u00e7\u00e3o em Pipeline com `jq` (Modo Silencioso)", "community": 87, "community_name": "2. Cen\u00e1rios Pr\u00e1ticos de Uso", "source_file": "specs/002-google-news-extractor/quickstart.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_quickstart_cen\u00e1rio_5_extra\u00e7\u00e3o_r\u00e1pida_com_links_brutos_sem_resolu\u00e7\u00e3o_de_urls", "label": "Cen\u00e1rio 5: Extra\u00e7\u00e3o R\u00e1pida com Links Brutos (Sem Resolu\u00e7\u00e3o de URLs)", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Cen\u00e1rio 5: Extra\u00e7\u00e3o R\u00e1pida com Links Brutos (Sem Resolu\u00e7\u00e3o de URLs)", "community": 87, "community_name": "2. Cen\u00e1rios Pr\u00e1ticos de Uso", "source_file": "specs/002-google-news-extractor/quickstart.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_quickstart_3_valida\u00e7\u00e3o_dos_testes_automatizados_e_linter", "label": "3. Valida\u00e7\u00e3o dos Testes Automatizados e Linter", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "3. Valida\u00e7\u00e3o dos Testes Automatizados e Linter", "community": 87, "community_name": "2. Cen\u00e1rios Pr\u00e1ticos de Uso", "source_file": "specs/002-google-news-extractor/quickstart.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_research", "label": "002-google-news-extractor/research.md", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "002-google-news-extractor/research.md", "community": 91, "community_name": "1. Technical Decisions & Tradeoffs", "source_file": "specs/002-google-news-extractor/research.md", "file_type": "document", "degree": 2}, {"id": "specs_002_google_news_extractor_research_research_google_news_headlines_extractor", "label": "Research: Google News Headlines Extractor", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Research: Google News Headlines Extractor", "community": 91, "community_name": "1. Technical Decisions & Tradeoffs", "source_file": "specs/002-google-news-extractor/research.md", "file_type": "document", "degree": 2}, {"id": "specs_002_google_news_extractor_research_1_technical_decisions_tradeoffs", "label": "1. Technical Decisions & Tradeoffs", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 15.8, "font": {"size": 12, "color": "#ffffff"}, "title": "1. Technical Decisions & Tradeoffs", "community": 91, "community_name": "1. Technical Decisions & Tradeoffs", "source_file": "specs/002-google-news-extractor/research.md", "file_type": "document", "degree": 6}, {"id": "specs_002_google_news_extractor_research_decision_1_motor_de_requisi\u00e7\u00e3o_e_scraping_com_foxcape_em_modo_headless", "label": "Decision 1: Motor de Requisi\u00e7\u00e3o e Scraping com `foxcape` em Modo Headless", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Decision 1: Motor de Requisi\u00e7\u00e3o e Scraping com `foxcape` em Modo Headless", "community": 91, "community_name": "1. Technical Decisions & Tradeoffs", "source_file": "specs/002-google-news-extractor/research.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_research_decision_2_endpoint_rss_do_google_news_vs_scraping_de_dom", "label": "Decision 2: Endpoint RSS do Google News vs. Scraping de DOM", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Decision 2: Endpoint RSS do Google News vs. Scraping de DOM", "community": 91, "community_name": "1. Technical Decisions & Tradeoffs", "source_file": "specs/002-google-news-extractor/research.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_research_decision_3_mapeamento_de_idioma_e_locale_hl_gl_ceid", "label": "Decision 3: Mapeamento de Idioma e Locale (`hl`, `gl`, `ceid`)", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Decision 3: Mapeamento de Idioma e Locale (`hl`, `gl`, `ceid`)", "community": 91, "community_name": "1. Technical Decisions & Tradeoffs", "source_file": "specs/002-google-news-extractor/research.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_research_decision_4_resolu\u00e7\u00e3o_de_urls_do_google_news_via_googlenewsdecoder", "label": "Decision 4: Resolu\u00e7\u00e3o de URLs do Google News via `googlenewsdecoder`", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Decision 4: Resolu\u00e7\u00e3o de URLs do Google News via `googlenewsdecoder`", "community": 91, "community_name": "1. Technical Decisions & Tradeoffs", "source_file": "specs/002-google-news-extractor/research.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_research_decision_5_logging_em_tempo_real_no_stderr_e_segrega\u00e7\u00e3o_de_streams", "label": "Decision 5: Logging em Tempo Real no `stderr` e Segrega\u00e7\u00e3o de Streams", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Decision 5: Logging em Tempo Real no `stderr` e Segrega\u00e7\u00e3o de Streams", "community": 91, "community_name": "1. Technical Decisions & Tradeoffs", "source_file": "specs/002-google-news-extractor/research.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_spec", "label": "002-google-news-extractor/spec.md", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 14.8, "font": {"size": 12, "color": "#ffffff"}, "title": "002-google-news-extractor/spec.md", "community": 96, "community_name": "readiness.md", "source_file": "specs/002-google-news-extractor/spec.md", "file_type": "document", "degree": 5}, {"id": "specs_002_google_news_extractor_spec_feature_specification_google_news_headlines_extractor", "label": "Feature Specification: Google News Headlines Extractor", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 15.8, "font": {"size": 12, "color": "#ffffff"}, "title": "Feature Specification: Google News Headlines Extractor", "community": 86, "community_name": "Feature Specification: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/spec.md", "file_type": "document", "degree": 6}, {"id": "specs_002_google_news_extractor_spec_clarifications", "label": "Clarifications", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Clarifications", "community": 86, "community_name": "Feature Specification: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/spec.md", "file_type": "document", "degree": 2}, {"id": "specs_002_google_news_extractor_spec_session_2026_08_20", "label": "Session 2026-08-20", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Session 2026-08-20", "community": 86, "community_name": "Feature Specification: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/spec.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_spec_user_scenarios_testing_mandatory", "label": "User Scenarios & Testing *(mandatory)*", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "User Scenarios & Testing *(mandatory)*", "community": 86, "community_name": "Feature Specification: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/spec.md", "file_type": "document", "degree": 4}, {"id": "specs_002_google_news_extractor_spec_user_story_1_extra\u00e7\u00e3o_b\u00e1sica_de_not\u00edcias_com_urls_finais_resolvidas_priority_p1_mvp", "label": "User Story 1 - Extra\u00e7\u00e3o B\u00e1sica de Not\u00edcias com URLs Finais Resolvidas (Priority: P1) \ud83c\udf1f MVP", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "User Story 1 - Extra\u00e7\u00e3o B\u00e1sica de Not\u00edcias com URLs Finais Resolvidas (Priority: P1) \ud83c\udf1f MVP", "community": 86, "community_name": "Feature Specification: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/spec.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_spec_user_story_2_filtragem_regional_e_edi\u00e7\u00e3o_geogr\u00e1fica_priority_p2", "label": "User Story 2 - Filtragem Regional e Edi\u00e7\u00e3o Geogr\u00e1fica (Priority: P2)", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "User Story 2 - Filtragem Regional e Edi\u00e7\u00e3o Geogr\u00e1fica (Priority: P2)", "community": 86, "community_name": "Feature Specification: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/spec.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_spec_user_story_3_pagina\u00e7\u00e3o_exporta\u00e7\u00e3o_em_arquivo_e_feedback_visual_priority_p3", "label": "User Story 3 - Pagina\u00e7\u00e3o, Exporta\u00e7\u00e3o em Arquivo e Feedback Visual (Priority: P3)", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "User Story 3 - Pagina\u00e7\u00e3o, Exporta\u00e7\u00e3o em Arquivo e Feedback Visual (Priority: P3)", "community": 86, "community_name": "Feature Specification: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/spec.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_spec_edge_cases", "label": "Edge Cases", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Edge Cases", "community": 86, "community_name": "Feature Specification: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/spec.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_spec_requirements_mandatory", "label": "Requirements *(mandatory)*", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Requirements *(mandatory)*", "community": 86, "community_name": "Feature Specification: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/spec.md", "file_type": "document", "degree": 2}, {"id": "specs_002_google_news_extractor_spec_functional_requirements", "label": "Functional Requirements", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Functional Requirements", "community": 86, "community_name": "Feature Specification: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/spec.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_spec_success_criteria_mandatory", "label": "Success Criteria *(mandatory)*", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Success Criteria *(mandatory)*", "community": 86, "community_name": "Feature Specification: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/spec.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_tasks", "label": "002-google-news-extractor/tasks.md", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "002-google-news-extractor/tasks.md", "community": 96, "community_name": "readiness.md", "source_file": "specs/002-google-news-extractor/tasks.md", "file_type": "document", "degree": 4}, {"id": "specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", "label": "Implementation Tasks: Google News Headlines Extractor", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 17.7, "font": {"size": 12, "color": "#ffffff"}, "title": "Implementation Tasks: Google News Headlines Extractor", "community": 85, "community_name": "Implementation Tasks: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/tasks.md", "file_type": "document", "degree": 8}, {"id": "specs_002_google_news_extractor_tasks_phase_1_setup_shared_infrastructure", "label": "Phase 1: Setup (Shared Infrastructure)", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Phase 1: Setup (Shared Infrastructure)", "community": 85, "community_name": "Implementation Tasks: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/tasks.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_tasks_phase_2_foundational_blocking_prerequisites", "label": "Phase 2: Foundational (Blocking Prerequisites)", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Phase 2: Foundational (Blocking Prerequisites)", "community": 85, "community_name": "Implementation Tasks: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/tasks.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_tasks_phase_3_user_story_1_extra\u00e7\u00e3o_b\u00e1sica_de_not\u00edcias_por_assunto_e_idioma_priority_p1_mvp", "label": "Phase 3: User Story 1 - Extra\u00e7\u00e3o B\u00e1sica de Not\u00edcias por Assunto e Idioma (Priority: P1) \ud83c\udf1f MVP", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Phase 3: User Story 1 - Extra\u00e7\u00e3o B\u00e1sica de Not\u00edcias por Assunto e Idioma (Priority: P1) \ud83c\udf1f MVP", "community": 85, "community_name": "Implementation Tasks: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/tasks.md", "file_type": "document", "degree": 3}, {"id": "specs_002_google_news_extractor_tasks_tests_for_user_story_1", "label": "Tests for User Story 1 \ud83e\uddea", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Tests for User Story 1 \ud83e\uddea", "community": 85, "community_name": "Implementation Tasks: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/tasks.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_tasks_implementation_for_user_story_1", "label": "Implementation for User Story 1", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Implementation for User Story 1", "community": 85, "community_name": "Implementation Tasks: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/tasks.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_tasks_phase_4_user_story_2_filtragem_regional_e_edi\u00e7\u00e3o_geogr\u00e1fica_priority_p2", "label": "Phase 4: User Story 2 - Filtragem Regional e Edi\u00e7\u00e3o Geogr\u00e1fica (Priority: P2)", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Phase 4: User Story 2 - Filtragem Regional e Edi\u00e7\u00e3o Geogr\u00e1fica (Priority: P2)", "community": 85, "community_name": "Implementation Tasks: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/tasks.md", "file_type": "document", "degree": 3}, {"id": "specs_002_google_news_extractor_tasks_tests_for_user_story_2", "label": "Tests for User Story 2 \ud83e\uddea", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Tests for User Story 2 \ud83e\uddea", "community": 85, "community_name": "Implementation Tasks: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/tasks.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_tasks_implementation_for_user_story_2", "label": "Implementation for User Story 2", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Implementation for User Story 2", "community": 85, "community_name": "Implementation Tasks: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/tasks.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_tasks_phase_5_user_story_3_pagina\u00e7\u00e3o_e_controle_de_volume_de_resultados_priority_p3", "label": "Phase 5: User Story 3 - Pagina\u00e7\u00e3o e Controle de Volume de Resultados (Priority: P3)", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 12.9, "font": {"size": 0, "color": "#ffffff"}, "title": "Phase 5: User Story 3 - Pagina\u00e7\u00e3o e Controle de Volume de Resultados (Priority: P3)", "community": 85, "community_name": "Implementation Tasks: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/tasks.md", "file_type": "document", "degree": 3}, {"id": "specs_002_google_news_extractor_tasks_tests_for_user_story_3", "label": "Tests for User Story 3 \ud83e\uddea", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Tests for User Story 3 \ud83e\uddea", "community": 85, "community_name": "Implementation Tasks: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/tasks.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_tasks_implementation_for_user_story_3", "label": "Implementation for User Story 3", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Implementation for User Story 3", "community": 85, "community_name": "Implementation Tasks: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/tasks.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_tasks_phase_6_url_resolution_headless_configuration_real_time_logging", "label": "Phase 6: URL Resolution, Headless Configuration & Real-Time Logging", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Phase 6: URL Resolution, Headless Configuration & Real-Time Logging", "community": 85, "community_name": "Implementation Tasks: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/tasks.md", "file_type": "document", "degree": 1}, {"id": "specs_002_google_news_extractor_tasks_phase_7_verification_e2e_testing", "label": "Phase 7: Verification & E2E Testing", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Phase 7: Verification & E2E Testing", "community": 85, "community_name": "Implementation Tasks: Google News Headlines Extractor", "source_file": "specs/002-google-news-extractor/tasks.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_de_contextual", "label": "de/contextual.md", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "de/contextual.md", "community": 54, "community_name": "de/contextual.md", "source_file": "tests/fixtures/benchmark_24/de/contextual.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_de_contextual_batteriefabrik_in_europa", "label": "Batteriefabrik in Europa", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Batteriefabrik in Europa", "community": 54, "community_name": "de/contextual.md", "source_file": "tests/fixtures/benchmark_24/de/contextual.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_de_direct", "label": "de/direct.md", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "de/direct.md", "community": 55, "community_name": "de/direct.md", "source_file": "tests/fixtures/benchmark_24/de/direct.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_de_direct_investitionsoffensive_in_wolfsburg", "label": "Investitionsoffensive in Wolfsburg", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Investitionsoffensive in Wolfsburg", "community": 55, "community_name": "de/direct.md", "source_file": "tests/fixtures/benchmark_24/de/direct.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_de_not_related", "label": "de/not_related.md", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "de/not_related.md", "community": 56, "community_name": "de/not_related.md", "source_file": "tests/fixtures/benchmark_24/de/not_related.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_de_not_related_backrezept_f\u00fcr_apfelstrudel", "label": "Backrezept f\u00fcr Apfelstrudel", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Backrezept f\u00fcr Apfelstrudel", "community": 56, "community_name": "de/not_related.md", "source_file": "tests/fixtures/benchmark_24/de/not_related.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_de_tangential", "label": "de/tangential.md", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "de/tangential.md", "community": 57, "community_name": "de/tangential.md", "source_file": "tests/fixtures/benchmark_24/de/tangential.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_de_tangential_reisebericht_aus_niedersachsen", "label": "Reisebericht aus Niedersachsen", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Reisebericht aus Niedersachsen", "community": 57, "community_name": "de/tangential.md", "source_file": "tests/fixtures/benchmark_24/de/tangential.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_en_contextual", "label": "en/contextual.md", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "en/contextual.md", "community": 58, "community_name": "en/contextual.md", "source_file": "tests/fixtures/benchmark_24/en/contextual.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_en_contextual_electronics_assembly_expansion", "label": "Electronics Assembly Expansion", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Electronics Assembly Expansion", "community": 58, "community_name": "en/contextual.md", "source_file": "tests/fixtures/benchmark_24/en/contextual.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_en_direct", "label": "en/direct.md", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "en/direct.md", "community": 59, "community_name": "en/direct.md", "source_file": "tests/fixtures/benchmark_24/en/direct.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_en_direct_apple_unveils_next_generation_iphone", "label": "Apple Unveils Next-Generation iPhone", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Apple Unveils Next-Generation iPhone", "community": 59, "community_name": "en/direct.md", "source_file": "tests/fixtures/benchmark_24/en/direct.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_en_not_related", "label": "en/not_related.md", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "en/not_related.md", "community": 60, "community_name": "en/not_related.md", "source_file": "tests/fixtures/benchmark_24/en/not_related.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_en_not_related_classic_apple_pie_baking_guide", "label": "Classic Apple Pie Baking Guide", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Classic Apple Pie Baking Guide", "community": 60, "community_name": "en/not_related.md", "source_file": "tests/fixtures/benchmark_24/en/not_related.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_en_tangential", "label": "en/tangential.md", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "en/tangential.md", "community": 61, "community_name": "en/tangential.md", "source_file": "tests/fixtures/benchmark_24/en/tangential.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_en_tangential_morning_city_walk", "label": "Morning City Walk", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Morning City Walk", "community": 61, "community_name": "en/tangential.md", "source_file": "tests/fixtures/benchmark_24/en/tangential.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_es_contextual", "label": "es/contextual.md", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "es/contextual.md", "community": 62, "community_name": "es/contextual.md", "source_file": "tests/fixtures/benchmark_24/es/contextual.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_es_contextual_nuevas_soluciones_de_pagos_electr\u00f3nicos", "label": "Nuevas Soluciones de Pagos Electr\u00f3nicos", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Nuevas Soluciones de Pagos Electr\u00f3nicos", "community": 62, "community_name": "es/contextual.md", "source_file": "tests/fixtures/benchmark_24/es/contextual.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_es_direct", "label": "es/direct.md", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "es/direct.md", "community": 63, "community_name": "es/direct.md", "source_file": "tests/fixtures/benchmark_24/es/direct.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_es_direct_expansi\u00f3n_de_servicios_financieros_en_espa\u00f1a", "label": "Expansi\u00f3n de Servicios Financieros en Espa\u00f1a", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Expansi\u00f3n de Servicios Financieros en Espa\u00f1a", "community": 63, "community_name": "es/direct.md", "source_file": "tests/fixtures/benchmark_24/es/direct.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_es_not_related", "label": "es/not_related.md", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "es/not_related.md", "community": 64, "community_name": "es/not_related.md", "source_file": "tests/fixtures/benchmark_24/es/not_related.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_es_not_related_turismo_en_la_costa_norte", "label": "Turismo en la Costa Norte", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Turismo en la Costa Norte", "community": 64, "community_name": "es/not_related.md", "source_file": "tests/fixtures/benchmark_24/es/not_related.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_es_tangential", "label": "es/tangential.md", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "es/tangential.md", "community": 65, "community_name": "es/tangential.md", "source_file": "tests/fixtures/benchmark_24/es/tangential.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_es_tangential_gu\u00eda_cultural_de_la_ciudad", "label": "Gu\u00eda Cultural de la Ciudad", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Gu\u00eda Cultural de la Ciudad", "community": 65, "community_name": "es/tangential.md", "source_file": "tests/fixtures/benchmark_24/es/tangential.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_fr_contextual", "label": "fr/contextual.md", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "fr/contextual.md", "community": 66, "community_name": "fr/contextual.md", "source_file": "tests/fixtures/benchmark_24/fr/contextual.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_fr_contextual_batteries_industrielles_de_pointe", "label": "Batteries Industrielles de Pointe", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Batteries Industrielles de Pointe", "community": 66, "community_name": "fr/contextual.md", "source_file": "tests/fixtures/benchmark_24/fr/contextual.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_fr_direct", "label": "fr/direct.md", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "fr/direct.md", "community": 67, "community_name": "fr/direct.md", "source_file": "tests/fixtures/benchmark_24/fr/direct.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_fr_direct_d\u00e9veloppement_\u00e9nerg\u00e9tique_en_france", "label": "D\u00e9veloppement \u00c9nerg\u00e9tique en France", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "D\u00e9veloppement \u00c9nerg\u00e9tique en France", "community": 67, "community_name": "fr/direct.md", "source_file": "tests/fixtures/benchmark_24/fr/direct.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_fr_not_related", "label": "fr/not_related.md", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "fr/not_related.md", "community": 68, "community_name": "fr/not_related.md", "source_file": "tests/fixtures/benchmark_24/fr/not_related.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_fr_not_related_recette_traditionnelle_de_la_quiche_lorraine", "label": "Recette Traditionnelle de la Quiche Lorraine", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Recette Traditionnelle de la Quiche Lorraine", "community": 68, "community_name": "fr/not_related.md", "source_file": "tests/fixtures/benchmark_24/fr/not_related.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_fr_tangential", "label": "fr/tangential.md", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "fr/tangential.md", "community": 69, "community_name": "fr/tangential.md", "source_file": "tests/fixtures/benchmark_24/fr/tangential.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_fr_tangential_promenade_dans_paris", "label": "Promenade dans Paris", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Promenade dans Paris", "community": 69, "community_name": "fr/tangential.md", "source_file": "tests/fixtures/benchmark_24/fr/tangential.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_it_contextual", "label": "it/contextual.md", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "it/contextual.md", "community": 70, "community_name": "it/contextual.md", "source_file": "tests/fixtures/benchmark_24/it/contextual.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_it_contextual_innovazione_negli_impianti_frenanti", "label": "Innovazione negli Impianti Frenanti", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Innovazione negli Impianti Frenanti", "community": 70, "community_name": "it/contextual.md", "source_file": "tests/fixtures/benchmark_24/it/contextual.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_it_direct", "label": "it/direct.md", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "it/direct.md", "community": 71, "community_name": "it/direct.md", "source_file": "tests/fixtures/benchmark_24/it/direct.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_it_direct_nuova_monoposto_a_maranello", "label": "Nuova Monoposto a Maranello", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Nuova Monoposto a Maranello", "community": 71, "community_name": "it/direct.md", "source_file": "tests/fixtures/benchmark_24/it/direct.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_it_not_related", "label": "it/not_related.md", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "it/not_related.md", "community": 72, "community_name": "it/not_related.md", "source_file": "tests/fixtures/benchmark_24/it/not_related.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_it_not_related_ricetta_tradizionale_del_risotto", "label": "Ricetta Tradizionale del Risotto", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Ricetta Tradizionale del Risotto", "community": 72, "community_name": "it/not_related.md", "source_file": "tests/fixtures/benchmark_24/it/not_related.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_it_tangential", "label": "it/tangential.md", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "it/tangential.md", "community": 73, "community_name": "it/tangential.md", "source_file": "tests/fixtures/benchmark_24/it/tangential.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_it_tangential_passeggiata_pomeridiana_a_modena", "label": "Passeggiata Pomeridiana a Modena", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Passeggiata Pomeridiana a Modena", "community": 73, "community_name": "it/tangential.md", "source_file": "tests/fixtures/benchmark_24/it/tangential.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_pt_contextual", "label": "pt/contextual.md", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "pt/contextual.md", "community": 74, "community_name": "pt/contextual.md", "source_file": "tests/fixtures/benchmark_24/pt/contextual.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_pt_contextual_log\u00edstica_de_derivados", "label": "Log\u00edstica de Derivados", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Log\u00edstica de Derivados", "community": 74, "community_name": "pt/contextual.md", "source_file": "tests/fixtures/benchmark_24/pt/contextual.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_pt_direct", "label": "pt/direct.md", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "pt/direct.md", "community": 75, "community_name": "pt/direct.md", "source_file": "tests/fixtures/benchmark_24/pt/direct.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_pt_direct_produ\u00e7\u00e3o_de_petr\u00f3leo_no_brasil", "label": "Produ\u00e7\u00e3o de Petr\u00f3leo no Brasil", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Produ\u00e7\u00e3o de Petr\u00f3leo no Brasil", "community": 75, "community_name": "pt/direct.md", "source_file": "tests/fixtures/benchmark_24/pt/direct.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_pt_not_related", "label": "pt/not_related.md", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "pt/not_related.md", "community": 76, "community_name": "pt/not_related.md", "source_file": "tests/fixtures/benchmark_24/pt/not_related.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_pt_not_related_dicas_de_jardinagem", "label": "Dicas de Jardinagem", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Dicas de Jardinagem", "community": 76, "community_name": "pt/not_related.md", "source_file": "tests/fixtures/benchmark_24/pt/not_related.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_pt_tangential", "label": "pt/tangential.md", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "pt/tangential.md", "community": 77, "community_name": "pt/tangential.md", "source_file": "tests/fixtures/benchmark_24/pt/tangential.md", "file_type": "document", "degree": 1}, {"id": "tests_fixtures_benchmark_24_pt_tangential_turismo_no_rio_de_janeiro", "label": "Turismo no Rio de Janeiro", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Turismo no Rio de Janeiro", "community": 77, "community_name": "pt/tangential.md", "source_file": "tests/fixtures/benchmark_24/pt/tangential.md", "file_type": "document", "degree": 1}]; +const RAW_EDGES = [{"from": "specify_scripts_powershell_common", "to": "specify_scripts_powershell_common_find_specifyroot", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common", "to": "specify_scripts_powershell_common_format_speckitcommand", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common", "to": "specify_scripts_powershell_common_get_currentbranch", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common", "to": "specify_scripts_powershell_common_get_featurepathsenv", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common", "to": "specify_scripts_powershell_common_get_invokeseparator", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common", "to": "specify_scripts_powershell_common_get_normalizedpriority", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common", "to": "specify_scripts_powershell_common_get_python3command", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common", "to": "specify_scripts_powershell_common_get_reporoot", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common", "to": "specify_scripts_powershell_common_get_sortedextensionids", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common", "to": "specify_scripts_powershell_common_resolve_specifyinitdir", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common", "to": "specify_scripts_powershell_common_resolve_template", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common", "to": "specify_scripts_powershell_common_resolve_templatecontent", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common", "to": "specify_scripts_powershell_common_save_featurejson", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common", "to": "specify_scripts_powershell_common_test_dirhasfiles", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common", "to": "specify_scripts_powershell_common_test_fileexists", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common_get_reporoot", "to": "specify_scripts_powershell_common_find_specifyroot", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common_get_reporoot", "to": "specify_scripts_powershell_common_resolve_specifyinitdir", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common_get_featurepathsenv", "to": "specify_scripts_powershell_common_get_reporoot", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common_get_featurepathsenv", "to": "specify_scripts_powershell_common_get_currentbranch", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common_get_featurepathsenv", "to": "specify_scripts_powershell_common_save_featurejson", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common_format_speckitcommand", "to": "specify_scripts_powershell_common_get_invokeseparator", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common_resolve_templatecontent", "to": "specify_scripts_powershell_common_get_python3command", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common_get_sortedextensionids", "to": "specify_scripts_powershell_common_get_normalizedpriority", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common_resolve_template", "to": "specify_scripts_powershell_common_get_normalizedpriority", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common_resolve_templatecontent", "to": "specify_scripts_powershell_common_get_normalizedpriority", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common_resolve_template", "to": "specify_scripts_powershell_common_get_sortedextensionids", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_common_resolve_templatecontent", "to": "specify_scripts_powershell_common_get_sortedextensionids", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_create_new_feature", "to": "specify_scripts_powershell_create_new_feature_convertto_cleanbranchname", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_create_new_feature", "to": "specify_scripts_powershell_create_new_feature_get_branchname", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_create_new_feature", "to": "specify_scripts_powershell_create_new_feature_get_fittedbranchname", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_create_new_feature", "to": "specify_scripts_powershell_create_new_feature_get_highestnumberfromspecs", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_create_new_feature", "to": "specify_scripts_powershell_create_new_feature_test_specprefixinuse", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_scripts_powershell_create_new_feature_get_branchname", "to": "specify_scripts_powershell_create_new_feature_convertto_cleanbranchname", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "classify", "to": "classify_emit_error", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "classify", "to": "classify_main", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "classify", "to": "classify_parse_args", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "classify", "to": "src_classifier", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "classify", "to": "src_classifier_inherenceclassifier", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "classify", "to": "src_models", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "classify", "to": "src_models_classificationerror", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "classify", "to": "src_models_ecpsnapshot", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "classify", "to": "src_models_errorcode", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_cli", "to": "classify", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "classify_main", "to": "classify_parse_args", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "classify_parse_args", "to": "namespace", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "classify_emit_error", "to": "path", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "classify_emit_error", "to": "src_models_classificationerror", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "classify_emit_error", "to": "src_models_errorcode", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "classify_main", "to": "classify_emit_error", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "classify_main", "to": "path", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "classify_main", "to": "src_classifier_inherenceclassifier", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "classify_main", "to": "src_models_ecpsnapshot", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "classify_main", "to": "src_models_ecpsnapshot_from_json_str", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "classify_main", "to": "src_models_errorcode", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "tests_test_cli", "to": "classify_main", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_cli_test_cli_empty_content_file", "to": "classify_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_cli_test_cli_missing_ecp_file", "to": "classify_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_cli_test_cli_missing_required_ecp_field", "to": "classify_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_cli_test_cli_output_file", "to": "classify_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_cli_test_cli_success_stdout", "to": "classify_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_init_rationale_1", "to": "scripts_init", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news", "to": "scripts_extract_google_news_build_parser", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news", "to": "scripts_extract_google_news_extract_google_news", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news", "to": "scripts_extract_google_news_extractionresult", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news", "to": "scripts_extract_google_news_fetch_rss_content", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news", "to": "scripts_extract_google_news_get_hl_gl_ceid", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news", "to": "scripts_extract_google_news_main", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news", "to": "scripts_extract_google_news_newsarticle", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news", "to": "scripts_extract_google_news_normalize_text_for_comparison", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news", "to": "scripts_extract_google_news_parse_google_news_rss", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news", "to": "scripts_extract_google_news_resolve_article_url", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news", "to": "scripts_extract_google_news_resolve_articles_urls", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news", "to": "scripts_extract_google_news_searchquery", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news", "to": "scripts_extract_google_news", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news_extract_google_news", "to": "scripts_extract_google_news_searchquery", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news_main", "to": "scripts_extract_google_news_searchquery", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news_rationale_33", "to": "scripts_extract_google_news_searchquery", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news_searchquery", "to": "scripts_extract_google_news_searchquery_clean_keyword", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news_searchquery", "to": "scripts_extract_google_news_searchquery_clean_language", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news_searchquery", "to": "scripts_extract_google_news_searchquery_clean_locale", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news_searchquery", "to": "scripts_extract_google_news_searchquery_post_init", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news", "to": "scripts_extract_google_news_searchquery", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_test_e2e_extract_google_news_live_pipeline", "to": "scripts_extract_google_news_searchquery", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "to": "scripts_extract_google_news_searchquery", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_test_search_query_validation", "to": "scripts_extract_google_news_searchquery", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news_newsarticle", "to": "scripts_extract_google_news_newsarticle_to_dict", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news_parse_google_news_rss", "to": "scripts_extract_google_news_newsarticle", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news_rationale_67", "to": "scripts_extract_google_news_newsarticle", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news_resolve_articles_urls", "to": "scripts_extract_google_news_newsarticle", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news", "to": "scripts_extract_google_news_newsarticle", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_test_resolve_articles_urls_batch", "to": "scripts_extract_google_news_newsarticle", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news_newsarticle_to_dict", "to": "scripts_extract_google_news_py_any", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news_extractionresult_to_dict", "to": "scripts_extract_google_news_py_any", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news_extract_google_news", "to": "scripts_extract_google_news_extractionresult", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news_extractionresult", "to": "scripts_extract_google_news_extractionresult_to_dict", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news_rationale_87", "to": "scripts_extract_google_news_extractionresult", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news", "to": "scripts_extract_google_news_extractionresult", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_test_e2e_extract_google_news_live_pipeline", "to": "scripts_extract_google_news_extractionresult", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "to": "scripts_extract_google_news_extractionresult", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "scripts_extract_google_news_extract_google_news", "to": "scripts_extract_google_news_get_hl_gl_ceid", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news_rationale_110", "to": "scripts_extract_google_news_get_hl_gl_ceid", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news", "to": "scripts_extract_google_news_get_hl_gl_ceid", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "to": "scripts_extract_google_news_get_hl_gl_ceid", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_test_get_hl_gl_ceid_dynamic_fallback", "to": "scripts_extract_google_news_get_hl_gl_ceid", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", "to": "scripts_extract_google_news_get_hl_gl_ceid", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news_parse_google_news_rss", "to": "scripts_extract_google_news_normalize_text_for_comparison", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news_rationale_154", "to": "scripts_extract_google_news_normalize_text_for_comparison", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news_extract_google_news", "to": "scripts_extract_google_news_parse_google_news_rss", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news_rationale_159", "to": "scripts_extract_google_news_parse_google_news_rss", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news", "to": "scripts_extract_google_news_parse_google_news_rss", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", "to": "scripts_extract_google_news_parse_google_news_rss", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news_rationale_210", "to": "scripts_extract_google_news_resolve_article_url", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news", "to": "scripts_extract_google_news_resolve_article_url", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_test_e2e_resolve_real_google_news_url", "to": "scripts_extract_google_news_resolve_article_url", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_test_resolve_article_url_fallback", "to": "scripts_extract_google_news_resolve_article_url", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_test_resolve_article_url_success", "to": "scripts_extract_google_news_resolve_article_url", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news_extract_google_news", "to": "scripts_extract_google_news_resolve_articles_urls", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news_rationale_225", "to": "scripts_extract_google_news_resolve_articles_urls", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news", "to": "scripts_extract_google_news_resolve_articles_urls", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_test_resolve_articles_urls_batch", "to": "scripts_extract_google_news_resolve_articles_urls", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news_extract_google_news", "to": "scripts_extract_google_news_fetch_rss_content", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news_rationale_256", "to": "scripts_extract_google_news_fetch_rss_content", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news_main", "to": "scripts_extract_google_news_extract_google_news", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news_rationale_302", "to": "scripts_extract_google_news_extract_google_news", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news", "to": "scripts_extract_google_news_extract_google_news", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_test_e2e_extract_google_news_live_pipeline", "to": "scripts_extract_google_news_extract_google_news", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "to": "scripts_extract_google_news_extract_google_news", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news_build_parser", "to": "argumentparser", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news_main", "to": "scripts_extract_google_news_build_parser", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news_rationale_339", "to": "scripts_extract_google_news_build_parser", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scripts_extract_google_news_main", "to": "path", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "scripts_extract_google_news_rationale_406", "to": "scripts_extract_google_news_main", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news", "to": "scripts_extract_google_news_main", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_test_cli_empty_query_error", "to": "scripts_extract_google_news_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_test_cli_execution_file_output", "to": "scripts_extract_google_news_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_test_cli_execution_stdout", "to": "scripts_extract_google_news_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_test_cli_network_error_handling", "to": "scripts_extract_google_news_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_test_e2e_cli_live_file_output", "to": "scripts_extract_google_news_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_init_rationale_1", "to": "src_init", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_init_rationale_1", "to": "src_adapters_init", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_base", "to": "abc", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_base", "to": "src_adapters_base_basenlpadapter", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_base", "to": "src_models", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_base", "to": "src_models_classificationresult", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_base", "to": "src_models_ecpsnapshot", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_base_rationale_1", "to": "src_adapters_base", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_embeddings", "to": "src_adapters_base", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_llm", "to": "src_adapters_base", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_base_basenlpadapter", "to": "abc", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_base_basenlpadapter", "to": "src_adapters_base_basenlpadapter_disambiguate", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_base_basenlpadapter", "to": "src_adapters_base_basenlpadapter_evaluate_similarity", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_base_basenlpadapter", "to": "src_adapters_base_basenlpadapter_is_available", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_base_basenlpadapter", "to": "src_models_classificationresult", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "src_adapters_base_basenlpadapter", "to": "src_models_ecpsnapshot", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "src_adapters_base_rationale_11", "to": "src_adapters_base_basenlpadapter", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_embeddings", "to": "src_adapters_base_basenlpadapter", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_embeddings_localembeddingsadapter", "to": "src_adapters_base_basenlpadapter", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_llm", "to": "src_adapters_base_basenlpadapter", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_llm_llmfallbackadapter", "to": "src_adapters_base_basenlpadapter", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_base_rationale_15", "to": "src_adapters_base_basenlpadapter_is_available", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_base_rationale_20", "to": "src_adapters_base_basenlpadapter_evaluate_similarity", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_base_basenlpadapter_disambiguate", "to": "src_models_classificationresult", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_base_basenlpadapter_disambiguate", "to": "src_models_ecpsnapshot", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_base_rationale_30", "to": "src_adapters_base_basenlpadapter_disambiguate", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_embeddings", "to": "src_adapters_embeddings_localembeddingsadapter", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_embeddings", "to": "src_models", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_embeddings", "to": "src_models_classificationresult", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_embeddings", "to": "src_models_ecpsnapshot", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_embeddings_rationale_1", "to": "src_adapters_embeddings", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adapters", "to": "src_adapters_embeddings", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_embeddings_localembeddingsadapter", "to": "src_adapters_embeddings_localembeddingsadapter_disambiguate", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_embeddings_localembeddingsadapter", "to": "src_adapters_embeddings_localembeddingsadapter_evaluate_similarity", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_embeddings_localembeddingsadapter", "to": "src_adapters_embeddings_localembeddingsadapter_init", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_embeddings_localembeddingsadapter", "to": "src_adapters_embeddings_localembeddingsadapter_is_available", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_embeddings_localembeddingsadapter", "to": "src_models_classificationresult", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "src_adapters_embeddings_localembeddingsadapter", "to": "src_models_ecpsnapshot", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "src_adapters_embeddings_rationale_15", "to": "src_adapters_embeddings_localembeddingsadapter", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier", "to": "src_adapters_embeddings_localembeddingsadapter", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier_inherenceclassifier", "to": "src_adapters_embeddings_localembeddingsadapter", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "src_classifier_inherenceclassifier_init", "to": "src_adapters_embeddings_localembeddingsadapter", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adapters", "to": "src_adapters_embeddings_localembeddingsadapter", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adapters_test_embeddings_adapter_interface", "to": "src_adapters_embeddings_localembeddingsadapter", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_embeddings_localembeddingsadapter_evaluate_similarity", "to": "src_adapters_embeddings_localembeddingsadapter_is_available", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_embeddings_localembeddingsadapter_disambiguate", "to": "src_models_classificationresult", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_embeddings_localembeddingsadapter_disambiguate", "to": "src_models_ecpsnapshot", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_llm", "to": "src_adapters_llm_llmfallbackadapter", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_llm", "to": "src_models", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_llm", "to": "src_models_classificationresult", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_llm", "to": "src_models_ecpsnapshot", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_llm_rationale_1", "to": "src_adapters_llm", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adapters", "to": "src_adapters_llm", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_llm_llmfallbackadapter", "to": "src_adapters_llm_llmfallbackadapter_disambiguate", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_llm_llmfallbackadapter", "to": "src_adapters_llm_llmfallbackadapter_evaluate_similarity", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_llm_llmfallbackadapter", "to": "src_adapters_llm_llmfallbackadapter_init", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_llm_llmfallbackadapter", "to": "src_adapters_llm_llmfallbackadapter_is_available", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_llm_llmfallbackadapter", "to": "src_models_classificationresult", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "src_adapters_llm_llmfallbackadapter", "to": "src_models_ecpsnapshot", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "src_adapters_llm_rationale_16", "to": "src_adapters_llm_llmfallbackadapter", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier", "to": "src_adapters_llm_llmfallbackadapter", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier_inherenceclassifier", "to": "src_adapters_llm_llmfallbackadapter", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "src_classifier_inherenceclassifier_init", "to": "src_adapters_llm_llmfallbackadapter", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adapters", "to": "src_adapters_llm_llmfallbackadapter", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adapters_test_llm_adapter_interface", "to": "src_adapters_llm_llmfallbackadapter", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_llm_llmfallbackadapter_disambiguate", "to": "src_adapters_llm_llmfallbackadapter_is_available", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_llm_llmfallbackadapter_disambiguate", "to": "src_models_classificationresult", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_adapters_llm_llmfallbackadapter_disambiguate", "to": "src_models_ecpsnapshot", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier", "to": "src_classifier_count_phrase_occurrences", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier", "to": "src_classifier_inherenceclassifier", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier", "to": "src_classifier_match_phrase_in_text", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier", "to": "src_language", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier", "to": "src_language_detect_language", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier", "to": "src_language_normalize_text", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier", "to": "src_models", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier", "to": "src_models_classificationerror", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier", "to": "src_models_classificationresult", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier", "to": "src_models_decisioncategory", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier", "to": "src_models_ecpsnapshot", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier", "to": "src_models_errorcode", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier", "to": "src_models_relatedentity", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier", "to": "src_parser", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier", "to": "src_parser_extract_evidence_snippets", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier", "to": "src_parser_strip_markdown", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier_rationale_1", "to": "src_classifier", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adapters", "to": "src_classifier", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_benchmark_24", "to": "src_classifier", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_classifier", "to": "src_classifier", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier_inherenceclassifier_classify", "to": "src_classifier_match_phrase_in_text", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier_match_phrase_in_text", "to": "src_language_normalize_text", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier_rationale_21", "to": "src_classifier_match_phrase_in_text", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier_count_phrase_occurrences", "to": "src_language_normalize_text", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier_inherenceclassifier_classify", "to": "src_classifier_count_phrase_occurrences", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier_rationale_34", "to": "src_classifier_count_phrase_occurrences", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier_inherenceclassifier", "to": "src_classifier_inherenceclassifier_classify", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier_inherenceclassifier", "to": "src_classifier_inherenceclassifier_init", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier_inherenceclassifier", "to": "src_models_classificationresult", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "src_classifier_inherenceclassifier", "to": "src_models_decisioncategory", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "src_classifier_inherenceclassifier", "to": "src_models_ecpsnapshot", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "src_classifier_rationale_45", "to": "src_classifier_inherenceclassifier", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adapters", "to": "src_classifier_inherenceclassifier", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adapters_test_classifier_with_adapter_flags", "to": "src_classifier_inherenceclassifier", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial", "to": "src_classifier_inherenceclassifier", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial_test_adversarial_apple_fruit_recipe", "to": "src_classifier_inherenceclassifier", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial_test_adversarial_related_entity_without_scope_context", "to": "src_classifier_inherenceclassifier", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial_test_adversarial_sao_paulo_city_vs_fc", "to": "src_classifier_inherenceclassifier", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_benchmark_24", "to": "src_classifier_inherenceclassifier", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_benchmark_24_classifier", "to": "src_classifier_inherenceclassifier", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "tests_test_classifier", "to": "src_classifier_inherenceclassifier", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_classifier_test_contextual_inherent", "to": "src_classifier_inherenceclassifier", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_classifier_test_direct_inherent", "to": "src_classifier_inherenceclassifier", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_classifier_test_negative_anchor_suppression", "to": "src_classifier_inherenceclassifier", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_classifier_test_not_related", "to": "src_classifier_inherenceclassifier", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_classifier_test_tangential_inherent", "to": "src_classifier_inherenceclassifier", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier_inherenceclassifier_classify", "to": "src_language_detect_language", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier_inherenceclassifier_classify", "to": "src_language_normalize_text", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier_inherenceclassifier_classify", "to": "src_models_classificationresult", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier_inherenceclassifier_classify", "to": "src_models_ecpsnapshot", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier_inherenceclassifier_classify", "to": "src_parser_extract_evidence_snippets", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier_inherenceclassifier_classify", "to": "src_parser_strip_markdown", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_classifier_rationale_62", "to": "src_classifier_inherenceclassifier_classify", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_language", "to": "src_language_detect_language", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_language", "to": "src_language_extract_words", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_language", "to": "src_language_normalize_text", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_language_rationale_1", "to": "src_language", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_language", "to": "src_language", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_language_detect_language", "to": "src_language_normalize_text", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_language_rationale_71", "to": "src_language_normalize_text", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_language", "to": "src_language_normalize_text", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_language_test_normalize_text", "to": "src_language_normalize_text", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_language_detect_language", "to": "src_language_extract_words", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_language_rationale_81", "to": "src_language_extract_words", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_language_rationale_86", "to": "src_language_detect_language", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_language", "to": "src_language_detect_language", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_language_test_detect_english", "to": "src_language_detect_language", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_language_test_detect_french", "to": "src_language_detect_language", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_language_test_detect_german", "to": "src_language_detect_language", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_language_test_detect_italian", "to": "src_language_detect_language", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_language_test_detect_portuguese", "to": "src_language_detect_language", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_language_test_detect_spanish", "to": "src_language_detect_language", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_language_test_empty_language", "to": "src_language_detect_language", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models", "to": "enum", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models", "to": "src_models_classificationerror", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models", "to": "src_models_classificationresult", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models", "to": "src_models_decisioncategory", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models", "to": "src_models_ecpsnapshot", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models", "to": "src_models_errorcode", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models", "to": "src_models_matchedgraphentity", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models", "to": "src_models_relatedentity", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models_rationale_1", "to": "src_models", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adapters", "to": "src_models", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial", "to": "src_models", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_benchmark_24", "to": "src_models", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_classifier", "to": "src_models", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models", "to": "src_models", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models_decisioncategory", "to": "enum", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models_decisioncategory", "to": "str", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial", "to": "src_models_decisioncategory", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial_test_adversarial_apple_fruit_recipe", "to": "src_models_decisioncategory", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "tests_test_adversarial_test_adversarial_related_entity_without_scope_context", "to": "src_models_decisioncategory", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "tests_test_adversarial_test_adversarial_sao_paulo_city_vs_fc", "to": "src_models_decisioncategory", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "tests_test_benchmark_24", "to": "src_models_decisioncategory", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_classifier", "to": "src_models_decisioncategory", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_classifier_test_contextual_inherent", "to": "src_models_decisioncategory", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "tests_test_classifier_test_direct_inherent", "to": "src_models_decisioncategory", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "tests_test_classifier_test_negative_anchor_suppression", "to": "src_models_decisioncategory", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "tests_test_classifier_test_not_related", "to": "src_models_decisioncategory", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "tests_test_classifier_test_tangential_inherent", "to": "src_models_decisioncategory", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "tests_test_models", "to": "src_models_decisioncategory", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models_test_classification_result_serialization", "to": "src_models_decisioncategory", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "src_models_errorcode", "to": "str", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models_errorcode", "to": "enum", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models", "to": "src_models_errorcode", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models_test_classification_error_serialization", "to": "src_models_errorcode", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "src_models_relatedentity", "to": "src_models_relatedentity_from_dict", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial", "to": "src_models_relatedentity", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial_test_adversarial_related_entity_without_scope_context", "to": "src_models_relatedentity", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_classifier", "to": "src_models_relatedentity", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_classifier_petrobras_ecp", "to": "src_models_relatedentity", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "tests_test_models", "to": "src_models_relatedentity", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models_ecpsnapshot_from_dict", "to": "src_models_relatedentity_from_dict", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models_relatedentity_from_dict", "to": "src_models_py_any", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models_classificationerror_to_dict", "to": "src_models_py_any", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models_classificationresult_to_dict", "to": "src_models_py_any", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models_ecpsnapshot_from_dict", "to": "src_models_py_any", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models_ecpsnapshot", "to": "src_models_ecpsnapshot_from_dict", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models_ecpsnapshot", "to": "src_models_ecpsnapshot_from_json_str", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adapters", "to": "src_models_ecpsnapshot", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adapters_test_classifier_with_adapter_flags", "to": "src_models_ecpsnapshot", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial", "to": "src_models_ecpsnapshot", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial_test_adversarial_apple_fruit_recipe", "to": "src_models_ecpsnapshot", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial_test_adversarial_related_entity_without_scope_context", "to": "src_models_ecpsnapshot", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial_test_adversarial_sao_paulo_city_vs_fc", "to": "src_models_ecpsnapshot", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_benchmark_24", "to": "src_models_ecpsnapshot", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_benchmark_24_test_benchmark_case", "to": "src_models_ecpsnapshot", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "tests_test_classifier", "to": "src_models_ecpsnapshot", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_classifier_petrobras_ecp", "to": "src_models_ecpsnapshot", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "tests_test_models", "to": "src_models_ecpsnapshot", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models_test_ecp_snapshot_defaults", "to": "src_models_ecpsnapshot", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "tests_test_models_test_ecp_snapshot_missing_required", "to": "src_models_ecpsnapshot", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "tests_test_models_test_ecp_snapshot_valid", "to": "src_models_ecpsnapshot", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "src_models_ecpsnapshot_from_json_str", "to": "src_models_ecpsnapshot_from_dict", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models_test_ecp_snapshot_defaults", "to": "src_models_ecpsnapshot_from_dict", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models_test_ecp_snapshot_missing_required", "to": "src_models_ecpsnapshot_from_dict", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models_test_ecp_snapshot_valid", "to": "src_models_ecpsnapshot_from_dict", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_benchmark_24_test_benchmark_case", "to": "src_models_ecpsnapshot_from_json_str", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models_classificationresult", "to": "src_models_classificationresult_to_dict", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models_classificationresult", "to": "src_models_classificationresult_to_json_str", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models", "to": "src_models_classificationresult", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models_test_classification_result_serialization", "to": "src_models_classificationresult", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models_classificationresult_to_json_str", "to": "src_models_classificationerror_to_dict", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models_classificationerror", "to": "src_models_classificationerror_to_dict", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models_classificationerror", "to": "src_models_classificationerror_to_json_str", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models", "to": "src_models_classificationerror", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models_test_classification_error_serialization", "to": "src_models_classificationerror", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_models_classificationerror_to_json_str", "to": "src_models_classificationerror_to_dict", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_parser", "to": "src_parser_extract_evidence_snippets", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_parser", "to": "src_parser_extract_sentences", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_parser", "to": "src_parser_strip_markdown", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_parser_rationale_1", "to": "src_parser", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models", "to": "src_parser", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_parser_extract_evidence_snippets", "to": "src_parser_strip_markdown", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_parser_rationale_10", "to": "src_parser_strip_markdown", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models", "to": "src_parser_strip_markdown", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models_test_parser_strip_markdown", "to": "src_parser_strip_markdown", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_parser_extract_evidence_snippets", "to": "src_parser_extract_sentences", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_parser_rationale_44", "to": "src_parser_extract_sentences", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models", "to": "src_parser_extract_sentences", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_parser_rationale_52", "to": "src_parser_extract_evidence_snippets", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models", "to": "src_parser_extract_evidence_snippets", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models_test_extract_evidence_snippets", "to": "src_parser_extract_evidence_snippets", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_init_rationale_1", "to": "tests_init", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adapters", "to": "tests_test_adapters_test_classifier_with_adapter_flags", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adapters", "to": "tests_test_adapters_test_embeddings_adapter_interface", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adapters", "to": "tests_test_adapters_test_llm_adapter_interface", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adapters_rationale_1", "to": "tests_test_adapters", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial", "to": "tests_test_adversarial_test_adversarial_apple_fruit_recipe", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial", "to": "tests_test_adversarial_test_adversarial_related_entity_without_scope_context", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial", "to": "tests_test_adversarial_test_adversarial_sao_paulo_city_vs_fc", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial", "to": "tests_test_adversarial_test_adversarial_subprocess_cli_corrupted_json", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial", "to": "tests_test_adversarial_test_adversarial_subprocess_cli_empty_content", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial", "to": "tests_test_adversarial_test_adversarial_subprocess_cli_missing_required_field", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial", "to": "tests_test_adversarial_test_adversarial_subprocess_cli_success_stdout", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial_rationale_1", "to": "tests_test_adversarial", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial_rationale_16", "to": "tests_test_adversarial_test_adversarial_sao_paulo_city_vs_fc", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial_rationale_41", "to": "tests_test_adversarial_test_adversarial_apple_fruit_recipe", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial_rationale_64", "to": "tests_test_adversarial_test_adversarial_related_entity_without_scope_context", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial_rationale_99", "to": "tests_test_adversarial_test_adversarial_subprocess_cli_success_stdout", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial_rationale_134", "to": "tests_test_adversarial_test_adversarial_subprocess_cli_empty_content", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial_rationale_165", "to": "tests_test_adversarial_test_adversarial_subprocess_cli_missing_required_field", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_adversarial_rationale_194", "to": "tests_test_adversarial_test_adversarial_subprocess_cli_corrupted_json", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_benchmark_24", "to": "tests_test_benchmark_24_classifier", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_benchmark_24", "to": "tests_test_benchmark_24_test_benchmark_case", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_benchmark_24_rationale_1", "to": "tests_test_benchmark_24", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_benchmark_24_classifier", "to": "tests_test_benchmark_24_py_fixture", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_benchmark_24_test_benchmark_case", "to": "parametrize", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_classifier", "to": "tests_test_classifier_petrobras_ecp", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_classifier", "to": "tests_test_classifier_test_contextual_inherent", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_classifier", "to": "tests_test_classifier_test_direct_inherent", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_classifier", "to": "tests_test_classifier_test_negative_anchor_suppression", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_classifier", "to": "tests_test_classifier_test_not_related", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_classifier", "to": "tests_test_classifier_test_tangential_inherent", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_classifier_rationale_1", "to": "tests_test_classifier", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_classifier_petrobras_ecp", "to": "tests_test_classifier_py_fixture", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_cli", "to": "tests_test_cli_test_cli_empty_content_file", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_cli", "to": "tests_test_cli_test_cli_missing_ecp_file", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_cli", "to": "tests_test_cli_test_cli_missing_required_ecp_field", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_cli", "to": "tests_test_cli_test_cli_output_file", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_cli", "to": "tests_test_cli_test_cli_success_stdout", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_cli_rationale_1", "to": "tests_test_cli", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news", "to": "tests_test_extract_google_news_sample_rss_xml", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news", "to": "tests_test_extract_google_news_test_cli_empty_query_error", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news", "to": "tests_test_extract_google_news_test_cli_execution_file_output", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news", "to": "tests_test_extract_google_news_test_cli_execution_stdout", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news", "to": "tests_test_extract_google_news_test_cli_network_error_handling", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news", "to": "tests_test_extract_google_news_test_e2e_cli_live_file_output", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news", "to": "tests_test_extract_google_news_test_e2e_extract_google_news_live_pipeline", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news", "to": "tests_test_extract_google_news_test_e2e_resolve_real_google_news_url", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news", "to": "tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news", "to": "tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news", "to": "tests_test_extract_google_news_test_get_hl_gl_ceid_dynamic_fallback", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news", "to": "tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news", "to": "tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news", "to": "tests_test_extract_google_news_test_resolve_article_url_fallback", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news", "to": "tests_test_extract_google_news_test_resolve_article_url_success", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news", "to": "tests_test_extract_google_news_test_resolve_articles_urls_batch", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news", "to": "tests_test_extract_google_news_test_search_query_validation", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_rationale_1", "to": "tests_test_extract_google_news", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_sample_rss_xml", "to": "tests_test_extract_google_news_py_fixture", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_rationale_33", "to": "tests_test_extract_google_news_sample_rss_xml", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_rationale_38", "to": "tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_rationale_61", "to": "tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_rationale_79", "to": "tests_test_extract_google_news_test_get_hl_gl_ceid_dynamic_fallback", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_rationale_87", "to": "tests_test_extract_google_news_test_search_query_validation", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_rationale_112", "to": "tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_rationale_139", "to": "tests_test_extract_google_news_test_resolve_article_url_fallback", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_rationale_151", "to": "tests_test_extract_google_news_test_resolve_article_url_success", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_rationale_164", "to": "tests_test_extract_google_news_test_resolve_articles_urls_batch", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_rationale_189", "to": "tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_rationale_218", "to": "tests_test_extract_google_news_test_cli_execution_stdout", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_test_cli_execution_stdout", "to": "capturefixture", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_test_cli_empty_query_error", "to": "capturefixture", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_test_cli_network_error_handling", "to": "capturefixture", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_rationale_243", "to": "tests_test_extract_google_news_test_cli_execution_file_output", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_test_cli_execution_file_output", "to": "path", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_test_e2e_cli_live_file_output", "to": "path", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_rationale_264", "to": "tests_test_extract_google_news_test_cli_empty_query_error", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_rationale_273", "to": "tests_test_extract_google_news_test_cli_network_error_handling", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_rationale_292", "to": "tests_test_extract_google_news_test_e2e_resolve_real_google_news_url", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_rationale_313", "to": "tests_test_extract_google_news_test_e2e_extract_google_news_live_pipeline", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_extract_google_news_rationale_329", "to": "tests_test_extract_google_news_test_e2e_cli_live_file_output", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_language", "to": "tests_test_language_test_detect_english", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_language", "to": "tests_test_language_test_detect_french", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_language", "to": "tests_test_language_test_detect_german", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_language", "to": "tests_test_language_test_detect_italian", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_language", "to": "tests_test_language_test_detect_portuguese", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_language", "to": "tests_test_language_test_detect_spanish", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_language", "to": "tests_test_language_test_empty_language", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_language", "to": "tests_test_language_test_normalize_text", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_language_rationale_1", "to": "tests_test_language", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models", "to": "tests_test_models_test_classification_error_serialization", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models", "to": "tests_test_models_test_classification_result_serialization", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models", "to": "tests_test_models_test_ecp_snapshot_defaults", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models", "to": "tests_test_models_test_ecp_snapshot_missing_required", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models", "to": "tests_test_models_test_ecp_snapshot_valid", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models", "to": "tests_test_models_test_extract_evidence_snippets", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models", "to": "tests_test_models_test_parser_strip_markdown", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_models_rationale_1", "to": "tests_test_models", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_rules_graphify", "to": "agents_rules_graphify_graphify", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill", "to": "agents_skills_graphify_skill_graphify", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_graphify", "to": "agents_skills_graphify_skill_for_graphify_add_and_watch", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_graphify", "to": "agents_skills_graphify_skill_for_graphify_query", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_graphify", "to": "agents_skills_graphify_skill_for_the_commit_hook_and_native_claude_md_integration", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_graphify", "to": "agents_skills_graphify_skill_for_update_and_cluster_only", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_graphify", "to": "agents_skills_graphify_skill_honesty_rules", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_graphify", "to": "agents_skills_graphify_skill_interpreter_guard_for_subcommands", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_graphify", "to": "agents_skills_graphify_skill_usage", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_graphify", "to": "agents_skills_graphify_skill_what_graphify_is_for", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_graphify", "to": "agents_skills_graphify_skill_what_you_must_do_when_invoked", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_what_you_must_do_when_invoked", "to": "agents_skills_graphify_skill_step_0_github_repos_and_multi_path_merge_only_if_a_url_or_several_paths", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_what_you_must_do_when_invoked", "to": "agents_skills_graphify_skill_step_1_ensure_graphify_is_installed", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_what_you_must_do_when_invoked", "to": "agents_skills_graphify_skill_step_2_5_video_and_audio_only_if_video_files_detected", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_what_you_must_do_when_invoked", "to": "agents_skills_graphify_skill_step_2_detect_files", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_what_you_must_do_when_invoked", "to": "agents_skills_graphify_skill_step_3_extract_entities_and_relationships", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_what_you_must_do_when_invoked", "to": "agents_skills_graphify_skill_step_4_5_graph_health_check_read_only_integrity_gate", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_what_you_must_do_when_invoked", "to": "agents_skills_graphify_skill_step_4_build_graph_cluster_analyze_generate_outputs", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_what_you_must_do_when_invoked", "to": "agents_skills_graphify_skill_step_5_label_communities", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_what_you_must_do_when_invoked", "to": "agents_skills_graphify_skill_step_6_generate_obsidian_vault_opt_in_html", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_what_you_must_do_when_invoked", "to": "agents_skills_graphify_skill_step_9_save_manifest_update_cost_tracker_clean_up_and_report", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_what_you_must_do_when_invoked", "to": "agents_skills_graphify_skill_steps_6b_8_wiki_neo4j_falkordb_svg_graphml_mcp_benchmark_only_on_their_flags", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_step_3_extract_entities_and_relationships", "to": "agents_skills_graphify_skill_part_a_structural_extraction_for_code_files", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_step_3_extract_entities_and_relationships", "to": "agents_skills_graphify_skill_part_b_semantic_extraction_parallel_subagents", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_skill_step_3_extract_entities_and_relationships", "to": "agents_skills_graphify_skill_part_c_merge_ast_semantic_into_final_extraction", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_add_watch", "to": "agents_skills_graphify_references_add_watch_graphify_reference_add_a_url_and_watch_a_folder", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_add_watch_graphify_reference_add_a_url_and_watch_a_folder", "to": "agents_skills_graphify_references_add_watch_for_graphify_add", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_add_watch_graphify_reference_add_a_url_and_watch_a_folder", "to": "agents_skills_graphify_references_add_watch_for_watch", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_exports", "to": "agents_skills_graphify_references_exports_graphify_reference_extra_exports_and_benchmark", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_exports_graphify_reference_extra_exports_and_benchmark", "to": "agents_skills_graphify_references_exports_step_6b_wiki_only_if_wiki_flag", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_exports_graphify_reference_extra_exports_and_benchmark", "to": "agents_skills_graphify_references_exports_step_7_neo4j_export_only_if_neo4j_or_neo4j_push_flag", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_exports_graphify_reference_extra_exports_and_benchmark", "to": "agents_skills_graphify_references_exports_step_7a_falkordb_export_only_if_falkordb_or_falkordb_push_flag", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_exports_graphify_reference_extra_exports_and_benchmark", "to": "agents_skills_graphify_references_exports_step_7b_svg_export_only_if_svg_flag", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_exports_graphify_reference_extra_exports_and_benchmark", "to": "agents_skills_graphify_references_exports_step_7c_graphml_export_only_if_graphml_flag", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_exports_graphify_reference_extra_exports_and_benchmark", "to": "agents_skills_graphify_references_exports_step_7d_mcp_server_only_if_mcp_flag", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_exports_graphify_reference_extra_exports_and_benchmark", "to": "agents_skills_graphify_references_exports_step_8_token_reduction_benchmark_only_if_total_words_5000", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_extraction_spec", "to": "agents_skills_graphify_references_extraction_spec_graphify_reference_extraction_subagent_prompt", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_github_and_merge", "to": "agents_skills_graphify_references_github_and_merge_graphify_reference_github_clone_and_cross_repo_merge", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_github_and_merge_graphify_reference_github_clone_and_cross_repo_merge", "to": "agents_skills_graphify_references_github_and_merge_step_0_clone_github_repo_s_only_if_a_github_url_was_given", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_hooks", "to": "agents_skills_graphify_references_hooks_graphify_reference_commit_hook_and_native_claude_md_integration", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_hooks_graphify_reference_commit_hook_and_native_claude_md_integration", "to": "agents_skills_graphify_references_hooks_for_git_commit_hook", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_hooks_graphify_reference_commit_hook_and_native_claude_md_integration", "to": "agents_skills_graphify_references_hooks_for_native_claude_md_integration", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_query", "to": "agents_skills_graphify_references_query_graphify_reference_query_path_explain", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_query_graphify_reference_query_path_explain", "to": "agents_skills_graphify_references_query_for_graphify_explain", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_query_graphify_reference_query_path_explain", "to": "agents_skills_graphify_references_query_for_graphify_path", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_query_graphify_reference_query_path_explain", "to": "agents_skills_graphify_references_query_step_0_constrained_query_expansion_required_before_traversal", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_query_graphify_reference_query_path_explain", "to": "agents_skills_graphify_references_query_step_1_traversal", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_transcribe", "to": "agents_skills_graphify_references_transcribe_graphify_reference_transcribe_video_and_audio", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_transcribe_graphify_reference_transcribe_video_and_audio", "to": "agents_skills_graphify_references_transcribe_step_2_5_transcribe_video_audio_files_only_if_video_files_detected", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_update", "to": "agents_skills_graphify_references_update_graphify_reference_incremental_update_and_cluster_only", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_update_graphify_reference_incremental_update_and_cluster_only", "to": "agents_skills_graphify_references_update_for_cluster_only", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_graphify_references_update_graphify_reference_incremental_update_and_cluster_only", "to": "agents_skills_graphify_references_update_for_update_incremental_re_extraction", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_audit_skill", "to": "agents_skills_ponytail_audit_skill_boundaries", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_audit_skill", "to": "agents_skills_ponytail_audit_skill_hunt", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_audit_skill", "to": "agents_skills_ponytail_audit_skill_output", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_audit_skill", "to": "agents_skills_ponytail_audit_skill_tags", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_debt_skill", "to": "agents_skills_ponytail_debt_skill_boundaries", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_debt_skill", "to": "agents_skills_ponytail_debt_skill_output", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_debt_skill", "to": "agents_skills_ponytail_debt_skill_scan", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_gain_skill", "to": "agents_skills_ponytail_gain_skill_ponytail_gain", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_gain_skill_ponytail_gain", "to": "agents_skills_ponytail_gain_skill_boundaries", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_gain_skill_ponytail_gain", "to": "agents_skills_ponytail_gain_skill_honesty_boundary", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_gain_skill_ponytail_gain", "to": "agents_skills_ponytail_gain_skill_scoreboard", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_help_skill", "to": "agents_skills_ponytail_help_skill_ponytail_help", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_help_skill_ponytail_help", "to": "agents_skills_ponytail_help_skill_configure_default_mode", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_help_skill_ponytail_help", "to": "agents_skills_ponytail_help_skill_deactivate", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_help_skill_ponytail_help", "to": "agents_skills_ponytail_help_skill_levels", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_help_skill_ponytail_help", "to": "agents_skills_ponytail_help_skill_more", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_help_skill_ponytail_help", "to": "agents_skills_ponytail_help_skill_skills", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_help_skill_ponytail_help", "to": "agents_skills_ponytail_help_skill_update", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_review_skill", "to": "agents_skills_ponytail_review_skill_boundaries", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_review_skill", "to": "agents_skills_ponytail_review_skill_examples", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_review_skill", "to": "agents_skills_ponytail_review_skill_format", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_review_skill", "to": "agents_skills_ponytail_review_skill_scoring", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_skill", "to": "agents_skills_ponytail_skill_ponytail", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_skill_ponytail", "to": "agents_skills_ponytail_skill_boundaries", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_skill_ponytail", "to": "agents_skills_ponytail_skill_intensity", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_skill_ponytail", "to": "agents_skills_ponytail_skill_output", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_skill_ponytail", "to": "agents_skills_ponytail_skill_persistence", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_skill_ponytail", "to": "agents_skills_ponytail_skill_rules", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_skill_ponytail", "to": "agents_skills_ponytail_skill_the_ladder", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_ponytail_skill_ponytail", "to": "agents_skills_ponytail_skill_when_not_to_be_lazy", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill", "to": "agents_skills_speckit_analyze_skill_context", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill", "to": "agents_skills_speckit_analyze_skill_execution_steps", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill", "to": "agents_skills_speckit_analyze_skill_goal", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill", "to": "agents_skills_speckit_analyze_skill_operating_constraints", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill", "to": "agents_skills_speckit_analyze_skill_operating_principles", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill", "to": "agents_skills_speckit_analyze_skill_pre_execution_checks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill", "to": "agents_skills_speckit_analyze_skill_specification_analysis_report", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill", "to": "agents_skills_speckit_analyze_skill_user_input", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill_execution_steps", "to": "agents_skills_speckit_analyze_skill_1_initialize_analysis_context", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill_execution_steps", "to": "agents_skills_speckit_analyze_skill_2_load_artifacts_progressive_disclosure", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill_execution_steps", "to": "agents_skills_speckit_analyze_skill_3_build_semantic_models", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill_execution_steps", "to": "agents_skills_speckit_analyze_skill_4_detection_passes_token_efficient_analysis", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill_execution_steps", "to": "agents_skills_speckit_analyze_skill_5_severity_assignment", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill_execution_steps", "to": "agents_skills_speckit_analyze_skill_6_produce_compact_analysis_report", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill_4_detection_passes_token_efficient_analysis", "to": "agents_skills_speckit_analyze_skill_a_duplication_detection", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill_4_detection_passes_token_efficient_analysis", "to": "agents_skills_speckit_analyze_skill_b_ambiguity_detection", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill_4_detection_passes_token_efficient_analysis", "to": "agents_skills_speckit_analyze_skill_c_underspecification", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill_4_detection_passes_token_efficient_analysis", "to": "agents_skills_speckit_analyze_skill_d_constitution_alignment", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill_4_detection_passes_token_efficient_analysis", "to": "agents_skills_speckit_analyze_skill_e_coverage_gaps", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill_4_detection_passes_token_efficient_analysis", "to": "agents_skills_speckit_analyze_skill_f_inconsistency", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill_specification_analysis_report", "to": "agents_skills_speckit_analyze_skill_7_provide_next_actions", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill_specification_analysis_report", "to": "agents_skills_speckit_analyze_skill_8_offer_remediation", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill_specification_analysis_report", "to": "agents_skills_speckit_analyze_skill_9_check_for_extension_hooks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill_operating_principles", "to": "agents_skills_speckit_analyze_skill_analysis_guidelines", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_analyze_skill_operating_principles", "to": "agents_skills_speckit_analyze_skill_context_efficiency", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_checklist_skill", "to": "agents_skills_speckit_checklist_skill_anti_examples_what_not_to_do", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_checklist_skill", "to": "agents_skills_speckit_checklist_skill_checklist_purpose_unit_tests_for_english", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_checklist_skill", "to": "agents_skills_speckit_checklist_skill_example_checklist_types_sample_items", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_checklist_skill", "to": "agents_skills_speckit_checklist_skill_execution_steps", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_checklist_skill", "to": "agents_skills_speckit_checklist_skill_post_execution_checks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_checklist_skill", "to": "agents_skills_speckit_checklist_skill_pre_execution_checks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_checklist_skill", "to": "agents_skills_speckit_checklist_skill_user_input", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_clarify_skill", "to": "agents_skills_speckit_clarify_skill_completion_report", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_clarify_skill", "to": "agents_skills_speckit_clarify_skill_done_when", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_clarify_skill", "to": "agents_skills_speckit_clarify_skill_mandatory_post_execution_hooks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_clarify_skill", "to": "agents_skills_speckit_clarify_skill_outline", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_clarify_skill", "to": "agents_skills_speckit_clarify_skill_pre_execution_checks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_clarify_skill", "to": "agents_skills_speckit_clarify_skill_user_input", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_constitution_skill", "to": "agents_skills_speckit_constitution_skill_outline", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_constitution_skill", "to": "agents_skills_speckit_constitution_skill_post_execution_checks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_constitution_skill", "to": "agents_skills_speckit_constitution_skill_pre_execution_checks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_constitution_skill", "to": "agents_skills_speckit_constitution_skill_scope_guard", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_constitution_skill", "to": "agents_skills_speckit_constitution_skill_user_input", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_converge_skill", "to": "agents_skills_speckit_converge_skill_convergence_findings", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_converge_skill", "to": "agents_skills_speckit_converge_skill_execution_steps", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_converge_skill", "to": "agents_skills_speckit_converge_skill_goal", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_converge_skill", "to": "agents_skills_speckit_converge_skill_operating_constraints", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_converge_skill", "to": "agents_skills_speckit_converge_skill_pre_execution_checks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_converge_skill", "to": "agents_skills_speckit_converge_skill_user_input", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_converge_skill_execution_steps", "to": "agents_skills_speckit_converge_skill_1_initialize_convergence_context", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_converge_skill_execution_steps", "to": "agents_skills_speckit_converge_skill_2_load_artifacts_progressive_disclosure", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_converge_skill_execution_steps", "to": "agents_skills_speckit_converge_skill_3_build_the_intent_inventory", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_converge_skill_execution_steps", "to": "agents_skills_speckit_converge_skill_4_assess_the_codebase_and_classify_findings", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_converge_skill_execution_steps", "to": "agents_skills_speckit_converge_skill_5_assign_severity", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_converge_skill_execution_steps", "to": "agents_skills_speckit_converge_skill_6_present_the_in_session_findings_summary", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_converge_skill_convergence_findings", "to": "agents_skills_speckit_converge_skill_7_append_convergence_tasks_or_report_converged", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_converge_skill_convergence_findings", "to": "agents_skills_speckit_converge_skill_8_provide_next_actions_handoff", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_converge_skill_convergence_findings", "to": "agents_skills_speckit_converge_skill_9_check_for_extension_hooks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_implement_skill", "to": "agents_skills_speckit_implement_skill_completion_report", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_implement_skill", "to": "agents_skills_speckit_implement_skill_done_when", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_implement_skill", "to": "agents_skills_speckit_implement_skill_mandatory_post_execution_hooks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_implement_skill", "to": "agents_skills_speckit_implement_skill_outline", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_implement_skill", "to": "agents_skills_speckit_implement_skill_pre_execution_checks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_implement_skill", "to": "agents_skills_speckit_implement_skill_user_input", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_plan_skill", "to": "agents_skills_speckit_plan_skill_completion_report", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_plan_skill", "to": "agents_skills_speckit_plan_skill_done_when", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_plan_skill", "to": "agents_skills_speckit_plan_skill_key_rules", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_plan_skill", "to": "agents_skills_speckit_plan_skill_mandatory_post_execution_hooks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_plan_skill", "to": "agents_skills_speckit_plan_skill_outline", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_plan_skill", "to": "agents_skills_speckit_plan_skill_phases", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_plan_skill", "to": "agents_skills_speckit_plan_skill_pre_execution_checks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_plan_skill", "to": "agents_skills_speckit_plan_skill_user_input", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_plan_skill_phases", "to": "agents_skills_speckit_plan_skill_phase_0_outline_research", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_plan_skill_phases", "to": "agents_skills_speckit_plan_skill_phase_1_design_contracts", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_specify_skill", "to": "agents_skills_speckit_specify_skill_completion_report", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_specify_skill", "to": "agents_skills_speckit_specify_skill_done_when", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_specify_skill", "to": "agents_skills_speckit_specify_skill_mandatory_post_execution_hooks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_specify_skill", "to": "agents_skills_speckit_specify_skill_outline", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_specify_skill", "to": "agents_skills_speckit_specify_skill_pre_execution_checks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_specify_skill", "to": "agents_skills_speckit_specify_skill_quick_guidelines", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_specify_skill", "to": "agents_skills_speckit_specify_skill_user_input", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_specify_skill_quick_guidelines", "to": "agents_skills_speckit_specify_skill_for_ai_generation", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_specify_skill_quick_guidelines", "to": "agents_skills_speckit_specify_skill_section_requirements", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_specify_skill_quick_guidelines", "to": "agents_skills_speckit_specify_skill_success_criteria_guidelines", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_tasks_skill", "to": "agents_skills_speckit_tasks_skill_completion_report", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_tasks_skill", "to": "agents_skills_speckit_tasks_skill_done_when", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_tasks_skill", "to": "agents_skills_speckit_tasks_skill_mandatory_post_execution_hooks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_tasks_skill", "to": "agents_skills_speckit_tasks_skill_outline", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_tasks_skill", "to": "agents_skills_speckit_tasks_skill_pre_execution_checks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_tasks_skill", "to": "agents_skills_speckit_tasks_skill_task_generation_rules", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_tasks_skill", "to": "agents_skills_speckit_tasks_skill_user_input", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_tasks_skill_task_generation_rules", "to": "agents_skills_speckit_tasks_skill_checklist_format_required", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_tasks_skill_task_generation_rules", "to": "agents_skills_speckit_tasks_skill_phase_structure", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_tasks_skill_task_generation_rules", "to": "agents_skills_speckit_tasks_skill_task_organization", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_taskstoissues_skill", "to": "agents_skills_speckit_taskstoissues_skill_outline", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_taskstoissues_skill", "to": "agents_skills_speckit_taskstoissues_skill_post_execution_checks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_taskstoissues_skill", "to": "agents_skills_speckit_taskstoissues_skill_pre_execution_checks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_skills_speckit_taskstoissues_skill", "to": "agents_skills_speckit_taskstoissues_skill_user_input", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agents_workflows_graphify", "to": "agents_workflows_graphify_workflow_graphify", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_memory_constitution", "to": "specify_memory_constitution_project_name_constitution", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_memory_constitution_project_name_constitution", "to": "specify_memory_constitution_core_principles", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_memory_constitution_project_name_constitution", "to": "specify_memory_constitution_governance", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_memory_constitution_project_name_constitution", "to": "specify_memory_constitution_section_2_name", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_memory_constitution_project_name_constitution", "to": "specify_memory_constitution_section_3_name", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_memory_constitution_core_principles", "to": "specify_memory_constitution_principle_1_name", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_memory_constitution_core_principles", "to": "specify_memory_constitution_principle_2_name", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_memory_constitution_core_principles", "to": "specify_memory_constitution_principle_3_name", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_memory_constitution_core_principles", "to": "specify_memory_constitution_principle_4_name", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_memory_constitution_core_principles", "to": "specify_memory_constitution_principle_5_name", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_checklist_template", "to": "specify_templates_checklist_template_checklist_type_checklist_feature_name", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_checklist_template_checklist_type_checklist_feature_name", "to": "specify_templates_checklist_template_category_1", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_checklist_template_checklist_type_checklist_feature_name", "to": "specify_templates_checklist_template_category_2", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_checklist_template_checklist_type_checklist_feature_name", "to": "specify_templates_checklist_template_notes", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_constitution_template", "to": "specify_templates_constitution_template_project_name_constitution", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_constitution_template_project_name_constitution", "to": "specify_templates_constitution_template_core_principles", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_constitution_template_project_name_constitution", "to": "specify_templates_constitution_template_governance", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_constitution_template_project_name_constitution", "to": "specify_templates_constitution_template_section_2_name", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_constitution_template_project_name_constitution", "to": "specify_templates_constitution_template_section_3_name", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_constitution_template_core_principles", "to": "specify_templates_constitution_template_principle_1_name", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_constitution_template_core_principles", "to": "specify_templates_constitution_template_principle_2_name", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_constitution_template_core_principles", "to": "specify_templates_constitution_template_principle_3_name", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_constitution_template_core_principles", "to": "specify_templates_constitution_template_principle_4_name", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_constitution_template_core_principles", "to": "specify_templates_constitution_template_principle_5_name", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_plan_template", "to": "specify_templates_plan_template_implementation_plan_feature", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_plan_template_implementation_plan_feature", "to": "specify_templates_plan_template_complexity_tracking", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_plan_template_implementation_plan_feature", "to": "specify_templates_plan_template_constitution_check", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_plan_template_implementation_plan_feature", "to": "specify_templates_plan_template_project_structure", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_plan_template_implementation_plan_feature", "to": "specify_templates_plan_template_summary", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_plan_template_implementation_plan_feature", "to": "specify_templates_plan_template_technical_context", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_plan_template_project_structure", "to": "specify_templates_plan_template_documentation_this_feature", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_plan_template_project_structure", "to": "specify_templates_plan_template_source_code_repository_root", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_spec_template", "to": "specify_templates_spec_template_feature_specification_feature_name", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_spec_template_feature_specification_feature_name", "to": "specify_templates_spec_template_assumptions", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_spec_template_feature_specification_feature_name", "to": "specify_templates_spec_template_requirements_mandatory", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_spec_template_feature_specification_feature_name", "to": "specify_templates_spec_template_success_criteria_mandatory", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_spec_template_feature_specification_feature_name", "to": "specify_templates_spec_template_user_scenarios_testing_mandatory", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_spec_template_user_scenarios_testing_mandatory", "to": "specify_templates_spec_template_edge_cases", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_spec_template_user_scenarios_testing_mandatory", "to": "specify_templates_spec_template_user_story_1_brief_title_priority_p1", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_spec_template_user_scenarios_testing_mandatory", "to": "specify_templates_spec_template_user_story_2_brief_title_priority_p2", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_spec_template_user_scenarios_testing_mandatory", "to": "specify_templates_spec_template_user_story_3_brief_title_priority_p3", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_spec_template_requirements_mandatory", "to": "specify_templates_spec_template_functional_requirements", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_spec_template_requirements_mandatory", "to": "specify_templates_spec_template_key_entities_include_if_feature_involves_data", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_spec_template_success_criteria_mandatory", "to": "specify_templates_spec_template_measurable_outcomes", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template", "to": "specify_templates_tasks_template_tasks_feature_name", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_tasks_feature_name", "to": "specify_templates_tasks_template_dependencies_execution_order", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_tasks_feature_name", "to": "specify_templates_tasks_template_format_id_p_story_description", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_tasks_feature_name", "to": "specify_templates_tasks_template_implementation_strategy", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_tasks_feature_name", "to": "specify_templates_tasks_template_notes", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_tasks_feature_name", "to": "specify_templates_tasks_template_parallel_example_user_story_1", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_tasks_feature_name", "to": "specify_templates_tasks_template_path_conventions", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_tasks_feature_name", "to": "specify_templates_tasks_template_phase_1_setup_shared_infrastructure", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_tasks_feature_name", "to": "specify_templates_tasks_template_phase_2_foundational_blocking_prerequisites", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_tasks_feature_name", "to": "specify_templates_tasks_template_phase_3_user_story_1_title_priority_p1_mvp", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_tasks_feature_name", "to": "specify_templates_tasks_template_phase_4_user_story_2_title_priority_p2", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_tasks_feature_name", "to": "specify_templates_tasks_template_phase_5_user_story_3_title_priority_p3", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_tasks_feature_name", "to": "specify_templates_tasks_template_phase_n_polish_cross_cutting_concerns", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_phase_3_user_story_1_title_priority_p1_mvp", "to": "specify_templates_tasks_template_implementation_for_user_story_1", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_phase_3_user_story_1_title_priority_p1_mvp", "to": "specify_templates_tasks_template_tests_for_user_story_1_optional_only_if_tests_requested", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_phase_4_user_story_2_title_priority_p2", "to": "specify_templates_tasks_template_implementation_for_user_story_2", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_phase_4_user_story_2_title_priority_p2", "to": "specify_templates_tasks_template_tests_for_user_story_2_optional_only_if_tests_requested", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_phase_5_user_story_3_title_priority_p3", "to": "specify_templates_tasks_template_implementation_for_user_story_3", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_phase_5_user_story_3_title_priority_p3", "to": "specify_templates_tasks_template_tests_for_user_story_3_optional_only_if_tests_requested", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_dependencies_execution_order", "to": "specify_templates_tasks_template_parallel_opportunities", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_dependencies_execution_order", "to": "specify_templates_tasks_template_phase_dependencies", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_dependencies_execution_order", "to": "specify_templates_tasks_template_user_story_dependencies", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_dependencies_execution_order", "to": "specify_templates_tasks_template_within_each_user_story", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_implementation_strategy", "to": "specify_templates_tasks_template_incremental_delivery", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_implementation_strategy", "to": "specify_templates_tasks_template_mvp_first_user_story_1_only", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specify_templates_tasks_template_implementation_strategy", "to": "specify_templates_tasks_template_parallel_team_strategy", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "readme", "to": "readme_textnlpclassifierapp", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "readme_textnlpclassifierapp", "to": "readme_1_classificador_de_conte\u00fado_e_iner\u00eancia_nlp_llm_ecp", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "readme_textnlpclassifierapp", "to": "readme_2_extrator_de_manchetes_do_google_news", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "readme_textnlpclassifierapp", "to": "readme_estrutura_do_projeto", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "readme_textnlpclassifierapp", "to": "readme_instala\u00e7\u00e3o_e_setup", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "readme_textnlpclassifierapp", "to": "readme_licen\u00e7a", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "readme_textnlpclassifierapp", "to": "readme_tabela_de_conte\u00fados", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "readme_textnlpclassifierapp", "to": "readme_testes_e_qualidade_de_c\u00f3digo", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "readme_textnlpclassifierapp", "to": "readme_vis\u00e3o_geral", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "readme_instala\u00e7\u00e3o_e_setup", "to": "readme_1_clonar_o_reposit\u00f3rio_e_criar_ambiente_virtual", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "readme_instala\u00e7\u00e3o_e_setup", "to": "readme_2_instalar_depend\u00eancias", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "readme_instala\u00e7\u00e3o_e_setup", "to": "readme_3_baixar_bin\u00e1rios_do_navegador_stealth_camoufox", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "readme_1_classificador_de_conte\u00fado_e_iner\u00eancia_nlp_llm_ecp", "to": "readme_arquitetura_de_classifica\u00e7\u00e3o_em_3_tiers", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "readme_1_classificador_de_conte\u00fado_e_iner\u00eancia_nlp_llm_ecp", "to": "readme_categorias_de_decis\u00e3o", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "readme_1_classificador_de_conte\u00fado_e_iner\u00eancia_nlp_llm_ecp", "to": "readme_exemplos_de_uso_cli", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "readme_1_classificador_de_conte\u00fado_e_iner\u00eancia_nlp_llm_ecp", "to": "readme_formato_do_ecp_snapshot_e_markdown", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "readme_1_classificador_de_conte\u00fado_e_iner\u00eancia_nlp_llm_ecp", "to": "readme_o_que_\u00e9_e_como_funciona", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "readme_formato_do_ecp_snapshot_e_markdown", "to": "readme_exemplo_de_ecp_snapshot_ecp_sample_json", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "readme_2_extrator_de_manchetes_do_google_news", "to": "readme_argumentos_e_flags_de_linha_de_comando", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "readme_2_extrator_de_manchetes_do_google_news", "to": "readme_diferenciais_t\u00e9cnicos", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "readme_2_extrator_de_manchetes_do_google_news", "to": "readme_exemplos_pr\u00e1ticos_de_uso", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "readme_2_extrator_de_manchetes_do_google_news", "to": "readme_o_que_\u00e9_e_como_funciona_153", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "readme_exemplos_pr\u00e1ticos_de_uso", "to": "readme_1_river_plate_argentina_espanhol_2_p\u00e1ginas_salvar_em_arquivo", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "readme_exemplos_pr\u00e1ticos_de_uso", "to": "readme_2_cruzeiro_brasil_portugu\u00eas_formatado_no_terminal", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "readme_exemplos_pr\u00e1ticos_de_uso", "to": "readme_3_f\u00f3rmula_1_inglaterra_ingl\u00eas", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "readme_exemplos_pr\u00e1ticos_de_uso", "to": "readme_4_filtragem_com_jq_em_modo_silencioso", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "docs_googlenews_extractor_guia_completo", "to": "docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", "to": "docs_googlenews_extractor_guia_completo_1_vis\u00e3o_geral_arquitetura", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", "to": "docs_googlenews_extractor_guia_completo_2_entrada", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", "to": "docs_googlenews_extractor_guia_completo_3_processamento_passo_a_passo", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", "to": "docs_googlenews_extractor_guia_completo_4_entidade_de_dom\u00ednio_da_not\u00edcia_googlenews_etl_domain_entities_news_article_py", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", "to": "docs_googlenews_extractor_guia_completo_5_sa\u00edda", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", "to": "docs_googlenews_extractor_guia_completo_6_resumo_do_fluxo_completo_entrada_sa\u00edda", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", "to": "docs_googlenews_extractor_guia_completo_7_depend\u00eancias_para_rodar_o_que_n\u00e3o_est\u00e1_nos_4_arquivos_centrais", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", "to": "docs_googlenews_extractor_guia_completo_8_como_chamar_exemplo_de_uso", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "docs_googlenews_extractor_guia_completo_2_entrada", "to": "docs_googlenews_extractor_guia_completo_2_1_dto_de_entrada_googlenews_etl_application_dtos_extract_news_dto_py", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "docs_googlenews_extractor_guia_completo_2_entrada", "to": "docs_googlenews_extractor_guia_completo_2_2_value_object_de_valida\u00e7\u00e3o_googlenews_etl_domain_entities_search_query_py", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "docs_googlenews_extractor_guia_completo_3_processamento_passo_a_passo", "to": "docs_googlenews_extractor_guia_completo_3_1_o_caso_de_uso_googlenews_etl_application_use_cases_extract_news_use_case_py", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "docs_googlenews_extractor_guia_completo_3_processamento_passo_a_passo", "to": "docs_googlenews_extractor_guia_completo_3_2_a_porta_googlenews_etl_domain_ports_news_extractor_port_py", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "docs_googlenews_extractor_guia_completo_3_processamento_passo_a_passo", "to": "docs_googlenews_extractor_guia_completo_3_3_o_adaptador_concreto_o_cora\u00e7\u00e3o_do_extrator_googlenews_etl_infrastructure_adapters_google_news_extractor_adapter_py", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "docs_googlenews_extractor_guia_completo_3_processamento_passo_a_passo", "to": "docs_googlenews_extractor_guia_completo_3_4_resolu\u00e7\u00e3o_de_urls_googlenews_etl_infrastructure_adapters_playwright_url_resolver_adapter_py", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "docs_googlenews_extractor_guia_completo_3_processamento_passo_a_passo", "to": "docs_googlenews_extractor_guia_completo_3_5_rate_limiter_googlenews_etl_domain_services_rate_limiter_service_py", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "docs_googlenews_extractor_guia_completo_3_3_o_adaptador_concreto_o_cora\u00e7\u00e3o_do_extrator_googlenews_etl_infrastructure_adapters_google_news_extractor_adapter_py", "to": "docs_googlenews_extractor_guia_completo_3_3_1_inicializa\u00e7\u00e3o_sess\u00e3o_http_com_impersona\u00e7\u00e3o_de_browser", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "docs_googlenews_extractor_guia_completo_3_3_o_adaptador_concreto_o_cora\u00e7\u00e3o_do_extrator_googlenews_etl_infrastructure_adapters_google_news_extractor_adapter_py", "to": "docs_googlenews_extractor_guia_completo_3_3_2_mapeamento_idioma_par\u00e2metros_hl_gl_get_hl_gl", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "docs_googlenews_extractor_guia_completo_3_3_o_adaptador_concreto_o_cora\u00e7\u00e3o_do_extrator_googlenews_etl_infrastructure_adapters_google_news_extractor_adapter_py", "to": "docs_googlenews_extractor_guia_completo_3_3_3_extra\u00e7\u00e3o_do_rss_o_ponto_fundamental_fetch_rss", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "docs_googlenews_extractor_guia_completo_3_3_o_adaptador_concreto_o_cora\u00e7\u00e3o_do_extrator_googlenews_etl_infrastructure_adapters_google_news_extractor_adapter_py", "to": "docs_googlenews_extractor_guia_completo_3_3_4_orquestra\u00e7\u00e3o_com_resolu\u00e7\u00e3o_de_urls_extract", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "docs_googlenews_extractor_guia_completo_5_sa\u00edda", "to": "docs_googlenews_extractor_guia_completo_5_1_dtos_de_sa\u00edda_googlenews_etl_application_dtos_extract_news_dto_py", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "docs_googlenews_extractor_guia_completo_5_sa\u00edda", "to": "docs_googlenews_extractor_guia_completo_5_2_exemplo_de_sa\u00edda_json", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "docs_googlenews_extractor_guia_completo_7_depend\u00eancias_para_rodar_o_que_n\u00e3o_est\u00e1_nos_4_arquivos_centrais", "to": "docs_googlenews_extractor_guia_completo_comportamentos_observ\u00e1veis_honestidade", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "docs_googlenews_extractor_guia_completo_7_depend\u00eancias_para_rodar_o_que_n\u00e3o_est\u00e1_nos_4_arquivos_centrais", "to": "docs_googlenews_extractor_guia_completo_depend\u00eancias_de_bibliotecas_requirements", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "examples_content_northvolt_de", "to": "examples_content_northvolt_de_batteriezellproduktion_f\u00fcr_europ\u00e4ische_elektrofahrzeuge", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "examples_content_presal_pt", "to": "examples_content_presal_pt_petrobras_bate_recorde_hist\u00f3rico_de_produ\u00e7\u00e3o_no_pr\u00e9_sal", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "examples_content_tangential_es", "to": "examples_content_tangential_es_reflexiones_sobre_el_debate_pol\u00edtico_y_la_diplomacia_regional", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_checklists_poc_readiness", "to": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_poc_readiness_requirements_quality_checklist_multilingual_nlp_entity_inherence_classifier", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_checklists_poc_readiness", "to": "specs_001_multilingual_entity_classifier_plan", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_checklists_poc_readiness", "to": "specs_001_multilingual_entity_classifier_spec", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_poc_readiness_requirements_quality_checklist_multilingual_nlp_entity_inherence_classifier", "to": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_1_requirement_completeness_scope_boundaries", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_poc_readiness_requirements_quality_checklist_multilingual_nlp_entity_inherence_classifier", "to": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_2_requirement_clarity_decision_semantics", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_poc_readiness_requirements_quality_checklist_multilingual_nlp_entity_inherence_classifier", "to": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_3_requirement_consistency_alignment", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_poc_readiness_requirements_quality_checklist_multilingual_nlp_entity_inherence_classifier", "to": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_4_acceptance_criteria_measurability", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_poc_readiness_requirements_quality_checklist_multilingual_nlp_entity_inherence_classifier", "to": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_5_scenario_edge_case_coverage", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_poc_readiness_requirements_quality_checklist_multilingual_nlp_entity_inherence_classifier", "to": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_notes", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_checklists_requirements", "to": "specs_001_multilingual_entity_classifier_checklists_requirements_specification_quality_checklist_multilingual_nlp_entity_inherence_classifier", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_checklists_requirements", "to": "specs_001_multilingual_entity_classifier_spec", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_checklists_requirements_specification_quality_checklist_multilingual_nlp_entity_inherence_classifier", "to": "specs_001_multilingual_entity_classifier_checklists_requirements_content_quality", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_checklists_requirements_specification_quality_checklist_multilingual_nlp_entity_inherence_classifier", "to": "specs_001_multilingual_entity_classifier_checklists_requirements_feature_readiness", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_checklists_requirements_specification_quality_checklist_multilingual_nlp_entity_inherence_classifier", "to": "specs_001_multilingual_entity_classifier_checklists_requirements_notes", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_checklists_requirements_specification_quality_checklist_multilingual_nlp_entity_inherence_classifier", "to": "specs_001_multilingual_entity_classifier_checklists_requirements_requirement_completeness", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_contracts_cli_contract", "to": "specs_001_multilingual_entity_classifier_contracts_cli_contract_cli_contract_interface_specification_poc", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_contracts_cli_contract_cli_contract_interface_specification_poc", "to": "specs_001_multilingual_entity_classifier_contracts_cli_contract_1_command_line_interface", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_contracts_cli_contract_cli_contract_interface_specification_poc", "to": "specs_001_multilingual_entity_classifier_contracts_cli_contract_2_standard_streams_exit_codes", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_contracts_cli_contract_1_command_line_interface", "to": "specs_001_multilingual_entity_classifier_contracts_cli_contract_1_1_arguments_options", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_contracts_cli_contract_2_standard_streams_exit_codes", "to": "specs_001_multilingual_entity_classifier_contracts_cli_contract_2_1_exit_codes", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_contracts_cli_contract_2_standard_streams_exit_codes", "to": "specs_001_multilingual_entity_classifier_contracts_cli_contract_2_2_standard_output_stdout_standard_error_stderr", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_data_model", "to": "specs_001_multilingual_entity_classifier_data_model_data_models_schemas_poc", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_data_model_data_models_schemas_poc", "to": "specs_001_multilingual_entity_classifier_data_model_1_input_schemas", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_data_model_data_models_schemas_poc", "to": "specs_001_multilingual_entity_classifier_data_model_2_output_schemas", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_data_model_1_input_schemas", "to": "specs_001_multilingual_entity_classifier_data_model_1_1_ecp_snapshot_schema_snapshot_json", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_data_model_1_input_schemas", "to": "specs_001_multilingual_entity_classifier_data_model_1_2_content_item_schema_content_md", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_data_model_2_output_schemas", "to": "specs_001_multilingual_entity_classifier_data_model_2_1_classification_success_result_schema_result_json", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_data_model_2_output_schemas", "to": "specs_001_multilingual_entity_classifier_data_model_2_2_error_result_schema", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_plan", "to": "specs_001_multilingual_entity_classifier_plan_implementation_plan_multilingual_nlp_entity_inherence_classifier_poc", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_plan", "to": "specs_001_multilingual_entity_classifier_spec", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_tasks", "to": "specs_001_multilingual_entity_classifier_plan", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_plan_implementation_plan_multilingual_nlp_entity_inherence_classifier_poc", "to": "specs_001_multilingual_entity_classifier_plan_complexity_tracking", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_plan_implementation_plan_multilingual_nlp_entity_inherence_classifier_poc", "to": "specs_001_multilingual_entity_classifier_plan_constitution_check", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_plan_implementation_plan_multilingual_nlp_entity_inherence_classifier_poc", "to": "specs_001_multilingual_entity_classifier_plan_project_structure", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_plan_implementation_plan_multilingual_nlp_entity_inherence_classifier_poc", "to": "specs_001_multilingual_entity_classifier_plan_summary", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_plan_implementation_plan_multilingual_nlp_entity_inherence_classifier_poc", "to": "specs_001_multilingual_entity_classifier_plan_technical_context", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_plan_project_structure", "to": "specs_001_multilingual_entity_classifier_plan_documentation_this_feature", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_plan_project_structure", "to": "specs_001_multilingual_entity_classifier_plan_source_code_repository_root", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_quickstart", "to": "specs_001_multilingual_entity_classifier_quickstart_quickstart_validation_guide_poc", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_quickstart_quickstart_validation_guide_poc", "to": "specs_001_multilingual_entity_classifier_quickstart_1_prerequisites_installation", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_quickstart_quickstart_validation_guide_poc", "to": "specs_001_multilingual_entity_classifier_quickstart_2_basic_cli_usage_examples", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_quickstart_quickstart_validation_guide_poc", "to": "specs_001_multilingual_entity_classifier_quickstart_3_running_the_controlled_24_case_benchmark", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_quickstart_2_basic_cli_usage_examples", "to": "specs_001_multilingual_entity_classifier_quickstart_2_1_direct_inherence_portuguese", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_quickstart_2_basic_cli_usage_examples", "to": "specs_001_multilingual_entity_classifier_quickstart_2_2_contextual_inherence_via_graph_snapshot_german", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_quickstart_2_basic_cli_usage_examples", "to": "specs_001_multilingual_entity_classifier_quickstart_2_3_tangential_mention_spanish", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_research", "to": "specs_001_multilingual_entity_classifier_research_technical_research_architecture_decisions_poc", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_research_technical_research_architecture_decisions_poc", "to": "specs_001_multilingual_entity_classifier_research_1_technical_decisions_tradeoffs", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_research_technical_research_architecture_decisions_poc", "to": "specs_001_multilingual_entity_classifier_research_2_standardized_error_handling_strategy", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_research_1_technical_decisions_tradeoffs", "to": "specs_001_multilingual_entity_classifier_research_decision_1_execution_engine_cli_architecture", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_research_1_technical_decisions_tradeoffs", "to": "specs_001_multilingual_entity_classifier_research_decision_2_multilingual_language_detection_normalization_tier_1_core", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_research_1_technical_decisions_tradeoffs", "to": "specs_001_multilingual_entity_classifier_research_decision_3_materialized_ecp_snapshot_contract_matching_logic", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_research_1_technical_decisions_tradeoffs", "to": "specs_001_multilingual_entity_classifier_research_decision_4_tier_2_embeddings_tier_3_llm_optional_adapters", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_research_1_technical_decisions_tradeoffs", "to": "specs_001_multilingual_entity_classifier_research_decision_5_controlled_24_case_poc_benchmark_suite", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_spec", "to": "specs_001_multilingual_entity_classifier_spec_feature_specification_multilingual_nlp_entity_inherence_classifier_poc", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_tasks", "to": "specs_001_multilingual_entity_classifier_spec", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_spec_feature_specification_multilingual_nlp_entity_inherence_classifier_poc", "to": "specs_001_multilingual_entity_classifier_spec_assumptions_scope", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_spec_feature_specification_multilingual_nlp_entity_inherence_classifier_poc", "to": "specs_001_multilingual_entity_classifier_spec_clarifications", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_spec_feature_specification_multilingual_nlp_entity_inherence_classifier_poc", "to": "specs_001_multilingual_entity_classifier_spec_requirements_mandatory", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_spec_feature_specification_multilingual_nlp_entity_inherence_classifier_poc", "to": "specs_001_multilingual_entity_classifier_spec_success_criteria_mandatory", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_spec_feature_specification_multilingual_nlp_entity_inherence_classifier_poc", "to": "specs_001_multilingual_entity_classifier_spec_user_scenarios_testing_mandatory", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_spec_clarifications", "to": "specs_001_multilingual_entity_classifier_spec_session_2026_08_19", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_spec_user_scenarios_testing_mandatory", "to": "specs_001_multilingual_entity_classifier_spec_user_story_1_classify_content_inherence_via_cli_for_an_ecp_snapshot_priority_p1", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_spec_user_scenarios_testing_mandatory", "to": "specs_001_multilingual_entity_classifier_spec_user_story_2_multilingual_language_support_edge_validation_priority_p2", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_spec_requirements_mandatory", "to": "specs_001_multilingual_entity_classifier_spec_functional_requirements", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_spec_requirements_mandatory", "to": "specs_001_multilingual_entity_classifier_spec_key_entities_data_models_domain_entities", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_spec_success_criteria_mandatory", "to": "specs_001_multilingual_entity_classifier_spec_measurable_outcomes", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_spec_assumptions_scope", "to": "specs_001_multilingual_entity_classifier_spec_assumptions", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_spec_assumptions_scope", "to": "specs_001_multilingual_entity_classifier_spec_explicit_out_of_scope_poc", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_tasks", "to": "specs_001_multilingual_entity_classifier_tasks_tasks_multilingual_nlp_entity_inherence_classifier_poc", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_tasks_tasks_multilingual_nlp_entity_inherence_classifier_poc", "to": "specs_001_multilingual_entity_classifier_tasks_dependencies_execution_order", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_tasks_tasks_multilingual_nlp_entity_inherence_classifier_poc", "to": "specs_001_multilingual_entity_classifier_tasks_phase_1_setup_shared_infrastructure", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_tasks_tasks_multilingual_nlp_entity_inherence_classifier_poc", "to": "specs_001_multilingual_entity_classifier_tasks_phase_2_foundational_blocking_prerequisites", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_tasks_tasks_multilingual_nlp_entity_inherence_classifier_poc", "to": "specs_001_multilingual_entity_classifier_tasks_phase_3_user_story_1_core_tier_1_deterministic_classification_cli_priority_p1_mvp", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_tasks_tasks_multilingual_nlp_entity_inherence_classifier_poc", "to": "specs_001_multilingual_entity_classifier_tasks_phase_4_user_story_2_multilingual_24_case_controlled_benchmark_suite_priority_p2", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_tasks_tasks_multilingual_nlp_entity_inherence_classifier_poc", "to": "specs_001_multilingual_entity_classifier_tasks_phase_5_optional_adapters_tier_2_embeddings_tier_3_llm_priority_p3", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_tasks_tasks_multilingual_nlp_entity_inherence_classifier_poc", "to": "specs_001_multilingual_entity_classifier_tasks_phase_6_polish_validation", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_tasks_phase_3_user_story_1_core_tier_1_deterministic_classification_cli_priority_p1_mvp", "to": "specs_001_multilingual_entity_classifier_tasks_implementation_for_user_story_1", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_tasks_phase_3_user_story_1_core_tier_1_deterministic_classification_cli_priority_p1_mvp", "to": "specs_001_multilingual_entity_classifier_tasks_tests_for_user_story_1", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_tasks_phase_4_user_story_2_multilingual_24_case_controlled_benchmark_suite_priority_p2", "to": "specs_001_multilingual_entity_classifier_tasks_implementation_for_user_story_2", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_tasks_phase_5_optional_adapters_tier_2_embeddings_tier_3_llm_priority_p3", "to": "specs_001_multilingual_entity_classifier_tasks_implementation_for_user_story_3", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_001_multilingual_entity_classifier_tasks_dependencies_execution_order", "to": "specs_001_multilingual_entity_classifier_tasks_implementation_strategy", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_checklists_readiness", "to": "specs_002_google_news_extractor_checklists_readiness_general_readiness_checklist_google_news_headlines_extractor", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_checklists_readiness", "to": "specs_002_google_news_extractor_contracts_cli_contract", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_checklists_readiness", "to": "specs_002_google_news_extractor_data_model", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_checklists_readiness", "to": "specs_002_google_news_extractor_plan", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_checklists_readiness", "to": "specs_002_google_news_extractor_research", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_checklists_readiness", "to": "specs_002_google_news_extractor_spec", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_checklists_readiness_general_readiness_checklist_google_news_headlines_extractor", "to": "specs_002_google_news_extractor_checklists_readiness_cli_interface_parameter_contracts", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_checklists_readiness_general_readiness_checklist_google_news_headlines_extractor", "to": "specs_002_google_news_extractor_checklists_readiness_data_sanitization_article_extraction", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_checklists_readiness_general_readiness_checklist_google_news_headlines_extractor", "to": "specs_002_google_news_extractor_checklists_readiness_error_handling_edge_cases", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_checklists_readiness_general_readiness_checklist_google_news_headlines_extractor", "to": "specs_002_google_news_extractor_checklists_readiness_non_functional_operational_readiness", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_checklists_readiness_general_readiness_checklist_google_news_headlines_extractor", "to": "specs_002_google_news_extractor_checklists_readiness_notes", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_checklists_readiness_general_readiness_checklist_google_news_headlines_extractor", "to": "specs_002_google_news_extractor_checklists_readiness_scraping_engine_feed_mapping", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_checklists_requirements", "to": "specs_002_google_news_extractor_checklists_requirements_specification_quality_checklist_google_news_headlines_extractor", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_checklists_requirements", "to": "specs_002_google_news_extractor_spec", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_checklists_requirements_specification_quality_checklist_google_news_headlines_extractor", "to": "specs_002_google_news_extractor_checklists_requirements_content_quality", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_checklists_requirements_specification_quality_checklist_google_news_headlines_extractor", "to": "specs_002_google_news_extractor_checklists_requirements_feature_readiness", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_checklists_requirements_specification_quality_checklist_google_news_headlines_extractor", "to": "specs_002_google_news_extractor_checklists_requirements_notes", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_checklists_requirements_specification_quality_checklist_google_news_headlines_extractor", "to": "specs_002_google_news_extractor_checklists_requirements_requirement_completeness", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_contracts_cli_contract", "to": "specs_002_google_news_extractor_contracts_cli_contract_cli_contract_google_news_headlines_extractor", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_tasks", "to": "specs_002_google_news_extractor_contracts_cli_contract", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_contracts_cli_contract_cli_contract_google_news_headlines_extractor", "to": "specs_002_google_news_extractor_contracts_cli_contract_1_comando_e_argumentos", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_contracts_cli_contract_cli_contract_google_news_headlines_extractor", "to": "specs_002_google_news_extractor_contracts_cli_contract_2_c\u00f3digos_de_sa\u00edda_exit_codes", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_contracts_cli_contract_cli_contract_google_news_headlines_extractor", "to": "specs_002_google_news_extractor_contracts_cli_contract_3_protocolo_de_streams_stdout_stderr", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_contracts_cli_contract_1_comando_e_argumentos", "to": "specs_002_google_news_extractor_contracts_cli_contract_argumentos_de_linha_de_comando", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_contracts_cli_contract_1_comando_e_argumentos", "to": "specs_002_google_news_extractor_contracts_cli_contract_sintaxe", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_data_model", "to": "specs_002_google_news_extractor_data_model_data_model_google_news_headlines_extractor", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_data_model_data_model_google_news_headlines_extractor", "to": "specs_002_google_news_extractor_data_model_1_entidades_de_dom\u00ednio_dtos", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_data_model_data_model_google_news_headlines_extractor", "to": "specs_002_google_news_extractor_data_model_2_esquema_json_de_sa\u00edda", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_data_model_1_entidades_de_dom\u00ednio_dtos", "to": "specs_002_google_news_extractor_data_model_1_1_searchquery_par\u00e2metros_da_busca", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_data_model_1_entidades_de_dom\u00ednio_dtos", "to": "specs_002_google_news_extractor_data_model_1_2_newsarticle_item_de_not\u00edcia", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_data_model_1_entidades_de_dom\u00ednio_dtos", "to": "specs_002_google_news_extractor_data_model_1_3_extractionresult_sa\u00edda_estruturada_consolidada", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_plan", "to": "specs_002_google_news_extractor_plan_implementation_plan_google_news_headlines_extractor", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_plan", "to": "specs_002_google_news_extractor_spec", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_tasks", "to": "specs_002_google_news_extractor_plan", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_plan_implementation_plan_google_news_headlines_extractor", "to": "specs_002_google_news_extractor_plan_architecture_pipeline", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_plan_implementation_plan_google_news_headlines_extractor", "to": "specs_002_google_news_extractor_plan_project_structure", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_plan_implementation_plan_google_news_headlines_extractor", "to": "specs_002_google_news_extractor_plan_summary", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_plan_implementation_plan_google_news_headlines_extractor", "to": "specs_002_google_news_extractor_plan_technical_context", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_plan_project_structure", "to": "specs_002_google_news_extractor_plan_documentation_this_feature", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_plan_project_structure", "to": "specs_002_google_news_extractor_plan_source_code", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_quickstart", "to": "specs_002_google_news_extractor_quickstart_quickstart_google_news_headlines_extractor", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_quickstart_quickstart_google_news_headlines_extractor", "to": "specs_002_google_news_extractor_quickstart_1_pr\u00e9_requisitos_e_instala\u00e7\u00e3o", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_quickstart_quickstart_google_news_headlines_extractor", "to": "specs_002_google_news_extractor_quickstart_2_cen\u00e1rios_pr\u00e1ticos_de_uso", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_quickstart_quickstart_google_news_headlines_extractor", "to": "specs_002_google_news_extractor_quickstart_3_valida\u00e7\u00e3o_dos_testes_automatizados_e_linter", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_quickstart_2_cen\u00e1rios_pr\u00e1ticos_de_uso", "to": "specs_002_google_news_extractor_quickstart_cen\u00e1rio_1_river_plate_argentina_espanhol_2_p\u00e1ginas_salvar_em_arquivo", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_quickstart_2_cen\u00e1rios_pr\u00e1ticos_de_uso", "to": "specs_002_google_news_extractor_quickstart_cen\u00e1rio_2_cruzeiro_brasil_portugu\u00eas_formatado_no_terminal", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_quickstart_2_cen\u00e1rios_pr\u00e1ticos_de_uso", "to": "specs_002_google_news_extractor_quickstart_cen\u00e1rio_3_f\u00f3rmula_1_reino_unido_ingl\u00eas", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_quickstart_2_cen\u00e1rios_pr\u00e1ticos_de_uso", "to": "specs_002_google_news_extractor_quickstart_cen\u00e1rio_4_integra\u00e7\u00e3o_em_pipeline_com_jq_modo_silencioso", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_quickstart_2_cen\u00e1rios_pr\u00e1ticos_de_uso", "to": "specs_002_google_news_extractor_quickstart_cen\u00e1rio_5_extra\u00e7\u00e3o_r\u00e1pida_com_links_brutos_sem_resolu\u00e7\u00e3o_de_urls", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_research", "to": "specs_002_google_news_extractor_research_research_google_news_headlines_extractor", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_research_research_google_news_headlines_extractor", "to": "specs_002_google_news_extractor_research_1_technical_decisions_tradeoffs", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_research_1_technical_decisions_tradeoffs", "to": "specs_002_google_news_extractor_research_decision_1_motor_de_requisi\u00e7\u00e3o_e_scraping_com_foxcape_em_modo_headless", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_research_1_technical_decisions_tradeoffs", "to": "specs_002_google_news_extractor_research_decision_2_endpoint_rss_do_google_news_vs_scraping_de_dom", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_research_1_technical_decisions_tradeoffs", "to": "specs_002_google_news_extractor_research_decision_3_mapeamento_de_idioma_e_locale_hl_gl_ceid", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_research_1_technical_decisions_tradeoffs", "to": "specs_002_google_news_extractor_research_decision_4_resolu\u00e7\u00e3o_de_urls_do_google_news_via_googlenewsdecoder", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_research_1_technical_decisions_tradeoffs", "to": "specs_002_google_news_extractor_research_decision_5_logging_em_tempo_real_no_stderr_e_segrega\u00e7\u00e3o_de_streams", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_spec", "to": "specs_002_google_news_extractor_spec_feature_specification_google_news_headlines_extractor", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_tasks", "to": "specs_002_google_news_extractor_spec", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_spec_feature_specification_google_news_headlines_extractor", "to": "specs_002_google_news_extractor_spec_clarifications", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_spec_feature_specification_google_news_headlines_extractor", "to": "specs_002_google_news_extractor_spec_edge_cases", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_spec_feature_specification_google_news_headlines_extractor", "to": "specs_002_google_news_extractor_spec_requirements_mandatory", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_spec_feature_specification_google_news_headlines_extractor", "to": "specs_002_google_news_extractor_spec_success_criteria_mandatory", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_spec_feature_specification_google_news_headlines_extractor", "to": "specs_002_google_news_extractor_spec_user_scenarios_testing_mandatory", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_spec_clarifications", "to": "specs_002_google_news_extractor_spec_session_2026_08_20", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_spec_user_scenarios_testing_mandatory", "to": "specs_002_google_news_extractor_spec_user_story_1_extra\u00e7\u00e3o_b\u00e1sica_de_not\u00edcias_com_urls_finais_resolvidas_priority_p1_mvp", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_spec_user_scenarios_testing_mandatory", "to": "specs_002_google_news_extractor_spec_user_story_2_filtragem_regional_e_edi\u00e7\u00e3o_geogr\u00e1fica_priority_p2", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_spec_user_scenarios_testing_mandatory", "to": "specs_002_google_news_extractor_spec_user_story_3_pagina\u00e7\u00e3o_exporta\u00e7\u00e3o_em_arquivo_e_feedback_visual_priority_p3", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_spec_requirements_mandatory", "to": "specs_002_google_news_extractor_spec_functional_requirements", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_tasks", "to": "specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", "to": "specs_002_google_news_extractor_tasks_phase_1_setup_shared_infrastructure", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", "to": "specs_002_google_news_extractor_tasks_phase_2_foundational_blocking_prerequisites", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", "to": "specs_002_google_news_extractor_tasks_phase_3_user_story_1_extra\u00e7\u00e3o_b\u00e1sica_de_not\u00edcias_por_assunto_e_idioma_priority_p1_mvp", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", "to": "specs_002_google_news_extractor_tasks_phase_4_user_story_2_filtragem_regional_e_edi\u00e7\u00e3o_geogr\u00e1fica_priority_p2", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", "to": "specs_002_google_news_extractor_tasks_phase_5_user_story_3_pagina\u00e7\u00e3o_e_controle_de_volume_de_resultados_priority_p3", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", "to": "specs_002_google_news_extractor_tasks_phase_6_url_resolution_headless_configuration_real_time_logging", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", "to": "specs_002_google_news_extractor_tasks_phase_7_verification_e2e_testing", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_tasks_phase_3_user_story_1_extra\u00e7\u00e3o_b\u00e1sica_de_not\u00edcias_por_assunto_e_idioma_priority_p1_mvp", "to": "specs_002_google_news_extractor_tasks_implementation_for_user_story_1", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_tasks_phase_3_user_story_1_extra\u00e7\u00e3o_b\u00e1sica_de_not\u00edcias_por_assunto_e_idioma_priority_p1_mvp", "to": "specs_002_google_news_extractor_tasks_tests_for_user_story_1", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_tasks_phase_4_user_story_2_filtragem_regional_e_edi\u00e7\u00e3o_geogr\u00e1fica_priority_p2", "to": "specs_002_google_news_extractor_tasks_implementation_for_user_story_2", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_tasks_phase_4_user_story_2_filtragem_regional_e_edi\u00e7\u00e3o_geogr\u00e1fica_priority_p2", "to": "specs_002_google_news_extractor_tasks_tests_for_user_story_2", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_tasks_phase_5_user_story_3_pagina\u00e7\u00e3o_e_controle_de_volume_de_resultados_priority_p3", "to": "specs_002_google_news_extractor_tasks_implementation_for_user_story_3", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "specs_002_google_news_extractor_tasks_phase_5_user_story_3_pagina\u00e7\u00e3o_e_controle_de_volume_de_resultados_priority_p3", "to": "specs_002_google_news_extractor_tasks_tests_for_user_story_3", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_de_contextual", "to": "tests_fixtures_benchmark_24_de_contextual_batteriefabrik_in_europa", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_de_direct", "to": "tests_fixtures_benchmark_24_de_direct_investitionsoffensive_in_wolfsburg", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_de_not_related", "to": "tests_fixtures_benchmark_24_de_not_related_backrezept_f\u00fcr_apfelstrudel", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_de_tangential", "to": "tests_fixtures_benchmark_24_de_tangential_reisebericht_aus_niedersachsen", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_en_contextual", "to": "tests_fixtures_benchmark_24_en_contextual_electronics_assembly_expansion", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_en_direct", "to": "tests_fixtures_benchmark_24_en_direct_apple_unveils_next_generation_iphone", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_en_not_related", "to": "tests_fixtures_benchmark_24_en_not_related_classic_apple_pie_baking_guide", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_en_tangential", "to": "tests_fixtures_benchmark_24_en_tangential_morning_city_walk", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_es_contextual", "to": "tests_fixtures_benchmark_24_es_contextual_nuevas_soluciones_de_pagos_electr\u00f3nicos", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_es_direct", "to": "tests_fixtures_benchmark_24_es_direct_expansi\u00f3n_de_servicios_financieros_en_espa\u00f1a", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_es_not_related", "to": "tests_fixtures_benchmark_24_es_not_related_turismo_en_la_costa_norte", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_es_tangential", "to": "tests_fixtures_benchmark_24_es_tangential_gu\u00eda_cultural_de_la_ciudad", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_fr_contextual", "to": "tests_fixtures_benchmark_24_fr_contextual_batteries_industrielles_de_pointe", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_fr_direct", "to": "tests_fixtures_benchmark_24_fr_direct_d\u00e9veloppement_\u00e9nerg\u00e9tique_en_france", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_fr_not_related", "to": "tests_fixtures_benchmark_24_fr_not_related_recette_traditionnelle_de_la_quiche_lorraine", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_fr_tangential", "to": "tests_fixtures_benchmark_24_fr_tangential_promenade_dans_paris", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_it_contextual", "to": "tests_fixtures_benchmark_24_it_contextual_innovazione_negli_impianti_frenanti", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_it_direct", "to": "tests_fixtures_benchmark_24_it_direct_nuova_monoposto_a_maranello", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_it_not_related", "to": "tests_fixtures_benchmark_24_it_not_related_ricetta_tradizionale_del_risotto", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_it_tangential", "to": "tests_fixtures_benchmark_24_it_tangential_passeggiata_pomeridiana_a_modena", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_pt_contextual", "to": "tests_fixtures_benchmark_24_pt_contextual_log\u00edstica_de_derivados", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_pt_direct", "to": "tests_fixtures_benchmark_24_pt_direct_produ\u00e7\u00e3o_de_petr\u00f3leo_no_brasil", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_pt_not_related", "to": "tests_fixtures_benchmark_24_pt_not_related_dicas_de_jardinagem", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_fixtures_benchmark_24_pt_tangential", "to": "tests_fixtures_benchmark_24_pt_tangential_turismo_no_rio_de_janeiro", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}]; +const LEGEND = [{"cid": 0, "color": "#4E79A7", "label": "Task Planning", "count": 27}, {"cid": 1, "color": "#F28E2B", "label": "Convergence Workflow", "count": 16}, {"cid": 2, "color": "#E15759", "label": "SpecKit Utilities", "count": 16}, {"cid": 3, "color": "#76B7B2", "label": "Graphify Commands", "count": 25}, {"cid": 4, "color": "#59A14F", "label": "speckit-analyze/SKILL.md", "count": 26}, {"cid": 5, "color": "#EDC948", "label": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "count": 38}, {"cid": 6, "color": "#B07AA1", "label": "Feature Specification Template", "count": 13}, {"cid": 7, "color": "#FF9DA7", "label": "Graphify Rules", "count": 2}, {"cid": 8, "color": "#9C755F", "label": "Implementation Planning", "count": 11}, {"cid": 9, "color": "#BAB0AC", "label": "Feature Specification", "count": 11}, {"cid": 10, "color": "#4E79A7", "label": "Task Generation", "count": 11}, {"cid": 11, "color": "#F28E2B", "label": "Project Constitution", "count": 11}, {"cid": 12, "color": "#E15759", "label": "Constitution Template", "count": 11}, {"cid": 13, "color": "#76B7B2", "label": "Graphify Exports", "count": 9}, {"cid": 14, "color": "#59A14F", "label": "Ponytail Configuration", "count": 9}, {"cid": 15, "color": "#EDC948", "label": "Implementation Planning Template", "count": 9}, {"cid": 16, "color": "#B07AA1", "label": "Ponytail Help", "count": 8}, {"cid": 17, "color": "#FF9DA7", "label": "Checklist Generation", "count": 8}, {"cid": 18, "color": "#9C755F", "label": "Clarification Workflow", "count": 7}, {"cid": 19, "color": "#BAB0AC", "label": "Implementation Workflow", "count": 7}, {"cid": 20, "color": "#4E79A7", "label": "Graph Query", "count": 6}, {"cid": 21, "color": "#F28E2B", "label": "Constitution Workflow", "count": 6}, {"cid": 22, "color": "#E15759", "label": "Feature Branch Creation", "count": 6}, {"cid": 23, "color": "#76B7B2", "label": "Ponytail Audit", "count": 5}, {"cid": 24, "color": "#59A14F", "label": "Ponytail Metrics", "count": 5}, {"cid": 25, "color": "#EDC948", "label": "Ponytail Review", "count": 5}, {"cid": 26, "color": "#B07AA1", "label": "Task Issue Conversion", "count": 5}, {"cid": 27, "color": "#FF9DA7", "label": "Checklist Template", "count": 5}, {"cid": 28, "color": "#9C755F", "label": "Graphify Watch Mode", "count": 4}, {"cid": 29, "color": "#BAB0AC", "label": "Graphify Hooks", "count": 4}, {"cid": 30, "color": "#4E79A7", "label": "Graphify Updates", "count": 4}, {"cid": 31, "color": "#F28E2B", "label": "Ponytail Debt", "count": 4}, {"cid": 32, "color": "#E15759", "label": "Repository Merge", "count": 3}, {"cid": 33, "color": "#76B7B2", "label": "Media Transcription", "count": 3}, {"cid": 34, "color": "#59A14F", "label": "Extraction Specification", "count": 2}, {"cid": 35, "color": "#EDC948", "label": "Prerequisite Checks", "count": 1}, {"cid": 36, "color": "#B07AA1", "label": "Template Resolution", "count": 1}, {"cid": 37, "color": "#FF9DA7", "label": "Plan Setup", "count": 1}, {"cid": 38, "color": "#9C755F", "label": "Task Setup", "count": 1}, {"cid": 39, "color": "#BAB0AC", "label": "Graphify Workflows", "count": 2}, {"cid": 40, "color": "#4E79A7", "label": "main", "count": 14}, {"cid": 41, "color": "#F28E2B", "label": "1. Technical Decisions & Tradeoffs", "count": 9}, {"cid": 42, "color": "#E15759", "label": "1. Input Schemas", "count": 8}, {"cid": 43, "color": "#76B7B2", "label": "2. Basic CLI Usage Examples", "count": 8}, {"cid": 44, "color": "#59A14F", "label": "2. Standard Streams & Exit Codes", "count": 7}, {"cid": 45, "color": "#EDC948", "label": "ClassificationResult", "count": 34}, {"cid": 46, "color": "#B07AA1", "label": "InherenceClassifier", "count": 29}, {"cid": 47, "color": "#FF9DA7", "label": "detect_language", "count": 22}, {"cid": 48, "color": "#9C755F", "label": "test_models.py", "count": 15}, {"cid": 49, "color": "#BAB0AC", "label": "content_northvolt_de.md", "count": 2}, {"cid": 50, "color": "#4E79A7", "label": "content_presal_pt.md", "count": 2}, {"cid": 51, "color": "#F28E2B", "label": "content_tangential_es.md", "count": 2}, {"cid": 52, "color": "#E15759", "label": "adapters/__init__.py", "count": 2}, {"cid": 53, "color": "#76B7B2", "label": "src/__init__.py", "count": 2}, {"cid": 54, "color": "#59A14F", "label": "de/contextual.md", "count": 2}, {"cid": 55, "color": "#EDC948", "label": "de/direct.md", "count": 2}, {"cid": 56, "color": "#B07AA1", "label": "de/not_related.md", "count": 2}, {"cid": 57, "color": "#FF9DA7", "label": "de/tangential.md", "count": 2}, {"cid": 58, "color": "#9C755F", "label": "en/contextual.md", "count": 2}, {"cid": 59, "color": "#BAB0AC", "label": "en/direct.md", "count": 2}, {"cid": 60, "color": "#4E79A7", "label": "en/not_related.md", "count": 2}, {"cid": 61, "color": "#F28E2B", "label": "en/tangential.md", "count": 2}, {"cid": 62, "color": "#E15759", "label": "es/contextual.md", "count": 2}, {"cid": 63, "color": "#76B7B2", "label": "es/direct.md", "count": 2}, {"cid": 64, "color": "#59A14F", "label": "es/not_related.md", "count": 2}, {"cid": 65, "color": "#EDC948", "label": "es/tangential.md", "count": 2}, {"cid": 66, "color": "#B07AA1", "label": "fr/contextual.md", "count": 2}, {"cid": 67, "color": "#FF9DA7", "label": "fr/direct.md", "count": 2}, {"cid": 68, "color": "#9C755F", "label": "fr/not_related.md", "count": 2}, {"cid": 69, "color": "#BAB0AC", "label": "fr/tangential.md", "count": 2}, {"cid": 70, "color": "#4E79A7", "label": "it/contextual.md", "count": 2}, {"cid": 71, "color": "#F28E2B", "label": "it/direct.md", "count": 2}, {"cid": 72, "color": "#E15759", "label": "it/not_related.md", "count": 2}, {"cid": 73, "color": "#76B7B2", "label": "it/tangential.md", "count": 2}, {"cid": 74, "color": "#59A14F", "label": "pt/contextual.md", "count": 2}, {"cid": 75, "color": "#EDC948", "label": "pt/direct.md", "count": 2}, {"cid": 76, "color": "#B07AA1", "label": "pt/not_related.md", "count": 2}, {"cid": 77, "color": "#FF9DA7", "label": "pt/tangential.md", "count": 2}, {"cid": 78, "color": "#9C755F", "label": "tests/__init__.py", "count": 2}, {"cid": 79, "color": "#BAB0AC", "label": "text-nlp-classifier", "count": 1}, {"cid": 80, "color": "#4E79A7", "label": "get_hl_gl_ceid", "count": 8}, {"cid": 81, "color": "#F28E2B", "label": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", "count": 25}, {"cid": 82, "color": "#E15759", "label": "extract_google_news.py", "count": 15}, {"cid": 83, "color": "#76B7B2", "label": "ExtractionResult", "count": 7}, {"cid": 84, "color": "#59A14F", "label": "test_extract_google_news.py", "count": 12}, {"cid": 85, "color": "#EDC948", "label": "Implementation Tasks: Google News Headlines Extractor", "count": 14}, {"cid": 86, "color": "#B07AA1", "label": "Feature Specification: Google News Headlines Extractor", "count": 11}, {"cid": 87, "color": "#FF9DA7", "label": "2. Cen\u00e1rios Pr\u00e1ticos de Uso", "count": 10}, {"cid": 88, "color": "#9C755F", "label": "Implementation Plan: Google News Headlines Extractor", "count": 7}, {"cid": 89, "color": "#BAB0AC", "label": "scripts/__init__.py", "count": 2}, {"cid": 90, "color": "#4E79A7", "label": "SearchQuery", "count": 10}, {"cid": 91, "color": "#F28E2B", "label": "1. Technical Decisions & Tradeoffs", "count": 8}, {"cid": 92, "color": "#E15759", "label": "General Readiness Checklist: Google News Headlines Extractor", "count": 7}, {"cid": 93, "color": "#76B7B2", "label": "1. Entidades de Dom\u00ednio & DTOs", "count": 7}, {"cid": 94, "color": "#59A14F", "label": "Specification Quality Checklist: Google News Headlines Extractor", "count": 6}, {"cid": 95, "color": "#EDC948", "label": "CLI Contract: Google News Headlines Extractor", "count": 6}, {"cid": 96, "color": "#B07AA1", "label": "readiness.md", "count": 5}, {"cid": 97, "color": "#FF9DA7", "label": "\ud83e\udde0 TextNLPClassifierApp", "count": 27}, {"cid": 98, "color": "#9C755F", "label": "build_parser", "count": 3}, {"cid": 99, "color": "#BAB0AC", "label": "sample_rss_xml", "count": 3}, {"cid": 100, "color": "#4E79A7", "label": "classifier.py", "count": 15}, {"cid": 101, "color": "#F28E2B", "label": "ECPSnapshot", "count": 15}, {"cid": 102, "color": "#E15759", "label": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", "count": 14}, {"cid": 103, "color": "#76B7B2", "label": "main", "count": 10}]; // HTML-escape helper — prevents XSS when injecting graph data into innerHTML function esc(s) { diff --git a/graphify-out/graph.json b/graphify-out/graph.json index 5fb4824..943e8ab 100644 --- a/graphify-out/graph.json +++ b/graphify-out/graph.json @@ -3,6 +3,58 @@ "multigraph": false, "graph": {}, "nodes": [ + { + "id": "src_models_classificationerror", + "label": "ClassificationError", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 100, + "community_name": "classifier.py", + "file_type": "code", + "norm_label": "classificationerror", + "source_file": "src/models.py", + "source_location": "L153" + }, + { + "id": "src_models_errorcode", + "label": "ErrorCode", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 100, + "community_name": "classifier.py", + "file_type": "code", + "norm_label": "errorcode", + "source_file": "src/models.py", + "source_location": "L18" + }, + { + "id": "src_models_matchedgraphentity", + "label": "MatchedGraphEntity", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 100, + "community_name": "classifier.py", + "file_type": "code", + "norm_label": "matchedgraphentity", + "source_file": "src/models.py", + "source_location": "L114" + }, + { + "id": "src_models_ecpsnapshot", + "label": "ECPSnapshot", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 101, + "community_name": "ECPSnapshot", + "file_type": "code", + "norm_label": "ecpsnapshot", + "source_file": "src/models.py", + "source_location": "L58" + }, { "id": "src_adapters_base_basenlpadapter", "label": "BaseNLPAdapter", @@ -10,7 +62,7 @@ "_callable_class": true, "_origin": "ast", "community": 45, - "community_name": "ECPSnapshot", + "community_name": "ClassificationResult", "file_type": "code", "norm_label": "basenlpadapter", "source_file": "src/adapters/base.py", @@ -23,7 +75,7 @@ "_callable_class": true, "_origin": "ast", "community": 45, - "community_name": "ECPSnapshot", + "community_name": "ClassificationResult", "file_type": "code", "norm_label": "localembeddingsadapter", "source_file": "src/adapters/embeddings.py", @@ -36,25 +88,12 @@ "_callable_class": true, "_origin": "ast", "community": 45, - "community_name": "ECPSnapshot", + "community_name": "ClassificationResult", "file_type": "code", "norm_label": "llmfallbackadapter", "source_file": "src/adapters/llm.py", "source_location": "L15" }, - { - "id": "src_classifier_inherenceclassifier", - "label": "InherenceClassifier", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "inherenceclassifier", - "source_file": "src/classifier.py", - "source_location": "L44" - }, { "id": "src_models_classificationresult", "label": "ClassificationResult", @@ -62,276 +101,180 @@ "_callable_class": true, "_origin": "ast", "community": 45, - "community_name": "ECPSnapshot", + "community_name": "ClassificationResult", "file_type": "code", "norm_label": "classificationresult", "source_file": "src/models.py", "source_location": "L122" }, + { + "id": "src_classifier_inherenceclassifier", + "label": "InherenceClassifier", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 46, + "community_name": "InherenceClassifier", + "file_type": "code", + "norm_label": "inherenceclassifier", + "source_file": "src/classifier.py", + "source_location": "L44" + }, { "id": "src_models_decisioncategory", "label": "DecisionCategory", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 46, + "community_name": "InherenceClassifier", "file_type": "code", "norm_label": "decisioncategory", "source_file": "src/models.py", "source_location": "L11" }, - { - "id": "src_models_ecpsnapshot", - "label": "ECPSnapshot", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "ecpsnapshot", - "source_file": "src/models.py", - "source_location": "L58" - }, - { - "id": "src_models_errorcode", - "label": "ErrorCode", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "errorcode", - "source_file": "src/models.py", - "source_location": "L18" - }, - { - "id": "src_models_matchedgraphentity", - "label": "MatchedGraphEntity", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "matchedgraphentity", - "source_file": "src/models.py", - "source_location": "L114" - }, { "id": "src_models_relatedentity", "label": "RelatedEntity", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 46, + "community_name": "InherenceClassifier", "file_type": "code", "norm_label": "relatedentity", "source_file": "src/models.py", "source_location": "L27" }, { - "id": "src_models_classificationerror", - "label": "ClassificationError", + "id": "scripts_extract_google_news_newsarticle", + "label": "NewsArticle", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 46, - "community_name": "test_models.py", + "community": 82, + "community_name": "extract_google_news.py", "file_type": "code", - "norm_label": "classificationerror", + "norm_label": "newsarticle", + "source_file": "scripts/extract_google_news.py", + "source_location": "L66" + }, + { + "id": "scripts_extract_google_news_extractionresult", + "label": "ExtractionResult", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 83, + "community_name": "ExtractionResult", + "file_type": "code", + "norm_label": "extractionresult", + "source_file": "scripts/extract_google_news.py", + "source_location": "L86" + }, + { + "id": "scripts_extract_google_news_searchquery", + "label": "SearchQuery", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 90, + "community_name": "SearchQuery", + "file_type": "code", + "norm_label": "searchquery", + "source_file": "scripts/extract_google_news.py", + "source_location": "L32" + }, + { + "id": "classify_emit_error", + "label": "emit_error()", + "_callable": true, + "_origin": "ast", + "community": 100, + "community_name": "classifier.py", + "file_type": "code", + "norm_label": "emit_error()", + "source_file": "classify.py", + "source_location": "L73" + }, + { + "id": "src_models_classificationerror_to_dict", + "label": ".to_dict()", + "_callable": true, + "_origin": "ast", + "community": 100, + "community_name": "classifier.py", + "file_type": "code", + "norm_label": ".to_dict()", "source_file": "src/models.py", - "source_location": "L153" + "source_location": "L158" }, { - "id": "src_adapters_base_basenlpadapter_disambiguate", - "label": ".disambiguate()", + "id": "src_models_classificationerror_to_json_str", + "label": ".to_json_str()", "_callable": true, "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 100, + "community_name": "classifier.py", "file_type": "code", - "norm_label": ".disambiguate()", - "source_file": "src/adapters/base.py", - "source_location": "L24" + "norm_label": ".to_json_str()", + "source_file": "src/models.py", + "source_location": "L165" }, { - "id": "src_adapters_base_basenlpadapter_evaluate_similarity", - "label": ".evaluate_similarity()", + "id": "src_models_classificationresult_to_json_str", + "label": ".to_json_str()", "_callable": true, "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 100, + "community_name": "classifier.py", "file_type": "code", - "norm_label": ".evaluate_similarity()", - "source_file": "src/adapters/base.py", - "source_location": "L19" + "norm_label": ".to_json_str()", + "source_file": "src/models.py", + "source_location": "L148" }, { - "id": "src_adapters_base_basenlpadapter_is_available", - "label": ".is_available()", + "id": "tests_test_models_test_classification_error_serialization", + "label": "test_classification_error_serialization()", "_callable": true, "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 100, + "community_name": "classifier.py", "file_type": "code", - "norm_label": ".is_available()", - "source_file": "src/adapters/base.py", - "source_location": "L14" + "norm_label": "test_classification_error_serialization()", + "source_file": "tests/test_models.py", + "source_location": "L88" }, { - "id": "src_adapters_embeddings_localembeddingsadapter_disambiguate", - "label": ".disambiguate()", + "id": "src_models_classificationresult_to_dict", + "label": ".to_dict()", "_callable": true, "_origin": "ast", - "community": 45, + "community": 101, "community_name": "ECPSnapshot", "file_type": "code", - "norm_label": ".disambiguate()", - "source_file": "src/adapters/embeddings.py", - "source_location": "L35" + "norm_label": ".to_dict()", + "source_file": "src/models.py", + "source_location": "L134" }, { - "id": "src_adapters_embeddings_localembeddingsadapter_evaluate_similarity", - "label": ".evaluate_similarity()", + "id": "src_models_ecpsnapshot_from_dict", + "label": ".from_dict()", "_callable": true, "_origin": "ast", - "community": 45, + "community": 101, "community_name": "ECPSnapshot", "file_type": "code", - "norm_label": ".evaluate_similarity()", - "source_file": "src/adapters/embeddings.py", - "source_location": "L29" - }, - { - "id": "src_adapters_embeddings_localembeddingsadapter_init", - "label": ".__init__()", - "_callable": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": ".__init__()", - "source_file": "src/adapters/embeddings.py", - "source_location": "L17" - }, - { - "id": "src_adapters_embeddings_localembeddingsadapter_is_available", - "label": ".is_available()", - "_callable": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": ".is_available()", - "source_file": "src/adapters/embeddings.py", - "source_location": "L22" - }, - { - "id": "src_adapters_llm_llmfallbackadapter_disambiguate", - "label": ".disambiguate()", - "_callable": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": ".disambiguate()", - "source_file": "src/adapters/llm.py", - "source_location": "L28" - }, - { - "id": "src_adapters_llm_llmfallbackadapter_evaluate_similarity", - "label": ".evaluate_similarity()", - "_callable": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": ".evaluate_similarity()", - "source_file": "src/adapters/llm.py", - "source_location": "L25" - }, - { - "id": "src_adapters_llm_llmfallbackadapter_init", - "label": ".__init__()", - "_callable": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": ".__init__()", - "source_file": "src/adapters/llm.py", - "source_location": "L18" - }, - { - "id": "src_adapters_llm_llmfallbackadapter_is_available", - "label": ".is_available()", - "_callable": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": ".is_available()", - "source_file": "src/adapters/llm.py", - "source_location": "L22" - }, - { - "id": "src_classifier_count_phrase_occurrences", - "label": "count_phrase_occurrences()", - "_callable": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "count_phrase_occurrences()", - "source_file": "src/classifier.py", - "source_location": "L33" - }, - { - "id": "src_classifier_inherenceclassifier_classify", - "label": ".classify()", - "_callable": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": ".classify()", - "source_file": "src/classifier.py", - "source_location": "L61" - }, - { - "id": "src_classifier_inherenceclassifier_init", - "label": ".__init__()", - "_callable": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": ".__init__()", - "source_file": "src/classifier.py", - "source_location": "L47" - }, - { - "id": "src_classifier_match_phrase_in_text", - "label": "match_phrase_in_text()", - "_callable": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "match_phrase_in_text()", - "source_file": "src/classifier.py", - "source_location": "L20" + "norm_label": ".from_dict()", + "source_file": "src/models.py", + "source_location": "L69" }, { "id": "src_models_ecpsnapshot_from_json_str", "label": ".from_json_str()", "_callable": true, "_origin": "ast", - "community": 45, + "community": 101, "community_name": "ECPSnapshot", "file_type": "code", "norm_label": ".from_json_str()", @@ -339,131 +282,23 @@ "source_location": "L105" }, { - "id": "tests_test_adapters_test_classifier_with_adapter_flags", - "label": "test_classifier_with_adapter_flags()", + "id": "src_models_relatedentity_from_dict", + "label": ".from_dict()", "_callable": true, "_origin": "ast", - "community": 45, + "community": 101, "community_name": "ECPSnapshot", "file_type": "code", - "norm_label": "test_classifier_with_adapter_flags()", - "source_file": "tests/test_adapters.py", - "source_location": "L20" - }, - { - "id": "tests_test_adapters_test_embeddings_adapter_interface", - "label": "test_embeddings_adapter_interface()", - "_callable": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "test_embeddings_adapter_interface()", - "source_file": "tests/test_adapters.py", - "source_location": "L9" - }, - { - "id": "tests_test_adapters_test_llm_adapter_interface", - "label": "test_llm_adapter_interface()", - "_callable": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "test_llm_adapter_interface()", - "source_file": "tests/test_adapters.py", - "source_location": "L15" - }, - { - "id": "tests_test_adversarial_test_adversarial_apple_fruit_recipe", - "label": "test_adversarial_apple_fruit_recipe()", - "_callable": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "test_adversarial_apple_fruit_recipe()", - "source_file": "tests/test_adversarial.py", - "source_location": "L40" - }, - { - "id": "tests_test_adversarial_test_adversarial_related_entity_without_scope_context", - "label": "test_adversarial_related_entity_without_scope_context()", - "_callable": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "test_adversarial_related_entity_without_scope_context()", - "source_file": "tests/test_adversarial.py", - "source_location": "L63" - }, - { - "id": "tests_test_adversarial_test_adversarial_sao_paulo_city_vs_fc", - "label": "test_adversarial_sao_paulo_city_vs_fc()", - "_callable": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "test_adversarial_sao_paulo_city_vs_fc()", - "source_file": "tests/test_adversarial.py", - "source_location": "L15" - }, - { - "id": "tests_test_adversarial_test_adversarial_subprocess_cli_corrupted_json", - "label": "test_adversarial_subprocess_cli_corrupted_json()", - "_callable": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "test_adversarial_subprocess_cli_corrupted_json()", - "source_file": "tests/test_adversarial.py", - "source_location": "L193" - }, - { - "id": "tests_test_adversarial_test_adversarial_subprocess_cli_empty_content", - "label": "test_adversarial_subprocess_cli_empty_content()", - "_callable": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "test_adversarial_subprocess_cli_empty_content()", - "source_file": "tests/test_adversarial.py", - "source_location": "L133" - }, - { - "id": "tests_test_adversarial_test_adversarial_subprocess_cli_missing_required_field", - "label": "test_adversarial_subprocess_cli_missing_required_field()", - "_callable": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "test_adversarial_subprocess_cli_missing_required_field()", - "source_file": "tests/test_adversarial.py", - "source_location": "L164" - }, - { - "id": "tests_test_adversarial_test_adversarial_subprocess_cli_success_stdout", - "label": "test_adversarial_subprocess_cli_success_stdout()", - "_callable": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "test_adversarial_subprocess_cli_success_stdout()", - "source_file": "tests/test_adversarial.py", - "source_location": "L98" + "norm_label": ".from_dict()", + "source_file": "src/models.py", + "source_location": "L37" }, { "id": "tests_test_benchmark_24_classifier", "label": "classifier()", "_callable": true, "_origin": "ast", - "community": 45, + "community": 101, "community_name": "ECPSnapshot", "file_type": "code", "norm_label": "classifier()", @@ -475,236 +310,20 @@ "label": "test_benchmark_case()", "_callable": true, "_origin": "ast", - "community": 45, + "community": 101, "community_name": "ECPSnapshot", "file_type": "code", "norm_label": "test_benchmark_case()", "source_file": "tests/test_benchmark_24.py", "source_location": "L30" }, - { - "id": "tests_test_classifier_petrobras_ecp", - "label": "petrobras_ecp()", - "_callable": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "petrobras_ecp()", - "source_file": "tests/test_classifier.py", - "source_location": "L9" - }, - { - "id": "tests_test_classifier_test_contextual_inherent", - "label": "test_contextual_inherent()", - "_callable": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "test_contextual_inherent()", - "source_file": "tests/test_classifier.py", - "source_location": "L48" - }, - { - "id": "tests_test_classifier_test_direct_inherent", - "label": "test_direct_inherent()", - "_callable": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "test_direct_inherent()", - "source_file": "tests/test_classifier.py", - "source_location": "L32" - }, - { - "id": "tests_test_classifier_test_negative_anchor_suppression", - "label": "test_negative_anchor_suppression()", - "_callable": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "test_negative_anchor_suppression()", - "source_file": "tests/test_classifier.py", - "source_location": "L90" - }, - { - "id": "tests_test_classifier_test_not_related", - "label": "test_not_related()", - "_callable": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "test_not_related()", - "source_file": "tests/test_classifier.py", - "source_location": "L77" - }, - { - "id": "tests_test_classifier_test_tangential_inherent", - "label": "test_tangential_inherent()", - "_callable": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "test_tangential_inherent()", - "source_file": "tests/test_classifier.py", - "source_location": "L63" - }, - { - "id": "tests_test_models_test_classification_result_serialization", - "label": "test_classification_result_serialization()", - "_callable": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "test_classification_result_serialization()", - "source_file": "tests/test_models.py", - "source_location": "L70" - }, - { - "id": "classify_emit_error", - "label": "emit_error()", - "_callable": true, - "_origin": "ast", - "community": 46, - "community_name": "test_models.py", - "file_type": "code", - "norm_label": "emit_error()", - "source_file": "classify.py", - "source_location": "L73" - }, - { - "id": "src_models_classificationerror_to_dict", - "label": ".to_dict()", - "_callable": true, - "_origin": "ast", - "community": 46, - "community_name": "test_models.py", - "file_type": "code", - "norm_label": ".to_dict()", - "source_file": "src/models.py", - "source_location": "L158" - }, - { - "id": "src_models_classificationerror_to_json_str", - "label": ".to_json_str()", - "_callable": true, - "_origin": "ast", - "community": 46, - "community_name": "test_models.py", - "file_type": "code", - "norm_label": ".to_json_str()", - "source_file": "src/models.py", - "source_location": "L165" - }, - { - "id": "src_models_classificationresult_to_dict", - "label": ".to_dict()", - "_callable": true, - "_origin": "ast", - "community": 46, - "community_name": "test_models.py", - "file_type": "code", - "norm_label": ".to_dict()", - "source_file": "src/models.py", - "source_location": "L134" - }, - { - "id": "src_models_classificationresult_to_json_str", - "label": ".to_json_str()", - "_callable": true, - "_origin": "ast", - "community": 46, - "community_name": "test_models.py", - "file_type": "code", - "norm_label": ".to_json_str()", - "source_file": "src/models.py", - "source_location": "L148" - }, - { - "id": "src_models_ecpsnapshot_from_dict", - "label": ".from_dict()", - "_callable": true, - "_origin": "ast", - "community": 46, - "community_name": "test_models.py", - "file_type": "code", - "norm_label": ".from_dict()", - "source_file": "src/models.py", - "source_location": "L69" - }, - { - "id": "src_models_relatedentity_from_dict", - "label": ".from_dict()", - "_callable": true, - "_origin": "ast", - "community": 46, - "community_name": "test_models.py", - "file_type": "code", - "norm_label": ".from_dict()", - "source_file": "src/models.py", - "source_location": "L37" - }, - { - "id": "src_parser_extract_evidence_snippets", - "label": "extract_evidence_snippets()", - "_callable": true, - "_origin": "ast", - "community": 46, - "community_name": "test_models.py", - "file_type": "code", - "norm_label": "extract_evidence_snippets()", - "source_file": "src/parser.py", - "source_location": "L51" - }, - { - "id": "src_parser_extract_sentences", - "label": "extract_sentences()", - "_callable": true, - "_origin": "ast", - "community": 46, - "community_name": "test_models.py", - "file_type": "code", - "norm_label": "extract_sentences()", - "source_file": "src/parser.py", - "source_location": "L43" - }, - { - "id": "src_parser_strip_markdown", - "label": "strip_markdown()", - "_callable": true, - "_origin": "ast", - "community": 46, - "community_name": "test_models.py", - "file_type": "code", - "norm_label": "strip_markdown()", - "source_file": "src/parser.py", - "source_location": "L9" - }, - { - "id": "tests_test_models_test_classification_error_serialization", - "label": "test_classification_error_serialization()", - "_callable": true, - "_origin": "ast", - "community": 46, - "community_name": "test_models.py", - "file_type": "code", - "norm_label": "test_classification_error_serialization()", - "source_file": "tests/test_models.py", - "source_location": "L88" - }, { "id": "tests_test_models_test_ecp_snapshot_defaults", "label": "test_ecp_snapshot_defaults()", "_callable": true, "_origin": "ast", - "community": 46, - "community_name": "test_models.py", + "community": 101, + "community_name": "ECPSnapshot", "file_type": "code", "norm_label": "test_ecp_snapshot_defaults()", "source_file": "tests/test_models.py", @@ -715,8 +334,8 @@ "label": "test_ecp_snapshot_missing_required()", "_callable": true, "_origin": "ast", - "community": 46, - "community_name": "test_models.py", + "community": 101, + "community_name": "ECPSnapshot", "file_type": "code", "norm_label": "test_ecp_snapshot_missing_required()", "source_file": "tests/test_models.py", @@ -727,36 +346,528 @@ "label": "test_ecp_snapshot_valid()", "_callable": true, "_origin": "ast", - "community": 46, - "community_name": "test_models.py", + "community": 101, + "community_name": "ECPSnapshot", "file_type": "code", "norm_label": "test_ecp_snapshot_valid()", "source_file": "tests/test_models.py", "source_location": "L15" }, { - "id": "tests_test_models_test_extract_evidence_snippets", - "label": "test_extract_evidence_snippets()", + "id": "classify_main", + "label": "main()", "_callable": true, "_origin": "ast", - "community": 46, - "community_name": "test_models.py", + "community": 103, + "community_name": "main", "file_type": "code", - "norm_label": "test_extract_evidence_snippets()", - "source_file": "tests/test_models.py", - "source_location": "L110" + "norm_label": "main()", + "source_file": "classify.py", + "source_location": "L98" }, { - "id": "tests_test_models_test_parser_strip_markdown", - "label": "test_parser_strip_markdown()", + "id": "classify_parse_args", + "label": "parse_args()", + "_callable": true, + "_origin": "ast", + "community": 103, + "community_name": "main", + "file_type": "code", + "norm_label": "parse_args()", + "source_file": "classify.py", + "source_location": "L28" + }, + { + "id": "tests_test_cli_test_cli_empty_content_file", + "label": "test_cli_empty_content_file()", + "_callable": true, + "_origin": "ast", + "community": 103, + "community_name": "main", + "file_type": "code", + "norm_label": "test_cli_empty_content_file()", + "source_file": "tests/test_cli.py", + "source_location": "L68" + }, + { + "id": "tests_test_cli_test_cli_missing_ecp_file", + "label": "test_cli_missing_ecp_file()", + "_callable": true, + "_origin": "ast", + "community": 103, + "community_name": "main", + "file_type": "code", + "norm_label": "test_cli_missing_ecp_file()", + "source_file": "tests/test_cli.py", + "source_location": "L56" + }, + { + "id": "tests_test_cli_test_cli_missing_required_ecp_field", + "label": "test_cli_missing_required_ecp_field()", + "_callable": true, + "_origin": "ast", + "community": 103, + "community_name": "main", + "file_type": "code", + "norm_label": "test_cli_missing_required_ecp_field()", + "source_file": "tests/test_cli.py", + "source_location": "L89" + }, + { + "id": "tests_test_cli_test_cli_output_file", + "label": "test_cli_output_file()", + "_callable": true, + "_origin": "ast", + "community": 103, + "community_name": "main", + "file_type": "code", + "norm_label": "test_cli_output_file()", + "source_file": "tests/test_cli.py", + "source_location": "L32" + }, + { + "id": "tests_test_cli_test_cli_success_stdout", + "label": "test_cli_success_stdout()", + "_callable": true, + "_origin": "ast", + "community": 103, + "community_name": "main", + "file_type": "code", + "norm_label": "test_cli_success_stdout()", + "source_file": "tests/test_cli.py", + "source_location": "L9" + }, + { + "id": "scripts_extract_google_news_main", + "label": "main()", + "_callable": true, + "_origin": "ast", + "community": 40, + "community_name": "main", + "file_type": "code", + "norm_label": "main()", + "source_file": "scripts/extract_google_news.py", + "source_location": "L405" + }, + { + "id": "tests_test_extract_google_news_test_cli_empty_query_error", + "label": "test_cli_empty_query_error()", + "_callable": true, + "_origin": "ast", + "community": 40, + "community_name": "main", + "file_type": "code", + "norm_label": "test_cli_empty_query_error()", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L263" + }, + { + "id": "tests_test_extract_google_news_test_cli_execution_file_output", + "label": "test_cli_execution_file_output()", + "_callable": true, + "_origin": "ast", + "community": 40, + "community_name": "main", + "file_type": "code", + "norm_label": "test_cli_execution_file_output()", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L242" + }, + { + "id": "tests_test_extract_google_news_test_cli_execution_stdout", + "label": "test_cli_execution_stdout()", + "_callable": true, + "_origin": "ast", + "community": 40, + "community_name": "main", + "file_type": "code", + "norm_label": "test_cli_execution_stdout()", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L217" + }, + { + "id": "tests_test_extract_google_news_test_cli_network_error_handling", + "label": "test_cli_network_error_handling()", + "_callable": true, + "_origin": "ast", + "community": 40, + "community_name": "main", + "file_type": "code", + "norm_label": "test_cli_network_error_handling()", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L272" + }, + { + "id": "tests_test_extract_google_news_test_e2e_cli_live_file_output", + "label": "test_e2e_cli_live_file_output()", + "_callable": true, + "_origin": "ast", + "community": 40, + "community_name": "main", + "file_type": "code", + "norm_label": "test_e2e_cli_live_file_output()", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L328" + }, + { + "id": "src_adapters_base_basenlpadapter_disambiguate", + "label": ".disambiguate()", + "_callable": true, + "_origin": "ast", + "community": 45, + "community_name": "ClassificationResult", + "file_type": "code", + "norm_label": ".disambiguate()", + "source_file": "src/adapters/base.py", + "source_location": "L24" + }, + { + "id": "src_adapters_base_basenlpadapter_evaluate_similarity", + "label": ".evaluate_similarity()", + "_callable": true, + "_origin": "ast", + "community": 45, + "community_name": "ClassificationResult", + "file_type": "code", + "norm_label": ".evaluate_similarity()", + "source_file": "src/adapters/base.py", + "source_location": "L19" + }, + { + "id": "src_adapters_base_basenlpadapter_is_available", + "label": ".is_available()", + "_callable": true, + "_origin": "ast", + "community": 45, + "community_name": "ClassificationResult", + "file_type": "code", + "norm_label": ".is_available()", + "source_file": "src/adapters/base.py", + "source_location": "L14" + }, + { + "id": "src_adapters_embeddings_localembeddingsadapter_disambiguate", + "label": ".disambiguate()", + "_callable": true, + "_origin": "ast", + "community": 45, + "community_name": "ClassificationResult", + "file_type": "code", + "norm_label": ".disambiguate()", + "source_file": "src/adapters/embeddings.py", + "source_location": "L35" + }, + { + "id": "src_adapters_embeddings_localembeddingsadapter_evaluate_similarity", + "label": ".evaluate_similarity()", + "_callable": true, + "_origin": "ast", + "community": 45, + "community_name": "ClassificationResult", + "file_type": "code", + "norm_label": ".evaluate_similarity()", + "source_file": "src/adapters/embeddings.py", + "source_location": "L29" + }, + { + "id": "src_adapters_embeddings_localembeddingsadapter_init", + "label": ".__init__()", + "_callable": true, + "_origin": "ast", + "community": 45, + "community_name": "ClassificationResult", + "file_type": "code", + "norm_label": ".__init__()", + "source_file": "src/adapters/embeddings.py", + "source_location": "L17" + }, + { + "id": "src_adapters_embeddings_localembeddingsadapter_is_available", + "label": ".is_available()", + "_callable": true, + "_origin": "ast", + "community": 45, + "community_name": "ClassificationResult", + "file_type": "code", + "norm_label": ".is_available()", + "source_file": "src/adapters/embeddings.py", + "source_location": "L22" + }, + { + "id": "src_adapters_llm_llmfallbackadapter_disambiguate", + "label": ".disambiguate()", + "_callable": true, + "_origin": "ast", + "community": 45, + "community_name": "ClassificationResult", + "file_type": "code", + "norm_label": ".disambiguate()", + "source_file": "src/adapters/llm.py", + "source_location": "L28" + }, + { + "id": "src_adapters_llm_llmfallbackadapter_evaluate_similarity", + "label": ".evaluate_similarity()", + "_callable": true, + "_origin": "ast", + "community": 45, + "community_name": "ClassificationResult", + "file_type": "code", + "norm_label": ".evaluate_similarity()", + "source_file": "src/adapters/llm.py", + "source_location": "L25" + }, + { + "id": "src_adapters_llm_llmfallbackadapter_init", + "label": ".__init__()", + "_callable": true, + "_origin": "ast", + "community": 45, + "community_name": "ClassificationResult", + "file_type": "code", + "norm_label": ".__init__()", + "source_file": "src/adapters/llm.py", + "source_location": "L18" + }, + { + "id": "src_adapters_llm_llmfallbackadapter_is_available", + "label": ".is_available()", + "_callable": true, + "_origin": "ast", + "community": 45, + "community_name": "ClassificationResult", + "file_type": "code", + "norm_label": ".is_available()", + "source_file": "src/adapters/llm.py", + "source_location": "L22" + }, + { + "id": "src_classifier_inherenceclassifier_init", + "label": ".__init__()", + "_callable": true, + "_origin": "ast", + "community": 45, + "community_name": "ClassificationResult", + "file_type": "code", + "norm_label": ".__init__()", + "source_file": "src/classifier.py", + "source_location": "L47" + }, + { + "id": "tests_test_adapters_test_classifier_with_adapter_flags", + "label": "test_classifier_with_adapter_flags()", + "_callable": true, + "_origin": "ast", + "community": 45, + "community_name": "ClassificationResult", + "file_type": "code", + "norm_label": "test_classifier_with_adapter_flags()", + "source_file": "tests/test_adapters.py", + "source_location": "L20" + }, + { + "id": "tests_test_adapters_test_embeddings_adapter_interface", + "label": "test_embeddings_adapter_interface()", + "_callable": true, + "_origin": "ast", + "community": 45, + "community_name": "ClassificationResult", + "file_type": "code", + "norm_label": "test_embeddings_adapter_interface()", + "source_file": "tests/test_adapters.py", + "source_location": "L9" + }, + { + "id": "tests_test_adapters_test_llm_adapter_interface", + "label": "test_llm_adapter_interface()", + "_callable": true, + "_origin": "ast", + "community": 45, + "community_name": "ClassificationResult", + "file_type": "code", + "norm_label": "test_llm_adapter_interface()", + "source_file": "tests/test_adapters.py", + "source_location": "L15" + }, + { + "id": "tests_test_adversarial_test_adversarial_apple_fruit_recipe", + "label": "test_adversarial_apple_fruit_recipe()", "_callable": true, "_origin": "ast", "community": 46, - "community_name": "test_models.py", + "community_name": "InherenceClassifier", "file_type": "code", - "norm_label": "test_parser_strip_markdown()", - "source_file": "tests/test_models.py", - "source_location": "L100" + "norm_label": "test_adversarial_apple_fruit_recipe()", + "source_file": "tests/test_adversarial.py", + "source_location": "L40" + }, + { + "id": "tests_test_adversarial_test_adversarial_related_entity_without_scope_context", + "label": "test_adversarial_related_entity_without_scope_context()", + "_callable": true, + "_origin": "ast", + "community": 46, + "community_name": "InherenceClassifier", + "file_type": "code", + "norm_label": "test_adversarial_related_entity_without_scope_context()", + "source_file": "tests/test_adversarial.py", + "source_location": "L63" + }, + { + "id": "tests_test_adversarial_test_adversarial_sao_paulo_city_vs_fc", + "label": "test_adversarial_sao_paulo_city_vs_fc()", + "_callable": true, + "_origin": "ast", + "community": 46, + "community_name": "InherenceClassifier", + "file_type": "code", + "norm_label": "test_adversarial_sao_paulo_city_vs_fc()", + "source_file": "tests/test_adversarial.py", + "source_location": "L15" + }, + { + "id": "tests_test_adversarial_test_adversarial_subprocess_cli_corrupted_json", + "label": "test_adversarial_subprocess_cli_corrupted_json()", + "_callable": true, + "_origin": "ast", + "community": 46, + "community_name": "InherenceClassifier", + "file_type": "code", + "norm_label": "test_adversarial_subprocess_cli_corrupted_json()", + "source_file": "tests/test_adversarial.py", + "source_location": "L193" + }, + { + "id": "tests_test_adversarial_test_adversarial_subprocess_cli_empty_content", + "label": "test_adversarial_subprocess_cli_empty_content()", + "_callable": true, + "_origin": "ast", + "community": 46, + "community_name": "InherenceClassifier", + "file_type": "code", + "norm_label": "test_adversarial_subprocess_cli_empty_content()", + "source_file": "tests/test_adversarial.py", + "source_location": "L133" + }, + { + "id": "tests_test_adversarial_test_adversarial_subprocess_cli_missing_required_field", + "label": "test_adversarial_subprocess_cli_missing_required_field()", + "_callable": true, + "_origin": "ast", + "community": 46, + "community_name": "InherenceClassifier", + "file_type": "code", + "norm_label": "test_adversarial_subprocess_cli_missing_required_field()", + "source_file": "tests/test_adversarial.py", + "source_location": "L164" + }, + { + "id": "tests_test_adversarial_test_adversarial_subprocess_cli_success_stdout", + "label": "test_adversarial_subprocess_cli_success_stdout()", + "_callable": true, + "_origin": "ast", + "community": 46, + "community_name": "InherenceClassifier", + "file_type": "code", + "norm_label": "test_adversarial_subprocess_cli_success_stdout()", + "source_file": "tests/test_adversarial.py", + "source_location": "L98" + }, + { + "id": "tests_test_classifier_petrobras_ecp", + "label": "petrobras_ecp()", + "_callable": true, + "_origin": "ast", + "community": 46, + "community_name": "InherenceClassifier", + "file_type": "code", + "norm_label": "petrobras_ecp()", + "source_file": "tests/test_classifier.py", + "source_location": "L9" + }, + { + "id": "tests_test_classifier_test_contextual_inherent", + "label": "test_contextual_inherent()", + "_callable": true, + "_origin": "ast", + "community": 46, + "community_name": "InherenceClassifier", + "file_type": "code", + "norm_label": "test_contextual_inherent()", + "source_file": "tests/test_classifier.py", + "source_location": "L48" + }, + { + "id": "tests_test_classifier_test_direct_inherent", + "label": "test_direct_inherent()", + "_callable": true, + "_origin": "ast", + "community": 46, + "community_name": "InherenceClassifier", + "file_type": "code", + "norm_label": "test_direct_inherent()", + "source_file": "tests/test_classifier.py", + "source_location": "L32" + }, + { + "id": "tests_test_classifier_test_negative_anchor_suppression", + "label": "test_negative_anchor_suppression()", + "_callable": true, + "_origin": "ast", + "community": 46, + "community_name": "InherenceClassifier", + "file_type": "code", + "norm_label": "test_negative_anchor_suppression()", + "source_file": "tests/test_classifier.py", + "source_location": "L90" + }, + { + "id": "tests_test_classifier_test_not_related", + "label": "test_not_related()", + "_callable": true, + "_origin": "ast", + "community": 46, + "community_name": "InherenceClassifier", + "file_type": "code", + "norm_label": "test_not_related()", + "source_file": "tests/test_classifier.py", + "source_location": "L77" + }, + { + "id": "tests_test_classifier_test_tangential_inherent", + "label": "test_tangential_inherent()", + "_callable": true, + "_origin": "ast", + "community": 46, + "community_name": "InherenceClassifier", + "file_type": "code", + "norm_label": "test_tangential_inherent()", + "source_file": "tests/test_classifier.py", + "source_location": "L63" + }, + { + "id": "src_classifier_count_phrase_occurrences", + "label": "count_phrase_occurrences()", + "_callable": true, + "_origin": "ast", + "community": 47, + "community_name": "detect_language", + "file_type": "code", + "norm_label": "count_phrase_occurrences()", + "source_file": "src/classifier.py", + "source_location": "L33" + }, + { + "id": "src_classifier_match_phrase_in_text", + "label": "match_phrase_in_text()", + "_callable": true, + "_origin": "ast", + "community": 47, + "community_name": "detect_language", + "file_type": "code", + "norm_label": "match_phrase_in_text()", + "source_file": "src/classifier.py", + "source_location": "L20" }, { "id": "src_language_detect_language", @@ -891,89 +1002,401 @@ "source_location": "L6" }, { - "id": "classify_main", - "label": "main()", + "id": "src_classifier_inherenceclassifier_classify", + "label": ".classify()", "_callable": true, "_origin": "ast", "community": 48, - "community_name": "main", + "community_name": "test_models.py", "file_type": "code", - "norm_label": "main()", - "source_file": "classify.py", - "source_location": "L98" + "norm_label": ".classify()", + "source_file": "src/classifier.py", + "source_location": "L61" }, { - "id": "classify_parse_args", - "label": "parse_args()", + "id": "src_parser_extract_evidence_snippets", + "label": "extract_evidence_snippets()", "_callable": true, "_origin": "ast", "community": 48, - "community_name": "main", + "community_name": "test_models.py", "file_type": "code", - "norm_label": "parse_args()", - "source_file": "classify.py", - "source_location": "L28" + "norm_label": "extract_evidence_snippets()", + "source_file": "src/parser.py", + "source_location": "L51" }, { - "id": "tests_test_cli_test_cli_empty_content_file", - "label": "test_cli_empty_content_file()", + "id": "src_parser_extract_sentences", + "label": "extract_sentences()", "_callable": true, "_origin": "ast", "community": 48, - "community_name": "main", + "community_name": "test_models.py", "file_type": "code", - "norm_label": "test_cli_empty_content_file()", - "source_file": "tests/test_cli.py", - "source_location": "L68" + "norm_label": "extract_sentences()", + "source_file": "src/parser.py", + "source_location": "L43" }, { - "id": "tests_test_cli_test_cli_missing_ecp_file", - "label": "test_cli_missing_ecp_file()", + "id": "src_parser_strip_markdown", + "label": "strip_markdown()", "_callable": true, "_origin": "ast", "community": 48, - "community_name": "main", + "community_name": "test_models.py", "file_type": "code", - "norm_label": "test_cli_missing_ecp_file()", - "source_file": "tests/test_cli.py", - "source_location": "L56" - }, - { - "id": "tests_test_cli_test_cli_missing_required_ecp_field", - "label": "test_cli_missing_required_ecp_field()", - "_callable": true, - "_origin": "ast", - "community": 48, - "community_name": "main", - "file_type": "code", - "norm_label": "test_cli_missing_required_ecp_field()", - "source_file": "tests/test_cli.py", - "source_location": "L89" - }, - { - "id": "tests_test_cli_test_cli_output_file", - "label": "test_cli_output_file()", - "_callable": true, - "_origin": "ast", - "community": 48, - "community_name": "main", - "file_type": "code", - "norm_label": "test_cli_output_file()", - "source_file": "tests/test_cli.py", - "source_location": "L32" - }, - { - "id": "tests_test_cli_test_cli_success_stdout", - "label": "test_cli_success_stdout()", - "_callable": true, - "_origin": "ast", - "community": 48, - "community_name": "main", - "file_type": "code", - "norm_label": "test_cli_success_stdout()", - "source_file": "tests/test_cli.py", + "norm_label": "strip_markdown()", + "source_file": "src/parser.py", "source_location": "L9" }, + { + "id": "tests_test_models_test_classification_result_serialization", + "label": "test_classification_result_serialization()", + "_callable": true, + "_origin": "ast", + "community": 48, + "community_name": "test_models.py", + "file_type": "code", + "norm_label": "test_classification_result_serialization()", + "source_file": "tests/test_models.py", + "source_location": "L70" + }, + { + "id": "tests_test_models_test_extract_evidence_snippets", + "label": "test_extract_evidence_snippets()", + "_callable": true, + "_origin": "ast", + "community": 48, + "community_name": "test_models.py", + "file_type": "code", + "norm_label": "test_extract_evidence_snippets()", + "source_file": "tests/test_models.py", + "source_location": "L110" + }, + { + "id": "tests_test_models_test_parser_strip_markdown", + "label": "test_parser_strip_markdown()", + "_callable": true, + "_origin": "ast", + "community": 48, + "community_name": "test_models.py", + "file_type": "code", + "norm_label": "test_parser_strip_markdown()", + "source_file": "tests/test_models.py", + "source_location": "L100" + }, + { + "id": "scripts_extract_google_news_get_hl_gl_ceid", + "label": "get_hl_gl_ceid()", + "_callable": true, + "_origin": "ast", + "community": 80, + "community_name": "get_hl_gl_ceid", + "file_type": "code", + "norm_label": "get_hl_gl_ceid()", + "source_file": "scripts/extract_google_news.py", + "source_location": "L109" + }, + { + "id": "tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", + "label": "test_get_hl_gl_ceid_default_mappings()", + "_callable": true, + "_origin": "ast", + "community": 80, + "community_name": "get_hl_gl_ceid", + "file_type": "code", + "norm_label": "test_get_hl_gl_ceid_default_mappings()", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L37" + }, + { + "id": "tests_test_extract_google_news_test_get_hl_gl_ceid_dynamic_fallback", + "label": "test_get_hl_gl_ceid_dynamic_fallback()", + "_callable": true, + "_origin": "ast", + "community": 80, + "community_name": "get_hl_gl_ceid", + "file_type": "code", + "norm_label": "test_get_hl_gl_ceid_dynamic_fallback()", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L78" + }, + { + "id": "tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", + "label": "test_get_hl_gl_ceid_with_custom_locale()", + "_callable": true, + "_origin": "ast", + "community": 80, + "community_name": "get_hl_gl_ceid", + "file_type": "code", + "norm_label": "test_get_hl_gl_ceid_with_custom_locale()", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L60" + }, + { + "id": "scripts_extract_google_news_extract_google_news", + "label": "extract_google_news()", + "_callable": true, + "_origin": "ast", + "community": 82, + "community_name": "extract_google_news.py", + "file_type": "code", + "norm_label": "extract_google_news()", + "source_file": "scripts/extract_google_news.py", + "source_location": "L299" + }, + { + "id": "scripts_extract_google_news_fetch_rss_content", + "label": "_fetch_rss_content()", + "_callable": true, + "_origin": "ast", + "community": 82, + "community_name": "extract_google_news.py", + "file_type": "code", + "norm_label": "_fetch_rss_content()", + "source_file": "scripts/extract_google_news.py", + "source_location": "L255" + }, + { + "id": "scripts_extract_google_news_normalize_text_for_comparison", + "label": "_normalize_text_for_comparison()", + "_callable": true, + "_origin": "ast", + "community": 82, + "community_name": "extract_google_news.py", + "file_type": "code", + "norm_label": "_normalize_text_for_comparison()", + "source_file": "scripts/extract_google_news.py", + "source_location": "L153" + }, + { + "id": "scripts_extract_google_news_parse_google_news_rss", + "label": "parse_google_news_rss()", + "_callable": true, + "_origin": "ast", + "community": 82, + "community_name": "extract_google_news.py", + "file_type": "code", + "norm_label": "parse_google_news_rss()", + "source_file": "scripts/extract_google_news.py", + "source_location": "L158" + }, + { + "id": "scripts_extract_google_news_resolve_articles_urls", + "label": "resolve_articles_urls()", + "_callable": true, + "_origin": "ast", + "community": 82, + "community_name": "extract_google_news.py", + "file_type": "code", + "norm_label": "resolve_articles_urls()", + "source_file": "scripts/extract_google_news.py", + "source_location": "L222" + }, + { + "id": "tests_test_extract_google_news_test_resolve_articles_urls_batch", + "label": "test_resolve_articles_urls_batch()", + "_callable": true, + "_origin": "ast", + "community": 82, + "community_name": "extract_google_news.py", + "file_type": "code", + "norm_label": "test_resolve_articles_urls_batch()", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L163" + }, + { + "id": "scripts_extract_google_news_extractionresult_to_dict", + "label": ".to_dict()", + "_callable": true, + "_origin": "ast", + "community": 83, + "community_name": "ExtractionResult", + "file_type": "code", + "norm_label": ".to_dict()", + "source_file": "scripts/extract_google_news.py", + "source_location": "L97" + }, + { + "id": "scripts_extract_google_news_newsarticle_to_dict", + "label": ".to_dict()", + "_callable": true, + "_origin": "ast", + "community": 83, + "community_name": "ExtractionResult", + "file_type": "code", + "norm_label": ".to_dict()", + "source_file": "scripts/extract_google_news.py", + "source_location": "L75" + }, + { + "id": "tests_test_extract_google_news_test_e2e_extract_google_news_live_pipeline", + "label": "test_e2e_extract_google_news_live_pipeline()", + "_callable": true, + "_origin": "ast", + "community": 83, + "community_name": "ExtractionResult", + "file_type": "code", + "norm_label": "test_e2e_extract_google_news_live_pipeline()", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L312" + }, + { + "id": "scripts_extract_google_news_resolve_article_url", + "label": "resolve_article_url()", + "_callable": true, + "_origin": "ast", + "community": 84, + "community_name": "test_extract_google_news.py", + "file_type": "code", + "norm_label": "resolve_article_url()", + "source_file": "scripts/extract_google_news.py", + "source_location": "L209" + }, + { + "id": "tests_test_extract_google_news_test_e2e_resolve_real_google_news_url", + "label": "test_e2e_resolve_real_google_news_url()", + "_callable": true, + "_origin": "ast", + "community": 84, + "community_name": "test_extract_google_news.py", + "file_type": "code", + "norm_label": "test_e2e_resolve_real_google_news_url()", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L291" + }, + { + "id": "tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", + "label": "test_parse_google_news_rss_with_fixture()", + "_callable": true, + "_origin": "ast", + "community": 84, + "community_name": "test_extract_google_news.py", + "file_type": "code", + "norm_label": "test_parse_google_news_rss_with_fixture()", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L111" + }, + { + "id": "tests_test_extract_google_news_test_resolve_article_url_fallback", + "label": "test_resolve_article_url_fallback()", + "_callable": true, + "_origin": "ast", + "community": 84, + "community_name": "test_extract_google_news.py", + "file_type": "code", + "norm_label": "test_resolve_article_url_fallback()", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L138" + }, + { + "id": "tests_test_extract_google_news_test_resolve_article_url_success", + "label": "test_resolve_article_url_success()", + "_callable": true, + "_origin": "ast", + "community": 84, + "community_name": "test_extract_google_news.py", + "file_type": "code", + "norm_label": "test_resolve_article_url_success()", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L150" + }, + { + "id": "scripts_extract_google_news_searchquery_clean_keyword", + "label": ".clean_keyword()", + "_callable": true, + "_origin": "ast", + "community": 90, + "community_name": "SearchQuery", + "file_type": "code", + "norm_label": ".clean_keyword()", + "source_file": "scripts/extract_google_news.py", + "source_location": "L53" + }, + { + "id": "scripts_extract_google_news_searchquery_clean_language", + "label": ".clean_language()", + "_callable": true, + "_origin": "ast", + "community": 90, + "community_name": "SearchQuery", + "file_type": "code", + "norm_label": ".clean_language()", + "source_file": "scripts/extract_google_news.py", + "source_location": "L57" + }, + { + "id": "scripts_extract_google_news_searchquery_clean_locale", + "label": ".clean_locale()", + "_callable": true, + "_origin": "ast", + "community": 90, + "community_name": "SearchQuery", + "file_type": "code", + "norm_label": ".clean_locale()", + "source_file": "scripts/extract_google_news.py", + "source_location": "L61" + }, + { + "id": "scripts_extract_google_news_searchquery_post_init", + "label": ".__post_init__()", + "_callable": true, + "_origin": "ast", + "community": 90, + "community_name": "SearchQuery", + "file_type": "code", + "norm_label": ".__post_init__()", + "source_file": "scripts/extract_google_news.py", + "source_location": "L40" + }, + { + "id": "tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", + "label": "test_extract_google_news_orchestration_mocked()", + "_callable": true, + "_origin": "ast", + "community": 90, + "community_name": "SearchQuery", + "file_type": "code", + "norm_label": "test_extract_google_news_orchestration_mocked()", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L188" + }, + { + "id": "tests_test_extract_google_news_test_search_query_validation", + "label": "test_search_query_validation()", + "_callable": true, + "_origin": "ast", + "community": 90, + "community_name": "SearchQuery", + "file_type": "code", + "norm_label": "test_search_query_validation()", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L86" + }, + { + "id": "scripts_extract_google_news_build_parser", + "label": "build_parser()", + "_callable": true, + "_origin": "ast", + "community": 98, + "community_name": "build_parser", + "file_type": "code", + "norm_label": "build_parser()", + "source_file": "scripts/extract_google_news.py", + "source_location": "L338" + }, + { + "id": "tests_test_extract_google_news_sample_rss_xml", + "label": "sample_rss_xml()", + "_callable": true, + "_origin": "ast", + "community": 99, + "community_name": "sample_rss_xml", + "file_type": "code", + "norm_label": "sample_rss_xml()", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L32" + }, { "id": "specify_templates_tasks_template", "label": "tasks-template.md", @@ -1635,6 +2058,339 @@ "source_file": ".agents/skills/speckit-tasks/SKILL.md", "source_location": "L11" }, + { + "id": "classify", + "label": "classify.py", + "_origin": "ast", + "community": 100, + "community_name": "classifier.py", + "file_type": "code", + "norm_label": "classify.py", + "source_file": "classify.py", + "source_location": "L1" + }, + { + "id": "enum", + "label": "Enum", + "_origin": "ast", + "community": 100, + "community_name": "classifier.py", + "file_type": "code", + "norm_label": "enum", + "source_file": "", + "source_location": "" + }, + { + "id": "src_classifier", + "label": "classifier.py", + "_origin": "ast", + "community": 100, + "community_name": "classifier.py", + "file_type": "code", + "norm_label": "classifier.py", + "source_file": "src/classifier.py", + "source_location": "L1" + }, + { + "id": "src_models", + "label": "models.py", + "_origin": "ast", + "community": 100, + "community_name": "classifier.py", + "file_type": "code", + "norm_label": "models.py", + "source_file": "src/models.py", + "source_location": "L1" + }, + { + "id": "str", + "label": "str", + "_origin": "ast", + "community": 100, + "community_name": "classifier.py", + "file_type": "code", + "norm_label": "str", + "source_file": "", + "source_location": "" + }, + { + "id": "src_classifier_rationale_1", + "label": "Core deterministic classification engine (Tier 1 core).", + "_origin": "ast", + "community": 100, + "community_name": "classifier.py", + "file_type": "rationale", + "norm_label": "core deterministic classification engine (tier 1 core).", + "source_file": "src/classifier.py", + "source_location": "L1" + }, + { + "id": "src_models_rationale_1", + "label": "Data models and validation schemas for Multilingual NLP Entity Inherence\u2026", + "_origin": "ast", + "community": 100, + "community_name": "classifier.py", + "file_type": "rationale", + "norm_label": "data models and validation schemas for multilingual nlp entity inherence...", + "source_file": "src/models.py", + "source_location": "L1" + }, + { + "id": "parametrize", + "label": "parametrize", + "_origin": "ast", + "community": 101, + "community_name": "ECPSnapshot", + "file_type": "code", + "norm_label": "parametrize", + "source_file": "", + "source_location": "" + }, + { + "id": "src_models_py_any", + "label": "Any", + "_origin": "ast", + "community": 101, + "community_name": "ECPSnapshot", + "file_type": "code", + "norm_label": "any", + "source_file": "", + "source_location": "" + }, + { + "id": "tests_test_benchmark_24", + "label": "test_benchmark_24.py", + "_origin": "ast", + "community": 101, + "community_name": "ECPSnapshot", + "file_type": "code", + "norm_label": "test_benchmark_24.py", + "source_file": "tests/test_benchmark_24.py", + "source_location": "L1" + }, + { + "id": "tests_test_benchmark_24_py_fixture", + "label": "fixture", + "_origin": "ast", + "community": 101, + "community_name": "ECPSnapshot", + "file_type": "code", + "norm_label": "fixture", + "source_file": "", + "source_location": "" + }, + { + "id": "tests_test_benchmark_24_rationale_1", + "label": "Controlled 24-case benchmark suite for Multilingual NLP Entity Inherence\u2026", + "_origin": "ast", + "community": 101, + "community_name": "ECPSnapshot", + "file_type": "rationale", + "norm_label": "controlled 24-case benchmark suite for multilingual nlp entity inherence...", + "source_file": "tests/test_benchmark_24.py", + "source_location": "L1" + }, + { + "id": "specs_001_multilingual_entity_classifier_spec_assumptions", + "label": "Assumptions", + "_origin": "ast", + "community": 102, + "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "assumptions", + "source_file": "specs/001-multilingual-entity-classifier/spec.md", + "source_location": "L127" + }, + { + "id": "specs_001_multilingual_entity_classifier_spec_assumptions_scope", + "label": "Assumptions & Scope", + "_origin": "ast", + "community": 102, + "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "assumptions & scope", + "source_file": "specs/001-multilingual-entity-classifier/spec.md", + "source_location": "L125" + }, + { + "id": "specs_001_multilingual_entity_classifier_spec_clarifications", + "label": "Clarifications", + "_origin": "ast", + "community": 102, + "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "clarifications", + "source_file": "specs/001-multilingual-entity-classifier/spec.md", + "source_location": "L13" + }, + { + "id": "specs_001_multilingual_entity_classifier_spec_explicit_out_of_scope_poc", + "label": "Explicit Out of Scope (POC)", + "_origin": "ast", + "community": 102, + "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "explicit out of scope (poc)", + "source_file": "specs/001-multilingual-entity-classifier/spec.md", + "source_location": "L132" + }, + { + "id": "specs_001_multilingual_entity_classifier_spec_feature_specification_multilingual_nlp_entity_inherence_classifier_poc", + "label": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", + "_origin": "ast", + "community": 102, + "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "feature specification: multilingual nlp entity inherence classifier (poc)", + "source_file": "specs/001-multilingual-entity-classifier/spec.md", + "source_location": "L1" + }, + { + "id": "specs_001_multilingual_entity_classifier_spec_functional_requirements", + "label": "Functional Requirements", + "_origin": "ast", + "community": 102, + "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "functional requirements", + "source_file": "specs/001-multilingual-entity-classifier/spec.md", + "source_location": "L61" + }, + { + "id": "specs_001_multilingual_entity_classifier_spec_key_entities_data_models_domain_entities", + "label": "Key Entities *(data models & domain entities)*", + "_origin": "ast", + "community": 102, + "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "key entities *(data models & domain entities)*", + "source_file": "specs/001-multilingual-entity-classifier/spec.md", + "source_location": "L105" + }, + { + "id": "specs_001_multilingual_entity_classifier_spec_measurable_outcomes", + "label": "Measurable Outcomes", + "_origin": "ast", + "community": 102, + "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "measurable outcomes", + "source_file": "specs/001-multilingual-entity-classifier/spec.md", + "source_location": "L116" + }, + { + "id": "specs_001_multilingual_entity_classifier_spec_requirements_mandatory", + "label": "Requirements *(mandatory)*", + "_origin": "ast", + "community": 102, + "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "requirements *(mandatory)*", + "source_file": "specs/001-multilingual-entity-classifier/spec.md", + "source_location": "L59" + }, + { + "id": "specs_001_multilingual_entity_classifier_spec_session_2026_08_19", + "label": "Session 2026-08-19", + "_origin": "ast", + "community": 102, + "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "session 2026-08-19", + "source_file": "specs/001-multilingual-entity-classifier/spec.md", + "source_location": "L15" + }, + { + "id": "specs_001_multilingual_entity_classifier_spec_success_criteria_mandatory", + "label": "Success Criteria *(mandatory)*", + "_origin": "ast", + "community": 102, + "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "success criteria *(mandatory)*", + "source_file": "specs/001-multilingual-entity-classifier/spec.md", + "source_location": "L114" + }, + { + "id": "specs_001_multilingual_entity_classifier_spec_user_scenarios_testing_mandatory", + "label": "User Scenarios & Testing *(mandatory)*", + "_origin": "ast", + "community": 102, + "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "user scenarios & testing *(mandatory)*", + "source_file": "specs/001-multilingual-entity-classifier/spec.md", + "source_location": "L25" + }, + { + "id": "specs_001_multilingual_entity_classifier_spec_user_story_1_classify_content_inherence_via_cli_for_an_ecp_snapshot_priority_p1", + "label": "User Story 1 - Classify Content Inherence via CLI for an ECP Snapshot (Priority: P1)", + "_origin": "ast", + "community": 102, + "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "user story 1 - classify content inherence via cli for an ecp snapshot (priority: p1)", + "source_file": "specs/001-multilingual-entity-classifier/spec.md", + "source_location": "L27" + }, + { + "id": "specs_001_multilingual_entity_classifier_spec_user_story_2_multilingual_language_support_edge_validation_priority_p2", + "label": "User Story 2 - Multilingual Language Support & Edge Validation (Priority: P2)", + "_origin": "ast", + "community": 102, + "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "user story 2 - multilingual language support & edge validation (priority: p2)", + "source_file": "specs/001-multilingual-entity-classifier/spec.md", + "source_location": "L44" + }, + { + "id": "namespace", + "label": "Namespace", + "_origin": "ast", + "community": 103, + "community_name": "main", + "file_type": "code", + "norm_label": "namespace", + "source_file": "", + "source_location": "" + }, + { + "id": "tests_test_cli", + "label": "test_cli.py", + "_origin": "ast", + "community": 103, + "community_name": "main", + "file_type": "code", + "norm_label": "test_cli.py", + "source_file": "tests/test_cli.py", + "source_location": "L1" + }, + { + "id": "tests_test_cli_rationale_1", + "label": "CLI execution tests covering flags, arguments, stdout, and error handling.", + "_origin": "ast", + "community": 103, + "community_name": "main", + "file_type": "rationale", + "norm_label": "cli execution tests covering flags, arguments, stdout, and error handling.", + "source_file": "tests/test_cli.py", + "source_location": "L1" + }, { "id": "specify_memory_constitution", "label": "constitution.md", @@ -4302,182 +5058,102 @@ "source_location": "L11" }, { - "id": "specs_001_multilingual_entity_classifier_spec_assumptions", - "label": "Assumptions", + "id": "capturefixture", + "label": "CaptureFixture", "_origin": "ast", "community": 40, - "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "assumptions", - "source_file": "specs/001-multilingual-entity-classifier/spec.md", - "source_location": "L127" + "community_name": "main", + "file_type": "code", + "norm_label": "capturefixture", + "source_file": "", + "source_location": "" }, { - "id": "specs_001_multilingual_entity_classifier_spec_assumptions_scope", - "label": "Assumptions & Scope", + "id": "path", + "label": "Path", "_origin": "ast", "community": 40, - "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "assumptions & scope", - "source_file": "specs/001-multilingual-entity-classifier/spec.md", - "source_location": "L125" + "community_name": "main", + "file_type": "code", + "norm_label": "path", + "source_file": "", + "source_location": "" }, { - "id": "specs_001_multilingual_entity_classifier_spec_clarifications", - "label": "Clarifications", + "id": "scripts_extract_google_news_rationale_406", + "label": "Ponto de entrada do script CLI.", "_origin": "ast", "community": 40, - "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "clarifications", - "source_file": "specs/001-multilingual-entity-classifier/spec.md", - "source_location": "L13" + "community_name": "main", + "file_type": "rationale", + "norm_label": "ponto de entrada do script cli.", + "source_file": "scripts/extract_google_news.py", + "source_location": "L406" }, { - "id": "specs_001_multilingual_entity_classifier_spec_explicit_out_of_scope_poc", - "label": "Explicit Out of Scope (POC)", + "id": "tests_test_extract_google_news_rationale_218", + "label": "Valida execu\u00e7\u00e3o padr\u00e3o do CLI com sa\u00edda JSON no stdout.", "_origin": "ast", "community": 40, - "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "explicit out of scope (poc)", - "source_file": "specs/001-multilingual-entity-classifier/spec.md", - "source_location": "L132" + "community_name": "main", + "file_type": "rationale", + "norm_label": "valida execucao padrao do cli com saida json no stdout.", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L218" }, { - "id": "specs_001_multilingual_entity_classifier_spec_feature_specification_multilingual_nlp_entity_inherence_classifier_poc", - "label": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", + "id": "tests_test_extract_google_news_rationale_243", + "label": "Valida grava\u00e7\u00e3o em arquivo com cria\u00e7\u00e3o autom\u00e1tica de diret\u00f3rios pais.", "_origin": "ast", "community": 40, - "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "feature specification: multilingual nlp entity inherence classifier (poc)", - "source_file": "specs/001-multilingual-entity-classifier/spec.md", - "source_location": "L1" + "community_name": "main", + "file_type": "rationale", + "norm_label": "valida gravacao em arquivo com criacao automatica de diretorios pais.", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L243" }, { - "id": "specs_001_multilingual_entity_classifier_spec_functional_requirements", - "label": "Functional Requirements", + "id": "tests_test_extract_google_news_rationale_264", + "label": "Valida tratamento de erro e c\u00f3digo de sa\u00edda 1 para par\u00e2metro vazio.", "_origin": "ast", "community": 40, - "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "functional requirements", - "source_file": "specs/001-multilingual-entity-classifier/spec.md", - "source_location": "L61" + "community_name": "main", + "file_type": "rationale", + "norm_label": "valida tratamento de erro e codigo de saida 1 para parametro vazio.", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L264" }, { - "id": "specs_001_multilingual_entity_classifier_spec_key_entities_data_models_domain_entities", - "label": "Key Entities *(data models & domain entities)*", + "id": "tests_test_extract_google_news_rationale_273", + "label": "Valida tratamento de erro e c\u00f3digo de sa\u00edda 2 para falhas de rede.", "_origin": "ast", "community": 40, - "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "key entities *(data models & domain entities)*", - "source_file": "specs/001-multilingual-entity-classifier/spec.md", - "source_location": "L105" + "community_name": "main", + "file_type": "rationale", + "norm_label": "valida tratamento de erro e codigo de saida 2 para falhas de rede.", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L273" }, { - "id": "specs_001_multilingual_entity_classifier_spec_measurable_outcomes", - "label": "Measurable Outcomes", + "id": "tests_test_extract_google_news_rationale_329", + "label": "Valida E2E a execu\u00e7\u00e3o do CLI com sa\u00edda real em arquivo e URLs decodificadas.", "_origin": "ast", "community": 40, - "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "measurable outcomes", - "source_file": "specs/001-multilingual-entity-classifier/spec.md", - "source_location": "L116" - }, - { - "id": "specs_001_multilingual_entity_classifier_spec_requirements_mandatory", - "label": "Requirements *(mandatory)*", - "_origin": "ast", - "community": 40, - "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "requirements *(mandatory)*", - "source_file": "specs/001-multilingual-entity-classifier/spec.md", - "source_location": "L59" - }, - { - "id": "specs_001_multilingual_entity_classifier_spec_session_2026_08_19", - "label": "Session 2026-08-19", - "_origin": "ast", - "community": 40, - "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "session 2026-08-19", - "source_file": "specs/001-multilingual-entity-classifier/spec.md", - "source_location": "L15" - }, - { - "id": "specs_001_multilingual_entity_classifier_spec_success_criteria_mandatory", - "label": "Success Criteria *(mandatory)*", - "_origin": "ast", - "community": 40, - "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "success criteria *(mandatory)*", - "source_file": "specs/001-multilingual-entity-classifier/spec.md", - "source_location": "L114" - }, - { - "id": "specs_001_multilingual_entity_classifier_spec_user_scenarios_testing_mandatory", - "label": "User Scenarios & Testing *(mandatory)*", - "_origin": "ast", - "community": 40, - "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "user scenarios & testing *(mandatory)*", - "source_file": "specs/001-multilingual-entity-classifier/spec.md", - "source_location": "L25" - }, - { - "id": "specs_001_multilingual_entity_classifier_spec_user_story_1_classify_content_inherence_via_cli_for_an_ecp_snapshot_priority_p1", - "label": "User Story 1 - Classify Content Inherence via CLI for an ECP Snapshot (Priority: P1)", - "_origin": "ast", - "community": 40, - "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "user story 1 - classify content inherence via cli for an ecp snapshot (priority: p1)", - "source_file": "specs/001-multilingual-entity-classifier/spec.md", - "source_location": "L27" - }, - { - "id": "specs_001_multilingual_entity_classifier_spec_user_story_2_multilingual_language_support_edge_validation_priority_p2", - "label": "User Story 2 - Multilingual Language Support & Edge Validation (Priority: P2)", - "_origin": "ast", - "community": 40, - "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "user story 2 - multilingual language support & edge validation (priority: p2)", - "source_file": "specs/001-multilingual-entity-classifier/spec.md", - "source_location": "L44" + "community_name": "main", + "file_type": "rationale", + "norm_label": "valida e2e a execucao do cli com saida real em arquivo e urls decodificadas.", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L329" }, { "id": "specs_001_multilingual_entity_classifier_research", - "label": "research.md", + "label": "001-multilingual-entity-classifier/research.md", "_origin": "ast", "community": 41, "community_name": "1. Technical Decisions & Tradeoffs", "file_type": "document", "node_kind": "page", - "norm_label": "research.md", + "norm_label": "001-multilingual-entity-classifier/research.md", "source_file": "specs/001-multilingual-entity-classifier/research.md", "source_location": "L1" }, @@ -4579,13 +5255,13 @@ }, { "id": "specs_001_multilingual_entity_classifier_data_model", - "label": "data-model.md", + "label": "001-multilingual-entity-classifier/data-model.md", "_origin": "ast", "community": 42, "community_name": "1. Input Schemas", "file_type": "document", "node_kind": "page", - "norm_label": "data-model.md", + "norm_label": "001-multilingual-entity-classifier/data-model.md", "source_file": "specs/001-multilingual-entity-classifier/data-model.md", "source_location": "L1" }, @@ -4675,13 +5351,13 @@ }, { "id": "specs_001_multilingual_entity_classifier_quickstart", - "label": "quickstart.md", + "label": "001-multilingual-entity-classifier/quickstart.md", "_origin": "ast", "community": 43, "community_name": "2. Basic CLI Usage Examples", "file_type": "document", "node_kind": "page", - "norm_label": "quickstart.md", + "norm_label": "001-multilingual-entity-classifier/quickstart.md", "source_file": "specs/001-multilingual-entity-classifier/quickstart.md", "source_location": "L1" }, @@ -4858,51 +5534,18 @@ "label": "ABC", "_origin": "ast", "community": 45, - "community_name": "ECPSnapshot", + "community_name": "ClassificationResult", "file_type": "code", "norm_label": "abc", "source_file": "", "source_location": "" }, - { - "id": "classify", - "label": "classify.py", - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "classify.py", - "source_file": "classify.py", - "source_location": "L1" - }, - { - "id": "enum", - "label": "Enum", - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "enum", - "source_file": "", - "source_location": "" - }, - { - "id": "parametrize", - "label": "parametrize", - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "parametrize", - "source_file": "", - "source_location": "" - }, { "id": "src_adapters_base", "label": "base.py", "_origin": "ast", "community": 45, - "community_name": "ECPSnapshot", + "community_name": "ClassificationResult", "file_type": "code", "norm_label": "base.py", "source_file": "src/adapters/base.py", @@ -4913,7 +5556,7 @@ "label": "embeddings.py", "_origin": "ast", "community": 45, - "community_name": "ECPSnapshot", + "community_name": "ClassificationResult", "file_type": "code", "norm_label": "embeddings.py", "source_file": "src/adapters/embeddings.py", @@ -4924,117 +5567,29 @@ "label": "llm.py", "_origin": "ast", "community": 45, - "community_name": "ECPSnapshot", + "community_name": "ClassificationResult", "file_type": "code", "norm_label": "llm.py", "source_file": "src/adapters/llm.py", "source_location": "L1" }, - { - "id": "src_classifier", - "label": "classifier.py", - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "classifier.py", - "source_file": "src/classifier.py", - "source_location": "L1" - }, - { - "id": "src_models", - "label": "models.py", - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "models.py", - "source_file": "src/models.py", - "source_location": "L1" - }, - { - "id": "str", - "label": "str", - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "str", - "source_file": "", - "source_location": "" - }, { "id": "tests_test_adapters", "label": "test_adapters.py", "_origin": "ast", "community": 45, - "community_name": "ECPSnapshot", + "community_name": "ClassificationResult", "file_type": "code", "norm_label": "test_adapters.py", "source_file": "tests/test_adapters.py", "source_location": "L1" }, - { - "id": "tests_test_adversarial", - "label": "test_adversarial.py", - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "test_adversarial.py", - "source_file": "tests/test_adversarial.py", - "source_location": "L1" - }, - { - "id": "tests_test_benchmark_24", - "label": "test_benchmark_24.py", - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "test_benchmark_24.py", - "source_file": "tests/test_benchmark_24.py", - "source_location": "L1" - }, - { - "id": "tests_test_benchmark_24_py_fixture", - "label": "fixture", - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "fixture", - "source_file": "", - "source_location": "" - }, - { - "id": "tests_test_classifier", - "label": "test_classifier.py", - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "test_classifier.py", - "source_file": "tests/test_classifier.py", - "source_location": "L1" - }, - { - "id": "tests_test_classifier_py_fixture", - "label": "fixture", - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "fixture", - "source_file": "", - "source_location": "" - }, { "id": "src_adapters_base_rationale_1", "label": "Base abstract adapter interface for optional Tier 2 / Tier 3 NLP enhancers.", "_origin": "ast", "community": 45, - "community_name": "ECPSnapshot", + "community_name": "ClassificationResult", "file_type": "rationale", "norm_label": "base abstract adapter interface for optional tier 2 / tier 3 nlp enhancers.", "source_file": "src/adapters/base.py", @@ -5045,7 +5600,7 @@ "label": "Abstract interface for pluggable NLP classification adapters.", "_origin": "ast", "community": 45, - "community_name": "ECPSnapshot", + "community_name": "ClassificationResult", "file_type": "rationale", "norm_label": "abstract interface for pluggable nlp classification adapters.", "source_file": "src/adapters/base.py", @@ -5056,7 +5611,7 @@ "label": "Return True if the underlying provider or model is installed and configured.", "_origin": "ast", "community": 45, - "community_name": "ECPSnapshot", + "community_name": "ClassificationResult", "file_type": "rationale", "norm_label": "return true if the underlying provider or model is installed and configured.", "source_file": "src/adapters/base.py", @@ -5067,7 +5622,7 @@ "label": "Compute semantic similarity score between text and a set of candidate terms.", "_origin": "ast", "community": 45, - "community_name": "ECPSnapshot", + "community_name": "ClassificationResult", "file_type": "rationale", "norm_label": "compute semantic similarity score between text and a set of candidate terms.", "source_file": "src/adapters/base.py", @@ -5078,7 +5633,7 @@ "label": "Optionally refine an ambiguous classification result.", "_origin": "ast", "community": 45, - "community_name": "ECPSnapshot", + "community_name": "ClassificationResult", "file_type": "rationale", "norm_label": "optionally refine an ambiguous classification result.", "source_file": "src/adapters/base.py", @@ -5089,7 +5644,7 @@ "label": "Optional local vector embeddings adapter (Tier 2). Disabled by default.\u2026", "_origin": "ast", "community": 45, - "community_name": "ECPSnapshot", + "community_name": "ClassificationResult", "file_type": "rationale", "norm_label": "optional local vector embeddings adapter (tier 2). disabled by default....", "source_file": "src/adapters/embeddings.py", @@ -5100,7 +5655,7 @@ "label": "Optional adapter for local multilingual semantic vector embeddings.", "_origin": "ast", "community": 45, - "community_name": "ECPSnapshot", + "community_name": "ClassificationResult", "file_type": "rationale", "norm_label": "optional adapter for local multilingual semantic vector embeddings.", "source_file": "src/adapters/embeddings.py", @@ -5111,7 +5666,7 @@ "label": "Optional LLM fallback adapter (Tier 3). Disabled by default. Provides fallback\u2026", "_origin": "ast", "community": 45, - "community_name": "ECPSnapshot", + "community_name": "ClassificationResult", "file_type": "rationale", "norm_label": "optional llm fallback adapter (tier 3). disabled by default. provides fallback...", "source_file": "src/adapters/llm.py", @@ -5122,95 +5677,73 @@ "label": "Optional adapter for LLM fallback boundary disambiguation.", "_origin": "ast", "community": 45, - "community_name": "ECPSnapshot", + "community_name": "ClassificationResult", "file_type": "rationale", "norm_label": "optional adapter for llm fallback boundary disambiguation.", "source_file": "src/adapters/llm.py", "source_location": "L16" }, - { - "id": "src_classifier_rationale_1", - "label": "Core deterministic classification engine (Tier 1 core).", - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "rationale", - "norm_label": "core deterministic classification engine (tier 1 core).", - "source_file": "src/classifier.py", - "source_location": "L1" - }, - { - "id": "src_classifier_rationale_21", - "label": "Check if a normalized phrase appears in normalized text with word boundary\u2026", - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "rationale", - "norm_label": "check if a normalized phrase appears in normalized text with word boundary...", - "source_file": "src/classifier.py", - "source_location": "L21" - }, - { - "id": "src_classifier_rationale_34", - "label": "Count occurrences of a phrase in text.", - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "rationale", - "norm_label": "count occurrences of a phrase in text.", - "source_file": "src/classifier.py", - "source_location": "L34" - }, - { - "id": "src_classifier_rationale_45", - "label": "Tier 1 Deterministic NLP Entity Inherence Classifier.", - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "rationale", - "norm_label": "tier 1 deterministic nlp entity inherence classifier.", - "source_file": "src/classifier.py", - "source_location": "L45" - }, - { - "id": "src_classifier_rationale_62", - "label": "Classify inherence of content against an ECP snapshot.", - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "rationale", - "norm_label": "classify inherence of content against an ecp snapshot.", - "source_file": "src/classifier.py", - "source_location": "L62" - }, - { - "id": "src_models_rationale_1", - "label": "Data models and validation schemas for Multilingual NLP Entity Inherence\u2026", - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "rationale", - "norm_label": "data models and validation schemas for multilingual nlp entity inherence...", - "source_file": "src/models.py", - "source_location": "L1" - }, { "id": "tests_test_adapters_rationale_1", "label": "Unit tests for optional adapter interfaces (Tier 2 / Tier 3).", "_origin": "ast", "community": 45, - "community_name": "ECPSnapshot", + "community_name": "ClassificationResult", "file_type": "rationale", "norm_label": "unit tests for optional adapter interfaces (tier 2 / tier 3).", "source_file": "tests/test_adapters.py", "source_location": "L1" }, + { + "id": "tests_test_adversarial", + "label": "test_adversarial.py", + "_origin": "ast", + "community": 46, + "community_name": "InherenceClassifier", + "file_type": "code", + "norm_label": "test_adversarial.py", + "source_file": "tests/test_adversarial.py", + "source_location": "L1" + }, + { + "id": "tests_test_classifier", + "label": "test_classifier.py", + "_origin": "ast", + "community": 46, + "community_name": "InherenceClassifier", + "file_type": "code", + "norm_label": "test_classifier.py", + "source_file": "tests/test_classifier.py", + "source_location": "L1" + }, + { + "id": "tests_test_classifier_py_fixture", + "label": "fixture", + "_origin": "ast", + "community": 46, + "community_name": "InherenceClassifier", + "file_type": "code", + "norm_label": "fixture", + "source_file": "", + "source_location": "" + }, + { + "id": "src_classifier_rationale_45", + "label": "Tier 1 Deterministic NLP Entity Inherence Classifier.", + "_origin": "ast", + "community": 46, + "community_name": "InherenceClassifier", + "file_type": "rationale", + "norm_label": "tier 1 deterministic nlp entity inherence classifier.", + "source_file": "src/classifier.py", + "source_location": "L45" + }, { "id": "tests_test_adversarial_rationale_1", "label": "Adversarial and robustness test suite for Multilingual NLP Entity Inherence\u2026", "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 46, + "community_name": "InherenceClassifier", "file_type": "rationale", "norm_label": "adversarial and robustness test suite for multilingual nlp entity inherence...", "source_file": "tests/test_adversarial.py", @@ -5220,8 +5753,8 @@ "id": "tests_test_adversarial_rationale_134", "label": "Run CLI via subprocess with empty content and verify error code and exit code.", "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 46, + "community_name": "InherenceClassifier", "file_type": "rationale", "norm_label": "run cli via subprocess with empty content and verify error code and exit code.", "source_file": "tests/test_adversarial.py", @@ -5231,8 +5764,8 @@ "id": "tests_test_adversarial_rationale_16", "label": "Content about city/state governance of S\u00e3o Paulo against ECP for S\u00e3o Paulo FC.", "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 46, + "community_name": "InherenceClassifier", "file_type": "rationale", "norm_label": "content about city/state governance of sao paulo against ecp for sao paulo fc.", "source_file": "tests/test_adversarial.py", @@ -5242,8 +5775,8 @@ "id": "tests_test_adversarial_rationale_165", "label": "Run CLI via subprocess with missing target_name and verify error payload.", "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 46, + "community_name": "InherenceClassifier", "file_type": "rationale", "norm_label": "run cli via subprocess with missing target_name and verify error payload.", "source_file": "tests/test_adversarial.py", @@ -5253,8 +5786,8 @@ "id": "tests_test_adversarial_rationale_194", "label": "Run CLI via subprocess with corrupted JSON and verify error payload.", "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 46, + "community_name": "InherenceClassifier", "file_type": "rationale", "norm_label": "run cli via subprocess with corrupted json and verify error payload.", "source_file": "tests/test_adversarial.py", @@ -5264,8 +5797,8 @@ "id": "tests_test_adversarial_rationale_41", "label": "Content about apple fruit/culinary recipe against Apple Inc. tech entity.", "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 46, + "community_name": "InherenceClassifier", "file_type": "rationale", "norm_label": "content about apple fruit/culinary recipe against apple inc. tech entity.", "source_file": "tests/test_adversarial.py", @@ -5275,8 +5808,8 @@ "id": "tests_test_adversarial_rationale_64", "label": "High-weight related entity mentioned in passing without required domain anchors.", "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 46, + "community_name": "InherenceClassifier", "file_type": "rationale", "norm_label": "high-weight related entity mentioned in passing without required domain anchors.", "source_file": "tests/test_adversarial.py", @@ -5286,123 +5819,24 @@ "id": "tests_test_adversarial_rationale_99", "label": "Run CLI via subprocess without --output and verify stdout is pure parseable\u2026", "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 46, + "community_name": "InherenceClassifier", "file_type": "rationale", "norm_label": "run cli via subprocess without --output and verify stdout is pure parseable...", "source_file": "tests/test_adversarial.py", "source_location": "L99" }, - { - "id": "tests_test_benchmark_24_rationale_1", - "label": "Controlled 24-case benchmark suite for Multilingual NLP Entity Inherence\u2026", - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "rationale", - "norm_label": "controlled 24-case benchmark suite for multilingual nlp entity inherence...", - "source_file": "tests/test_benchmark_24.py", - "source_location": "L1" - }, { "id": "tests_test_classifier_rationale_1", "label": "Unit tests for deterministic classification decision logic.", "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 46, + "community_name": "InherenceClassifier", "file_type": "rationale", "norm_label": "unit tests for deterministic classification decision logic.", "source_file": "tests/test_classifier.py", "source_location": "L1" }, - { - "id": "any", - "label": "Any", - "_origin": "ast", - "community": 46, - "community_name": "test_models.py", - "file_type": "code", - "norm_label": "any", - "source_file": "", - "source_location": "" - }, - { - "id": "src_parser", - "label": "parser.py", - "_origin": "ast", - "community": 46, - "community_name": "test_models.py", - "file_type": "code", - "norm_label": "parser.py", - "source_file": "src/parser.py", - "source_location": "L1" - }, - { - "id": "tests_test_models", - "label": "test_models.py", - "_origin": "ast", - "community": 46, - "community_name": "test_models.py", - "file_type": "code", - "norm_label": "test_models.py", - "source_file": "tests/test_models.py", - "source_location": "L1" - }, - { - "id": "src_parser_rationale_1", - "label": "Markdown content parser and excerpt extraction utilities.", - "_origin": "ast", - "community": 46, - "community_name": "test_models.py", - "file_type": "rationale", - "norm_label": "markdown content parser and excerpt extraction utilities.", - "source_file": "src/parser.py", - "source_location": "L1" - }, - { - "id": "src_parser_rationale_10", - "label": "Remove markdown syntax markers (headers, bold, italics, links, code blocks) to\u2026", - "_origin": "ast", - "community": 46, - "community_name": "test_models.py", - "file_type": "rationale", - "norm_label": "remove markdown syntax markers (headers, bold, italics, links, code blocks) to...", - "source_file": "src/parser.py", - "source_location": "L10" - }, - { - "id": "src_parser_rationale_44", - "label": "Split text into individual sentences.", - "_origin": "ast", - "community": 46, - "community_name": "test_models.py", - "file_type": "rationale", - "norm_label": "split text into individual sentences.", - "source_file": "src/parser.py", - "source_location": "L44" - }, - { - "id": "src_parser_rationale_52", - "label": "Extract relevant sentence excerpts from Markdown text that contain any of the\u2026", - "_origin": "ast", - "community": 46, - "community_name": "test_models.py", - "file_type": "rationale", - "norm_label": "extract relevant sentence excerpts from markdown text that contain any of the...", - "source_file": "src/parser.py", - "source_location": "L52" - }, - { - "id": "tests_test_models_rationale_1", - "label": "Unit tests for ECP models, schema validation, and structured error handling.", - "_origin": "ast", - "community": 46, - "community_name": "test_models.py", - "file_type": "rationale", - "norm_label": "unit tests for ecp models, schema validation, and structured error handling.", - "source_file": "tests/test_models.py", - "source_location": "L1" - }, { "id": "src_language", "label": "language.py", @@ -5425,6 +5859,28 @@ "source_file": "tests/test_language.py", "source_location": "L1" }, + { + "id": "src_classifier_rationale_21", + "label": "Check if a normalized phrase appears in normalized text with word boundary\u2026", + "_origin": "ast", + "community": 47, + "community_name": "detect_language", + "file_type": "rationale", + "norm_label": "check if a normalized phrase appears in normalized text with word boundary...", + "source_file": "src/classifier.py", + "source_location": "L21" + }, + { + "id": "src_classifier_rationale_34", + "label": "Count occurrences of a phrase in text.", + "_origin": "ast", + "community": 47, + "community_name": "detect_language", + "file_type": "rationale", + "norm_label": "count occurrences of a phrase in text.", + "source_file": "src/classifier.py", + "source_location": "L34" + }, { "id": "src_language_rationale_1", "label": "Lightweight multilingual language detection and text normalization.", @@ -5481,36 +5937,91 @@ "source_location": "L1" }, { - "id": "namespace", - "label": "Namespace", + "id": "src_parser", + "label": "parser.py", "_origin": "ast", "community": 48, - "community_name": "main", + "community_name": "test_models.py", "file_type": "code", - "norm_label": "namespace", - "source_file": "", - "source_location": "" - }, - { - "id": "tests_test_cli", - "label": "test_cli.py", - "_origin": "ast", - "community": 48, - "community_name": "main", - "file_type": "code", - "norm_label": "test_cli.py", - "source_file": "tests/test_cli.py", + "norm_label": "parser.py", + "source_file": "src/parser.py", "source_location": "L1" }, { - "id": "tests_test_cli_rationale_1", - "label": "CLI execution tests covering flags, arguments, stdout, and error handling.", + "id": "tests_test_models", + "label": "test_models.py", "_origin": "ast", "community": 48, - "community_name": "main", + "community_name": "test_models.py", + "file_type": "code", + "norm_label": "test_models.py", + "source_file": "tests/test_models.py", + "source_location": "L1" + }, + { + "id": "src_classifier_rationale_62", + "label": "Classify inherence of content against an ECP snapshot.", + "_origin": "ast", + "community": 48, + "community_name": "test_models.py", "file_type": "rationale", - "norm_label": "cli execution tests covering flags, arguments, stdout, and error handling.", - "source_file": "tests/test_cli.py", + "norm_label": "classify inherence of content against an ecp snapshot.", + "source_file": "src/classifier.py", + "source_location": "L62" + }, + { + "id": "src_parser_rationale_1", + "label": "Markdown content parser and excerpt extraction utilities.", + "_origin": "ast", + "community": 48, + "community_name": "test_models.py", + "file_type": "rationale", + "norm_label": "markdown content parser and excerpt extraction utilities.", + "source_file": "src/parser.py", + "source_location": "L1" + }, + { + "id": "src_parser_rationale_10", + "label": "Remove markdown syntax markers (headers, bold, italics, links, code blocks) to\u2026", + "_origin": "ast", + "community": 48, + "community_name": "test_models.py", + "file_type": "rationale", + "norm_label": "remove markdown syntax markers (headers, bold, italics, links, code blocks) to...", + "source_file": "src/parser.py", + "source_location": "L10" + }, + { + "id": "src_parser_rationale_44", + "label": "Split text into individual sentences.", + "_origin": "ast", + "community": 48, + "community_name": "test_models.py", + "file_type": "rationale", + "norm_label": "split text into individual sentences.", + "source_file": "src/parser.py", + "source_location": "L44" + }, + { + "id": "src_parser_rationale_52", + "label": "Extract relevant sentence excerpts from Markdown text that contain any of the\u2026", + "_origin": "ast", + "community": 48, + "community_name": "test_models.py", + "file_type": "rationale", + "norm_label": "extract relevant sentence excerpts from markdown text that contain any of the...", + "source_file": "src/parser.py", + "source_location": "L52" + }, + { + "id": "tests_test_models_rationale_1", + "label": "Unit tests for ECP models, schema validation, and structured error handling.", + "_origin": "ast", + "community": 48, + "community_name": "test_models.py", + "file_type": "rationale", + "norm_label": "unit tests for ecp models, schema validation, and structured error handling.", + "source_file": "tests/test_models.py", "source_location": "L1" }, { @@ -5635,13 +6146,13 @@ }, { "id": "specs_001_multilingual_entity_classifier_checklists_requirements", - "label": "requirements.md", + "label": "001-multilingual-entity-classifier/checklists/requirements.md", "_origin": "ast", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "file_type": "document", "node_kind": "page", - "norm_label": "requirements.md", + "norm_label": "001-multilingual-entity-classifier/checklists/requirements.md", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "source_location": "L1" }, @@ -5707,13 +6218,13 @@ }, { "id": "specs_001_multilingual_entity_classifier_plan", - "label": "plan.md", + "label": "001-multilingual-entity-classifier/plan.md", "_origin": "ast", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "file_type": "document", "node_kind": "page", - "norm_label": "plan.md", + "norm_label": "001-multilingual-entity-classifier/plan.md", "source_file": "specs/001-multilingual-entity-classifier/plan.md", "source_location": "L1" }, @@ -5815,25 +6326,25 @@ }, { "id": "specs_001_multilingual_entity_classifier_spec", - "label": "spec.md", + "label": "001-multilingual-entity-classifier/spec.md", "_origin": "ast", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "file_type": "document", "node_kind": "page", - "norm_label": "spec.md", + "norm_label": "001-multilingual-entity-classifier/spec.md", "source_file": "specs/001-multilingual-entity-classifier/spec.md", "source_location": "L1" }, { "id": "specs_001_multilingual_entity_classifier_tasks", - "label": "tasks.md", + "label": "001-multilingual-entity-classifier/tasks.md", "_origin": "ast", "community": 5, "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "file_type": "document", "node_kind": "page", - "norm_label": "tasks.md", + "norm_label": "001-multilingual-entity-classifier/tasks.md", "source_file": "specs/001-multilingual-entity-classifier/tasks.md", "source_location": "L1" }, @@ -7018,6 +7529,1074 @@ "source_file": ".agents/skills/speckit-plan/SKILL.md", "source_location": "L11" }, + { + "id": "scripts_extract_google_news_rationale_110", + "label": "Mapeia idioma e locale para os par\u00e2metros hl, gl e ceid do Google News.", + "_origin": "ast", + "community": 80, + "community_name": "get_hl_gl_ceid", + "file_type": "rationale", + "norm_label": "mapeia idioma e locale para os parametros hl, gl e ceid do google news.", + "source_file": "scripts/extract_google_news.py", + "source_location": "L110" + }, + { + "id": "tests_test_extract_google_news_rationale_38", + "label": "Valida o mapeamento padr\u00e3o de idiomas para pares (hl, gl, ceid).", + "_origin": "ast", + "community": 80, + "community_name": "get_hl_gl_ceid", + "file_type": "rationale", + "norm_label": "valida o mapeamento padrao de idiomas para pares (hl, gl, ceid).", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L38" + }, + { + "id": "tests_test_extract_google_news_rationale_61", + "label": "Valida a sobrescrita geogr\u00e1fica quando o argumento locale \u00e9 especificado.", + "_origin": "ast", + "community": 80, + "community_name": "get_hl_gl_ceid", + "file_type": "rationale", + "norm_label": "valida a sobrescrita geografica quando o argumento locale e especificado.", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L61" + }, + { + "id": "tests_test_extract_google_news_rationale_79", + "label": "Valida fallback din\u00e2mico para idiomas regionais n\u00e3o listados explicitamente.", + "_origin": "ast", + "community": 80, + "community_name": "get_hl_gl_ceid", + "file_type": "rationale", + "norm_label": "valida fallback dinamico para idiomas regionais nao listados explicitamente.", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L79" + }, + { + "id": "docs_googlenews_extractor_guia_completo", + "label": "googlenews_extractor_guia_completo.md", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "page", + "norm_label": "googlenews_extractor_guia_completo.md", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L1" + }, + { + "id": "docs_googlenews_extractor_guia_completo_1_vis\u00e3o_geral_arquitetura", + "label": "1. Vis\u00e3o geral (arquitetura)", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "1. visao geral (arquitetura)", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L9" + }, + { + "id": "docs_googlenews_extractor_guia_completo_2_1_dto_de_entrada_googlenews_etl_application_dtos_extract_news_dto_py", + "label": "2.1 DTO de entrada (`googlenews_etl/application/dtos/extract_news_dto.py`)", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "2.1 dto de entrada (`googlenews_etl/application/dtos/extract_news_dto.py`)", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L58" + }, + { + "id": "docs_googlenews_extractor_guia_completo_2_2_value_object_de_valida\u00e7\u00e3o_googlenews_etl_domain_entities_search_query_py", + "label": "2.2 Value Object de valida\u00e7\u00e3o (`googlenews_etl/domain/entities/search_query.py`)", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "2.2 value object de validacao (`googlenews_etl/domain/entities/search_query.py`)", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L75" + }, + { + "id": "docs_googlenews_extractor_guia_completo_2_entrada", + "label": "2. Entrada", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "2. entrada", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L56" + }, + { + "id": "docs_googlenews_extractor_guia_completo_3_1_o_caso_de_uso_googlenews_etl_application_use_cases_extract_news_use_case_py", + "label": "3.1 O caso de uso (`googlenews_etl/application/use_cases/extract_news_use_case.py`)", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "3.1 o caso de uso (`googlenews_etl/application/use_cases/extract_news_use_case.py`)", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L115" + }, + { + "id": "docs_googlenews_extractor_guia_completo_3_2_a_porta_googlenews_etl_domain_ports_news_extractor_port_py", + "label": "3.2 A porta (`googlenews_etl/domain/ports/news_extractor_port.py`)", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "3.2 a porta (`googlenews_etl/domain/ports/news_extractor_port.py`)", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L168" + }, + { + "id": "docs_googlenews_extractor_guia_completo_3_3_1_inicializa\u00e7\u00e3o_sess\u00e3o_http_com_impersona\u00e7\u00e3o_de_browser", + "label": "3.3.1 Inicializa\u00e7\u00e3o: sess\u00e3o HTTP com impersona\u00e7\u00e3o de browser", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "3.3.1 inicializacao: sessao http com impersonacao de browser", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L185" + }, + { + "id": "docs_googlenews_extractor_guia_completo_3_3_2_mapeamento_idioma_par\u00e2metros_hl_gl_get_hl_gl", + "label": "3.3.2 Mapeamento idioma \u2192 par\u00e2metros `hl`/`gl` (`_get_hl_gl`)", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "3.3.2 mapeamento idioma \u2192 parametros `hl`/`gl` (`_get_hl_gl`)", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L213" + }, + { + "id": "docs_googlenews_extractor_guia_completo_3_3_3_extra\u00e7\u00e3o_do_rss_o_ponto_fundamental_fetch_rss", + "label": "3.3.3 \u2605 Extra\u00e7\u00e3o do RSS \u2014 o ponto fundamental (`_fetch_rss`)", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "3.3.3 \u2605 extracao do rss \u2014 o ponto fundamental (`_fetch_rss`)", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L250" + }, + { + "id": "docs_googlenews_extractor_guia_completo_3_3_4_orquestra\u00e7\u00e3o_com_resolu\u00e7\u00e3o_de_urls_extract", + "label": "3.3.4 Orquestra\u00e7\u00e3o com resolu\u00e7\u00e3o de URLs (`extract`)", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "3.3.4 orquestracao com resolucao de urls (`extract`)", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L306" + }, + { + "id": "docs_googlenews_extractor_guia_completo_3_3_o_adaptador_concreto_o_cora\u00e7\u00e3o_do_extrator_googlenews_etl_infrastructure_adapters_google_news_extractor_adapter_py", + "label": "3.3 O adaptador concreto \u2014 o cora\u00e7\u00e3o do extrator (`googlenews_etl/infrastructure/adapters/google_news_extractor_adapter.py`)", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "3.3 o adaptador concreto \u2014 o coracao do extrator (`googlenews_etl/infrastructure/adapters/google_news_extractor_adapter.py`)", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L183" + }, + { + "id": "docs_googlenews_extractor_guia_completo_3_4_resolu\u00e7\u00e3o_de_urls_googlenews_etl_infrastructure_adapters_playwright_url_resolver_adapter_py", + "label": "3.4 Resolu\u00e7\u00e3o de URLs (`googlenews_etl/infrastructure/adapters/playwright_url_resolver_adapter.py`)", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "3.4 resolucao de urls (`googlenews_etl/infrastructure/adapters/playwright_url_resolver_adapter.py`)", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L332" + }, + { + "id": "docs_googlenews_extractor_guia_completo_3_5_rate_limiter_googlenews_etl_domain_services_rate_limiter_service_py", + "label": "3.5 Rate limiter (`googlenews_etl/domain/services/rate_limiter_service.py`)", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "3.5 rate limiter (`googlenews_etl/domain/services/rate_limiter_service.py`)", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L384" + }, + { + "id": "docs_googlenews_extractor_guia_completo_3_processamento_passo_a_passo", + "label": "3. Processamento \u2014 passo a passo", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "3. processamento \u2014 passo a passo", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L113" + }, + { + "id": "docs_googlenews_extractor_guia_completo_4_entidade_de_dom\u00ednio_da_not\u00edcia_googlenews_etl_domain_entities_news_article_py", + "label": "4. Entidade de dom\u00ednio da not\u00edcia (`googlenews_etl/domain/entities/news_article.py`)", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "4. entidade de dominio da noticia (`googlenews_etl/domain/entities/news_article.py`)", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L403" + }, + { + "id": "docs_googlenews_extractor_guia_completo_5_1_dtos_de_sa\u00edda_googlenews_etl_application_dtos_extract_news_dto_py", + "label": "5.1 DTOs de sa\u00edda (`googlenews_etl/application/dtos/extract_news_dto.py`)", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "5.1 dtos de saida (`googlenews_etl/application/dtos/extract_news_dto.py`)", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L437" + }, + { + "id": "docs_googlenews_extractor_guia_completo_5_2_exemplo_de_sa\u00edda_json", + "label": "5.2 Exemplo de sa\u00edda JSON", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "5.2 exemplo de saida json", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L461" + }, + { + "id": "docs_googlenews_extractor_guia_completo_5_sa\u00edda", + "label": "5. Sa\u00edda", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "5. saida", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L435" + }, + { + "id": "docs_googlenews_extractor_guia_completo_6_resumo_do_fluxo_completo_entrada_sa\u00edda", + "label": "6. Resumo do fluxo completo (entrada \u2192 sa\u00edda)", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "6. resumo do fluxo completo (entrada \u2192 saida)", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L486" + }, + { + "id": "docs_googlenews_extractor_guia_completo_7_depend\u00eancias_para_rodar_o_que_n\u00e3o_est\u00e1_nos_4_arquivos_centrais", + "label": "7. Depend\u00eancias para rodar (o que N\u00c3O est\u00e1 nos 4 arquivos centrais)", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "7. dependencias para rodar (o que nao esta nos 4 arquivos centrais)", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L514" + }, + { + "id": "docs_googlenews_extractor_guia_completo_8_como_chamar_exemplo_de_uso", + "label": "8. Como chamar (exemplo de uso)", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "8. como chamar (exemplo de uso)", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L548" + }, + { + "id": "docs_googlenews_extractor_guia_completo_comportamentos_observ\u00e1veis_honestidade", + "label": "Comportamentos observ\u00e1veis (honestidade)", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "comportamentos observaveis (honestidade)", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L537" + }, + { + "id": "docs_googlenews_extractor_guia_completo_depend\u00eancias_de_bibliotecas_requirements", + "label": "Depend\u00eancias de bibliotecas (requirements)", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "dependencias de bibliotecas (requirements)", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L529" + }, + { + "id": "docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", + "label": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "_origin": "ast", + "community": 81, + "community_name": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", + "file_type": "document", + "node_kind": "heading", + "norm_label": "extrator de noticias do google news \u2014 guia completo de funcionamento", + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L1" + }, + { + "id": "scripts_extract_google_news", + "label": "extract_google_news.py", + "_origin": "ast", + "community": 82, + "community_name": "extract_google_news.py", + "file_type": "code", + "norm_label": "extract_google_news.py", + "source_file": "scripts/extract_google_news.py", + "source_location": "L1" + }, + { + "id": "scripts_extract_google_news_rationale_154", + "label": "Remove pontua\u00e7\u00e3o e espa\u00e7os extras para compara\u00e7\u00e3o de redund\u00e2ncia.", + "_origin": "ast", + "community": 82, + "community_name": "extract_google_news.py", + "file_type": "rationale", + "norm_label": "remove pontuacao e espacos extras para comparacao de redundancia.", + "source_file": "scripts/extract_google_news.py", + "source_location": "L154" + }, + { + "id": "scripts_extract_google_news_rationale_159", + "label": "Parseia o XML do RSS do Google News e extrai os itens estruturados.", + "_origin": "ast", + "community": 82, + "community_name": "extract_google_news.py", + "file_type": "rationale", + "norm_label": "parseia o xml do rss do google news e extrai os itens estruturados.", + "source_file": "scripts/extract_google_news.py", + "source_location": "L159" + }, + { + "id": "scripts_extract_google_news_rationale_225", + "label": "Resolve em paralelo as URLs intermedi\u00e1rias do Google News para os links finais\u2026", + "_origin": "ast", + "community": 82, + "community_name": "extract_google_news.py", + "file_type": "rationale", + "norm_label": "resolve em paralelo as urls intermediarias do google news para os links finais...", + "source_file": "scripts/extract_google_news.py", + "source_location": "L225" + }, + { + "id": "scripts_extract_google_news_rationale_256", + "label": "Realiza a requisi\u00e7\u00e3o ao feed RSS utilizando a biblioteca Foxcape como motor\u2026", + "_origin": "ast", + "community": 82, + "community_name": "extract_google_news.py", + "file_type": "rationale", + "norm_label": "realiza a requisicao ao feed rss utilizando a biblioteca foxcape como motor...", + "source_file": "scripts/extract_google_news.py", + "source_location": "L256" + }, + { + "id": "scripts_extract_google_news_rationale_302", + "label": "Orquestra a consulta ao Google News e retorna o resultado consolidado com URLs\u2026", + "_origin": "ast", + "community": 82, + "community_name": "extract_google_news.py", + "file_type": "rationale", + "norm_label": "orquestra a consulta ao google news e retorna o resultado consolidado com urls...", + "source_file": "scripts/extract_google_news.py", + "source_location": "L302" + }, + { + "id": "scripts_extract_google_news_rationale_67", + "label": "Entidade que representa uma not\u00edcia extra\u00edda.", + "_origin": "ast", + "community": 82, + "community_name": "extract_google_news.py", + "file_type": "rationale", + "norm_label": "entidade que representa uma noticia extraida.", + "source_file": "scripts/extract_google_news.py", + "source_location": "L67" + }, + { + "id": "tests_test_extract_google_news_rationale_164", + "label": "Valida a resolu\u00e7\u00e3o concorrente em lote de uma lista de NewsArticle.", + "_origin": "ast", + "community": 82, + "community_name": "extract_google_news.py", + "file_type": "rationale", + "norm_label": "valida a resolucao concorrente em lote de uma lista de newsarticle.", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L164" + }, + { + "id": "scripts_extract_google_news_py_any", + "label": "Any", + "_origin": "ast", + "community": 83, + "community_name": "ExtractionResult", + "file_type": "code", + "norm_label": "any", + "source_file": "", + "source_location": "" + }, + { + "id": "scripts_extract_google_news_rationale_87", + "label": "Resultado consolidado da extra\u00e7\u00e3o.", + "_origin": "ast", + "community": 83, + "community_name": "ExtractionResult", + "file_type": "rationale", + "norm_label": "resultado consolidado da extracao.", + "source_file": "scripts/extract_google_news.py", + "source_location": "L87" + }, + { + "id": "tests_test_extract_google_news_rationale_313", + "label": "Valida E2E o fluxo completo de busca, parsing e resolu\u00e7\u00e3o de URLs reais ao vivo.", + "_origin": "ast", + "community": 83, + "community_name": "ExtractionResult", + "file_type": "rationale", + "norm_label": "valida e2e o fluxo completo de busca, parsing e resolucao de urls reais ao vivo.", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L313" + }, + { + "id": "tests_test_extract_google_news", + "label": "test_extract_google_news.py", + "_origin": "ast", + "community": 84, + "community_name": "test_extract_google_news.py", + "file_type": "code", + "norm_label": "test_extract_google_news.py", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L1" + }, + { + "id": "scripts_extract_google_news_rationale_210", + "label": "Resolve a URL intermedi\u00e1ria do Google News para a URL real do ve\u00edculo.", + "_origin": "ast", + "community": 84, + "community_name": "test_extract_google_news.py", + "file_type": "rationale", + "norm_label": "resolve a url intermediaria do google news para a url real do veiculo.", + "source_file": "scripts/extract_google_news.py", + "source_location": "L210" + }, + { + "id": "tests_test_extract_google_news_rationale_1", + "label": "Testes unit\u00e1rios e de integra\u00e7\u00e3o para o Extrator de Manchetes do Google News.\u2026", + "_origin": "ast", + "community": 84, + "community_name": "test_extract_google_news.py", + "file_type": "rationale", + "norm_label": "testes unitarios e de integracao para o extrator de manchetes do google news....", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L1" + }, + { + "id": "tests_test_extract_google_news_rationale_112", + "label": "Valida o parsing do feed RSS, higieniza\u00e7\u00e3o de tags HTML e deduplica\u00e7\u00e3o.", + "_origin": "ast", + "community": 84, + "community_name": "test_extract_google_news.py", + "file_type": "rationale", + "norm_label": "valida o parsing do feed rss, higienizacao de tags html e deduplicacao.", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L112" + }, + { + "id": "tests_test_extract_google_news_rationale_139", + "label": "Valida fallback gracioso de URL quando n\u00e3o \u00e9 link do Google News ou em erro.", + "_origin": "ast", + "community": 84, + "community_name": "test_extract_google_news.py", + "file_type": "rationale", + "norm_label": "valida fallback gracioso de url quando nao e link do google news ou em erro.", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L139" + }, + { + "id": "tests_test_extract_google_news_rationale_151", + "label": "Valida resolu\u00e7\u00e3o bem-sucedida de URL do Google News para o portal destino.", + "_origin": "ast", + "community": 84, + "community_name": "test_extract_google_news.py", + "file_type": "rationale", + "norm_label": "valida resolucao bem-sucedida de url do google news para o portal destino.", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L151" + }, + { + "id": "tests_test_extract_google_news_rationale_292", + "label": "Valida E2E que o decodificador resolve uma URL real do Google News para o\u2026", + "_origin": "ast", + "community": 84, + "community_name": "test_extract_google_news.py", + "file_type": "rationale", + "norm_label": "valida e2e que o decodificador resolve uma url real do google news para o...", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L292" + }, + { + "id": "specs_002_google_news_extractor_tasks_implementation_for_user_story_1", + "label": "Implementation for User Story 1", + "_origin": "ast", + "community": 85, + "community_name": "Implementation Tasks: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "implementation for user story 1", + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L36" + }, + { + "id": "specs_002_google_news_extractor_tasks_implementation_for_user_story_2", + "label": "Implementation for User Story 2", + "_origin": "ast", + "community": 85, + "community_name": "Implementation Tasks: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "implementation for user story 2", + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L54" + }, + { + "id": "specs_002_google_news_extractor_tasks_implementation_for_user_story_3", + "label": "Implementation for User Story 3", + "_origin": "ast", + "community": 85, + "community_name": "Implementation Tasks: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "implementation for user story 3", + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L70" + }, + { + "id": "specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", + "label": "Implementation Tasks: Google News Headlines Extractor", + "_origin": "ast", + "community": 85, + "community_name": "Implementation Tasks: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "implementation tasks: google news headlines extractor", + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L1" + }, + { + "id": "specs_002_google_news_extractor_tasks_phase_1_setup_shared_infrastructure", + "label": "Phase 1: Setup (Shared Infrastructure)", + "_origin": "ast", + "community": 85, + "community_name": "Implementation Tasks: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "phase 1: setup (shared infrastructure)", + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L9" + }, + { + "id": "specs_002_google_news_extractor_tasks_phase_2_foundational_blocking_prerequisites", + "label": "Phase 2: Foundational (Blocking Prerequisites)", + "_origin": "ast", + "community": 85, + "community_name": "Implementation Tasks: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "phase 2: foundational (blocking prerequisites)", + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L18" + }, + { + "id": "specs_002_google_news_extractor_tasks_phase_3_user_story_1_extra\u00e7\u00e3o_b\u00e1sica_de_not\u00edcias_por_assunto_e_idioma_priority_p1_mvp", + "label": "Phase 3: User Story 1 - Extra\u00e7\u00e3o B\u00e1sica de Not\u00edcias por Assunto e Idioma (Priority: P1) \ud83c\udf1f MVP", + "_origin": "ast", + "community": 85, + "community_name": "Implementation Tasks: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "phase 3: user story 1 - extracao basica de noticias por assunto e idioma (priority: p1) \ud83c\udf1f mvp", + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L27" + }, + { + "id": "specs_002_google_news_extractor_tasks_phase_4_user_story_2_filtragem_regional_e_edi\u00e7\u00e3o_geogr\u00e1fica_priority_p2", + "label": "Phase 4: User Story 2 - Filtragem Regional e Edi\u00e7\u00e3o Geogr\u00e1fica (Priority: P2)", + "_origin": "ast", + "community": 85, + "community_name": "Implementation Tasks: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "phase 4: user story 2 - filtragem regional e edicao geografica (priority: p2)", + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L45" + }, + { + "id": "specs_002_google_news_extractor_tasks_phase_5_user_story_3_pagina\u00e7\u00e3o_e_controle_de_volume_de_resultados_priority_p3", + "label": "Phase 5: User Story 3 - Pagina\u00e7\u00e3o e Controle de Volume de Resultados (Priority: P3)", + "_origin": "ast", + "community": 85, + "community_name": "Implementation Tasks: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "phase 5: user story 3 - paginacao e controle de volume de resultados (priority: p3)", + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L61" + }, + { + "id": "specs_002_google_news_extractor_tasks_phase_6_url_resolution_headless_configuration_real_time_logging", + "label": "Phase 6: URL Resolution, Headless Configuration & Real-Time Logging", + "_origin": "ast", + "community": 85, + "community_name": "Implementation Tasks: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "phase 6: url resolution, headless configuration & real-time logging", + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L77" + }, + { + "id": "specs_002_google_news_extractor_tasks_phase_7_verification_e2e_testing", + "label": "Phase 7: Verification & E2E Testing", + "_origin": "ast", + "community": 85, + "community_name": "Implementation Tasks: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "phase 7: verification & e2e testing", + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L88" + }, + { + "id": "specs_002_google_news_extractor_tasks_tests_for_user_story_1", + "label": "Tests for User Story 1 \ud83e\uddea", + "_origin": "ast", + "community": 85, + "community_name": "Implementation Tasks: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "tests for user story 1 \ud83e\uddea", + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L33" + }, + { + "id": "specs_002_google_news_extractor_tasks_tests_for_user_story_2", + "label": "Tests for User Story 2 \ud83e\uddea", + "_origin": "ast", + "community": 85, + "community_name": "Implementation Tasks: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "tests for user story 2 \ud83e\uddea", + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L51" + }, + { + "id": "specs_002_google_news_extractor_tasks_tests_for_user_story_3", + "label": "Tests for User Story 3 \ud83e\uddea", + "_origin": "ast", + "community": 85, + "community_name": "Implementation Tasks: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "tests for user story 3 \ud83e\uddea", + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L67" + }, + { + "id": "specs_002_google_news_extractor_spec_clarifications", + "label": "Clarifications", + "_origin": "ast", + "community": 86, + "community_name": "Feature Specification: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "clarifications", + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L10" + }, + { + "id": "specs_002_google_news_extractor_spec_edge_cases", + "label": "Edge Cases", + "_origin": "ast", + "community": 86, + "community_name": "Feature Specification: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "edge cases", + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L64" + }, + { + "id": "specs_002_google_news_extractor_spec_feature_specification_google_news_headlines_extractor", + "label": "Feature Specification: Google News Headlines Extractor", + "_origin": "ast", + "community": 86, + "community_name": "Feature Specification: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "feature specification: google news headlines extractor", + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L1" + }, + { + "id": "specs_002_google_news_extractor_spec_functional_requirements", + "label": "Functional Requirements", + "_origin": "ast", + "community": 86, + "community_name": "Feature Specification: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "functional requirements", + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L76" + }, + { + "id": "specs_002_google_news_extractor_spec_requirements_mandatory", + "label": "Requirements *(mandatory)*", + "_origin": "ast", + "community": 86, + "community_name": "Feature Specification: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "requirements *(mandatory)*", + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L74" + }, + { + "id": "specs_002_google_news_extractor_spec_session_2026_08_20", + "label": "Session 2026-08-20", + "_origin": "ast", + "community": 86, + "community_name": "Feature Specification: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "session 2026-08-20", + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L12" + }, + { + "id": "specs_002_google_news_extractor_spec_success_criteria_mandatory", + "label": "Success Criteria *(mandatory)*", + "_origin": "ast", + "community": 86, + "community_name": "Feature Specification: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "success criteria *(mandatory)*", + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L92" + }, + { + "id": "specs_002_google_news_extractor_spec_user_scenarios_testing_mandatory", + "label": "User Scenarios & Testing *(mandatory)*", + "_origin": "ast", + "community": 86, + "community_name": "Feature Specification: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "user scenarios & testing *(mandatory)*", + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L20" + }, + { + "id": "specs_002_google_news_extractor_spec_user_story_1_extra\u00e7\u00e3o_b\u00e1sica_de_not\u00edcias_com_urls_finais_resolvidas_priority_p1_mvp", + "label": "User Story 1 - Extra\u00e7\u00e3o B\u00e1sica de Not\u00edcias com URLs Finais Resolvidas (Priority: P1) \ud83c\udf1f MVP", + "_origin": "ast", + "community": 86, + "community_name": "Feature Specification: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "user story 1 - extracao basica de noticias com urls finais resolvidas (priority: p1) \ud83c\udf1f mvp", + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L22" + }, + { + "id": "specs_002_google_news_extractor_spec_user_story_2_filtragem_regional_e_edi\u00e7\u00e3o_geogr\u00e1fica_priority_p2", + "label": "User Story 2 - Filtragem Regional e Edi\u00e7\u00e3o Geogr\u00e1fica (Priority: P2)", + "_origin": "ast", + "community": 86, + "community_name": "Feature Specification: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "user story 2 - filtragem regional e edicao geografica (priority: p2)", + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L36" + }, + { + "id": "specs_002_google_news_extractor_spec_user_story_3_pagina\u00e7\u00e3o_exporta\u00e7\u00e3o_em_arquivo_e_feedback_visual_priority_p3", + "label": "User Story 3 - Pagina\u00e7\u00e3o, Exporta\u00e7\u00e3o em Arquivo e Feedback Visual (Priority: P3)", + "_origin": "ast", + "community": 86, + "community_name": "Feature Specification: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "user story 3 - paginacao, exportacao em arquivo e feedback visual (priority: p3)", + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L50" + }, + { + "id": "specs_002_google_news_extractor_quickstart", + "label": "002-google-news-extractor/quickstart.md", + "_origin": "ast", + "community": 87, + "community_name": "2. Cen\u00e1rios Pr\u00e1ticos de Uso", + "file_type": "document", + "node_kind": "page", + "norm_label": "002-google-news-extractor/quickstart.md", + "source_file": "specs/002-google-news-extractor/quickstart.md", + "source_location": "L1" + }, + { + "id": "specs_002_google_news_extractor_quickstart_1_pr\u00e9_requisitos_e_instala\u00e7\u00e3o", + "label": "1. Pr\u00e9-requisitos e Instala\u00e7\u00e3o", + "_origin": "ast", + "community": 87, + "community_name": "2. Cen\u00e1rios Pr\u00e1ticos de Uso", + "file_type": "document", + "node_kind": "heading", + "norm_label": "1. pre-requisitos e instalacao", + "source_file": "specs/002-google-news-extractor/quickstart.md", + "source_location": "L7" + }, + { + "id": "specs_002_google_news_extractor_quickstart_2_cen\u00e1rios_pr\u00e1ticos_de_uso", + "label": "2. Cen\u00e1rios Pr\u00e1ticos de Uso", + "_origin": "ast", + "community": 87, + "community_name": "2. Cen\u00e1rios Pr\u00e1ticos de Uso", + "file_type": "document", + "node_kind": "heading", + "norm_label": "2. cenarios praticos de uso", + "source_file": "specs/002-google-news-extractor/quickstart.md", + "source_location": "L21" + }, + { + "id": "specs_002_google_news_extractor_quickstart_3_valida\u00e7\u00e3o_dos_testes_automatizados_e_linter", + "label": "3. Valida\u00e7\u00e3o dos Testes Automatizados e Linter", + "_origin": "ast", + "community": 87, + "community_name": "2. Cen\u00e1rios Pr\u00e1ticos de Uso", + "file_type": "document", + "node_kind": "heading", + "norm_label": "3. validacao dos testes automatizados e linter", + "source_file": "specs/002-google-news-extractor/quickstart.md", + "source_location": "L69" + }, + { + "id": "specs_002_google_news_extractor_quickstart_cen\u00e1rio_1_river_plate_argentina_espanhol_2_p\u00e1ginas_salvar_em_arquivo", + "label": "Cen\u00e1rio 1: River Plate \u2014 Argentina (Espanhol / 2 P\u00e1ginas / Salvar em Arquivo)", + "_origin": "ast", + "community": 87, + "community_name": "2. Cen\u00e1rios Pr\u00e1ticos de Uso", + "file_type": "document", + "node_kind": "heading", + "norm_label": "cenario 1: river plate \u2014 argentina (espanhol / 2 paginas / salvar em arquivo)", + "source_file": "specs/002-google-news-extractor/quickstart.md", + "source_location": "L23" + }, + { + "id": "specs_002_google_news_extractor_quickstart_cen\u00e1rio_2_cruzeiro_brasil_portugu\u00eas_formatado_no_terminal", + "label": "Cen\u00e1rio 2: Cruzeiro \u2014 Brasil (Portugu\u00eas / Formatado no Terminal)", + "_origin": "ast", + "community": 87, + "community_name": "2. Cen\u00e1rios Pr\u00e1ticos de Uso", + "file_type": "document", + "node_kind": "heading", + "norm_label": "cenario 2: cruzeiro \u2014 brasil (portugues / formatado no terminal)", + "source_file": "specs/002-google-news-extractor/quickstart.md", + "source_location": "L39" + }, + { + "id": "specs_002_google_news_extractor_quickstart_cen\u00e1rio_3_f\u00f3rmula_1_reino_unido_ingl\u00eas", + "label": "Cen\u00e1rio 3: F\u00f3rmula 1 \u2014 Reino Unido (Ingl\u00eas)", + "_origin": "ast", + "community": 87, + "community_name": "2. Cen\u00e1rios Pr\u00e1ticos de Uso", + "file_type": "document", + "node_kind": "heading", + "norm_label": "cenario 3: formula 1 \u2014 reino unido (ingles)", + "source_file": "specs/002-google-news-extractor/quickstart.md", + "source_location": "L47" + }, + { + "id": "specs_002_google_news_extractor_quickstart_cen\u00e1rio_4_integra\u00e7\u00e3o_em_pipeline_com_jq_modo_silencioso", + "label": "Cen\u00e1rio 4: Integra\u00e7\u00e3o em Pipeline com `jq` (Modo Silencioso)", + "_origin": "ast", + "community": 87, + "community_name": "2. Cen\u00e1rios Pr\u00e1ticos de Uso", + "file_type": "document", + "node_kind": "heading", + "norm_label": "cenario 4: integracao em pipeline com `jq` (modo silencioso)", + "source_file": "specs/002-google-news-extractor/quickstart.md", + "source_location": "L55" + }, + { + "id": "specs_002_google_news_extractor_quickstart_cen\u00e1rio_5_extra\u00e7\u00e3o_r\u00e1pida_com_links_brutos_sem_resolu\u00e7\u00e3o_de_urls", + "label": "Cen\u00e1rio 5: Extra\u00e7\u00e3o R\u00e1pida com Links Brutos (Sem Resolu\u00e7\u00e3o de URLs)", + "_origin": "ast", + "community": 87, + "community_name": "2. Cen\u00e1rios Pr\u00e1ticos de Uso", + "file_type": "document", + "node_kind": "heading", + "norm_label": "cenario 5: extracao rapida com links brutos (sem resolucao de urls)", + "source_file": "specs/002-google-news-extractor/quickstart.md", + "source_location": "L62" + }, + { + "id": "specs_002_google_news_extractor_quickstart_quickstart_google_news_headlines_extractor", + "label": "Quickstart: Google News Headlines Extractor", + "_origin": "ast", + "community": 87, + "community_name": "2. Cen\u00e1rios Pr\u00e1ticos de Uso", + "file_type": "document", + "node_kind": "heading", + "norm_label": "quickstart: google news headlines extractor", + "source_file": "specs/002-google-news-extractor/quickstart.md", + "source_location": "L1" + }, + { + "id": "specs_002_google_news_extractor_plan_architecture_pipeline", + "label": "Architecture & Pipeline", + "_origin": "ast", + "community": 88, + "community_name": "Implementation Plan: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "architecture & pipeline", + "source_file": "specs/002-google-news-extractor/plan.md", + "source_location": "L28" + }, + { + "id": "specs_002_google_news_extractor_plan_documentation_this_feature", + "label": "Documentation (this feature)", + "_origin": "ast", + "community": 88, + "community_name": "Implementation Plan: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "documentation (this feature)", + "source_file": "specs/002-google-news-extractor/plan.md", + "source_location": "L47" + }, + { + "id": "specs_002_google_news_extractor_plan_implementation_plan_google_news_headlines_extractor", + "label": "Implementation Plan: Google News Headlines Extractor", + "_origin": "ast", + "community": 88, + "community_name": "Implementation Plan: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "implementation plan: google news headlines extractor", + "source_file": "specs/002-google-news-extractor/plan.md", + "source_location": "L1" + }, + { + "id": "specs_002_google_news_extractor_plan_project_structure", + "label": "Project Structure", + "_origin": "ast", + "community": 88, + "community_name": "Implementation Plan: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "project structure", + "source_file": "specs/002-google-news-extractor/plan.md", + "source_location": "L45" + }, + { + "id": "specs_002_google_news_extractor_plan_source_code", + "label": "Source Code", + "_origin": "ast", + "community": 88, + "community_name": "Implementation Plan: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "source code", + "source_file": "specs/002-google-news-extractor/plan.md", + "source_location": "L63" + }, + { + "id": "specs_002_google_news_extractor_plan_summary", + "label": "Summary", + "_origin": "ast", + "community": 88, + "community_name": "Implementation Plan: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "summary", + "source_file": "specs/002-google-news-extractor/plan.md", + "source_location": "L7" + }, + { + "id": "specs_002_google_news_extractor_plan_technical_context", + "label": "Technical Context", + "_origin": "ast", + "community": 88, + "community_name": "Implementation Plan: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "technical context", + "source_file": "specs/002-google-news-extractor/plan.md", + "source_location": "L11" + }, + { + "id": "scripts_init", + "label": "scripts/__init__.py", + "_origin": "ast", + "community": 89, + "community_name": "scripts/__init__.py", + "file_type": "code", + "norm_label": "scripts/__init__.py", + "source_file": "scripts/__init__.py", + "source_location": "L1" + }, + { + "id": "scripts_init_rationale_1", + "label": "M\u00f3dulo de scripts utilit\u00e1rios do projeto.", + "_origin": "ast", + "community": 89, + "community_name": "scripts/__init__.py", + "file_type": "rationale", + "norm_label": "modulo de scripts utilitarios do projeto.", + "source_file": "scripts/__init__.py", + "source_location": "L1" + }, { "id": "agents_skills_speckit_specify_skill", "label": "speckit-specify/SKILL.md", @@ -7154,6 +8733,875 @@ "norm_label": "user input", "source_file": ".agents/skills/speckit-specify/SKILL.md", "source_location": "L11" + }, + { + "id": "scripts_extract_google_news_rationale_33", + "label": "Value Object com par\u00e2metros de busca validados.", + "_origin": "ast", + "community": 90, + "community_name": "SearchQuery", + "file_type": "rationale", + "norm_label": "value object com parametros de busca validados.", + "source_file": "scripts/extract_google_news.py", + "source_location": "L33" + }, + { + "id": "tests_test_extract_google_news_rationale_189", + "label": "Valida a consolida\u00e7\u00e3o do ExtractionResult a partir da busca mockada com URLs\u2026", + "_origin": "ast", + "community": 90, + "community_name": "SearchQuery", + "file_type": "rationale", + "norm_label": "valida a consolidacao do extractionresult a partir da busca mockada com urls...", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L189" + }, + { + "id": "tests_test_extract_google_news_rationale_87", + "label": "Valida as regras de neg\u00f3cio e limites de SearchQuery.", + "_origin": "ast", + "community": 90, + "community_name": "SearchQuery", + "file_type": "rationale", + "norm_label": "valida as regras de negocio e limites de searchquery.", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L87" + }, + { + "id": "specs_002_google_news_extractor_research", + "label": "002-google-news-extractor/research.md", + "_origin": "ast", + "community": 91, + "community_name": "1. Technical Decisions & Tradeoffs", + "file_type": "document", + "node_kind": "page", + "norm_label": "002-google-news-extractor/research.md", + "source_file": "specs/002-google-news-extractor/research.md", + "source_location": "L1" + }, + { + "id": "specs_002_google_news_extractor_research_1_technical_decisions_tradeoffs", + "label": "1. Technical Decisions & Tradeoffs", + "_origin": "ast", + "community": 91, + "community_name": "1. Technical Decisions & Tradeoffs", + "file_type": "document", + "node_kind": "heading", + "norm_label": "1. technical decisions & tradeoffs", + "source_file": "specs/002-google-news-extractor/research.md", + "source_location": "L3" + }, + { + "id": "specs_002_google_news_extractor_research_decision_1_motor_de_requisi\u00e7\u00e3o_e_scraping_com_foxcape_em_modo_headless", + "label": "Decision 1: Motor de Requisi\u00e7\u00e3o e Scraping com `foxcape` em Modo Headless", + "_origin": "ast", + "community": 91, + "community_name": "1. Technical Decisions & Tradeoffs", + "file_type": "document", + "node_kind": "heading", + "norm_label": "decision 1: motor de requisicao e scraping com `foxcape` em modo headless", + "source_file": "specs/002-google-news-extractor/research.md", + "source_location": "L5" + }, + { + "id": "specs_002_google_news_extractor_research_decision_2_endpoint_rss_do_google_news_vs_scraping_de_dom", + "label": "Decision 2: Endpoint RSS do Google News vs. Scraping de DOM", + "_origin": "ast", + "community": 91, + "community_name": "1. Technical Decisions & Tradeoffs", + "file_type": "document", + "node_kind": "heading", + "norm_label": "decision 2: endpoint rss do google news vs. scraping de dom", + "source_file": "specs/002-google-news-extractor/research.md", + "source_location": "L15" + }, + { + "id": "specs_002_google_news_extractor_research_decision_3_mapeamento_de_idioma_e_locale_hl_gl_ceid", + "label": "Decision 3: Mapeamento de Idioma e Locale (`hl`, `gl`, `ceid`)", + "_origin": "ast", + "community": 91, + "community_name": "1. Technical Decisions & Tradeoffs", + "file_type": "document", + "node_kind": "heading", + "norm_label": "decision 3: mapeamento de idioma e locale (`hl`, `gl`, `ceid`)", + "source_file": "specs/002-google-news-extractor/research.md", + "source_location": "L23" + }, + { + "id": "specs_002_google_news_extractor_research_decision_4_resolu\u00e7\u00e3o_de_urls_do_google_news_via_googlenewsdecoder", + "label": "Decision 4: Resolu\u00e7\u00e3o de URLs do Google News via `googlenewsdecoder`", + "_origin": "ast", + "community": 91, + "community_name": "1. Technical Decisions & Tradeoffs", + "file_type": "document", + "node_kind": "heading", + "norm_label": "decision 4: resolucao de urls do google news via `googlenewsdecoder`", + "source_file": "specs/002-google-news-extractor/research.md", + "source_location": "L36" + }, + { + "id": "specs_002_google_news_extractor_research_decision_5_logging_em_tempo_real_no_stderr_e_segrega\u00e7\u00e3o_de_streams", + "label": "Decision 5: Logging em Tempo Real no `stderr` e Segrega\u00e7\u00e3o de Streams", + "_origin": "ast", + "community": 91, + "community_name": "1. Technical Decisions & Tradeoffs", + "file_type": "document", + "node_kind": "heading", + "norm_label": "decision 5: logging em tempo real no `stderr` e segregacao de streams", + "source_file": "specs/002-google-news-extractor/research.md", + "source_location": "L45" + }, + { + "id": "specs_002_google_news_extractor_research_research_google_news_headlines_extractor", + "label": "Research: Google News Headlines Extractor", + "_origin": "ast", + "community": 91, + "community_name": "1. Technical Decisions & Tradeoffs", + "file_type": "document", + "node_kind": "heading", + "norm_label": "research: google news headlines extractor", + "source_file": "specs/002-google-news-extractor/research.md", + "source_location": "L1" + }, + { + "id": "specs_002_google_news_extractor_checklists_readiness_cli_interface_parameter_contracts", + "label": "CLI Interface & Parameter Contracts", + "_origin": "ast", + "community": 92, + "community_name": "General Readiness Checklist: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "cli interface & parameter contracts", + "source_file": "specs/002-google-news-extractor/checklists/readiness.md", + "source_location": "L12" + }, + { + "id": "specs_002_google_news_extractor_checklists_readiness_data_sanitization_article_extraction", + "label": "Data Sanitization & Article Extraction", + "_origin": "ast", + "community": 92, + "community_name": "General Readiness Checklist: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "data sanitization & article extraction", + "source_file": "specs/002-google-news-extractor/checklists/readiness.md", + "source_location": "L27" + }, + { + "id": "specs_002_google_news_extractor_checklists_readiness_error_handling_edge_cases", + "label": "Error Handling & Edge Cases", + "_origin": "ast", + "community": 92, + "community_name": "General Readiness Checklist: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "error handling & edge cases", + "source_file": "specs/002-google-news-extractor/checklists/readiness.md", + "source_location": "L35" + }, + { + "id": "specs_002_google_news_extractor_checklists_readiness_general_readiness_checklist_google_news_headlines_extractor", + "label": "General Readiness Checklist: Google News Headlines Extractor", + "_origin": "ast", + "community": 92, + "community_name": "General Readiness Checklist: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "general readiness checklist: google news headlines extractor", + "source_file": "specs/002-google-news-extractor/checklists/readiness.md", + "source_location": "L1" + }, + { + "id": "specs_002_google_news_extractor_checklists_readiness_non_functional_operational_readiness", + "label": "Non-Functional & Operational Readiness", + "_origin": "ast", + "community": 92, + "community_name": "General Readiness Checklist: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "non-functional & operational readiness", + "source_file": "specs/002-google-news-extractor/checklists/readiness.md", + "source_location": "L42" + }, + { + "id": "specs_002_google_news_extractor_checklists_readiness_notes", + "label": "Notes", + "_origin": "ast", + "community": 92, + "community_name": "General Readiness Checklist: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "notes", + "source_file": "specs/002-google-news-extractor/checklists/readiness.md", + "source_location": "L48" + }, + { + "id": "specs_002_google_news_extractor_checklists_readiness_scraping_engine_feed_mapping", + "label": "Scraping Engine & Feed Mapping", + "_origin": "ast", + "community": 92, + "community_name": "General Readiness Checklist: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "scraping engine & feed mapping", + "source_file": "specs/002-google-news-extractor/checklists/readiness.md", + "source_location": "L20" + }, + { + "id": "specs_002_google_news_extractor_data_model", + "label": "002-google-news-extractor/data-model.md", + "_origin": "ast", + "community": 93, + "community_name": "1. Entidades de Dom\u00ednio & DTOs", + "file_type": "document", + "node_kind": "page", + "norm_label": "002-google-news-extractor/data-model.md", + "source_file": "specs/002-google-news-extractor/data-model.md", + "source_location": "L1" + }, + { + "id": "specs_002_google_news_extractor_data_model_1_1_searchquery_par\u00e2metros_da_busca", + "label": "1.1 SearchQuery (Par\u00e2metros da Busca)", + "_origin": "ast", + "community": 93, + "community_name": "1. Entidades de Dom\u00ednio & DTOs", + "file_type": "document", + "node_kind": "heading", + "norm_label": "1.1 searchquery (parametros da busca)", + "source_file": "specs/002-google-news-extractor/data-model.md", + "source_location": "L5" + }, + { + "id": "specs_002_google_news_extractor_data_model_1_2_newsarticle_item_de_not\u00edcia", + "label": "1.2 NewsArticle (Item de Not\u00edcia)", + "_origin": "ast", + "community": 93, + "community_name": "1. Entidades de Dom\u00ednio & DTOs", + "file_type": "document", + "node_kind": "heading", + "norm_label": "1.2 newsarticle (item de noticia)", + "source_file": "specs/002-google-news-extractor/data-model.md", + "source_location": "L15" + }, + { + "id": "specs_002_google_news_extractor_data_model_1_3_extractionresult_sa\u00edda_estruturada_consolidada", + "label": "1.3 ExtractionResult (Sa\u00edda Estruturada Consolidada)", + "_origin": "ast", + "community": 93, + "community_name": "1. Entidades de Dom\u00ednio & DTOs", + "file_type": "document", + "node_kind": "heading", + "norm_label": "1.3 extractionresult (saida estruturada consolidada)", + "source_file": "specs/002-google-news-extractor/data-model.md", + "source_location": "L26" + }, + { + "id": "specs_002_google_news_extractor_data_model_1_entidades_de_dom\u00ednio_dtos", + "label": "1. Entidades de Dom\u00ednio & DTOs", + "_origin": "ast", + "community": 93, + "community_name": "1. Entidades de Dom\u00ednio & DTOs", + "file_type": "document", + "node_kind": "heading", + "norm_label": "1. entidades de dominio & dtos", + "source_file": "specs/002-google-news-extractor/data-model.md", + "source_location": "L3" + }, + { + "id": "specs_002_google_news_extractor_data_model_2_esquema_json_de_sa\u00edda", + "label": "2. Esquema JSON de Sa\u00edda", + "_origin": "ast", + "community": 93, + "community_name": "1. Entidades de Dom\u00ednio & DTOs", + "file_type": "document", + "node_kind": "heading", + "norm_label": "2. esquema json de saida", + "source_file": "specs/002-google-news-extractor/data-model.md", + "source_location": "L41" + }, + { + "id": "specs_002_google_news_extractor_data_model_data_model_google_news_headlines_extractor", + "label": "Data Model: Google News Headlines Extractor", + "_origin": "ast", + "community": 93, + "community_name": "1. Entidades de Dom\u00ednio & DTOs", + "file_type": "document", + "node_kind": "heading", + "norm_label": "data model: google news headlines extractor", + "source_file": "specs/002-google-news-extractor/data-model.md", + "source_location": "L1" + }, + { + "id": "specs_002_google_news_extractor_checklists_requirements", + "label": "002-google-news-extractor/checklists/requirements.md", + "_origin": "ast", + "community": 94, + "community_name": "Specification Quality Checklist: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "page", + "norm_label": "002-google-news-extractor/checklists/requirements.md", + "source_file": "specs/002-google-news-extractor/checklists/requirements.md", + "source_location": "L1" + }, + { + "id": "specs_002_google_news_extractor_checklists_requirements_content_quality", + "label": "Content Quality", + "_origin": "ast", + "community": 94, + "community_name": "Specification Quality Checklist: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "content quality", + "source_file": "specs/002-google-news-extractor/checklists/requirements.md", + "source_location": "L7" + }, + { + "id": "specs_002_google_news_extractor_checklists_requirements_feature_readiness", + "label": "Feature Readiness", + "_origin": "ast", + "community": 94, + "community_name": "Specification Quality Checklist: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "feature readiness", + "source_file": "specs/002-google-news-extractor/checklists/requirements.md", + "source_location": "L25" + }, + { + "id": "specs_002_google_news_extractor_checklists_requirements_notes", + "label": "Notes", + "_origin": "ast", + "community": 94, + "community_name": "Specification Quality Checklist: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "notes", + "source_file": "specs/002-google-news-extractor/checklists/requirements.md", + "source_location": "L32" + }, + { + "id": "specs_002_google_news_extractor_checklists_requirements_requirement_completeness", + "label": "Requirement Completeness", + "_origin": "ast", + "community": 94, + "community_name": "Specification Quality Checklist: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "requirement completeness", + "source_file": "specs/002-google-news-extractor/checklists/requirements.md", + "source_location": "L14" + }, + { + "id": "specs_002_google_news_extractor_checklists_requirements_specification_quality_checklist_google_news_headlines_extractor", + "label": "Specification Quality Checklist: Google News Headlines Extractor", + "_origin": "ast", + "community": 94, + "community_name": "Specification Quality Checklist: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "specification quality checklist: google news headlines extractor", + "source_file": "specs/002-google-news-extractor/checklists/requirements.md", + "source_location": "L1" + }, + { + "id": "specs_002_google_news_extractor_contracts_cli_contract_1_comando_e_argumentos", + "label": "1. Comando e Argumentos", + "_origin": "ast", + "community": 95, + "community_name": "CLI Contract: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "1. comando e argumentos", + "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", + "source_location": "L3" + }, + { + "id": "specs_002_google_news_extractor_contracts_cli_contract_2_c\u00f3digos_de_sa\u00edda_exit_codes", + "label": "2. C\u00f3digos de Sa\u00edda (Exit Codes)", + "_origin": "ast", + "community": 95, + "community_name": "CLI Contract: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "2. codigos de saida (exit codes)", + "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", + "source_location": "L25" + }, + { + "id": "specs_002_google_news_extractor_contracts_cli_contract_3_protocolo_de_streams_stdout_stderr", + "label": "3. Protocolo de Streams (Stdout / Stderr)", + "_origin": "ast", + "community": 95, + "community_name": "CLI Contract: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "3. protocolo de streams (stdout / stderr)", + "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", + "source_location": "L35" + }, + { + "id": "specs_002_google_news_extractor_contracts_cli_contract_argumentos_de_linha_de_comando", + "label": "Argumentos de Linha de Comando", + "_origin": "ast", + "community": 95, + "community_name": "CLI Contract: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "argumentos de linha de comando", + "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", + "source_location": "L10" + }, + { + "id": "specs_002_google_news_extractor_contracts_cli_contract_cli_contract_google_news_headlines_extractor", + "label": "CLI Contract: Google News Headlines Extractor", + "_origin": "ast", + "community": 95, + "community_name": "CLI Contract: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "cli contract: google news headlines extractor", + "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", + "source_location": "L1" + }, + { + "id": "specs_002_google_news_extractor_contracts_cli_contract_sintaxe", + "label": "Sintaxe", + "_origin": "ast", + "community": 95, + "community_name": "CLI Contract: Google News Headlines Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "sintaxe", + "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", + "source_location": "L5" + }, + { + "id": "specs_002_google_news_extractor_checklists_readiness", + "label": "readiness.md", + "_origin": "ast", + "community": 96, + "community_name": "readiness.md", + "file_type": "document", + "node_kind": "page", + "norm_label": "readiness.md", + "source_file": "specs/002-google-news-extractor/checklists/readiness.md", + "source_location": "L1" + }, + { + "id": "specs_002_google_news_extractor_contracts_cli_contract", + "label": "cli_contract.md", + "_origin": "ast", + "community": 96, + "community_name": "readiness.md", + "file_type": "document", + "node_kind": "page", + "norm_label": "cli_contract.md", + "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", + "source_location": "L1" + }, + { + "id": "specs_002_google_news_extractor_plan", + "label": "002-google-news-extractor/plan.md", + "_origin": "ast", + "community": 96, + "community_name": "readiness.md", + "file_type": "document", + "node_kind": "page", + "norm_label": "002-google-news-extractor/plan.md", + "source_file": "specs/002-google-news-extractor/plan.md", + "source_location": "L1" + }, + { + "id": "specs_002_google_news_extractor_spec", + "label": "002-google-news-extractor/spec.md", + "_origin": "ast", + "community": 96, + "community_name": "readiness.md", + "file_type": "document", + "node_kind": "page", + "norm_label": "002-google-news-extractor/spec.md", + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L1" + }, + { + "id": "specs_002_google_news_extractor_tasks", + "label": "002-google-news-extractor/tasks.md", + "_origin": "ast", + "community": 96, + "community_name": "readiness.md", + "file_type": "document", + "node_kind": "page", + "norm_label": "002-google-news-extractor/tasks.md", + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L1" + }, + { + "id": "readme", + "label": "README.md", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "page", + "norm_label": "readme.md", + "source_file": "README.md", + "source_location": "L1" + }, + { + "id": "readme_1_classificador_de_conte\u00fado_e_iner\u00eancia_nlp_llm_ecp", + "label": "1. \ud83e\udde0 Classificador de Conte\u00fado e Iner\u00eancia (NLP / LLM / ECP)", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "1. \ud83e\udde0 classificador de conteudo e inerencia (nlp / llm / ecp)", + "source_file": "README.md", + "source_location": "L74" + }, + { + "id": "readme_1_clonar_o_reposit\u00f3rio_e_criar_ambiente_virtual", + "label": "1. Clonar o Reposit\u00f3rio e Criar Ambiente Virtual", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "1. clonar o repositorio e criar ambiente virtual", + "source_file": "README.md", + "source_location": "L45" + }, + { + "id": "readme_1_river_plate_argentina_espanhol_2_p\u00e1ginas_salvar_em_arquivo", + "label": "1. River Plate (Argentina / Espanhol / 2 P\u00e1ginas / Salvar em Arquivo)", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "1. river plate (argentina / espanhol / 2 paginas / salvar em arquivo)", + "source_file": "README.md", + "source_location": "L180" + }, + { + "id": "readme_2_cruzeiro_brasil_portugu\u00eas_formatado_no_terminal", + "label": "2. Cruzeiro (Brasil / Portugu\u00eas / Formatado no Terminal)", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "2. cruzeiro (brasil / portugues / formatado no terminal)", + "source_file": "README.md", + "source_location": "L194" + }, + { + "id": "readme_2_extrator_de_manchetes_do_google_news", + "label": "2. \ud83d\udcf0 Extrator de Manchetes do Google News", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "2. \ud83d\udcf0 extrator de manchetes do google news", + "source_file": "README.md", + "source_location": "L151" + }, + { + "id": "readme_2_instalar_depend\u00eancias", + "label": "2. Instalar Depend\u00eancias", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "2. instalar dependencias", + "source_file": "README.md", + "source_location": "L58" + }, + { + "id": "readme_3_baixar_bin\u00e1rios_do_navegador_stealth_camoufox", + "label": "3. Baixar Bin\u00e1rios do Navegador Stealth (Camoufox)", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "3. baixar binarios do navegador stealth (camoufox)", + "source_file": "README.md", + "source_location": "L64" + }, + { + "id": "readme_3_f\u00f3rmula_1_inglaterra_ingl\u00eas", + "label": "3. F\u00f3rmula 1 (Inglaterra / Ingl\u00eas)", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "3. formula 1 (inglaterra / ingles)", + "source_file": "README.md", + "source_location": "L199" + }, + { + "id": "readme_4_filtragem_com_jq_em_modo_silencioso", + "label": "4. Filtragem com `jq` em Modo Silencioso", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "4. filtragem com `jq` em modo silencioso", + "source_file": "README.md", + "source_location": "L204" + }, + { + "id": "readme_argumentos_e_flags_de_linha_de_comando", + "label": "Argumentos e Flags de Linha de Comando", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "argumentos e flags de linha de comando", + "source_file": "README.md", + "source_location": "L165" + }, + { + "id": "readme_arquitetura_de_classifica\u00e7\u00e3o_em_3_tiers", + "label": "Arquitetura de Classifica\u00e7\u00e3o em 3 Tiers", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "arquitetura de classificacao em 3 tiers", + "source_file": "README.md", + "source_location": "L82" + }, + { + "id": "readme_categorias_de_decis\u00e3o", + "label": "Categorias de Decis\u00e3o", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "categorias de decisao", + "source_file": "README.md", + "source_location": "L103" + }, + { + "id": "readme_diferenciais_t\u00e9cnicos", + "label": "Diferenciais T\u00e9cnicos", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "diferenciais tecnicos", + "source_file": "README.md", + "source_location": "L157" + }, + { + "id": "readme_estrutura_do_projeto", + "label": "\ud83d\udcc1 Estrutura do Projeto", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "\ud83d\udcc1 estrutura do projeto", + "source_file": "README.md", + "source_location": "L211" + }, + { + "id": "readme_exemplo_de_ecp_snapshot_ecp_sample_json", + "label": "Exemplo de ECP Snapshot (`ecp_sample.json`):", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "exemplo de ecp snapshot (`ecp_sample.json`):", + "source_file": "README.md", + "source_location": "L114" + }, + { + "id": "readme_exemplos_de_uso_cli", + "label": "Exemplos de Uso CLI", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "exemplos de uso cli", + "source_file": "README.md", + "source_location": "L136" + }, + { + "id": "readme_exemplos_pr\u00e1ticos_de_uso", + "label": "Exemplos Pr\u00e1ticos de Uso", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "exemplos praticos de uso", + "source_file": "README.md", + "source_location": "L178" + }, + { + "id": "readme_formato_do_ecp_snapshot_e_markdown", + "label": "Formato do ECP Snapshot e Markdown", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "formato do ecp snapshot e markdown", + "source_file": "README.md", + "source_location": "L112" + }, + { + "id": "readme_instala\u00e7\u00e3o_e_setup", + "label": "\u2699\ufe0f Instala\u00e7\u00e3o e Setup", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "\u2699\ufe0f instalacao e setup", + "source_file": "README.md", + "source_location": "L43" + }, + { + "id": "readme_licen\u00e7a", + "label": "\ud83d\udcc4 Licen\u00e7a", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "\ud83d\udcc4 licenca", + "source_file": "README.md", + "source_location": "L259" + }, + { + "id": "readme_o_que_\u00e9_e_como_funciona", + "label": "O que \u00e9 e Como Funciona", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "o que e e como funciona", + "source_file": "README.md", + "source_location": "L76" + }, + { + "id": "readme_o_que_\u00e9_e_como_funciona_153", + "label": "O que \u00e9 e Como Funciona", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "o que e e como funciona", + "source_file": "README.md", + "source_location": "L153" + }, + { + "id": "readme_tabela_de_conte\u00fados", + "label": "\ud83d\udcd1 Tabela de Conte\u00fados", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "\ud83d\udcd1 tabela de conteudos", + "source_file": "README.md", + "source_location": "L13" + }, + { + "id": "readme_testes_e_qualidade_de_c\u00f3digo", + "label": "\ud83e\uddea Testes e Qualidade de C\u00f3digo", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "\ud83e\uddea testes e qualidade de codigo", + "source_file": "README.md", + "source_location": "L238" + }, + { + "id": "readme_textnlpclassifierapp", + "label": "\ud83e\udde0 TextNLPClassifierApp", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "\ud83e\udde0 textnlpclassifierapp", + "source_file": "README.md", + "source_location": "L1" + }, + { + "id": "readme_vis\u00e3o_geral", + "label": "\ud83c\udf1f Vis\u00e3o Geral", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "\ud83c\udf1f visao geral", + "source_file": "README.md", + "source_location": "L34" + }, + { + "id": "argumentparser", + "label": "ArgumentParser", + "_origin": "ast", + "community": 98, + "community_name": "build_parser", + "file_type": "code", + "norm_label": "argumentparser", + "source_file": "", + "source_location": "" + }, + { + "id": "scripts_extract_google_news_rationale_339", + "label": "Cria e configura o parser de argumentos CLI.", + "_origin": "ast", + "community": 98, + "community_name": "build_parser", + "file_type": "rationale", + "norm_label": "cria e configura o parser de argumentos cli.", + "source_file": "scripts/extract_google_news.py", + "source_location": "L339" + }, + { + "id": "tests_test_extract_google_news_py_fixture", + "label": "fixture", + "_origin": "ast", + "community": 99, + "community_name": "sample_rss_xml", + "file_type": "code", + "norm_label": "fixture", + "source_file": "", + "source_location": "" + }, + { + "id": "tests_test_extract_google_news_rationale_33", + "label": "Fixture que fornece o conte\u00fado do XML de exemplo para testes offline.", + "_origin": "ast", + "community": 99, + "community_name": "sample_rss_xml", + "file_type": "rationale", + "norm_label": "fixture que fornece o conteudo do xml de exemplo para testes offline.", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L33" } ], "links": [ @@ -7217,6 +9665,126 @@ "source_location": "L172", "weight": 1.0 }, + { + "source": "scripts_extract_google_news_extract_google_news", + "target": "scripts_extract_google_news_get_hl_gl_ceid", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/extract_google_news.py", + "source_location": "L307", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_extract_google_news", + "target": "scripts_extract_google_news_fetch_rss_content", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/extract_google_news.py", + "source_location": "L316", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_extract_google_news", + "target": "scripts_extract_google_news_parse_google_news_rss", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/extract_google_news.py", + "source_location": "L320", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_extract_google_news", + "target": "scripts_extract_google_news_resolve_articles_urls", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/extract_google_news.py", + "source_location": "L325", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_extract_google_news", + "target": "scripts_extract_google_news_extractionresult", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/extract_google_news.py", + "source_location": "L327", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_main", + "target": "scripts_extract_google_news_build_parser", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/extract_google_news.py", + "source_location": "L418", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_main", + "target": "scripts_extract_google_news_searchquery", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/extract_google_news.py", + "source_location": "L422", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_main", + "target": "scripts_extract_google_news_extract_google_news", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/extract_google_news.py", + "source_location": "L437", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_parse_google_news_rss", + "target": "scripts_extract_google_news_normalize_text_for_comparison", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/extract_google_news.py", + "source_location": "L190", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_parse_google_news_rss", + "target": "scripts_extract_google_news_newsarticle", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/extract_google_news.py", + "source_location": "L197", + "weight": 1.0 + }, { "source": "src_adapters_embeddings_localembeddingsadapter_evaluate_similarity", "target": "src_adapters_embeddings_localembeddingsadapter_is_available", @@ -7733,6 +10301,234 @@ "source_location": "L22", "weight": 1.0 }, + { + "source": "tests_test_extract_google_news_test_cli_empty_query_error", + "target": "scripts_extract_google_news_main", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L265", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_test_cli_execution_file_output", + "target": "scripts_extract_google_news_main", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L255", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_test_cli_execution_stdout", + "target": "scripts_extract_google_news_main", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L228", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_test_cli_network_error_handling", + "target": "scripts_extract_google_news_main", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L278", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_test_e2e_cli_live_file_output", + "target": "scripts_extract_google_news_main", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L331", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_test_e2e_extract_google_news_live_pipeline", + "target": "scripts_extract_google_news_searchquery", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L314", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_test_e2e_extract_google_news_live_pipeline", + "target": "scripts_extract_google_news_extract_google_news", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L315", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_test_e2e_resolve_real_google_news_url", + "target": "scripts_extract_google_news_resolve_article_url", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L303", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", + "target": "scripts_extract_google_news_searchquery", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L190", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", + "target": "scripts_extract_google_news_extract_google_news", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L204", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", + "target": "scripts_extract_google_news_get_hl_gl_ceid", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L39", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_test_get_hl_gl_ceid_dynamic_fallback", + "target": "scripts_extract_google_news_get_hl_gl_ceid", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L80", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", + "target": "scripts_extract_google_news_get_hl_gl_ceid", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L62", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", + "target": "scripts_extract_google_news_parse_google_news_rss", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L113", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_test_resolve_article_url_fallback", + "target": "scripts_extract_google_news_resolve_article_url", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L141", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_test_resolve_article_url_success", + "target": "scripts_extract_google_news_resolve_article_url", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L159", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_test_resolve_articles_urls_batch", + "target": "scripts_extract_google_news_newsarticle", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L166", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_test_resolve_articles_urls_batch", + "target": "scripts_extract_google_news_resolve_articles_urls", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L182", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_test_search_query_validation", + "target": "scripts_extract_google_news_searchquery", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L89", + "weight": 1.0 + }, { "source": "tests_test_language_test_detect_english", "target": "src_language_detect_language", @@ -7949,6 +10745,54 @@ "source_location": "L8", "weight": 1.0 }, + { + "source": "tests_test_extract_google_news_sample_rss_xml", + "target": "tests_test_extract_google_news_py_fixture", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L31", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_extractionresult_to_dict", + "target": "scripts_extract_google_news_py_any", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "scripts/extract_google_news.py", + "source_location": "L97", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_newsarticle_to_dict", + "target": "scripts_extract_google_news_py_any", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "scripts/extract_google_news.py", + "source_location": "L75", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_resolve_articles_urls", + "target": "scripts_extract_google_news_newsarticle", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "scripts/extract_google_news.py", + "source_location": "L222", + "weight": 1.0 + }, { "source": "src_adapters_base_basenlpadapter_disambiguate", "target": "src_models_classificationresult", @@ -7987,7 +10831,7 @@ }, { "source": "src_models_classificationerror_to_dict", - "target": "any", + "target": "src_models_py_any", "relation": "references", "_origin": "ast", "confidence": "EXTRACTED", @@ -7999,7 +10843,7 @@ }, { "source": "src_models_classificationresult_to_dict", - "target": "any", + "target": "src_models_py_any", "relation": "references", "_origin": "ast", "confidence": "EXTRACTED", @@ -8011,7 +10855,7 @@ }, { "source": "src_models_ecpsnapshot_from_dict", - "target": "any", + "target": "src_models_py_any", "relation": "references", "_origin": "ast", "confidence": "EXTRACTED", @@ -8023,7 +10867,7 @@ }, { "source": "src_models_relatedentity_from_dict", - "target": "any", + "target": "src_models_py_any", "relation": "references", "_origin": "ast", "confidence": "EXTRACTED", @@ -8033,6 +10877,42 @@ "source_location": "L37", "weight": 1.0 }, + { + "source": "tests_test_extract_google_news_test_cli_empty_query_error", + "target": "capturefixture", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L263", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_test_cli_execution_stdout", + "target": "capturefixture", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L217", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_test_cli_network_error_handling", + "target": "capturefixture", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L272", + "weight": 1.0 + }, { "source": "classify", "target": "src_models_classificationerror", @@ -8513,6 +11393,114 @@ "source_location": "L6", "weight": 1.0 }, + { + "source": "tests_test_extract_google_news", + "target": "scripts_extract_google_news_extract_google_news", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "scripts_extract_google_news_extractionresult", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "scripts_extract_google_news_get_hl_gl_ceid", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "scripts_extract_google_news_main", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "scripts_extract_google_news_newsarticle", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "scripts_extract_google_news_parse_google_news_rss", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "scripts_extract_google_news_resolve_article_url", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "scripts_extract_google_news_resolve_articles_urls", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "scripts_extract_google_news_searchquery", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L16", + "weight": 1.0 + }, { "source": "tests_test_language", "target": "src_language_detect_language", @@ -8909,6 +11897,18 @@ "source_location": "L6", "weight": 1.0 }, + { + "source": "tests_test_extract_google_news", + "target": "scripts_extract_google_news", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L16", + "weight": 1.0 + }, { "source": "tests_test_language", "target": "src_language", @@ -8945,6 +11945,18 @@ "source_location": "L4", "weight": 1.0 }, + { + "source": "scripts_extract_google_news_extract_google_news", + "target": "scripts_extract_google_news_searchquery", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "scripts/extract_google_news.py", + "source_location": "L299", + "weight": 1.0 + }, { "source": "src_adapters_base_basenlpadapter_disambiguate", "target": "src_models_ecpsnapshot", @@ -8993,6 +12005,30 @@ "source_location": "L61", "weight": 1.0 }, + { + "source": "tests_test_extract_google_news_test_cli_execution_file_output", + "target": "path", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L242", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_test_e2e_cli_live_file_output", + "target": "path", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L328", + "weight": 1.0 + }, { "source": "classify_parse_args", "target": "namespace", @@ -9005,6 +12041,18 @@ "source_location": "L28", "weight": 1.0 }, + { + "source": "scripts_extract_google_news_build_parser", + "target": "argumentparser", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "scripts/extract_google_news.py", + "source_location": "L338", + "weight": 1.0 + }, { "source": "specify_scripts_powershell_common_format_speckitcommand", "target": "specify_scripts_powershell_common_get_invokeseparator", @@ -11172,6 +14220,270 @@ "source_location": "L98", "weight": 1.0 }, + { + "source": "docs_googlenews_extractor_guia_completo", + "target": "docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_2_entrada", + "target": "docs_googlenews_extractor_guia_completo_2_1_dto_de_entrada_googlenews_etl_application_dtos_extract_news_dto_py", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L58", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_2_entrada", + "target": "docs_googlenews_extractor_guia_completo_2_2_value_object_de_valida\u00e7\u00e3o_googlenews_etl_domain_entities_search_query_py", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L75", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_3_3_o_adaptador_concreto_o_cora\u00e7\u00e3o_do_extrator_googlenews_etl_infrastructure_adapters_google_news_extractor_adapter_py", + "target": "docs_googlenews_extractor_guia_completo_3_3_1_inicializa\u00e7\u00e3o_sess\u00e3o_http_com_impersona\u00e7\u00e3o_de_browser", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L185", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_3_3_o_adaptador_concreto_o_cora\u00e7\u00e3o_do_extrator_googlenews_etl_infrastructure_adapters_google_news_extractor_adapter_py", + "target": "docs_googlenews_extractor_guia_completo_3_3_2_mapeamento_idioma_par\u00e2metros_hl_gl_get_hl_gl", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L213", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_3_3_o_adaptador_concreto_o_cora\u00e7\u00e3o_do_extrator_googlenews_etl_infrastructure_adapters_google_news_extractor_adapter_py", + "target": "docs_googlenews_extractor_guia_completo_3_3_3_extra\u00e7\u00e3o_do_rss_o_ponto_fundamental_fetch_rss", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L250", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_3_3_o_adaptador_concreto_o_cora\u00e7\u00e3o_do_extrator_googlenews_etl_infrastructure_adapters_google_news_extractor_adapter_py", + "target": "docs_googlenews_extractor_guia_completo_3_3_4_orquestra\u00e7\u00e3o_com_resolu\u00e7\u00e3o_de_urls_extract", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L306", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_3_processamento_passo_a_passo", + "target": "docs_googlenews_extractor_guia_completo_3_1_o_caso_de_uso_googlenews_etl_application_use_cases_extract_news_use_case_py", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L115", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_3_processamento_passo_a_passo", + "target": "docs_googlenews_extractor_guia_completo_3_2_a_porta_googlenews_etl_domain_ports_news_extractor_port_py", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L168", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_3_processamento_passo_a_passo", + "target": "docs_googlenews_extractor_guia_completo_3_3_o_adaptador_concreto_o_cora\u00e7\u00e3o_do_extrator_googlenews_etl_infrastructure_adapters_google_news_extractor_adapter_py", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L183", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_3_processamento_passo_a_passo", + "target": "docs_googlenews_extractor_guia_completo_3_4_resolu\u00e7\u00e3o_de_urls_googlenews_etl_infrastructure_adapters_playwright_url_resolver_adapter_py", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L332", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_3_processamento_passo_a_passo", + "target": "docs_googlenews_extractor_guia_completo_3_5_rate_limiter_googlenews_etl_domain_services_rate_limiter_service_py", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L384", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_5_sa\u00edda", + "target": "docs_googlenews_extractor_guia_completo_5_1_dtos_de_sa\u00edda_googlenews_etl_application_dtos_extract_news_dto_py", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L437", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_5_sa\u00edda", + "target": "docs_googlenews_extractor_guia_completo_5_2_exemplo_de_sa\u00edda_json", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L461", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_7_depend\u00eancias_para_rodar_o_que_n\u00e3o_est\u00e1_nos_4_arquivos_centrais", + "target": "docs_googlenews_extractor_guia_completo_depend\u00eancias_de_bibliotecas_requirements", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L529", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_7_depend\u00eancias_para_rodar_o_que_n\u00e3o_est\u00e1_nos_4_arquivos_centrais", + "target": "docs_googlenews_extractor_guia_completo_comportamentos_observ\u00e1veis_honestidade", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L537", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", + "target": "docs_googlenews_extractor_guia_completo_3_processamento_passo_a_passo", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L113", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", + "target": "docs_googlenews_extractor_guia_completo_4_entidade_de_dom\u00ednio_da_not\u00edcia_googlenews_etl_domain_entities_news_article_py", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L403", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", + "target": "docs_googlenews_extractor_guia_completo_5_sa\u00edda", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L435", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", + "target": "docs_googlenews_extractor_guia_completo_6_resumo_do_fluxo_completo_entrada_sa\u00edda", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L486", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", + "target": "docs_googlenews_extractor_guia_completo_7_depend\u00eancias_para_rodar_o_que_n\u00e3o_est\u00e1_nos_4_arquivos_centrais", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L514", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", + "target": "docs_googlenews_extractor_guia_completo_8_como_chamar_exemplo_de_uso", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L548", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", + "target": "docs_googlenews_extractor_guia_completo_2_entrada", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L56", + "weight": 1.0 + }, + { + "source": "docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", + "target": "docs_googlenews_extractor_guia_completo_1_vis\u00e3o_geral_arquitetura", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/googlenews_extractor_guia_completo.md", + "source_location": "L9", + "weight": 1.0 + }, { "source": "examples_content_northvolt_de", "target": "examples_content_northvolt_de_batteriezellproduktion_f\u00fcr_europ\u00e4ische_elektrofahrzeuge", @@ -11205,6 +14517,424 @@ "source_location": "L1", "weight": 1.0 }, + { + "source": "readme", + "target": "readme_textnlpclassifierapp", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "readme_1_classificador_de_conte\u00fado_e_iner\u00eancia_nlp_llm_ecp", + "target": "readme_categorias_de_decis\u00e3o", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L103", + "weight": 1.0 + }, + { + "source": "readme_1_classificador_de_conte\u00fado_e_iner\u00eancia_nlp_llm_ecp", + "target": "readme_formato_do_ecp_snapshot_e_markdown", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L112", + "weight": 1.0 + }, + { + "source": "readme_1_classificador_de_conte\u00fado_e_iner\u00eancia_nlp_llm_ecp", + "target": "readme_exemplos_de_uso_cli", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L136", + "weight": 1.0 + }, + { + "source": "readme_1_classificador_de_conte\u00fado_e_iner\u00eancia_nlp_llm_ecp", + "target": "readme_o_que_\u00e9_e_como_funciona", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L76", + "weight": 1.0 + }, + { + "source": "readme_1_classificador_de_conte\u00fado_e_iner\u00eancia_nlp_llm_ecp", + "target": "readme_arquitetura_de_classifica\u00e7\u00e3o_em_3_tiers", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L82", + "weight": 1.0 + }, + { + "source": "readme_2_extrator_de_manchetes_do_google_news", + "target": "readme_o_que_\u00e9_e_como_funciona_153", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L153", + "weight": 1.0 + }, + { + "source": "readme_2_extrator_de_manchetes_do_google_news", + "target": "readme_diferenciais_t\u00e9cnicos", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L157", + "weight": 1.0 + }, + { + "source": "readme_2_extrator_de_manchetes_do_google_news", + "target": "readme_argumentos_e_flags_de_linha_de_comando", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L165", + "weight": 1.0 + }, + { + "source": "readme_2_extrator_de_manchetes_do_google_news", + "target": "readme_exemplos_pr\u00e1ticos_de_uso", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L178", + "weight": 1.0 + }, + { + "source": "readme_exemplos_pr\u00e1ticos_de_uso", + "target": "readme_1_river_plate_argentina_espanhol_2_p\u00e1ginas_salvar_em_arquivo", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L180", + "weight": 1.0 + }, + { + "source": "readme_exemplos_pr\u00e1ticos_de_uso", + "target": "readme_2_cruzeiro_brasil_portugu\u00eas_formatado_no_terminal", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L194", + "weight": 1.0 + }, + { + "source": "readme_exemplos_pr\u00e1ticos_de_uso", + "target": "readme_3_f\u00f3rmula_1_inglaterra_ingl\u00eas", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L199", + "weight": 1.0 + }, + { + "source": "readme_exemplos_pr\u00e1ticos_de_uso", + "target": "readme_4_filtragem_com_jq_em_modo_silencioso", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L204", + "weight": 1.0 + }, + { + "source": "readme_formato_do_ecp_snapshot_e_markdown", + "target": "readme_exemplo_de_ecp_snapshot_ecp_sample_json", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L114", + "weight": 1.0 + }, + { + "source": "readme_instala\u00e7\u00e3o_e_setup", + "target": "readme_1_clonar_o_reposit\u00f3rio_e_criar_ambiente_virtual", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L45", + "weight": 1.0 + }, + { + "source": "readme_instala\u00e7\u00e3o_e_setup", + "target": "readme_2_instalar_depend\u00eancias", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L58", + "weight": 1.0 + }, + { + "source": "readme_instala\u00e7\u00e3o_e_setup", + "target": "readme_3_baixar_bin\u00e1rios_do_navegador_stealth_camoufox", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L64", + "weight": 1.0 + }, + { + "source": "readme_textnlpclassifierapp", + "target": "readme_tabela_de_conte\u00fados", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "readme_textnlpclassifierapp", + "target": "readme_2_extrator_de_manchetes_do_google_news", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L151", + "weight": 1.0 + }, + { + "source": "readme_textnlpclassifierapp", + "target": "readme_estrutura_do_projeto", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L211", + "weight": 1.0 + }, + { + "source": "readme_textnlpclassifierapp", + "target": "readme_testes_e_qualidade_de_c\u00f3digo", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L238", + "weight": 1.0 + }, + { + "source": "readme_textnlpclassifierapp", + "target": "readme_licen\u00e7a", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L259", + "weight": 1.0 + }, + { + "source": "readme_textnlpclassifierapp", + "target": "readme_vis\u00e3o_geral", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L34", + "weight": 1.0 + }, + { + "source": "readme_textnlpclassifierapp", + "target": "readme_instala\u00e7\u00e3o_e_setup", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L43", + "weight": 1.0 + }, + { + "source": "readme_textnlpclassifierapp", + "target": "readme_1_classificador_de_conte\u00fado_e_iner\u00eancia_nlp_llm_ecp", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L74", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news", + "target": "scripts_extract_google_news_get_hl_gl_ceid", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L109", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news", + "target": "scripts_extract_google_news_normalize_text_for_comparison", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L153", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news", + "target": "scripts_extract_google_news_parse_google_news_rss", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L158", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news", + "target": "scripts_extract_google_news_resolve_article_url", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L209", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news", + "target": "scripts_extract_google_news_resolve_articles_urls", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L222", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news", + "target": "scripts_extract_google_news_fetch_rss_content", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L255", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news", + "target": "scripts_extract_google_news_extract_google_news", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L299", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news", + "target": "scripts_extract_google_news_searchquery", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L32", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news", + "target": "scripts_extract_google_news_build_parser", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L338", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news", + "target": "scripts_extract_google_news_main", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L405", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news", + "target": "scripts_extract_google_news_newsarticle", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L66", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news", + "target": "scripts_extract_google_news_extractionresult", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L86", + "weight": 1.0 + }, { "source": "specify_memory_constitution", "target": "specify_memory_constitution_project_name_constitution", @@ -13020,6 +16750,798 @@ "source_location": "L97", "weight": 1.0 }, + { + "source": "specs_002_google_news_extractor_checklists_readiness", + "target": "specs_002_google_news_extractor_checklists_readiness_general_readiness_checklist_google_news_headlines_extractor", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/checklists/readiness.md", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_checklists_readiness_general_readiness_checklist_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_checklists_readiness_cli_interface_parameter_contracts", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/checklists/readiness.md", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_checklists_readiness_general_readiness_checklist_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_checklists_readiness_scraping_engine_feed_mapping", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/checklists/readiness.md", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_checklists_readiness_general_readiness_checklist_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_checklists_readiness_data_sanitization_article_extraction", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/checklists/readiness.md", + "source_location": "L27", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_checklists_readiness_general_readiness_checklist_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_checklists_readiness_error_handling_edge_cases", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/checklists/readiness.md", + "source_location": "L35", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_checklists_readiness_general_readiness_checklist_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_checklists_readiness_non_functional_operational_readiness", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/checklists/readiness.md", + "source_location": "L42", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_checklists_readiness_general_readiness_checklist_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_checklists_readiness_notes", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/checklists/readiness.md", + "source_location": "L48", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_checklists_requirements", + "target": "specs_002_google_news_extractor_checklists_requirements_specification_quality_checklist_google_news_headlines_extractor", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/checklists/requirements.md", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_checklists_requirements_specification_quality_checklist_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_checklists_requirements_requirement_completeness", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/checklists/requirements.md", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_checklists_requirements_specification_quality_checklist_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_checklists_requirements_feature_readiness", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/checklists/requirements.md", + "source_location": "L25", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_checklists_requirements_specification_quality_checklist_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_checklists_requirements_notes", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/checklists/requirements.md", + "source_location": "L32", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_checklists_requirements_specification_quality_checklist_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_checklists_requirements_content_quality", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/checklists/requirements.md", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_contracts_cli_contract", + "target": "specs_002_google_news_extractor_contracts_cli_contract_cli_contract_google_news_headlines_extractor", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_contracts_cli_contract_1_comando_e_argumentos", + "target": "specs_002_google_news_extractor_contracts_cli_contract_argumentos_de_linha_de_comando", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_contracts_cli_contract_1_comando_e_argumentos", + "target": "specs_002_google_news_extractor_contracts_cli_contract_sintaxe", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_contracts_cli_contract_cli_contract_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_contracts_cli_contract_2_c\u00f3digos_de_sa\u00edda_exit_codes", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", + "source_location": "L25", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_contracts_cli_contract_cli_contract_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_contracts_cli_contract_1_comando_e_argumentos", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_contracts_cli_contract_cli_contract_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_contracts_cli_contract_3_protocolo_de_streams_stdout_stderr", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/contracts/cli_contract.md", + "source_location": "L35", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_data_model", + "target": "specs_002_google_news_extractor_data_model_data_model_google_news_headlines_extractor", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/data-model.md", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_data_model_1_entidades_de_dom\u00ednio_dtos", + "target": "specs_002_google_news_extractor_data_model_1_2_newsarticle_item_de_not\u00edcia", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/data-model.md", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_data_model_1_entidades_de_dom\u00ednio_dtos", + "target": "specs_002_google_news_extractor_data_model_1_3_extractionresult_sa\u00edda_estruturada_consolidada", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/data-model.md", + "source_location": "L26", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_data_model_1_entidades_de_dom\u00ednio_dtos", + "target": "specs_002_google_news_extractor_data_model_1_1_searchquery_par\u00e2metros_da_busca", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/data-model.md", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_data_model_data_model_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_data_model_1_entidades_de_dom\u00ednio_dtos", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/data-model.md", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_data_model_data_model_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_data_model_2_esquema_json_de_sa\u00edda", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/data-model.md", + "source_location": "L41", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_plan", + "target": "specs_002_google_news_extractor_plan_implementation_plan_google_news_headlines_extractor", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/plan.md", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_plan_implementation_plan_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_plan_technical_context", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/plan.md", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_plan_implementation_plan_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_plan_architecture_pipeline", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/plan.md", + "source_location": "L28", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_plan_implementation_plan_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_plan_project_structure", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/plan.md", + "source_location": "L45", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_plan_implementation_plan_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_plan_summary", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/plan.md", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_plan_project_structure", + "target": "specs_002_google_news_extractor_plan_documentation_this_feature", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/plan.md", + "source_location": "L47", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_plan_project_structure", + "target": "specs_002_google_news_extractor_plan_source_code", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/plan.md", + "source_location": "L63", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_quickstart", + "target": "specs_002_google_news_extractor_quickstart_quickstart_google_news_headlines_extractor", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/quickstart.md", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_quickstart_2_cen\u00e1rios_pr\u00e1ticos_de_uso", + "target": "specs_002_google_news_extractor_quickstart_cen\u00e1rio_1_river_plate_argentina_espanhol_2_p\u00e1ginas_salvar_em_arquivo", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/quickstart.md", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_quickstart_2_cen\u00e1rios_pr\u00e1ticos_de_uso", + "target": "specs_002_google_news_extractor_quickstart_cen\u00e1rio_2_cruzeiro_brasil_portugu\u00eas_formatado_no_terminal", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/quickstart.md", + "source_location": "L39", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_quickstart_2_cen\u00e1rios_pr\u00e1ticos_de_uso", + "target": "specs_002_google_news_extractor_quickstart_cen\u00e1rio_3_f\u00f3rmula_1_reino_unido_ingl\u00eas", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/quickstart.md", + "source_location": "L47", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_quickstart_2_cen\u00e1rios_pr\u00e1ticos_de_uso", + "target": "specs_002_google_news_extractor_quickstart_cen\u00e1rio_4_integra\u00e7\u00e3o_em_pipeline_com_jq_modo_silencioso", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/quickstart.md", + "source_location": "L55", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_quickstart_2_cen\u00e1rios_pr\u00e1ticos_de_uso", + "target": "specs_002_google_news_extractor_quickstart_cen\u00e1rio_5_extra\u00e7\u00e3o_r\u00e1pida_com_links_brutos_sem_resolu\u00e7\u00e3o_de_urls", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/quickstart.md", + "source_location": "L62", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_quickstart_quickstart_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_quickstart_2_cen\u00e1rios_pr\u00e1ticos_de_uso", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/quickstart.md", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_quickstart_quickstart_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_quickstart_3_valida\u00e7\u00e3o_dos_testes_automatizados_e_linter", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/quickstart.md", + "source_location": "L69", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_quickstart_quickstart_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_quickstart_1_pr\u00e9_requisitos_e_instala\u00e7\u00e3o", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/quickstart.md", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_research", + "target": "specs_002_google_news_extractor_research_research_google_news_headlines_extractor", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/research.md", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_research_1_technical_decisions_tradeoffs", + "target": "specs_002_google_news_extractor_research_decision_2_endpoint_rss_do_google_news_vs_scraping_de_dom", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/research.md", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_research_1_technical_decisions_tradeoffs", + "target": "specs_002_google_news_extractor_research_decision_3_mapeamento_de_idioma_e_locale_hl_gl_ceid", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/research.md", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_research_1_technical_decisions_tradeoffs", + "target": "specs_002_google_news_extractor_research_decision_4_resolu\u00e7\u00e3o_de_urls_do_google_news_via_googlenewsdecoder", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/research.md", + "source_location": "L36", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_research_1_technical_decisions_tradeoffs", + "target": "specs_002_google_news_extractor_research_decision_5_logging_em_tempo_real_no_stderr_e_segrega\u00e7\u00e3o_de_streams", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/research.md", + "source_location": "L45", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_research_1_technical_decisions_tradeoffs", + "target": "specs_002_google_news_extractor_research_decision_1_motor_de_requisi\u00e7\u00e3o_e_scraping_com_foxcape_em_modo_headless", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/research.md", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_research_research_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_research_1_technical_decisions_tradeoffs", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/research.md", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_spec", + "target": "specs_002_google_news_extractor_spec_feature_specification_google_news_headlines_extractor", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_spec_clarifications", + "target": "specs_002_google_news_extractor_spec_session_2026_08_20", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_spec_feature_specification_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_spec_clarifications", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_spec_feature_specification_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_spec_user_scenarios_testing_mandatory", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_spec_feature_specification_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_spec_edge_cases", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L64", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_spec_feature_specification_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_spec_requirements_mandatory", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L74", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_spec_feature_specification_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_spec_success_criteria_mandatory", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L92", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_spec_requirements_mandatory", + "target": "specs_002_google_news_extractor_spec_functional_requirements", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L76", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_spec_user_scenarios_testing_mandatory", + "target": "specs_002_google_news_extractor_spec_user_story_1_extra\u00e7\u00e3o_b\u00e1sica_de_not\u00edcias_com_urls_finais_resolvidas_priority_p1_mvp", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L22", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_spec_user_scenarios_testing_mandatory", + "target": "specs_002_google_news_extractor_spec_user_story_2_filtragem_regional_e_edi\u00e7\u00e3o_geogr\u00e1fica_priority_p2", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L36", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_spec_user_scenarios_testing_mandatory", + "target": "specs_002_google_news_extractor_spec_user_story_3_pagina\u00e7\u00e3o_exporta\u00e7\u00e3o_em_arquivo_e_feedback_visual_priority_p3", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/spec.md", + "source_location": "L50", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_tasks", + "target": "specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_tasks_phase_2_foundational_blocking_prerequisites", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_tasks_phase_3_user_story_1_extra\u00e7\u00e3o_b\u00e1sica_de_not\u00edcias_por_assunto_e_idioma_priority_p1_mvp", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L27", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_tasks_phase_4_user_story_2_filtragem_regional_e_edi\u00e7\u00e3o_geogr\u00e1fica_priority_p2", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L45", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_tasks_phase_5_user_story_3_pagina\u00e7\u00e3o_e_controle_de_volume_de_resultados_priority_p3", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L61", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_tasks_phase_6_url_resolution_headless_configuration_real_time_logging", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L77", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_tasks_phase_7_verification_e2e_testing", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L88", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_tasks_implementation_tasks_google_news_headlines_extractor", + "target": "specs_002_google_news_extractor_tasks_phase_1_setup_shared_infrastructure", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_tasks_phase_3_user_story_1_extra\u00e7\u00e3o_b\u00e1sica_de_not\u00edcias_por_assunto_e_idioma_priority_p1_mvp", + "target": "specs_002_google_news_extractor_tasks_tests_for_user_story_1", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L33", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_tasks_phase_3_user_story_1_extra\u00e7\u00e3o_b\u00e1sica_de_not\u00edcias_por_assunto_e_idioma_priority_p1_mvp", + "target": "specs_002_google_news_extractor_tasks_implementation_for_user_story_1", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L36", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_tasks_phase_4_user_story_2_filtragem_regional_e_edi\u00e7\u00e3o_geogr\u00e1fica_priority_p2", + "target": "specs_002_google_news_extractor_tasks_tests_for_user_story_2", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L51", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_tasks_phase_4_user_story_2_filtragem_regional_e_edi\u00e7\u00e3o_geogr\u00e1fica_priority_p2", + "target": "specs_002_google_news_extractor_tasks_implementation_for_user_story_2", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L54", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_tasks_phase_5_user_story_3_pagina\u00e7\u00e3o_e_controle_de_volume_de_resultados_priority_p3", + "target": "specs_002_google_news_extractor_tasks_tests_for_user_story_3", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L67", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_tasks_phase_5_user_story_3_pagina\u00e7\u00e3o_e_controle_de_volume_de_resultados_priority_p3", + "target": "specs_002_google_news_extractor_tasks_implementation_for_user_story_3", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L70", + "weight": 1.0 + }, { "source": "src_adapters_base", "target": "src_adapters_base_basenlpadapter", @@ -13746,6 +18268,193 @@ "source_location": "L9", "weight": 1.0 }, + { + "source": "tests_test_extract_google_news", + "target": "tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L111", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "tests_test_extract_google_news_test_resolve_article_url_fallback", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L138", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "tests_test_extract_google_news_test_resolve_article_url_success", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L150", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "tests_test_extract_google_news_test_resolve_articles_urls_batch", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L163", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L188", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "tests_test_extract_google_news_test_cli_execution_stdout", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L217", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "tests_test_extract_google_news_test_cli_execution_file_output", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L242", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "tests_test_extract_google_news_test_cli_empty_query_error", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L263", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "tests_test_extract_google_news_test_cli_network_error_handling", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L272", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "tests_test_extract_google_news_test_e2e_resolve_real_google_news_url", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L291", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "tests_test_extract_google_news_test_e2e_extract_google_news_live_pipeline", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L312", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "tests_test_extract_google_news_sample_rss_xml", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L32", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "tests_test_extract_google_news_test_e2e_cli_live_file_output", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L328", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L37", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L60", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "tests_test_extract_google_news_test_get_hl_gl_ceid_dynamic_fallback", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L78", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news", + "target": "tests_test_extract_google_news_test_search_query_validation", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L86", + "weight": 1.0 + }, { "source": "tests_test_language", "target": "tests_test_language_test_detect_portuguese", @@ -13988,6 +18697,72 @@ "source_location": "L18", "weight": 1.0 }, + { + "source": "scripts_extract_google_news_extractionresult", + "target": "scripts_extract_google_news_extractionresult_to_dict", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L97", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_newsarticle", + "target": "scripts_extract_google_news_newsarticle_to_dict", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L75", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_searchquery", + "target": "scripts_extract_google_news_searchquery_post_init", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L40", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_searchquery", + "target": "scripts_extract_google_news_searchquery_clean_keyword", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L53", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_searchquery", + "target": "scripts_extract_google_news_searchquery_clean_language", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L57", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_searchquery", + "target": "scripts_extract_google_news_searchquery_clean_locale", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L61", + "weight": 1.0 + }, { "source": "src_adapters_base_basenlpadapter", "target": "src_adapters_base_basenlpadapter_is_available", @@ -14208,6 +18983,149 @@ "source_location": "L37", "weight": 1.0 }, + { + "source": "scripts_extract_google_news_rationale_110", + "target": "scripts_extract_google_news_get_hl_gl_ceid", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L110", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_rationale_154", + "target": "scripts_extract_google_news_normalize_text_for_comparison", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L154", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_rationale_159", + "target": "scripts_extract_google_news_parse_google_news_rss", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L159", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_rationale_210", + "target": "scripts_extract_google_news_resolve_article_url", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L210", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_rationale_225", + "target": "scripts_extract_google_news_resolve_articles_urls", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L225", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_rationale_256", + "target": "scripts_extract_google_news_fetch_rss_content", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L256", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_rationale_302", + "target": "scripts_extract_google_news_extract_google_news", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L302", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_rationale_33", + "target": "scripts_extract_google_news_searchquery", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L33", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_rationale_339", + "target": "scripts_extract_google_news_build_parser", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L339", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_rationale_406", + "target": "scripts_extract_google_news_main", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L406", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_rationale_67", + "target": "scripts_extract_google_news_newsarticle", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L67", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_rationale_87", + "target": "scripts_extract_google_news_extractionresult", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_google_news.py", + "source_location": "L87", + "weight": 1.0 + }, + { + "source": "scripts_init_rationale_1", + "target": "scripts_init", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/__init__.py", + "source_location": "L1", + "weight": 1.0 + }, { "source": "src_adapters_base_rationale_1", "target": "src_adapters_base", @@ -14626,6 +19544,204 @@ "source_location": "L1", "weight": 1.0 }, + { + "source": "tests_test_extract_google_news_rationale_1", + "target": "tests_test_extract_google_news", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_rationale_112", + "target": "tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L112", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_rationale_139", + "target": "tests_test_extract_google_news_test_resolve_article_url_fallback", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L139", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_rationale_151", + "target": "tests_test_extract_google_news_test_resolve_article_url_success", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L151", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_rationale_164", + "target": "tests_test_extract_google_news_test_resolve_articles_urls_batch", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L164", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_rationale_189", + "target": "tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L189", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_rationale_218", + "target": "tests_test_extract_google_news_test_cli_execution_stdout", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L218", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_rationale_243", + "target": "tests_test_extract_google_news_test_cli_execution_file_output", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L243", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_rationale_264", + "target": "tests_test_extract_google_news_test_cli_empty_query_error", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L264", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_rationale_273", + "target": "tests_test_extract_google_news_test_cli_network_error_handling", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L273", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_rationale_292", + "target": "tests_test_extract_google_news_test_e2e_resolve_real_google_news_url", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L292", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_rationale_313", + "target": "tests_test_extract_google_news_test_e2e_extract_google_news_live_pipeline", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L313", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_rationale_329", + "target": "tests_test_extract_google_news_test_e2e_cli_live_file_output", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L329", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_rationale_33", + "target": "tests_test_extract_google_news_sample_rss_xml", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L33", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_rationale_38", + "target": "tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L38", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_rationale_61", + "target": "tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L61", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_rationale_79", + "target": "tests_test_extract_google_news_test_get_hl_gl_ceid_dynamic_fallback", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L79", + "weight": 1.0 + }, + { + "source": "tests_test_extract_google_news_rationale_87", + "target": "tests_test_extract_google_news_test_search_query_validation", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L87", + "weight": 1.0 + }, { "source": "tests_test_language_rationale_1", "target": "tests_test_language", @@ -14714,6 +19830,152 @@ "source_location": "L3", "weight": 1.0 }, + { + "source": "specs_002_google_news_extractor_checklists_readiness", + "target": "specs_002_google_news_extractor_contracts_cli_contract", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/checklists/readiness.md", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_checklists_readiness", + "target": "specs_002_google_news_extractor_data_model", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/checklists/readiness.md", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_checklists_readiness", + "target": "specs_002_google_news_extractor_plan", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/checklists/readiness.md", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_checklists_readiness", + "target": "specs_002_google_news_extractor_research", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/checklists/readiness.md", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_checklists_readiness", + "target": "specs_002_google_news_extractor_spec", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/checklists/readiness.md", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_checklists_requirements", + "target": "specs_002_google_news_extractor_spec", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/checklists/requirements.md", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_plan", + "target": "specs_002_google_news_extractor_spec", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/plan.md", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_tasks", + "target": "specs_002_google_news_extractor_contracts_cli_contract", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_tasks", + "target": "specs_002_google_news_extractor_plan", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "specs_002_google_news_extractor_tasks", + "target": "specs_002_google_news_extractor_spec", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/002-google-news-extractor/tasks.md", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "classify_emit_error", + "target": "path", + "relation": "calls", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "call", + "source_file": "classify.py", + "source_location": "L88", + "weight": 1.0 + }, + { + "source": "classify_main", + "target": "path", + "relation": "calls", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "call", + "source_file": "classify.py", + "source_location": "L104", + "weight": 1.0 + }, + { + "source": "scripts_extract_google_news_main", + "target": "path", + "relation": "calls", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "call", + "source_file": "scripts/extract_google_news.py", + "source_location": "L447", + "weight": 1.0 + }, { "source": "classify_emit_error", "target": "src_models_errorcode", @@ -15001,6 +20263,28 @@ "source_location": "L71", "weight": 0.8 }, + { + "source": "tests_test_extract_google_news_test_e2e_extract_google_news_live_pipeline", + "target": "scripts_extract_google_news_extractionresult", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L317", + "weight": 0.8 + }, + { + "source": "tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", + "target": "scripts_extract_google_news_extractionresult", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "tests/test_extract_google_news.py", + "source_location": "L206", + "weight": 0.8 + }, { "source": "tests_test_models_test_classification_error_serialization", "target": "src_models_errorcode", @@ -15058,5 +20342,5 @@ } ], "hyperedges": [], - "built_at_commit": "d371b81aa466c7bad9f22f4cad0121a5683990d2" + "built_at_commit": "67cc40f91af76783f3463a6bb456b68eb159af5b" } \ No newline at end of file diff --git a/graphify-out/manifest.json b/graphify-out/manifest.json index 16eaae7..980110d 100644 --- a/graphify-out/manifest.json +++ b/graphify-out/manifest.json @@ -300,9 +300,9 @@ "semantic_hash": "" }, "pyproject.toml": { - "mtime": 1787195827.3305018, - "seen": 1787196463.0953014, - "ast_hash": "f2503e96d08f5a4e41b13352e81709c6", + "mtime": 1787234982.768605, + "seen": 1787235020.6850271, + "ast_hash": "26f5f979658067bf447f375f044a8f21", "semantic_hash": "" }, "src/__init__.py": { @@ -420,9 +420,9 @@ "semantic_hash": "" }, "requirements.txt": { - "mtime": 1787195817.4782183, - "seen": 1787196463.1020837, - "ast_hash": "5612073a1e7034d7c25765379baa5da4", + "mtime": 1787236111.876247, + "seen": 1787236262.0105975, + "ast_hash": "9fb7e3f8ecb04ff30d650c772f509557", "semantic_hash": "" }, "tests/fixtures/benchmark_24/de/contextual.md": { @@ -574,5 +574,89 @@ "seen": 1787197159.9881344, "ast_hash": "5e8daf517ee32c261617d96264ef0473", "semantic_hash": "" + }, + "scripts/extract_google_news.py": { + "mtime": 1787236453.5231855, + "seen": 1787236509.1147037, + "ast_hash": "4216de490a87378d21dab707a3166679", + "semantic_hash": "" + }, + "tests/test_extract_google_news.py": { + "mtime": 1787236301.513448, + "seen": 1787236353.5582018, + "ast_hash": "1fc9a108a8abfecf1d37c8642a885e9e", + "semantic_hash": "" + }, + "docs/googlenews_extractor_guia_completo.md": { + "mtime": 1787231605.0830677, + "seen": 1787234772.8112028, + "ast_hash": "59db8e652000ba6087a00289a0ce0959", + "semantic_hash": "" + }, + "specs/002-google-news-extractor/checklists/readiness.md": { + "mtime": 1787234305.932687, + "seen": 1787234772.8123577, + "ast_hash": "a1200a6959d41e256a73403dd5c4e1f6", + "semantic_hash": "" + }, + "specs/002-google-news-extractor/checklists/requirements.md": { + "mtime": 1787232386.6763985, + "seen": 1787234772.812359, + "ast_hash": "39cd86af76c9f74baa2984418870b677", + "semantic_hash": "" + }, + "specs/002-google-news-extractor/contracts/cli_contract.md": { + "mtime": 1787236744.3139226, + "seen": 1787236817.4979818, + "ast_hash": "76a61ad31df989244edc5e739081bf7b", + "semantic_hash": "" + }, + "specs/002-google-news-extractor/data-model.md": { + "mtime": 1787234040.8134317, + "seen": 1787234772.8123617, + "ast_hash": "e8380c98d2f6418f60ac8a511ecdb637", + "semantic_hash": "" + }, + "specs/002-google-news-extractor/plan.md": { + "mtime": 1787236725.9825225, + "seen": 1787236817.4983613, + "ast_hash": "a787c974414ae6c173d4c39e76113c31", + "semantic_hash": "" + }, + "specs/002-google-news-extractor/quickstart.md": { + "mtime": 1787236764.0206513, + "seen": 1787236817.4983652, + "ast_hash": "ada22d34a0fa8341f88136cf42f055a9", + "semantic_hash": "" + }, + "specs/002-google-news-extractor/research.md": { + "mtime": 1787236785.0466182, + "seen": 1787236817.498368, + "ast_hash": "60837e6c7463c4413911ceca0087374c", + "semantic_hash": "" + }, + "specs/002-google-news-extractor/spec.md": { + "mtime": 1787236709.0783155, + "seen": 1787236817.4983711, + "ast_hash": "dfd963f7ca351c93e09f74af9b11d19e", + "semantic_hash": "" + }, + "specs/002-google-news-extractor/tasks.md": { + "mtime": 1787236802.4808047, + "seen": 1787236817.4983742, + "ast_hash": "427f24026deaa7c9aca95d99e7587ae6", + "semantic_hash": "" + }, + "scripts/__init__.py": { + "mtime": 1787234973.5782337, + "seen": 1787235020.6850297, + "ast_hash": "627a6c953b250083ebe76ee74d605bb5", + "semantic_hash": "" + }, + "README.md": { + "mtime": 1787237002.3288481, + "seen": 1787237013.7487457, + "ast_hash": "1b624e85d8ce1521683cbea2664dd2d2", + "semantic_hash": "" } } \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 90a8212..9b82f4a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,7 +16,11 @@ test = [ ] [tool.pytest.ini_options] +pythonpath = [".", "src"] testpaths = ["tests"] python_files = ["test_*.py"] python_classes = ["Test*"] python_functions = ["test_*"] + +[tool.pyright] +extraPaths = [".", "src"] diff --git a/requirements.txt b/requirements.txt index 91eea0f..6b826dc 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,8 @@ pytest>=7.0.0 +foxcape>=0.1.1 +beautifulsoup4>=4.12.0 +googlenewsdecoder>=0.1.7 +selectolax>=0.3.27 # Optional Tier 2 / Tier 3 dependencies (not required for POC core execution) # sentence-transformers>=2.2.0 # httpx>=0.24.0 diff --git a/scripts/__init__.py b/scripts/__init__.py new file mode 100644 index 0000000..5a49571 --- /dev/null +++ b/scripts/__init__.py @@ -0,0 +1 @@ +"""Módulo de scripts utilitários do projeto.""" diff --git a/scripts/extract_google_news.py b/scripts/extract_google_news.py new file mode 100644 index 0000000..0d6cf76 --- /dev/null +++ b/scripts/extract_google_news.py @@ -0,0 +1,467 @@ +#!/usr/bin/env python3 +""" +Extrator de Manchetes do Google News via RSS. + +Script CLI autônomo para busca, extração e estruturação de notícias +por termo/assunto, idioma e localização geográfica (locale), utilizando +a biblioteca Foxcape para raspagem indetectável e decodificação automática +das URLs intermediárias do Google News para as URLs finais dos veículos. +""" + +from __future__ import annotations + +import argparse +import concurrent.futures +import json +import re +import sys +import urllib.error +import urllib.parse +import urllib.request +from dataclasses import dataclass, field +from datetime import datetime, timezone +from pathlib import Path +from typing import Any + +from bs4 import BeautifulSoup, FeatureNotFound +from foxcape import Foxcape, FoxcapeConfig +from googlenewsdecoder import gnewsdecoder # type: ignore[import-untyped] + + +@dataclass(frozen=True) +class SearchQuery: + """Value Object com parâmetros de busca validados.""" + + keyword: str + language: str = "pt" + locale: str | None = None + max_pages: int = 1 + + def __post_init__(self) -> None: + if not self.keyword or not self.keyword.strip(): + raise ValueError("A palavra-chave não pode ser vazia.") + + if not self.language or len(self.language.strip()) < 2: + raise ValueError( + "O idioma deve conter pelo menos 2 caracteres (ex: 'pt', 'en', 'es')." + ) + + if self.max_pages < 1 or self.max_pages > 10: + raise ValueError("O número máximo de páginas deve estar entre 1 e 10.") + + @property + def clean_keyword(self) -> str: + return self.keyword.strip() + + @property + def clean_language(self) -> str: + return self.language.strip().lower() + + @property + def clean_locale(self) -> str | None: + return self.locale.strip().upper() if self.locale else None + + +@dataclass(frozen=True) +class NewsArticle: + """Entidade que representa uma notícia extraída.""" + + titulo: str + url: str + pagina: int + subtitulo: str | None = None + quando_publicado: str | None = None + + def to_dict(self) -> dict[str, Any]: + return { + "titulo": self.titulo, + "subtitulo": self.subtitulo, + "quando_publicado": self.quando_publicado, + "url": self.url, + "pagina": self.pagina, + } + + +@dataclass(frozen=True) +class ExtractionResult: + """Resultado consolidado da extração.""" + + query: str + language: str + locale: str + total_paginas: int + total_itens: int + scraped_at: str + items: list[NewsArticle] = field(default_factory=list) + + def to_dict(self) -> dict[str, Any]: + return { + "query": self.query, + "language": self.language, + "locale": self.locale, + "total_paginas": self.total_paginas, + "total_itens": self.total_itens, + "scraped_at": self.scraped_at, + "items": [item.to_dict() for item in self.items], + } + + +def get_hl_gl_ceid(lang_raw: str, locale: str | None = None) -> tuple[str, str, str]: + """ + Mapeia idioma e locale para os parâmetros hl, gl e ceid do Google News. + """ + lang_clean = lang_raw.lower().replace("-", "_") + + locale_map: dict[str, tuple[str, str]] = { + "pt": ("pt-BR", "BR"), + "pt_br": ("pt-BR", "BR"), + "es": ("es-419", "AR"), + "es_mx": ("es-419", "MX"), + "es_es": ("es", "ES"), + "en": ("en-US", "US"), + "en_gb": ("en-GB", "GB"), + "en_uk": ("en-GB", "GB"), + "en_us": ("en-US", "US"), + "de": ("de", "DE"), + "de_de": ("de", "DE"), + "it": ("it", "IT"), + "it_it": ("it", "IT"), + "fr": ("fr", "FR"), + "fr_fr": ("fr", "FR"), + } + + if lang_clean in locale_map: + hl, gl = locale_map[lang_clean] + else: + parts = lang_clean.split("_") + if len(parts) == 2: + hl, gl = f"{parts[0]}-{parts[1].upper()}", parts[1].upper() + else: + hl, gl = lang_clean, lang_clean.upper() + + if locale: + gl = locale.strip().upper() + if lang_clean == "es" and gl == "ES": + hl = "es" + elif lang_clean == "en" and gl == "GB": + hl = "en-GB" + + ceid = f"{gl}:{hl}" + return hl, gl, ceid + + +def _normalize_text_for_comparison(text: str) -> str: + """Remove pontuação e espaços extras para comparação de redundância.""" + return re.sub(r"[^\w\s]", "", text).lower().strip() + + +def parse_google_news_rss(xml_content: str, max_pages: int = 1) -> list[NewsArticle]: + """ + Parseia o XML do RSS do Google News e extrai os itens estruturados. + """ + try: + soup = BeautifulSoup(xml_content, "xml") + except FeatureNotFound: + soup = BeautifulSoup(xml_content, "html.parser") + + rss_items = soup.find_all("item") + articles: list[NewsArticle] = [] + max_allowed = max_pages * 10 + + for idx, item in enumerate(rss_items[:max_allowed]): + page_number = (idx // 10) + 1 + + title_tag = item.find("title") + link_tag = item.find("link") + pubdate_tag = item.find("pubDate") + desc_tag = item.find("description") + + title = title_tag.get_text(strip=True) if title_tag else "" + link = link_tag.get_text(strip=True) if link_tag else "" + pub_date = pubdate_tag.get_text(strip=True) if pubdate_tag else None + desc_raw = desc_tag.get_text() if desc_tag else "" + + # Limpeza de HTML do resumo / snippet + snippet = None + if desc_raw: + desc_soup = BeautifulSoup(desc_raw, "html.parser") + clean_snippet = desc_soup.get_text(separator=" ", strip=True) + if clean_snippet: + norm_snippet = _normalize_text_for_comparison(clean_snippet) + norm_title = _normalize_text_for_comparison(title) + if norm_snippet != norm_title: + snippet = clean_snippet + + if title and link: + articles.append( + NewsArticle( + titulo=title, + subtitulo=snippet, + quando_publicado=pub_date, + url=link, + pagina=page_number, + ) + ) + + return articles + + +def resolve_article_url(url: str) -> str: + """Resolve a URL intermediária do Google News para a URL real do veículo.""" + if not url or "news.google.com" not in url: + return url + try: + res = gnewsdecoder(url) + if isinstance(res, dict) and res.get("status") and res.get("decoded_url"): + return str(res["decoded_url"]) + except (ValueError, OSError, RuntimeError, TypeError): + pass + return url + + +def resolve_articles_urls( + articles: list[NewsArticle], max_workers: int = 5, verbose: bool = True +) -> list[NewsArticle]: + """Resolve em paralelo as URLs intermediárias do Google News para os links finais dos veículos.""" + if not articles: + return articles + + if verbose: + sys.stderr.write( + f"[INFO] 🔗 Decodificando {len(articles)} URLs do Google News para os portais reais...\n" + ) + + def _resolve_single(art: NewsArticle) -> NewsArticle: + return NewsArticle( + titulo=art.titulo, + subtitulo=art.subtitulo, + quando_publicado=art.quando_publicado, + url=resolve_article_url(art.url), + pagina=art.pagina, + ) + + with concurrent.futures.ThreadPoolExecutor(max_workers=max_workers) as executor: + resolved = list(executor.map(_resolve_single, articles)) + + if verbose: + resolved_count = sum(1 for a in resolved if "news.google.com" not in a.url) + sys.stderr.write( + f"[INFO] ✅ {resolved_count}/{len(resolved)} URLs resolvidas com sucesso para os domínios de origem.\n" + ) + + return resolved + + +def _fetch_rss_content(rss_url: str) -> str: + """ + Realiza a requisição ao feed RSS utilizando a biblioteca Foxcape como + motor primário de extração e evasão anti-bot em modo headless. + """ + config = FoxcapeConfig( + headless=True, + humanize=False, + ) + try: + result = Foxcape.fetch( + rss_url, + config=config, + timeout_ms=15000, + human_delay=False, + ) + if result and result.html: + return str(result.html) + raise RuntimeError("Foxcape não retornou conteúdo para a URL informada.") + except (RuntimeError, OSError, TimeoutError, ValueError) as exc: + # Fallback de contingência caso o ambiente não possua suporte a subprocessos de navegador + try: + headers = { + "User-Agent": ( + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " + "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36" + ), + "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", + "Accept-Language": "pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7,es;q=0.6", + } + req = urllib.request.Request(rss_url, headers=headers) + with urllib.request.urlopen(req, timeout=10) as response: + return response.read().decode("utf-8", errors="replace") + except ( + urllib.error.URLError, + urllib.error.HTTPError, + OSError, + TimeoutError, + ) as fallback_exc: + raise RuntimeError( + f"Erro na extração Foxcape: {exc} | Contingência: {fallback_exc}" + ) from exc + + +def extract_google_news( + query: SearchQuery, resolve_urls: bool = True, verbose: bool = True +) -> ExtractionResult: + """ + Orquestra a consulta ao Google News e retorna o resultado consolidado + com URLs resolvidas para os portais de notícias. + """ + encoded_query = urllib.parse.quote_plus(query.clean_keyword) + hl, gl, ceid = get_hl_gl_ceid(query.clean_language, query.clean_locale) + rss_url = f"https://news.google.com/rss/search?q={encoded_query}&hl={hl}&gl={gl}&ceid={ceid}" + + if verbose: + sys.stderr.write( + f"[INFO] 🔍 Consultando Google News: '{query.clean_keyword}' " + f"(idioma: {query.clean_language}, locale: {gl}, max_pages: {query.max_pages})...\n" + ) + + xml_content = _fetch_rss_content(rss_url) + if verbose: + sys.stderr.write(f"[INFO] 📥 Feed RSS recebido ({len(xml_content)} bytes).\n") + + articles = parse_google_news_rss(xml_content, max_pages=query.max_pages) + if verbose: + sys.stderr.write(f"[INFO] 📰 {len(articles)} artigos extraídos do feed XML.\n") + + if resolve_urls and articles: + articles = resolve_articles_urls(articles, verbose=verbose) + + return ExtractionResult( + query=query.clean_keyword, + language=query.clean_language, + locale=gl, + total_paginas=query.max_pages, + total_itens=len(articles), + scraped_at=datetime.now(timezone.utc).isoformat(), + items=articles, + ) + + +def build_parser() -> argparse.ArgumentParser: + """Cria e configura o parser de argumentos CLI.""" + parser = argparse.ArgumentParser( + prog="extract_google_news", + description="Extrator de manchetes do Google News RSS por assunto, idioma e região.", + ) + parser.add_argument( + "-q", + "--query", + "--keyword", + dest="query", + required=True, + help="Termo ou expressão de busca (obrigatório).", + ) + parser.add_argument( + "-l", + "--lang", + "--language", + dest="lang", + default="pt", + help="Código do idioma (padrão: pt).", + ) + parser.add_argument( + "--locale", + "--country", + dest="locale", + default=None, + help="Código do país/região (ex: BR, US, MX, ES).", + ) + parser.add_argument( + "-p", + "--max-pages", + dest="max_pages", + type=int, + default=1, + help="Número de páginas (1 a 10, com 10 itens por página; padrão: 1).", + ) + parser.add_argument( + "-o", + "--output", + dest="output", + default=None, + help="Caminho do arquivo para salvar a saída JSON.", + ) + parser.add_argument( + "--pretty", + action="store_true", + help="Formata a saída JSON com indentação legível.", + ) + parser.add_argument( + "--no-resolve-urls", + dest="resolve_urls", + action="store_false", + default=True, + help="Desativa a decodificação para as URLs diretas dos portais de notícias.", + ) + parser.add_argument( + "-s", + "--silent", + "--quiet", + dest="silent", + action="store_true", + help="Suprime as mensagens informativas de progresso.", + ) + return parser + + +def main(argv: list[str] | None = None) -> int: + """Ponto de entrada do script CLI.""" + if hasattr(sys.stdout, "reconfigure"): + try: + sys.stdout.reconfigure(encoding="utf-8") + except OSError: + pass + if hasattr(sys.stderr, "reconfigure"): + try: + sys.stderr.reconfigure(encoding="utf-8") + except OSError: + pass + + parser = build_parser() + + try: + args = parser.parse_args(argv) + query = SearchQuery( + keyword=args.query, + language=args.lang, + locale=args.locale, + max_pages=args.max_pages, + ) + except (ValueError, argparse.ArgumentError) as err: + sys.stderr.write(f"Erro de validação: {err}\n") + return 1 + except SystemExit as err: + return err.code if isinstance(err.code, int) else 1 + + verbose = not getattr(args, "silent", False) + + try: + result = extract_google_news( + query, resolve_urls=args.resolve_urls, verbose=verbose + ) + json_output = json.dumps( + result.to_dict(), + ensure_ascii=False, + indent=2 if args.pretty else None, + ) + + if args.output: + out_path = Path(args.output) + out_path.parent.mkdir(parents=True, exist_ok=True) + out_path.write_text(json_output + "\n", encoding="utf-8") + if verbose: + sys.stderr.write( + f"[INFO] 💾 Arquivo salvo com sucesso: '{args.output}' ({result.total_itens} notícias).\n" + ) + else: + sys.stdout.write(json_output + "\n") + + return 0 + except RuntimeError as err: + sys.stderr.write(f"Erro na extração: {err}\n") + return 2 + except OSError as err: + sys.stderr.write(f"Erro de arquivo/sistema: {err}\n") + return 2 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/specs/002-google-news-extractor/checklists/readiness.md b/specs/002-google-news-extractor/checklists/readiness.md new file mode 100644 index 0000000..c83f53a --- /dev/null +++ b/specs/002-google-news-extractor/checklists/readiness.md @@ -0,0 +1,56 @@ +# General Readiness Checklist: Google News Headlines Extractor + +**Purpose**: Validate the completeness, clarity, consistency, and testability of requirements for the standalone Google News CLI extractor before implementation. +**Created**: 2026-08-20 +**Validated**: 2026-08-20 (Audited against guide, spec, research, plan, data-model, and cli_contract) +**Feature**: [spec.md](../spec.md) | [plan.md](../plan.md) | [cli_contract.md](../contracts/cli_contract.md) | [data-model.md](../data-model.md) | [research.md](../research.md) + +**Note**: This custom checklist is generated by the `/speckit-checklist` command based on feature context and requirements. +**Review Ownership**: This checklist is a reviewer-owned requirements-quality review artifact. Mark an item `[x]` only when the reviewer determines the requirements-quality criterion is satisfied. +**Marker Semantics**: `[x]` means the criterion has been reviewed and satisfied for requirements quality. It does not mean implementation work is complete. + +## CLI Interface & Parameter Contracts + +- [x] CHK001 - Are all required CLI arguments (e.g., `--query` / `--keyword`) and their aliases explicitly specified? [Completeness, Spec §FR-003, Contract §1] +- [x] CHK002 - Are default values clearly defined for optional parameters (`--lang`, `--locale`, `--max-pages`)? [Clarity, Spec §FR-003, Contract §1] +- [x] CHK003 - Is the allowed range for pagination (`1` to `10` pages) explicitly bounded and unambiguous? [Clarity, Spec §FR-006, DataModel §1.1] +- [x] CHK004 - Are exit codes defined for each distinct execution outcome (success, validation failure, scraping/network error)? [Completeness, Contract §2] +- [x] CHK005 - Are stream separation requirements (clean JSON on `stdout`, diagnostics/errors on `stderr`) strictly documented? [Consistency, Spec §FR-009, Contract §3] + +## Scraping Engine & Feed Mapping + +- [x] CHK006 - Is the integration role of the `foxcape` library and its anti-bot evasion responsibilities clearly documented? [Completeness, Spec §FR-002, Plan §Summary] +- [x] CHK007 - Is the RSS search URL template and its encoding rules (`q`, `hl`, `gl`, `ceid`) precisely defined? [Clarity, Research §Decision 2, Research §Decision 3] +- [x] CHK008 - Is the locale inference fallback rule (when `--locale` is omitted) explicitly specified across standard language codes? [Consistency, Spec §FR-005, Research §Decision 3] +- [x] CHK009 - Is the override behavior when a custom `--locale` is passed alongside a different language documented? [Completeness, Spec §User Story 2, Research §Decision 3] + +## Data Sanitization & Article Extraction + +- [x] CHK010 - Are the target extraction fields (`titulo`, `subtitulo`, `quando_publicado`, `url`, `pagina`) mapped to specific RSS XML tags? [Completeness, Spec §FR-007, DataModel §1.2] +- [x] CHK011 - Is the HTML tag stripping requirement for description/snippets specified with unambiguous criteria? [Clarity, Spec §FR-008, SC-003] +- [x] CHK012 - Is the deduplication rule for subtitles identical to titles clearly documented with expected null/empty behavior? [Consistency, Spec §Edge Cases, DataModel §1.2] +- [x] CHK013 - Are filtering rules specified for discarding incomplete items missing title or link? [Coverage, Spec §Edge Cases, SC-002] +- [x] CHK014 - Is the consolidated JSON schema defined with all mandatory metadata fields (`query`, `language`, `locale`, `total_itens`, `scraped_at`)? [Completeness, Spec §FR-009, DataModel §2] + +## Error Handling & Edge Cases + +- [x] CHK015 - Are validation requirements specified for empty or whitespace-only search keywords? [Coverage, Spec §Edge Cases, Spec §FR-010] +- [x] CHK016 - Is the behavior for queries yielding zero matching news articles specified without raising unhandled errors? [Coverage, Spec §User Story 1, SC-004] +- [x] CHK017 - Are network interruption or upstream HTTP block error handling requirements documented? [Coverage, Spec §Edge Cases, Contract §2] +- [x] CHK018 - Are character encoding and URL parameter escaping requirements documented for special characters and accents? [Clarity, Spec §Edge Cases] + +## Non-Functional & Operational Readiness + +- [x] CHK019 - Is the performance target (< 2.0s for standard single-page extractions) quantified with measurable criteria? [Measurability, Spec §SC-001, Plan §Technical Context] +- [x] CHK020 - Are JSON output compatibility requirements with terminal streaming tools (e.g., `jq`, shell pipes) defined? [Completeness, Spec §SC-005, Contract §3] +- [x] CHK021 - Is the execution isolation assumption (pure RSS feed extraction without mandatory Playwright browser runtime) clearly stated? [Traceability, Spec §Assumptions, Research §Decision 1] + +## Notes + +- Mark items `[x]` only after review confirms the requirement-quality criterion is satisfied +- Leave items unchecked when they still require clarification, correction, or reviewer evaluation +- `/speckit-implement` reads checklist checkbox state as a gate and must not modify markers +- `checklists/requirements.md` has a separate built-in lifecycle maintained by `/speckit-specify` and `/speckit-clarify` +- Add comments or findings inline +- Link to relevant resources or documentation +- Items are numbered sequentially for easy reference diff --git a/specs/002-google-news-extractor/checklists/requirements.md b/specs/002-google-news-extractor/checklists/requirements.md new file mode 100644 index 0000000..6208e1a --- /dev/null +++ b/specs/002-google-news-extractor/checklists/requirements.md @@ -0,0 +1,34 @@ +# Specification Quality Checklist: Google News Headlines Extractor + +**Purpose**: Validate specification completeness and quality before proceeding to planning +**Created**: 2026-08-20 +**Feature**: [spec.md](../spec.md) + +## Content Quality + +- [x] No implementation details (languages, frameworks, APIs) +- [x] Focused on user value and business needs +- [x] Written for non-technical stakeholders +- [x] All mandatory sections completed + +## Requirement Completeness + +- [x] No [NEEDS CLARIFICATION] markers remain +- [x] Requirements are testable and unambiguous +- [x] Success criteria are measurable +- [x] Success criteria are technology-agnostic (no implementation details) +- [x] All acceptance scenarios are defined +- [x] Edge cases are identified +- [x] Scope is clearly bounded +- [x] Dependencies and assumptions identified + +## Feature Readiness + +- [x] All functional requirements have clear acceptance criteria +- [x] User scenarios cover primary flows +- [x] Feature meets measurable outcomes defined in Success Criteria +- [x] No implementation details leak into specification + +## Notes + +- Feature spec ready for planning phase (`/speckit-plan`). diff --git a/specs/002-google-news-extractor/contracts/cli_contract.md b/specs/002-google-news-extractor/contracts/cli_contract.md new file mode 100644 index 0000000..716ab39 --- /dev/null +++ b/specs/002-google-news-extractor/contracts/cli_contract.md @@ -0,0 +1,49 @@ +# CLI Contract: Google News Headlines Extractor + +## 1. Comando e Argumentos + +### Sintaxe +```bash +python scripts/extract_google_news.py --query <KEYWORD> [--lang <LANG>] [--locale <LOCALE>] [--max-pages <PAGES>] [--output <FILE>] [--pretty] [--no-resolve-urls] [--silent] +``` + +### Argumentos de Linha de Comando + +| Flag / Argumento | Tipo | Obrigatório | Padrão | Descrição | +| :--- | :--- | :--- | :--- | :--- | +| `-q`, `--query`, `--keyword` | `str` | **Sim** | — | Termo ou expressão de pesquisa no Google News. | +| `-l`, `--lang`, `--language` | `str` | Não | `"pt"` | Código do idioma (ex: `pt`, `en`, `es`, `de`, `fr`, `it`). | +| `--locale`, `--country` | `str` | Não | `None` | Código do país/região (ex: `BR`, `US`, `GB`, `MX`, `ES`, `AR`). | +| `-p`, `--max-pages` | `int` | Não | `1` | Quantidade de páginas a extrair (1 a 10, onde cada página possui até 10 itens). | +| `-o`, `--output` | `str` | Não | `None` | Caminho de arquivo opcional para salvar o JSON resultante diretamente (cria diretórios pais automaticamente). | +| `--pretty` | `flag` | Não | `False` | Formata o JSON emitido no stdout com indentação legível (2 espaços). | +| `--no-resolve-urls` | `flag` | Não | `False` | Desativa a decodificação automática para as URLs originais dos veículos (mantém os links brutos do feed). | +| `-s`, `--silent`, `--quiet` | `flag` | Não | `False` | Suprime mensagens informativas de progresso emitidas no `stderr`. | + +--- + +## 2. Códigos de Saída (Exit Codes) + +| Código | Significado | Descrição | +| :--- | :--- | :--- | +| `0` | **Sucesso** | Extração concluída com êxito (mesmo que 0 notícias sejam encontradas). | +| `1` | **Erro de Validação** | Parâmetro obrigatório ausente, valor inválido ou flag desconhecida. | +| `2` | **Erro de Rede/Scraping/I/O** | Falha de conectividade, bloqueio não recuperável ou erro de gravação. | + +--- + +## 3. Protocolo de Streams (Stdout / Stderr) + +- **`stdout`**: Exclusivo para o payload JSON estruturado de saída. Permite redirecionamento direto para pipes e arquivos: + ```bash + python scripts/extract_google_news.py -q "tecnologia" | jq '.items[].titulo' + ``` +- **`stderr`**: Exclusivo para logs informativos de progresso e mensagens de erro: + ```text + [INFO] 🔍 Consultando Google News: 'River Plate' (idioma: es, locale: AR, max_pages: 2)... + [INFO] 📥 Feed RSS recebido (162117 bytes). + [INFO] 📰 20 artigos extraídos do feed XML. + [INFO] 🔗 Decodificando 20 URLs do Google News para os portais reais... + [INFO] ✅ 20/20 URLs resolvidas com sucesso para os domínios de origem. + [INFO] 💾 Arquivo salvo com sucesso: 'out/river_plate.json' (20 notícias). + ``` diff --git a/specs/002-google-news-extractor/data-model.md b/specs/002-google-news-extractor/data-model.md new file mode 100644 index 0000000..36d48fb --- /dev/null +++ b/specs/002-google-news-extractor/data-model.md @@ -0,0 +1,72 @@ +# Data Model: Google News Headlines Extractor + +## 1. Entidades de Domínio & DTOs + +### 1.1 SearchQuery (Parâmetros da Busca) +Representa os parâmetros de entrada sanitizados e validados para a consulta ao feed do Google News. + +| Atributo | Tipo | Obrigatório | Padrão | Validação / Regra | +| :--- | :--- | :--- | :--- | :--- | +| `keyword` | `str` | Sim | — | Não vazio, sem espaços em branco apenas. | +| `language` | `str` | Não | `"pt"` | Mínimo 2 caracteres, normalizado em minúsculas. | +| `locale` | `str | None` | Não | `None` | Código ISO alpha-2 de país ou inferido do idioma. | +| `max_pages` | `int` | Não | `1` | Intervalo entre `1` e `10` (correspondente a 10 até 100 itens). | + +### 1.2 NewsArticle (Item de Notícia) +Representa uma notícia individual extraída do feed RSS. + +| Atributo | Tipo | Descrição | Origem no Feed | +| :--- | :--- | :--- | :--- | +| `titulo` | `str` | Título da manchete | Nó `<title>` | +| `subtitulo` | `str | None` | Resumo textual limpo de tags HTML (ou `None` se ausente/idêntico ao título) | Nó `<description>` sanitizado | +| `quando_publicado` | `str | None` | Data original de publicação do feed (RFC 822) | Nó `<pubDate>` | +| `url` | `str` | Link de acesso à notícia | Nó `<link>` | +| `pagina` | `int` | Número da página lógica calculada | `(idx // 10) + 1` | + +### 1.3 ExtractionResult (Saída Estruturada Consolidada) +Pacote consolidado emitido para consumo/stdout. + +| Atributo | Tipo | Descrição | +| :--- | :--- | :--- | +| `query` | `str` | Palavra-chave/expressão pesquisada | +| `language` | `str` | Código do idioma utilizado na busca | +| `locale` | `str` | Código da região/país utilizado | +| `total_paginas` | `int` | Total de páginas lógicas solicitadas/extraídas | +| `total_itens` | `int` | Quantidade total de notícias retornadas na lista | +| `scraped_at` | `str` | Data/hora ISO 8601 UTC do momento da extração | +| `items` | `list[NewsArticle]` | Lista ordenada de notícias | + +--- + +## 2. Esquema JSON de Saída + +```json +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ExtractionResult", + "type": "object", + "required": ["query", "language", "locale", "total_paginas", "total_itens", "scraped_at", "items"], + "properties": { + "query": { "type": "string" }, + "language": { "type": "string" }, + "locale": { "type": "string" }, + "total_paginas": { "type": "integer", "minimum": 1, "maximum": 10 }, + "total_itens": { "type": "integer", "minimum": 0 }, + "scraped_at": { "type": "string", "format": "date-time" }, + "items": { + "type": "array", + "items": { + "type": "object", + "required": ["titulo", "url", "pagina"], + "properties": { + "titulo": { "type": "string" }, + "subtitulo": { "type": ["string", "null"] }, + "quando_publicado": { "type": ["string", "null"] }, + "url": { "type": "string", "format": "uri" }, + "pagina": { "type": "integer", "minimum": 1 } + } + } + } + } +} +``` diff --git a/specs/002-google-news-extractor/plan.md b/specs/002-google-news-extractor/plan.md new file mode 100644 index 0000000..6010c34 --- /dev/null +++ b/specs/002-google-news-extractor/plan.md @@ -0,0 +1,74 @@ +# Implementation Plan: Google News Headlines Extractor + +**Branch**: `002-google-news-extractor` | **Date**: 2026-08-20 | **Spec**: [spec.md](./spec.md) + +**Input**: Feature specification from `specs/002-google-news-extractor/spec.md` + +## Summary + +Implementar um script CLI Python simples, robusto e autônomo ([`scripts/extract_google_news.py`](file:///c:/Users/aferr/Projects/AFTech/DunaMedia/TextNLPClassifierApp/scripts/extract_google_news.py)) para extrair manchetes do Google News RSS por assunto, idioma e região geográfica (*locale*). A solução utiliza a biblioteca [`foxcape`](https://pypi.org/project/foxcape/) em modo `headless=True` para garantir evasão anti-bot stealth, a biblioteca [`googlenewsdecoder`](https://pypi.org/project/googlenewsdecoder/) para resolver automaticamente as URLs intermediárias para os links finais dos portais de notícias em paralelo (`ThreadPoolExecutor`), e logging em tempo real via `sys.stderr`. + +## Technical Context + +**Language/Version**: Python >= 3.10 (3.11 / 3.12 / 3.13 / 3.14) +**Primary Dependencies**: +* `foxcape>=0.1.1` (scraping stealth & evasão anti-bot Camoufox em modo headless) +* `googlenewsdecoder>=0.1.7` (decodificação de URLs intermediárias do Google News) +* `selectolax>=0.3.27` (parser ultra-rápido de nós e atributos) +* `beautifulsoup4>=4.12.0` (limpeza HTML e higienização de resumos/snippets) +* `argparse` (parser CLI na biblioteca padrão) +* `concurrent.futures` (resolução paralela em pool de threads) + +**Storage**: N/A (stateless; saída via `stdout` ou arquivo especificado por flag `-o / --output`) +**Testing**: `pytest` com fixtures de feeds RSS, testes unitários mockados e testes End-to-End (E2E) ao vivo +**Target Platform**: Multiplataforma (Windows / Linux / macOS) +**Project Type**: Standalone CLI script + módulo utilitário de scripts +**Constraints**: Separação estrita de streams (`stdout` para JSON e `stderr` para logs informativos/erros) + +## Architecture & Pipeline + +```mermaid +flowchart LR + A[SearchQuery CLI] --> B[Foxcape Headless Fetch] + B --> C[parse_google_news_rss XML/HTML] + C --> D[ThreadPoolExecutor URL Resolution] + D --> E[ExtractionResult JSON Output] + E --> F[stdout / File Output] +``` + +1. **Ingestão & Validação**: `SearchQuery` valida palavra-chave não-vazia, idioma e limites de páginas (1 a 10). +2. **Coleta RSS via Foxcape**: `Foxcape.fetch(url, config=FoxcapeConfig(headless=True))` busca o feed com evasões anti-bot. +3. **Higienização XML/HTML**: `parse_google_news_rss` extrai nós, limpa resumos com `BeautifulSoup` e deduplica subtítulos redundantes. +4. **Decodificação de Links**: `resolve_articles_urls` decodifica as URLs intermediárias do Google News em paralelo via `googlenewsdecoder`. +5. **Emissão Estruturada**: JSON formatado no `stdout` ou gravado em arquivo (`--output`). + +## Project Structure + +### Documentation (this feature) + +```text +specs/002-google-news-extractor/ +├── spec.md # Especificação de requisitos da feature +├── plan.md # Este plano de implementação +├── research.md # Pesquisa técnica e decisões de design +├── data-model.md # Entidades, DTOs e esquema JSON +├── contracts/ +│ └── cli_contract.md # Contrato de argumentos CLI e I/O streams +├── quickstart.md # Guia rápido de execução e validação +└── checklists/ + ├── requirements.md # Checklist de qualidade dos requisitos + └── readiness.md # Checklist de prontidão e completude +``` + +### Source Code + +```text +scripts/ +├── __init__.py # Identificador de pacote Python +└── extract_google_news.py # Script CLI principal e lógica de extração + +tests/ +├── fixtures/ +│ └── google_news_sample.xml # Amostra de feed RSS para testes offline +└── test_extract_google_news.py# Testes unitários, integração e E2E ao vivo +``` diff --git a/specs/002-google-news-extractor/quickstart.md b/specs/002-google-news-extractor/quickstart.md new file mode 100644 index 0000000..5a0ab9a --- /dev/null +++ b/specs/002-google-news-extractor/quickstart.md @@ -0,0 +1,78 @@ +# Quickstart: Google News Headlines Extractor + +Guia rápido para execução e validação de ponta a ponta do extrator de notícias via linha de comando. + +--- + +## 1. Pré-requisitos e Instalação + +Instale as dependências necessárias no ambiente Python: +```bash +pip install -r requirements.txt +``` + +Baixe os binários de browser stealth do Camoufox (executado uma única vez): +```bash +python -m camoufox fetch +``` + +--- + +## 2. Cenários Práticos de Uso + +### Cenário 1: River Plate — Argentina (Espanhol / 2 Páginas / Salvar em Arquivo) +```bash +python scripts/extract_google_news.py -q "River Plate" -l es --locale AR -p 2 -o out/river_plate.json +``` +* **Logs no terminal**: + ```text + [INFO] 🔍 Consultando Google News: 'River Plate' (idioma: es, locale: AR, max_pages: 2)... + [INFO] 📥 Feed RSS recebido (162117 bytes). + [INFO] 📰 20 artigos extraídos do feed XML. + [INFO] 🔗 Decodificando 20 URLs do Google News para os portais reais... + [INFO] ✅ 20/20 URLs resolvidas com sucesso para os domínios de origem. + [INFO] 💾 Arquivo salvo com sucesso: 'out/river_plate.json' (20 notícias). + ``` + +--- + +### Cenário 2: Cruzeiro — Brasil (Português / Formatado no Terminal) +```bash +python scripts/extract_google_news.py --query "Cruzeiro" --lang pt --locale BR --pretty +``` +* Retorna JSON formatado com 10 manchetes e links diretos (*ge.globo.com, lance.com.br, gazetaesportiva.com*). + +--- + +### Cenário 3: Fórmula 1 — Reino Unido (Inglês) +```bash +python scripts/extract_google_news.py --query "Formula 1" --lang en --locale GB --pretty +``` +* Retorna notícias de veículos britânicos (*BBC Sport, Sky Sports F1, Autosport*). + +--- + +### Cenário 4: Integração em Pipeline com `jq` (Modo Silencioso) +```bash +python scripts/extract_google_news.py -q "inteligência artificial" -s | jq '.items[].url' +``` + +--- + +### Cenário 5: Extração Rápida com Links Brutos (Sem Resolução de URLs) +```bash +python scripts/extract_google_news.py -q "São Paulo" --no-resolve-urls --pretty +``` + +--- + +## 3. Validação dos Testes Automatizados e Linter + +```bash +# Executa todos os testes unitários e E2E ao vivo +pytest tests/test_extract_google_news.py -v + +# Validação estática com Ruff e Mypy +ruff check scripts/extract_google_news.py tests/test_extract_google_news.py +mypy scripts/ tests/test_extract_google_news.py +``` diff --git a/specs/002-google-news-extractor/research.md b/specs/002-google-news-extractor/research.md new file mode 100644 index 0000000..421686d --- /dev/null +++ b/specs/002-google-news-extractor/research.md @@ -0,0 +1,47 @@ +# Research: Google News Headlines Extractor + +## 1. Technical Decisions & Tradeoffs + +### Decision 1: Motor de Requisição e Scraping com `foxcape` em Modo Headless +- **Decision**: Adotar o pacote `foxcape` com `FoxcapeConfig(headless=True, humanize=False)` como motor de requisição primário. +- **Rationale**: `foxcape` integra Camoufox e BeautifulSoup com evasões de fingerprinting TLS, runtime JS e headers avançados, impedindo bloqueios (429/403/Captchas) frequentes do Google News. A configuração `headless=True` garante que a execução ocorra 100% em segundo plano sem abrir janelas gráficas no sistema. +- **Alternatives Considered**: + - `curl_cffi` + `beautifulsoup4` manual: Boa alternativa, mas exige orquestração manual de impersonação de TLS e headers. + - `requests` padrão: Alto risco de bloqueio anti-bot pelo Google News. + - Foxcape padrão sem configuração (`headless=False`): Abre janela visual do Firefox indesejada em execuções CLI e servidores. + +--- + +### Decision 2: Endpoint RSS do Google News vs. Scraping de DOM +- **Decision**: Utilizar o endpoint oficial de busca RSS do Google News: `https://news.google.com/rss/search?q={query}&hl={hl}&gl={gl}&ceid={gl}:{hl}`. +- **Rationale**: Formato estruturado em XML padrão, com carregamento rápido e direto de todos os metadados necessários (`title`, `link`, `pubDate`, `description`), sem necessidade de lidar com seletores CSS voláteis da interface web renderizada. +- **Alternatives Considered**: + - Scraping direto da interface HTML do Google News (`news.google.com/search`): Classes CSS ofuscadas e alteradas frequentemente pelo Google, quebrando facilmente a extração. + +--- + +### Decision 3: Mapeamento de Idioma e Locale (`hl`, `gl`, `ceid`) +- **Decision**: Tabela de mapeamento determinística com fallback dinâmico. + - `pt` → `hl=pt-BR`, `gl=BR`, `ceid=BR:pt-BR` + - `es` → `hl=es-419`, `gl=AR`, `ceid=AR:es-419` + - `en` → `hl=en-US`, `gl=US`, `ceid=US:en-US` + - `de` → `hl=de`, `gl=DE`, `ceid=DE:de` + - `fr` → `hl=fr`, `gl=FR`, `ceid=FR:fr` + - `it` → `hl=it`, `gl=IT`, `ceid=IT:it` + - Customizado: se fornecido `--locale MX`, sobrescreve o `gl` e ajusta `ceid={gl}:{hl}`. +- **Rationale**: Garante notícias contextualmente adequadas por país sem que o usuário precise memorizar os códigos técnicos internos do Google News. + +--- + +### Decision 4: Resolução de URLs do Google News via `googlenewsdecoder` +- **Decision**: Resolver automaticamente as URLs intermediárias (`news.google.com/rss/articles/CBMi...`) para os links originais dos veículos de imprensa em lote com `concurrent.futures.ThreadPoolExecutor(max_workers=5)`. +- **Rationale**: Os links gerados pelo Google News contêm tokens RPC intermediários que dificultam a leitura e ingestão direta. A decodificação em lote resolve até 50 URLs em menos de 1 segundo sem sobrecarga. +- **Alternatives Considered**: + - Resolução via Playwright headless para cada link: Muito lenta para listas de 20 a 50 notícias (demora 30 a 60 segundos). + - Manter apenas a URL do Google News: Prejudica o usuário e sistemas downstream que precisam do domínio e link real do portal de notícias. + +--- + +### Decision 5: Logging em Tempo Real no `stderr` e Segregação de Streams +- **Decision**: Enviar mensagens de status (`[INFO] ...`) para `sys.stderr` e reservar `sys.stdout` exclusivamente para o JSON. +- **Rationale**: Permite que o operador acompanhe o progresso em tempo real no terminal (`Consultando...`, `Decodificando URLs...`, `Arquivo salvo...`) sem quebrar a interoperabilidade com ferramentas de pipe como `jq` ou redirecionamentos de arquivo. diff --git a/specs/002-google-news-extractor/spec.md b/specs/002-google-news-extractor/spec.md new file mode 100644 index 0000000..1a99b6a --- /dev/null +++ b/specs/002-google-news-extractor/spec.md @@ -0,0 +1,98 @@ +# Feature Specification: Google News Headlines Extractor + +**Feature Branch**: `002-google-news-extractor` +**Created**: 2026-08-20 +**Status**: Implemented & Validated +**Input**: User description: "Extrator de manchetes do Google News de acordo com assunto, idioma, locale, com Foxcape headless, resolução de URLs reais e logging" + +--- + +## Clarifications + +### Session 2026-08-20 +- Q: Como o extrator de notícias do Google News deve ser disponibilizado e consumido dentro do projeto? → A: Apenas Script CLI autônomo para execução direta via linha de comando no terminal (`scripts/extract_google_news.py`). +- Q: Qual biblioteca/mecanismo de requisição e raspagem deve ser utilizado no script CLI? → A: Biblioteca `foxcape` (https://pypi.org/project/foxcape/) em modo `headless=True` com proteção anti-bot e fingerprinting stealth. +- Q: Como lidar com as URLs intermediárias do Google News? → A: Resolução e decodificação automática das URLs intermediárias (`https://news.google.com/rss/articles/...`) para as URLs reais e finais dos portais de notícias via `googlenewsdecoder`. +- Q: Como acompanhar o progresso de extração no terminal? → A: Logs informativos em tempo real enviados exclusivamente para `sys.stderr`, mantendo `sys.stdout` limpo para pipes JSON e suportando a flag `-s / --silent`. + +--- + +## User Scenarios & Testing *(mandatory)* + +### User Story 1 - Extração Básica de Notícias com URLs Finais Resolvidas (Priority: P1) 🌟 MVP + +Como analista ou operador no terminal, quero fornecer um termo de busca e um idioma de interesse via linha de comando para obter rapidamente uma lista estruturada de manchetes recentes com as URLs finais reais dos veículos de imprensa (ex: *Olé, TyC Sports, ge, ESPN*). + +**Why this priority**: É o valor fundamental do produto. Sem a capacidade de buscar, obter manchetes e fornecer os links diretos dos veículos, o extrator não cumpre sua função de pesquisa e ingestão. + +**Independent Test**: Executar `python scripts/extract_google_news.py -q "River Plate" -l es --locale AR -p 1` e verificar se o JSON retornado contém notícias com URLs apontando para os domínios finais (`tycsports.com`, `ole.com.ar`, etc.). + +**Acceptance Scenarios**: +1. **Given** um termo de busca válido e idioma, **When** o script for executado com o motor `foxcape` em modo headless, **Then** o sistema extrai o feed RSS e decodifica as URLs de cada artigo para os sites de origem. +2. **Given** um termo de busca sem notícias correspondentes, **When** o script for executado, **Then** o sistema retorna uma coleção vazia com código de saída 0. + +--- + +### User Story 2 - Filtragem Regional e Edição Geográfica (Priority: P2) + +Como usuário que monitora notícias em mercados específicos, quero definir a região/país geográfica (*locale*) além do idioma (por exemplo, espanhol da Argentina `--locale AR` vs. México `--locale MX`, ou inglês do Reino Unido `--locale GB` vs. Estados Unidos `--locale US`) para receber manchetes contextualmente relevantes àquele território. + +**Why this priority**: Garante relevância e precisão geográfica para análises de mídia multinacionais e segmentadas. + +**Independent Test**: Executar o script com idioma "es" e locale "AR" e verificar que portais e manchetes são da Argentina. + +**Acceptance Scenarios**: +1. **Given** um termo de busca, idioma "es" e país/região "AR", **When** o script CLI for executado, **Then** as manchetes retornadas priorizam a edição e veículos argentinos. +2. **Given** um idioma informado sem país explícito (ex: "pt"), **When** o script for solicitado, **Then** o sistema aplica o mapeamento padrão correspondente (ex: Brasil / pt-BR). + +--- + +### User Story 3 - Paginação, Exportação em Arquivo e Feedback Visual (Priority: P3) + +Como operador de automação de dados, quero parametrizar o número de páginas de resultados (`--max-pages 1..10`), exportar direto para arquivo (`--output`) e acompanhar o progresso no terminal com mensagens descritivas de log. + +**Why this priority**: Permite flexibilidade de uso em rotinas batch, pipelines de ETL e depuração interativa. + +**Independent Test**: Executar com `-p 2 -o out/resultado.json` e verificar criação do arquivo com diretórios pais automáticos e logs em `stderr`. + +**Acceptance Scenarios**: +1. **Given** uma execução CLI com `-p 2 -o out/teste.json`, **When** o processo é executado, **Then** o terminal exibe logs em `stderr` (`[INFO] 🔍 Consultando...`, `[INFO] 🔗 Decodificando...`, `[INFO] 💾 Arquivo salvo...`) e grava o JSON final com 20 itens. +2. **Given** o uso da flag `-s` ou `--silent`, **When** o script é executado, **Then** os logs em `stderr` são suprimidos. + +--- + +## Edge Cases + +- **Termo de busca vazio ou composto apenas por espaços**: O script rejeita a solicitação com mensagem de erro em `stderr` e código de saída 1. +- **Falha de conectividade ou bloqueio**: O Foxcape executa com evasões anti-bot em modo headless, com captura de exceções e emissão de erro em `stderr` com código de saída 2. +- **Resumo da notícia idêntico ao título**: Subtítulo redundante vira `None`. +- **Caminho de saída em pasta inexistente**: O script cria os diretórios pais automaticamente antes de salvar. +- **Falha na decodificação de URL específica**: Mantém a URL original como fallback gracioso sem abortar a execução dos demais itens. + +--- + +## Requirements *(mandatory)* + +### Functional Requirements + +- **FR-001**: O sistema DEVE ser disponibilizado como script CLI autônomo em `scripts/extract_google_news.py`. +- **FR-002**: O script DEVE utilizar a biblioteca `foxcape` com `FoxcapeConfig(headless=True)` como motor primário de requisição com proteção anti-bot. +- **FR-003**: O CLI DEVE aceitar argumento obrigatório para o termo de busca (`-q, --query, --keyword`). +- **FR-004**: O CLI DEVE suportar argumentos opcionais para código de idioma (`-l, --lang, --language`, padrão `pt`) e região/país (`--locale, --country`). +- **FR-005**: O sistema DEVE aplicar mapeamento padrão de região quando apenas o idioma for informado (`pt` → BR, `es` → AR, `en` → US, `de` → DE, `fr` → FR, `it` → IT). +- **FR-006**: O CLI DEVE permitir configurar a paginação lógica (`-p, --max-pages`, de 1 a 10 páginas / 10 a 100 itens). +- **FR-007**: O sistema DEVE extrair: título, URL, data de publicação, subtítulo higienizado de HTML e número da página. +- **FR-008**: O sistema DEVE resolver e decodificar automaticamente as URLs intermediárias do Google News para as URLs finais dos portais de notícias em paralelo. +- **FR-009**: O CLI DEVE emitir logs informativos de progresso em `sys.stderr` e suportar a flag `-s, --silent` para supressão. +- **FR-010**: O CLI DEVE suportar a flag `--no-resolve-urls` para obter as URLs brutas do feed RSS quando desejado. +- **FR-011**: O CLI DEVE suportar gravação em arquivo via `-o, --output` com criação de diretórios pais e formatação legível com `--pretty`. + +--- + +## Success Criteria *(mandatory)* + +- **SC-001**: Extração executada com sucesso utilizando Foxcape headless e alta taxa de entrega. +- **SC-002**: 100% das URLs de notícias decodificadas para os portais reais dos veículos quando a resolução de URLs estiver ativa. +- **SC-003**: 100% dos resumos/subtítulos livres de marcações HTML. +- **SC-004**: Formato JSON no `stdout` 100% compatível com utilitários como `jq` e pipelines shell. +- **SC-005**: 100% dos testes unitários e E2E aprovados no pytest. diff --git a/specs/002-google-news-extractor/tasks.md b/specs/002-google-news-extractor/tasks.md new file mode 100644 index 0000000..6dd4b36 --- /dev/null +++ b/specs/002-google-news-extractor/tasks.md @@ -0,0 +1,95 @@ +# Implementation Tasks: Google News Headlines Extractor + +**Feature**: Google News Headlines Extractor +**Branch**: `002-google-news-extractor` | **Date**: 2026-08-20 +**Spec**: [spec.md](./spec.md) | **Plan**: [plan.md](./plan.md) | **Contracts**: [cli_contract.md](./contracts/cli_contract.md) + +--- + +## Phase 1: Setup (Shared Infrastructure) + +**Purpose**: Instalar dependências necessárias e configurar fixtures de teste. + +- [X] T001 Adicionar `foxcape`, `beautifulsoup4`, `googlenewsdecoder` e `selectolax` ao requirements.txt e validar instalação +- [X] T002 [P] Criar fixture XML de exemplo em tests/fixtures/google_news_sample.xml para testes offline + +--- + +## Phase 2: Foundational (Blocking Prerequisites) + +**Purpose**: Estruturas de dados base e utilitários de localização que sustentam todas as histórias de usuário. + +- [X] T003 Definir as dataclasses `SearchQuery`, `NewsArticle` e `ExtractionResult` em scripts/extract_google_news.py +- [X] T004 [P] Implementar utilitário de mapeamento de idioma e país `get_hl_gl_ceid` em scripts/extract_google_news.py + +--- + +## Phase 3: User Story 1 - Extração Básica de Notícias por Assunto e Idioma (Priority: P1) 🌟 MVP + +**Goal**: Permitir a extração de notícias de um termo e idioma via CLI, retornando JSON formatado com títulos, links e datas de publicação. + +**Independent Test**: Executar `python scripts/extract_google_news.py --query "tecnologia" --lang pt` e verificar retorno de JSON válido no `stdout` contendo itens com título e URL. + +### Tests for User Story 1 🧪 +- [X] T005 [P] [US1] Criar testes unitários para parsing XML do RSS e limpeza de tags HTML em tests/test_extract_google_news.py + +### Implementation for User Story 1 +- [X] T006 [US1] Implementar função `parse_google_news_rss` com limpeza de tags HTML e deduplicação de subtítulos em scripts/extract_google_news.py +- [X] T007 [US1] Implementar função `extract_google_news` utilizando a biblioteca `foxcape` em modo headless como motor primário em scripts/extract_google_news.py +- [X] T008 [US1] Implementar interface CLI básica com `argparse` emitindo JSON para `stdout` em scripts/extract_google_news.py + +**Checkpoint**: User Story 1 (MVP) 100% funcional e testável de forma independente. + +--- + +## Phase 4: User Story 2 - Filtragem Regional e Edição Geográfica (Priority: P2) + +**Goal**: Permitir direcionamento de notícias por região/país com a flag `--locale` (ex: `es` com `MX` vs `ES`). + +**Independent Test**: Executar `python scripts/extract_google_news.py --query "futebol" --lang es --locale MX` e verificar que a query foi montada com os parâmetros de edição regional correspondentes. + +### Tests for User Story 2 🧪 +- [X] T009 [P] [US2] Adicionar testes unitários para a flag `--locale` e resolução de `ceid` em tests/test_extract_google_news.py + +### Implementation for User Story 2 +- [X] T010 [US2] Integrar suporte à flag `--locale` / `--country` no CLI e fluxo de requisição em scripts/extract_google_news.py + +**Checkpoint**: User Stories 1 e 2 funcionais e testáveis de forma independente. + +--- + +## Phase 5: User Story 3 - Paginação e Controle de Volume de Resultados (Priority: P3) + +**Goal**: Permitir configuração de quantidade de páginas/itens (`--max-pages` de 1 a 10) e salvamento em arquivo (`--output`). + +**Independent Test**: Executar com `--max-pages 2 --output out/test_news.json` e verificar arquivo gerado com até 20 itens divididos em páginas 1 e 2. + +### Tests for User Story 3 🧪 +- [X] T011 [P] [US3] Adicionar testes unitários para limite de páginas e exportação em arquivo em tests/test_extract_google_news.py + +### Implementation for User Story 3 +- [X] T012 [US3] Implementar fatiamento de páginas lógicas (`--max-pages 1..10`) e flag `--output` para gravação de arquivo com criação automática de diretórios pais em scripts/extract_google_news.py + +**Checkpoint**: Todas as histórias de usuário funcionais e integradas. + +--- + +## Phase 6: URL Resolution, Headless Configuration & Real-Time Logging + +**Purpose**: Resolver URLs reais dos veículos, suprimir janelas visuais de navegador e emitir feedback de progresso no terminal. + +- [X] T013 Implementar `resolve_article_url` e `resolve_articles_urls` com `googlenewsdecoder` e pool concorrente em scripts/extract_google_news.py +- [X] T014 Configurar `FoxcapeConfig(headless=True)` garantindo raspagem 100% em background sem interface gráfica em scripts/extract_google_news.py +- [X] T015 Adicionar logging em tempo real em `sys.stderr` e flag `-s / --silent` para supressão em scripts/extract_google_news.py +- [X] T016 Adicionar flag `--no-resolve-urls` para permitir acesso às URLs brutas do feed quando desejado em scripts/extract_google_news.py + +--- + +## Phase 7: Verification & E2E Testing + +**Purpose**: Testes automatizados de ponta a ponta e auditoria de tipagem e estilo. + +- [X] T017 Criar testes unitários para o resolvedor de URLs em tests/test_extract_google_news.py +- [X] T018 Criar testes E2E ao vivo (`test_e2e_resolve_real_google_news_url`, `test_e2e_extract_google_news_live_pipeline`, `test_e2e_cli_live_file_output`) em tests/test_extract_google_news.py +- [X] T019 Validar 100% de conformidade com `ruff check`, `ruff format` e `mypy` estrito +- [X] T020 Executar suite completa do repositório garantindo 0 regressões diff --git a/tests/fixtures/google_news_sample.xml b/tests/fixtures/google_news_sample.xml new file mode 100644 index 0000000..7f4f550 --- /dev/null +++ b/tests/fixtures/google_news_sample.xml @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8"?> +<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/"> + <channel> + <generator>NFE/5.0</generator> + <title>"inteligencia artificial" - Google Notícias + https://news.google.com/search?q=inteligencia+artificial&hl=pt-BR&gl=BR&ceid=BR:pt-BR + pt-BR + news-webmaster@google.com + 2026 Google Inc. + Thu, 20 Aug 2026 13:00:00 GMT + Google Notícias + + Empresas aceleram adoção de inteligência artificial no Brasil - InfoMoney + https://news.google.com/rss/articles/CBMiYWh0dHBzOi8vd3d3LmluZm9tb25leS5jb20uYnIvbmVnb2Npb3MvYWRvcGNhby1kZS1pYS1uby1icmFzaWwtY3Jlc2NlLTQwLXF1YWRyby1lc3BlY2lhbC1zZXRvci8 + CBMiYWh0dHBzOi8vd3d3LmluZm9tb25leS5jb20uYnIvbmVnb2Npb3MvYWRvcGNhby1kZS1pYS1uby1icmFzaWwtY3Jlc2NlLTQwLXF1YWRyby1lc3BlY2lhbC1zZXRvci8 + Thu, 20 Aug 2026 10:30:00 GMT + <ol><li><a href="https://news.google.com/rss/articles/CBMiYWh0dHBzOi8vd3d3LmluZm9tb25leS5jb20uYnIvbmVnb2Npb3MvYWRvcGNhby1kZS1pYS1uby1icmFzaWwtY3Jlc2NlLTQwLXF1YWRyby1lc3BlY2lhbC1zZXRvci8" target="_blank">Empresas aceleram adoção de inteligência artificial no Brasil</a>&nbsp;&nbsp;<font color="#6f6f6f">InfoMoney</font><p>Levantamento mostra crescimento expressivo na automação e ganhos de produtividade empresarial.</p></li></ol> + InfoMoney + + + Nova IA generativa promete revolucionar diagnósticos médicos - G1 + https://news.google.com/rss/articles/CBMiX2h0dHBzOi8vZzEuZ2xvYm8uY29tL3RlY25vbG9naWEvbm90aWNpYS8yMDI2LzA4LzIwL25vdmEtaWEtZ2VuZXJhdGl2YS1kaWFnbm9zdGljb3MtbWVkaWNvcy5naHRtbA + CBMiX2h0dHBzOi8vZzEuZ2xvYm8uY29tL3RlY25vbG9naWEvbm90aWNpYS8yMDI2LzA4LzIwL25vdmEtaWEtZ2VuZXJhdGl2YS1kaWFnbm9zdGljb3MtbWVkaWNvcy5naHRtbA + Thu, 20 Aug 2026 09:15:00 GMT + <p>Pesquisadores anunciam modelo capaz de detectar patologias precoces com alta acurácia.</p> + G1 + + + IA e o futuro do trabalho: desafios e regulamentações - Folha de S.Paulo + https://news.google.com/rss/articles/CBMiWWh0dHBzOi8vd3d3MS5mb2xoYS51b2wuY29tLmJyL21lcmNhZG8vMjAyNi8wOC9pYS1lLW8tZnV0dXJvLWRvLXRyYWJhbGhvLWRlc2FmaW9zLnNodG1s + CBMiWWh0dHBzOi8vd3d3MS5mb2xoYS51b2wuY29tLmJyL21lcmNhZG8vMjAyNi8wOC9pYS1lLW8tZnV0dXJvLWRvLXRyYWJhbGhvLWRlc2FmaW9zLnNodG1s + Thu, 20 Aug 2026 08:00:00 GMT + IA e o futuro do trabalho: desafios e regulamentações - Folha de S.Paulo + Folha de S.Paulo + + + Item sem link + Thu, 20 Aug 2026 07:00:00 GMT + Este item não deve ser retornado pois falta link. + + + diff --git a/tests/test_extract_google_news.py b/tests/test_extract_google_news.py new file mode 100644 index 0000000..eca5de4 --- /dev/null +++ b/tests/test_extract_google_news.py @@ -0,0 +1,355 @@ +""" +Testes unitários e de integração para o Extrator de Manchetes do Google News. + +Cobre validação de entrada, mapeamento de idiomas/locales, parsing e +higienização de XML/HTML, orquestração, decodificação de URLs e contrato de execução CLI. +""" + +from __future__ import annotations + +import json +from pathlib import Path +from unittest.mock import patch + +import pytest + +from scripts.extract_google_news import ( + ExtractionResult, + NewsArticle, + SearchQuery, + extract_google_news, + get_hl_gl_ceid, + main, + parse_google_news_rss, + resolve_article_url, + resolve_articles_urls, +) + +FIXTURE_PATH = Path(__file__).parent / "fixtures" / "google_news_sample.xml" + + +@pytest.fixture +def sample_rss_xml() -> str: + """Fixture que fornece o conteúdo do XML de exemplo para testes offline.""" + return FIXTURE_PATH.read_text(encoding="utf-8") + + +def test_get_hl_gl_ceid_default_mappings(): + """Valida o mapeamento padrão de idiomas para pares (hl, gl, ceid).""" + hl, gl, ceid = get_hl_gl_ceid("pt") + assert hl == "pt-BR" + assert gl == "BR" + assert ceid == "BR:pt-BR" + + hl, gl, ceid = get_hl_gl_ceid("en") + assert hl == "en-US" + assert gl == "US" + assert ceid == "US:en-US" + + hl, gl, ceid = get_hl_gl_ceid("es") + assert hl == "es-419" + assert gl == "AR" + assert ceid == "AR:es-419" + + hl, gl, ceid = get_hl_gl_ceid("de") + assert hl == "de" + assert gl == "DE" + assert ceid == "DE:de" + + +def test_get_hl_gl_ceid_with_custom_locale(): + """Valida a sobrescrita geográfica quando o argumento locale é especificado.""" + hl, gl, ceid = get_hl_gl_ceid("es", locale="MX") + assert hl == "es-419" + assert gl == "MX" + assert ceid == "MX:es-419" + + hl, gl, ceid = get_hl_gl_ceid("en", locale="GB") + assert hl == "en-GB" + assert gl == "GB" + assert ceid == "GB:en-GB" + + hl, gl, ceid = get_hl_gl_ceid("es", locale="ES") + assert hl == "es" + assert gl == "ES" + assert ceid == "ES:es" + + +def test_get_hl_gl_ceid_dynamic_fallback(): + """Valida fallback dinâmico para idiomas regionais não listados explicitamente.""" + hl, gl, ceid = get_hl_gl_ceid("ja_jp") + assert hl == "ja-JP" + assert gl == "JP" + assert ceid == "JP:ja-JP" + + +def test_search_query_validation(): + """Valida as regras de negócio e limites de SearchQuery.""" + # Instanciação válida + q = SearchQuery(keyword="inteligencia artificial", language="pt", max_pages=1) + assert q.clean_keyword == "inteligencia artificial" + assert q.clean_language == "pt" + assert q.clean_locale is None + assert q.max_pages == 1 + + # Palavra-chave vazia ou apenas espaços deve lançar ValueError + with pytest.raises(ValueError, match="palavra-chave"): + SearchQuery(keyword=" ", language="pt") + + # Idioma com menos de 2 caracteres deve lançar ValueError + with pytest.raises(ValueError, match="idioma"): + SearchQuery(keyword="test", language="p") + + # Intervalo de páginas fora de 1..10 deve lançar ValueError + with pytest.raises(ValueError, match="páginas"): + SearchQuery(keyword="test", language="pt", max_pages=0) + + with pytest.raises(ValueError, match="páginas"): + SearchQuery(keyword="test", language="pt", max_pages=11) + + +def test_parse_google_news_rss_with_fixture(sample_rss_xml: str): + """Valida o parsing do feed RSS, higienização de tags HTML e deduplicação.""" + articles = parse_google_news_rss(sample_rss_xml, max_pages=1) + + # 4 itens no fixture, mas 1 não possui link -> exatamente 3 válidos + assert len(articles) == 3 + + # Artigo 1: InfoMoney com HTML no description que deve ser limpo + art1 = articles[0] + assert "InfoMoney" in art1.titulo + assert art1.url.startswith("https://news.google.com/rss/articles/") + assert art1.quando_publicado == "Thu, 20 Aug 2026 10:30:00 GMT" + assert art1.pagina == 1 + assert "<" not in (art1.subtitulo or "") + assert ">" not in (art1.subtitulo or "") + assert "crescimento expressivo" in (art1.subtitulo or "") + + # Artigo 2: G1 com parágrafos limpos + art2 = articles[1] + assert "G1" in art2.titulo + assert "

    " not in (art2.subtitulo or "") + + # Artigo 3: Folha com descrição redundante/igual ao título -> subtitulo deve ser None + art3 = articles[2] + assert art3.subtitulo is None + + +def test_resolve_article_url_fallback(): + """Valida fallback gracioso de URL quando não é link do Google News ou em erro.""" + direct_url = "https://www.globo.com/noticia/123" + assert resolve_article_url(direct_url) == direct_url + + with patch( + "scripts.extract_google_news.gnewsdecoder", return_value={"status": False} + ): + gn_url = "https://news.google.com/rss/articles/fake_token" + assert resolve_article_url(gn_url) == gn_url + + +def test_resolve_article_url_success(): + """Valida resolução bem-sucedida de URL do Google News para o portal destino.""" + gn_url = "https://news.google.com/rss/articles/valid_token" + dest_url = "https://infomoney.com.br/mercados/artigo-ia" + + with patch( + "scripts.extract_google_news.gnewsdecoder", + return_value={"status": True, "decoded_url": dest_url}, + ): + resolved = resolve_article_url(gn_url) + assert resolved == dest_url + + +def test_resolve_articles_urls_batch(): + """Valida a resolução concorrente em lote de uma lista de NewsArticle.""" + articles = [ + NewsArticle( + titulo="Notícia 1", + url="https://news.google.com/rss/articles/1", + pagina=1, + ), + NewsArticle( + titulo="Notícia 2", + url="https://news.google.com/rss/articles/2", + pagina=1, + ), + ] + + with patch( + "scripts.extract_google_news.resolve_article_url", + side_effect=lambda u: f"https://destinofinal.com/{u.split('/')[-1]}", + ): + resolved = resolve_articles_urls(articles) + assert len(resolved) == 2 + assert resolved[0].url == "https://destinofinal.com/1" + assert resolved[1].url == "https://destinofinal.com/2" + + +def test_extract_google_news_orchestration_mocked(sample_rss_xml: str): + """Valida a consolidação do ExtractionResult a partir da busca mockada com URLs resolvidas.""" + query = SearchQuery( + keyword="inteligência artificial", language="pt", locale="BR", max_pages=1 + ) + + with ( + patch( + "scripts.extract_google_news._fetch_rss_content", + return_value=sample_rss_xml, + ), + patch( + "scripts.extract_google_news.resolve_article_url", + side_effect=lambda u: f"https://resolved.com/{u[-5:]}", + ), + ): + result = extract_google_news(query, resolve_urls=True) + + assert isinstance(result, ExtractionResult) + assert result.query == "inteligência artificial" + assert result.language == "pt" + assert result.locale == "BR" + assert result.total_paginas == 1 + assert result.total_itens == 3 + assert len(result.items) == 3 + assert result.scraped_at is not None + assert result.items[0].url.startswith("https://resolved.com/") + + +def test_cli_execution_stdout(sample_rss_xml: str, capsys: pytest.CaptureFixture[str]): + """Valida execução padrão do CLI com saída JSON no stdout.""" + with ( + patch( + "scripts.extract_google_news._fetch_rss_content", + return_value=sample_rss_xml, + ), + patch( + "scripts.extract_google_news.resolve_article_url", side_effect=lambda u: u + ), + ): + exit_code = main( + ["--query", "inteligencia artificial", "--lang", "pt", "--pretty"] + ) + assert exit_code == 0 + + captured = capsys.readouterr() + data = json.loads(captured.out) + assert data["query"] == "inteligencia artificial" + assert data["total_itens"] == 3 + assert len(data["items"]) == 3 + # Validar indentação presente por causa de --pretty + assert "\n " in captured.out + + +def test_cli_execution_file_output(sample_rss_xml: str, tmp_path: Path): + """Valida gravação em arquivo com criação automática de diretórios pais.""" + out_file = tmp_path / "sub_dir" / "news_out.json" + + with ( + patch( + "scripts.extract_google_news._fetch_rss_content", + return_value=sample_rss_xml, + ), + patch( + "scripts.extract_google_news.resolve_article_url", side_effect=lambda u: u + ), + ): + exit_code = main(["-q", "IA", "-p", "1", "-o", str(out_file)]) + assert exit_code == 0 + + assert out_file.exists() + data = json.loads(out_file.read_text(encoding="utf-8")) + assert data["total_itens"] == 3 + + +def test_cli_empty_query_error(capsys: pytest.CaptureFixture[str]): + """Valida tratamento de erro e código de saída 1 para parâmetro vazio.""" + exit_code = main(["--query", " "]) + assert exit_code == 1 + + captured = capsys.readouterr() + assert "Erro de validação" in captured.err + + +def test_cli_network_error_handling(capsys: pytest.CaptureFixture[str]): + """Valida tratamento de erro e código de saída 2 para falhas de rede.""" + with patch( + "scripts.extract_google_news._fetch_rss_content", + side_effect=RuntimeError("Connection refused"), + ): + exit_code = main(["--query", "IA"]) + assert exit_code == 2 + + captured = capsys.readouterr() + assert "Erro na extração" in captured.err + assert "Connection refused" in captured.err + + +# --------------------------------------------------------------------------- +# Testes E2E (End-to-End) com resolução real de rede e validação de URLs finais +# --------------------------------------------------------------------------- + + +def test_e2e_resolve_real_google_news_url(): + """Valida E2E que o decodificador resolve uma URL real do Google News para o veículo de imprensa.""" + # URL real de artigo extraída do Google News RSS + sample_gn_url = ( + "https://news.google.com/rss/articles/" + "CBMi6wFBVV95cUxQUS0tMGxacUJycDlCWXpWSGR3T0hfR1E0Q0txWjdqek9LWjNZTUo1WEx3" + "UEw3Skt1eW1Wa2VYUUE2ajNYMmpEckhsdGFXUGtmQktYX2JWa1hmclhEZEVIa3hNODhpVXNO" + "UGN4cDhmWmJMczBEUVFDNS1aX3EzRHh6VmQ3cVY0ZnZmaW9YWDZJSE9UNFJ2dXpyNFlHaVVs" + "VlY0V1FiZ0tzZ3FpRVhUYnhPbmdnOFRveW5oOVB3WDAzS3c0eWFjMDBZSERwNmRkRk1MRHZF" + "UE92UE9GMmpRcFZ5cUU2Ym1NeDdQU2tn?oc=5" + ) + + resolved_url = resolve_article_url(sample_gn_url) + + # Não deve mais ser URL do Google News + assert "news.google.com" not in resolved_url + # Deve ser uma URL absoluta http/https apontando para o portal real (TyC Sports) + assert resolved_url.startswith("http") + assert "tycsports.com" in resolved_url + + +def test_e2e_extract_google_news_live_pipeline(): + """Valida E2E o fluxo completo de busca, parsing e resolução de URLs reais ao vivo.""" + query = SearchQuery(keyword="tecnologia", language="pt", locale="BR", max_pages=1) + result = extract_google_news(query, resolve_urls=True) + + assert isinstance(result, ExtractionResult) + assert result.total_itens > 0 + assert len(result.items) == result.total_itens + + for article in result.items: + assert article.titulo + assert article.url.startswith("http") + # Garante que as URLs foram decodificadas e não permanecem no formato intermediário + assert "news.google.com/rss/articles/" not in article.url + + +def test_e2e_cli_live_file_output(tmp_path: Path): + """Valida E2E a execução do CLI com saída real em arquivo e URLs decodificadas.""" + out_file = tmp_path / "e2e_result.json" + exit_code = main( + [ + "--query", + "economia", + "--lang", + "pt", + "--max-pages", + "1", + "--output", + str(out_file), + ] + ) + + assert exit_code == 0 + assert out_file.exists() + + data = json.loads(out_file.read_text(encoding="utf-8")) + assert data["query"] == "economia" + assert data["total_itens"] > 0 + assert len(data["items"]) > 0 + + first_item = data["items"][0] + assert first_item["titulo"] + assert first_item["url"].startswith("http") + assert "news.google.com/rss/articles/" not in first_item["url"]