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. 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. 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_KEY con 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. 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. 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. 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.

  1. 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

  2. 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

  3. 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

  4. 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

  5. 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.

  6. 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.