0022 — El producto no usa IA generativa; la "inteligencia" del forrajeo es estructura bibliométrica¶
- Estado: Aceptada
- Fecha: 2026-06-15
- Decidido por: Product Owner humano (tras el red-team de la
../Notas/06-critica-as-built-v0.2.md) - Relacionada con: 0008 (wedge = forrajeo; tensiones removidas),
0011 (thesaurus determinista, sin fallback LLM),
0020 (scent = estructura bibliométrica),
../Notas/04-direccion-ia-in-the-loop.md(base de la "máquina de tensiones", ahora abandonada),../Notas/05-ciclo-investigacion-humano.md
Contexto¶
El giro "IA in the loop" (Notas 04/05) proponía dos puntos de inserción de IA en el producto:
nº1 (forrajeo) y nº2 (sensemaking / "máquina de tensiones"). El red-team del AS-BUILT v0.2
(Nota 06, RAÍZ 1) mostró que esa IA-en-el-producto es casi
vapor: el forrajeo rankea por un conteo aritmético (no bibliometría, no IA), la curación es
100% humana, y el único gancho de LLM (explain_candidate) es un NotImplementedError
permanente con el extra [llm] vacío. README/AI_DISCLOSURE/Nota 05, en cambio, venden IA en el
producto ("forrajeo y curación asistidos", "bibliometría como information scent para la IA").
Había, por tanto, drift entre lo que se promete y lo que existe, y una decisión estratégica pendiente: ¿se construye la IA prometida o se reposiciona el claim?
Decisión¶
El producto NO usa IA generativa. La "inteligencia" que asiste el forrajeo es estructura bibliométrica como information scent, determinista y reproducible (acoplamiento / co-citación / centralidad sobre el corpus curado), sin LLM ni embeddings.
- Se eliminan del producto
explain_candidate, el móduloforaging/explain.py, el extra[llm]y la idea de "thesaurus fuzzy con LLM". El scent deja de ser un conteo aritmético y pasa a consumir los proyectores (ADR 0020 actualizado). - La máquina de tensiones / sensemaking asistido por IA se retira del alcance por completo — no se difiere a v2: se borra del producto y se reconcilian las Notas/ADRs que la insertaban (ADR 0008 actualizado). El sensemaking sigue siendo humano, asistido por las redes (no por IA).
- Queda un solo sentido de "AI-in-the-loop": el desarrollo de la librería es asistido por IA
(ver
../../AI_DISCLOSURE.md); el producto no usa IA. Ya no hay "dos inserciones de IA": hay una inserción algorítmica (forrajeo por estructura bibliométrica), que no es IA.
Consecuencias¶
- Honestidad total entre lo prometido y lo construido: README, AI_DISCLOSURE, PRD y Nota 05 se reescriben a "una inserción algorítmica, sin IA en el producto". Desaparece la sobre-venta que la Nota 06 marcó.
- Reproducibilidad de punta a punta: sin LLM ni embeddings, el forrajeo, la curación y el análisis son deterministas — coherente con el ADR 0017 (snapshot reproducible bit a bit).
- Se pierde el "moat" candidato (la detección de tensiones, Nota 04 §5). Trade-off asumido: el diferenciador de la V1 descansa en biblioteca viva curada + ecuación consciente + estructura bibliométrica de primera clase + CLI agente-native abierto, no en una capa de IA. Si en el futuro se quisiera una capa asistida, sería una decisión nueva (ADR nuevo), no un default.
- Desaparece la rama de IA de la arquitectura (ARCHITECTURE §3.5/§7): el grafo de dependencias no tiene un sub-árbol LLM; el forrajeo (costura) depende del núcleo de proyección (puro).
- Recomendación para el
coder: borrarforaging/explain.pyy el extra[llm]depyproject.toml; quitarexplain_candidatede la superficie pública; reescribirforaging/scent.pypara consumir proyectores (ver ROADMAP Hito R4). Tratar las Notas 04/05 que prometían tensiones como historia, anotando qué se abandonó.
AS-BUILT — 2026-06-16 (Hito R4: sin IA, construido y verificado)¶
El Hito R4 cumple esta decisión en el código: foraging/explain.py, explain_candidate y el extra
[llm] quedaron eliminados (verificable: el import falla, el extra no está en pyproject.toml); el
information scent se computa con el primitivo bibliométrico collect_item_to_papers
(networks/projectors.py) — sin LLM ni embeddings. El forrajeo (costura) depende del núcleo de
proyección (puro); el núcleo no depende de la costura. La curación sigue siendo 100% humana. 291 tests
verdes, mypy/ruff limpios. Las fórmulas de método (backward = co-citación; forward = citación directa;
centralidad diferida) se documentan en el AS-BUILT del ADR
0020; ninguna usa IA.
Enmienda — 2026-06-17 (la curación automatizada [auto-vN] es opt-in y excepción, NO default · #65)¶
La Nota 13 (sesión de QA con el caso
valoraciones) usó curación automatizada por heurísticas de keywords sobre
título/abstract/keywords para cerrar el ciclo de QA sin esperar la CLI de curación (#22/#26).
Cada decisión del clasificador quedó marcada con un tag de auditoría ([auto-v1]/[auto-v3]/
[auto-v4]) en la columna notes del CSV.
Esto NO modifica la decisión de este ADR. La regla "la curación es 100% humana" sigue vigente. Para que no se lea esa sesión como permiso o precedente:
- La curación automatizada con tags
[auto-vN]es una excepción documentada y acotada a esa sesión de QA, NO un patrón ni un default. Fue una decisión de método del PO para cerrar el ciclo de prueba, no un cambio de producto. - Las heurísticas son deterministas (substring / keywords, sin LLM ni embeddings): coherentes con el §Decisión de este ADR. No introducen IA generativa.
- El default de la CLI nunca aplica curación automática. Si en el futuro se implementa curación asistida heurística, debe ser opt-in explícito y quedar marcada como tal (tags de auditoría + reversibilidad humana); el humano sigue siendo quien acepta o revierte. Esa sería una decisión nueva (enmienda o ADR nuevo), no un comportamiento por defecto.
Referencia: Nota 13 — Continuación de la sesión QA §"La excepción a la regla 'curación 100% humana'".