Extrae al registry funciones del proyecto interno footprint_aurgi: - core (6): slugify_ascii, normalize_for_join, cp_provincia_es, infer_provincia_from_cp, safe_read_csv_fallback, csv_to_parquet_duckdb - geo puras (7): haversine_km, point_in_ring, point_in_polygon, point_in_polygons_bbox, polygon_bbox, extent_with_padding, distance_bucket - geo I/O (4): load_geojson_polygons, load_boundary_gdf, add_basemap_osm, add_basemap_with_timeout - valhalla client (4): valhalla_route, valhalla_isochrone, valhalla_isochrones_async, valhalla_matrix_1_to_n - datascience stats (7): trimmed_mean, geometric_mean, detect_distribution_type, best_central_tendency, summary_stats, kde_density_levels, alpha_shape_concave_hull - datascience fuzzy (3): fuzzy_merge_adaptive (rapidfuzz), words_to_dataset, remove_words_from_column - datascience viz (2): plot_kde_2d, plot_heatmap_log - infra (4): compress_pdf_ghostscript, render_table_page_pdfpages, add_header_logo, osm2pgsql_ingest - pipelines (4): setup_geo_stack_docker, compute_centers_reachability, generate_isochrones_by_zone, count_points_per_zone - types geo (4): LonLat, BBox, IsochroneRequest, Centro Incluye: - apps/footprint_geo_stack/ (PostGIS + Martin + Valhalla via docker-compose) - 131/132 tests pasan (1 skip esperado: osm2pgsql en PATH) - Issue tracker dev/issues/0052-footprint-aurgi-extraction.md - Atribucion uniforme: source_repo internal:footprint_aurgi, source_license internal-aurgi - Build con 9 agentes en paralelo (8 wave 1 + 1 wave 2 pipelines) Tambien commitea trabajo previo no commiteado: aggregate_extraction_results, chunk_with_overlap, clean_pdf_text, merge_entity_aliases, extract_graph_gliner2, extract_relations_mrebel, extract_triples_spacy_es, gliner2/mrebel/marianmt/rebel/spacy_es load_model, parse_rebel_output, translate_es_to_en, issue 0050/0051. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
9.1 KiB
2026-05-04
01:26 — Auditoria FP de apps C++, estandarizacion de mds y extension del indexer a <lang>/apps/
Sesion para verificar que las 5 apps C++ del registry usan programacion funcional limpia y que las funciones que enlazan estan correctamente registradas para que apps nuevas puedan reusar todo. Tres hallazgos: 3 .cpp huerfanos sin .md (rompen reuso), drift entre CMakeLists.txt y app.md en las 2 apps con app.md, y 2 apps sin app.md (chart_demo, shaders_lab).
- Hecho: auditoria FP de los 5 mains C++. Resultado:
chart_demo,text_editor_smoke,registry_dashboardlimpios;shaders_labborderline (16 globales, justificado por retained-mode);graph_explorerfuera de convencion (2471 lineas, 24 globales, 23 helpers enmain.cpp— split parcial peromainsigue siendo saco). Helpers candidatos a extraer al registry documentados pero no extraidos en esta sesion. - Hecho: 3
.mdnuevos para TUs huerfanos del registry —cpp/functions/viz/{graph_labels_select,graph_viewport_selection,graph_types}.md. Todospurity: pure.graph_labels.mdygraph_viewport.mdrecortan susignaturey declaran las nuevas entradas enuses_functions. - Hecho:
cpp/apps/chart_demo/app.mdcreado (chart_demo_cpp_viz, 4 deps). - Hecho:
cpp/apps/shaders_lab/app.mdcreado (shaders_lab_cpp_gfx, 19 deps). Antes habia entrada legacy en BD sin.mden disco. - Hecho:
projects/osint_graph/apps/graph_explorer/app.mduses_functionssincronizado conCMakeLists.txt. De 15 a 23 deps. Añadidas:graph_viewport_selection,graph_labels_select,graph_types,graph_spatial_hash,button,icon_button,badge,empty_state. - Hecho:
projects/fn_monitoring/apps/registry_dashboard/app.mduses_functionssincronizado. De 9 a 21 deps. Removidofps_overlay(vive enfn_framework). - Bug + fix:
./fn indexno recogiachart_demonishaders_labaunque tenianapp.mdcorrecto. Raiz:registry/indexer.gosolo escaneabaapps/*/app.mdyprojects/*/apps/*/app.md, NO<lang>/apps/. Fix: añadir loop sobre<lang>/apps/*/app.mdreusando el mismoentriesdeos.ReadDir(root)que ya usa para<lang>/functions/y<lang>/types/. Diff ~12 lineas../fn indexpasa de 15 a 17 apps. - Bug + fix:
chart_demo/app.mddeclaraba inicialmentelogger_cpp_coreenuses_functionsaunqueCMakeLists.txtno lo enlaza directo. Raiz:logger.cppesta bundled enfn_frameworkstatic lib (junto contokens,app_menubar,fps_overlay, etc.). Fix: removido delapp.mdcon comentario explicito. Convencion documentada en.claude/rules/uses_functions.md. - Decision: ADR 0003 (
docs/adr/0003-orphan-tu-as-separate-function-entry.md) — TUs adicionales de un parent function se registran como entrada propia con su.md. El parent declara la nueva entrada enuses_functions. Alternativas descartadas:file_pathmulti-path (rompe convencion),notes:con instruccion (frágil), macro con flags (acopla tests a ImGui). - Hecho:
.claude/rules/uses_functions.mdampliada — lista explicita de funciones bundled enfn_framework(no se declaran en apps), comportamiento de TUs split (ADR 0003), apps como leaves del grafo. - Hecho:
.claude/CLAUDE.mdraiz añadecpp/apps/a la seccion Estructura como ubicacion valida tras la extension del indexer. - Hecho:
CHANGELOG.mdentrada 2026-05-04 con 3 nuevas funciones, 2 apps registradas, 2 apps sincronizadas, indexer extendido, ADR 0003. - Hecho: build
cppverde para los 4 targets (chart_demo,shaders_lab,registry_dashboard,graph_explorer)../fn indexreporta 952 functions / 17 apps / 8 analyses. - Hecho: cross-check final
CMakeLists.txt↔app.mdcon script Python — los 4 apps a 0 missing / 0 extra. - Pendiente: extraer helpers de
graph_explorer/main.cppal registry (algoritmos de layoutlayout_no_collision,find_collision_free_slot,place_orphans_near_neighbors; persistenciapanel_state_*; utilitiesdetect_wsl_distro,resolve_registry_root,json_escape_str). - Pendiente:
primitives_galleryno tieneapp.md. Decidir si registrarla (showcase visual estable) o dejarla como scaffolding/demo (etiqueta del ruleuses_functions.md). - Pendiente: commit + push de los cambios (binary
fnrebuilt no commiteado, .md yregistry/indexer.gomodificados).
Refs: ADR 0003, funciones graph_labels_select_cpp_viz, graph_viewport_selection_cpp_viz, graph_types_cpp_viz, apps chart_demo_cpp_viz, shaders_lab_cpp_gfx. Cambio en indexer: registry/indexer.go lineas ~87-122.
22:50 — Pipeline NER+RE para graph_explorer: 18 funciones nuevas + analysis + playground + vault
- Hecho: investigacion empirica completa de modelos NER/RE en
projects/osint_graph/analysis/gliner_glirel_tuning/. 9 notebooks ejecutados (01-09), cada uno con subuild_notebook_*.pyy, los pesados, surun_*.pyque vuelca a JSON. Los notebooks viven listos para abrir desde Jupyter Lab (localhost:8888). - Hecho: dos rondas de
fn-constructorel mismo dia. Ronda 1 (mañana): 8 funciones para mREBEL/REBEL/MarianMT (parse_rebel_output,align_relations_to_entities,mrebel_load_model,mrebel_base_load_model,rebel_load_model,marianmt_es_en_load_model,translate_es_to_en,extract_relations_mrebel). Ronda 2 (tarde): 10 funciones para GLiNER2 + OpenIE ES + composicion (clean_pdf_text,chunk_with_overlap,merge_entity_aliases,filter_relations_by_entity_types,aggregate_extraction_results,gliner2_load_model,extract_graph_gliner2,spacy_es_load_model,extract_triples_spacy_es,extract_graph_from_textpipeline). Total registry: 980 → 990 funciones, 60 tests pytest verdes. - Hecho: 3 ADRs cortos en
vaults/osint_nlp_models/decisions/registrando la cadena de decisiones: mañanamrebel-over-glirel.md, tardegliner2-over-mrebel.md(decision final),license-constraint.md. Vault con 5 fichas.mdpor modelo (gliner, glirel, mrebel, gliner2, candidates). - Hecho: PDF
politica_proteccion_datos.pdf(BBVA, 89.882 chars) copiado a~/vaults/osint_nlp_models/test_documents/para reproducibilidad cross-PC. Procesado por todos los pipelines: GLiNER2 t=0.3+coref → 440 nodos / 166 aristas / 139s; NuExtract GPU → 80 nodos / 10 aristas / 361s. - Hecho: playground HTML en
projects/osint_graph/analysis/gliner_glirel_tuning/playground/. FastAPI server con GLiNER2 cacheado, frontend Sigma.js con layout server-side vianetworkx.spring_layout(sin fisica frontend → sin loops ResizeObserver). Sirviendo enlocalhost:7878con chunking automatico, post-filter typed, coref, KPIs, JSON exportable. - Hecho: 4 issues nuevos:
dev/issues/0050-jupyter-exec-collab-client-failure.md(bug + workaround),dev/issues/0051-extraction-pipeline-followups.md(5 funciones aun por construir),graph_explorer/issues/0041-split-confidence-thresholds.md,graph_explorer/issues/0042-gliner2-unified-extractor.md. Issue0042-mrebel-relation-extractor.md.supersededarchivado al ganar GLiNER2. - Hecho:
cpp/CMakeLists.txtpatcheado (commite72d6364) para que_GE_DIRy_DASH_DIRse sobreescriban via-D...=<path>— habilitaparallel-fix-issuessobre apps C++ con worktrees. - Hecho: workaround compat
huggingface_hub1.x englirel_load_model.py(commit3b3378cf) — classmethod monkey-patch idempotente para_from_pretrainedcon kwargsproxies/resume_download. - Hecho: dos issues del sub-repo
dataforge/graph_explorermergeados local en master con--no-ff(issue/0035e-polish-and-testscommitf614a51,issue/0013-paste-extract-panelcommit2a49c2b). 125/125 tests pytest verdes. - Hecho:
CHANGELOG.mdactualizado con seccion completa NER+RE (funciones, analysis, vault, playground, issues, decisiones, bugs+fixes). - Hecho:
analysis.mddegliner_glirel_tuningreescrito con tabla de 9 notebooks + stack final + decisiones del vault + comandos para reproducir. - Hecho:
app.mddegraph_explorerañade seccion "Pipeline NER+RE disponible en el registry" — el stack completo listo para cablear enextract_graph_hybrid_py_pipelinesy panelpaste_extract. - Pendiente: validacion Windows del binario
graph_explorercon los merges de hoy (issues 0013 + 0035e). - Pendiente: push de los 3 commits no pusheados (
fn_registrymaster commitse72d6364+3b3378cf,dataforge/graph_explorermaster commits f614a51 + 2a49c2b). - Pendiente: issue 0051 — 5 funciones aun por construir (NuExtract loader/extractor,
extract_graph_from_pdfpipeline,extract_triples_spacy_es_v2con pasiva refleja+copulares+coref, fix kernel startup que sombrea pip packages,extract_relations_rebelEN-only). Brief listo en el issue para proxima ronda fn-constructor. - Pendiente: implementar issues 0041 + 0042 del
graph_explorer(paralelizables con/parallel-fix-issues). El registry tiene todas las funciones necesarias.
Refs: notebooks 01-09_*.ipynb en projects/osint_graph/analysis/gliner_glirel_tuning/notebooks/. Funciones nuevas en python/functions/{core,datascience,pipelines}/. Decisiones en vaults/osint_nlp_models/decisions/. Issues 0050, 0051 en dev/issues/. Issues 0041, 0042 en projects/osint_graph/apps/graph_explorer/issues/.