# 0049a — Setup proyecto `osint_graph` + sub-repo `graph_explorer` ## Metadata | Campo | Valor | |-------|-------| | **ID** | 0049a | | **Estado** | pendiente | | **Prioridad** | alta | | **Tipo** | infraestructura — parte de [#0049](0049-osint-graph-viewer.md) | ## Dependencias **Bloqueada por:** ninguna. **Desbloquea:** todos los demas sub-issues de 0049 (la estructura del proyecto debe existir antes). --- ## Objetivo Dejar la infraestructura del proyecto `osint_graph` lista: estructura de directorios, `project.md`, vault con symlink, sub-repo Gitea vacio para `graph_explorer`, e indexado en `registry.db`. ## Contexto Sigue las reglas `projects.md` (estructura) y `cpp_apps.md` (sub-repo + ubicacion). El analisis `analysis/ontology_graph` ya existente sera la fuente de datos de pruebas — pero NO se mueve dentro del proyecto en este sub-issue (ortogonal). ## Arquitectura ``` projects/osint_graph/ # NEW ├── project.md # NEW (ver template docs/templates/project.md) ├── apps/ │ └── graph_explorer/ # NEW dir + .git apuntando a dataforge/graph_explorer │ └── (vacio — el contenido se anade en 0049k) ├── analysis/ # vacio inicial └── vaults/ ├── vault.yaml # NEW └── osint_data -> ~/vaults/osint_graph/ # symlink ~/vaults/osint_graph/{raw,processed,exports}/ # NEW dirs reales (fuera del repo) dataforge/graph_explorer (en Gitea) # NEW repo vacio, branch master ``` ## Tareas ### Fase 1 — Estructura local - [ ] **1.1** Crear `projects/osint_graph/{apps,analysis,vaults}/`. - [ ] **1.2** Crear `projects/osint_graph/project.md` con frontmatter: ```yaml --- name: osint_graph description: "Visualizacion + recoleccion de datos OSINT con grafos ontologicos. Visor agnostico GPU-accelerated capaz de consumir operations.db de cualquier app del registry." tags: [osint, graph, visualization, ontology, gpu] repo_url: "" --- ``` - [ ] **1.3** Crear `~/vaults/osint_graph/{raw,processed,exports}/` y symlink en `projects/osint_graph/vaults/osint_data`. - [ ] **1.4** Crear `projects/osint_graph/vaults/vault.yaml`: ```yaml vaults: - name: osint_data description: "Datos OSINT crudos + procesados + exports para graph_explorer" path: "/home/lucas/vaults/osint_graph" tags: [osint, graphs] ``` ### Fase 2 — Sub-repo Gitea - [ ] **2.1** Crear repo Gitea `dataforge/graph_explorer` (vacio, branch `master`). Usar `gitea_create_repo_*` o el flujo de `/full-git-push`. - [ ] **2.2** En `projects/osint_graph/apps/graph_explorer/`: `git init -b master` + `git remote add origin ` + commit vacio inicial + push. - [ ] **2.3** Anotar `repo_url` en el futuro `app.md` (creado en 0049k) y, si conviene, en el `project.md` actual. ### Fase 3 — Indexado - [ ] **3.1** `./fn index` desde la raiz. - [ ] **3.2** Verificar: ```sql SELECT id, description FROM projects WHERE id='osint_graph'; SELECT id, name, path FROM vaults WHERE project_id='osint_graph'; ``` ### Fase 4 — Cleanup - [ ] Push del repo principal a master con commit `feat(projects): osint_graph project + graph_explorer sub-repo bootstrap`. - [ ] Verificar con `fn show osint_graph`. ## Criterio de done - [ ] `fn show osint_graph` muestra el proyecto con vault correctamente indexado. - [ ] `projects/osint_graph/apps/graph_explorer/.git` existe y `git remote -v` apunta a `dataforge/graph_explorer`. - [ ] El symlink de vault funciona (`ls projects/osint_graph/vaults/osint_data/`). ## Riesgos | Riesgo | Mitigacion | |---|---| | Repo Gitea ya existe | Reusar; `git remote set-url origin` | | Vault path absoluto rompe en otros PCs | Documentar en project.md; cada PC monta `~/vaults/osint_graph/` |