+- **Status:** `IN-PROGRESS` (2026-07-21) — **REACTIVADO y en construcción como RoboSoft (decisión del PO).** RoboSoft realiza y supera esta oportunidad: una **flota de agentes de prueba determinísticos** que conducen el Tracker E2E contra el stack VIVO (`tracker-api` + `tracker-gateway` + Core real), ejercitando REST + las MCP tools del Core + `/converse`, **aseverando** y emitiendo **evidencia reproducible** (JSON + exit code para CI). **Hecho en este incremento:** el harness (`robosoft/`: `run.mjs`, `lib/config|client|report.mjs`) + el primer robot **`core-integration`** (capabilities, rulesets, MCP list+call, `evaluate` con round-trip real al Core, `/converse`). Diseño+uso en `robosoft/README.md`. Harness auto-probado (contra targets caídos: FAIL narrado, evidencia escrita, exit 1). **Pendiente (próximos robots):** `governance-journey` (funnel SDLC completo asertivo, reusando `seed/e2e-governance.mjs`), `provider-connections`, multi-persona, y wiring en CI contra el clúster kind. La verificación contra el clúster VIVO requiere levantar el entorno (port-forward) — documentado en el README. **✅ Validado en vivo 2026-07-21** contra `kind-evolith-cluster` (Core real: `evolith-core-api`+`evolith-mcp`+`evolith-runtime` y `tracker-gateway` desplegados; port-forward gateway :3000): **11/13 checks verde** — capabilities (`schemaVersion 1.0.0`, `supportedConsumers:[evolith_tracker,external]`), rulesets (3), **47 MCP tools**, MCP call (201 + content envelope), y **`evaluate` con veredicto REAL** (`success:true`, gates=1/failed=1, reglas `CLI-RR-*`). El robot se **endureció con lo aprendido en vivo**: desenvolver el `{success,data,meta}` del Core, aceptar `2xx` (NestJS POST → 201), heurística de tool read-only con separador `-`, y payload `evaluationInput.files` inline (el endpoint directo del Core NO usa `repositoryRef`). Los 2 checks rojos son `/converse` — **no hay `tracker-api` en este clúster** (honesto). **🔎 Primer hallazgo real de RoboSoft (señal soft):** el pod del Core no puede leer `rulesets/opa/policy.wasm` (`EACCES` → `FORBIDDEN`/ABAC), un hueco de **despliegue del Core** (cross-product, del board del Core, no del Tracker) que la interfaz surface pero el entorno bloquea. **Segundo robot `governance-journey` construido y VALIDADO EN VIVO 2026-07-21** (tracker-api local contra `tracker-ci-pg`): conduce una iniciativa de tenant por el **funnel SDLC completo** —gate policies ×5 → product+repo satélite → opportunity → triage → promote → initiative (discovery-detail/scope/submit/approve) → **discovery→design→construction→qa→release**, las 5 compuertas `APPROVED`— **53/53 checks verde**. **Dos hallazgos más de RoboSoft:** (1) **el prefijo del tracker-api es `/api/v1`, no `/api`** — por eso `src/apps/tracker-api/seed/e2e-governance.mjs` está **stale y hoy da 404** (usa `/api/...`); RoboSoft corrigió su `apiPrefix`. (2) **CD-19 en acción:** `POST /core-verdict` registra un veredicto `attested` (auto-declarado) que **NUNCA satisface una compuerta**; solo la ruta probatoria `POST /gate-submissions/{id}/sync-core-verdict` (que pregunta al Core real) produce procedencia `core`. Como el satélite demo falla la evaluación real, una compuerta con `requiresCoreVerdict:true` no puede aprobarse con él — el sistema funcionando. `governance-journey` valida la **máquina de estados** (design `requiresCoreVerdict:false`); el veredicto-Core real lo cubre `core-integration`. **Pendiente:** provider-connections robot, multi-persona, y wiring CI.
0 commit comments