pumuki 6.3.42 → 6.3.43

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.
@@ -5,6 +5,19 @@ Detailed commit history remains available through Git history (`git log` / `git
5
5
 
6
6
  ## 2026-03 (enterprise hardening updates)
7
7
 
8
+ ### 2026-03-05 (v6.3.43)
9
+
10
+ - `pumuki sdd evidence` alinea su salida con el contrato TDD/BDD del gate:
11
+ - `version: "1"` (antes `1.0`),
12
+ - `slices[]` generado por defecto con estructura `red/green/refactor`.
13
+ - Compatibilidad de transición mantenida:
14
+ - el artefacto conserva campos legacy (`scenario_id`, `test_run`, `ai_evidence`) para flujos existentes,
15
+ - `pumuki sdd state-sync` acepta source evidence `version=1` y `version=1.0`.
16
+ - Evidencia de validación:
17
+ - `npx --yes tsx@4.21.0 --test integrations/sdd/__tests__/evidenceScaffold.test.ts integrations/sdd/__tests__/stateSync.test.ts integrations/lifecycle/__tests__/cli.test.ts` (`47 pass / 0 fail`)
18
+ - `npm run -s typecheck` (`PASS`)
19
+ - smoke real en Flux con CLI local: `pumuki sdd evidence ... --json` -> artefacto `version: "1"` con `slices[]`.
20
+
8
21
  ### 2026-03-05 (v6.3.42)
9
22
 
10
23
  - Modal flotante de bloqueo (macOS) ajustado para legibilidad real:
@@ -1851,9 +1851,26 @@
1851
1851
  - longitud de remediación ampliada (`max 220`) para preservar pasos útiles sin recorte agresivo.
1852
1852
  - validación manual de modales de prueba (corto/medio/largo/extremo) en helper Swift flotante con rendering consistente y sin regresión de acciones (`Desactivar`, `Silenciar 30 min`, `Mantener activas`).
1853
1853
 
1854
- - 🚧 PUMUKI-149: Preparar corte release del bloque UX-notificaciones y ejecutar upgrade/smoke en consumidores (`SAAS`, `RuralGo`, `Flux_training`).
1854
+ - PUMUKI-149: Preparar corte release del bloque UX-notificaciones y ejecutar upgrade/smoke en consumidores (`SAAS`, `RuralGo`, `Flux_training`).
1855
1855
  - Alcance:
1856
1856
  - cerrar changelog/release notes del bloque `PUMUKI-145..148`,
1857
1857
  - publicar versión npm con trazabilidad,
1858
1858
  - ejecutar `install/update` + smoke mínimo en los tres repos consumidores,
1859
1859
  - actualizar estado final en MDs externos por leyenda.
1860
+ - Resultado (2026-03-05):
1861
+ - publicación npm completada: `pumuki@6.3.42`.
1862
+ - upgrade aplicado con `pumuki install` en:
1863
+ - `SAAS:APP_SUPERMERCADOS` (`lifecycle_version=6.3.42`)
1864
+ - `R_GO` (`lifecycle_version=6.3.42`)
1865
+ - `Flux_training` (`lifecycle_version=6.3.42`)
1866
+ - smoke de salud post-upgrade en 3/3 consumidores:
1867
+ - `doctor_issues=0`
1868
+ - `openspec_compatible=true`
1869
+ - `session_active=true`
1870
+
1871
+ - 🚧 PUMUKI-150: Ejecutar siguiente pendiente real en backlog externo (Flux `PUM-005`) y cerrar incidencia de `pumuki sdd evidence` con contrato v1 compatible con gate TDD.
1872
+ - Alcance:
1873
+ - reproducir `PUM-005` con evidencia local controlada,
1874
+ - aplicar fix mínimo en core (`sdd evidence` -> `version=\"1\"` + `slices[]`),
1875
+ - validar RED->GREEN con smoke en `Flux_training`,
1876
+ - actualizar leyenda en `docs/BUGS_Y_MEJORAS_PUMUKI.md` (Flux) sin tocar código del consumer.
@@ -22,8 +22,29 @@ export type SddEvidenceScaffoldResult = {
22
22
  digest: string;
23
23
  };
24
24
  artifact: {
25
- version: '1.0';
25
+ version: '1';
26
26
  generated_at: string;
27
+ slices: Array<{
28
+ id: string;
29
+ scenario_ref: string;
30
+ red: {
31
+ status: 'failed';
32
+ timestamp: string;
33
+ };
34
+ green: {
35
+ status: SddEvidenceScaffoldTestStatus;
36
+ timestamp: string;
37
+ };
38
+ refactor: {
39
+ status: SddEvidenceScaffoldTestStatus;
40
+ timestamp: string;
41
+ };
42
+ }>;
43
+ metadata: {
44
+ source: 'pumuki-sdd-evidence';
45
+ stack: 'sdd-evidence-scaffold';
46
+ };
47
+ // Legacy fields kept for state-sync compatibility in existing consumers.
27
48
  scenario_id: string;
28
49
  test_run: {
29
50
  command: string;
@@ -108,6 +129,14 @@ const ensureValidEvidence = (params: {
108
129
  );
109
130
  };
110
131
 
132
+ const resolveScenarioReference = (scenarioId: string): string => {
133
+ const normalized = scenarioId.trim();
134
+ if (normalized.includes('.feature')) {
135
+ return normalized;
136
+ }
137
+ return `${normalized}.feature`;
138
+ };
139
+
111
140
  export const runSddEvidenceScaffold = (params?: {
112
141
  repoRoot?: string;
113
142
  dryRun?: boolean;
@@ -175,8 +204,30 @@ export const runSddEvidenceScaffold = (params?: {
175
204
  const outputRelativePath = relative(repoRoot, outputAbsolutePath).split('\\').join('/');
176
205
 
177
206
  const artifact: SddEvidenceScaffoldResult['artifact'] = {
178
- version: '1.0',
207
+ version: '1',
179
208
  generated_at: generatedAt,
209
+ slices: [
210
+ {
211
+ id: scenarioId,
212
+ scenario_ref: resolveScenarioReference(scenarioId),
213
+ red: {
214
+ status: 'failed',
215
+ timestamp: generatedAt,
216
+ },
217
+ green: {
218
+ status: testStatus,
219
+ timestamp: generatedAt,
220
+ },
221
+ refactor: {
222
+ status: testStatus,
223
+ timestamp: generatedAt,
224
+ },
225
+ },
226
+ ],
227
+ metadata: {
228
+ source: 'pumuki-sdd-evidence',
229
+ stack: 'sdd-evidence-scaffold',
230
+ },
180
231
  scenario_id: scenarioId,
181
232
  test_run: {
182
233
  command: testCommand,
@@ -6,7 +6,7 @@ export type SddStateSyncStatus = 'todo' | 'in_progress' | 'blocked' | 'done';
6
6
  export type SddStateSyncTestStatus = 'passed' | 'failed';
7
7
 
8
8
  type ScenarioEvidenceArtifact = {
9
- version: '1.0';
9
+ version: '1.0' | '1';
10
10
  generated_at?: string;
11
11
  scenario_id: string;
12
12
  test_run: {
@@ -135,9 +135,9 @@ const readScenarioEvidenceArtifact = (path: string): {
135
135
  throw new Error(`[pumuki][sdd] state-sync source evidence has invalid structure: ${path}`);
136
136
  }
137
137
  const candidate = parsed as Partial<ScenarioEvidenceArtifact>;
138
- if (candidate.version !== '1.0') {
138
+ if (candidate.version !== '1.0' && candidate.version !== '1') {
139
139
  throw new Error(
140
- `[pumuki][sdd] state-sync source evidence version must be 1.0. Found: ${String(candidate.version ?? 'unknown')}`
140
+ `[pumuki][sdd] state-sync source evidence version must be 1 or 1.0. Found: ${String(candidate.version ?? 'unknown')}`
141
141
  );
142
142
  }
143
143
  const scenarioId = normalizeRequired(String(candidate.scenario_id ?? ''), 'scenario_id');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pumuki",
3
- "version": "6.3.42",
3
+ "version": "6.3.43",
4
4
  "description": "Enterprise-grade AST Intelligence System with multi-platform support (iOS, Android, Backend, Frontend) and Feature-First + DDD + Clean Architecture enforcement. Includes dynamic violations API for intelligent querying.",
5
5
  "main": "index.js",
6
6
  "bin": {