Files
fn_registry/functions/infra/proposal_from_failure.md
T
egutierrez 47fac22230 chore: auto-commit (799 archivos)
- .claude/CLAUDE.md
- .claude/commands/subagentes.md
- .claude/rules/INDEX.md
- .mcp.json
- bash/functions/cybersecurity/analyze_dns.md
- bash/functions/cybersecurity/audit_http_headers.md
- bash/functions/cybersecurity/audit_ssh_config.md
- bash/functions/cybersecurity/check_firewall.md
- bash/functions/cybersecurity/detect_suspicious_users.md
- bash/functions/cybersecurity/encrypt_file.md
- ...

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 00:28:20 +02:00

3.1 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, tested, tests, test_file_path, file_path, params, output
name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports tested tests test_file_path file_path params output
proposal_from_failure function go infra 1.0.0 impure func ProposalFromFailure(registryDB string, appID string, results []CheckResult, executionID string) ([]string, error) Crea una fila en la tabla proposals de registry.db por cada CheckResult con Status=fail. Usa kind=new_function para fallos criticos y kind=improve_function para warnings. Retorna los IDs de proposals creados. Parte del bucle reactivo: conecta los resultados de e2e_run_checks con la etapa MEJORAR.
proposals
reactive-loop
e2e
monitoring
registry
infra
pendiente-usar
random_hex_id_go_core
sqlite_open_go_infra
CheckResult_go_infra
false error_go_core
crypto/rand
encoding/hex
encoding/json
fmt
time
database/sql
true
no inserta nada cuando todos los checks pasan
inserta proposal por cada check fallido
proposal critica usa kind new_function
proposal warning usa kind improve_function
proposals tienen timestamp reciente
functions/infra/proposal_from_failure_test.go functions/infra/proposal_from_failure.go
name desc
registryDB Path absoluto o relativo a registry.db. Puede ser ':memory:' en tests.
name desc
appID ID del artefacto (app) al que pertenecen los checks. Se guarda como target_id en la proposal.
name desc
results Lista de CheckResult de e2e_run_checks_go_infra. Solo los con Status=fail generan proposals.
name desc
executionID ID de la ejecucion en operations.db. Se incluye en el campo evidence de la proposal para trazabilidad.
Lista de IDs de proposals creados (formato 'prop_<16hexchars>'). Error si no se puede abrir la BD o falla algun INSERT.

Ejemplo

results, _ := infra.E2ERunChecks(checks, "/opt/apps/myapp")
propIDs, err := infra.ProposalFromFailure(
    "/home/lucas/fn_registry/registry.db",
    "my_app",
    results,
    "exec_20260509_001",
)
// propIDs = ["prop_a1b2c3d4e5f6a7b8", ...]
// Cada ID insertado en proposals con status=pending, created_by=reactive_loop

Mapeo de severity a kind de proposal

Severity del check kind en proposals
critical new_function (proxy de mayor urgencia)
warning improve_function

Nota de diseno: el schema de proposals limita kind a (new_function, new_type, improve_function, improve_type, new_pipeline). No existe bug ni optimization. Se usan new_function e improve_function como proxies hasta que se extienda el schema con un migration. Para un futuro migration: ALTER TABLE proposals ADD COLUMN ... o añadir bug y optimization al CHECK constraint en migrations/NNN_add_bug_kind.sql.

Notas

La funcion abre y cierra la conexion a registry.db en cada llamada. Para uso frecuente dentro de una sesion larga, considerar pasar una *sql.DB abierta como variante futura.

El campo evidence de la proposal contiene JSON con: {check_id, execution_id, exit_code, error, severity} para debugging posterior.