Independent Project Not affiliated with, sponsored by, or endorsed by the Watch Tower Bible and Tract Society or Jehovah's Witnesses.
jw-agent-toolkit
ES

Guide

jw-legal BrainDomain plugin

Esta guía cubre F82.1: el plugin jw-legal que registra el BrainDomain legal-cases-tj (6 nodos × 8 aristas) en el segundo cerebro.

Uso desde el segundo cerebro

from jw_brain.domain.registry import discover_domains

domains = discover_domains()
legal = domains["legal-cases-tj"]
print([n.name for n in legal.nodes])
# ['LegalCase', 'Law', 'Territory', 'CourtPrecedent', 'LegalArgument', 'PersecutionEvent']
print([e.name for e in legal.edges])
# ['CITES_LAW', 'APPLIES_IN_TERRITORY', 'APPEALS_AGAINST',
#  'SUPPORTED_BY_PRECEDENT', 'CONTRADICTS', 'GROUNDS_ARGUMENT',
#  'OCCURRED_IN', 'JUDGED_BY']

Inicializar el grafo:

uv run jw brain init --domain legal-cases-tj --backend duckdb
uv run jw brain status
# debería listar legal-cases-tj con 6 node types + 8 edge types

Schema

Nodos

Nodocanonical_id_patternConfianza mínObsidian
LegalCasecase:{country_iso}:{court}:{year}:{case_id}0.95cases/
Lawlaw:{country_iso}:{code}0.90laws/
Territoryterritory:{iso_3166_1_alpha2}0.95territories/
CourtPrecedentprecedent:{country_iso}:{court}:{year}:{principle_id}0.85precedents/
LegalArgumentarg:{language}:{principle}:{slug}0.70arguments/
PersecutionEventpersec:{country_iso}:{year}:{slug}0.70persecution/

Territory.iso_3166_1_alpha2 referencia el catálogo jw_core.territories entregado por F82.0 — el plugin no duplica los datos culturales (idiomas, religión, etc.).

Aristas

EdgeSourcesTargetsDirectionalSensitive
CITES_LAWLegalCaseLaw
APPLIES_IN_TERRITORYLawTerritory
APPEALS_AGAINSTLegalCaseLegalCase
SUPPORTED_BY_PRECEDENTLegalCaseCourtPrecedent
CONTRADICTSLawLaw⚠️
GROUNDS_ARGUMENTLegalArgumentLaw, CourtPrecedent
OCCURRED_INPersecutionEventTerritory
JUDGED_BYLegalCaseTerritory

CONTRADICTS es no-direccional y marcado sensitive=True: la política de conflictos del segundo cerebro flag la arista en vez de fusionarla silenciosamente. Útil cuando dos leyes (de distintos países o de distintas épocas en el mismo país) regulan el mismo principio de forma incompatible.

Registro del plugin

pyproject.toml declara el entry-point:

[project.entry-points."jw_agent_toolkit.brain_domains"]
legal-cases-tj = "jw_legal.brain:LegalCasesTJBrainDomain"

El grupo jw_agent_toolkit.brain_domains está registrado en jw_core.plugins.registry.GROUPS desde F82.1. Verificación:

from jw_core.plugins.registry import GROUPS
assert "jw_agent_toolkit.brain_domains" in GROUPS

Conformidad estructural

LegalCasesTJBrainDomain cumple el Protocol jw_brain.domain.contract.BrainDomain (runtime-checkable):

from jw_brain.domain.contract import BrainDomain
from jw_legal import LegalCasesTJBrainDomain

assert isinstance(LegalCasesTJBrainDomain(), BrainDomain)

Esto significa que cualquier otro paquete puede declarar otro BrainDomain (por ejemplo financial-cases-tj) siguiendo el mismo patrón sin tocar ni jw-brain ni jw-core.

Próximas fases que consumen este BrainDomain

  • F82.2HUDOCSource (extiende jw_core.news.NewsSource) ingesta sentencias ECHR y crea LegalCase + JUDGED_BY + CITES_LAW.
  • F82.3 — agente legal_case_researcher query por país/topic/year via jw_brain.query.router.QueryRouter (GRAPH_FIRST).
  • F82.4LegalReasoningStep extiende ReasoningTree (F67) con legal_kind ∈ {textual, contextual, comparative, application}.
  • F82.5 — agente hermeneutics_analyzer.
  • F82.6 — agente precedent_synthesizer (Meta-orchestrator F65 DAG).
  • F82.7 — principios YAML PF020–PF024 en jw-eval.

Edit this page on docs/guias/jw-legal-brain-domain.md