Skip to content

curate filter pisa decisiones accepted manuales sin avisar (footgun) #233

Description

@complexluise

Contexto

Hallazgo de una corrida de verificación e2e autónoma del CLI (sesión 2026-06-30, corpus examples/valoraciones/, 80 papers).

Qué pasa

curate filter --year-gte 2010 (filtro PRISMA) reclasificó a rejected 2 papers que estaban accepted manualmente, sin ningún aviso:

  • doi:48a2a1b234fd10b9Critical Pedagogy Is Too Big to Fail (2009), era [accepted] [seed] → quedó [rejected].
  • doi:ce36c35622f0d7aeElectronic literacy, critical pedagogy, and collaboration (1995), era [accepted] [seed] → quedó [rejected].

Conteos: antes {accepted: 10, candidate: 70} → después de filter --year-gte 2010: {accepted: 8, rejected: 33, candidate: 39}. Los accepted bajaron de 10 a 8.

Por qué importa

Un filtro masivo sobrescribe silenciosamente decisiones de inclusión humanas. Un investigador que curó cuidadosamente sus accepted puede perderlos con un curate filter de criterio amplio, sin enterarse. Encaja con la clase footgun-invisible.

Reproducción

b2g init /tmp/ws && cd /tmp/ws
b2g snapshot restore --from-corpus <repo>/examples/valoraciones/corpus.parquet
b2g status --json   # accepted: 10
b2g curate filter --year-gte 2010
b2g status --json   # accepted: 8  (2 accepted pasaron a rejected)
b2g read list --status rejected | grep -iE "1995|2009"

Decisión de diseño (no asumida)

¿Cuál es la conducta deseada? Opciones, sin prejuzgar:

  1. Respetar accepted: el filtro nunca rechaza un paper ya accepted (la inclusión manual gana sobre el criterio automático).
  2. Avisar: el filtro puede rechazar accepted, pero emite una advertencia accionable ("N papers accepted fueron rechazados por este filtro: …") y/o requiere --force.
  3. Conducta actual es intencional: el filtro es un criterio duro y debe documentarse explícitamente que pisa accepted.

Mi recomendación tentativa es la opción 2 (avisar), pero es decisión del PO.


Origen: verificación e2e autónoma del CLI (capstone 0.11.0). El resto del CLI pasó limpio; este es el único hallazgo de fondo.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions