--- id: 0033d title: Indexer lee `python_runtime` y `python_runtime_deps` de app.md status: pending priority: low created: 2026-05-02 depends_on: [] blocks: [0033] --- ## Objetivo Que `fn index` recoja dos campos nuevos del frontmatter `app.md` y los almacene en `apps` (registry.db). Permite consultas "que apps necesitan runtime Python" y enable hooks de build condicionales en `/compile`. ## Cambios ### Schema (`registry/migrations` o `registry/schema.go`) ```sql ALTER TABLE apps ADD COLUMN python_runtime INTEGER NOT NULL DEFAULT 0; ALTER TABLE apps ADD COLUMN python_runtime_deps TEXT NOT NULL DEFAULT '[]'; ``` ### Parser de `app.md` Extender el parser de frontmatter de apps en `registry/parser.go` para leer: ```yaml python_runtime: true # bool, default false python_runtime_deps: # array, default [] - requests - certifi ``` ### Frontmatter del template Anadir los campos al template `docs/templates/app.md`: ```yaml python_runtime: false python_runtime_deps: [] ``` Comentar que solo aplica a apps que ejecutan enrichers Python. ## Tests - Parser test: `app.md` con los dos campos → struct correcto. - Indexer test: tras `fn index`, query `SELECT python_runtime, python_runtime_deps FROM apps WHERE id='graph_explorer'` devuelve los valores esperados. ## Definicion de hecho - `fn index` no rompe en apps sin los campos (default 0/`[]`). - `graph_explorer/app.md` actualizado con `python_runtime: true` y deps reales (`requests` minimo). - Query `SELECT id FROM apps WHERE python_runtime = 1` lista las apps que necesitan runtime embebido.