@trycore/spec-build-harness 0.8.1 → 0.8.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/.claude-plugin/plugin.json +5 -2
  2. package/GOVERNANCE.md +1 -1
  3. package/INSTALL.md +4 -4
  4. package/METODOLOGIA.md +50 -7
  5. package/README.md +8 -5
  6. package/VERSION +1 -1
  7. package/agents/build/architecture-evaluator.md +45 -0
  8. package/agents/build/asr-extractor.md +43 -0
  9. package/agents/build/dor-dod-gatekeeper.md +20 -0
  10. package/agents/build/stack-guardian.md +9 -0
  11. package/asset-types.json +75 -0
  12. package/commands/build/architect.md +66 -0
  13. package/docs/agents.md +32 -3
  14. package/docs/commands.md +9 -3
  15. package/docs/getting-started.md +1 -1
  16. package/docs/runtime/plan-migracion-harness-v0.9.md +84 -0
  17. package/docs/runtime/protocolo-cliente-runtime.md +116 -0
  18. package/package.json +2 -1
  19. package/skills/building-a-slice/references/dor.md +8 -0
  20. package/skills/building-a-slice/workflows/README.md +7 -1
  21. package/skills/building-a-slice/workflows/dor-fanout.workflow.js +98 -0
  22. package/skills/releasing-a-version/SKILL.md +5 -2
  23. package/skills/releasing-a-version/references/release-dod.md +1 -1
  24. package/skills/releasing-a-version/workflows/README.md +6 -1
  25. package/skills/releasing-a-version/workflows/release-gate.workflow.js +59 -4
  26. package/skills/setup-architecture/SKILL.md +94 -0
  27. package/skills/setup-architecture/assets/0000-drivers-y-asrs.template.md +101 -0
  28. package/skills/setup-architecture/assets/_backlog-arquitectonico.template.md +51 -0
  29. package/skills/setup-architecture/assets/adr-add.template.md +84 -0
  30. package/skills/setup-architecture/references/add-method.md +53 -0
  31. package/skills/setup-architecture/references/atam-lite.md +44 -0
  32. package/skills/setup-architecture/references/drivers-extraction.md +39 -0
@@ -0,0 +1,101 @@
1
+ ---
2
+ id: 0000
3
+ title: "Catálogo de Drivers Arquitectónicos y ASRs (entrada del método ADD)"
4
+ date: YYYY-MM-DD
5
+ status: living-document
6
+ authors:
7
+ - <Equipo Arquitectura>
8
+ tags:
9
+ - add
10
+ - drivers
11
+ - asr
12
+ - quality-attributes
13
+ ---
14
+
15
+ # ADR 0000 — Drivers Arquitectónicos y ASRs
16
+
17
+ > **Naturaleza:** No es un ADR de decisión, sino la **entrada de diseño** (Paso 1 del método ADD de Len
18
+ > Bass). Consolida propósito, requisitos funcionales primarios, escenarios de atributos de calidad
19
+ > priorizados, restricciones y concerns. Toda decisión en un ADR (0001+) debe trazar a uno o más drivers
20
+ > de este catálogo, y todo driver debe estar cubierto por al menos un ADR (ver
21
+ > [_backlog-arquitectonico.md](_backlog-arquitectonico.md)).
22
+ >
23
+ > **Cómo se genera:** la skill `setup-architecture` (`/build:architect`) lo **propone** leyendo `docs/`
24
+ > (PRD + user story map + `03-backlog/epicas.md` + `04-historias/HU-*.md`) — de solo lectura. Este es un
25
+ > **documento vivo**: cada re-corrida añade drivers nuevos que surjan de HUs/épicas nuevas.
26
+
27
+ ## Cómo se usa este documento en ADD
28
+
29
+ ADD diseña por **rondas e iteraciones** de 7 pasos. Este catálogo alimenta los pasos 1 y 2:
30
+
31
+ - **Paso 1 — Review Inputs:** todo lo de este documento.
32
+ - **Paso 2 — Establish Iteration Goal:** cada iteración selecciona un subconjunto priorizado de estos
33
+ drivers (ver §6 Plan de iteraciones).
34
+
35
+ ## Propósito de diseño
36
+
37
+ <Greenfield / brownfield; una línea sobre qué es el sistema y su enfoque de diseño (top-down desde el
38
+ sistema completo, o refinamiento de elementos internos).>
39
+
40
+ Fuente: [docs/01-prd/<prd>.md](../01-prd/<prd>.md) §<x>.
41
+
42
+ ## 1. Objetivos de negocio (OE)
43
+
44
+ | ID | Objetivo | Métrica / Meta |
45
+ |----|----------|----------------|
46
+ | OE-01 | … | … |
47
+
48
+ ## 2. Requisitos funcionales primarios (UC) — arquitecturalmente significativos
49
+
50
+ > Solo los casos de uso que **moldean** la arquitectura. No es el backlog completo.
51
+
52
+ | UC | Descripción | Trazabilidad |
53
+ |----|-------------|--------------|
54
+ | UC-1 | … | OE-…, HU-… |
55
+
56
+ ## 3. Escenarios de atributos de calidad (QA) — formato de 6 partes
57
+
58
+ > Formato Bass: **Fuente del estímulo · Estímulo · Artefacto · Entorno · Respuesta · Medida de respuesta.**
59
+ > Cada escenario lleva prioridad `(Importancia de negocio, Impacto/Dificultad arquitectónica)` en escala
60
+ > {A=Alta, M=Media, B=Baja}. La **medida de respuesta** debe ser cuantificable (es lo que convierte un
61
+ > deseo en un ASR verificable).
62
+
63
+ ### QA-1 — <Atributo> · prioridad (A, M)
64
+ - **Fuente:** …
65
+ - **Estímulo:** …
66
+ - **Artefacto:** …
67
+ - **Entorno:** …
68
+ - **Respuesta:** …
69
+ - **Medida:** … (traza a HU/AC/PRD)
70
+
71
+ ## 4. Restricciones (CON)
72
+
73
+ | ID | Restricción | Origen |
74
+ |----|-------------|--------|
75
+ | CON-1 | … | … |
76
+
77
+ ## 5. Concerns / preocupaciones del proyecto (CRN)
78
+
79
+ | ID | Concern | Implicación de diseño |
80
+ |----|---------|-----------------------|
81
+ | CRN-1 | … | … |
82
+
83
+ ## 6. Plan de iteraciones (rondas ADD ↔ fases del PRD / líneas de release)
84
+
85
+ > Estrategia: iterar en el orden de las fases del PRD (o las líneas de release del Story Map). Cada
86
+ > iteración ejecuta los Pasos 2–7 de ADD sobre el subconjunto de drivers indicado.
87
+
88
+ | Iteración | Fase PRD / Release | Drivers seleccionados (Paso 2) | Elementos a refinar (Paso 3) | ADRs |
89
+ |-----------|--------------------|--------------------------------|------------------------------|------|
90
+ | **1** | … | … | … | … |
91
+
92
+ ## 7. Matriz de priorización (Importancia de negocio × Impacto arquitectónico)
93
+
94
+ | | Impacto arq. ALTO | Impacto arq. MEDIO | Impacto arq. BAJO |
95
+ |---|---|---|---|
96
+ | **Negocio ALTO** | … | … | — |
97
+ | **Negocio MEDIO** | … | … | — |
98
+
99
+ > Los cuadrantes superiores (alta importancia × alto impacto) son los **ASRs críticos**: se atacan
100
+ > primero o se mitiga su riesgo lo antes posible (principio ADD de iterar hasta satisfacer los drivers
101
+ > críticos / mitigar el riesgo).
@@ -0,0 +1,51 @@
1
+ # Backlog Arquitectónico (ADD — Paso 7)
2
+
3
+ > Tablero de seguimiento del método ADD. Rastrea qué drivers/ASRs
4
+ > ([0000-drivers-y-asrs.md](0000-drivers-y-asrs.md)) han sido abordados por una decisión, cuáles están en
5
+ > progreso y cuáles pendientes. Equivale al Kanban arquitectónico que recomienda Len Bass para no perder
6
+ > de vista la cobertura entre iteraciones.
7
+ >
8
+ > **Este archivo es el estado de la capa de arquitectura.** Lo escribe la skill `setup-architecture`
9
+ > (`/build:architect`) y lo consumen los gates del arnés: el **DoR** verifica que los drivers
10
+ > arquitectónicamente significativos de una épica tengan un ADR con estado ≥ `ABORDADO` antes de abrir el
11
+ > slice; el gate **`stack_arch`** del Release Gate audita conformidad contra los ADRs referenciados aquí.
12
+
13
+ **Convención de estado:**
14
+ - `PENDIENTE` — driver sin decisión asociada.
15
+ - `EN DISEÑO` — iteración en curso.
16
+ - `ABORDADO` — existe ADR que lo cubre con análisis (Paso 7) registrado.
17
+ - `VERIFICADO` — el análisis confirma que la decisión satisface la medida de respuesta (idealmente
18
+ revisado por un par).
19
+
20
+ ## Tablero por driver
21
+
22
+ > La columna **Trazabilidad** (EP/HU/§PRD de los que sale el driver, heredada del `0000`) es la que usa
23
+ > el DoR para el join épica↔driver: dado un `EP-XXX`, sus drivers son las filas cuya trazabilidad cita
24
+ > esa épica o alguna de sus HU.
25
+
26
+ | Driver | Tipo | Prioridad | Trazabilidad (EP/HU) | Iteración | ADR | Estado |
27
+ |--------|------|-----------|----------------------|-----------|-----|--------|
28
+ | UC-1 … | Funcional | (A,A) | EP-…, HU-… | 1 | 000N | PENDIENTE |
29
+ | QA-1 … | QA | (A,M) | HU-…, §PRD | 1 | 000N | PENDIENTE |
30
+ | CON-1 … | Restricción | — | §PRD | 1 | 000N | PENDIENTE |
31
+ | CRN-1 … | Concern | — | — | 1 | 000N | PENDIENTE |
32
+
33
+ ## Riesgos arquitectónicos abiertos
34
+
35
+ > Salida del análisis ATAM-lite (Paso 6/7): puntos de sensibilidad, trade-offs y riesgos sin mitigar.
36
+ > Cada riesgo traza a su driver y a la mitigación planificada. Marcar ✅ CERRADO al resolver (no borrar:
37
+ > deja el rastro).
38
+
39
+ | Riesgo | Driver | Mitigación planificada | Iteración |
40
+ |--------|--------|------------------------|-----------|
41
+ | … | QA-… | … | … |
42
+
43
+ ## Bitácora de iteraciones
44
+
45
+ > Una fila por ronda ADD. `Objetivo` = Paso 2; `Resultado` = Paso 7 (qué ADR se creó/refactorizó y qué
46
+ > quedó sin resolver). La fila de **Cierre** registra la promoción `proposed → accepted` tras la revisión
47
+ > humana.
48
+
49
+ | Iteración | Fecha | Objetivo (Paso 2) | Resultado (Paso 7) |
50
+ |-----------|-------|-------------------|--------------------|
51
+ | 1 | YYYY-MM-DD | … | … |
@@ -0,0 +1,84 @@
1
+ ---
2
+ id: NNNN
3
+ title: "<Título de la decisión>"
4
+ date: YYYY-MM-DD
5
+ status: proposed # proposed | accepted | superseded | deprecated
6
+ authors:
7
+ - <Equipo / persona>
8
+ tags: []
9
+ add:
10
+ iteracion: <n>
11
+ fase_prd: "<Fase X>"
12
+ ---
13
+
14
+ # ADR NNNN — <Título>
15
+
16
+ > Plantilla alineada al método **ADD** (Attribute-Driven Design, Len Bass — *Software Architecture in
17
+ > Practice*). Cada sección numerada corresponde a un paso del método. Las decisiones deben trazar a
18
+ > [0000-drivers-y-asrs.md](0000-drivers-y-asrs.md) y actualizar
19
+ > [_backlog-arquitectonico.md](_backlog-arquitectonico.md). Generada por la skill `setup-architecture`
20
+ > (`/build:architect`); un humano la promueve `proposed → accepted`.
21
+
22
+ ## 1. Objetivo de la iteración y drivers seleccionados (Pasos 2–3)
23
+
24
+ - **Objetivo de la iteración:** <qué se busca resolver en esta ronda>.
25
+ - **Elemento(s) a refinar:** <sistema completo | servicio X | módulo Y>.
26
+ - **Drivers abordados:**
27
+ - Funcionales: UC-…
28
+ - Atributos de calidad: QA-… (con su medida de respuesta)
29
+ - Restricciones: CON-…
30
+ - Concerns: CRN-…
31
+
32
+ ## 2. Conceptos de diseño elegidos (Paso 4)
33
+
34
+ > Patrones arquitectónicos, **tácticas** (sentido Bass), componentes externos o arquitecturas de
35
+ > referencia evaluados y elegidos para satisfacer los drivers. Registra las alternativas descartadas:
36
+ > ese es el valor del ADR.
37
+
38
+ | Driver | Concepto / Táctica | Alternativas descartadas | Razón |
39
+ |--------|--------------------|--------------------------|-------|
40
+ | QA-… | … | … | … |
41
+
42
+ ## 3. Instanciación: responsabilidades e interfaces (Paso 5)
43
+
44
+ > Cómo se convierten los conceptos en estructuras reales: componentes/módulos, sus responsabilidades y
45
+ > los contratos (interfaces) por los que se comunican.
46
+
47
+ - **Elementos instanciados:** …
48
+ - **Responsabilidades:** …
49
+ - **Interfaces / contratos:** …
50
+
51
+ ## 4. Vistas y registro de la decisión (Paso 6)
52
+
53
+ > Boceto de vista(s) estructural(es) — de módulos, de componentes-y-conectores o de asignación física —
54
+ > y el rationale + trade-offs.
55
+
56
+ ```mermaid
57
+ %% vista estructural / de despliegue / de secuencia
58
+ ```
59
+
60
+ **Decisión:** …
61
+
62
+ **Trade-offs aceptados:** …
63
+
64
+ ## 5. Análisis del diseño (Paso 7)
65
+
66
+ > ¿La decisión satisface el objetivo de la iteración? Cada driver con veredicto y evidencia/medida.
67
+
68
+ | Driver | ¿Satisfecho? | Evidencia / medida | Riesgo residual |
69
+ |--------|--------------|--------------------|-----------------|
70
+ | QA-… | ✅/⚠️/❌ | … | … |
71
+
72
+ **Drivers no resueltos en esta iteración:** … (se devuelven al backlog arquitectónico).
73
+
74
+ ## 6. Consecuencias
75
+
76
+ - Positivas: …
77
+ - Negativas / riesgos: …
78
+ - Operacionales: …
79
+
80
+ ## 7. Trazabilidad
81
+
82
+ - Drivers: [0000-drivers-y-asrs.md](0000-drivers-y-asrs.md)
83
+ - PRD / HU / Flows: …
84
+ - Stack operacionalizado en: `.claude/config/stack-allowlist.json` (si esta ADR decide stack)
@@ -0,0 +1,53 @@
1
+ # Método ADD — iterar el diseño (Pasos 2–7) — referencia
2
+
3
+ ADD (Attribute-Driven Design, Len Bass) diseña por **rondas**. Cada ronda ejecuta 7 pasos sobre un
4
+ subconjunto priorizado de drivers del catálogo `0000`. Una ronda produce **un ADR** (a veces refactoriza
5
+ uno previo). Usa la plantilla `assets/adr-add.template.md` de esta skill —instalada junto a estas
6
+ references— (7 secciones = los 7 pasos, con su frontmatter `id/title/date/status/authors/tags/add`).
7
+
8
+ ## Los 7 pasos por iteración
9
+
10
+ 1. **Review inputs** — ya está en `0000-drivers-y-asrs.md`.
11
+ 2. **Establecer el objetivo de la iteración** — elige la fase/release y el subconjunto de drivers
12
+ (empieza por los ASRs críticos, cuadrante (A,A) de la matriz). → §1 del ADR.
13
+ 3. **Elegir el elemento a refinar** — sistema completo (primera ronda, top-down) o un módulo/servicio
14
+ interno (rondas posteriores). → §1 del ADR.
15
+ 4. **Elegir conceptos de diseño** — **tácticas** (Bass), **patrones**/estilos, componentes externos o
16
+ arquitecturas de referencia. Registra las **alternativas descartadas** y por qué. → §2 del ADR.
17
+ 5. **Instanciar** — convierte los conceptos en componentes/módulos reales con responsabilidades e
18
+ **interfaces/contratos**. → §3 del ADR.
19
+ 6. **Bocetar vistas y registrar la decisión** — al menos una vista (módulos, C&C o despliegue) en
20
+ `mermaid`, con la **decisión** y sus **trade-offs**. → §4 del ADR.
21
+ 7. **Analizar** (ATAM-lite) — cada driver con veredicto y evidencia; drivers no resueltos vuelven al
22
+ backlog. → §5 del ADR (delegado a `architecture-evaluator`; ver `atam-lite.md`).
23
+
24
+ ## Tácticas ↔ atributos (guía rápida, no exhaustiva)
25
+
26
+ | Atributo (QA) | Tácticas típicas (Bass) | Estilos/patrones que las agrupan |
27
+ |---|---|---|
28
+ | Disponibilidad | redundancia, detección (heartbeat/ping), recuperación (rollback, reintento con backoff) | activo-pasivo, health-check, circuit breaker |
29
+ | Rendimiento | gestión de recursos (índices, caché), gestión de demanda (paginación, rate-limit) | CQRS de lectura, caché-aside |
30
+ | Seguridad | resistir (authN/authZ, secretos fuera de código), detectar (auditoría), recuperar | RBAC central, gateway de seguridad, WORM/SIEM |
31
+ | Modificabilidad | encapsular, intermediario, restringir dependencias | capas, hexagonal/puertos-adaptadores, contrato OpenAPI como fuente |
32
+ | Integrabilidad | adaptador, orquestación, límite (bulkhead) | adaptadores por integración, anti-corruption layer |
33
+ | Escalabilidad | replicación, particionamiento, trabajo asíncrono | workers, colas, outbox |
34
+ | Integridad transaccional | transacción, compensación (saga), idempotencia | saga orquestada + outbox |
35
+
36
+ ## Estrategia de iteración
37
+
38
+ - **Ancho antes que profundo**: primera ronda decide el estilo estructural y el stack del **sistema
39
+ completo**; rondas posteriores refinan piezas (worker, motor de notificaciones, servicio de RBAC…).
40
+ - **Cimiento primero**: las decisiones fundacionales (identidad/authN, acceso a datos, arquitectura base,
41
+ design-system) van en las primeras iteraciones — son las que el DoR exigirá antes de abrir épicas de
42
+ negocio (`layer: foundational`).
43
+ - **Un ADR por decisión coherente**, no por archivo tocado. Si una decisión supersede a otra, marca la
44
+ vieja `superseded` y enlaza; no borres.
45
+ - **Stack como decisión trazada**: las elecciones de lenguaje/framework/BD/infra son ADRs con su §2
46
+ (alternativas descartadas). En la fase 5 se consolidan en `stack-allowlist.json`. Si el stack elegido
47
+ **diverge** del PRD §técnica, regístralo explícitamente como riesgo/restricción (no lo escondas).
48
+
49
+ ## Salida por ronda
50
+
51
+ 1. Escribe `docs/adr/000N-<slug>.md` desde la plantilla, con §1–§4 completas.
52
+ 2. Corre `architecture-evaluator` sobre el ADR → completa §5 y §6.
53
+ 3. Actualiza `_backlog-arquitectonico.md`: estado de cada driver, riesgos nuevos, fila de bitácora.
@@ -0,0 +1,44 @@
1
+ # ATAM-lite — evaluación de la arquitectura en papel (ADD Paso 7) — referencia
2
+
3
+ Análisis de cada ADR **antes de programar**, para descubrir riesgos y trade-offs. Es una versión ligera
4
+ de ATAM (Architecture Tradeoff Analysis Method): no se hace un taller formal con stakeholders, sino un
5
+ barrido adversarial delegado en el agente `architecture-evaluator` (read-only). Alimenta §5/§6 del ADR y
6
+ la sección de riesgos del backlog (estructura completa del backlog — tablero por driver, riesgos
7
+ abiertos, bitácora — en `assets/_backlog-arquitectonico.template.md` de esta skill).
8
+
9
+ ## Qué produce el evaluador, por ADR
10
+
11
+ - **Veredicto por driver**: para cada driver que el ADR dice satisfacer, ✅/⚠️/❌ con la **evidencia o
12
+ medida** que lo respalda (o la que falta). Un ⚠️/❌ es un riesgo, no un rechazo.
13
+ - **Puntos de sensibilidad**: propiedades del diseño donde una decisión afecta fuertemente a un atributo
14
+ (p.ej. "el tamaño del pool de conexiones determina QA-1 rendimiento de lectura").
15
+ - **Trade-offs**: puntos donde una decisión mejora un atributo y empeora otro (p.ej. "el backoff
16
+ 1s/3s/9s da robustez pero puede exceder el P99 ≤ 10 s de la integración externa").
17
+ - **Riesgos**: decisiones sin evidencia, drivers no cubiertos, supuestos sin validar. Cada uno con
18
+ driver, mitigación planificada e iteración.
19
+ - **Drivers no resueltos**: se devuelven explícitamente al backlog (estado `PENDIENTE`/`EN DISEÑO`).
20
+
21
+ ## Conceptos ATAM que se usan
22
+
23
+ - **Sensitivity point** — una decisión de la que depende crítica­mente una respuesta de calidad.
24
+ - **Tradeoff point** — un sensitivity point que afecta a más de un atributo en direcciones opuestas.
25
+ - **Risk** — una decisión (o su ausencia) que puede impedir alcanzar la medida de respuesta.
26
+ - **Non-risk** — una decisión que, analizada, se confirma segura para los drivers en juego.
27
+
28
+ ## Reglas del análisis
29
+
30
+ - **Adversarial y honesto**: el evaluador busca **refutar** que el ADR satisface sus drivers. Ante la
31
+ duda, marca riesgo, no lo omitas. Es más barato un riesgo en papel que un rediseño en código.
32
+ - **Medida, no opinión**: un driver solo se marca ✅ si hay una medida verificable o un plan de
33
+ verificación (k6, prueba de carga, matriz de RBAC, etc.). "Parece suficiente" es ⚠️.
34
+ - **No decide negocio**: si el riesgo se resuelve con una decisión de negocio (exponer o no un dato,
35
+ fijar o aplazar un objetivo de DR), lo marca como **trade-off de negocio** → sube a la revisión única
36
+ (fase 5), no lo resuelve el modelo.
37
+ - **Cierre trazable**: al mitigar un riesgo en una iteración posterior, se marca ✅ CERRADO en el backlog
38
+ con el ADR que lo cerró; no se borra la fila.
39
+
40
+ ## Cobertura (invariante del backlog)
41
+
42
+ Al cerrar la capa, **todo driver del 0000 debe tener estado ≥ ABORDADO** o un riesgo abierto explícito
43
+ que explique por qué no. Un driver crítico (A,A) en `PENDIENTE` sin riesgo declarado es un fallo de la
44
+ capa: no está lista para habilitar el build.
@@ -0,0 +1,39 @@
1
+ # Extracción de drivers / ASRs (ADD Paso 1) — referencia
2
+
3
+ Objetivo de la fase: producir `docs/adr/0000-drivers-y-asrs.md` **leyendo `docs/`** (solo lectura),
4
+ sobre la plantilla `assets/0000-drivers-y-asrs.template.md` de esta skill (frontmatter + §1–§7). Se
5
+ delega el barrido a `asr-extractor` (fan-out) y la sesión principal consolida. Un **ASR**
6
+ (Architecturally Significant Requirement) es un requisito que, si cambia, cambia la arquitectura.
7
+
8
+ ## De dónde sale cada bloque del 0000
9
+
10
+ | Bloque del 0000 | Fuente en `docs/` | Cómo derivarlo |
11
+ |---|---|---|
12
+ | **OE** (objetivos de negocio) | `01-prd/` §objetivos, `02-user-story-map/` | Copiar los objetivos específicos + su métrica/meta. Si el PRD no da métrica, proponerla y marcarla como *a validar*. |
13
+ | **UC** (funcionales significativos) | `03-backlog/epicas.md`, `04-historias/HU-*.md` | **Solo** los casos que moldean la arquitectura (integraciones externas, transaccionalidad, RBAC, asincronía, auditoría). No es el backlog completo. |
14
+ | **QA** (escenarios de calidad) | PRD §requisitos no funcionales, AC de las HUs, §técnica | Un escenario de **6 partes** por atributo (rendimiento, disponibilidad, seguridad, integrabilidad, modificabilidad, observabilidad, escalabilidad…). La **medida** debe ser cuantificable. |
15
+ | **CON** (restricciones) | PRD §técnica/§7, política de datos, identidad | Lo que **no** es negociable (stack impuesto, prohibiciones, headers, gates de CI). |
16
+ | **CRN** (concerns) | PRD riesgos, capacidades del equipo, costos | Preocupaciones que condicionan el diseño aunque no sean requisitos formales. |
17
+ | **Prioridad** | juicio + importancia del PRD | Par `(Importancia de negocio, Impacto arquitectónico)` en {A,M,B}. El cuadrante (A,A) son los **ASRs críticos**. |
18
+ | **Plan de iteraciones** | fases del PRD / líneas de release del story map | Una iteración por fase; lista los drivers que ataca cada una. |
19
+
20
+ ## Escenario QA de 6 partes (formato Bass)
21
+
22
+ Cada QA-N se escribe con exactamente estas seis partes:
23
+
24
+ - **Fuente** del estímulo (quién/qué lo genera)
25
+ - **Estímulo** (el evento)
26
+ - **Artefacto** (qué parte del sistema recibe el estímulo)
27
+ - **Entorno** (condiciones: normal, pico, degradado)
28
+ - **Respuesta** (qué hace el sistema)
29
+ - **Medida de respuesta** (cuantificable: P95 ≤ X ms, uptime ≥ X%, 0 incidentes…)
30
+
31
+ Sin medida cuantificable no es un ASR: es un deseo. Si el PRD no la da, **propón** una razonable y déjala
32
+ marcada para validación en la revisión (fase 5), no bloquees.
33
+
34
+ ## Reglas
35
+
36
+ - **Traza siempre**: cada UC/QA cita las HU/OE/§PRD de las que sale (columna Trazabilidad).
37
+ - **No inventes dominio**: si un atributo no tiene sustento en `docs/`, no lo agregues; si es un hueco
38
+ real (p.ej. el PRD no fija disponibilidad), decláralo como CRN o riesgo, no como QA fabricado.
39
+ - **Documento vivo**: en re-corridas, añade drivers nuevos de HUs/épicas nuevas; no borres los previos.