Historia: COLLAB-1 Fecha: 2025-12-30 Autor: @dev (Dex) + @devops (Gage) Estado: Completo
Este documento consolida los hallazgos de investigación sobre mejores prácticas para flujos de trabajo de contribuidores externos en proyectos de código abierto, específicamente para habilitar contribuciones seguras de la comunidad a agentes y tareas de AIOX.
Basado en investigación de GitHub Docs, DEV Community, y Legit Security:
| Regla de Protección | Recomendación | Justificación |
|---|---|---|
| Revisiones de PR requeridas | Habilitar con 1-2 revisores | Previene código sin revisar de hacer merge |
| Requerir revisiones de code owner | Habilitar | Asegura que expertos del dominio revisen cambios |
| Descartar revisiones obsoletas | Habilitar | Fuerza re-revisión después de nuevos cambios |
| Status checks requeridos | CI debe pasar | Detecta fallos de build/test antes del merge |
| Requerir resolución de conversación | Habilitar | Asegura que todo feedback sea atendido |
| Restringir force pushes | Deshabilitar force push | Previene reescritura del historial |
| Requerir historial lineal | Opcional | Historial git más limpio (considerar para monorepos) |
"Los colaboradores con acceso de escritura a un repositorio tienen permisos completos de escritura en todos sus archivos e historial. Aunque esto es bueno para la colaboración, no siempre es deseable."
Punto Crítico: La protección de ramas es una de las consideraciones de seguridad más importantes. Puede prevenir que código no deseado sea pusheado a producción.
branch_protection:
require_pull_request_reviews:
required_approving_review_count: 1 # Al menos 1 aprobación
dismiss_stale_reviews: true # Re-revisar después de cambios
require_code_owner_reviews: true # Aprobación de experto del dominio
require_last_push_approval: false # Opcional para OSS
required_status_checks:
strict: true # Rama debe estar actualizada
contexts:
- lint
- typecheck
- build
- test # Crítico para calidad
restrictions:
users: []
teams: ['maintainers']
allow_force_pushes: false
allow_deletions: false
required_conversation_resolution: true # Atender todo feedbackDe CodeRabbit Docs y awesome-coderabbit:
Elementos Clave de Configuración:
| Elemento | Propósito | Recomendación |
|---|---|---|
language |
Idioma de respuesta | Coincidir con idioma del proyecto (pt-BR o en-US) |
reviews.auto_review |
Revisiones automáticas de PR | Habilitar para OSS |
reviews.path_instructions |
Reglas de revisión por ruta | Esencial para validación de agentes/tareas |
chat.auto_reply |
Responder a comentarios | Habilitar para mejor experiencia del contribuidor |
TEN Framework (.coderabbit.yaml):
language: 'en-US'
reviews:
profile: 'chill'
high_level_summary: true
auto_review:
enabled: true
tools:
ruff:
enabled: true
gitleaks:
enabled: trueProyecto PHARE:
path_instructions:
'**/*.cpp':
- 'Verificar fugas de memoria'
- 'Verificar seguridad de hilos'
tools:
shellcheck:
enabled: true
markdownlint:
enabled: trueNVIDIA NeMo RL:
auto_title_instructions: |
Formato: "<categoría>: <título>"
Categorías: feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert
Título debe ser <= 80 caracteresPara contribuciones de agentes/tareas, CodeRabbit debe validar:
- Estructura YAML de agentes - persona_profile, commands, dependencies
- Formato de tareas - puntos de elicitación, entregables
- Documentación - Actualizaciones de README, referencias a guías
- Seguridad - Sin secretos hardcodeados, permisos apropiados
De Harness Blog, Satellytes, y GitHub Docs:
Principios Clave:
| Principio | Descripción |
|---|---|
| Última coincidencia gana | Patrones posteriores sobrescriben anteriores |
| Usar comodines | Consolidar entradas con * y ** |
| Equipos sobre usuarios | Más fácil mantener cuando personas cambian |
| Granularidad | Balance entre muy amplio y muy específico |
# Propietario por defecto (fallback)
* @org/maintainers
# Propiedad de directorio (más específico)
/src/auth/ @org/security-team
/src/api/ @org/backend-team
/src/ui/ @org/frontend-team
# Propiedad por tipo de archivo
*.sql @org/dba-team
Dockerfile @org/devops-team
# Archivos críticos (requieren revisión senior)
/.github/ @org/core-team
/security/ @org/security-team# Por defecto - requiere revisión de maintainer
* @SynkraAI/maintainers
# Definiciones de agentes - requiere equipo core
.aiox-core/development/agents/ @SynkraAI/core-team
# Definiciones de tareas - requiere equipo core
.aiox-core/development/tasks/ @SynkraAI/core-team
# CI/CD - requiere aprobación devops
.github/ @SynkraAI/devops
# Documentación - más permisivo para contribuidores
docs/ @SynkraAI/maintainers
# Plantillas - requiere revisión de arquitecto
templates/ @SynkraAI/core-team
.aiox-core/product/templates/ @SynkraAI/core-teamDe GitHub Docs y discusiones de la comunidad:
Hallazgo Crítico:
"Si un check falla, GitHub previene el merge del PR. Sin embargo, jobs omitidos reportan 'Success' y no previenen el merge."
Patrón de Solución (job alls-green):
jobs:
lint:
runs-on: ubuntu-latest
# ...
test:
runs-on: ubuntu-latest
# ...
alls-green:
name: Todos los Checks Pasaron
runs-on: ubuntu-latest
needs: [lint, test]
if: always()
steps:
- name: Verificar que todos los jobs pasaron
run: |
if [ "${{ needs.lint.result }}" != "success" ]; then exit 1; fi
if [ "${{ needs.test.result }}" != "success" ]; then exit 1; fi| Check | Tipo | Prioridad |
|---|---|---|
lint |
Requerido | ALTA |
typecheck |
Requerido | ALTA |
build |
Requerido | ALTA |
test |
Requerido | ALTA |
story-validation |
Opcional | MEDIA |
ide-sync-validation |
Opcional | BAJA |
alls-green |
Requerido | ALTA (job resumen) |
De Next.js Contribution Guide:
- Flujo de fork y PR
- Verificación automática de formateo Prettier
- Requiere revisión de PR de maintainers
- Usa Turborepo para gestión de monorepo
Requisitos Clave:
- Firma de CLA requerida
- Mensajes de commit estructurados
- Tests deben cubrir cambios
- Tamaño de bundle monitoreado (<6MB)
- CI/CD debe pasar (lint, test, cross-platform)
Flujo de Trabajo:
- Clonar repositorio
- Crear rama de feature
- Hacer cambios + tests
- Enviar PR con descripción
- Firmar CLA
- Esperar revisión
| Patrón | Adopción | Recomendación |
|---|---|---|
| Flujo de fork | Muy común | Adoptar |
| Firma de CLA | Común en OSS corporativo | Opcional por ahora |
| Commits convencionales | Muy común | Ya adoptado |
| Aprobaciones requeridas | Universal | Adoptar (1 aprobación) |
| CODEOWNERS | Común | Adoptar (granular) |
| CodeRabbit/revisión IA | En crecimiento | Adoptar |
| Aspecto | Flujo Fork | Rama Directa |
|---|---|---|
| Seguridad | Mayor (aislado) | Menor (repo compartido) |
| Acceso contribuidor | Sin escritura necesaria | Acceso escritura necesario |
| CI/CD | Corre en contexto fork | Corre en repo principal |
| Secretos | Protegidos | Accesibles |
| Complejidad | Ligeramente mayor | Menor |
Recomendación: Flujo fork para contribuidores externos (ya documentado en CONTRIBUTING.md)
- Nunca exponer secretos en logs de CI
- Usar
pull_request_targetcon cuidado - Limitar alcances de secretos
- Auditar autores de PR por patrones sospechosos
- Habilitar revisiones aprobatorias requeridas (
required_approving_review_count: 1) - Habilitar revisiones de code owner (
require_code_owner_reviews: true) - Agregar
testa status checks requeridos
- Crear
.coderabbit.yamlcon instrucciones de ruta específicas de AIOX - Actualizar CODEOWNERS con propiedad granular
- Habilitar resolución de conversación requerida
- Crear plantillas de PR especializadas para contribuciones de agentes/tareas
- Mejorar CONTRIBUTING.md con checklist de contribución de agentes
- Agregar guía de onboarding para contribuidores
- Agregar bot de CLA para protección legal
- Implementar automatización de PRs obsoletos
- Agregar dashboard de métricas de contribución
- GitHub Docs: Managing Branch Protection Rules
- DEV Community: Best Practices for Branch Protection
- Legit Security: GitHub Security Best Practices
Documento generado como parte de la Historia COLLAB-1 investigación.