Files
fn_registry/dev/issues/completed/0049a-osint-graph-setup.md

117 lines
4.0 KiB
Markdown

---
id: "0049a"
title: "Setup proyecto `osint_graph` + sub-repo `graph_explorer`"
status: completado
type: feature
domain:
- osint
scope: multi-app
priority: alta
depends: []
blocks: []
related: []
created: 2026-05-17
updated: 2026-05-17
tags: []
---
# 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 <url>` + 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/` |