---
name: audit_registry_paths
kind: pipeline
lang: bash
domain: pipelines
version: "1.0.0"
purity: impure
signature: "audit_registry_paths([output_file: string]) -> void"
description: "Audita file_path de todas las functions y types en registry.db, verifica que cada ruta apunte a un archivo existente en disco, y genera un txt con las rutas rotas para que agentes puedan corregirlas."
tags: [registry, audit, validation, paths, launcher, pipeline, bash]
uses_functions:
  - assert_command_exists_bash_shell
  - assert_file_exists_bash_shell
  - validate_registry_paths_bash_shell
  - report_execution_json_bash_shell
  - exit_with_status_bash_shell
uses_types: []
returns: []
returns_optional: false
error_type: "error_go_core"
imports: []
params:
  - name: output_file
    desc: "archivo de salida con rutas rotas (default: broken_paths.txt en raíz)"
output: "sin salida directa; genera archivo con rutas inválidas"
tested: false
tests: []
test_file_path: ""
file_path: "bash/functions/pipelines/audit_registry_paths.sh"
---

## Ejemplo

```bash
# Con default (genera broken_paths.txt en la raiz)
./bash/functions/pipelines/audit_registry_paths.sh

# Con ruta personalizada
./bash/functions/pipelines/audit_registry_paths.sh /tmp/broken.txt

# Desde fn run (pipeline launcher)
fn run audit_registry_paths
```

## Flujo

1. `assert_command_exists` — verifica que `sqlite3` esta disponible
2. `assert_file_exists` — verifica que `registry.db` existe y reporta su tamano
3. `validate_registry_paths` (functions) — itera todas las functions, verifica cada file_path
4. `validate_registry_paths` (types) — itera todos los types, verifica cada file_path
5. Genera `broken_paths.txt` con formato legible para agentes
6. `report_execution_json` — imprime JSON de ejecucion a stdout
7. `exit_with_status` — exit code segun resultado

## Formato de salida

```
# Broken file_path entries in registry.db
# Generated: 2026-04-03T10:00:00Z
# Total: 11 broken paths
#
# Format: id | file_path (in .md) | domain | table
# ---

## Functions (11)
cdp_click_go_browser | functions/infra/cdp_click.go | browser | functions
```

## Notas

El archivo de salida es consumible por agentes: cada linea tiene el ID de la funcion/tipo y el file_path que necesita correccion. El agente puede leer el .md correspondiente, encontrar el archivo real en disco, y actualizar el campo `file_path`.
