Agentic QAUPEX Galaxy · arquitectura
Release · agosto 2026

El contexto de Jira ahora es un caché, y la trazabilidad tiene evidencia

Este release resuelve el problema de raíz del árbol PBI (un espejo de Jira commiteado en git), ratifica la escalera completa de artefactos de testing con un integrante nuevo, y corrige el modelo de coverage con verificación en vivo contra Xray. Todo lo de abajo ya está en main.

01 · El problema de raíz

El PBI era una base de datos duplicada dentro de git

.context/PBI/ espejaba las Stories, Bugs y Tests de Jira y se commiteaba. Dos sesiones que re-sincronizaban en momentos distintos producían commits en conflicto del mismo texto generado, y un merge de 3 vías sobre un archivo regenerado no significa nada. Jira ya ES la copia versionada y compartida.

Tier Fuente de verdad ¿En git? Se recupera con
[SYNC] — espejo de Jira Jira No (gitignorado) bun run context:hydrate
[COMMIT] — README, templates, test-specs/ El repo git checkout
[LOCAL] — notas y evidencia de sesión Nada durable No No se recupera: efímero por diseño

Un solo árbol: Test → Story → Epic

Cada Test vive bajo la Story que lo cubre. Los Tests sin camino de trazabilidad caen en epics/_orphans/tests/: una lista de trabajo visible, no una carpeta más.

Epics de proceso QA separados

Los epics de artefactos QA llevan el label QA-Artifact y se filtran a qa-artifacts/: nunca más un bucket de proceso disfrazado de módulo del producto.

02 · La escalera de artefactos

Cuatro altitudes de planificación, cada una con dueño real

La escalera quedó ratificada y ejecutable: cada artefacto tiene quién lo crea y cuándo. Y la familia de aceptación se completa con un integrante nuevo: el ATS.

Artefacto Altitud Título Quién lo produce
MTP — Master Test Plan Producto Epic QA Master Test Plan + archivo local /master-test-plan
FTP — Feature Test Plan Feature FTP: {EPIC}: {feature} /sprint-testing al cargar el contexto del Epic
STP — Sprint Test Plan Sprint STP: Sprint#{N}: {objetivo} /sprint-testing al abrir el sprint (planificador vivo)
STR — Sprint Test Results Sprint STR: Sprint#{N}: Regression Testing Cierre de sprint (sprint-testing o regression, el primero que llega)
ATP — Acceptance Test Plan Story ATP: {US_ID}: {título} Pre-sprint en el custom field (shift-left) → item en Stage 1
ATS — Acceptance Test Set · nuevo Story ATS: {US_ID}: {título} Stage 1, obligatorio: agrupa TODOS los TCs de la Story
ATR — Acceptance Test Results Story ATR: {US_ID}: Story Testing Stage 1 (siempre con Test Environment)
TS — Test Set de feature Feature TS: {EPIC|módulo}: Validate {feature} Opcional: suites smoke / regression

FTR y el prefijo PRC se recortaron: el FTR duplicaba al STR, y la Precondition existe como entidad de Xray sin necesidad de acrónimo de escalera.

03 · La evidencia que cambió el diseño

El panel de coverage ignora al ATP: lo probamos en vivo

Verificación read-only contra una instancia Xray real, con tres Stories como experimento controlado. El resultado invalidó el modelo que la doctrina enseñaba:

Story Links «is tested by» Coverage según Xray
BK-202 Test Plan (16 tests) + Test Execution (16) UNCOVERED · 0 tests
BK-337 Plan + Exec + Test Set (22 tests) OK · exactamente los 22 del Set
BK-18 Plan + Exec + 12 Tests directos OK · exactamente esos 12

Conclusión: los links del ATP y el ATR son trazabilidad administrativa. Lo que llena el panel es el link del ATS (o los links directos Test↔Story). Por eso el ATS es ahora obligatorio, y por eso el shift-left dejó de crear el Test Plan temprano: no compraba cobertura.

04 · La cascade de trazabilidad

Cómo se resuelve dónde vive cada Test

TC → ATS → Story      primaria: membership + link ATS→Story (llena el coverage panel)
TC → ATP → Story      placement en el árbol local; el panel NO lo cuenta
TC → Story directo    last resort válido (deja de ser anti-patrón)
(nada)                → epics/_orphans/tests/ · lista de trabajo de trazabilidad

Dos capas, nunca confundidas

  • Links de Jira: contenedor→Story (is tested by), visibles al REST.
  • Asociaciones de Xray: membership TC ∈ ATS/ATP/ATR, solo GraphQL.
  • En jira-native no hay capa Xray: la membership se expresa como links TC→ATS.

Set-first en Stage 1

  • ① ATP item creado desde el field del shift-left
  • ② ATS con todos los TCs + link a la Story
  • ③ listas de Plan y Exec derivadas de la membership del ATS
  • ④ ATR siempre con Test Environment (active_env)
05 · El flujo, de punta a punta

Shift-left más liviano, sprint más completo

Pre-sprint (shift-left)

  • ACs refinados + preguntas para producto
  • El ATP nace en el custom field (cero artefactos gastados en Stories que mueren en backlog)
  • Subtask [QA] Shift-Left Review: el board ve el trabajo pre-sprint, y las anotaciones largas viven ahí

In-sprint

  • STP vivo desde el primer ticket: su descripción lleva el plan del sprint (un solo escritor, read-first) y sus comentarios el progreso append-only, uno por issue cerrado. Es el estado de sprint que ve el equipo — si el log y el ATR de una Story se contradicen, manda el ATR
  • Bug retest (xray): 1 Test de repro creado y ejecutado en-sprint
  • STR al cierre como recap del sprint
06 · Tooling

El CLI y el sync ahora hablan el mismo modelo

CLI de Xray

  • link create: el write-path de links que faltaba (coverage incluida)
  • plan add-set / exec add-set: cascade desde la membership del ATS
  • set sync + plan get + preconditions + test update-step
  • exec create avisa si falta --environment
  • bun xray test enrich: trae al caché lo que el REST no ve

Sync y descubrimiento

  • El pull distingue altitudes (un STP linkeado ya no se archiva como ATP de la Story)
  • Cascade de placement integrada con la enrichment GraphQL
  • Un pull sin filtros barre además los cuatro epics de proceso QA: FTP / STP / STR, Test Sets y Preconditions bajan a test-plans/ y test-executions/ con el acrónimo del título en el nombre de archivo (ADR-0001)
  • bun run tests:map: mapa HTML de cobertura, gaps primero
  • /jira-components: components = módulos reales de la app, plan aprobado por humano
07 · El release en números

Tres tandas de trabajo, todo verificado

115+
afirmaciones falsas corregidas en docs y skills
22
decks alineados al modelo nuevo
18
decisiones de diseño tomadas con evidencia
3
verificaciones en vivo contra Xray real

Cada decisión quedó registrada con su porqué en los commits de main. Las presentaciones por skill (en español) están en /decks/.