@tacuchi/agent-workflow-cli 9.3.0 → 10.1.0
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.
- package/dist/application/auto-plan.d.ts +15 -2
- package/dist/application/auto-plan.d.ts.map +1 -1
- package/dist/application/auto-plan.js +70 -9
- package/dist/application/auto-plan.js.map +1 -1
- package/dist/application/host-doctor-service.d.ts +21 -0
- package/dist/application/host-doctor-service.d.ts.map +1 -0
- package/dist/application/host-doctor-service.js +101 -0
- package/dist/application/host-doctor-service.js.map +1 -0
- package/dist/application/project-tab-data.d.ts +4 -13
- package/dist/application/project-tab-data.d.ts.map +1 -1
- package/dist/application/project-tab-data.js +8 -64
- package/dist/application/project-tab-data.js.map +1 -1
- package/dist/application/release-data/sessions.d.ts +2 -0
- package/dist/application/release-data/sessions.d.ts.map +1 -1
- package/dist/application/release-data/sessions.js +4 -1
- package/dist/application/release-data/sessions.js.map +1 -1
- package/dist/application/render/history-row.d.ts.map +1 -1
- package/dist/application/render/history-row.js +3 -0
- package/dist/application/render/history-row.js.map +1 -1
- package/dist/application/session-create-service.d.ts +2 -0
- package/dist/application/session-create-service.d.ts.map +1 -1
- package/dist/application/session-create-service.js +21 -1
- package/dist/application/session-create-service.js.map +1 -1
- package/dist/application/session-resolver.d.ts +8 -0
- package/dist/application/session-resolver.d.ts.map +1 -1
- package/dist/application/session-resolver.js +29 -0
- package/dist/application/session-resolver.js.map +1 -1
- package/dist/application/templates/objetivo.d.ts +1 -1
- package/dist/application/templates/objetivo.d.ts.map +1 -1
- package/dist/application/templates/objetivo.js +13 -1
- package/dist/application/templates/objetivo.js.map +1 -1
- package/dist/cli/commands/auto-plan-decide.d.ts.map +1 -1
- package/dist/cli/commands/auto-plan-decide.js +56 -3
- package/dist/cli/commands/auto-plan-decide.js.map +1 -1
- package/dist/cli/commands/host-doctor.d.ts +3 -0
- package/dist/cli/commands/host-doctor.d.ts.map +1 -0
- package/dist/cli/commands/host-doctor.js +10 -0
- package/dist/cli/commands/host-doctor.js.map +1 -0
- package/dist/cli/commands/session-create.d.ts.map +1 -1
- package/dist/cli/commands/session-create.js +2 -0
- package/dist/cli/commands/session-create.js.map +1 -1
- package/dist/cli/main.js +2 -0
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/tui/app.js +25 -13
- package/dist/cli/tui/app.js.map +1 -1
- package/dist/cli/tui/components/home-footer.d.ts.map +1 -1
- package/dist/cli/tui/components/home-footer.js +1 -0
- package/dist/cli/tui/components/home-footer.js.map +1 -1
- package/dist/cli/tui/data/activity.d.ts +4 -11
- package/dist/cli/tui/data/activity.d.ts.map +1 -1
- package/dist/cli/tui/data/activity.js +21 -70
- package/dist/cli/tui/data/activity.js.map +1 -1
- package/dist/cli/tui/tabs/project-tab.d.ts.map +1 -1
- package/dist/cli/tui/tabs/project-tab.js +32 -34
- package/dist/cli/tui/tabs/project-tab.js.map +1 -1
- package/dist/cli/tui/tabs/status-tab.js +1 -1
- package/dist/cli/tui/tabs/status-tab.js.map +1 -1
- package/package.json +3 -3
- package/skills/agent-workflow/commands/export-scripts.md +36 -19
- package/skills/agent-workflow/commands/patch.md +49 -0
- package/skills/agent-workflow/doctrine/implement/references/rollback-guide.md +5 -3
- package/skills/agent-workflow/doctrine/session/SKILL.md +47 -0
- package/skills/agent-workflow/exports/export-scripts/SKILL.md +97 -76
- package/skills/agent-workflow/exports/export-scripts/references/lexico-tecnico.md +20 -6
- package/skills/agent-workflow/exports/export-scripts/references/manifest-template.md +13 -1
- package/skills/agent-workflow/exports/export-scripts/references/readme-template.md +252 -42
- package/skills/agent-workflow/exports/export-scripts/references/theme-handling.md +45 -72
- package/skills/agent-workflow/exports/export-scripts/references/validations.md +119 -71
- package/skills/agent-workflow/standards/sql-rollback-generator/SKILL.md +77 -62
- package/skills/agent-workflow/standards/sql-rollback-generator/references/release-rollback.md +4 -2
- package/skills/agent-workflow/standards/sql-rollback-generator/references/rollback-patterns.md +5 -3
- package/skills/agent-workflow/standards/sql-script-organizer/SKILL.md +16 -16
- package/skills/agent-workflow/workflows/analyze-workflow/SKILL.md +3 -26
- package/skills/agent-workflow/workflows/design-workflow/SKILL.md +3 -24
- package/skills/agent-workflow/workflows/dev-workflow/SKILL.md +3 -26
|
@@ -1,79 +1,289 @@
|
|
|
1
|
-
# Plantilla — README del bundle export-scripts
|
|
1
|
+
# Plantilla — README del bundle export-scripts (v4.0.0)
|
|
2
2
|
|
|
3
|
-
Plantilla
|
|
3
|
+
Plantilla canónica del `README.md` único del bundle. Reemplaza `manifest.md` + `ORDER.md` legacy desde v4.0.0 (session093). Reemplazar `[entre corchetes]` con valores reales al momento de generar.
|
|
4
|
+
|
|
5
|
+
> **Heredada y consolidada de**: `manifest-template.md` v3.x (informe) + `readme-template.md` v3.x (índice). v4.0.0 unifica ambos en una sola plantilla siguiendo la doctrina "un solo punto de verdad" del usuario.
|
|
4
6
|
|
|
5
7
|
---
|
|
6
8
|
|
|
7
9
|
```markdown
|
|
8
10
|
# Bundle export-scripts NNN — [YYYY-MM-DD]
|
|
9
11
|
|
|
10
|
-
|
|
12
|
+
- **Rama actual:** `[nombre-rama]`
|
|
13
|
+
- **Rama destino:** `certificacion`
|
|
14
|
+
- **Sesiones incluidas:** [N]
|
|
15
|
+
- **Readiness:** [🟢 verde | 🟡 amarillo | 🔴 rojo]
|
|
16
|
+
- **Generado por:** agent-workflow · skill `export-scripts` v4.0.0
|
|
11
17
|
|
|
12
|
-
## Contenido
|
|
18
|
+
## Contenido del bundle (layout v4.0.0)
|
|
13
19
|
|
|
14
|
-
| Archivo | Propósito |
|
|
15
|
-
|
|
16
|
-
| `
|
|
17
|
-
| `
|
|
18
|
-
| `
|
|
19
|
-
| `
|
|
20
|
-
| `
|
|
20
|
+
| Archivo | Propósito | Condicional |
|
|
21
|
+
|---|---|---|
|
|
22
|
+
| `00-ROLLBACK.sql` | Único rollback cross-session — encadenado 04→01 dentro de un `BEGIN; ... COMMIT;` único. Bloque "Fase 5 — Cleanup irreversible" al final fuera de la transacción. | Siempre (si hay sentencias) |
|
|
23
|
+
| `01-DDL-TABLES.sql` | `CREATE TABLE` / `ALTER TABLE` / `CREATE INDEX` / `CREATE SEQUENCE` cross-session. | Skip si categoría vacía |
|
|
24
|
+
| `02-DDL-FUNCTIONS.sql` | `CREATE OR REPLACE FUNCTION` / `PROCEDURE` cross-session. | Skip si categoría vacía |
|
|
25
|
+
| `03-DML.sql` | `UPDATE` / `DELETE` / migración de datos cross-session (con backup en `esq_audit` cuando aplica). | Skip si categoría vacía |
|
|
26
|
+
| `04-INSERTS.sql` | `INSERT` / seed de datos maestros cross-session. | Skip si categoría vacía |
|
|
27
|
+
| `README.md` | Este archivo — único informe + índice + how-to-execute. | Siempre |
|
|
28
|
+
| `_queries/sessionXXX/` | Queries de consulta de soporte por sesión (no ejecución). | Solo si alguna sesión tenía `queries/` |
|
|
29
|
+
| `por-tema/<slug>/` | Capa adicional opt-in con consolidado per-tema (sin rollback duplicado). | Solo si `--themes` activado o `## Temas` declarado |
|
|
21
30
|
|
|
22
|
-
|
|
31
|
+
---
|
|
23
32
|
|
|
24
|
-
|
|
33
|
+
## 1. Resumen ejecutivo
|
|
25
34
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
35
|
+
[1-2 párrafos sintetizando qué entra en este bundle: módulos tocados, tipo de cambios predominantes (features, fixes, migración de datos), y el juicio general de readiness con 1-2 motivos principales.]
|
|
36
|
+
|
|
37
|
+
**Motivos del color de readiness:**
|
|
38
|
+
- [motivo 1]
|
|
39
|
+
- [motivo 2]
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## 2. Sesiones incluidas
|
|
44
|
+
|
|
45
|
+
| # | Sesión | Estado | Fase | Fechas | Resumen | Refs |
|
|
46
|
+
|---|---|---|---|---|---|---|
|
|
47
|
+
| 1 | session001-nombre | closed | 5 | YYYY-MM-DD → YYYY-MM-DD | [resumen 1 línea] | [DEC](../decisiones/001-*.md) |
|
|
48
|
+
| 2 | session002-nombre | ⚠ active | 3 | YYYY-MM-DD → — | [resumen 1 línea] + motivo de apertura | — |
|
|
49
|
+
|
|
50
|
+
**Sesiones abiertas:** destacadas con ⚠. Cada una baja la readiness del bundle. Motivo y próxima acción debe quedar explícito en el resumen.
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## 3. Acciones manuales previas a producción
|
|
31
55
|
|
|
32
|
-
|
|
56
|
+
Checklist ordenado. Marcar cada ítem antes del despliegue.
|
|
33
57
|
|
|
34
|
-
|
|
58
|
+
- [ ] **ACT-001** — [Título corto]
|
|
59
|
+
- **Motivo:** [por qué es necesaria]
|
|
60
|
+
- **Quién:** [rol/persona sugerida]
|
|
61
|
+
- **Detalle:** [qué hacer, con qué entrada/salida esperada]
|
|
35
62
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
63
|
+
- [ ] **ACT-002** — Solicitar API keys de producción
|
|
64
|
+
- **Motivo:** REQUIREMENTS de session003 menciona integración con servicio externo pero no hay claves concretas.
|
|
65
|
+
- **Quién:** Administrador de infraestructura
|
|
66
|
+
- **Detalle:** enviar correo con plantilla en §3.1.
|
|
67
|
+
|
|
68
|
+
### 3.1 Plantillas de correo
|
|
69
|
+
|
|
70
|
+
Copiar, personalizar y enviar manualmente. **Este plugin no envía correos.**
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
Para: [correo-destino]
|
|
74
|
+
CC: [correo-cc]
|
|
75
|
+
Asunto: [Bundle NNN] Solicitud de API keys de producción
|
|
76
|
+
|
|
77
|
+
Buen día,
|
|
78
|
+
|
|
79
|
+
Para el bundle NNN-[nombre] que se despliega el [fecha objetivo] requerimos las siguientes credenciales de producción:
|
|
80
|
+
|
|
81
|
+
- [servicio 1] — URL y token de acceso
|
|
82
|
+
- [servicio 2] — usuario/clave técnica
|
|
83
|
+
|
|
84
|
+
Adjunto el bundle: docs/scripts/NNN-export-scripts-[YYYY-MM-DD]/README.md
|
|
85
|
+
|
|
86
|
+
Quedamos atentos.
|
|
87
|
+
Saludos.
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
---
|
|
39
91
|
|
|
40
|
-
|
|
92
|
+
## 4. Secuencia de ejecución (01 → 04)
|
|
93
|
+
|
|
94
|
+
Orden obligatorio. Categorías vacías se omiten (no aparece el archivo).
|
|
41
95
|
|
|
42
96
|
```bash
|
|
43
|
-
#
|
|
44
|
-
|
|
97
|
+
# 1. DDL de tablas (CREATE/ALTER TABLE, INDEX, SEQUENCE)
|
|
98
|
+
psql -h <host> -U <user> -d <db> -f 01-DDL-TABLES.sql
|
|
99
|
+
|
|
100
|
+
# 2. DDL de funciones (CREATE OR REPLACE FUNCTION/PROCEDURE)
|
|
101
|
+
psql -h <host> -U <user> -d <db> -f 02-DDL-FUNCTIONS.sql
|
|
102
|
+
|
|
103
|
+
# 3. DML / migración (UPDATE, DELETE, backup en esq_audit)
|
|
104
|
+
psql -h <host> -U <user> -d <db> -f 03-DML.sql
|
|
45
105
|
|
|
46
|
-
#
|
|
47
|
-
psql -h <host> -U <user> -d <db> -f
|
|
48
|
-
# ... continuar con 02, 03, 04 ...
|
|
106
|
+
# 4. Inserts / seed maestros
|
|
107
|
+
psql -h <host> -U <user> -d <db> -f 04-INSERTS.sql
|
|
49
108
|
```
|
|
50
109
|
|
|
51
110
|
> **Importante**: este plugin NO ejecuta SQL. El usuario aplica los scripts manualmente.
|
|
52
111
|
|
|
53
|
-
###
|
|
112
|
+
### 4.1 Mapping sesión ↔ tema ↔ scripts
|
|
54
113
|
|
|
55
|
-
|
|
56
|
-
2. Si algo falló: aplicar `rollback-global.sql` en una sola transacción.
|
|
114
|
+
> **Condicional**: incluir esta sub-sección **sólo si** `--themes` activado y `por-tema/` se generó. Si no, omitir entera la 4.1.
|
|
57
115
|
|
|
58
|
-
|
|
116
|
+
| Sesión | Tema | Sentencias (categoría:NNN-stmt) |
|
|
117
|
+
|---|---|---|
|
|
118
|
+
| session001 | `tema-rbac` | 01:001-rol-permiso, 02:001-fn-validacion, 03:001-mig-roles |
|
|
119
|
+
| session002 | `tema-rbac` | 01:001-asignacion-default |
|
|
120
|
+
| session003 | `tema-lista-negra-blanca` | 01:001-listas-table, 04:001-inserts-iniciales |
|
|
59
121
|
|
|
60
|
-
|
|
122
|
+
---
|
|
61
123
|
|
|
62
|
-
|
|
124
|
+
## 5. Rollback (`00-ROLLBACK.sql`)
|
|
63
125
|
|
|
64
|
-
|
|
126
|
+
Un solo archivo cross-session al root del bundle. Orden interno inverso absoluto: última sesión → primera; dentro de cada una 04 → 03 → 02 → 01.
|
|
65
127
|
|
|
66
|
-
|
|
128
|
+
```bash
|
|
129
|
+
# Ejecutar el rollback completo en una sola transacción:
|
|
130
|
+
psql -h <host> -U <user> -d <db> -f 00-ROLLBACK.sql
|
|
131
|
+
```
|
|
67
132
|
|
|
68
|
-
|
|
133
|
+
### 5.1 Operaciones irreversibles
|
|
134
|
+
|
|
135
|
+
**Detectadas en el bundle:**
|
|
136
|
+
|
|
137
|
+
| Sesión origen | Operación | Mitigación disponible |
|
|
138
|
+
|---|---|---|
|
|
139
|
+
| session003 | `DROP COLUMN col_legacy` | Respaldo previo en `esq_audit.tb_bkp_session003` (incluido en `03-DML.sql`) |
|
|
140
|
+
| session005 | `TRUNCATE esq_x.tb_z` | Sin backup automático — pérdida total de datos |
|
|
141
|
+
|
|
142
|
+
Si no hay irreversibles: incluir un placeholder con "Sin operaciones irreversibles en este bundle." (el AI debe reemplazar la tabla por esta frase única).
|
|
143
|
+
|
|
144
|
+
**Bloque "Fase 5" del `00-ROLLBACK.sql`**: las operaciones irreversibles aparecen al final del archivo **fuera de la transacción** principal, con header `-- WARNING: IRREVERSIBLE` y referencia a la DECISION de la sesión origen. El operador decide ejecutar este bloque manualmente.
|
|
145
|
+
|
|
146
|
+
### 5.2 Impacto
|
|
147
|
+
|
|
148
|
+
- **Tablas creadas:** [lista]
|
|
149
|
+
- **Tablas modificadas:** [lista, indicando tipo de ALTER]
|
|
150
|
+
- **Funciones creadas/modificadas:** [lista]
|
|
151
|
+
- **Filas afectadas por migración:** [estimación si hay count en sesiones]
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## 6. Código fuente — hallazgos del escaneo
|
|
156
|
+
|
|
157
|
+
> **Condicional V4.b**: si `--skip-code-scan` fue usado, esta sección contiene **sólo** una nota inline `_(Escaneo omitido por --skip-code-scan)_` y nada más.
|
|
158
|
+
|
|
159
|
+
**Resumen:** [X] críticos · [Y] medios · [Z] bajos
|
|
160
|
+
|
|
161
|
+
### 6.1 Severidad alta (bloqueantes para producción)
|
|
162
|
+
|
|
163
|
+
| # | Patrón | Archivo:línea | Snippet | Recomendación |
|
|
164
|
+
|---|---|---|---|---|
|
|
165
|
+
| H1 | Credencial hardcodeada | `src/.../Config.java:42` | `password = "..."` | Mover a variable de entorno o gestor de secretos. Rotar la credencial si fue commiteada. |
|
|
166
|
+
|
|
167
|
+
Si vacío: incluir un placeholder con "Sin hallazgos de severidad alta." (frase única que reemplaza la tabla).
|
|
168
|
+
|
|
169
|
+
### 6.2 Severidad media
|
|
170
|
+
|
|
171
|
+
| # | Patrón | Archivo:línea | Snippet | Recomendación |
|
|
172
|
+
|---|---|---|---|---|
|
|
173
|
+
| M1 | URL localhost | `src/.../api.service.ts:18` | `http://localhost:8080` | Reemplazar por `environment.apiUrl` u otro mecanismo de configuración. |
|
|
174
|
+
|
|
175
|
+
### 6.3 Severidad baja
|
|
176
|
+
|
|
177
|
+
Agrupados por patrón, con conteo.
|
|
178
|
+
|
|
179
|
+
| Patrón | Conteo | Ejemplos |
|
|
180
|
+
|---|---|---|
|
|
181
|
+
| `TODO` | 7 | `UserService.java:88`, `OrderService.java:42`, ... |
|
|
182
|
+
| `FIXME` | 2 | `validator.ts:15`, `payment.ts:103` |
|
|
183
|
+
|
|
184
|
+
### 6.4 Alcance del escaneo
|
|
185
|
+
|
|
186
|
+
- **Directorios incluidos:** [lista]
|
|
187
|
+
- **Directorios excluidos:** `node_modules/`, `target/`, `dist/`, `build/`, `.workflow/`, `docs/`, `tests/`, `test/`, `.git/`
|
|
188
|
+
- **Extensiones:** [lista]
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## 7. Git y ramas
|
|
193
|
+
|
|
194
|
+
- **Rama actual:** `[nombre]`
|
|
195
|
+
- **Rama destino:** `certificacion`
|
|
196
|
+
- **Commits pendientes de merge (rama actual → certificacion):** [N]
|
|
197
|
+
|
|
198
|
+
### 7.1 Commits pendientes
|
|
69
199
|
|
|
70
200
|
```
|
|
71
|
-
|
|
201
|
+
[sha corto] [mensaje]
|
|
202
|
+
[sha corto] [mensaje]
|
|
72
203
|
```
|
|
73
204
|
|
|
74
|
-
|
|
205
|
+
### 7.2 Archivos modificados (git diff --stat)
|
|
75
206
|
|
|
76
|
-
|
|
207
|
+
```
|
|
208
|
+
[salida de git diff certificacion --stat]
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
### 7.3 Cambios sin commitear
|
|
212
|
+
|
|
213
|
+
Si `git status` muestra archivos modificados/untracked:
|
|
214
|
+
|
|
215
|
+
```
|
|
216
|
+
[salida de git status --porcelain]
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
**Acción recomendada:** el usuario decide si esos cambios entran al bundle (commit) o no (stash/descartar).
|
|
220
|
+
|
|
221
|
+
### 7.4 PR sugerido (texto — no se crea)
|
|
222
|
+
|
|
223
|
+
```
|
|
224
|
+
Título: [feat/fix/chore]: [resumen del bundle]
|
|
225
|
+
Rama origen: [rama actual]
|
|
226
|
+
Rama destino: certificacion
|
|
227
|
+
Descripción:
|
|
228
|
+
- Bundle NNN consolidando las siguientes sesiones:
|
|
229
|
+
- session001 — [título]
|
|
230
|
+
- session002 — [título]
|
|
231
|
+
- Bundle completo: docs/scripts/NNN-export-scripts-[YYYY-MM-DD]/
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
## 8. Documentación graduada
|
|
237
|
+
|
|
238
|
+
| Sesión | Decisiones | Manuales | Especificaciones | Conclusiones |
|
|
239
|
+
|---|---|---|---|---|
|
|
240
|
+
| session001 | `001-*.md`, `002-*.md` | — | — | — |
|
|
241
|
+
| session002 | — | `003-*.md` | — | — |
|
|
242
|
+
| session003 | `004-*.md` | — | `001-*/` | — |
|
|
243
|
+
|
|
244
|
+
Nota: el modelo nuevo gradua 6 kinds (`decision`, `manual`, `script`, `especificacion`, `conclusion`, `release`). Este README enlaza los 4 primeros; `release` queda implícito en este mismo dossier; `script` queda implícito en los archivos `0X-*.sql` del root.
|
|
245
|
+
|
|
246
|
+
---
|
|
247
|
+
|
|
248
|
+
## 9. Checklist final de producción
|
|
249
|
+
|
|
250
|
+
Lista única consolidada. Todos los ítems deben marcarse antes del "go":
|
|
251
|
+
|
|
252
|
+
- [ ] **BD:** respaldo completo del esquema afectado tomado y verificado
|
|
253
|
+
- [ ] **BD:** scripts ejecutados en orden (`01-DDL-TABLES.sql` → `02-DDL-FUNCTIONS.sql` → `03-DML.sql` → `04-INSERTS.sql`)
|
|
254
|
+
- [ ] **BD:** `00-ROLLBACK.sql` probado en staging/certificación
|
|
255
|
+
- [ ] **Infra:** variables de entorno actualizadas (ver §3)
|
|
256
|
+
- [ ] **Infra:** API keys de producción solicitadas y configuradas
|
|
257
|
+
- [ ] **Código:** hallazgos de severidad alta resueltos (§6.1)
|
|
258
|
+
- [ ] **Git:** rama mergeada a `certificacion` (o PR aprobado)
|
|
259
|
+
- [ ] **Git:** tag/release creado en el repositorio
|
|
260
|
+
- [ ] **Stakeholders:** notificación enviada antes y después del despliegue
|
|
261
|
+
- [ ] **Acciones manuales:** todos los ACT-XXX de §3 completados
|
|
262
|
+
|
|
263
|
+
### 9.1 Advertencias
|
|
264
|
+
|
|
265
|
+
Cosas que el skill detectó pero no pudo validar automáticamente. Leer antes de marcar el checklist como completo.
|
|
266
|
+
|
|
267
|
+
Si no hay advertencias: incluir un placeholder con "Sin advertencias pendientes." (frase única).
|
|
268
|
+
|
|
269
|
+
---
|
|
270
|
+
|
|
271
|
+
## 10. Metadata
|
|
272
|
+
|
|
273
|
+
- **Generado:** YYYY-MM-DD HH:MM
|
|
274
|
+
- **Versión del skill:** export-scripts v4.0.0 (layout plano cross-session)
|
|
275
|
+
- **Sub-skill rollback:** sql-rollback-generator v2.0.0
|
|
276
|
+
- **Argumentos usados:** `[sin argumentos | --sessions NNN[,NNN] | --since sessionNNN | --themes slug1,slug2 | --dry-run | --skip-code-scan]`
|
|
277
|
+
- **Comando original:** `/agent-workflow:export-scripts [args]`
|
|
278
|
+
- **Reemplaza:** `/agent-workflow:release` v2.0.0 + `/agent-workflow:release-scripts` v2.0.0 (ambos en deprecation Fase 1 desde plugin v2.8.0)
|
|
279
|
+
|
|
280
|
+
## Re-generación
|
|
281
|
+
|
|
282
|
+
Para regenerar este bundle:
|
|
283
|
+
|
|
284
|
+
```
|
|
285
|
+
/agent-workflow:export-scripts [--sessions NNN[,NNN]] [--since sessionNNN] [--themes slug1,slug2]
|
|
286
|
+
```
|
|
77
287
|
|
|
78
|
-
|
|
288
|
+
Cada invocación toma siguiente NNN. NO sobrescribe bundles previos. Bundles generados con export-scripts v3.x (layout `por-sesion/` + `manifest.md` + `ORDER.md` + `rollback-global.sql`) quedan como histórico y no se migran.
|
|
79
289
|
```
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
# Theme handling — detección + consolidación
|
|
1
|
+
# Theme handling — detección + consolidación per-tema (v4.0.0)
|
|
2
2
|
|
|
3
|
-
> **Port adaptado** de `release-scripts/references/theme-detection.md` + `release-scripts/references/order-generation.md` (ambos v2.0.0). DEC-004 de session061: contenido equivalente, paths actualizados al
|
|
3
|
+
> **Port adaptado** de `release-scripts/references/theme-detection.md` + `release-scripts/references/order-generation.md` (ambos v2.0.0). DEC-004 de session061: contenido equivalente, paths actualizados al layout plano de export-scripts v4.0.0. **session093**: la capa `por-tema/` ya NO duplica el rollback y NO emite `ORDER.md` separado — el rollback canónico es `00-ROLLBACK.sql` único al root, y la secuencia de ejecución vive en §4 del `README.md`.
|
|
4
4
|
|
|
5
|
-
## Activación de la
|
|
5
|
+
## Activación de la capa `por-tema/`
|
|
6
6
|
|
|
7
|
-
`por-tema/`
|
|
7
|
+
`por-tema/` es **capa adicional opt-in encima del root plano** — NO reemplaza los archivos `0X-*.sql` consolidados cross-session al root. Se genera **sólo** si se cumple **alguna** de estas condiciones:
|
|
8
8
|
|
|
9
9
|
1. `--themes slug1,slug2` declarado explícitamente.
|
|
10
10
|
2. Al menos una de las sesiones incluidas tiene sección `## Temas` en su `OBJECTIVE.md` (o `OBJETIVO.md` legacy).
|
|
11
11
|
3. `--themes infer` declarado (inferencia LLM con confirmación).
|
|
12
12
|
|
|
13
|
-
Si **ninguna** se cumple: el output dir contiene
|
|
13
|
+
Si **ninguna** se cumple: el output dir contiene sólo `00-ROLLBACK.sql` + `0X-*.sql` (categorías con contenido) + `README.md` al root. No se crea sub-carpeta `por-tema/` vacía.
|
|
14
14
|
|
|
15
15
|
## Formato de `## Temas` en OBJECTIVE
|
|
16
16
|
|
|
@@ -37,12 +37,12 @@ Para cada sesión incluida, leer `OBJECTIVE.md` (fallback bilingual a `OBJETIVO.
|
|
|
37
37
|
|
|
38
38
|
Para cada sesión sin `## Temas`:
|
|
39
39
|
|
|
40
|
-
1. Leer OBJECTIVE +
|
|
40
|
+
1. Leer OBJECTIVE + sentencias del `SCRIPTS.sql` (con sus markers `@objeto`).
|
|
41
41
|
2. Inferir temas candidatos (3-5 max) con confidence score 0-1.
|
|
42
42
|
3. Proponer al usuario:
|
|
43
43
|
```
|
|
44
44
|
Sesión session057:
|
|
45
|
-
- Tema candidato: `export-report` (confidence 0.92,
|
|
45
|
+
- Tema candidato: `export-report` (confidence 0.92, sentencias: ...)
|
|
46
46
|
- Tema candidato: `lifecycle-extension` (confidence 0.45)
|
|
47
47
|
- ¿Aceptar / editar / declarar uno propio?
|
|
48
48
|
```
|
|
@@ -52,112 +52,85 @@ Para cada sesión sin `## Temas`:
|
|
|
52
52
|
|
|
53
53
|
### Paso C — Filtro `--themes`
|
|
54
54
|
|
|
55
|
-
Si `--themes slug1,slug2` declarado: restringir el output `por-tema/` a esos slugs.
|
|
55
|
+
Si `--themes slug1,slug2` declarado: restringir el output `por-tema/` a esos slugs. Sentencias cuyo tema no entre en el filtro **siguen apareciendo en los archivos `0X-*.sql` del root** (la consolidación cross-session es independiente del filtro de temas) pero no se replican en `por-tema/`.
|
|
56
56
|
|
|
57
|
-
## Asignación de cada
|
|
57
|
+
## Asignación de cada sentencia a su tema
|
|
58
58
|
|
|
59
|
-
Por cada
|
|
59
|
+
Por cada sentencia forward parseada del `SCRIPTS.sql` (markers `@category` + `@stmt`):
|
|
60
60
|
|
|
61
|
-
1. **Header declarativo**: leer
|
|
62
|
-
2. **Por nombre**: matchear contra patrones del tema (substring del slug en el
|
|
63
|
-
3. **Por contenido**: leer el
|
|
64
|
-
4. **Fallback**: si nada matchea, asignar a `tema-general/` con warning en el
|
|
61
|
+
1. **Header declarativo**: leer marker `-- Temas: slug1, slug2` si está presente. Si sí: usar esos slugs.
|
|
62
|
+
2. **Por nombre del stmt**: matchear contra patrones del tema (substring del slug en el nombre `@stmt`, ej. `rbac-rol-permiso` → `rbac`).
|
|
63
|
+
3. **Por contenido**: leer el cuerpo de la sentencia y aplicar heurística (qué tabla/función toca, qué módulo de negocio).
|
|
64
|
+
4. **Fallback**: si nada matchea, asignar a `tema-general/` con warning en el `README.md` §1.
|
|
65
65
|
|
|
66
66
|
### Multi-tema
|
|
67
67
|
|
|
68
|
-
Si
|
|
68
|
+
Si una sentencia aplica a 2+ temas: copia al primer tema declarado y crea `.link.md` en los demás referenciando el canónico:
|
|
69
69
|
|
|
70
70
|
```markdown
|
|
71
|
-
# Link —
|
|
71
|
+
# Link — sentencia multi-tema
|
|
72
72
|
|
|
73
|
-
|
|
73
|
+
Esta sentencia aplica al tema `[secundario]` pero su versión canónica vive en:
|
|
74
74
|
|
|
75
|
-
- `por-tema/tema-[primario]/03-
|
|
75
|
+
- `por-tema/tema-[primario]/03-DML.sql` (sección [N], sentencia `[stmt-original]`)
|
|
76
76
|
|
|
77
|
-
Razón: el
|
|
77
|
+
Razón: el marker `-- Temas:` lista temas múltiples, y por convención el primero es el canónico.
|
|
78
78
|
```
|
|
79
79
|
|
|
80
80
|
## Consolidación por categoría dentro de cada tema
|
|
81
81
|
|
|
82
82
|
Para cada tema y cada categoría (01..04):
|
|
83
83
|
|
|
84
|
-
1. Ordenar
|
|
85
|
-
2.
|
|
86
|
-
3. Concatenar con separadores `[i/N]` + nombre + ruta canónica.
|
|
84
|
+
1. Ordenar sentencias fuente por orden cronológico (cross-session por sNNN → orden de aparición en SCRIPTS.sql).
|
|
85
|
+
2. Para cada sentencia, extraer cuerpo eliminando `BEGIN;` inicial y `COMMIT;` final.
|
|
86
|
+
3. Concatenar con separadores `[i/N]` + nombre `@stmt` + ruta canónica al `SCRIPTS.sql` original.
|
|
87
87
|
4. Envolver todo en un único `BEGIN; … COMMIT;`.
|
|
88
|
-
5. Escribir `por-tema/tema-<slug>/<categoria>.sql`.
|
|
89
|
-
6.
|
|
88
|
+
5. Escribir `por-tema/tema-<slug>/<categoria>.sql` con nombres UPPERCASE EN canon: `01-DDL-TABLES.sql`, `02-DDL-FUNCTIONS.sql`, `03-DML.sql`, `04-INSERTS.sql`.
|
|
89
|
+
6. **NO se genera** `<tema>/rollback*` ni `<tema>/00-ROLLBACK.sql`. El rollback canónico es `<bundle-root>/00-ROLLBACK.sql` único — un solo punto de verdad para reversa.
|
|
90
90
|
|
|
91
91
|
### Header del consolidado
|
|
92
92
|
|
|
93
93
|
**Uno solo** al inicio del archivo, con el formato canónico de 4 líneas definido en `sql-script-organizer/SKILL.md#header-canónico`:
|
|
94
94
|
|
|
95
95
|
```
|
|
96
|
-
--
|
|
97
|
-
--
|
|
98
|
-
--
|
|
96
|
+
-- ============================================================================
|
|
97
|
+
-- Script: tema-rbac/03-DML.sql
|
|
98
|
+
-- Sesion: s057, s058, s063
|
|
99
|
+
-- Objeto: migración de roles y asignaciones RBAC
|
|
99
100
|
-- Alcance: tablas tb_rol, tb_permiso_rol, tb_rol_usuario
|
|
101
|
+
-- ============================================================================
|
|
100
102
|
```
|
|
101
103
|
|
|
102
|
-
**No copiar** los headers de
|
|
104
|
+
**No copiar** los headers individuales de cada sentencia — su origen queda registrado en los separadores `[i/N]` del cuerpo y en `README.md` §4.1 (mapping cuando `por-tema/` activo).
|
|
103
105
|
|
|
104
106
|
### `--keep-parts`
|
|
105
107
|
|
|
106
|
-
Si el flag está activo: preservar `por-tema/<slug>/parts/<categoria>/*.sql` con
|
|
108
|
+
Si el flag está activo: preservar `por-tema/<slug>/parts/<categoria>/*.sql` con sentencias individuales (no consolidadas). Permite ejecutar una por vez para debugging.
|
|
107
109
|
|
|
108
|
-
## Rollback
|
|
110
|
+
## Rollback con temas activos
|
|
109
111
|
|
|
110
|
-
|
|
112
|
+
Sigue siendo **único**: `<bundle-root>/00-ROLLBACK.sql` cubre todas las sentencias del corpus, indistinto del tema. Cuando `por-tema/` está activo, el `README.md` §5 incluye una nota explícita:
|
|
111
113
|
|
|
112
|
-
|
|
114
|
+
> El `00-ROLLBACK.sql` revierte todos los temas. NO ejecutar rollbacks parciales por tema — dejaría el estado de BD inconsistente cuando los temas comparten objetos (tablas, funciones, foreign keys).
|
|
113
115
|
|
|
114
|
-
|
|
116
|
+
Algoritmo de generación del `00-ROLLBACK.sql` en `sql-rollback-generator/SKILL.md` v2.0.0.
|
|
115
117
|
|
|
116
|
-
|
|
118
|
+
## Secuencia de ejecución cuando `por-tema/` está activo
|
|
117
119
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
## `ORDER.md` cross-tema
|
|
121
|
-
|
|
122
|
-
Cuando hay `por-tema/`: el `ORDER.md` top-level del bundle intercala scripts por **fase** (no por tema):
|
|
120
|
+
§4 del `README.md` incluye una variante "Por tema (opcional)" además del orden canónico al root. Ejemplo:
|
|
123
121
|
|
|
124
122
|
```markdown
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
psql -f por-tema/tema-rbac/01-ddl-tablas.sql
|
|
128
|
-
psql -f por-tema/tema-lista-negra-blanca/01-ddl-tablas.sql
|
|
129
|
-
psql -f por-tema/tema-auditoria/01-ddl-tablas.sql
|
|
130
|
-
|
|
131
|
-
## Fase 2 — DDL funciones
|
|
132
|
-
|
|
133
|
-
psql -f por-tema/tema-rbac/02-ddl-funciones.sql
|
|
134
|
-
...
|
|
135
|
-
|
|
136
|
-
## Fase 3 — Migración
|
|
137
|
-
|
|
138
|
-
...
|
|
139
|
-
|
|
140
|
-
## Fase 4 — Inserts iniciales
|
|
123
|
+
### 4.2 Ejecución per-tema (opcional, requiere --themes)
|
|
141
124
|
|
|
142
|
-
|
|
125
|
+
Útil cuando un solo tema necesita validarse aisladamente en staging antes del despliegue completo. **Importante**: si se ejecuta un tema parcial, el rollback canónico (`00-ROLLBACK.sql`) sigue cubriendo todo el bundle — no hay rollback per-tema.
|
|
143
126
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
127
|
+
```bash
|
|
128
|
+
# Tema rbac:
|
|
129
|
+
psql -f por-tema/tema-rbac/01-DDL-TABLES.sql
|
|
130
|
+
psql -f por-tema/tema-rbac/02-DDL-FUNCTIONS.sql
|
|
131
|
+
psql -f por-tema/tema-rbac/03-DML.sql
|
|
132
|
+
psql -f por-tema/tema-rbac/04-INSERTS.sql
|
|
147
133
|
```
|
|
148
|
-
|
|
149
|
-
Cuando **no** hay `por-tema/`: el `ORDER.md` lista scripts por sesión cronológica, dentro de cada una 01→04:
|
|
150
|
-
|
|
151
|
-
```markdown
|
|
152
|
-
## Sesión session057-export-func
|
|
153
|
-
|
|
154
|
-
psql -f por-sesion/session057-export-func/01-ddl-tablas/001-...sql
|
|
155
|
-
psql -f por-sesion/session057-export-func/02-ddl-funciones/001-...sql
|
|
156
|
-
...
|
|
157
|
-
|
|
158
|
-
## Sesión session058-export-arq
|
|
159
|
-
|
|
160
|
-
...
|
|
161
134
|
```
|
|
162
135
|
|
|
163
136
|
## Idempotencia
|