35ace544d9
Anade siete issues que definen el camino para hacer graph_explorer distribuible como binario Windows autocontenido (sin WSL): - 0032 — browser_session enrichers via Playwright (login interactivo, cookies persistentes, fetch_webpage_browser, web_search_browser). - 0033 — dispatcher multi-lenguaje (lang: go|python|bash en manifest) + runtime Python embebido en <app>/runtime/. 3 fases (A=dispatcher, B=runtime, C=UI badges). - 0033b — vendoring de funciones Python por enricher (_vendored/ + .vendor.lock) para que los enrichers no dependan de registry_root en runtime. - 0033c — fn check vendored: drift detection con --fix. - 0033d — fn index lee python_runtime / python_runtime_deps de app.md. - 0033e — /compile orquesta freeze + vendor + go builds. - 0034 — port de los 5 enrichers de sistema a Go. Reusa funciones Go del registry directamente (no copias). Tests pytest existentes pasan sin cambios. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1.9 KiB
1.9 KiB
id, title, status, priority, created, depends_on
| id | title | status | priority | created | depends_on | |
|---|---|---|---|---|---|---|
| 0033c | Comando `fn check vendored` — drift detection | pending | medium | 2026-05-02 |
|
Objetivo
Subcomando del CLI fn para detectar drift entre los _vendored/
de los enrichers y la fuente del registry. Permite auditoria en CI y
diagnostico rapido cuando algo deja de funcionar tras editar una
funcion.
CLI
fn check vendored # recorre todas las apps con vendoring
fn check vendored apps/graph_explorer # solo esta app
fn check vendored --fix # re-vendoriza si detecta drift
Salida esperada:
[OK] apps/graph_explorer/enrichers/fetch_webpage 3 funcs, lock OK
[DRIFT] apps/graph_explorer/enrichers/extract_links 1 func cambio
- extract_urls_py_cybersecurity (lock=abc123, current=def456)
[MISS] apps/graph_explorer/enrichers/web_search sin .vendor.lock
Exit codes:
- 0: todo OK
- 1: drift detectado
- 2: error operativo (manifest invalido, registry.db inaccesible)
Implementacion
cmd/fn/check_vendored.go:
- Glob
apps/*/enrichers/*/manifest.yamlyprojects/*/apps/*/enrichers/*/manifest.yaml. - Filtrar los con
lang: pythonyuses_functionsno vacio. - Por cada uno:
- Si no existe
.vendor.lock→ MISS. - Por cada linea del lock: leer
file_pathactual de registry.db, calcular sha256, comparar.
- Si no existe
- Con
--fix: invocarvendor_enricher_python.shcuando se detecta drift o miss.
Tests
- Caso OK: manifest + lock + ficheros consistentes.
- Caso DRIFT: editamos un .py vendorizado, el comando lo detecta.
- Caso MISS: enricher con
lang: pythonyuses_functionsno vacio pero sin lock. - Caso
--fix: tras drift, ejecutar con--fixdeja todo OK.
Definicion de hecho
fn check vendoredreporta el estado correctamente en los 3 casos.--fixre-vendoriza y deja exit code 0.- Tests Go en
cmd/fn/check_vendored_test.go.