Skip to main content
ARBITRAGEX
System guardLive:OFFPrivate relay:OFFSubmit:OFFBroadcast:OFFPaper:ON· DEFAULT_SAFEDEGRADEDCapital:$0Readiness:0/4LIVE lock:LOCKEDGO live:NO-GOA.4 fork:A.5 paper-shadow:Loading runtime…
KILL SWITCH —PAPER MODE —socketDISCONNECTEDroutesCONNECTINGruntime_ackCONNECTINGpairsCONNECTINGquote_anchorCONNECTING

Deploy Pipeline · OMEGA-102

Consola operativa de la entrega ejecutable CI/CD VPS. Runbook de 4 fases — contención, unblock CI, deploy productivo, branch protection final.

ticket: OMEGA-102base audit: OMEGA-101 sistémica E2E (27 problemas catalogados R7+R8)target: VPS Hetzner · GitHub Actions
PROTOCOLO DEPLOY — GATE FINAL EJECUTADOprotocolo desde 2026-08-23resuelto 2026-08-25

PROTOCOLO ABSOLUTO del operador (2026-08-23) — commit/push/branch/PR/deploy = 0 hasta checklist 100% + validación integral. Desde 2026-08-29: flujo PR-per-anomalía del operador (#470..#518) — cada merge bajo 14 required checks + reviews, deploy veraz y L4 por PR.

  • Checklist maestro incompletoCUMPLIDA

    desbloquea cuando: 100% de las tareas implementables CLOSED/verificadas (XLS-QB 88 + FE-MASTER + WP-R)

    fuente: .ai-work/TASK_REGISTRY.json (fuente canónica local)

    evidencia (2026-09-04): FIRMAZO §17 2026-08-25 (ARBX-0015). Censo registry 2026-09-04: 194 filas → 193 CLOSED/CLOSED-VERIFIED/LOCALLY_VERIFIED + 1 BLOCKED_OPERATOR (ARBX-E1-01 = decisión D10); 0 PENDING/IN_PROGRESS.

  • Validación integral local pendienteCUMPLIDA

    desbloquea cuando: suite completa + typecheck verde sobre el árbol final (no por-tarea)

    fuente: §78 matriz de aceptación del gate final

    evidencia (2026-09-04): Árbol final 5074bb4e: FE tsc --noEmit 0 errores + vitest 1016/1016 (115 archivos); api-server vitest 659/659 (54 archivos); Rust vía CI (AppControl local, R8): head #518 28/28, SHA final 40/40.

  • Revisión cruzada pendienteCUMPLIDA

    desbloquea cuando: 0 filas PENDING/IN_PROGRESS en el registry (R3/R6 cerrados en ambas lanes)

    fuente: .ai-work/TEAM_BOARD.md (vista derivada)

    evidencia (2026-09-04): Censo registry 2026-09-04: 0 filas PENDING/IN_PROGRESS; verificación cruzada R3/R6 documentada (cont.89–128); TEAM_BOARD regenerado desde el registry (SSOT).

  • Gates de regresión sin verificación post-deployCUMPLIDA

    desbloquea cuando: ARBX-R-0001..0004 + G-Gates §37 verdes en L4 post-deploy (probe vivo, no local)

    fuente: docs/governance/HARDENING_ANTI_REGRESION.md

    evidencia (2026-09-04): L4 vivo: VPS HEAD == 5074bb4e (deploy veraz); /api/gates/status paper_mode PASSED (capital expuesto 0); /api/status 7/7 servicios; XLEN arbx:opps:detected 10.002; PG MAX(detected_at) fresco; ARBX_TRADE_MODE=paper; operator/me y svcctrl admin = 401 honestos.

  • CI no puede correr bajo el protocoloSUPERADA

    desbloquea cuando: el ÚNICO commit del gate final dispara los 14 required checks — nada antes

    fuente: .github/workflows (branch protection 14 checks)

    evidencia (2026-09-04): La premisa quedó superada por el flujo PR: branch protection viva = 14 required contexts (strict + enforce_admins + reviews); cada PR #470..#518 los disparó — head #518: 28/28 incl. CodeQL; SHA final: 40/40.

  • Autorización operador del gate finalPENDIENTE OPERADOR

    desbloquea cuando: aprobación explícita WP-F + KNOWN_GOOD_REVISION (gate ARBX-R-0004 en scripts/deploy.sh)

    fuente: scripts/deploy.sh (gates veraces) + directiva operador

    evidencia (2026-09-04): WP-F 2026-08-25 aprobado por el operador vía merge #464 (deploy verificado, ARBX-0017). Pendiente operador: decisión D10 wiring de identidad backend (síntoma FE ya resuelto por #512) y flips SIM_BACKEND (S4 labels). Toda autorización de gate final sigue siendo operador-only.

nivel-(b): sin endpoint runtime de registry/CI — los estados por razón son evidencia estática fechada (verificable contra git/API GitHub/probes), NO estado vivo ni fabricado (RULE 00)

Objetivo declarado
CI/CD VPS · Entrega ejecutable

llevar arbitragex-v2 del estado actual (CI 100% rojo, repo PUBLIC, branch protection sin status checks) a producción operativa en VPS via GitHub Actions

OMEGA AGENT TEAMSLey de Lexicón AbsolutoGhost ProtocolZero-MocksFail-Honest R8
Artefactos

16

Causas raíz

5

Deploy gates

7

Checklist

10

Orden canónico

Rollout de 4 fases mandatorias

Aplicación secuencial — ninguna fase puede ejecutarse fuera de orden.

Fase 0ready
Contención
Antes de cualquier merge — políticas GitHub (no commits)
1

Privatizar repo (P01 crítico)

gh repo edit hefarica/arbitragex-v2 --visibility private --accept-visibility-change-consequences

El código de Asimetría Topológica NO puede ser público — docs/REPO_VISIBILITY_POLICY.md

2

Secret scanning + push protection

gh api -X PATCH repos/hefarica/arbitragex-v2 -f security_and_analysis[secret_scanning][status]=enabled -f security_and_analysis[secret_scanning_push_protection][status]=enabled
3

Aplicar workflows del PR (auto via merge)

codeql.yml · dependabot.yml · policy-check.yml

4

Branch protection · 14 required checks

bash scripts/setup_branch_protection.sh

Idempotente · requiere GITHUB_TOKEN con admin:repo

5

Pre-commit hooks locales

pip install pre-commit && cp config/pre-commit-config.yaml .pre-commit-config.yaml && pre-commit install
Fase 1ready
Unblock CI
Resuelve las 5 causas raíz documentadas en OMEGA-101
1

Aplicar fixes idempotentes

bash scripts/apply_omega102_fixes.sh
2

Commit unblock

git add -A && git commit -m "fix(omega102): unblock CI · resolve 5 root causes [P01-P05]"
Fase 2pending
Deploy production pipeline
Workflow deploy-production.yml — 7 gates secuenciales
1

Trigger workflow

gh workflow run deploy-production.yml --ref main -f confirm_sha=<full_sha> -f confirm_environment=production-vps

NO paths alternativos · NO --admin · NO push directo · NO SSH manual

Fase 3pending
Branch protection final
Después del primer deploy verde — los 14 checks deben pasar al menos una vez
1

Enforce required checks

bash scripts/setup_branch_protection.sh --enforce-required-checks

Doctrina "POR EL HAZ DE LUZ SOLO PASA QUIEN ES VISTO" materializada

5 causas raíz · OMEGA-101 → unblock CI
Resueltas por scripts/apply_omega102_fixes.sh. Cada fila incluye CVE/RUSTSEC cuando aplica, el artefacto que la materializa y la verificación PASS esperada.

lru 0.12.5 — IterMut unsound

RUSTSEC-2026-0002

patches/01_lru_bump.patch (bump → 0.13)

cargo audit verde

postcss <8.5.10 via Next 14.2.3

GHSA-qx2v-qp2m-jg93

patches/02_postcss_override.patch (overrides ^8.5.10)

npm audit --audit-level=high verde

rustfmt drift v2_shadow_replay.rs:436

cargo fmt --all aplicado en este PR

cargo fmt --all -- --check PASS

Constantes fuera de chains.rs

Refactor + byte tests (incluido en patches)

scripts/lint_no_hardcode.sh PASS

ANVIL_FORK_URL blank + reporter path

Documentado en docs/DEPLOY_PRODUCTION.md § 1

Secret seteado por operador
7 deploy gates secuenciales
Workflow deploy-production.yml · sin paths alternativos.
  1. gate 01Confirm environment

    Aprobación humana @hefarica · GitHub Environment production-vps

  2. gate 02CI green

    14 required status checks PASS

  3. gate 03Build images

    buildx multi-arch → GHCR + cosign keyless + SBOM Syft + Trivy

  4. gate 04Pre-deploy snapshot

    pg_dump + Redis BGSAVE + nginx state + vault state on-chain

  5. gate 05Deploy green slot

    SSH al VPS · docker compose up · sqlx migrate

  6. gate 06Smoke tests

    7 checks obligatorios · scripts/smoke-tests.sh

  7. gate 07Cutover OR rollback

    nginx swap blue→green · o scripts/rollback.sh automático

Inventario

16 artefactos ejecutables

Sin recomendaciones — solo artefactos materializados, listos para merge.

Workflows GitHub Actions
4 ítems
.github/workflows/codeql.ymlSAST security-extended Rust+TS
.github/workflows/deploy-production.ymlpipeline 7 gates VPS
.github/workflows/dependabot.ymlupdates semanales cargo/npm/actions (lunes 09:00 Bogotá)
.github/workflows/policy-check.ymlverificación horaria policies repo
Patches reproducibles
2 ítems
patches/01_lru_bump.patchbump lru 0.12 → 0.13 (RUSTSEC-2026-0002)
patches/02_postcss_override.patchoverrides postcss ^8.5.10 (GHSA-qx2v-qp2m-jg93)
Scripts operativos
4 ítems
scripts/apply_omega102_fixes.shaplicador idempotente 5 fixes CI
scripts/smoke-tests.sh7 smoke checks post-deploy
scripts/rollback.shrollback determinista (DB + nginx + slot)
scripts/setup_branch_protection.shPUT branches/main/protection con 14 contexts
Configuración
2 ítems
config/CODEOWNERSpaths backend/contracts/frontend/edge/workflows → @hefarica
config/pre-commit-config.yamlcargo fmt+clippy, tsc, forge build, gitleaks, block .env
Documentación operativa
4 ítems
docs/INCIDENT_RUNBOOK.mdmatriz INC-01 a INC-10 + killswitch HMAC + rollback + Tribunal
docs/ROTATION_POLICY.mdinventario secrets + protocolo rotación + calendario 2026
docs/DEPLOY_PRODUCTION.mdanatomía 7 gates + métricas éxito + R8 límites
docs/REPO_VISIBILITY_POLICY.mdregla absoluta PRIVATE + monitoring + forks

Doctrina R8 · Fail-honest

Límites declarados explícitamente

Lo que la entrega NO resuelve — para que el operador decida con información completa.

Validación de la entrega

Criterio OMEGA-OK

Marca cada ítem conforme avances. Estado local en el navegador — no persiste.

OMEGA-OK · 0/10 verificados

Estado local — no persiste. Para auditoría real, los comandos CLI listados en cada ítem son la fuente de verdad.

0%
Políticas GitHub0/2
Artefactos del PR0/3
CI · branch protection0/2
Deploy productivo0/3

Estrategia de merge

Dos PRs secuenciales — evita PR monolítico

PR #1
fix/omega102-ci-unblock

Scope

  • patches/*
  • scripts/apply_omega102_fixes.sh
  • config/pre-commit-config.yaml

Efecto: Resuelve causas raíz CI → enables los 5 checks rojos a verdes

Blocker: Sin esto, el segundo PR no puede mergearse

PR #2
feat/omega102-deploy-production-pipeline

Scope

  • .github/workflows/*
  • scripts/{smoke-tests,rollback,setup_branch_protection}.sh
  • config/CODEOWNERS
  • docs/*

Efecto: Activa el pipeline completo

Blocker: Depende del primer merge

Comandos operativos

Triggers principales — copy-paste seguro

Privatizar repo (P01)
gh repo edit hefarica/arbitragex-v2 --visibility private --accept-visibility-change-consequences
Aplicar fixes CI
bash scripts/apply_omega102_fixes.sh
Trigger deploy production
gh workflow run deploy-production.yml --ref main -f confirm_sha=<full_sha> -f confirm_environment=production-vps
Branch protection final
bash scripts/setup_branch_protection.sh --enforce-required-checks

Firmas requeridas

Tribunal + Operador

Tribunal R7 (rigor científico)

PASS

artefactos materializados, sin teoría

Tribunal R8 (fail-honest)

PASS

límites declarados explícitos en § "Doctrina R8"

Operador @hefarica

PENDING

review + merge fase por fase

Próxima acción tras merge ambos PRs: ejecutar gh workflow run deploy-production.yml con SHA del segundo merge en environment production-vps. Smoke tests serán el primer test de fuego real del pipeline.

Loading opportunities...