From e356b7ac4289c4b1fbdb2016e888d5852c510b19 Mon Sep 17 00:00:00 2001 From: Egutierrez Date: Tue, 28 Apr 2026 23:40:22 +0200 Subject: [PATCH 1/6] =?UTF-8?q?chore(registry):=20a=C3=B1adir=20uses=5Ffun?= =?UTF-8?q?ctions=20a=20consumidores=20reales=20(core)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Auditoria del issue 0044: 17 archivos .md de cpp/functions/core/ con uses_functions actualizado para reflejar las llamadas reales detectadas mediante #include en sus .cpp/.h. Los huerfanos referenciados (tokens, app_about, app_settings, layouts_menu, panel_menu, table_view, text_editor, tween_curves, app_settings) ahora aparecen en el grafo de dependencias del registry. Co-Authored-By: Claude Opus 4.7 (1M context) --- cpp/functions/core/app_menubar.md | 2 +- cpp/functions/core/icon_font.md | 3 ++- cpp/functions/core/sql_workbench.md | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/cpp/functions/core/app_menubar.md b/cpp/functions/core/app_menubar.md index 6062b485..c746c035 100644 --- a/cpp/functions/core/app_menubar.md +++ b/cpp/functions/core/app_menubar.md @@ -8,7 +8,7 @@ purity: pure signature: "bool fn_ui::app_menubar(const fn_ui::PanelToggle* panels, size_t count, fn_ui::LayoutCallbacks* layouts_cb)" description: "MainMenuBar ImGui completa con menu View (toggles de paneles) y menu Layouts (guardar/aplicar layouts persistentes). Punto de entrada unificado para la menubar de cualquier app fn_ui." tags: [imgui, ui, menu, panels, layouts, dockspace, menubar] -uses_functions: [panel_menu_cpp_core, layouts_menu_cpp_core] +uses_functions: ["app_about_cpp_core", "app_settings_cpp_core", "layouts_menu_cpp_core", "panel_menu_cpp_core"] uses_types: [] returns: [] returns_optional: false diff --git a/cpp/functions/core/icon_font.md b/cpp/functions/core/icon_font.md index 816c513d..25bfdf95 100644 --- a/cpp/functions/core/icon_font.md +++ b/cpp/functions/core/icon_font.md @@ -8,7 +8,7 @@ purity: impure signature: "void fn_ui::load_default_fonts(float size_px = 13.0f)" description: "Carga Karla-Regular (texto vectorial) + mergea Tabler Icons al mismo tamaño en el atlas de ImGui. Tras esta llamada los TI_* (icons_tabler.h) renderizan inline con el texto." tags: [imgui, fonts, icons, tabler, atlas, init] -uses_functions: [] +uses_functions: ["app_settings_cpp_core"] uses_types: [] returns: [] returns_optional: false @@ -23,6 +23,7 @@ params: - name: size_px desc: "Tamaño en px compartido por texto e iconos. Default 13 = ImGui default historico, render vectorial nitido en Karla y Tabler. El icon merge cuadra el line-height con el texto al usar el mismo tamaño" output: "void — texto + iconos quedan activos en io.Fonts. Si Karla no se encuentra, fallback a ProggyClean default; si Tabler no se encuentra, los TI_* salen como cuadritos. Estado consultable via text_font_loaded() y tabler_font_loaded()" +notes: "consumido por cpp/framework/app_base.cpp" --- # icon_font diff --git a/cpp/functions/core/sql_workbench.md b/cpp/functions/core/sql_workbench.md index 338eb04f..2b4d219e 100644 --- a/cpp/functions/core/sql_workbench.md +++ b/cpp/functions/core/sql_workbench.md @@ -8,7 +8,7 @@ purity: impure signature: "void fn::sql_workbench(const char* id, sqlite3* db, fn::SqlWorkbenchState& state, ImVec2 size); bool fn::sql_workbench_run_query(sqlite3*, const char*, fn::SqlWorkbenchState&); void fn::sql_workbench_load_schema(sqlite3*, fn::SqlWorkbenchState&); void fn::sql_workbench_destroy(fn::SqlWorkbenchState&)" description: "Workbench SQL embebido en ImGui: editor con highlighting (text_editor + CodeLang::SQL), tabla de resultados (table_view), sidebar de schema (sqlite_master) e historial. Ejecuta queries contra una sqlite3* del caller (no abre/cierra la DB)." tags: [imgui, sql, sqlite, editor, table, dashboard, registry, debug] -uses_functions: [text_editor_cpp_core, table_view_cpp_viz, button_cpp_core, tokens_cpp_core] +uses_functions: ["button_cpp_core", "table_view_cpp_viz", "text_editor_cpp_core", "tokens_cpp_core"] uses_types: [] returns: [] returns_optional: false From 08cc179ca8950ab04afe5188fd3e7aa30086a5fd Mon Sep 17 00:00:00 2001 From: Egutierrez Date: Tue, 28 Apr 2026 23:40:31 +0200 Subject: [PATCH 2/6] =?UTF-8?q?chore(registry):=20a=C3=B1adir=20uses=5Ffun?= =?UTF-8?q?ctions=20a=20consumidores=20reales=20(gfx)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Auditoria del issue 0044: 14 archivos .md de cpp/functions/gfx/ con uses_functions actualizado. Resuelve dependencias detectadas via #include: gl_loader (consumido por casi todo el dominio gfx), dag_catalog (consumido por la familia dag_*), fullscreen_quad, gl_framebuffer, gl_shader, mesh_obj_load, uniform_parser y dag_node_previews. Co-Authored-By: Claude Opus 4.7 (1M context) --- cpp/functions/gfx/dag_node_editor.md | 3 ++- cpp/functions/gfx/dag_node_previews.md | 2 +- cpp/functions/gfx/dag_palette.md | 2 +- cpp/functions/gfx/dag_uniforms.md | 1 + cpp/functions/gfx/fullscreen_quad.md | 2 +- cpp/functions/gfx/gl_framebuffer.md | 2 +- cpp/functions/gfx/gl_shader.md | 3 ++- cpp/functions/gfx/gl_texture_load.md | 2 +- cpp/functions/gfx/mesh_gpu.md | 2 +- cpp/functions/gfx/shader_canvas.md | 5 +++-- cpp/functions/gfx/uniform_panel.md | 2 +- 11 files changed, 15 insertions(+), 11 deletions(-) diff --git a/cpp/functions/gfx/dag_node_editor.md b/cpp/functions/gfx/dag_node_editor.md index 11b5d033..f318e3ee 100644 --- a/cpp/functions/gfx/dag_node_editor.md +++ b/cpp/functions/gfx/dag_node_editor.md @@ -8,7 +8,7 @@ purity: impure signature: "bool dag_node_editor(std::vector& pipeline)" description: "Renderiza el node editor visual (imgui-node-editor) para el DAG de shaders. Modifica el pipeline in-place: añade/borra nodos, gestiona aristas (source_ids). Devuelve true si la topologia cambio." tags: [dag, imgui, node-editor, shader, visual, pipeline, gfx] -uses_functions: [] +uses_functions: ["dag_catalog_cpp_gfx", "dag_node_previews_cpp_gfx"] uses_types: [] returns: [] returns_optional: false @@ -22,6 +22,7 @@ params: - name: pipeline desc: "vector de DagStep que representa el pipeline actual; modificado in-place" output: "true si la topologia cambio (nodos o aristas añadidos/quitados); false en caso contrario" +notes: "consumido por cpp/apps/shaders_lab/main.cpp" --- ## Notas diff --git a/cpp/functions/gfx/dag_node_previews.md b/cpp/functions/gfx/dag_node_previews.md index 7ac7d6bc..1a484304 100644 --- a/cpp/functions/gfx/dag_node_previews.md +++ b/cpp/functions/gfx/dag_node_previews.md @@ -8,7 +8,7 @@ purity: impure signature: "void dag_previews_render(const std::vector&, unsigned program, int w, int h); unsigned dag_preview_texture(unsigned editor_uid); void dag_previews_destroy()" description: "Renderiza un thumbnail por cada DagStep con preview_open=true a un FBO propio (lazy, keyed por editor_uid). Bind del FBO + glUniform1i(u_preview_target, i) + draw del quad. Devuelve la textura via dag_preview_texture para mostrarla con ImGui::Image." tags: [opengl, fbo, preview, dag, gfx] -uses_functions: [gl_loader_cpp_gfx, gl_framebuffer_cpp_gfx, fullscreen_quad_cpp_gfx, dag_catalog_cpp_gfx] +uses_functions: ["dag_catalog_cpp_gfx", "fullscreen_quad_cpp_gfx", "gl_framebuffer_cpp_gfx", "gl_loader_cpp_gfx"] uses_types: [] returns: [] returns_optional: false diff --git a/cpp/functions/gfx/dag_palette.md b/cpp/functions/gfx/dag_palette.md index 7cba964e..c44bee15 100644 --- a/cpp/functions/gfx/dag_palette.md +++ b/cpp/functions/gfx/dag_palette.md @@ -8,7 +8,7 @@ purity: impure signature: "void dag_palette()" description: "Paleta de nodos del catalogo, agrupada por kind (Gen/Op/Blend). Cada entrada es un drag source con payload DAG_NODE_TYPE que contiene el name del nodo. El node editor recibe el drop y anade un nuevo DagStep en la posicion del mouse." tags: [imgui, dag, palette, drag-and-drop, gfx, component] -uses_functions: [dag_catalog_cpp_gfx] +uses_functions: ["dag_catalog_cpp_gfx"] uses_types: [] returns: [] returns_optional: false diff --git a/cpp/functions/gfx/dag_uniforms.md b/cpp/functions/gfx/dag_uniforms.md index 45f15448..91d6f972 100644 --- a/cpp/functions/gfx/dag_uniforms.md +++ b/cpp/functions/gfx/dag_uniforms.md @@ -9,6 +9,7 @@ signature: "void dag_uniforms_apply(const std::vector& pipeline, unsign description: "Sube los params del pipeline al shader activo via glUniform4fv. Construye un float[64] con los params de cada DagStep (hasta 16 pasos) y llama glUniform4fv(u_params, 16, data)." tags: [dag, shader, uniforms, opengl, gfx, pipeline] uses_functions: + - dag_catalog_cpp_gfx - gl_loader_cpp_gfx uses_types: - dag_types_cpp_gfx diff --git a/cpp/functions/gfx/fullscreen_quad.md b/cpp/functions/gfx/fullscreen_quad.md index 8e21dbce..65aed29e 100644 --- a/cpp/functions/gfx/fullscreen_quad.md +++ b/cpp/functions/gfx/fullscreen_quad.md @@ -8,7 +8,7 @@ purity: impure signature: "void quad_init(Quad& q); void quad_draw(const Quad& q); void quad_destroy(Quad& q)" description: "VAO/VBO para un fullscreen quad de 6 vértices. El vertex shader genera las posiciones via gl_VertexID, por lo que el VBO queda vacío. quad_draw emite glDrawArrays(GL_TRIANGLES, 0, 6)." tags: [opengl, quad, fullscreen, vao, vbo, gfx] -uses_functions: [] +uses_functions: ["gl_loader_cpp_gfx"] uses_types: [] returns: [] returns_optional: false diff --git a/cpp/functions/gfx/gl_framebuffer.md b/cpp/functions/gfx/gl_framebuffer.md index b8c3840b..0a215039 100644 --- a/cpp/functions/gfx/gl_framebuffer.md +++ b/cpp/functions/gfx/gl_framebuffer.md @@ -8,7 +8,7 @@ purity: impure signature: "void fb_init(Framebuffer& f); void fb_resize(Framebuffer& f, int w, int h); void fb_destroy(Framebuffer& f)" description: "CRUD de un framebuffer OpenGL (FBO + textura RGBA8). fb_resize es no-op si las dimensiones no cambian. Listo para uso con ImGui::Image." tags: [opengl, framebuffer, fbo, texture, gfx, offscreen] -uses_functions: [] +uses_functions: ["gl_loader_cpp_gfx"] uses_types: [] returns: [] returns_optional: false diff --git a/cpp/functions/gfx/gl_shader.md b/cpp/functions/gfx/gl_shader.md index 2efed100..c566dd46 100644 --- a/cpp/functions/gfx/gl_shader.md +++ b/cpp/functions/gfx/gl_shader.md @@ -8,7 +8,7 @@ purity: impure signature: "CompileResult compile_fragment(const std::string& user_fragment_src)" description: "Compila un cuerpo de fragment shader GLSL 330 y retorna un GL program listo para usar. Prepende automáticamente version, out vec4 fragColor y uniforms u_resolution/u_time/u_mouse. Usa GL_GLEXT_PROTOTYPES + GL/glext.h." tags: [opengl, shader, glsl, compile, fragment, gfx] -uses_functions: [] +uses_functions: ["gl_loader_cpp_gfx"] uses_types: [] returns: [] returns_optional: false @@ -23,6 +23,7 @@ params: - name: user_fragment_src desc: "Cuerpo del fragment shader GLSL sin #version, sin 'out vec4 fragColor' ni declaraciones de uniforms. Solo el void main() y funciones auxiliares." output: "CompileResult con program=GL id si ok=true, o err_msg/err_line si falla. program=0 indica error." +notes: "consumido por cpp/apps/shaders_lab/main.cpp; scaffolding/demo en primitives_gallery" --- # gl_shader diff --git a/cpp/functions/gfx/gl_texture_load.md b/cpp/functions/gfx/gl_texture_load.md index e6dd6135..ec1e8dc9 100644 --- a/cpp/functions/gfx/gl_texture_load.md +++ b/cpp/functions/gfx/gl_texture_load.md @@ -8,7 +8,7 @@ purity: impure signature: "GlTexture gl_texture_load(const char* path, bool flip_y, bool srgb)" description: "Carga PNG/JPG/BMP/TGA/HDR desde disco (o memoria) a una textura OpenGL lista para usar como sampler2D. Vendorea stb_image. Soporta sRGB (GL_SRGB8_ALPHA8) y HDR (GL_RGBA16F via stbi_loadf). Genera mipmaps automaticamente. flip_y=true por defecto coincide con la convencion UV de OpenGL." tags: [opengl, texture, image, png, jpg, hdr, stb_image, gfx] -uses_functions: [gl_loader_cpp_gfx] +uses_functions: ["gl_loader_cpp_gfx"] uses_types: [] returns: [] returns_optional: false diff --git a/cpp/functions/gfx/mesh_gpu.md b/cpp/functions/gfx/mesh_gpu.md index c311ce50..449596e0 100644 --- a/cpp/functions/gfx/mesh_gpu.md +++ b/cpp/functions/gfx/mesh_gpu.md @@ -8,7 +8,7 @@ purity: impure signature: "MeshGpu mesh_gpu_upload(const Mesh&); void mesh_gpu_destroy(MeshGpu&)" description: "Sube un Mesh CPU a OpenGL como VAO + VBO interleaved (pos.xyz, normal.xyz) + EBO uint32. Layout: location 0 = a_pos vec3, location 1 = a_normal vec3, stride 6 floats." tags: [opengl, mesh, vao, vbo, ebo, gpu, gfx] -uses_functions: [mesh_obj_load_cpp_gfx] +uses_functions: ["gl_loader_cpp_gfx", "mesh_obj_load_cpp_gfx"] uses_types: [] returns: [] returns_optional: false diff --git a/cpp/functions/gfx/shader_canvas.md b/cpp/functions/gfx/shader_canvas.md index 558caa0e..cb3f2734 100644 --- a/cpp/functions/gfx/shader_canvas.md +++ b/cpp/functions/gfx/shader_canvas.md @@ -9,9 +9,10 @@ signature: "void canvas_render(ShaderCanvas& c, float time_seconds, const std::f description: "Componente ImGui que renderiza un fragment shader GLSL a un FBO y lo muestra en el panel actual. Compone gl_framebuffer, fullscreen_quad y gl_shader. Gestiona resize automático y coordenadas de mouse. Acepta callback opcional uniforms_fn invocado tras glUseProgram para uniforms custom." tags: [opengl, shader, canvas, imgui, fbo, gfx, component] uses_functions: - - gl_shader_cpp_gfx - - gl_framebuffer_cpp_gfx - fullscreen_quad_cpp_gfx + - gl_framebuffer_cpp_gfx + - gl_loader_cpp_gfx + - gl_shader_cpp_gfx - uniform_panel_cpp_gfx uses_types: [] returns: [] diff --git a/cpp/functions/gfx/uniform_panel.md b/cpp/functions/gfx/uniform_panel.md index 0530ace0..52cab7d5 100644 --- a/cpp/functions/gfx/uniform_panel.md +++ b/cpp/functions/gfx/uniform_panel.md @@ -9,8 +9,8 @@ signature: "void uniforms_panel(UniformStore&, const std::vector Date: Tue, 28 Apr 2026 23:40:37 +0200 Subject: [PATCH 3/6] =?UTF-8?q?chore(registry):=20a=C3=B1adir=20uses=5Ffun?= =?UTF-8?q?ctions=20a=20consumidores=20reales=20(viz)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Auditoria del issue 0044: 9 archivos .md de cpp/functions/viz/ con uses_functions actualizado. Resuelve dependencias detectadas via #include: plot_static (consumido por bar_chart, histogram, line_plot, pie_chart, scatter_plot), gl_loader, gl_framebuffer, gl_shader, graph_force_layout, graph_renderer, graph_spatial_hash, orbit_camera, sparkline y tokens. Co-Authored-By: Claude Opus 4.7 (1M context) --- cpp/functions/viz/bar_chart.md | 3 ++- cpp/functions/viz/graph_renderer.md | 2 +- cpp/functions/viz/graph_viewport.md | 2 +- cpp/functions/viz/histogram.md | 3 ++- cpp/functions/viz/line_plot.md | 3 ++- cpp/functions/viz/mesh_viewer.md | 2 +- cpp/functions/viz/pie_chart.md | 3 ++- cpp/functions/viz/scatter_plot.md | 3 ++- 8 files changed, 13 insertions(+), 8 deletions(-) diff --git a/cpp/functions/viz/bar_chart.md b/cpp/functions/viz/bar_chart.md index a5c096fa..984e058a 100644 --- a/cpp/functions/viz/bar_chart.md +++ b/cpp/functions/viz/bar_chart.md @@ -8,7 +8,7 @@ purity: pure signature: "void bar_chart(const char* title, const char* const* labels, const float* values, int count, float bar_width = 0.67f, float height = 200.0f)" description: "Barras verticales ImPlot con ejes pineados, altura explicita, tooltip al hover y auto-rotacion 45 de labels cuando no caben horizontales" tags: [implot, chart, visualization, gpu, bar, tooltip, rotated-labels, locked-axes] -uses_functions: [] +uses_functions: ["plot_static_cpp_viz"] uses_types: [] returns: [] returns_optional: false @@ -33,6 +33,7 @@ params: - name: height desc: "Altura del plot en pixeles (default 200). Explicita para evitar feedback loops con AutoResizeY" output: "Renderiza barras, tooltip al hover con label+valor, y si los labels horizontales no caben los dibuja rotados 45 grados" +notes: "consumido por cpp/apps/chart_demo/main.cpp; scaffolding/demo en primitives_gallery" --- # bar_chart diff --git a/cpp/functions/viz/graph_renderer.md b/cpp/functions/viz/graph_renderer.md index b3a19a34..dc401f08 100644 --- a/cpp/functions/viz/graph_renderer.md +++ b/cpp/functions/viz/graph_renderer.md @@ -8,7 +8,7 @@ purity: impure signature: "GraphRenderer* graph_renderer_create(int width, int height, const GraphRendererConfig& config)" description: "Renderer GPU de grafos con instanced rendering a FBO, compatible con ImGui::Image para visualizacion de grafos grandes" tags: [graph, renderer, opengl, gpu, instanced, fbo, visualization] -uses_functions: [] +uses_functions: ["gl_loader_cpp_gfx"] uses_types: ["GraphData_cpp_viz"] returns: [] returns_optional: false diff --git a/cpp/functions/viz/graph_viewport.md b/cpp/functions/viz/graph_viewport.md index d3a0c611..3cd5046e 100644 --- a/cpp/functions/viz/graph_viewport.md +++ b/cpp/functions/viz/graph_viewport.md @@ -8,7 +8,7 @@ purity: impure signature: "bool graph_viewport(const char* id, GraphData& graph, GraphViewportState& state, ImVec2 size)" description: "Widget ImGui completo para visualizacion interactiva de grafos con pan, zoom, hover, seleccion y layout en vivo" tags: [graph, viewport, imgui, interactive, pan, zoom, dashboard] -uses_functions: ["graph_renderer_cpp_viz", "graph_force_layout_cpp_viz", "graph_spatial_hash_cpp_core"] +uses_functions: ["graph_force_layout_cpp_viz", "graph_renderer_cpp_viz", "graph_spatial_hash_cpp_core"] uses_types: ["GraphData_cpp_viz"] returns: [] returns_optional: false diff --git a/cpp/functions/viz/histogram.md b/cpp/functions/viz/histogram.md index 12382731..6509ed06 100644 --- a/cpp/functions/viz/histogram.md +++ b/cpp/functions/viz/histogram.md @@ -8,7 +8,7 @@ purity: pure signature: "void histogram(const char* title, const float* values, int count, int bins = -1, float height = 200.0f)" description: "Histograma con bins automaticos, ejes lock (con AutoFit para bins dinamicos) y altura explicita" tags: [implot, chart, visualization, gpu, histogram, distribution, locked-axes] -uses_functions: [] +uses_functions: ["plot_static_cpp_viz"] uses_types: [] returns: [] returns_optional: false @@ -31,6 +31,7 @@ params: - name: height desc: "Altura del plot en pixeles (default 200). Explicita para evitar feedback loops con AutoResizeY" output: "Renderiza el histograma en el frame ImGui actual" +notes: "scaffolding/demo en primitives_gallery" --- # histogram diff --git a/cpp/functions/viz/line_plot.md b/cpp/functions/viz/line_plot.md index 1516d16a..0e0becb8 100644 --- a/cpp/functions/viz/line_plot.md +++ b/cpp/functions/viz/line_plot.md @@ -8,7 +8,7 @@ purity: pure signature: "void line_plot(const char* title, const float* xs, const float* ys, int count, float height = 200.0f)" description: "Line plot 2D con ImPlot, ejes pineados y altura explicita para no vibrar al redimensionar" tags: [implot, chart, visualization, gpu, line, locked-axes] -uses_functions: [] +uses_functions: ["plot_static_cpp_viz"] uses_types: [] returns: [] returns_optional: false @@ -31,6 +31,7 @@ params: - name: height desc: "Altura del plot en pixeles (default 200). Explicita para evitar feedback loops con contenedores AutoResizeY" output: "Renderiza la linea en el frame ImGui actual con ejes pineados" +notes: "consumido por cpp/apps/chart_demo/main.cpp; scaffolding/demo en primitives_gallery" --- # line_plot diff --git a/cpp/functions/viz/mesh_viewer.md b/cpp/functions/viz/mesh_viewer.md index dff986d3..343da9ba 100644 --- a/cpp/functions/viz/mesh_viewer.md +++ b/cpp/functions/viz/mesh_viewer.md @@ -8,7 +8,7 @@ purity: impure signature: "void mesh_viewer(const char* id, const MeshViewerConfig& cfg)" description: "Renderiza un MeshGpu (3D) en un FBO interno cacheado por id, con orbit camera, iluminacion Lambert headlight, opcion wireframe. Drag/wheel del mouse mueven la camara." tags: [imgui, opengl, mesh, 3d, viewer, viz, fbo] -uses_functions: [mesh_gpu_cpp_gfx, orbit_camera_cpp_core, gl_framebuffer_cpp_gfx] +uses_functions: ["gl_framebuffer_cpp_gfx", "gl_loader_cpp_gfx", "gl_shader_cpp_gfx", "mesh_gpu_cpp_gfx", "orbit_camera_cpp_core"] uses_types: [] returns: [] returns_optional: false diff --git a/cpp/functions/viz/pie_chart.md b/cpp/functions/viz/pie_chart.md index 1fa3e45e..8eb7011a 100644 --- a/cpp/functions/viz/pie_chart.md +++ b/cpp/functions/viz/pie_chart.md @@ -8,7 +8,7 @@ purity: pure signature: "void pie_chart(const char* title, const char* const* labels, const float* values, int count, float radius = 0.0f, float height = 200.0f)" description: "Pie/donut chart con ImPlot, ejes pineados, altura explicita y tooltip por slice al pasar el mouse" tags: [implot, chart, visualization, gpu, pie, donut, tooltip, locked-axes] -uses_functions: [] +uses_functions: ["plot_static_cpp_viz"] uses_types: [] returns: [] returns_optional: false @@ -33,6 +33,7 @@ params: - name: height desc: "Altura del plot en pixeles (default 200). Explicita para evitar feedback loops con contenedores AutoResizeY" output: "Renderiza el pie en el frame ImGui actual; muestra tooltip con label + valor + % al pasar por encima de un slice" +notes: "scaffolding/demo en primitives_gallery" --- # pie_chart diff --git a/cpp/functions/viz/scatter_plot.md b/cpp/functions/viz/scatter_plot.md index 50fe896c..65b298b2 100644 --- a/cpp/functions/viz/scatter_plot.md +++ b/cpp/functions/viz/scatter_plot.md @@ -8,7 +8,7 @@ purity: pure signature: "void scatter_plot(const char* title, const float* xs, const float* ys, int count, float height = 200.0f)" description: "Scatter plot 2D con ImPlot, ejes pineados y altura explicita para no vibrar al redimensionar" tags: [implot, chart, visualization, gpu, scatter, locked-axes] -uses_functions: [] +uses_functions: ["plot_static_cpp_viz"] uses_types: [] returns: [] returns_optional: false @@ -31,6 +31,7 @@ params: - name: height desc: "Altura del plot en pixeles (default 200). Explicita para evitar feedback loops" output: "Renderiza el scatter en el frame ImGui actual con ejes pineados" +notes: "consumido por cpp/apps/chart_demo/main.cpp; scaffolding/demo en primitives_gallery" --- # scatter_plot From 958189227d712ebe6d429a8a1b91e8e8793dc6cf Mon Sep 17 00:00:00 2001 From: Egutierrez Date: Tue, 28 Apr 2026 23:40:51 +0200 Subject: [PATCH 4/6] chore(registry): notes en huerfanas usadas por framework/apps Auditoria del issue 0044: anota en notes: el contexto de consumo de huerfanos que no pueden registrarse en uses_functions porque sus consumidores no son funciones del registry: - consumido por cpp/framework/app_base.cpp (framework no indexado) - consumido por cpp/apps/{shaders_lab,chart_demo,text_editor_smoke}/main.cpp - scaffolding/demo en primitives_gallery 31 huerfanas anotadas. Las que quedan en uses_functions=[] tras esto son hojas legitimas (no llaman a nada) o realmente sin uso (lista DEAD reportada en el issue 0044). Co-Authored-By: Claude Opus 4.7 (1M context) --- cpp/functions/core/app_about.md | 1 + cpp/functions/core/app_settings.md | 1 + cpp/functions/core/dashboard_panel.md | 1 + cpp/functions/core/file_watcher.md | 1 + cpp/functions/core/fps_overlay.md | 1 + cpp/functions/core/fullscreen_window.md | 1 + cpp/functions/core/layout_storage_sqlite.md | 1 + cpp/functions/core/layouts_menu.md | 1 + cpp/functions/core/orbit_camera.md | 1 + cpp/functions/core/panel_menu.md | 1 + cpp/functions/core/text_editor.md | 1 + cpp/functions/core/tokens.md | 1 + cpp/functions/core/tween_curves.md | 1 + cpp/functions/gfx/dag_catalog.md | 1 + cpp/functions/gfx/gl_loader.md | 1 + cpp/functions/gfx/mesh_obj_load.md | 1 + cpp/functions/gfx/shaderlab_db.md | 1 + cpp/functions/gfx/uniform_parser.md | 1 + cpp/functions/viz/candlestick.md | 1 + cpp/functions/viz/chord.md | 1 + cpp/functions/viz/contour.md | 1 + cpp/functions/viz/gauge.md | 1 + cpp/functions/viz/graph_force_layout.md | 1 + cpp/functions/viz/heatmap.md | 1 + cpp/functions/viz/sankey.md | 1 + cpp/functions/viz/scatter_3d.md | 1 + cpp/functions/viz/sparkline.md | 1 + cpp/functions/viz/surface_plot_3d.md | 1 + cpp/functions/viz/table_view.md | 1 + cpp/functions/viz/treemap.md | 1 + cpp/functions/viz/voronoi.md | 1 + 31 files changed, 31 insertions(+) diff --git a/cpp/functions/core/app_about.md b/cpp/functions/core/app_about.md index fb7b991f..091fa3a5 100644 --- a/cpp/functions/core/app_about.md +++ b/cpp/functions/core/app_about.md @@ -29,6 +29,7 @@ params: - name: label desc: "Texto del MenuItem en la menubar (default 'About...')" output: "about_window_set_info muta el estado global del modulo. about_window_render es no-op si la ventana esta cerrada. about_window_menu_item retorna true si el usuario clico" +notes: "consumido por cpp/framework/app_base.cpp" --- # app_about diff --git a/cpp/functions/core/app_settings.md b/cpp/functions/core/app_settings.md index bcec249e..f05f3faf 100644 --- a/cpp/functions/core/app_settings.md +++ b/cpp/functions/core/app_settings.md @@ -29,6 +29,7 @@ params: - name: label desc: "Texto del MenuItem en la menubar (default 'Settings...')" output: "settings() devuelve referencia mutable al estado vivo. settings_window_render() es no-op si la ventana esta cerrada. add_section es idempotente por id" +notes: "consumido por cpp/framework/app_base.cpp" --- # app_settings diff --git a/cpp/functions/core/dashboard_panel.md b/cpp/functions/core/dashboard_panel.md index 1e3d4373..c3f4abbd 100644 --- a/cpp/functions/core/dashboard_panel.md +++ b/cpp/functions/core/dashboard_panel.md @@ -27,6 +27,7 @@ params: - name: min_height desc: "Alto minimo del panel en pixels (0 = sin restriccion)" output: "true si el panel es visible y se debe renderizar contenido; llamar siempre dashboard_panel_end() independientemente del valor de retorno" +notes: "scaffolding/demo en primitives_gallery" --- # dashboard_panel diff --git a/cpp/functions/core/file_watcher.md b/cpp/functions/core/file_watcher.md index 11deb877..517b38e4 100644 --- a/cpp/functions/core/file_watcher.md +++ b/cpp/functions/core/file_watcher.md @@ -20,6 +20,7 @@ test_file_path: "" file_path: "cpp/functions/core/file_watcher.cpp" params: [] output: "FileWatcher opaco con cola interna de eventos. poll() devuelve std::vector con {path, kind in {Modified, Created, Deleted}}. Errores acumulados en last_error()." +notes: "consumido por cpp/apps/text_editor_smoke/main.cpp; scaffolding/demo en primitives_gallery" --- # file_watcher diff --git a/cpp/functions/core/fps_overlay.md b/cpp/functions/core/fps_overlay.md index 3ec9c16d..601a23c1 100644 --- a/cpp/functions/core/fps_overlay.md +++ b/cpp/functions/core/fps_overlay.md @@ -21,6 +21,7 @@ file_path: "cpp/functions/core/fps_overlay.cpp" framework: imgui params: [] output: "Renderiza el overlay de FPS en el frame ImGui actual" +notes: "consumido por cpp/framework/app_base.cpp" --- # fps_overlay diff --git a/cpp/functions/core/fullscreen_window.md b/cpp/functions/core/fullscreen_window.md index ecdda5d9..f517b67e 100644 --- a/cpp/functions/core/fullscreen_window.md +++ b/cpp/functions/core/fullscreen_window.md @@ -23,6 +23,7 @@ params: - name: id desc: "Identificador ImGui de la ventana, default ##fullscreen (el prefijo ## oculta el texto del titulo)" output: "true si la ventana es visible (siempre true en fullscreen); llamar siempre fullscreen_window_end() independientemente del valor de retorno" +notes: "scaffolding/demo en primitives_gallery" --- # fullscreen_window diff --git a/cpp/functions/core/layout_storage_sqlite.md b/cpp/functions/core/layout_storage_sqlite.md index 89de5b4f..f0bf69f8 100644 --- a/cpp/functions/core/layout_storage_sqlite.md +++ b/cpp/functions/core/layout_storage_sqlite.md @@ -26,6 +26,7 @@ params: - name: blob desc: "Contenido INI serializado con ImGui::SaveIniSettingsToMemory." output: "Las funciones bool retornan true en exito, false en error SQLite. load_blob retorna string vacia si el layout no existe o hay error. list retorna vector vacio en error. Ningun error se propaga como excepcion." +notes: "consumido por cpp/apps/shaders_lab/main.cpp" --- # layout_storage_sqlite diff --git a/cpp/functions/core/layouts_menu.md b/cpp/functions/core/layouts_menu.md index 5fbb1f8b..384e8e45 100644 --- a/cpp/functions/core/layouts_menu.md +++ b/cpp/functions/core/layouts_menu.md @@ -25,6 +25,7 @@ params: - name: cb desc: "LayoutCallbacks con los cinco hooks (list, on_apply, on_save, on_delete, on_reset) y el campo active_name para marcar el layout activo. Callbacks nulos se saltan silenciosamente." output: "true si el usuario disparo alguna accion (aplicar layout, guardar, borrar o reset) en este frame." +notes: "consumido por cpp/apps/shaders_lab/main.cpp" --- # layouts_menu diff --git a/cpp/functions/core/orbit_camera.md b/cpp/functions/core/orbit_camera.md index c7f59aa0..8288c694 100644 --- a/cpp/functions/core/orbit_camera.md +++ b/cpp/functions/core/orbit_camera.md @@ -27,6 +27,7 @@ params: - name: wheel desc: "Float scroll wheel (Imgui::GetIO().MouseWheel). distance *= (1 - wheel*0.1), clamp >0.1" output: "orbit_camera_matrices: CameraMatrices con view (lookAt eye→origin, up=Y) y proj (perspective). Ambas row-major; al pasar a glUniformMatrix4fv usar transpose=GL_TRUE. orbit_camera_handle_drag: muta cam in-place, sin allocacion." +notes: "scaffolding/demo en primitives_gallery" --- # orbit_camera diff --git a/cpp/functions/core/panel_menu.md b/cpp/functions/core/panel_menu.md index ca59de2c..48ff10c1 100644 --- a/cpp/functions/core/panel_menu.md +++ b/cpp/functions/core/panel_menu.md @@ -27,6 +27,7 @@ params: - name: count desc: "Numero de elementos en items." output: "true si el usuario togglo algun panel este frame; false si no hubo cambios o si la MainMenuBar no se abrio (solo para panel_menu)." +notes: "consumido por cpp/apps/shaders_lab/main.cpp" --- # panel_menu diff --git a/cpp/functions/core/text_editor.md b/cpp/functions/core/text_editor.md index 3f620fa0..25a35df5 100644 --- a/cpp/functions/core/text_editor.md +++ b/cpp/functions/core/text_editor.md @@ -24,6 +24,7 @@ source_license: "MIT" source_file: "TextEditor.h, TextEditor.cpp" params: [] output: "TextEditorState opaco — encapsula el editor del vendor + buffer de texto cacheado + flag dirty. Render devuelve true cuando el contenido cambio en el frame actual." +notes: "consumido por cpp/apps/text_editor_smoke/main.cpp; scaffolding/demo en primitives_gallery" --- # text_editor diff --git a/cpp/functions/core/tokens.md b/cpp/functions/core/tokens.md index e37c6b4a..4acb8619 100644 --- a/cpp/functions/core/tokens.md +++ b/cpp/functions/core/tokens.md @@ -21,6 +21,7 @@ file_path: "cpp/functions/core/tokens.cpp" framework: imgui params: [] output: "Tokens constexpr accesibles como fn_tokens::colors::*, spacing::*, radius::*, font_size::*. apply_dark_theme() aplica los tokens al ImGuiStyle global." +notes: "consumido por cpp/framework/app_base.cpp; scaffolding/demo en primitives_gallery" --- # tokens diff --git a/cpp/functions/core/tween_curves.md b/cpp/functions/core/tween_curves.md index 7425261a..7e38351f 100644 --- a/cpp/functions/core/tween_curves.md +++ b/cpp/functions/core/tween_curves.md @@ -25,6 +25,7 @@ params: - name: t desc: "Progreso normalizado en [0,1]. Para t<0 o t>1 algunas curvas extrapolan razonablemente, otras saturan." output: "f(t) — valor de la curva en t. Para curvas no oscilantes f(0)=0 y f(1)=1. Para elastic/bounce f(0)=0 y f(1)=1 pero f puede salir del rango [0,1] en valores intermedios." +notes: "scaffolding/demo en primitives_gallery" --- # tween_curves diff --git a/cpp/functions/gfx/dag_catalog.md b/cpp/functions/gfx/dag_catalog.md index 0d8f1b94..d3433bc6 100644 --- a/cpp/functions/gfx/dag_catalog.md +++ b/cpp/functions/gfx/dag_catalog.md @@ -21,6 +21,7 @@ test_file_path: "" file_path: "cpp/functions/gfx/dag_catalog.cpp" params: [] output: "dag_catalog(): referencia const estable al vector de DagNodeDef (instancia estatica, no se invalida). dag_find(name): puntero al nodo con ese nombre o nullptr si no existe." +notes: "consumido por cpp/apps/shaders_lab/main.cpp" --- ## Nodos incluidos diff --git a/cpp/functions/gfx/gl_loader.md b/cpp/functions/gfx/gl_loader.md index b1688617..14305dd6 100644 --- a/cpp/functions/gfx/gl_loader.md +++ b/cpp/functions/gfx/gl_loader.md @@ -21,6 +21,7 @@ file_path: "cpp/functions/gfx/gl_loader.cpp" framework: opengl params: [] output: "true si todos los simbolos se resolvieron (Linux siempre true; Windows depende de que el contexto GL este activo antes de llamar). false si algun simbolo no esta disponible en el driver." +notes: "scaffolding/demo en primitives_gallery" --- # gl_loader diff --git a/cpp/functions/gfx/mesh_obj_load.md b/cpp/functions/gfx/mesh_obj_load.md index a2172a0d..53f0d560 100644 --- a/cpp/functions/gfx/mesh_obj_load.md +++ b/cpp/functions/gfx/mesh_obj_load.md @@ -27,6 +27,7 @@ params: - name: path desc: "Ruta absoluta o relativa del .obj a leer (mesh_obj_load impuro)" output: "Mesh con positions/normals (stride 3, mismo length) y indices (tri-list, multiplo de 3). Si no hay vn, normales por face (flat shading) y vertices duplicados por face. Mesh vacio si parse falla." +notes: "scaffolding/demo en primitives_gallery" --- # mesh_obj_load diff --git a/cpp/functions/gfx/shaderlab_db.md b/cpp/functions/gfx/shaderlab_db.md index d8ba3ab9..5a1a160e 100644 --- a/cpp/functions/gfx/shaderlab_db.md +++ b/cpp/functions/gfx/shaderlab_db.md @@ -34,6 +34,7 @@ params: - name: err desc: "Mensaje de error opcional si save falla (constraint, schema, IO)." output: "Persistencia en la tabla generators de shaders_lab.db. Las listas vienen ordenadas por label." +notes: "consumido por cpp/apps/shaders_lab/main.cpp" --- ## Schema diff --git a/cpp/functions/gfx/uniform_parser.md b/cpp/functions/gfx/uniform_parser.md index 9e386d17..007e4846 100644 --- a/cpp/functions/gfx/uniform_parser.md +++ b/cpp/functions/gfx/uniform_parser.md @@ -28,6 +28,7 @@ params: - name: glsl_source desc: "Código fuente GLSL completo del fragment shader. Se escanea línea a línea buscando declaraciones uniform con anotaciones opcionales." output: "Vector de UniformDescriptor ordenado según aparición en el shader. Cada descriptor tiene nombre, tipo GLSL, widget ImGui, rangos min/max, valor por defecto y flags (log_scale, step, default_bool)." +notes: "consumido por cpp/apps/shaders_lab/main.cpp" --- # uniform_parser diff --git a/cpp/functions/viz/candlestick.md b/cpp/functions/viz/candlestick.md index 979d266e..f3fdc844 100644 --- a/cpp/functions/viz/candlestick.md +++ b/cpp/functions/viz/candlestick.md @@ -39,6 +39,7 @@ params: - name: tooltip desc: "Si true, muestra tooltip con valores O/H/L/C al hacer hover sobre una vela" output: "Renderiza el grafico de velas OHLC en el frame ImGui actual, sin retornar valor" +notes: "scaffolding/demo en primitives_gallery" --- # candlestick diff --git a/cpp/functions/viz/chord.md b/cpp/functions/viz/chord.md index 91e74b9e..bad28e52 100644 --- a/cpp/functions/viz/chord.md +++ b/cpp/functions/viz/chord.md @@ -31,6 +31,7 @@ params: - name: size desc: "Tamano del area cuadrada del chord. Default 400x400" output: "Renderiza arcos en el borde y cuerdas curvas internas usando AddConvexPolyFilled + AddText" +notes: "scaffolding/demo en primitives_gallery" --- # chord diff --git a/cpp/functions/viz/contour.md b/cpp/functions/viz/contour.md index 7fd3c06f..9e26eb4e 100644 --- a/cpp/functions/viz/contour.md +++ b/cpp/functions/viz/contour.md @@ -35,6 +35,7 @@ params: - name: size desc: "Tamano del rect de render. x <= 0 usa el ancho disponible" output: "Renderiza los contornos como segmentos de linea (AddLine) con color por nivel (gradiente azul->amarillo)" +notes: "scaffolding/demo en primitives_gallery" --- # contour diff --git a/cpp/functions/viz/gauge.md b/cpp/functions/viz/gauge.md index 793e8037..128cdb5a 100644 --- a/cpp/functions/viz/gauge.md +++ b/cpp/functions/viz/gauge.md @@ -31,6 +31,7 @@ params: - name: radius desc: "Radio del gauge en pixels (default 60.0)" output: "Renderiza el gauge en el frame ImGui actual, reservando espacio con ImGui::Dummy" +notes: "scaffolding/demo en primitives_gallery" --- # gauge diff --git a/cpp/functions/viz/graph_force_layout.md b/cpp/functions/viz/graph_force_layout.md index 679ad9d3..22749982 100644 --- a/cpp/functions/viz/graph_force_layout.md +++ b/cpp/functions/viz/graph_force_layout.md @@ -25,6 +25,7 @@ params: - name: config desc: "Parametros de la simulacion: repulsion (fuerza coulombiana), attraction (spring constant), damping (decay de velocidad), theta (precision Barnes-Hut 0=exacto/1=rapido), gravity (atraccion al centro), max_velocity, iterations." output: "Energia cinetica total (suma de |v|^2). Cuando cae por debajo de un umbral elegido por el caller, el layout ha convergido y se puede dejar de llamar." +notes: "scaffolding/demo en primitives_gallery" --- # graph_force_layout diff --git a/cpp/functions/viz/heatmap.md b/cpp/functions/viz/heatmap.md index 85ddda03..81f6d491 100644 --- a/cpp/functions/viz/heatmap.md +++ b/cpp/functions/viz/heatmap.md @@ -33,6 +33,7 @@ params: - name: scale_max desc: "Valor maximo de la escala de color (0 para autodetectar)" output: "Renderiza el heatmap en el frame ImGui actual" +notes: "consumido por cpp/apps/chart_demo/main.cpp; scaffolding/demo en primitives_gallery" --- # heatmap diff --git a/cpp/functions/viz/sankey.md b/cpp/functions/viz/sankey.md index dcecdd77..59d364af 100644 --- a/cpp/functions/viz/sankey.md +++ b/cpp/functions/viz/sankey.md @@ -29,6 +29,7 @@ params: - name: size desc: "Tamano del diagrama. x <= 0 usa el ancho disponible" output: "Renderiza nodos como rectangulos verticales por columna y links como bandas con bezier cubico, con alpha bajo y color del nodo origen" +notes: "scaffolding/demo en primitives_gallery" --- # sankey diff --git a/cpp/functions/viz/scatter_3d.md b/cpp/functions/viz/scatter_3d.md index 3fd868eb..f6ff89ea 100644 --- a/cpp/functions/viz/scatter_3d.md +++ b/cpp/functions/viz/scatter_3d.md @@ -25,6 +25,7 @@ params: - name: cfg desc: "fn::Scatter3DConfig — xs, ys, zs (length n), sizes opcional, colors opcional (ImU32 RGBA), size del plot" output: "Renderiza una nube de puntos 3D dentro del frame ImGui actual; soporta orbit (drag), zoom (wheel) y pan" +notes: "scaffolding/demo en primitives_gallery" --- # scatter_3d diff --git a/cpp/functions/viz/sparkline.md b/cpp/functions/viz/sparkline.md index 74981921..a706b023 100644 --- a/cpp/functions/viz/sparkline.md +++ b/cpp/functions/viz/sparkline.md @@ -31,6 +31,7 @@ params: - name: height desc: "Alto en pixels del sparkline (default 20.0)" output: "Renderiza el sparkline inline en el frame ImGui actual, reservando espacio con ImGui::Dummy" +notes: "scaffolding/demo en primitives_gallery" --- # sparkline diff --git a/cpp/functions/viz/surface_plot_3d.md b/cpp/functions/viz/surface_plot_3d.md index ef6537d9..9ab3cfde 100644 --- a/cpp/functions/viz/surface_plot_3d.md +++ b/cpp/functions/viz/surface_plot_3d.md @@ -25,6 +25,7 @@ params: - name: cfg desc: "fn::SurfacePlot3DConfig — z (nx*ny row-major), nx, ny, x/y_min, x/y_max, labels, size, show_colormap" output: "Renderiza una superficie 3D dentro del frame ImGui actual; soporta orbit (drag), zoom (wheel) y pan via ImPlot3D" +notes: "scaffolding/demo en primitives_gallery" --- # surface_plot_3d diff --git a/cpp/functions/viz/table_view.md b/cpp/functions/viz/table_view.md index 927ad8a6..cadef164 100644 --- a/cpp/functions/viz/table_view.md +++ b/cpp/functions/viz/table_view.md @@ -31,6 +31,7 @@ params: - name: row_count desc: "Numero de filas de datos, sin contar el header" output: "true si la tabla se renderizo visible, false si fue clipped o skipped por ImGui" +notes: "scaffolding/demo en primitives_gallery" --- # table_view diff --git a/cpp/functions/viz/treemap.md b/cpp/functions/viz/treemap.md index 4cb4a249..5e2811c2 100644 --- a/cpp/functions/viz/treemap.md +++ b/cpp/functions/viz/treemap.md @@ -27,6 +27,7 @@ params: - name: size desc: "Tamano del rect del treemap. x <= 0 usa el ancho disponible" output: "Renderiza el treemap en el frame ImGui actual usando AddRectFilled + AddText sobre el WindowDrawList" +notes: "scaffolding/demo en primitives_gallery" --- # treemap diff --git a/cpp/functions/viz/voronoi.md b/cpp/functions/viz/voronoi.md index 5585c7db..fb62268b 100644 --- a/cpp/functions/viz/voronoi.md +++ b/cpp/functions/viz/voronoi.md @@ -31,6 +31,7 @@ params: - name: size desc: "Tamano del area Voronoi. x <= 0 usa el ancho disponible" output: "Renderiza la teselacion de Voronoi como mosaico de tiles 4x4 px coloreados + seeds visibles como circulos blancos sobre negros" +notes: "scaffolding/demo en primitives_gallery" --- # voronoi From 0adb5eeaa6c5260ef9c0614c8d9340f3d2da307d Mon Sep 17 00:00:00 2001 From: Egutierrez Date: Tue, 28 Apr 2026 23:40:58 +0200 Subject: [PATCH 5/6] =?UTF-8?q?docs(rules):=20a=C3=B1adir=20regla=20uses?= =?UTF-8?q?=5Ffunctions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Documenta la convencion de uses_functions para C++: - El indexer no deduce automaticamente las dependencias C++ - El .md del consumidor declara las dependencias - Framework (cpp/framework/) y apps (cpp/apps/) no se registran en uses_functions; se anotan en notes: del huerfano Tambien indexada en .claude/rules/INDEX.md. Co-Authored-By: Claude Opus 4.7 (1M context) --- .claude/rules/uses_functions.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .claude/rules/uses_functions.md diff --git a/.claude/rules/uses_functions.md b/.claude/rules/uses_functions.md new file mode 100644 index 00000000..4ddac966 --- /dev/null +++ b/.claude/rules/uses_functions.md @@ -0,0 +1,15 @@ +## uses_functions + +Cuando un .cpp llama a otra funcion del registry, el `.md` del CONSUMIDOR +debe anadir la dependencia a `uses_functions`. El indexer NO lo deduce +automaticamente para C++ (parser no trivial). + +Como auditar: + sqlite3 registry.db "SELECT id FROM functions WHERE lang='cpp' AND uses_functions='[]';" + +Convencion: +- Funciones de framework (cpp/framework/) no estan indexadas — sus consumos + se anotan en `notes:` del huerfano (no en uses_functions). +- Apps (`cpp/apps/`, `projects/*/apps/`) no estan en el grafo de uses_functions + del registry — los huerfanos solo consumidos por apps llevan nota en `notes:`. +- DEMO_ONLY en primitives_gallery se etiqueta `notes: scaffolding/demo`. From 8c7311b70d947d99115153e3b9c6a5e3d52444ca Mon Sep 17 00:00:00 2001 From: Egutierrez Date: Tue, 28 Apr 2026 23:41:17 +0200 Subject: [PATCH 6/6] docs(rules): registrar uses_functions en INDEX Co-Authored-By: Claude Opus 4.7 (1M context) --- .claude/rules/INDEX.md | 1 + 1 file changed, 1 insertion(+) diff --git a/.claude/rules/INDEX.md b/.claude/rules/INDEX.md index 222fe0aa..1adc6558 100644 --- a/.claude/rules/INDEX.md +++ b/.claude/rules/INDEX.md @@ -21,3 +21,4 @@ Reglas operativas del proyecto. Cada archivo es una regla independiente. | 15 | [projects.md](projects.md) | Projects: agrupar apps, analysis y vaults bajo un tema | | 16 | [kiss.md](kiss.md) | KISS en proyectos y apps: cuestionar herramientas externas, sin abstracciones especulativas | | 17 | [apps_tbd.md](apps_tbd.md) | Trunk-based development obligatorio en apps generadas con `fn` (registry exento) | +| 18 | [uses_functions.md](uses_functions.md) | Convencion de uses_functions para C++: el .md del consumidor declara las dependencias |