---
id: "0121b"
title: "audit_e2e_coverage_go_infra + fn doctor e2e-coverage subcmd"
status: pendiente
type: feature
domain:
  - registry-quality
scope: registry
priority: alta
depends:
  - "0120"
blocks: []
related:
  - "0121"
created: 2026-05-19
updated: 2026-05-19
tags: [doctor, coverage, e2e_checks, fn-constructor]
---

# 0121b — fn doctor e2e-coverage

## Problema

No hay forma de medir cuantas apps tienen `e2e_checks` declarado. Sin metrica, no se puede gatear coverage ni reportar progreso de 0121.

## Decision

1. Crear funcion del registry `audit_e2e_coverage_go_infra` que escanea `apps/`, `cpp/apps/`, `projects/*/apps/`, parsea frontmatter `app.md`, devuelve `{total, with_checks, missing[], coverage_pct}`.
2. Anadir subcomando `fn doctor e2e-coverage` en `cmd/fn/doctor.go` que invoca la funcion + formatea output (text + `--json`).

## Tareas

1. Crear funcion via `fn-constructor` (Go, domain `infra`).
2. Editar `cmd/fn/doctor.go` para anadir subcmd `e2e-coverage`.
3. Tests unitarios de la funcion.
4. `./fn doctor e2e-coverage` muestra reporte.

## Acceptance

- [ ] `audit_e2e_coverage_go_infra` indexada en registry.db con `signature`, `params_schema`, tests >=1.
- [ ] `fn doctor e2e-coverage --json` devuelve JSON con campos `{total, with_checks, missing, coverage_pct}`.
- [ ] `fn doctor e2e-coverage` (text) muestra tabla legible.
- [ ] Sin warnings en `fn doctor` global.

## DoD

- **Donde**: terminal (`fn doctor e2e-coverage`).
- **Latencia**: <2s.
- **Como vuelve**: `fn doctor` rutinario tras editar `app.md`.
- **Onboarding**: "Antes de cerrar issue que toca app, ejecuta `fn doctor e2e-coverage` para no bajar coverage."

## Tipo orquestador

`feature_app_simple` (1 funcion + 1 subcmd, scope acotado, criterios verificables). Apto para `/autonomous-task 0121b`.
