Puertas de Lanzamiento de GitHub
Gobernanza de lanzamientos respaldada por evidencia para software generado con IA
Enterprise Skills clasifica el riesgo de cada cambio, exige la evidencia adecuada y publica una decisión de lanzamiento explicable y vinculada al commit como verificación obligatoria, y luego demuestra exactamente por qué cada commit llegó a producción. La configuración son cuatro pasos obligatorios, unos diez minutos, más un paso opcional para evidencia producida por agentes.
- 1
Instala la GitHub App
Instala Enterprise Skills Release Governor en los repositorios que quieras gobernar. Los permisos son mínimos: checks (escritura), pull requests, contenidos y metadatos (lectura).
- 2
Añade tu clave de licencia como secreto del repositorio
En tu repositorio: Settings → Secrets and variables → Actions → New repository secret. Llámalo
ES_LICENSE_KEYcon la clave de licencia de tu correo de compra. La clave nunca aparece en los archivos de workflow. Los límites de repositorios activos siguen tu plan (Pro 3 · Team 10 · Enterprise según contrato). - 3
Añade el workflow del Release Governor
Crea
.github/workflows/release-governor.yml:name: Release Governor on: pull_request: types: [opened, synchronize, reopened] permissions: contents: read id-token: write jobs: govern: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: ref: ${{ github.event.pull_request.head.sha }} fetch-depth: 0 - uses: actions/setup-node@v4 with: node-version: 20 - name: Activate license run: | mkdir -p ~/.enterprise-skills node -e "require('fs').writeFileSync(require('os').homedir()+'/.enterprise-skills/license.json', JSON.stringify({ key: process.env.ES_LICENSE_KEY }))" env: ES_LICENSE_KEY: ${{ secrets.ES_LICENSE_KEY }} - name: Govern and post the decision run: npx --yes enterprise-skills@^4.3.0 govern --post --pr "$PR_NUMBER" --base "origin/$BASE_REF" env: PR_NUMBER: ${{ github.event.number }} BASE_REF: ${{ github.base_ref }}El Governor lee evidencia vinculada al commit desde
.project-ai/skill-outputs/: producida por tu agente revisor para cada cambio. Cada archivo declara el commit contra el que se produjo con un campo commit: <sha> de nivel superior; ejecuta enterprise-skills evidence bind despues de confirmar el cambio para sellarlo. La evidencia faltante de un dominio requerido falla cerrada, y tambien la evidencia sin vinculacion o de un commit anterior. - 4
Opcional: produce evidencia semántica automáticamente
Cuando un cambio requiere evidencia que ninguna herramienta de CI produce mecánicamente: compatibilidad de API, seguridad de migraciones, preparación de observabilidad/rollback. Puedes dejar que tu propio agente de código la produzca en CI en lugar de depender de que un revisor la suba. Añade este paso antes del paso govern, con tus credenciales de modelo como secreto:
# Optional: auto-produce semantic evidence before governing. # Runs ONLY the agents this diff's risk classification requires. - name: Semantic domain agents run: npx --yes enterprise-skills@^4.3.0 agents run --yes --base "origin/$BASE_REF" --agent-cmd "claude -p \"{prompt}\" --permission-mode acceptEdits" env: BASE_REF: ${{ github.base_ref }} ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}La misma clasificación de riesgo que usa el Governor selecciona qué agentes se ejecutan: un cambio de docs no ejecuta ninguno, una migración ejecuta migration-safety, y cada agente debe escribir evidencia con esquema válido sin tocar nada más, o el paso falla cerrado. Cualquier CLI de agente funciona vía
--agent-cmd; nunca elegimos un proveedor por ti. La salida del agente es evidencia, nunca política: el Governor determinista sigue tomando la única decisión. - 5
Haz la verificación obligatoria
Settings del repo → Rules → Rulesets → New branch ruleset: apunta a tu rama por defecto y exige el status check
enterprise-skills/release-governor. Desde ese momento, los merges se bloquean hasta que exista una decisión fresca y aprobatoria para el commit exacto.
Qué obtienes en cada PR
- Clasificación determinista de riesgo del diff real (migración de base de datos, auth, contrato de API, infraestructura, dependencias, UI) que selecciona solo los dominios de evidencia requeridos: nunca todas las verificaciones en todos los cambios.
- Un PASS/FAIL explicable vinculado al commit exacto, con los estados de evidencia por dominio y la versión de la política que lo decidió.
- Un registro contrafirmado con Ed25519 y de solo anexado: consúltalo en tus Release Records y verifícalo sin conexión con la clave pública publicada.
¿Necesitas una licencia? Ver planes. ¿Preguntas? Centro de ayuda.
Arquitectura de confianza
Por qué puedes confiar en el registro
La evidencia está vinculada, atestada, contrafirmada y encadenada: para que un auditor pueda verificar qué se lanzó sin confiar en nosotros, ni en ti, al momento de leer.
- 01
Se produce la evidencia
Tu CI y tus agentes emiten evidencia (salidas de skills, resultados de pruebas) vinculada al commit y árbol exactos. La evidencia de un commit anterior se rechaza como obsoleta, nunca se reutiliza en silencio.
vinculada al commit · obsoleta = rechazada
- 02
El productor queda atestado
Las decisiones publicadas desde GitHub Actions llevan un token OIDC que el servidor verifica contra el repositorio: prueba de qué workflow las produjo, sin secretos de larga vida que robar.
GitHub OIDC · vinculado al repositorio
- 03
El servidor contrafirma
Cada decisión y evento de despliegue aceptado se contrafirma con la clave Ed25519 del servidor. Un actor local puede reescribir sus propios archivos; no puede reescribir el historial de firmas del servidor.
Ed25519 · clave 9a05918b3742d1b3
- 04
Las entradas se encadenan en un libro mayor
Las contrafirmas aterrizan en un log de transparencia de solo anexado por inquilino, cuyo hash raíz acumulado se incluye en cada entrada posterior: el borrado y el reordenado son detectables, no negables.
solo anexado · raíces encadenadas
- 05
Un Release Record canónico
Por pull request y commit: la clasificación de riesgo, cada pieza de evidencia con su estado, la decisión y su explicación, las excepciones y la línea de tiempo de despliegue a promoción.
- 06
Cualquiera puede verificar sin conexión
Las exportaciones firmadas se verifican con la clave pública publicada: un auditor comprueba qué se lanzó y por qué sin cuenta, sin llamada a la API y sin confiar en que este sitio sea honesto hoy.
/api/evidence/public-key
Esta es la misma cadena que protege los registros en vivo contados en la página principal: la clave de firma mostrada es la clave de producción sirviendo ahora mismo.