
Motor de grafo de conocimiento heurístico sin AST para inteligencia profunda de repositorios y escaneo de seguridad de confianza cero. Se integra como componente de GitLab CI/CD, bloquea código hostil y exporta telemetría SARIF al panel de seguridad de GitLab.
# GitGalaxy
**Inteligencia estructural a escala de repositorio sin compilación.**
[Docs](https://squid-protocol.github.io/gitgalaxy/) ·
[Visualizer](https://gitgalaxy.io/) ·
[Language Crucible](https://github.com/squid-protocol/language-crucible) ·
[Keyword Rosetta](https://github.com/squid-protocol/keyword-rosetta) ·
[Raw Output](https://github.com/squid-protocol/gitgalaxy-raw-output)
**1 escaneo · 97 señales estructurales · más de 50 lenguajes · sin compilación · 17
categorías de exposición al riesgo · 6 salidas**
## La versión corta
GitGalaxy construye un **grafo estructural agnóstico del lenguaje de un repositorio
completo** directamente a partir del texto fuente — sin build, sin toolchain por lenguaje.
Está diseñado para repositorios que son políglotas, parcialmente rotos, legacy,
cargados de dependencias de terceros o que de otro modo resultan difíciles de analizar mediante un flujo de trabajo basado primero en la compilación:
``` text
Go + C++ + Python + Java + Bash + YAML
+ generated code + vendored code + legacy code
+ half-migrated modules + broken dependencies
```
En lugar de un analizador separado por lenguaje, GitGalaxy extrae un
vocabulario común de **firmas estructurales** — funciones, clases, argumentos,
flujo de control, mutación de estado, I/O, APIs, dependencias — y las normaliza
en un único modelo de repositorio determinista que alimenta el análisis de
arquitectura, la priorización de exposición al riesgo, la generación de SBOM,
el análisis de refactorización y propiedad, el contexto de base de código
orientado a IA, y las puertas de CI/CD.
> **Tesis central:** el análisis completo del lenguaje no siempre es necesario
> para recuperar información estructural altamente útil a escala de repositorio.
Cómo se pone a prueba esa tesis — contra Tree-sitter y Ctags, contra un corpus
de control plantado, y a continuación contra el historial de Git — se resume en
[Precisión, medida](#accuracy-measured) a continuación y se detalla por completo en
[el programa de validación](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/docs/validation.md).
------------------------------------------------------------------------
## Qué te ofrece un escaneo
Un comando:
``` bash
pip install gitgalaxy
galaxyscope path/to/repo
```
Seis vistas coordinadas del mismo escaneo determinista:
| Salida | Propósito |
|---|---|
| **Resumen de arquitectura para LLM** | Contexto compacto orientado a máquinas/agentes (a continuación) |
| **SARIF** | Integración con CI/paneles de seguridad |
| **SBOM CycloneDX** | Inventario de dependencias/cumplimiento |
| **SQLite** | Grafo de conocimiento del repositorio consultable |
| **Datos de auditoría JSON** | Flujos de trabajo forenses/de automatización |
| **Datos de visualización 3D** | Topología interactiva del repositorio |
### El resumen de arquitectura
El informe insignia es un único resumen en Markdown diseñado para entregar a un ingeniero —o
a un agente de IA— un modelo mental funcional de un repositorio que nunca ha visto. Es
un paquete autocontenido: las ecuaciones de riesgo se imprimen en el propio informe,
y un prompt de interpretación embebido permite a cualquier LLM narrarlo sin
alucinar sobre lo que significan los números. Las secciones cubren el estado macro y la composición
de lenguajes, la topología de red (modularidad, puntos de articulación, densidad
cíclica), los cuellos de botella de dependencias, las funciones y archivos más pesados, las firmas
estructurales por archivo con radio de impacto PageRank, las listas de objetivos de riesgo dirigidos y acumulativos, las auditorías de cadena de suministro y los objetivos de refactorización clasificados por volatilidad y
centralización de autoría —además de una lista detallada de cada archivo que *se negó* a
escanear, y por qué.
Dos ejemplos, escaneados el 2026-08-31 con el motor actual. Ambos repositorios
son públicos —clona cualquiera de ellos y ejecuta `galaxyscope --llm-only <path>` para reproducir
el resumen completo:
**curl** — 4.250 artefactos, 696 escaneados, 112.653 LOC en C, Perl, Python,
Shell, M4 y Makefile. El resumen clasifica `src/tool_setup.h` como el principal
pilar estructural (80 conexiones entrantes) y coloca una función de *Perl* —
`APPEND_imap` en `tests/ftpserver.pl`, Impacto 2135, 1.672 LOC— en lo más alto de la
lista de funciones de todo el repositorio, en la misma clasificación que el código C. Ese
grafo multilingüe es el producto: un conjunto de señales comparables en todos los
lenguajes del repositorio. La advertencia honesta en el mismo resumen: solo se escaneó el 16,4% de los
artefactos —el filtro de ingesta descarta binarios, código generado
y datos de prueba de forma agresiva, y la §5 del resumen detalla cada exclusión por
extensión y motivo.
**cics-genapp** (la muestra CICS COBOL/DB2 de IBM) — 92,1% escaneado: 44 programas
COBOL, 29 trabajos JCL. La lista acumulativa de superficie estructural
encabeza con `base/src/lgupdb01.cbl` (superficie de mutación ~100%, carga de complejidad 92%), y el
párrafo más pesado del repositorio es `UPDATE-POLICY-DB2-INFO` —la lógica de bloqueo de filas
`SELECT FOR UPDATE`, que es exactamente donde un mantenedor de ese programa
querría mirar primero. El mismo resumen también muestra una limitación con claridad: en una
arquitectura plana sin un grafo de importaciones real, la lista de "pilares estructurales"
degenera en archivos sin conexiones, y el informe indica que se verifiquen los
recuentos de conexiones antes de confiar en ella.
Cientos de resúmenes sin editar de repositorios seleccionados de forma independiente están
registrados en
[gitgalaxy-raw-output](https://github.com/squid-protocol/gitgalaxy-raw-output);
el resumen de autoescaneo siempre actualizado de este propio repositorio está en
[`docs/gitgalaxy_architecture_brief.md`](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/docs/gitgalaxy_architecture_brief.md).
### Un grafo, muchos consumidores
| Consumidor | Pregunta |
|---|---|
| Arquitectura | ¿De qué está hecho este repositorio? |
| Análisis estructural | ¿Dónde están las funciones, clases, APIs, dependencias y estructuras de control? |
| Perfil de Superficie Estructural (antes exposición al riesgo) | ¿Dónde se concentra un patrón estructural/de contenido dado? |
| Refactorización | ¿Qué archivos son complejos, de alta rotación o críticos? |
| Cadena de suministro | ¿Qué dependencias existen físicamente en disco? |
| Contexto de IA | ¿Qué arquitectura y relaciones debería conocer un agente? |
| Migración de legado | ¿Dónde están las unidades estructurales a transformar? |
| Análisis histórico | ¿Cómo cambia la exposición medida a medida que evoluciona el repositorio? |

------------------------------------------------------------------------
## Precisión, medida
Dos programas de medición permanentes respaldan las afirmaciones anteriores, y un tercero, para los
grafos de dependencias y llamadas, está en curso. La narrativa completa —
metodología, veredictos, límites y lo que viene después— está en
[el programa de validación](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/docs/validation.md); esto es el resumen.
### Validación estructural: GitGalaxy vs Tree-sitter vs Ctags
GitGalaxy se compara con **Tree-sitter y Universal Ctags** en el
corpus fijado [Language Crucible](https://github.com/squid-protocol/language-crucible)
—24 de 45 lenguajes reciben las tres herramientas, 13 más reciben dos, y cada
discrepancia se investiga contra el código fuente real y se registra con un veredicto
(200 de 201 formas de discrepancia registradas validadas). En ese corpus, la precisión
de funciones validadas de GitGalaxy es del 100% en los 31 lenguajes comparables con tree-sitter,
y nunca es la herramienta señalada como incorrecta en una clase o
discrepancia de argumentos validada. El límite: tres objetivos estructurales, un corpus fijo —
no "analiza con la misma precisión que un AST" en general.

### Validación de grafos: importaciones y llamadas (en curso)
El radio de impacto, PageRank y los "pilares estructurales" provienen del **grafo de importaciones**. Las
clasificaciones a nivel de función provienen del **grafo de llamadas**. Ninguno de los dos grafos está medido en todos los
lenguajes todavía, y el gráfico a continuación indica cuáles lo están:
- Los lenguajes medidos muestran precisión y exhaustividad con n.
- Cada lenguaje aún no medido se lista por nombre.
A fecha de 2026-09-26, de 59 lenguajes:
- **El grafo de importaciones está medido en 20.** Las aristas del motor se verifican contra las propias
sentencias de importación de cada lenguaje en repositorios reales fijados
([`import_graph_accuracy.py`](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/tests/tools/import_graph_accuracy.py)).
- **Los nombres de los destinatarios de llamadas están medidos en 11**, contra tree-sitter.
- **La resolución de llamadas está medida en 3**, contra un analizador de referencia:
- Python, vs pyan3: 99,8% de precisión en 1.806 enlaces juzgados, 51,6% de exhaustividad;
- TypeScript, vs el verificador de tipos de TypeScript 6.0.2: 99,9% de precisión en 1.520 enlaces juzgados,
57,1% de exhaustividad;
- Java, vs scip-java (la propia resolución de javac): 92,7% de precisión en 3.474 enlaces juzgados,
41,0% de exhaustividad. Una llamada a un método sobrecargado se enlaza solo cuando su número de argumentos selecciona
una sobrecarga ([#3835](https://github.com/squid-protocol/gitgalaxy/issues/3835)).
Un enlace de llamada, cuando se establece, suele ser correcto, pero aproximadamente la mitad o más de las llamadas quedan
sin enlazar. Por lo tanto, el fan-in y el PageRank a nivel de función son un límite inferior.
Los límites:
- Los grafos de los otros 38 lenguajes se construyen de la misma manera pero **no están medidos**.
- Varios lenguajes medidos se apoyan en un repositorio con menos de 100 importaciones. El gráfico atenúa
esos casos.
- Un `*` marca un número con discrepancias aún pendientes de veredicto contra el código fuente.
El plan para cerrar estas brechas es
[la épica #3772](https://github.com/squid-protocol/gitgalaxy/issues/3772).

### Consistencia entre lenguajes: el corpus de control Keyword Rosetta
El programa más reciente plantea la pregunta opuesta: **¿mide GitGalaxy la misma
intención de forma idéntica en todos los lenguajes?** El
corpus [keyword-rosetta](https://github.com/squid-protocol/keyword-rosetta)
planta el mismo programa de 12 sondas en los 50 lenguajes soportados con recuentos de señales
exactos y conocidos —por lo que cualquier divergencia es sesgo de lenguaje medido, por construcción.
El gráfico colorea cada desviación por *causa*, no por tamaño: rojo es un defecto abierto del motor (una regla que coincide con la construcción equivocada, o un peso de puntuación que reside dentro
de un recuento); gris es una variación documentada que el registro ha validado —el lenguaje
no puede expresar la construcción, una elección deliberada de puntuación, o un eco de otra
fila. Respuesta actual: en promedio, el 94% de los lenguajes se sitúan dentro de ±25% de la
mediana entre lenguajes por métrica con umbral (56 métricas graficables, 54 manteniendo ≥80%),
y **la proporción de defectos abiertos es del 0,0% (1 de 2.844 celdas comparables en 59 métricas
con umbral)** —una única celda sin explicación, `classes_found` en el corpus `bms` (CICS Basic Mapping Support) recién plantado; cada otra celda fuera de banda es una
variación que el registro ha validado (un estrato de rigor, una construcción que el
lenguaje no puede expresar, un eco de otra fila, o una elección deliberada de puntuación),
no un defecto abierto del motor. Las métricas más débiles se nombran en lugar de
ocultarse —`cog_raw` mantiene el 74% de los lenguajes en banda, `raw_arch_api` el 78%,
`avg_func_args` el 80%— pero sus celdas por debajo de la banda están documentadas, no son defectos.
La afirmación también sobrevive a la expansión: cuando el corpus plantó su primera
sonda de lente de seguridad —un secreto codificado idéntico en todos los lenguajes—
`credential_material` (antes `risk_secrets_risk`; el nombre `risk_*` sigue siendo
la columna de la BD —véase [`docs/vectors.md`](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/docs/vectors.md)) leyó una **puntuación
uniforme en los 50 lenguajes** (un idéntico 25.000 por columna). Las dos
excepciones de formato inerte que la lente originalmente omitía, y la dependencia de longitud medida de la fórmula, se registraron y archivaron el mismo día
([#2978](https://github.com/squid-protocol/gitgalaxy/issues/2978),
[#2979](https://github.com/squid-protocol/gitgalaxy/issues/2979)). La #2978 está
cerrada: la lente ahora se ejecuta en los cinco formatos inertes
(plaintext/markdown/json/yaml/csv), con una opción de configuración `SECURITY_SCAN_INERT_FORMATS` para repositorios donde eso intercambia demasiado ruido de documentación/configuración por la
cobertura, y la reverificación del corpus de keyword-rosetta contra la corrección fusionada
ahora cae enteramente dentro de banda (la entrada `secrets-lens-inert-formats` del registro).
Cada desviación se registra en un libro mayor validado, el trabajo se rastrea por familia de causas bajo la [hoja de ruta de contratos](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/docs/contract_roadmap.md), y
las clases de defectos encontradas de esta manera se
[archivan como issues de GitGalaxy](https://github.com/squid-protocol/keyword-rosetta/blob/main/docs/findings_by_language.md).

Un corpus de control demuestra la desigualdad de medición sobre una intención idéntica; no dice
nada sobre la precisión en código real (la tarea de la tri-comparación anterior) —y un
sesgo constante por archivo aún preserva la clasificación *dentro* de un lenguaje. El
[informe de incidencia](https://github.com/squid-protocol/keyword-rosetta/blob/main/docs/incidence_report.md)
dimensiona cada forma confirmada contra código real con licencia.
------------------------------------------------------------------------
## Escala del mundo real
Ejemplo: **Kubernetes** — ~1,39M de líneas en Go, YAML, JSON, Shell y Proto.
Escaneo de extremo a extremo: **50,83 segundos**. El tiempo de escaneo sigue un modelo ajustado de dos regímenes
(plano ~0,11s por debajo de ~4,3K LOC, luego `time(s) ≈ 3.36e-05 × LOC^0.969`, R²=0,88
en 599 repositorios) —así que unos pocos valores atípicos de más de 20M de LOC aún tardan minutos, y un
escaneo rápido demuestra rendimiento, no calidad de conocimiento; la cuestión de la precisión se
trata por separado a continuación.

Consulta el [repositorio de salida
en bruto](https://github.com/squid-protocol/gitgalaxy-raw-output) para
artefactos sin editar.
------------------------------------------------------------------------
# Perfil de Superficie Estructural: qué afirma GitGalaxy (antes "exposición al riesgo")
Los 13 vectores por archivo de GitGalaxy originalmente se llamaban `risk_*` y se describían como
**mediciones de exposición al riesgo**. La pregunta que esta sección solía dejar abierta —
"¿están estas firmas asociadas empíricamente con clases significativas de
riesgo de software?"— desde entonces se ha probado, no solo planteado. El
programa de validación temporal-crucible (épica
[#2982](https://github.com/squid-protocol/gitgalaxy/issues/2982), ~3.550
instantáneas escaneadas, dos repositorios, tres familias de etiquetas, cada prueba
pre-registrada antes de mirar los datos) ejecutó ese experimento hasta
la saciedad, y el resultado honesto impulsó un cambio de nombre
([#2991](https://github.com/squid-protocol/gitgalaxy/issues/2991)): los
vectores ahora se llaman el **Perfil de Superficie Estructural**. `risk_*` sigue siendo
el nombre de la columna de la BD / clave JSON por compatibilidad (véase
[`docs/vectors.md`](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/docs/vectors.md) para la tabla completa de nombres y la
nota de obsolescencia).
**Lo que encontró el registro, reformulado honestamente:**
- **Riesgo permanente por archivo, falsificado.** La hipótesis fundacional —que el
nivel `risk_*` de un archivo, o su cambio tras una corrección, sigue la probabilidad
de defecto— no se sostuvo. La mediana del delta estructural tras una corrección de seguridad
fue +0,000 (equivalencia confirmada cerca de cero en un segundo repositorio
independiente, no solo no significativa); la exposición estructural sumada se clasificó
*última* de seis características para predecir archivos tocados por correcciones; un vector estructural multivariante de 26 señales obtuvo una puntuación al azar (AUC 0,479) bajo una
división temporal, por debajo de un simple recuento de líneas (0,531). El libro mayor completo está en
`docs/HYPOTHESES.md` de temporal-crucible y está enlazado desde
[#2982](https://github.com/squid-protocol/gitgalaxy/issues/2982).
- **Para qué validaron realmente los vectores:** para describir **actividad y
contenido**, no la probabilidad de defecto. El compuesto con forma de corrección rastrea de forma fiable
un gradiente corrección de seguridad → corrección ordinaria → control → reversión; los deltas
corresponden a eventos reales del código (código de guarda añadido, concurrencia introducida, marcadores de deuda diluidos). Esa es la radiografía que este documento ahora nombra
con precisión —véase [`docs/vectors.md`](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/docs/vectors.md) vector por vector.
- **Señal a nivel de sistema / historial, reformulada como el hallazgo predictivo
real.** Dos características *sí* sobrevivieron a la validación: **la reincidencia** (el archivo
que tuvo la última corrección recibe la siguiente —el resultado más replicado del programa, p<1e-4 en ambos repositorios) y **la entropía de cambio /
Hassan HCM**, validada fuera de selección con etiquetas de errores nuevas (AUC 0,868 frente
al 0,830 de un recuento de líneas). Ambas son métricas de **historial**, no métricas de contenido
estructural —y ambas están actualmente a cero en cada escaneo
(`GITGALAXY_DISABLE_GIT_HISTORY`, rastreado en
[temporal-crucible#29](https://github.com/squid-protocol/temporal-crucible/issues/29)).
Esta es la semilla de una **capa predictiva** separada y honestamente nombrada —los
vectores `hist_stability`/`hist_churn` están nombrados para marcar ese estado
explícitamente— condicionada a enviar el modo con historial habilitado y luego superar
el contrato de promoción de elevación de defectos de
[#2987](https://github.com/squid-protocol/gitgalaxy/issues/2987).
Una lectura alta del Perfil de Superficie Estructural significa:
> **Esta ubicación tiene más de un patrón estructural/de contenido dado presente,
> en relación con el resto del repositorio.**
No significa:
> "Es más probable que este código contenga un defecto" —la versión por archivo de
> esa afirmación se probó y no se sostuvo.
Las firmas subyacentes cubren patrones que involucran áreas como:
- secretos
- superficie de inyección
- operaciones inseguras/de memoria
- ejecución dinámica
- E/S
- concurrencia
- mutación de estado
- reflexión
- APIs
- dependencias
- entropía
- otras características estructurales/de seguridad
Véase [`docs/vectors.md`](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/docs/vectors.md) para la tabla de cambio de nombre por vector,
la evidencia y los usos apropiados/inapropiados, y
`docs/HYPOTHESES.md` de
[temporal-crucible](https://github.com/squid-protocol/temporal-crucible) para el libro mayor de validación completo que resume esta sección.
------------------------------------------------------------------------
# Evidencia, no solo afirmaciones
### Language Crucible
Un corpus fijado de código fuente del mundo real que incluye proyectos como Godot, Roslyn,
curl, Kubernetes y el software de vuelo del Apollo 11.
[Language Crucible](https://github.com/squid-protocol/language-crucible)
### Regresión golden-master
El código fuente real se reescanea y se compara con la salida esperada registrada para que
los cambios del analizador tengan un diff observable. Regenerado con
[`tests/tools/update_golden_master.py`](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/tests/tools/update_golden_master.py),
nunca editado a mano.
### Tri-comparación
El mismo corpus se analiza con GitGalaxy, Tree-sitter y Ctags donde
existe cobertura —24 de 45 lenguajes reciben las tres herramientas, 200 de 201 discrepancias
registradas validadas. En el corpus fijado, GitGalaxy nunca es la herramienta
señalada como incorrecta en una discrepancia validada de precisión de funciones, clase o argumentos,
y coincide con la exhaustividad de funciones de tree-sitter en todas partes excepto en una definición de shell anidada que omite por diseño. Véase
[la metodología](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/docs/self_scan/tri_comparison_README.md) y
[el programa de validación](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/docs/validation.md) para el panorama completo y sus
límites.
### Corpus de control Keyword Rosetta
El mismo programa de 12 sondas plantado en los 50 lenguajes soportados con recuentos de señales
exactos y conocidos, midiendo la consistencia entre lenguajes de cada métrica —
con un libro mayor de desviaciones validado y los defectos del motor resultantes
[archivados como issues](https://github.com/squid-protocol/keyword-rosetta/blob/main/docs/findings_by_language.md).
[Keyword Rosetta](https://github.com/squid-protocol/keyword-rosetta)
### Salida en bruto de repositorios
La salida sin editar de GitGalaxy se conserva para cientos de repositorios seleccionados
de forma independiente.
[Salida en bruto](https://github.com/squid-protocol/gitgalaxy-raw-output)
### Suite de regresión
**7.043 pruebas** en la suite predeterminada (`python -m pytest tests/`), de las cuales
**6.165** son pruebas por firma en los 45 lenguajes con firmas estructurales —
coincidencias positivas, exclusiones explícitas y entradas adversarias/ReDoS. Véase [`tests/README.md`](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/tests/README.md) para el desglose, y
[`docs/why_gitgalaxy_beats_ast_here.md`](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/docs/why_gitgalaxy_beats_ast_here.md)
para casos específicos y evidenciados donde esta extracción supera a una lectura de AST.
### Temporal Crucible (validación histórica)
Si el Perfil de Superficie Estructural se corresponde con eventos reales de seguridad y
mantenimiento a lo largo del historial de Git ya no es una pregunta abierta —se ha
probado. El programa [Temporal Crucible](https://github.com/squid-protocol/temporal-crucible)
escaneó ~3.550 instantáneas de repositorios en dos repositorios (curl, nDPI)
y tres familias de etiquetas (commits de corrección/introducción de CVE, etiquetas de errores, familias CWE),
con cada prueba confirmatoria pre-registrada antes de mirar los datos. Lo que
encontró, dicho honestamente:
- **El riesgo estructural permanente por archivo no predice defectos** —se reduce
a un recuento de líneas, un nulo confirmado mediante pruebas de equivalencia en un segundo
repositorio independiente (no meramente "no significativo").
- **Dos métricas de *historial* sí predicen**: la reincidencia (el archivo que tuvo la última
corrección recibe la siguiente —p<1e-4 en ambos repositorios, el resultado más replicado
del programa) y la entropía de cambio (Hassan HCM), validadas
fuera de selección con etiquetas de errores nuevas.
- **La estructura describe; el historial predice.** Más predicciones murieron en el
libro mayor de las que sobrevivieron —eso es la disciplina de pre-registro funcionando,
no una decepción.
El registro completo es público y reproducible: el
[libro mayor de hipótesis](https://github.com/squid-protocol/temporal-crucible/blob/main/docs/HYPOTHESES.md)
pre-registrado y un [índice predictor × resultado](https://github.com/squid-protocol/temporal-crucible/blob/main/docs/EXPERIMENTS.md)
de todo lo que el programa ha intentado correlacionar. Diseño y método:
[el programa de validación](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/docs/validation.md#the-next-validation-risk-over-git-history).
[Temporal Crucible](https://github.com/squid-protocol/temporal-crucible)
------------------------------------------------------------------------
# Qué es GitGalaxy --- y qué no es
### GitGalaxy es
- inteligencia estructural a escala de repositorio
- análisis de código fuente agnóstico al lenguaje
- una representación estructural común entre código heterogéneo
- priorización de exposición al riesgo
- mapeo de arquitectura
- generación de evidencia nativa de CI
- útil en repositorios rotos/sin compilar
- diseñado para operación local/sin conexión
### GitGalaxy no es
- un reemplazo del análisis profundo de flujo de datos de CodeQL
- un reemplazo del ecosistema de reglas de Semgrep
- un reemplazo de las bases de datos de CVE de dependencias
- una prueba de explotabilidad
- un analizador en tiempo de ejecución
- un analizador de lenguaje completo
- una garantía de que una exposición alta sea una vulnerabilidad
| Herramienta | Pregunta principal |
|---|---|
| **GitGalaxy** | ¿Cómo se ve este repositorio completo, estructuralmente, y dónde debería centrarse la atención primero? |
| Tree-sitter | ¿Qué estructura sintáctica contiene este código fuente? |
| Ctags | ¿Dónde están las entidades de código navegables? |
| Semgrep | ¿Coincide este código con un patrón especificado? |
| CodeQL | ¿Qué relaciones de datos/control puede establecer un análisis más profundo? |
| Herramientas SCA/CVE | ¿Está esta dependencia/versión asociada con un aviso conocido? |
------------------------------------------------------------------------
# Historial de Git y arquitectura
GitGalaxy ya incorpora el historial de Git en señales como churn,
concentración de contribuyentes, exposición al bus-factor, puntos calientes de
refactorización, propiedad de archivos y actividad temporal. La dirección de
investigación es extender esto desde **el historial como señal contextual**
hacia **el historial como fuente de validación externa para el modelo de
exposición** — el diseño del experimento está en
[el programa de validación](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/docs/validation.md#the-next-validation-risk-over-git-history).
------------------------------------------------------------------------
# Privacidad y despliegue
GitGalaxy está diseñado para operación local y en entornos aislados.
- El código fuente no se envía a un servicio en la nube de GitGalaxy.
- El escaneo y la vectorización ocurren localmente.
- El escáner no tiene requisito de red en tiempo de ejecución.
- La ejecución en CI/CD puede permanecer dentro del entorno del usuario.
- El visualizador del navegador opera sobre datos proporcionados localmente.
------------------------------------------------------------------------
# Instalación
``` bash
pip install gitgalaxy # zero install dependencies
pip install "gitgalaxy[full]" # + tiktoken, xgboost, pandas, numpy, pyyaml
```
Consulta la [documentación](https://squid-protocol.github.io/gitgalaxy/) para
los comandos y la configuración actuales.
### Modo sin dependencias
Un simple `pip install gitgalaxy` no incorpora nada, para entornos donde
cada paquete de terceros es una cuestión de cadena de suministro. Los escaneos
siguen ejecutándose: cada señal estructural, arista de dependencia, recuento de
grado de entrada/salida, PageRank / radio de explosión, intermediación, cercanía,
longitud media de camino, modularidad, densidad cíclica, puntos de articulación y
asortatividad se mide exactamente igual que en precisión completa (estos se
calculan de forma nativa). Lo que necesita los motores opcionales es la masa de
tokens y el coste de lectura (`tiktoken`), la clasificación ML de amenazas
(`xgboost`/`pandas`/`numpy`) y el análisis de configuración YAML/OpenAPI
(`pyyaml`). Una métrica que no se calculó se informa como ausente (`n/a` /
NULL), nunca como un cero. Cada salida indica cuándo un escaneo se ejecutó en
este modo, y
[`docs/zero_dependency_mode.md`](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/docs/zero_dependency_mode.md) enumera, campo por
campo, qué es idéntico y qué no está disponible.
### CI/CD
Se proporcionan plantillas para GitHub Actions, GitLab CI, Bitbucket Pipelines,
Azure Pipelines y entornos CI genéricos invocables desde shell. Consulta
[`templates/`](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/templates) y la [guía de integración
CI](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/github-action-readme.md).
------------------------------------------------------------------------
# Explora la evidencia
| Recurso | Qué contiene |
|---|---|
| [Documentación](https://squid-protocol.github.io/gitgalaxy/) | Arquitectura, afirmaciones y metodología |
| [El programa de validación](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/docs/validation.md) | La narrativa completa de la prueba: tesis, benchmarks, escalera de validez, próximos experimentos |
| [Referencia de vectores](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/docs/vectors.md) | Los 13 vectores por archivo: nombres, significado, evidencia y la nota de obsolescencia de `risk_*` |
| [Hechos de las fórmulas de vectores](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/docs/vector_formulas.md) | Auditoría mecánica de fórmulas por calculadora (entradas, aritmética, constantes) |
| [Language Crucible](https://github.com/squid-protocol/language-crucible) | Benchmark entre lenguajes y corpus dorado |
| [Keyword Rosetta](https://github.com/squid-protocol/keyword-rosetta) | Corpus de control plantado en 50 lenguajes e informes de sesgo |
| [Salida en bruto](https://github.com/squid-protocol/gitgalaxy-raw-output) | Escaneos sin editar de repositorios reales |
| [Ejemplos COBOL → Java](https://github.com/squid-protocol/cobol_to_java_examples) | 10 repositorios COBOL autotraducidos a arquitecturas Spring Boot que compilan (`mvn clean compile` funciona directamente) |
| [Análisis de poblaciones](https://github.com/squid-protocol/gitgalaxy-population-analyses) | Análisis estadísticos sobre la población de escaneos de salida en bruto: agrupamiento de arquetipos, distribuciones de riesgo, estudios del clasificador de amenazas |
| [Museo del Código](https://squid-protocol.github.io/gitgalaxy/museum-of-code/) | Desgloses arquitectónicos completos de bases de código reales (Apollo 11, benchmarks de IBM CICS) |
| [Telemetría de distribución](https://github.com/squid-protocol/squid-telemetry) | Métricas públicas de descargas en GitHub/GitLab/[PyPI](https://pypi.org/project/gitgalaxy/), regeneradas a diario |
| [`tests/README.md`](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/tests/README.md) | Metodología de regresión y golden-master |
| [`tri_comparison_ledger.json`](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/docs/self_scan/tri_comparison_ledger.json) | Registro de validación discrepancia por discrepancia |
---
[Read more](https://gitlab.com/squid-protocol1/gitgalaxy)