---
id: "0122"
title: "fn-revisor + auto-apply ampliado: desbloquear fase 5"
status: pendiente
type: feature
domain:
  - meta
  - registry-quality
scope: agent
priority: alta
depends:
  - "0121"
blocks:
  - "0123"
related:
  - "0069"
  - "0086"
created: 2026-05-18
updated: 2026-05-18
tags: [revisor, mejorador, proposals, auto-apply, autonomous]
---

# 0122 — fn-revisor + ampliar filtro auto-aplicable del orquestador

## Problema

`fn-mejorador` (fase 5) abre proposals con evidencia, pero el filtro auto-aplicable del orquestador solo cubre `bug_fix`, `e2e_check_add`, `doc_update`, `capability_tag_add`. La mayoria de proposals reales son `new_function` / `refactor` / `improve_function` → quedan `pending` para humano → cola se acumula sin cerrar (3+ proposals pendientes hoy). El bucle reactivo aprende pero no actua.

Ampliar el filtro sin un revisor automatico = kamikaze. Necesitamos un agente `fn-revisor` que actue como gate pre-PR sobre `auto/*`: code review caveman, severity-tagged, sin scope creep.

## Decision

1. **Crear `fn-revisor`** como subagente nuevo (`.claude/agents/fn-revisor/SKILL.md`). Modelo sonnet. Tools: Read, Grep, Bash (read-only). Output formato: `path:line: <emoji> <severity>: <problema>. <fix>.`. Adaptar prompt de `caveman:cavecrew-reviewer` al contexto fn (registry-first, reglas duras, etc.).
2. **Ampliar filtro auto-aplicable** del orquestador para incluir `new_function` con condiciones:
   - fn-constructor crea la funcion en el worktree.
   - Tests de la funcion pasan en el worktree.
   - NO toca apps existentes (solo crea bajo `functions/<domain>/`).
   - `fn-revisor` da veredicto `pass`.
3. **Cron `purge_pending_proposals`**: dagu daily que lee proposals `pending` > 14 dias, las marca `stale`, notifica via matrix (flow 0007).

## Tareas

1. Escribir `.claude/agents/fn-revisor/SKILL.md` con plantilla caveman + reglas fn.
2. Editar `.claude/agents/fn-orquestador/SKILL.md`: anadir `new_function` al filtro con condiciones explicitas.
3. Editar `.claude/rules/autonomous_loop.md`: documentar ampliacion + rol de revisor.
4. Crear `bash/functions/pipelines/purge_pending_proposals.sh` + `.md` via `fn-constructor`.
5. Crear DAG dagu `purge_pending_proposals.yaml` en `~/dagu/` (skill `dagu-auto`).
6. Test: crear proposal `new_function` ficticia, lanzar `/autonomous-task` sobre issue dummy que la dispare, verificar que orquestador aplica + revisor revisa + PR draft sale.

## Acceptance

- [ ] `.claude/agents/fn-revisor/SKILL.md` existe + comparte estilo con `caveman-reviewer`.
- [ ] Orquestador aplica proposal `new_function` cuando condiciones cumplen.
- [ ] `fn-revisor` invocado por orquestador antes de `git commit` en `auto/*`.
- [ ] Pipeline `purge_pending_proposals_bash_pipelines` indexado.
- [ ] DAG dagu activo: `dagu status purge_pending_proposals` muestra ultima ejecucion <24h.
- [ ] `pending_proposals` (telemetria UserPromptSubmit) <=1 tras 1 semana.

## DoD

User-facing surface:
- **Donde**: PR drafts en Gitea + tab Monitor "Proposals" del dashboard + matrix bot notifica purgas.
- **Latencia**: revisor responde <2 min por PR.
- **Como vuelve**: `mcp__registry__fn_proposal action="list"`.
- **Onboarding**: "Si abriste proposal y no fue auto-aplicada, fn-revisor explica por que en su output. Lee y decide: aprobar manual o tunear condicion."
