DOC-02 — Especificación de requisitos
| Campo | Valor |
|---|---|
| Estado | Aprobado |
| Versión | 0.1.0 |
| Producto objetivo | MVP 0.1.0 |
| Última actualización | 2026-10-16 |
1. Convenciones
DEBE, NO DEBE, DEBERÍA y PUEDE expresan obligatoriedad. Los IDs son permanentes.
2. Requisitos funcionales
| ID | Requisito | Verificación |
|---|---|---|
| RF-001 | La CLI DEBE ejecutar sonvik run <request> con environment opcional. |
E2E |
| RF-002 | DEBE aceptar GET, POST, PUT, PATCH, DELETE, HEAD y OPTIONS. | Integración |
| RF-003 | DEBE admitir URL, headers y body.json. |
Integración |
| RF-004 | DEBE rechazar documentos inválidos y campos desconocidos antes de enviar. | Unit/E2E |
| RF-010 | DEBE cargar variables desde un environment YAML opcional. | Unit |
| RF-011 | DEBE resolver placeholders {{nombre}} en valores textuales soportados. |
Unit |
| RF-012 | La precedencia DEBE ser --var > entorno del proceso > archivo. |
Unit |
| RF-013 | Una variable ausente o placeholder inválido DEBE impedir el envío. | Unit/E2E |
| RF-014 | --var DEBE advertirse/documentarse como no apto para secretos. |
Revisión |
| RF-020 | DEBE comparar el status recibido con expect.status. |
Integración |
| RF-021 | DEBE retornar 0 si la assertion pasa y 1 si falla. |
E2E |
| RF-022 | DEBE retornar 2 ante uso, configuración o ejecución inválidos. |
E2E |
| RF-023 | DEBE distinguir visualmente éxito, assertion fallida y error de ejecución. | E2E |
| RF-030 | DEBE aplicar un timeout finito con override explícito. | Integración |
| RF-031 | NO DEBE reintentar automáticamente. | Integración |
| RF-032 | DEBE seguir hasta 5 redirects y rechazar downgrade HTTPS→HTTP. | Integración |
| RF-040 | NO DEBE imprimir headers ni bodies por defecto. | Seguridad |
| RF-041 | DEBE aceptar secretos mediante variables de entorno sin persistirlos. | Seguridad |
| RF-042 | Los errores DEBEN evitar repetir valores resueltos sensibles. | Seguridad |
3. Requisitos no funcionales
| ID | Categoría | Requisito | Verificación |
|---|---|---|---|
| RNF-001 | Portabilidad | Core y CLI DEBEN compilar en macOS, Linux y Windows. | CI |
| RNF-002 | Reproducibilidad | Tests DEBEN funcionar sin red externa. | CI |
| RNF-003 | Formato | Todo documento persistente DEBE declarar version: 1. |
Unit |
| RNF-004 | Mantenibilidad | La lógica DEBE ser utilizable sin depender de la CLI. | Arquitectura/test |
| RNF-005 | Seguridad | Secretos NO DEBEN aparecer en logs, errores o fixtures. | Auditoría/test |
| RNF-006 | Rendimiento | Una ejecución sin contar latencia remota DEBERÍA añadir menos de 100 ms. | Benchmark posterior |
| RNF-007 | Compatibilidad | Cambios incompatibles de schema DEBEN cambiar versión y documentar migración. | Release gate |
| RNF-008 | Distribución | El binario publicado NO DEBE requerir runtime externo. | Smoke test |
4. Reglas de trazabilidad
- Cada caso de uso referencia sus
RF-*. - Cada componente de DOC-04 indica responsabilidades, no duplica requisitos.
- Cada dato persistente aparece en DOC-05.
- Cada milestone de DOC-06 tiene un gate observable.
5. Historial
| Versión | Fecha | Cambio |
|---|---|---|
| 0.1.0 | 2026-10-16 | Primera especificación verificable |