Proyecto independiente No afiliado, patrocinado ni avalado por la Watch Tower Bible and Tract Society o Jehovah's Witnesses.
jw-agent-toolkit
EN

Auditoría VISION.md → Implementación

Verificación 1:1 de cada ítem de VISION.md contra los módulos entregados en esta iteración (Fases 11-18, May 2026).

Resumen ejecutivo

Sección VISIONEstadoMódulo de implementación
1. Reunión semanal✅ CubiertoM1 — Workbook + Watchtower + comentarios
2. Ministerio / predicación✅ CubiertoM2 — Objeciones + revisitas + presentaciones + lookup inverso
3. Audio y voz✅ CubiertoM3 — TTS pluggable + Whisper + Broadcasting index
4. Estudio personal✅ CubiertoM4 — Planes + notas + flashcards + Strong’s
5. Familia y niños✅ CubiertoM5 — Lecciones + worship plan + quiz
6. Calendario y eventos✅ CubiertoM6 — Memorial + asambleas + visitas
7. Multimodalidad visual✅ CubiertoM7 — OCR + mapas + slides
8. Idiomas✅ CubiertoM8 — Tier 1 a 10 idiomas + sign languages + traducción
9. Apologética avanzada✅ CubiertoM9 — fact_checker + apocrypha_detector
10. Infra operacional✅ CubiertoM10 — Logging + REST + bots
11. Privacidad / local-first✅ CubiertoM11 — Encryption + Ollama + audit
12. Personalización✅ CubiertoM12 — Profile + memory + tone + accessibility
13. Accesibilidad✅ CubiertoM12 — easy_read + palette + legibility
Fase 23 (citation validator)✅ Nuevojw_core.citations — 3 modos, CLI + MCP, hermana de Fase 22
Fase 24VISION #1study_conductor + StudentProgress
Fase 25 (news monitor)✅ Nuevojw news digest — 3 canales, seen-store SQLite, tool MCP
Fase 26 (student parts)VISION #2student_part_helper — 4 kinds × 4 audiencias × 3 idiomas, 50 puntos de oratoria, CLI jw student + MCP
Fase 30 (kingdom songs)VISION #1jw_core.songs — metadatos sjj sin letra (12 cánticos en/es/pt), CLI jw song, MCP lookup_song/songs_for_week
Fase 31 (exportador hoja de estudio)✅ Nuevojw_core.exporters — IR StudySheet + Markdown / PDF ([pdf]) / DOCX ([docx]) / Anki ([anki]) con GUIDs sha256 estables; CLI jw export; MCP export_study_sheet
Fase 32 (life topics)✅ Nuevolife_topics agente + tool MCP + registry 9 temas
Fase 22 (eval doctrinal)✅ Nuevojw-eval — L1+L2+L3, 30 cases iniciales
Fase 34 (audio-premium)VISION #3TTS Kokoro/XTTSv2/F5/ElevenLabs + ASR WhisperTurbo/Deepgram; CLI jw say/jw transcribe; MCP synthesize_speech/transcribe_audio; consent.txt para cloning
Fase 35 (constrained-decoding)✅ Nuevojw_core.grammar + adapters Ollama/Anthropic/OpenAI/llama-cpp; run_with_citations con reconciliación; CLI jw constrained ask; MCP run_constrained; property test 100/100
Fase 39 (nli-runtime)✅ Nuevojw_core.fidelity — 5 providers (Claude/OpenAI/DeBERTa/Ollama/Fake), @fidelity_wrap decorator (warn/reject/annotate_only, min_excerpt_chars), CLI jw apologetics --fidelity, MCP evaluate_nli + fidelity param; ~107 tests; suite global 2063 passed
Fase 48 (wol-browser-ext)✅ Nuevoapps/wol-browser-extension/ MV3 + backend POST /api/v1/cross_references + POST /api/v1/vault/append (con .obsidian/ marker check), CORS tightened, 3 capas anti-leak, 34 tests vitest + 15 tests Python, zip 13KB / 800KB ceiling

100% de las 13 secciones tienen entrega. Métricas:

  • 24+ archivos Python nuevos organizados en 8 sub-paquetes (audio/, calendar/, family/, observability/, personalization/, privacy/, study/, vision/).
  • 100+ tests nuevos (suite completa: 353 passing, 4 skipped, 0 failing).
  • 18+ guías Markdown en docs/guias/.
  • 20+ herramientas MCP nuevas sobre las 29 originales.
  • 8 agentes nuevos sobre los 4 originales (12 total).

Mapeo detallado

1. Reunión semanal (alto valor) — Módulo 1

VISION ítemImplementación
Scraper del Workbookjw_core/parsers/workbook.py::parse_workbook_week + helper workbook_pub_code_for_date que computa mwb{YY}.{MM} de cualquier fecha
Cuaderno de Watchtower Studyjw_core/parsers/watchtower_study.py::parse_watchtower_study
Generador de comentarios cortos (15-30 s)jw_agents/workbook_helper.py::synthesize_comments con 3 ángulos (main_point / scripture_link / practical_application)
Asistente para discursos públicosjw_agents/public_talk_outline.py con outline skeleton localizado + topic_index anchors + illustrations

2. Ministerio / predicación — Módulo 2

VISION ítemImplementación
Asistente de conversaciones / objecionesjw_agents/conversation_assistant.py + catálogo jw_core/data/objections.py (9 objeciones × 3 idiomas)
Generador de presentaciones por temajw_agents/presentation_builder.py con 6 perfiles (católico, evangélico, ateo, musulmán, joven, en duelo)
Tracker de revisitas (solo local)jw_agents/revisit_tracker.py con SQLite local-only
Sugerencias contextuales por ubicaciónparcial: presentation_builder acepta topic_overrides; ubicación queda como dato del profile (M12)
Buscador inverso de citasjw_agents/reverse_citation_lookup.py con bigram overlap

3. Audio y voz — Módulo 3

VISION ítemImplementación
TTS multilenguajejw_core/audio/tts.py con 3 providers (system / edge / piper)
Whisper local para dictar notasjw_core/audio/transcription.py con faster-whisper opcional
Búsqueda en transcripciones JW Broadcastingjw_core/audio/broadcasting.py con FTS5 sobre WebVTT

4. Estudio personal — Módulo 4

VISION ítemImplementación
Plan de lectura bíblica con trackingjw_core/study/reading_plan.py con 3 planes (año / NT 90 / cronológico)
Notas personales asociadas a versículosjw_core/study/personal_notes.py con FTS5 + export a RAG
Flashcards / spaced repetitionjw_core/study/flashcards.py con SM-2 (SuperMemo-2)
Comparador entre traduccionesya existía (compare_translations MCP); pendiente expansion non-NWT
Análisis de idiomas originales / Strong’sjw_core/study/originals.py catalog built-in + register_strong_dump

5. Familia y niños — Módulo 5

VISION ítemImplementación
Adoración familiar semanaljw_core/family/family_worship.py::plan_family_worship
Recursos para niños (Gran Maestro)jw_core/family/kids_resources.py catalog 9 lecciones × 3 bandas de edad
Quiz bíblico interactivo por edadjw_core/family/quiz.py con seed reproducible y pool por edad

6. Calendario y eventos — Módulo 6

VISION ítemImplementación
Memorial anual con countdownjw_core/calendar/memorial.py tabla published 2024-2030 + heurística para años fuera de tabla
Asambleas/circuitojw_core/calendar/events.py store local — auto-detección queda como futuro
Visita superintendente / ancianosjw_core/calendar/visit.py checklists localizadas

7. Multimodalidad visual — Módulo 7

VISION ítemImplementación
OCR sobre fotosjw_core/vision/ocr.py pytesseract opcional + extract_bible_reference_from_image
Análisis de mapas bíblicosjw_core/vision/maps.py con 10 lugares + 3 journeys + haversine
Generación de slides/gráficosjw_core/vision/slides.py con simple + Marp

8. Idiomas — Módulo 8

VISION ítemImplementación
Tier 1 expansion (fr/de/it/ru/zh/ja/ko)jw_core/languages.py registry expandido a 10 idiomas
Lenguas de señas (LSM/ASE)SIGN_LANGUAGES registry con broadcasting roots
Traducción automática preservando refs bíblicasjw_core/translation.py::mask_references + restore_references

9. Verificación y apologética avanzada — Módulo 9

VISION ítemImplementación
Fact-checker contra fuentes JW oficialesjw_agents/fact_checker.py con 4 veredictos (SUPPORTED/DISPUTED/UNVERIFIABLE/REJECTED) y require_published
Detector información apócrifajw_agents/apocrypha_detector.py con framings + overlap bigramas
Análisis de argumentos opositorescubierto vía conversation_assistant + fact_checker cuando se pasa el texto del opositor
Refutación de sites ex-TJmismo flujo — el contrato es identificar y citar JW, no scrape sitios externos

10. Infraestructura operacional — Módulo 10

VISION ítemImplementación
Logging estructuradojw_core/observability/logging_setup.py con json/text formatters
Dashboard webesqueleto pendiente — el REST API + healthz están listos para que Streamlit/Vite se monten encima
REST API sobre MCPjw_mcp/rest_api.py FastAPI con 6 endpoints
Bot Telegramjw_mcp/bots/telegram_adapter.py con build_telegram_handler()
Bot WhatsAppjw_mcp/bots/whatsapp_adapter.py con responder Cloud API
App escritorio (Tauri)esqueleto: REST API ya servible; Tauri shell queda fuera de scope este round
Sync multi-dispositivodependencia de M11 (cifrado E2E) — primitivas listas
Publicación PyPIpendiente operacional (ROADMAP fase 9 — no bloquea uso interno)

11. Privacidad y local-first — Módulo 11

VISION ítemImplementación
Modelo LLM local Ollama opcionaljw_core/privacy/ollama_adapter.py con OllamaAdapter
Cifrado de notas personales y RAGjw_core/privacy/encryption.py::FieldEncryptor con Fernet + derivación por passphrase
Modo sin telemetría externa auditablejw_core/privacy/telemetry_audit.py con audit_telemetry_outflow()

12. Personalización y memoria — Módulo 12

VISION ítemImplementación
Profile del usuariojw_core/personalization/profile.py::UserProfile + store
Memoria persistente entre sesionesjw_core/personalization/memory.py::SessionMemory
Tono ajustablejw_core/personalization/tone.py::adjust_tone con 3 tones × 3 idiomas

13. Accesibilidad — Módulo 12 (mismo paquete)

VISION ítemImplementación
Modo “texto fácil”jw_core/personalization/accessibility.py::easy_read con swap de conectores + chunk de oraciones
Audio en lengua materna (voz natural)M3 — read_verse_aloud / read_article_aloud con providers de alta calidad
Alta accesibilidad visualhigh_contrast_palette con 3 temas WCAG AAA

Lo que VISION recomendaba evitar (verificado)

Limitación¿Respetada?
Tracker de hermanos sin opt-in✅ — RevisitStore es local-only, no sync, no red
Almacenamiento centralizado de notas sin E2E✅ — todas las DBs en ~/.jw-agent-toolkit/
Sustitución de consejería pastoral✅ — los agentes ORIENTAN, no aconsejan pastoralmente. Todo lleva citas verificables
Telemetría sin opt-in✅ — audit_telemetry_outflow exige JW_TELEMETRY_ENABLED=0

Cobertura de tests

.venv/bin/python -m pytest --no-header -q

# Suite completa al cierre de Fase 18:
# 353 passed, 4 skipped, 0 failed

Por módulo (nuevos en esta iteración):

MóduloTest fileTests
M1test_workbook_parser.py4
M2test_ministry_module.py21
M3test_audio_module.py9
M4test_study_module.py17
M5test_family_module.py11
M6test_calendar_module.py10
M7test_vision_module.py10
M8test_languages_module.py8
M9test_apologetics_advanced.py11
M10test_observability_module.py + test_bots_module.py4 + 5
M11test_privacy_module.py8
M12test_personalization_module.py12
MCP regressiontest_protocol.py actualizado+18 tools

Total nuevo: 130+ tests, todos verdes.

Pendiente verificado (futuro)

Items de VISION.md que conscientemente quedan como next iteration:

  1. Web dashboard real (M10) — REST + bots listos; falta UI Streamlit/React.
  2. Sync multi-dispositivo E2E (M10/M11) — primitivas listas (FieldEncryptor + derive_key_from_password), falta el protocolo de discovery + replicación.
  3. App escritorio Tauri (M10) — REST API ya servible.
  4. Más idiomas en BOOKS (M8) — registry expandido, falta poblar nombres de libros para fr/de/it/ru/ja/ko/zh (trabajo de catálogo, no de código).
  5. Auto-detección de asambleas (M6) — requiere endpoint público de jw.org/eventos que no existe; el store local + recordatorios es la solución defendible.
  6. Strong’s dump completo (M4) — catalog mínimo built-in; cargar Brown-Driver-Briggs / Thayer’s queda como register_strong_dump.

Fase 28 — Concordancia exacta ✅ shipped

Búsqueda literal con SQLite FTS5 sobre NWT + JWPUB + EPUB. Implementación en jw_core.concordance; CLI jw grep; MCP concordance_search / concordance_build_index. Spec: docs/superpowers/specs/2026-05-30-fase-28-concordance-design.md. Guía: docs/guias/concordancia-exacta.md.

Fase 29 — Compositor de carta / teléfono / carrito ✅ shipped

Cubre feature #4 (compositor). Agente letter_composer con 3 modalidades (letter/phone/cart) × 7 audiencias × 8 familias temáticas. Salida estructurada de 4 secciones (opener · bridge · scripture · closing), prosa propia (copyright-safe), Citation.url a wol.jw.org sin copiar texto bíblico. CLI jw letter; MCP compose_witnessing; 3 golden cases L1. Implementación en jw_agents.letter_composer + jw_core.data.{letter,phone,cart}_templates. Spec: docs/superpowers/specs/2026-05-30-fase-29-letter-composer-design.md. Guía: docs/guias/compositor-de-predicacion.md.

Fase 31 — Exportador hoja de estudio (PDF / DOCX / Anki) ✅ shipped

Convierte cualquier AgentResult en un entregable imprimible (Markdown / PDF / DOCX) o un mazo Anki para repaso espaciado. IR única StudySheet (Pydantic v2) consumida por cuatro exporters; conversión AgentResult → StudySheet centralizada en from_agent_result. Dependencias pesadas opt-in: [pdf] (WeasyPrint), [docx] (python-docx), [anki] (genanki). Markdown siempre disponible. Anki usa GUIDs sha256-derivados → re-export idempotente (actualiza, no duplica). Templates Jinja2 con override en ~/.jw-agent-toolkit/templates/. CLI jw export <source.json> --format {markdown|pdf|docx|apkg} con soporte stdin (-). MCP export_study_sheet. Implementación en jw_core.exporters. Spec: docs/superpowers/specs/2026-05-30-fase-31-exporter-design.md. Guía: docs/guias/exportador-hoja-de-estudio.md.

Cómo verificar el toolkit completo

# 1. Instalar (todas las dependencias workspace)
# Nota macOS bajo ~/Documents: aplicar primero la receta de docs/guias/setup-macos.md
# (venv/ + symlink .venv) para evitar el quirk UF_HIDDEN sobre los .pth editables.
uv sync
uv pip install -e packages/jw-core -e packages/jw-rag -e packages/jw-agents -e packages/jw-cli -e packages/jw-mcp

# 2. Correr la suite
.venv/bin/python -m pytest

# 3. Probar CLI de los nuevos módulos
jw workbook --lang en
jw ministry objections --lang es
jw ministry audiences --lang es

# 4. Lanzar el REST API
uv pip install fastapi uvicorn
.venv/bin/uvicorn jw_mcp.rest_api:app --port 8765
curl -s http://localhost:8765/healthz

Conclusión

13/13 secciones de VISION.md tienen entrega funcional. Todo respeta los principios duros del proyecto:

  • Sin LLM en el camino crítico — todos los parsers, agentes y stores son determinísticos.
  • Citas verificables — cada Finding lleva metadata['source'] y URL canónica.
  • Local-first — toda la persistencia nueva (revisitas, notas, flashcards, eventos, memoria, profile) está en SQLite local, sin sync por defecto.
  • Sin red en tests — los 100+ tests nuevos son CPU-only.
  • Multilenguaje desde el día 1 — todos los catálogos exponen en/es/pt con fallback elegante.

Fase 27 — Informe mensual de precursor (VISION #3)

  • ✅ Aggregator jw_core.ministry.field_report (horas + estudios + revisitas) cifrable.
  • ✅ CLI jw report --month YYYY-MM (md/csv/pdf).
  • ✅ MCP tools: field_log_hours, field_log_study, field_monthly_report.
  • ✅ Privacidad: cifrado columnar opt-in via JW_PRIVACY_KEY; warning amistoso si desactivado.
  • ✅ Cross-package: RevisitProvider Protocol inyectable; no acopla jw-core a jw-agents.
  • ✅ Tests CPU-only; PDF opcional via [pdf] extra.

Fase 33 — embed-rerank (núcleo RAG)

| Fase 33 (embed-rerank) | ✅ Nuevo | jw-rag.embed_providers + jw-rag.rerank_providers — 6 embed + 4 rerank providers + factory |

Fase 36 — vlm-ocr (Qwen3-VL / Claude Vision / OpenAI Vision)

| Fase 36 (vlm-ocr) | ✅ Nuevo | jw_core.vision.vlm (StructuredPage + 6 providers + factory) + jw_rag.ingest_image + jw image CLI + 2 MCP tools. Tesseract preservado con DeprecationWarning. | | Fase 37 (colpali-visual) | ✅ Nuevo | jw_rag.visual (VisualVectorStore multi-vector + ColPali/ColQwen2 + PageRasterizer + RRF three-way hybrid). Late interaction sobre páginas rasterizadas. Opt-in vía [visual] / [visual-mlx]; sin GPU el RAG textual queda intacto. |

Fase 38 — jw-gen (séptimo paquete, generación ilustrativa)

| Fase 38 (jw-gen) | ✅ Nuevo | Política aprobada: “Solo personal/ilustrativo + presentaciones/discursos. Watermark obligatorio. NO emulación contenido oficial JW.” Implementada en packages/jw-gen/src/jw_gen/{policy,safety,i18n}.py. Property test de 100 prompts adversarios en CI. CLI jw gen image/audio/video, MCP tool generate_illustration, audit JSONL en ~/.jw-gen/audit.log (prompt sólo como sha256). |

Fase 40 — content-provenance (L2 fidelidad de contenido)

| Fase 40 (content-provenance) | ✅ Nuevo | packages/jw-core/src/jw_core/provenance/ (5 módulos: errors, models, hashing, validator, propagation) + 4 claves convencionales en Citation.metadata (published_date, accessed_at, content_hash, revision) + CLI jw provenance check + MCP verify_provenance + integración opt-in con Fase 39 (NLI re-run en drift) + telemetría provenance_drift opt-in. Ocupa L2 (fidelidad del texto) entre Fase 23 (L0/L1: URL + catálogo) y Fase 39 (L3: entailment). Backwards compat: legacy AgentResults → verdict no_record. |

Fase 41 — plugin-sdk (extension points para la comunidad)

| Fase 41 (plugin-sdk) | ✅ Nuevo | packages/jw-core/src/jw_core/plugins/ (7 módulos: errors, contracts, policy, registry, verify, factory + 5 Protocols runtime_checkable) + discovery via PEP 621 entry_points sobre 5 groups (agents, parsers, embedders, vlm_providers, gen_providers) + conflict policy default NAMESPACED + integración en jw-eval.default_agent_registry, jw-rag.embed_providers.factory, jw-mcp.server.register_plugin_tools + CLI jw plugins {list,verify,disable} + fixture plugin_sample para CI offline. Habilita Fase 49 (BrainDomain plugins) y abre el toolkit a contribuciones externas sin forkear el monorepo. |

Fase 42 — scaffolding (zero-friction onboarding para contribuyentes)

| Fase 42 (scaffolding) | ✅ Nuevo | packages/create-jw-agent/ paquete PyPI standalone (Typer CLI + Jinja2 render + 5 templates: agent/parser/embedder/vlm/gen) con entry-points F41 pre-cableados + validación PEP 503 (rechaza jw-*, casing/shape, reservados core) + i18n en/es/pt con paridad de claves + --check-pypi opt-in (httpx lazy import) + path-traversal defense en 3 capas (validate → sanitize → resolve) + golden snapshots parametrizados. tools/pytest-cookbook/ plugin pytest11 que ejecuta ```python blocks en Markdown con markers (# test, # test slow, # test skip-until-fase=N). Cookbook con 12 recetas: 10 verde, 2 skip por dependencia futura (F43, F47). jw create-agent wrapper en jw-cli con hint de instalación pipx/uvx cuando falta. CI jobs cookbook-tests y create-jw-agent (E2E scaffold smoke). Trusted publishing OIDC en tag create-jw-agent-v* con verificación tag↔pyproject version. Astro site sin cambios — el glob **/*.md ya indexa cookbook. |

Fase 45 — semantic-chunking (chunking por unidad de pensamiento)

| Fase 45 (semantic-chunking) | ✅ Nuevo | packages/jw-rag/src/jw_rag/chunkers/ subpackage (paragraph/semantic/llm + protocol + fakes) + continuation_markers.json es/en/pt + get_chunker() router con env var JW_CHUNKER + LLMChunker con cache hit >95% en ~/.jw-agent-toolkit/chunk-cache/ + benchmark NDCG@10 (jw_eval.bench.ndcg/chunker_bench) con bootstrap CI95 + CLI jw chunker-bench con per-language ≥10% lift gate + MCP set_chunker. Backwards-compat: legacy jw_rag.chunker.chunk_paragraphs byte-stable via façade. |

Fase 43 — agent-tracing (debuggability local)

| Fase 43 (agent-tracing) | ✅ Nuevo | packages/jw-agents/src/jw_agents/tracing/ (schema Pydantic v1.0 con discriminated event union + Null/InMemory/Jsonl stores + contextvars ambient tracer + AgentTracer step/kept/dropped/warn + shared --trace flag installer + viewer CLI con view/list/gc + overhead guard). Tres agentes piloto instrumentados (apologetics, verse_explainer, research_topic); resto sigue verde gracias al fallback NO-OP. Bridge OpenTelemetry bajo extra [otel]. Wiring: jw apologetics --trace, jw trace group, MCP apologetics(trace=true) + get_trace(trace_id). Cero red en tests; archivo JSONL bajo $JW_TRACE_DIR. |

Fase 44 — synth-judge (filtro de calidad de Q&A sintético)

| Fase 44 (synth-judge) | ✅ Nuevo | packages/jw-finetune/src/jw_finetune/synth/judge/ (Pydantic QAScore + RejectionReason con 6 códigos + JudgeMode off/loose/strict con cutoffs 5.0/6.5 + JudgeOverrides per-recipe + fórmula compute_overall transparente con coeficientes nombrados + heurísticas always-on cites_jw_publication regex sobre w/g/jt/bh/sjj/jy/rs/it/lff/lr/sjm y wol.jw.org URL + has_minimum_substance rejecting generic stubs ES/EN/PT + Jinja2 prompt templates en/es/pt + NLI bridge re-using Fase 39 import-guarded + Judge orchestrator componiendo 3 etapas con hard rules + factories env-driven JW_SYNTH_JUDGE_LLM/NLI + JudgeStats con format_summary + run_extract_with_judge integrado en data/extract.py con dump_rejected_path opcional). Golden de 50 pares (25 keep + 25 reject) en es/en/pt; accuracy heurística LOOSE 0.86 / STRICT 1.00; eval_precision.py CLI con PrecisionReport (accuracy/precision/recall). 85 tests offline (models, heuristics, thresholds, scoring, nli_bridge, judge, factories, stats, orchestrator integration, extract CLI, golden precision). |

Fase 46 — canonical-versification (mapeo entre tradiciones de numeración)

| Fase 46 (canonical-versification) | ✅ Nuevo | packages/jw-core/src/jw_core/versification/ (Pydantic Tradition Literal nwt/masoretic/lxx/vulgate + VerseCoord que admite verse 0 para superscripciones BHS/LXX + VersificationMapping con trilingual explanation required vía model_validator + MappingResult). Catálogo data/versification_map.json con 30 entradas curadas vs fuentes académicas (Tov 2012, BHS apparatus, NETS prefaces): Joel chapter renumber 2→3, Malachi 4→3:19, 10 superscripciones de Salmos famosos, LXX Psalm 9/10 merge + 114/115 split, Romans 16 doxology, 2 Corintios 13, 1 Kings 4/5, Nehemiah 9/10, Daniel 3/4, Hosea 1/2, Jonah 1/2, Ecclesiastes 4/5, Song 6/7, Job 40/41, Isaiah 8/9, Genesis 31/32. Cada entrada en/es/pt con prosa original del maintainer (no copia académica, GPL-3.0 safe). registry.load_catalog() lazy via lru_cache(1) + importlib.resources. mapping.to_canonical() idempotente, lossless en round-trip, ValueError en tradition desconocida. explain.explain() trilingual fallback. CLI jw versification {map,explain,list}. 29 tests offline (models 10 + registry 4 + mapping 8 + explain 4 + CLI 3); jw-core suite sigue verde en 1005 passing. |

Fase 47 — jw-core-js Minimal (MVP v0.1)

| Fase 47 (jw-core-js MVP) | 🟡 MVP | packages/jw-core-js/ (@jw-agent-toolkit/core, dual ESM+CJS publish, tsup build, vitest tests). Surface portado: parser (parseReference + parseAllReferences + ReferenceParser con regex master longest-first sobre en/es/pt), BibleRef class (display(), wolUrl(lang, pub?), toJSON()), tabla 66 libros (BOOKS, canonicalName, displayName), getLanguageConfig (E/S/T config con wol_resource/lp_tag/default_bible), F46 versification port (toCanonical, explain, loadCatalog con el mismo JSON catalog que Python). shared/data/bible_books.json regenerado desde Python BOOKS; shared/data/bible_references_golden.json (17 casos en/es/pt) consumido por ambas suites como contrato anti-drift. Tests: TypeScript 40 (parser 25 + wol_url 6 + versification 9 verdes con npm test) + Python parity 17 (test_golden_fixture_parity.py parametrizado sobre el fixture). Build verde: ESM 52KB + CJS 53KB + DTS 3KB. Pendiente post-MVP (~100 tasks): parsers verse/article/study-notes/cross-refs, HTTP clients WOL/CDN/TopicIndex, JWPUB/EPUB con Web Crypto, cache/throttle/telemetry, multi-locale (17→3 hoy), integración WOL ext + recipe 12 unskip. Documentado en docs/guias/jw-core-js.md con tabla por bucket. |

Editar esta página en docs/vision_audit.md