# Graph Report - TextNLPClassifierApp (2026-08-24) ## Corpus Check - 332 files · ~275,999 words - Verdict: corpus is large enough that graph structure adds value. ## Summary - 3443 nodes · 4553 edges · 329 communities (273 shown, 56 thin omitted) - Extraction: 99% EXTRACTED · 1% INFERRED · 0% AMBIGUOUS · INFERRED: 44 edges (avg confidence: 0.95) - Token cost: 0 input · 0 output ## Graph Freshness - Built from commit: `e1e0be13` - Run `git rev-parse HEAD` and compare to check if the graph is stale. - Run `graphify update .` after code changes (no API cost). ## Community Hubs (Navigation) - Task Planning - Convergence Workflow - SpecKit Utilities - Graphify Commands - speckit-analyze/SKILL.md - Tasks: Multilingual NLP Entity Inherence Classifier (POC) - Feature Specification Template - Graphify Rules - Implementation Planning - Feature Specification - Task Generation - Project Constitution - Constitution Template - Graphify Exports - Ponytail Configuration - Implementation Planning Template - Ponytail Help - Checklist Generation - Clarification Workflow - Implementation Workflow - Graph Query - Constitution Workflow - Feature Branch Creation - Ponytail Audit - Ponytail Metrics - Ponytail Review - Task Issue Conversion - Checklist Template - Graphify Watch Mode - Graphify Hooks - Graphify Updates - Ponytail Debt - Repository Merge - Media Transcription - Extraction Specification - Graphify Workflows - main - 1. Technical Decisions & Tradeoffs - 1. Input Schemas - 2. Basic CLI Usage Examples - 2. Standard Streams & Exit Codes - ClassificationResult - ECPSnapshot - LLMFallbackAdapter - classifier.py - content_northvolt_de.md - content_presal_pt.md - content_tangential_es.md - config.py - src/__init__.py - de/contextual.md - de/direct.md - de/not_related.md - de/tangential.md - en/contextual.md - en/direct.md - en/not_related.md - en/tangential.md - es/contextual.md - es/direct.md - es/not_related.md - es/tangential.md - fr/contextual.md - fr/direct.md - fr/not_related.md - fr/tangential.md - it/contextual.md - it/direct.md - it/not_related.md - it/tangential.md - pt/contextual.md - pt/direct.md - pt/not_related.md - pt/tangential.md - tests/__init__.py - text-nlp-classifier - test_extract_article_contents.py - 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 - 5. 📝 Conversor de Artigo JSON para Markdown - Extraction Pipeline Checklist: Article Content Multi-Engine Extractor - ModelGatewayClient - SQLiteStore - main - Feature Specification: Multilingual NLP Entity Inherence Classifier (POC) - 4. Requisitos Funcionais (FR) - Tasks: Article Content Multi-Engine Extractor - Tasks: Convert Article JSON to Markdown - Implementation Plan: Article Content Multi-Engine Extractor - 2. Cenários de Validação - 1. Technical Decisions & Tradeoffs - Implementation Plan: Multilingual NLP Entity Inherence Classifier (POC) - POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier - Specification Quality Checklist: Multilingual NLP Entity Inherence Classifier - CLI Contract: Article Content Multi-Engine Extractor - JSON Schema Contract: Article Content Multi-Engine Extractor - PRD — Seleção determinística da biblioteca de extração de conteúdo - select_article_extractor.py - 1. Text Normalization Pipeline - Tasks: Deterministic Article Content Selection - select_article_extractor - process_batch - detect_language - test_select_article_extractor.py - Feature Specification: Deterministic Content Selection - 2. Entity Descriptions & Fields - Implementation Plan: Deterministic Article Content Selection - Deterministic Content Selection Checklist: End-to-End Requirements Quality - Quickstart: Deterministic Article Content Selection - Specification Quality Checklist: Deterministic Content Selection - CLI Interface Contract: Deterministic Article Content Selection - 004-deterministic-content-selection/spec.md - convert_article_to_markdown.py - 8. Regras funcionais - 12. Critérios de aceite - PRD — Conversão de artigo JSON para Markdown - resolve_article_body - Implementation Plan: Convert Article JSON to Markdown - 2. Technical Decisions & Research Findings - Feature Specification: Convert Article JSON to Markdown - Markdown Conversion Checklist: End-to-End Requirements Quality - convert_article - 005-convert-json-markdown/plan.md - Quickstart: Convert Article JSON to Markdown - 1. Domain Entities & Schemas - 11. Requisitos não funcionais - parse_arguments - Specification Quality Checklist: Convert Article JSON to Markdown - CLI Contract: `convert_article_to_markdown.py` - 9. Interface CLI - test_convert_article_to_markdown.py - 13. Estratégia de testes - 6. Contrato de entrada - test_models.py - convert_html_to_markdown - properties - 5. Escopo - Los puntajes de River vs. Independiente Santa Fe, por la Copa Sudamericana - TyC Sports - valid_newspaper4k.md - valid_readability.md - consolidate.py - run_preflight_checks - adapter.py - validate_and_extract_enrichment - candidate/parser.py - hygiene/harness.py - SanitizedJsonLogger - InputSizeExceededError - CandidateObject - enum - Plano de testes e evals — Runtime de consolidação de artigos - Especificação de prompt, contexto e harness — Runtime - ExecutionStateMachine - Implementation Tasks: Article Consolidation and Hygiene Runtime - 🧪 Documentação da Suíte de Testes Automatizados - properties - repair-operations.schema.json - Functional Requirements - test_equivalence_mapping.py - enrichment-response.schema.json - create_manifest_dict - Catálogo de métricas e KPIs — Runtime de consolidação de artigos - article_content_hygiene - ._get_connection - Documento de Arquitetura — Runtime de consolidação de artigos - null - Runbook de produção — Runtime de consolidação de artigos - article_content_hygiene - properties - properties - PRD — Runtime de consolidação e higienização de artigos - required - properties - type - properties - build_minimal_hygiene_projection - check_zero_regex.py - properties - runtime-config.schema.json - properties - object - candidates-payload.schema.json - limits - langfuse - string - type - CLI Interface Contract: Article Consolidation and Hygiene Runtime - 2. Entity Definitions - 3. Concrete Architectural & Technical Decisions - Requirements Readiness Checklist: Article Consolidation and Hygiene Runtime - object - null - properties - calculate_execution_fingerprint - model_versions - 3. Operational Execution Scenarios - type - test_cli_subprocess_pipeline.py - clean_body_images - ecp - paths - properties - properties - properties - required - required - kept_block_ids - parametrize - 4. 🎯 Seletor Determinístico de Conteúdo de Artigos - 1. Operational Commands - sqlite - required - pricing - article-input.schema.json - properties - enum - required - Implementation Plan: Article Consolidation and Hygiene Runtime - verify_all_11_invariants - enum - required - manifest-output.schema.json - Prompts Versioned Contract: Article Consolidation and Hygiene Runtime - 6. 🚀 Runtime de Consolidação e Higienização de Artigos (006-article-consolidation-runtime) - 13. Parsing estrutural sem regex - metadata_candidates - enum - required - enum - ecp-snapshot.schema.json - hygiene-response.schema.json - 🧠 TextNLPClassifierApp - ADR-003 — Usar orquestração explícita em Python, sem LangChain ou LangGraph - required - Specification Quality Checklist: Article Consolidation and Hygiene Runtime - enum - enum - 1. 🧠 Classificador de Conteúdo e Inerência (NLP / LLM / ECP) - 10. Contrato de saída - 14. Higienização por LLM - 4. Regras mandatórias - 8. Contrato de entrada do artigo - 18. Integração ECP - 7. Orquestração - ADR-001 — Separar runtime e self-healing - ADR-002 — Iniciar o runtime após a seleção do extrator - ADR-004 — Gateway agnóstico com apenas modelos baratos no runtime - ADR-005 — Proibir regex e palavras-chave manuais em decisões textuais - ADR-006 — LLM seleciona evidências e propõe reparos, não regenera o artigo - ADR-007 — Tornar o ECP obrigatório antes de toda saída editorial - ADR-008 — Langfuse no runtime e Promptfoo no CI - ADR-009 — Persistir estado em SQLite e saídas no filesystem - ADR-010 — Produzir resultado estruturado sempre e Markdown condicionalmente - ADR-011 — Definir SLOs de custo e latência a partir de staging - 7. Checklist de release - eval_runner.py - ecp-profile.schema.json - prompt_versions - 12. Preparação determinística - 15. Pequenos reparos textuais - 9. Contrato do ECP - 15. Higienização extrativa - 16. Pequenos reparos - 20. Model Gateway - 23. Observabilidade - 3. Limites do sistema - 9. Política de dependências - 12. Monitoramento - 14. Reprocessamento - 16. Falha do provider primário - 21. Falha do SQLite - 6. Configuração obrigatória - build_release_metadata.py - removal_reasons - kept_image_ids - test_prompts_contract.py - Release Quality Summary Report - Comandos e Utilitários CLI - 13. Candidatos e proveniência - 16. Imagens e links - 17. Gate ECP - 18. Enriquecimento - 5. Escopo - 14. Modelo de candidatos - 22. Renderer e arquivos - Architecture Decision Records — Runtime de consolidação de artigos - 15. Falha de validação de entrada - 17. Falha semântica ou de grounding - 18. Falha do ECP - 20. Falha do Langfuse - 22. Falha de filesystem ou disco - 26. Rollback manual - ci_check.py - prepare_reference_20.py - test_contract_parity.py - test_zero_regex_enforcement.py - sample_rss_xml - runtime/__init__.py - adapters/__init__.py - tools/__init__.py - test_normalize_list_author_url_filtering - test_normalize_list_deduplication_preserves_case_and_order - test_normalize_date_iso_8601_variants - test_normalize_date_invalid_and_placeholders - test_metadata_priority_original_url_all_fallbacks - test_normalize_scalar_whitespace_collapsing - test_normalize_scalar_non_string_types - 2. 📰 Extrator de Manchetes do Google News - ⚙️ Instalação e Setup - 3. 📄 Extrator e Parser Multimotor de Artigos ## God Nodes (most connected - your core abstractions) 1. `ECPSnapshot` - 70 edges 2. `InherenceClassifier` - 62 edges 3. `LLMFallbackAdapter` - 45 edges 4. `SQLiteStore` - 37 edges 5. `null` - 36 edges 6. `Documento de Arquitetura — Runtime de consolidação de artigos` - 34 edges 7. `Runbook de produção — Runtime de consolidação de artigos` - 33 edges 8. `string` - 31 edges 9. `load_schema()` - 30 edges 10. `create_schema_registry()` - 30 edges ## Surprising Connections (you probably didn't know these) - `test_extract_google_news_orchestration_mocked()` --uses--> `ExtractionResult` [INFERRED] tests/tools/test_extract_google_news.py → scripts/extract_google_news.py - `test_runtime_config_fixture_loads_successfully()` --calls--> `load_runtime_config()` [EXTRACTED] tests/runtime/contract/test_runtime_config_contract.py → src/runtime/core/config.py - `classifier()` --uses--> `InherenceClassifier` [INFERRED] tests/tools/test_benchmark_24.py → src/tools/classifier.py - `test_funnel_multilingual_language_detection()` --uses--> `InherenceClassifier` [INFERRED] tests/tools/test_e2e_text_analysis_pipeline.py → src/tools/classifier.py - `test_classification_result_serialization()` --calls--> `ClassificationResult` [EXTRACTED] tests/tools/test_models.py → src/tools/models.py ## Import Cycles - None detected. ## Communities (329 total, 56 thin omitted) ### Community 0 - "Task Planning" Cohesion: 0.07 Nodes (26): Dependencies & Execution Order, Format: `[ID] [P?] [Story] Description`, Implementation for User Story 1, Implementation for User Story 2, Implementation for User Story 3, Implementation Strategy, Incremental Delivery, MVP First (User Story 1 Only) (+18 more) ### Community 1 - "Convergence Workflow" Cohesion: 0.12 Nodes (15): 1. Initialize Convergence Context, 2. Load Artifacts (Progressive Disclosure), 3. Build the Intent Inventory, 4. Assess the Codebase and Classify Findings, 5. Assign Severity, 6. Present the In-Session Findings Summary, 7. Append Convergence Tasks (or report converged), 8. Provide Next Actions (Handoff) (+7 more) ### Community 2 - "SpecKit Utilities" Cohesion: 0.23 Nodes (13): Find-SpecifyRoot(), Format-SpecKitCommand(), Get-CurrentBranch(), Get-FeaturePathsEnv(), Get-InvokeSeparator(), Get-NormalizedPriority(), Get-Python3Command(), Get-RepoRoot() (+5 more) ### Community 3 - "Graphify Commands" Cohesion: 0.08 Nodes (24): For /graphify add and --watch, For /graphify query, For the commit hook and native CLAUDE.md integration, For --update and --cluster-only, /graphify, Honesty Rules, Interpreter guard for subcommands, Part A - Structural extraction for code files (+16 more) ### Community 4 - "speckit-analyze/SKILL.md" 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.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 6 - "Feature Specification Template" Cohesion: 0.15 Nodes (12): Assumptions, Edge Cases, Feature Specification: [FEATURE NAME], Functional Requirements, Key Entities *(include if feature involves data)*, Measurable Outcomes, Requirements *(mandatory)*, Success Criteria *(mandatory)* (+4 more) ### Community 8 - "Implementation Planning" Cohesion: 0.18 Nodes (10): Completion Report, Done When, Key rules, Mandatory Post-Execution Hooks, Outline, Phase 0: Outline & Research, Phase 1: Design & Contracts, Phases (+2 more) ### Community 9 - "Feature Specification" Cohesion: 0.18 Nodes (10): Completion Report, Done When, For AI Generation, Mandatory Post-Execution Hooks, Outline, Pre-Execution Checks, Quick Guidelines, Section Requirements (+2 more) ### Community 10 - "Task Generation" Cohesion: 0.18 Nodes (10): Checklist Format (REQUIRED), Completion Report, Done When, Mandatory Post-Execution Hooks, Outline, Phase Structure, Pre-Execution Checks, Task Generation Rules (+2 more) ### Community 11 - "Project Constitution" Cohesion: 0.18 Nodes (10): Core Principles, Governance, [PRINCIPLE_1_NAME], [PRINCIPLE_2_NAME], [PRINCIPLE_3_NAME], [PRINCIPLE_4_NAME], [PRINCIPLE_5_NAME], [PROJECT_NAME] Constitution (+2 more) ### Community 12 - "Constitution Template" Cohesion: 0.18 Nodes (10): Core Principles, Governance, [PRINCIPLE_1_NAME], [PRINCIPLE_2_NAME], [PRINCIPLE_3_NAME], [PRINCIPLE_4_NAME], [PRINCIPLE_5_NAME], [PROJECT_NAME] Constitution (+2 more) ### Community 13 - "Graphify Exports" Cohesion: 0.22 Nodes (8): graphify reference: extra exports and benchmark, Step 6b - Wiki (only if --wiki flag), Step 7 - Neo4j export (only if --neo4j or --neo4j-push flag), Step 7a - FalkorDB export (only if --falkordb or --falkordb-push flag), Step 7b - SVG export (only if --svg flag), Step 7c - GraphML export (only if --graphml flag), Step 7d - MCP server (only if --mcp flag), Step 8 - Token reduction benchmark (only if total_words > 5000) ### Community 14 - "Ponytail Configuration" Cohesion: 0.22 Nodes (8): Boundaries, Intensity, Output, Persistence, Ponytail, Rules, The ladder, When NOT to be lazy ### Community 15 - "Implementation Planning Template" Cohesion: 0.22 Nodes (8): Complexity Tracking, Constitution Check, Documentation (this feature), Implementation Plan: [FEATURE], Project Structure, Source Code (repository root), Summary, Technical Context ### Community 16 - "Ponytail Help" Cohesion: 0.25 Nodes (7): Configure Default Mode, Deactivate, Levels, More, Ponytail Help, Skills, Update ### Community 17 - "Checklist Generation" Cohesion: 0.25 Nodes (7): Anti-Examples: What NOT To Do, Checklist Purpose: "Unit Tests for English", Example Checklist Types & Sample Items, Execution Steps, Post-Execution Checks, Pre-Execution Checks, User Input ### Community 18 - "Clarification Workflow" Cohesion: 0.29 Nodes (6): Completion Report, Done When, Mandatory Post-Execution Hooks, Outline, Pre-Execution Checks, User Input ### Community 19 - "Implementation Workflow" Cohesion: 0.29 Nodes (6): Completion Report, Done When, Mandatory Post-Execution Hooks, Outline, Pre-Execution Checks, User Input ### Community 20 - "Graph Query" Cohesion: 0.33 Nodes (5): For /graphify explain, For /graphify path, graphify reference: query, path, explain, Step 0 — Constrained query expansion (REQUIRED before traversal), Step 1 — Traversal ### Community 21 - "Constitution Workflow" Cohesion: 0.33 Nodes (5): Outline, Post-Execution Checks, Pre-Execution Checks, Scope Guard, User Input ### Community 23 - "Ponytail Audit" Cohesion: 0.40 Nodes (4): Boundaries, Hunt, Output, Tags ### Community 24 - "Ponytail Metrics" Cohesion: 0.40 Nodes (4): Boundaries, Honesty boundary, Ponytail Gain, Scoreboard ### Community 25 - "Ponytail Review" Cohesion: 0.40 Nodes (4): Boundaries, Examples, Format, Scoring ### Community 26 - "Task Issue Conversion" Cohesion: 0.40 Nodes (4): Outline, Post-Execution Checks, Pre-Execution Checks, User Input ### Community 27 - "Checklist Template" Cohesion: 0.40 Nodes (4): [Category 1], [Category 2], [CHECKLIST TYPE] Checklist: [FEATURE NAME], Notes ### Community 28 - "Graphify Watch Mode" Cohesion: 0.50 Nodes (3): For /graphify add, For --watch, graphify reference: add a URL and watch a folder ### Community 29 - "Graphify Hooks" Cohesion: 0.50 Nodes (3): For git commit hook, For native CLAUDE.md integration, graphify reference: commit hook and native CLAUDE.md integration ### Community 30 - "Graphify Updates" Cohesion: 0.50 Nodes (3): For --cluster-only, For --update (incremental re-extraction), graphify reference: incremental update and cluster-only ### Community 31 - "Ponytail Debt" Cohesion: 0.50 Nodes (3): Boundaries, Output, Scan ### Community 40 - "main" Cohesion: 0.14 Nodes (17): ArgumentParser, CaptureFixture, build_parser(), main(), Cria e configura o parser de argumentos CLI., Ponto de entrada do script CLI., Path, Valida execução padrão do CLI com saída JSON no stdout. (+9 more) ### Community 41 - "1. Technical Decisions & Tradeoffs" Cohesion: 0.22 Nodes (8): 1. Technical Decisions & Tradeoffs, 2. Standardized Error Handling Strategy, Decision 1: Execution Engine & CLI Architecture, Decision 2: Multilingual Language Detection & Normalization (Tier 1 Core), Decision 3: Materialized ECP Snapshot Contract & Matching Logic, Decision 4: Tier 2 (Embeddings) & Tier 3 (LLM) Optional Adapters, Decision 5: Controlled 24-Case POC Benchmark Suite, Technical Research & Architecture Decisions (POC) ### Community 42 - "1. Input Schemas" Cohesion: 0.25 Nodes (7): 1.1 ECP Snapshot Schema (`snapshot.json`), 1.2 Content Item Schema (`content.md`), 1. Input Schemas, 2.1 Classification Success Result Schema (`result.json`), 2.2 Error Result Schema, 2. Output Schemas, Data Models & Schemas (POC) ### Community 43 - "2. Basic CLI Usage Examples" Cohesion: 0.25 Nodes (7): 1. Prerequisites & Installation, 2.1 Direct Inherence (Portuguese), 2.2 Contextual Inherence via Graph Snapshot (German), 2.3 Tangential Mention (Spanish), 2. Basic CLI Usage Examples, 3. Running the Controlled 24-Case Benchmark, Quickstart & Validation Guide (POC) ### Community 44 - "2. Standard Streams & Exit Codes" 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 - "ClassificationResult" Cohesion: 0.08 Nodes (22): 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 (+14 more) ### Community 46 - "ECPSnapshot" Cohesion: 0.05 Nodes (69): InherenceClassifier, Tier 1 Deterministic NLP Entity Inherence Classifier with optional Tier 2 /…, ECPSnapshot, Unit tests for optional adapter interfaces (Tier 2 / Tier 3)., test_classifier_with_adapter_flags(), Content about apple fruit/culinary recipe against Apple Inc. tech entity., test_adversarial_apple_fruit_recipe(), petrobras_ecp() (+61 more) ### Community 47 - "LLMFallbackAdapter" Cohesion: 0.06 Nodes (34): LLMFallbackAdapter, Executes LLM fallback for ambiguous boundary cases. Returns a refined…, Parses and validates structured JSON response from LLM., Optional adapter for LLM fallback boundary disambiguation., Returns True if an API key or custom provider function is configured., Constructs an expert-engineered prompt for multilingual entity inherence…, test_llm_adapter_interface(), Cenário 1: Artigo com alta densidade de âncoras do River Plate. Oráculo:… (+26 more) ### Community 48 - "classifier.py" Cohesion: 0.06 Nodes (34): Core deterministic classification engine (Tier 1 core)., DecisionCategory, MatchedGraphEntity, Enum, Data models and validation schemas for Multilingual NLP Entity Inherence…, RelatedEntity, Adversarial and robustness test suite for Multilingual NLP Entity Inherence…, Run CLI via subprocess without --output and verify stdout is pure parseable… (+26 more) ### Community 52 - "config.py" Cohesion: 0.09 Nodes (35): calculate_exact_file_sha256(), create_schema_registry(), load_schema(), Any, Path, Registry, Runtime configuration loading, validation, and release metadata byte hash…, Reusable validation ensuring no powerful or uncertified models are used in any… (+27 more) ### Community 80 - "test_extract_article_contents.py" Cohesion: 0.06 Nodes (56): ArticleCrawler, extract_all_engines(), ExtractedArticle, ExtractionBatchReport, InputArticle, load_search_json(), log_info(), main() (+48 more) ### 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.15 Nodes (18): extract_google_news(), _fetch_rss_content(), get_hl_gl_ceid(), NewsArticle, _normalize_text_for_comparison(), parse_google_news_rss(), Mapeia idioma e locale para os parâmetros hl, gl e ceid do Google News., Remove pontuação e espaços extras para comparação de redundância. (+10 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.15 Nodes (15): 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 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…, Valida o mapeamento padrão de idiomas para pares (hl, gl, ceid)., Valida a sobrescrita geográfica quando o argumento locale é especificado. (+7 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 - "5. 📝 Conversor de Artigo JSON para Markdown" Cohesion: 0.20 Nodes (10): 1. Conversão Padrão, 2. Conversão com Caminho de Destino Personalizado, 3. Uso Programático em Python, 5. 📝 Conversor de Artigo JSON para Markdown, Argumentos e Flags CLI, Exemplos Práticos de Uso, Isolamento Estrito de Extratores e Fallback, Matriz Determinística de Metadados (+2 more) ### Community 98 - "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor" Cohesion: 0.05 Nodes (34): 1. Requirement Completeness, 2. Requirement Clarity & Non-Ambiguity, 3. Requirement Consistency & Data Contracts, 4. Scenario & Edge Case Coverage, 5. Non-Functional & Operational Readiness, Extraction Pipeline Checklist: Article Content Multi-Engine Extractor, Notes, Content Quality (+26 more) ### Community 99 - "ModelGatewayClient" Cohesion: 0.08 Nodes (33): ModelRoleConfig, RuntimeConfig, RuntimeLimits, RuntimeObservabilityConfig, RuntimePricing, RuntimeStoragePaths, DeepSeekAdapter, GroqAdapter (+25 more) ### Community 100 - "SQLiteStore" Cohesion: 0.08 Nodes (36): main(), Any, Path, State and artifact reconciliation CLI., reconcile_runtime(), flush_telemetry_queue(), main(), Path (+28 more) ### Community 101 - "main" Cohesion: 0.08 Nodes (29): emit_error(), main(), parse_args(), Namespace, ClassificationError, ErrorCode, str, parametrize (+21 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 - "4. Requisitos Funcionais (FR)" Cohesion: 0.10 Nodes (20): 1.1 Objetivo do Produto, 1. Visão Geral e Contexto, 2. Personas e Casos de Uso, 3. Arquitetura e Fluxo do Sistema, 4. Requisitos Funcionais (FR), 5. Requisitos Não Funcionais (NFR), 6.1 Esquema do JSON de Entrada (`Input`), 6.2 Esquema do JSON Consolidado de Saída (`Output`) (+12 more) ### Community 104 - "Tasks: Article Content Multi-Engine Extractor" Cohesion: 0.11 Nodes (18): Dependencies & Execution Order, Entrega Incremental, Implementation Strategy, Implementação da User Story 1, Implementação da User Story 2, Implementação da User Story 3, MVP First (User Story 1 Only), Oportunidades de Execução Paralela (+10 more) ### Community 105 - "Tasks: Convert Article JSON to Markdown" Cohesion: 0.11 Nodes (19): Dependencies & Execution Order, Implementation for User Story 1, Implementation for User Story 2, Implementation for User Story 3, Implementation Strategy, Incremental Delivery, MVP First (User Story 1 Only), Parallel Opportunities (+11 more) ### Community 106 - "Implementation Plan: Article Content Multi-Engine Extractor" Cohesion: 0.17 Nodes (11): Constitution Check, Documentation (this feature), Implementation Phases, Implementation Plan: Article Content Multi-Engine Extractor, Phase 0: Outline & Research *(Completed)*, Phase 1: Design & Contracts *(Completed)*, Phase 2: Tasks & Execution *(Completed)*, Project Structure (+3 more) ### Community 107 - "2. Cenários de Validação" Cohesion: 0.22 Nodes (8): 1. Pré-requisitos, 2. Cenários de Validação, 3. Validação Automatizada de Testes, Cenário 1: Extração com Amostragem Rápida (Limit 2), Cenário 2: Caminho Customizado de Saída, Cenário 3: Modo Silencioso (`--silent`), Cenário 4: Resiliência contra URLs Inválidas, Quickstart & Validation Guide: Article Content Multi-Engine Extractor ### Community 108 - "1. Technical Decisions & Tradeoffs" Cohesion: 0.22 Nodes (8): 1. Technical Decisions & Tradeoffs, Decision 1: Motor de Navegação e Renderização com `foxcape` em Sessão Única, Decision 2: Orquestração Tripla de Extração de Conteúdo (NLP & Web Scraping), Decision 3: Resiliência e Isolamento de Falhas por Camada, Decision 4: Herança Inteligente de Idioma para NLP, Decision 5: Gerenciamento de Memória e Descarte do Raw HTML, Decision 6: Segregação de Streams e Feedback Visual em `stderr`, Research: Article Content Multi-Engine Extractor ### Community 109 - "Implementation Plan: Multilingual NLP Entity Inherence Classifier (POC)" Cohesion: 0.25 Nodes (8): Complexity Tracking, Constitution Check, Documentation (this feature), Implementation Plan: Multilingual NLP Entity Inherence Classifier (POC), Project Structure, Source Code (repository root), Summary, Technical Context ### Community 110 - "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier" Cohesion: 0.29 Nodes (7): 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 ### Community 111 - "Specification Quality Checklist: Multilingual NLP Entity Inherence Classifier" Cohesion: 0.33 Nodes (5): Content Quality, Feature Readiness, Notes, Requirement Completeness, Specification Quality Checklist: Multilingual NLP Entity Inherence Classifier ### Community 112 - "CLI Contract: Article Content Multi-Engine Extractor" Cohesion: 0.33 Nodes (5): 1. Comando de Execução, 2. Argumentos e Flags, 3. Códigos de Saída (Exit Codes), 4. Comportamento de Streams (I/O), CLI Contract: Article Content Multi-Engine Extractor ### Community 114 - "JSON Schema Contract: Article Content Multi-Engine Extractor" Cohesion: 0.50 Nodes (3): 1. Schema de Entrada (Input JSON), 2. Schema de Saída (Output JSON), JSON Schema Contract: Article Content Multi-Engine Extractor ### Community 115 - "PRD — Seleção determinística da biblioteca de extração de conteúdo" Cohesion: 0.07 Nodes (29): 10. Requisitos não funcionais, 11. Critérios de aceite, 12. Casos obrigatórios de teste, 13. Definition of Done, 1. Contexto, 2. Objetivo, 3.1 Incluído, 3.2 Fora do escopo (+21 more) ### Community 116 - "select_article_extractor.py" Cohesion: 0.14 Nodes (19): ArticleSelectionResult, BatchProcessingResult, break_priority_tie(), calculate_consensus_metrics(), ExtractorCandidate, form_active_set(), main(), parse_args() (+11 more) ### Community 117 - "1. Text Normalization Pipeline" Cohesion: 0.11 Nodes (18): 1. Text Normalization Pipeline, 2. 5-Token Shingles & Consensus Metrics, 3. Regras de Decisão, Empate Técnico e Desempate Hierárquico, 4. Estratégia de I/O Não Destrutiva e Escrita Atômica, Alternatives Considered, Context, Context, Context (+10 more) ### Community 118 - "Tasks: Deterministic Article Content Selection" Cohesion: 0.11 Nodes (18): Dependencies & Execution Order, Implementation for User Story 1, Implementation for User Story 2, Implementation for User Story 3, Implementation Strategy, Incremental Delivery (Phases 4, 5 & 6), MVP First (Phases 1, 2 & 3), Parallel Opportunities (+10 more) ### Community 119 - "select_article_extractor" Cohesion: 0.08 Nodes (35): CandidateStatus, extract_candidate_data(), ExtractorName, Any, Enum, str, Extrai campo de texto, erro e calcula tokens/shingles para um motor., Nomes canônicos e catálogo fechado dos motores de extração. (+27 more) ### Community 120 - "process_batch" Cohesion: 0.11 Nodes (24): atomic_save_json(), process_batch(), Path, Salva dados em JSON de forma atômica utilizando arquivo temporário e rename., Lê o JSON de entrada, valida a estrutura, processa todos os artigos e grava o…, Path, CT-012: A entrada já contém selected_extractor -> Recalcular e substituir…, CT-013: articles está vazio -> Gerar saída válida com articles vazio. (+16 more) ### Community 121 - "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) ### Community 122 - "test_select_article_extractor.py" Cohesion: 0.18 Nodes (16): generate_shingles(), normalize_text(), Executa a normalização determinística para comparação: 1. Decodificar entidades…, Gera conjunto de shingles ordenados de tamanho window_size (padrão 5). - Se…, Suíte de Testes Automatizados para o Seletor Determinístico de Extrator. Cobre…, Garante que marcação de imagem Markdown ![alt](url) seja descartada e link…, E2E: Executa scripts/select_article_extractor.py como subprocesso real na linha…, test_e2e_cli_subprocess_real_execution() (+8 more) ### Community 123 - "Feature Specification: Deterministic Content Selection" Cohesion: 0.17 Nodes (12): Assumptions, Edge Cases, Feature Specification: Deterministic Content Selection, Functional Requirements, Key Entities *(include if feature involves data)*, Measurable Outcomes, Requirements *(mandatory)*, Success Criteria *(mandatory)* (+4 more) ### Community 124 - "2. Entity Descriptions & Fields" Cohesion: 0.18 Nodes (11): 1. Domain Entities & Value Types, 2. Entity Descriptions & Fields, 3. JSON Schema Mapping, `ArticleSelectionResult` (Dataclass), `BatchProcessingResult` (Dataclass), `CandidateStatus` (Enum), Data Model: Deterministic Content Selection, Entrada (+3 more) ### Community 125 - "Implementation Plan: Deterministic Article Content Selection" Cohesion: 0.18 Nodes (11): Constitution Check, Documentation (this feature), Implementation Phases, Implementation Plan: Deterministic Article Content Selection, Phase 0: Outline & Research *(Completed)*, Phase 1: Design & Contracts *(Completed)*, Phase 2: Tasks & Execution *(Next Step via `/speckit-tasks`)*, Project Structure (+3 more) ### Community 126 - "Deterministic Content Selection Checklist: End-to-End Requirements Quality" Cohesion: 0.25 Nodes (7): Candidate State Transitions & Resilience, Decision & Tie-Breaking Hierarchy, Deterministic Content Selection Checklist: End-to-End Requirements Quality, JSON Schema Integrity & Atomic I/O, Notes, Shingles & Consensus Metric Formulation, Text Normalization & Tokenization Quality ### Community 127 - "Quickstart: Deterministic Article Content Selection" Cohesion: 0.29 Nodes (7): 1. Pré-requisitos, 2. Execução Rápida via CLI, 3. Execução dos Testes Automatizados, 4. Validação Programática / Uso como Módulo Python, Cenário 1: Selecionar o melhor extrator para uma extração existente, Cenário 2: Especificar caminho de saída customizado e modo verboso, Quickstart: Deterministic Article Content Selection ### Community 128 - "Specification Quality Checklist: Deterministic Content Selection" Cohesion: 0.33 Nodes (5): Content Quality, Feature Readiness, Notes, Requirement Completeness, Specification Quality Checklist: Deterministic Content Selection ### Community 129 - "CLI Interface Contract: Deterministic Article Content Selection" Cohesion: 0.33 Nodes (5): 1. Command Syntax, 2. Arguments and Flags, 3. Standard Streams (I/O), 4. Exit Codes, CLI Interface Contract: Deterministic Article Content Selection ### Community 130 - "004-deterministic-content-selection/spec.md" Cohesion: 0.29 Nodes (3): 1. Input JSON Schema, 2. Output JSON Schema, JSON Schema Contract: Deterministic Article Content Selection ### Community 131 - "convert_article_to_markdown.py" Cohesion: 0.19 Nodes (17): _get_dict(), normalize_date(), normalize_list(), normalize_scalar(), Any, Interpreta datas ISO 8601 e RFC 2822 preservando fuso horário ou YYYY-MM-DD…, Valida se a URL é absoluta com protocolo http ou https e hostname não vazio., Retorna o dicionário associado à chave ou um dicionário vazio caso não seja… (+9 more) ### Community 132 - "8. Regras funcionais" Cohesion: 0.13 Nodes (15): 8. Regras funcionais, RF-001 — Receber um único artigo, RF-002 — Respeitar o extrator selecionado, RF-003 — Resolver o corpo dentro do extrator selecionado, RF-004 — Selecionar metadados deterministicamente, RF-005 — Priorizar metadados por campo, RF-006 — Normalizar valores escalares, RF-007 — Normalizar listas (+7 more) ### Community 133 - "12. Critérios de aceite" Cohesion: 0.14 Nodes (14): 12. Critérios de aceite, CA-001 — Trafilatura selecionada, CA-002 — Newspaper4k selecionado, CA-003 — Readability selecionado, CA-004 — Fallback dentro do extrator, CA-005 — Proibição de fallback de corpo entre extratores, CA-006 — Metadado vindo de outro extrator, CA-007 — Obrigatórios presentes (+6 more) ### Community 134 - "PRD — Conversão de artigo JSON para Markdown" Cohesion: 0.17 Nodes (11): 10. Tratamento de erros, 14. Definition of Done, 15. Dependência técnica escolhida, 1. Visão geral, 2. Problema, 3. Objetivo, 4. História do usuário, 7.1 Arquivo (+3 more) ### Community 135 - "resolve_article_body" Cohesion: 0.20 Nodes (10): Obtém o corpo do artigo exclusivamente do selected_extractor com fallback…, resolve_article_body(), Testa prioridade trafilatura.markdown sobre trafilatura.text., Testa prioridade newspaper4k.article_html sobre newspaper4k.text., Testa prioridade readability.cleaned_html sobre readability.cleaned_text., Garante erro ao receber selected_extractor ausente ou não reconhecido., test_resolve_article_body_invalid_selected_extractor(), test_resolve_article_body_newspaper4k_primary_and_fallback() (+2 more) ### Community 136 - "Implementation Plan: Convert Article JSON to Markdown" Cohesion: 0.17 Nodes (12): Complexity Tracking, Constitution Check, Documentation (this feature), Implementation Phases, Implementation Plan: Convert Article JSON to Markdown, Phase 0: Outline & Research *(Completed)*, Phase 1: Design & Contracts *(Completed)*, Phase 2: Tasks & Implementation Breakdown *(Next: `/speckit-tasks`)* (+4 more) ### Community 137 - "2. Technical Decisions & Research Findings" Cohesion: 0.17 Nodes (11): 1. Executive Summary & Goals, 2. Technical Decisions & Research Findings, 3. Technology Stack & Dependencies, Decision 1: HTML-to-Markdown Engine Selection, Decision 2: Direct Markdown Handling for Trafilatura, Decision 3: Metadata Normalization & Priority Resolution Pipeline, Decision 4: Date Parsing Strategy (ISO 8601 & RFC 2822), Decision 5: URL Validation & Media Filtering (+3 more) ### Community 138 - "Feature Specification: Convert Article JSON to Markdown" Cohesion: 0.17 Nodes (12): Assumptions, Edge Cases, Feature Specification: Convert Article JSON to Markdown, Functional Requirements, Key Entities, Measurable Outcomes, Requirements *(mandatory)*, Success Criteria *(mandatory)* (+4 more) ### Community 139 - "Markdown Conversion Checklist: End-to-End Requirements Quality" Cohesion: 0.18 Nodes (11): 1. Validação de Entrada, Tipagem & Isolamento de Lotes, 2. Isolamento Estrito de Extrator & Conversão de Conteúdo (HTML/MD), 3. Resolução Determinística de Metadados & Mapeamento de SELECIONADO, 4. Normalização de Escalares, Placeholders & Sanitização de Listas, 5. Normalização de Datas, Fusos & Validação Estrita de URLs, 6. Sanitização Editorial, Tratamento de Imagens & Título Duplicado, 7. Estrutura, Sintaxe do Markdown de Saída & Restrições, 8. Interface CLI, Tratamento de Erros & Atomicidade (+3 more) ### Community 140 - "convert_article" Cohesion: 0.15 Nodes (13): assemble_markdown_document(), convert_article(), Path, Remove o primeiro título H1 do corpo somente quando ele for igual ao título…, Monta a estrutura final do documento Markdown respeitando a ordem estrita do…, Executa a leitura do JSON, validação, conversão e escrita atômica do arquivo…, remove_duplicate_initial_h1(), Testa remoção de H1 inicial coincidente com título com variações de espaços e… (+5 more) ### Community 141 - "005-convert-json-markdown/plan.md" Cohesion: 0.33 Nodes (3): 1. Output Document Specification, 2. Formatting & Syntax Constraints, Markdown Schema Contract: Output Article Markdown ### Community 142 - "Quickstart: Convert Article JSON to Markdown" Cohesion: 0.22 Nodes (8): 1. Prerequisites & Setup, 2. Running the CLI Tool, 3. Verification & Testing, Basic Conversion (Default Output Path), Custom Destination Path, Quickstart: Convert Article JSON to Markdown, Run All Unit & Integration Tests, Run Linter & Type Checker ### Community 143 - "1. Domain Entities & Schemas" Cohesion: 0.25 Nodes (8): 1. Domain Entities & Schemas, 2. Priority Resolution Matrix, Data Model: Convert Article JSON to Markdown, Entity 1: `ArticleInput` (Source JSON), Entity 2: `ExtractorBlock` (Per-Extractor Data), Entity 3: `ResolvedArticleMetadata`, Entity 4: `MarkdownDocument`, Validation Rules: ### Community 144 - "11. Requisitos não funcionais" Cohesion: 0.29 Nodes (7): 11. Requisitos não funcionais, RNF-001 — Determinismo, RNF-002 — Compatibilidade, RNF-003 — Execução local, RNF-004 — Integridade, RNF-005 — Manutenibilidade, RNF-006 — Qualidade ### Community 145 - "parse_arguments" Cohesion: 0.29 Nodes (7): main(), parse_arguments(), Namespace, Configura o parser de argumentos do CLI., Ponto de entrada do CLI., Testa a chamada direta do parse_arguments., test_parse_arguments_api_direct() ### Community 146 - "Specification Quality Checklist: Convert Article JSON to Markdown" Cohesion: 0.33 Nodes (5): Content Quality, Feature Readiness, Notes, Requirement Completeness, Specification Quality Checklist: Convert Article JSON to Markdown ### Community 147 - "CLI Contract: `convert_article_to_markdown.py`" Cohesion: 0.33 Nodes (5): 1. Script Signature, 2. Command-Line Arguments, 3. Exit Codes, 4. Standard Stream Behavior, CLI Contract: `convert_article_to_markdown.py` ### Community 148 - "9. Interface CLI" Cohesion: 0.40 Nodes (5): 9.1 Script, 9.2 Argumentos, 9.3 Exemplos, 9.4 Saída do processo, 9. Interface CLI ### Community 149 - "test_convert_article_to_markdown.py" Cohesion: 0.08 Nodes (25): Suíte de Testes Automatizados para Conversão de Artigo JSON para Markdown.…, Testa divisão por ponto e vírgula na string e vírgulas em elementos de lista…, Valida parsing de datas no formato RFC 2822 (usado em feeds RSS e cabeçalhos…, Valida a cadeia de fallback completa para o campo TÍTULO (6 níveis)., Garante que subtítulo idêntico ao título seja automaticamente omitido (None)., Valida decodificação de entidades HTML nomeadas e numéricas., Garante correspondência exata byte a byte para Trafilatura, Newspaper4k e…, Garante que múltiplas execuções no mesmo arquivo produzam hashes SHA-256… (+17 more) ### Community 150 - "13. Estratégia de testes" Cohesion: 0.50 Nodes (4): 13.1 Testes unitários, 13.2 Testes de integração do CLI, 13.3 Casos de resultado esperado, 13. Estratégia de testes ### Community 151 - "6. Contrato de entrada" Cohesion: 0.50 Nodes (4): 6.1 Formato, 6.2 Valores aceitos para `selected_extractor`, 6.3 Campos obrigatórios após a resolução, 6. Contrato de entrada ### Community 152 - "test_models.py" Cohesion: 0.11 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., Classify inherence of content against an ECP snapshot., Any, extract_evidence_snippets(), extract_sentences() (+12 more) ### Community 153 - "convert_html_to_markdown" Cohesion: 0.33 Nodes (6): convert_html_to_markdown(), Converte HTML para Markdown usando títulos ATX, removendo scripts e estilos., Valida conversão de elementos HTML estruturados para Markdown com títulos ATX., Testa conversão de HTML vazio retornando string vazia., test_convert_html_to_markdown_empty_or_whitespace(), test_convert_html_to_markdown_rich_formatting() ### Community 154 - "properties" Cohesion: 0.06 Nodes (48): endpoint_url, enrichment_prompt_version, enrichment_schema_version, hygiene_prompt_version, hygiene_schema_version, max_retries, parameters, timeout_seconds (+40 more) ### Community 155 - "5. Escopo" Cohesion: 0.67 Nodes (3): 5.1 Incluído, 5.2 Fora do escopo, 5. Escopo ### Community 159 - "consolidate.py" Cohesion: 0.09 Nodes (28): main(), Any, Path, Single-article consolidation runtime CLI entrypoint., run_consolidation(), setup_signal_handlers(), _signal_handler(), validate_article_schema() (+20 more) ### Community 160 - "run_preflight_checks" Cohesion: 0.31 Nodes (7): main(), Any, Path, Preflight configuration and environment certification CLI., run_preflight_checks(), Unit tests for preflight verification against release metadata., test_preflight_checks_pass() ### Community 161 - "adapter.py" Cohesion: 0.17 Nodes (13): ECPClassificationAdapter, load_ecp_schema_registry(), Any, Registry, ECP classification adapter consuming src.classifier.InherenceClassifier., Classifies content_md against ecp_dict using InherenceClassifier., validate_ecp_snapshot(), Contract tests for ecp-snapshot.schema.json and local referencing.Registry… (+5 more) ### Community 162 - "validate_and_extract_enrichment" Cohesion: 0.18 Nodes (15): build_minimal_enrichment_projection(), EnrichmentFailedError, normalize_tag(), Any, ValueError, Post-ECP entity sentiment and native tags enrichment harness., Raised when post-ECP enrichment fails and cannot be recovered., Normalizes tag text: NFKC Unicode, lowercase, collapsed spaces without regex. (+7 more) ### Community 163 - "candidate/parser.py" Cohesion: 0.17 Nodes (17): build_candidates_payload(), _extract_plain_text(), parse_metadata_candidates(), parse_raw_text_into_candidates(), Any, Structural candidate parser using DOM, CommonMark AST, and JSON-LD without…, Parses raw extractor body text into candidate blocks using CommonMark AST., Normative priorities: trafilatura.canonical_url -> input_meta.url ->… (+9 more) ### Community 164 - "hygiene/harness.py" Cohesion: 0.14 Nodes (20): assemble_intermediate_markdown(), Grounded intermediate Markdown assembler., Assembles sanitized intermediate Markdown from validated editorial components., execute_10_step_hygiene_harness(), execute_deterministic_hygiene_fallback(), GroundingViolationError, HygieneFailedError, ValueError (+12 more) ### Community 165 - "SanitizedJsonLogger" Cohesion: 0.21 Nodes (7): Any, Structured JSON logging with secret sanitization and strict omission of…, Emits a structured JSON log line to stderr., SanitizedJsonLogger, Specialized security tests for authorization header and secret redaction…, test_secret_redaction_in_dictionary(), test_secret_redaction_in_text() ### Community 166 - "InputSizeExceededError" Cohesion: 0.26 Nodes (9): InputSizeExceededError, ValueError, Input byte size limiter and pre-provider guard., Validates that input data does not exceed the byte size limit before any…, Raised when the input article payload exceeds the maximum configured byte size…, validate_input_size(), Unit tests for input size limits covering scenarios IN-001 to IN-015., test_input_size_exceeded_raises_error() (+1 more) ### Community 167 - "CandidateObject" Cohesion: 0.16 Nodes (20): CandidateObject, CandidateType, Enum, str, Candidate element data models and repair structures., RepairCategory, TextRepair, Any (+12 more) ### Community 168 - "enum" Cohesion: 0.04 Nodes (47): CONTEXTUAL_INHERENT, DIRECT_INHERENT, ECP_CLASSIFICATION_FAILED, ECP_REJECTED, ENRICHMENT_FAILED, GROUNDING_VIOLATION, HYGIENE_FAILED, INVALID_ARTICLE_SCHEMA (+39 more) ### Community 169 - "Plano de testes e evals — Runtime de consolidação de artigos" Cohesion: 0.05 Nodes (39): 10. Testes de parsing sem regex, 11. Testes de candidatos e proveniência, 12. Testes de higienização, 13. Testes de reparos textuais, 14. Testes do ECP, 15. Testes de enriquecimento, 16. Testes de Markdown e manifesto, 17. Testes de providers e fallback (+31 more) ### Community 170 - "Especificação de prompt, contexto e harness — Runtime" Cohesion: 0.05 Nodes (36): 10. Política de provider, 11.1 Fonte, 11.2 Casos obrigatórios de reparo, 11.3 Assertions, 11. Promptfoo, 12. Contexto registrado no Langfuse, 13. Critérios de aceite, 1. Objetivo (+28 more) ### Community 171 - "ExecutionStateMachine" Cohesion: 0.25 Nodes (5): ExecutionStateMachine, InvalidStateTransitionError, Any, ValueError, Raised when an illegal state transition is attempted. ### Community 172 - "Implementation Tasks: Article Consolidation and Hygiene Runtime" Cohesion: 0.05 Nodes (36): Dependencies & Execution Order, Foundation & Incremental Pipeline Flow, Implementation for Model Gateway, Implementation for User Story 1, Implementation for User Story 2, Implementation for User Story 3, Implementation for User Story 4, Implementation for User Story 5 (+28 more) ### Community 173 - "🧪 Documentação da Suíte de Testes Automatizados" Cohesion: 0.29 Nodes (6): 1. Executar Toda a Suíte do Projeto (247 testes), 2. Executar por Módulo Específico, 🚀 Como Executar os Testes, 🔑 Configuração para Testes com LLM ao Vivo, 🧪 Documentação da Suíte de Testes Automatizados, 📊 Inventário e Mapa de Cobertura das Suítes ### Community 174 - "properties" Cohesion: 0.18 Nodes (11): description, minLength, type, runtime_fallback, runtime_primary, properties, config_version, roles (+3 more) ### Community 175 - "repair-operations.schema.json" Cohesion: 0.06 Nodes (33): encoding, obvious_typo, original_fragment, punctuation_corruption, replacement_fragment, spacing, target_candidate_id, unicode (+25 more) ### Community 176 - "Functional Requirements" Cohesion: 0.06 Nodes (33): Assumptions, Deterministic Structural Candidate Model, ECP Gate and Relevance Enforcement, Edge Cases, Feature Specification: Article Consolidation and Hygiene Runtime, Functional Requirements, Input, Validation, and Fingerprinting Contracts, Key Entities (+25 more) ### Community 177 - "test_equivalence_mapping.py" Cohesion: 0.26 Nodes (11): compute_sequence_similarity(), map_candidate_equivalences(), normalize_text_for_comparison(), Non-destructive candidate equivalence mapping using difflib.SequenceMatcher…, Normalizes Unicode text and collapses whitespace without regular expressions., Computes character/token sequence ratio using standard library difflib., Non-destructively annotates candidate objects with equivalent candidate IDs…, Unit tests for sequence equivalence mapping covering scenarios CAN-001 to… (+3 more) ### Community 178 - "enrichment-response.schema.json" Cohesion: 0.07 Nodes (29): evidence_candidate_ids, additionalProperties, items, minItems, type, $id, minLength, type (+21 more) ### Community 179 - "create_manifest_dict" Cohesion: 0.23 Nodes (14): create_manifest_dict(), persist_manifest_atomically(), Any, Path, Atomic filesystem writer and shared manifest generator. Enforces: - Writing…, Generates an output manifest adhering strictly to manifest-output.schema.json., Persists a manifest dictionary as .result.json atomically., Writes content atomically to target_path using a temporary file in the same… (+6 more) ### Community 180 - "Catálogo de métricas e KPIs — Runtime de consolidação de artigos" Cohesion: 0.07 Nodes (27): 10. Métricas de enriquecimento, 11. Métricas de LLM, 12. Sinais para futura revisão de prompt, 13. Métricas de persistência e idempotência, 14. Métricas de observabilidade, 15. Métricas de capacidade, 16.1 Staging, 16.2 Relatório obrigatório (+19 more) ### Community 181 - "article_content_hygiene" Cohesion: 0.10 Nodes (26): path, additionalProperties, properties, required, type, additionalProperties, properties, required (+18 more) ### Community 182 - "._get_connection" Cohesion: 0.14 Nodes (7): Connection, Any, Path, Records a state transition for the given fingerprint atomically., Native SQLite backup API creating a consistent point-in-time database snapshot., Native SQLite restore API overwriting the current database from a snapshot., Atomically claims execution for a fingerprint. Returns: (is_new_claim,… ### Community 183 - "Documento de Arquitetura — Runtime de consolidação de artigos" Cohesion: 0.08 Nodes (23): 10. Contratos versionados, 11. Validação inicial, 12. Fingerprint e idempotência, 17. Montagem do Markdown intermediário, 19. Enriquecimento, 1. Propósito, 21. Prompts, 24. Logging (+15 more) ### Community 184 - "null" Cohesion: 0.12 Nodes (24): type, type, type, type, type, type, null, type (+16 more) ### Community 185 - "Runbook de produção — Runtime de consolidação de artigos" Cohesion: 0.09 Nodes (21): 10. Smoke test, 11. Operação normal, 13. Logs e correlação, 19. Falha de enriquecimento, 1. Objetivo, 23. Custo acima do limite, 24. Latência acima do SLO, 25. Violação crítica de grounding (+13 more) ### Community 186 - "article_content_hygiene" Cohesion: 0.15 Nodes (17): additionalProperties, properties, required, type, additionalProperties, properties, required, type (+9 more) ### Community 187 - "properties" Cohesion: 0.12 Nodes (20): type, type, type, type, properties, null, string, type (+12 more) ### Community 188 - "properties" Cohesion: 0.13 Nodes (15): minLength, type, maxLength, minLength, type, type, properties, config_version (+7 more) ### Community 189 - "PRD — Runtime de consolidação e higienização de artigos" Cohesion: 0.11 Nodes (18): 11. Fluxo funcional do runtime, 19. Gateway e fallback de modelos, 1. Contexto, 20. Idempotência e persistência, 21. Observabilidade, 22. Promptfoo no runtime, 23. Requisitos funcionais, 24. Requisitos não funcionais (+10 more) ### Community 190 - "required" Cohesion: 0.11 Nodes (19): ecp_classification, enrichment, error_codes, final_status, fingerprint, generate_markdown, hygiene, markdown_hash (+11 more) ### Community 191 - "properties" Cohesion: 0.17 Nodes (16): properties, properties, negative, neutral, positive, type, model, provider (+8 more) ### Community 192 - "type" Cohesion: 0.14 Nodes (18): items, type, items, type, items, type, additionalProperties, type (+10 more) ### Community 193 - "properties" Cohesion: 0.15 Nodes (13): type, type, properties, type, confidence, entity_id, name, relation_type (+5 more) ### Community 194 - "build_minimal_hygiene_projection" Cohesion: 0.40 Nodes (5): build_minimal_hygiene_projection(), Any, Projects only the strictly necessary candidate tokens for the LLM prompt. Omits…, Adversarial prompt injection evaluation (SEC-004)., test_adversarial_injection_treated_as_passive_data() ### Community 195 - "check_zero_regex.py" Cohesion: 0.18 Nodes (12): Call, Import, ImportFrom, check_json_schemas(), check_promptfoo_yaml(), check_python_ast(), _find_json_pattern_keys(), main() (+4 more) ### Community 196 - "properties" Cohesion: 0.12 Nodes (17): type, type, type, type, type, type, properties, article_html (+9 more) ### Community 197 - "runtime-config.schema.json" Cohesion: 0.29 Nodes (6): additionalProperties, $id, $schema, title, type, x-contract-version ### Community 198 - "properties" Cohesion: 0.17 Nodes (12): minLength, type, type, properties, domain, graph_version, target_entity_id, target_name (+4 more) ### Community 199 - "object" Cohesion: 0.22 Nodes (11): additionalProperties, type, additionalProperties, type, object, enrichment, hygiene, provider_versions (+3 more) ### Community 200 - "candidates-payload.schema.json" Cohesion: 0.13 Nodes (14): block_candidates, image_candidates, language, link_candidates, metadata_candidates, additionalProperties, description, $id (+6 more) ### Community 201 - "limits" Cohesion: 0.13 Nodes (15): context_strategy, max_input_bytes, const, description, type, additionalProperties, properties, required (+7 more) ### Community 202 - "langfuse" Cohesion: 0.14 Nodes (14): environment, full_redacted, metadata_only, trace_content_policy, type, additionalProperties, properties, required (+6 more) ### Community 203 - "string" Cohesion: 0.18 Nodes (14): integer, type, type, type, type, string, type, properties (+6 more) ### Community 204 - "type" Cohesion: 0.14 Nodes (14): items, type, items, items, type, type, items, type (+6 more) ### Community 205 - "CLI Interface Contract: Article Consolidation and Hygiene Runtime" Cohesion: 0.14 Nodes (13): 1. Invocation Model, 2.1 Main Consolidation Command, 2.2 Operational Commands, 2. Command Synopsis, 3. Options & Arguments, 4. Exit Codes, 5.1 stdout (Machine-Readable JSON), 5.2 stderr (Sanitized Technical Logs) (+5 more) ### Community 206 - "2. Entity Definitions" Cohesion: 0.14 Nodes (13): 1. Domain Entities & Relationships, 2.10 Published Markdown (`.md`), 2.1 Article Input Unit (`article_input`), 2.2 Entity Context Profile Snapshot (`ecp_snapshot`), 2.3 Candidate Object (`candidate_object`), 2.4 Text Repair Operation (`text_repair`), 2.5 State Machine Record (`state_record`), 2.6 State Transition Log (`state_transitions`) (+5 more) ### Community 207 - "3. Concrete Architectural & Technical Decisions" Cohesion: 0.14 Nodes (13): 1. Executive Summary & Architectural Scope, 2. Definitive Dependency Selections & Qualitative Impact Analysis, 3. Concrete Architectural & Technical Decisions, Decision 1: Direct Python State Machine Orchestration (FR-003, FR-046), Decision 2: Certified Model Gateway & Preflight Certification (FR-041, FR-042, FR-044), Decision 3: Input Size Limit Enforcement (FR-056), Decision 4: Candidate Equivalence Mapping without Deduplication (FR-014, FR-020), Decision 5: 10-Step Hygiene Harness and Controlled Micro-Repairs (FR-024 to FR-030) (+5 more) ### Community 208 - "Requirements Readiness Checklist: Article Consolidation and Hygiene Runtime" Cohesion: 0.15 Nodes (12): 10. Scope Boundaries, Quality Gates & Operations (FR-001 to FR-084), 1. Requirement Completeness, 2. Requirement Clarity & Precision, 3. Requirement Consistency & Alignment, 4. Acceptance Criteria & Measurability, 5. Scenario & Flow Coverage, 6. Edge Case & Boundary Coverage, 7. Non-Functional & Security Requirements (SEC-001 to SEC-008) (+4 more) ### Community 209 - "object" Cohesion: 0.15 Nodes (13): type, object, additionalProperties, type, newspaper4k, raw_json, readability, trafilatura (+5 more) ### Community 210 - "null" Cohesion: 0.24 Nodes (10): null, string, maxLength, minLength, type, type, markdown_hash, markdown_path (+2 more) ### Community 211 - "properties" Cohesion: 0.15 Nodes (13): minimum, type, minimum, type, properties, minimum, type, minimum (+5 more) ### Community 212 - "calculate_execution_fingerprint" Cohesion: 0.31 Nodes (8): calculate_execution_fingerprint(), _canonical_json_dumps(), Any, Deterministic canonical SHA-256 execution fingerprint calculator. Computes a…, Calculates a deterministic 64-character SHA-256 fingerprint for the execution., Unit tests for deterministic fingerprint calculation covering scenarios ID-001…, test_deterministic_fingerprint_identical_inputs(), test_fingerprint_changes_on_config_or_ecp_change() ### Community 213 - "model_versions" Cohesion: 0.33 Nodes (6): runtime_fallback, runtime_primary, additionalProperties, required, type, model_versions ### Community 214 - "3. Operational Execution Scenarios" Cohesion: 0.17 Nodes (11): 1. Prerequisites & Environment Setup, 2. Local Validation Configuration (Fixture Only), 3. Operational Execution Scenarios, 4. Automated Quality Evaluation & Test Commands, Environment Secrets, Installation, Quickstart Guide: Article Consolidation and Hygiene Runtime, Scenario A: Preflight Validation (+3 more) ### Community 215 - "type" Cohesion: 0.20 Nodes (10): items, type, items, type, type, items, type, aliases (+2 more) ### Community 216 - "test_cli_subprocess_pipeline.py" Cohesion: 0.33 Nodes (6): Path, Subprocess-level integration tests for CLI consolidate.py verifying normative…, Passing an invalid article JSON (missing url/title/etc) exits with code 1., Passing a nonexistent config file exits with code 2 (preflight/config error)., test_cli_subprocess_invalid_schema_exit_code_1(), test_cli_subprocess_missing_config_exit_code_2() ### Community 217 - "clean_body_images" Cohesion: 0.50 Nodes (4): clean_body_images(), Preserva imagens com URL absoluta http/https, remove relativas/data:/vazias e…, Valida descarte de data:, relativos e deduplicação mantendo a primeira…, test_clean_body_images_removes_invalid_and_deduplicates() ### Community 218 - "ecp" Cohesion: 0.18 Nodes (11): canonical_schema_reference, classifier_module, type, type, additionalProperties, properties, required, type (+3 more) ### Community 219 - "paths" Cohesion: 0.18 Nodes (11): output_dir, sqlite_db, type, additionalProperties, properties, required, type, output_dir (+3 more) ### Community 220 - "properties" Cohesion: 0.18 Nodes (11): type, type, type, cleaned_html, cleaned_text, error, short_title, title (+3 more) ### Community 221 - "properties" Cohesion: 0.18 Nodes (11): additionalProperties, properties, input_meta, quando_publicado, subtitulo, titulo, url, type (+3 more) ### Community 222 - "properties" Cohesion: 0.22 Nodes (11): type, null, string, properties, author_candidate_id, repairs, subtitle_candidate_id, title_candidate_id (+3 more) ### Community 223 - "required" Cohesion: 0.20 Nodes (10): anchor_text, candidate_id, order_index, parent_block_id, source, source_extractor, text, type (+2 more) ### Community 224 - "required" Cohesion: 0.20 Nodes (10): ecp, langfuse, limits, paths, pricing, prompts, roles, sqlite (+2 more) ### Community 225 - "kept_block_ids" Cohesion: 0.20 Nodes (10): type, items, minItems, type, uniqueItems, items, type, uniqueItems (+2 more) ### Community 226 - "parametrize" Cohesion: 0.22 Nodes (9): parametrize, Garante aceitação de URLs absolutas com esquema HTTP e HTTPS válidos., Garante rejeição de esquemas não permitidos, URLs relativas e strings vazias., Garante que a ausência de corpo no extrator selecionado NUNCA faça fallback…, Garante que todos os placeholders documentados no PRD sejam descartados…, test_normalize_scalar_placeholders_discarded(), test_resolve_article_body_strict_isolation_all_extractors(), test_validate_url_invalid_schemes() (+1 more) ### Community 227 - "4. 🎯 Seletor Determinístico de Conteúdo de Artigos" Cohesion: 0.22 Nodes (9): 1. Execução Padrão Automática, 2. Execução com Modo Verboso, 3. Uso Programático como Módulo Python, 4. 🎯 Seletor Determinístico de Conteúdo de Artigos, Argumentos e Flags CLI, Critérios de Desempate Técnico e Resiliência, Exemplos Práticos de Uso, Pipeline de Normalização e Shingles (+1 more) ### Community 228 - "1. Operational Commands" Cohesion: 0.22 Nodes (8): 1.1 Preflight Verification, 1.2 Smoke Test, 1.3 State & Artifact Reconciliation, 1.4 Telemetry Flush, 1. Operational Commands, 2. Standard Consolidation Execution, Exit Codes, Production Operations & Maintenance Runbook ### Community 229 - "sqlite" Cohesion: 0.22 Nodes (9): busy_timeout_ms, minimum, type, busy_timeout_ms, sqlite, additionalProperties, properties, required (+1 more) ### Community 230 - "required" Cohesion: 0.22 Nodes (9): entity_id, name, relation_type, weight, additionalProperties, required, related_entities, items (+1 more) ### Community 231 - "pricing" Cohesion: 0.22 Nodes (9): fallback_input_1k, fallback_output_1k, primary_input_1k, primary_output_1k, additionalProperties, description, required, type (+1 more) ### Community 232 - "article-input.schema.json" Cohesion: 0.22 Nodes (8): additionalProperties, $id, selected_extractor, required, $schema, title, type, x-contract-version ### Community 233 - "properties" Cohesion: 0.22 Nodes (9): items, type, type, items, type, properties, block_candidates, language (+1 more) ### Community 234 - "enum" Cohesion: 0.28 Nodes (9): newspaper4k, readability, trafilatura, selected_extractor, source_extractor, enum, type, enum (+1 more) ### Community 235 - "required" Cohesion: 0.18 Nodes (16): required, required, model, provider, role_config_version, sentiment, tags, properties (+8 more) ### Community 236 - "Implementation Plan: Article Consolidation and Hygiene Runtime" Cohesion: 0.22 Nodes (8): Complexity Tracking, Constitution Check, Documentation & 9 Versioned Contracts (this feature), Implementation Plan: Article Consolidation and Hygiene Runtime, Project Structure, Source Code & Fixtures (repository layout), Summary, Technical Context ### Community 237 - "verify_all_11_invariants" Cohesion: 0.32 Nodes (6): Any, Release-wide critical quality assertion suite verifying the 11 critical…, Evaluates the 11 release-wide critical invariants., verify_all_11_invariants(), 11 zero-tolerance release invariants validation runner., test_11_invariants_all_pass() ### Community 238 - "enum" Cohesion: 0.25 Nodes (8): advertisement, duplicate, navigation, newsletter, non_editorial, player_interface, recommendation, enum ### Community 239 - "required" Cohesion: 0.25 Nodes (8): author_candidate_id, kept_block_ids, kept_image_ids, kept_link_ids, repairs, subtitle_candidate_id, title_candidate_id, required ### Community 240 - "manifest-output.schema.json" Cohesion: 0.25 Nodes (7): additionalProperties, allOf, $id, $schema, title, type, x-contract-version ### Community 241 - "Prompts Versioned Contract: Article Consolidation and Hygiene Runtime" Cohesion: 0.25 Nodes (7): 1. Versioned Prompt Registry, 2. Normative 6-Block Prompt Ordering (Doc 07 §5.3), 3.1 `article_content_hygiene` (FR-024, FR-058), 3.2 `article_sentiment_tags` (FR-037, FR-059), 3. Strict Input Context Specifications, 4. Contractual Invariants, Prompts Versioned Contract: Article Consolidation and Hygiene Runtime ### Community 242 - "6. 🚀 Runtime de Consolidação e Higienização de Artigos (006-article-consolidation-runtime)" Cohesion: 0.25 Nodes (8): 1. Documento Markdown Higienizado (`.md`), 2. Manifesto de Auditoria e Resultado (`.result.json`), 3. Rastreamento e Estado no Banco SQLite (`out/runtime.db`), 6. 🚀 Runtime de Consolidação e Higienização de Artigos (006-article-consolidation-runtime), Configuração de Ambiente (`.env`), Contrato de Códigos de Saída (Exit Codes), O que Esperar do Resultado (Artefatos Gerados), Visão Geral e Arquitetura do Runtime ### Community 243 - "13. Parsing estrutural sem regex" Cohesion: 0.29 Nodes (7): 13.1 HTML, 13.2 Markdown, 13.3 JSON-LD e metadados, 13.4 URLs, 13.5 Texto, 13.6 Enforcement, 13. Parsing estrutural sem regex ### Community 244 - "metadata_candidates" Cohesion: 0.29 Nodes (7): author_candidates, subtitle_candidates, title_candidates, additionalProperties, required, type, metadata_candidates ### Community 245 - "enum" Cohesion: 0.29 Nodes (7): completed_text, failed_processing, failed_validation, rejected_ecp, enum, type, final_status ### Community 246 - "required" Cohesion: 0.25 Nodes (8): confidence, evidences, additionalProperties, required, type, category, rationale, ecp_classification ### Community 247 - "enum" Cohesion: 0.29 Nodes (7): heading, list_item, paragraph, quote, type, enum, type ### Community 248 - "ecp-snapshot.schema.json" Cohesion: 0.29 Nodes (6): description, $id, $ref, $schema, title, x-contract-version ### Community 249 - "hygiene-response.schema.json" Cohesion: 0.29 Nodes (6): additionalProperties, $id, $schema, title, type, x-contract-version ### Community 250 - "🧠 TextNLPClassifierApp" Cohesion: 0.29 Nodes (6): 📁 Estrutura do Projeto, 📄 Licença, 📑 Tabela de Conteúdos, 🧪 Testes e Qualidade de Código, 🧠 TextNLPClassifierApp, 🌟 Visão Geral ### Community 251 - "ADR-003 — Usar orquestração explícita em Python, sem LangChain ou LangGraph" Cohesion: 0.33 Nodes (6): ADR-003 — Usar orquestração explícita em Python, sem LangChain ou LangGraph, Alternativas rejeitadas, Consequências, Contexto, Critérios de reavaliação, Decisão ### Community 252 - "required" Cohesion: 0.33 Nodes (6): aliases, anchors, domain, target_entity_id, target_name, required ### Community 253 - "Specification Quality Checklist: Article Consolidation and Hygiene Runtime" Cohesion: 0.33 Nodes (5): Content Quality, Feature Readiness, Requirement Completeness, Specification Quality Checklist: Article Consolidation and Hygiene Runtime, Verification Notes for the 4 Precision Adjustments ### Community 254 - "enum" Cohesion: 0.33 Nodes (6): newspaper4k, readability, trafilatura, selected_extractor, enum, type ### Community 255 - "enum" Cohesion: 0.33 Nodes (6): newspaper4k, readability, trafilatura, selected_extractor, enum, type ### Community 256 - "1. 🧠 Classificador de Conteúdo e Inerência (NLP / LLM / ECP)" Cohesion: 0.29 Nodes (7): 1. 🧠 Classificador de Conteúdo e Inerência (NLP / LLM / ECP), Arquitetura de Classificação em 3 Tiers, Categorias de Decisão, Exemplo de ECP Snapshot Real (`examples/ecp_club_atletico_river_plate.json`):, Exemplos de Uso CLI, Formato do ECP Snapshot e Markdown, O que é e Como Funciona ### Community 257 - "10. Contrato de saída" Cohesion: 0.40 Nodes (5): 10.1 Resultado JSON e manifesto, 10.2 Status finais, 10.3 Arquivo Markdown, 10.4 Formatação Markdown permitida, 10. Contrato de saída ### Community 258 - "14. Higienização por LLM" Cohesion: 0.40 Nodes (5): 14.1 Obrigatoriedade, 14.2 Entrada, 14.3 Saída lógica, 14.4 Regras editoriais, 14. Higienização por LLM ### Community 259 - "4. Regras mandatórias" Cohesion: 0.40 Nodes (5): 4.1 Fundamentação, 4.2 Proibição de regex para texto, 4.3 Uso obrigatório do LLM, 4.4 Modelos do runtime, 4. Regras mandatórias ### Community 260 - "8. Contrato de entrada do artigo" Cohesion: 0.40 Nodes (5): 8.1 Campos estruturais esperados, 8.2 `selected_extractor`, 8.3 Campos das extrações, 8.4 Validade editorial mínima, 8. Contrato de entrada do artigo ### Community 261 - "18. Integração ECP" Cohesion: 0.40 Nodes (5): 18.1 Adapter, 18.2 Entrada, 18.3 Saída, 18.4 Gate, 18. Integração ECP ### Community 262 - "7. Orquestração" Cohesion: 0.40 Nodes (5): 7.1 Escolha, 7.2 Justificativa, 7.3 Estados persistidos, 7.4 Critérios de reavaliação, 7. Orquestração ### Community 263 - "ADR-001 — Separar runtime e self-healing" Cohesion: 0.40 Nodes (5): ADR-001 — Separar runtime e self-healing, Alternativa rejeitada, Consequências, Contexto, Decisão ### Community 264 - "ADR-002 — Iniciar o runtime após a seleção do extrator" Cohesion: 0.40 Nodes (5): ADR-002 — Iniciar o runtime após a seleção do extrator, Alternativas rejeitadas, Consequências, Contexto, Decisão ### Community 265 - "ADR-004 — Gateway agnóstico com apenas modelos baratos no runtime" Cohesion: 0.40 Nodes (5): ADR-004 — Gateway agnóstico com apenas modelos baratos no runtime, Alternativas rejeitadas, Consequências, Contexto, Decisão ### Community 266 - "ADR-005 — Proibir regex e palavras-chave manuais em decisões textuais" Cohesion: 0.40 Nodes (5): ADR-005 — Proibir regex e palavras-chave manuais em decisões textuais, Alternativas rejeitadas, Consequências, Contexto, Decisão ### Community 267 - "ADR-006 — LLM seleciona evidências e propõe reparos, não regenera o artigo" Cohesion: 0.40 Nodes (5): ADR-006 — LLM seleciona evidências e propõe reparos, não regenera o artigo, Alternativas rejeitadas, Consequências, Contexto, Decisão ### Community 268 - "ADR-007 — Tornar o ECP obrigatório antes de toda saída editorial" Cohesion: 0.40 Nodes (5): ADR-007 — Tornar o ECP obrigatório antes de toda saída editorial, Alternativas rejeitadas, Consequências, Contexto, Decisão ### Community 269 - "ADR-008 — Langfuse no runtime e Promptfoo no CI" Cohesion: 0.40 Nodes (5): ADR-008 — Langfuse no runtime e Promptfoo no CI, Alternativas rejeitadas, Consequências, Contexto, Decisão ### Community 270 - "ADR-009 — Persistir estado em SQLite e saídas no filesystem" Cohesion: 0.40 Nodes (5): ADR-009 — Persistir estado em SQLite e saídas no filesystem, Alternativas rejeitadas, Consequências, Contexto, Decisão ### Community 271 - "ADR-010 — Produzir resultado estruturado sempre e Markdown condicionalmente" Cohesion: 0.40 Nodes (5): ADR-010 — Produzir resultado estruturado sempre e Markdown condicionalmente, Alternativas rejeitadas, Consequências, Contexto, Decisão ### Community 272 - "ADR-011 — Definir SLOs de custo e latência a partir de staging" Cohesion: 0.40 Nodes (5): ADR-011 — Definir SLOs de custo e latência a partir de staging, Alternativa rejeitada, Consequências, Contexto, Decisão ### Community 273 - "7. Checklist de release" Cohesion: 0.40 Nodes (5): 7.1 Código e documentação, 7.2 Testes, 7.3 Staging, 7.4 Configuração, 7. Checklist de release ### Community 274 - "eval_runner.py" Cohesion: 0.60 Nodes (4): aggregate_evaluation_results(), Any, Evaluation runner and metric aggregator without duplicating prompt execution., run_offline_evaluations() ### Community 275 - "ecp-profile.schema.json" Cohesion: 0.33 Nodes (5): additionalProperties, $id, $schema, title, type ### Community 276 - "prompt_versions" Cohesion: 0.33 Nodes (6): article_content_hygiene, article_sentiment_tags, additionalProperties, required, type, prompt_versions ### Community 277 - "12. Preparação determinística" Cohesion: 0.50 Nodes (4): 12.1 Limite, 12.2 Técnicas permitidas, 12.3 Técnicas proibidas, 12. Preparação determinística ### Community 278 - "15. Pequenos reparos textuais" Cohesion: 0.50 Nodes (4): 15.1 Permissão, 15.2 Proibições, 15.3 Forma auditável, 15. Pequenos reparos textuais ### Community 279 - "9. Contrato do ECP" Cohesion: 0.50 Nodes (4): 9.1 Obrigatoriedade, 9.2 Schema, 9.3 Resultados possíveis, 9. Contrato do ECP ### Community 280 - "15. Higienização extrativa" Cohesion: 0.50 Nodes (4): 15.1 Interface, 15.2 Garantia de grounding, 15.3 Fallback, 15. Higienização extrativa ### Community 281 - "16. Pequenos reparos" Cohesion: 0.50 Nodes (4): 16.1 Representação, 16.2 Validação, 16.3 Responsabilidade do prompt, 16. Pequenos reparos ### Community 282 - "20. Model Gateway" Cohesion: 0.50 Nodes (4): 20.1 Interface mínima, 20.2 Configuração, 20.3 Retry, 20. Model Gateway ### Community 283 - "23. Observabilidade" Cohesion: 0.50 Nodes (4): 23.1 Hierarquia, 23.2 Conteúdo, 23.3 Degradação, 23. Observabilidade ### Community 284 - "3. Limites do sistema" Cohesion: 0.50 Nodes (4): 3.1 Entrada, 3.2 Saída, 3.3 Dependências externas, 3. Limites do sistema ### Community 285 - "9. Política de dependências" Cohesion: 0.50 Nodes (4): 9.1 Preferência, 9.2 Aprovação, 9.3 Proibições, 9. Política de dependências ### Community 286 - "12. Monitoramento" Cohesion: 0.50 Nodes (4): 12.1 Saúde, 12.2 Qualidade, 12.3 Sinais para análise futura, 12. Monitoramento ### Community 287 - "14. Reprocessamento" Cohesion: 0.50 Nodes (4): 14.1 Mesma configuração, 14.2 Configuração diferente, 14.3 Proibição, 14. Reprocessamento ### Community 288 - "16. Falha do provider primário" Cohesion: 0.50 Nodes (4): 16. Falha do provider primário, Comportamento esperado, Escalada, Investigação ### Community 289 - "21. Falha do SQLite" Cohesion: 0.50 Nodes (4): 21. Falha do SQLite, Ação para corrupção, Ação para lock, Sintomas ### Community 290 - "6. Configuração obrigatória" Cohesion: 0.50 Nodes (4): 6.1 Funcional, 6.2 Secrets, 6.3 Valores definidos após staging, 6. Configuração obrigatória ### Community 291 - "build_release_metadata.py" Cohesion: 0.50 Nodes (3): build_release_metadata(), Path, Release packaging script generating src/core/release-metadata.json. ### Community 292 - "removal_reasons" Cohesion: 0.50 Nodes (4): type, removal_reasons, additionalProperties, type ### Community 293 - "kept_image_ids" Cohesion: 0.50 Nodes (4): items, type, uniqueItems, kept_image_ids ### Community 298 - "Release Quality Summary Report" Cohesion: 0.50 Nodes (3): 1. Compliance Matrix: 11 Critical Invariants, 2. Test Execution & Coverage, Release Quality Summary Report ### Community 299 - "Comandos e Utilitários CLI" Cohesion: 0.33 Nodes (6): 1. Consolidação de Artigo Único (`consolidate.py`), 2. Certificação de Pré-Voo (`preflight.py`), 3. Teste de Fumaça (`smoke.py`), 4. Reconciliação e Recuperação de Quedas (`reconcile.py`), 5. Despejo de Telemetria Operacional (`telemetry_flush.py`), Comandos e Utilitários CLI ### Community 300 - "13. Candidatos e proveniência" Cohesion: 0.67 Nodes (3): 13.1 URL de origem, 13.2 Fontes de metadados, 13. Candidatos e proveniência ### Community 301 - "16. Imagens e links" Cohesion: 0.67 Nodes (3): 16.1 Imagens editoriais, 16.2 Links, 16. Imagens e links ### Community 302 - "17. Gate ECP" Cohesion: 0.67 Nodes (3): 17.1 Entrada, 17.2 Decisão, 17. Gate ECP ### Community 303 - "18. Enriquecimento" Cohesion: 0.67 Nodes (3): 18.1 Sentimento, 18.2 Tags, 18. Enriquecimento ### Community 304 - "5. Escopo" Cohesion: 0.67 Nodes (3): 5.1 Incluído, 5.2 Fora do escopo, 5. Escopo ### Community 305 - "14. Modelo de candidatos" Cohesion: 0.67 Nodes (3): 14.1 Ordem, 14.2 Equivalência, 14. Modelo de candidatos ### Community 306 - "22. Renderer e arquivos" Cohesion: 0.67 Nodes (3): 22.1 Nomes, 22.2 Escrita atômica, 22. Renderer e arquivos ### Community 308 - "15. Falha de validação de entrada" Cohesion: 0.67 Nodes (3): 15. Falha de validação de entrada, Ação, Sintomas ### Community 309 - "17. Falha semântica ou de grounding" Cohesion: 0.67 Nodes (3): 17. Falha semântica ou de grounding, Ação, Sintomas ### Community 310 - "18. Falha do ECP" Cohesion: 0.67 Nodes (3): 18. Falha do ECP, Ação, Comportamento esperado ### Community 311 - "20. Falha do Langfuse" Cohesion: 0.67 Nodes (3): 20. Falha do Langfuse, Comportamento esperado, Recuperação ### Community 312 - "22. Falha de filesystem ou disco" Cohesion: 0.67 Nodes (3): 22. Falha de filesystem ou disco, Ação, Sintomas ### Community 313 - "26. Rollback manual" Cohesion: 0.67 Nodes (3): 26. Rollback manual, Gatilhos, Procedimento ### Community 318 - "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 329 - "2. 📰 Extrator de Manchetes do Google News" Cohesion: 0.40 Nodes (5): 2. 📰 Extrator de Manchetes do Google News, Argumentos e Flags de Linha de Comando, Diferenciais Técnicos, Exemplos Práticos de Uso, O que é e Como Funciona ### Community 331 - "⚙️ Instalação e Setup" Cohesion: 0.50 Nodes (4): 1. Clonar o Repositório e Criar Ambiente Virtual, 2. Instalar Dependências, 3. Baixar Binários do Navegador Stealth (Camoufox), ⚙️ Instalação e Setup ### Community 332 - "3. 📄 Extrator e Parser Multimotor de Artigos" Cohesion: 0.50 Nodes (4): 3. 📄 Extrator e Parser Multimotor de Artigos, Argumentos e Flags CLI, Exemplos de Uso, Visão Geral e Tríplice Extração ## Knowledge Gaps - **1525 isolated node(s):** `text-nlp-classifier`, `$schema`, `$id`, `x-contract-version`, `title` (+1520 more) These have ≤1 connection - possible missing edges or undocumented components. - **56 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 `InherenceClassifier` connect `ECPSnapshot` to `adapter.py`, `main`, `ClassificationResult`, `LLMFallbackAdapter`, `classifier.py`, `test_models.py`?** _High betweenness centrality (0.008) - this node is a cross-community bridge._ - **Why does `ECPSnapshot` connect `ECPSnapshot` to `adapter.py`, `main`, `ClassificationResult`, `LLMFallbackAdapter`, `classifier.py`, `test_models.py`?** _High betweenness centrality (0.007) - this node is a cross-community bridge._ - **Why does `SQLiteStore` connect `SQLiteStore` to `ExecutionStateMachine`, `._get_connection`, `consolidate.py`?** _High betweenness centrality (0.004) - this node is a cross-community bridge._ - **Are the 6 inferred relationships involving `InherenceClassifier` (e.g. with `ECPClassificationAdapter` and `LocalEmbeddingsAdapter`) actually correct?** _`InherenceClassifier` has 6 INFERRED edges - model-reasoned connections that need verification._ - **Are the 2 inferred relationships involving `SQLiteStore` (e.g. with `ExecutionStateMachine` and `LangfuseRuntimeTracer`) actually correct?** _`SQLiteStore` has 2 INFERRED edges - model-reasoned connections that need verification._ - **What connects `text-nlp-classifier`, `$schema`, `$id` to the rest of the system?** _1525 weakly-connected nodes found - possible documentation gaps or missing edges._ - **Should `Task Planning` be split into smaller, more focused modules?** _Cohesion score 0.07407407407407407 - nodes in this community are weakly interconnected._