pumuki 6.3.107 → 6.3.109
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/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,22 @@ This project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [6.3.109] - 2026-04-22
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
|
|
13
|
+
- **`install` materializa policy estricta cuando el repo ya puede reconciliarla:** tras una instalación limpia, Pumuki intenta persistir `.pumuki/policy-as-code.json` con `strict=true` por stage en lugar de dejar `status` y `doctor` en `computed-local`.
|
|
14
|
+
- **Convergencia de `status`/`doctor` tras install en consumers reales:** el runtime deja de depender de `PUMUKI_POLICY_STRICT` para que `PRE_COMMIT`, `PRE_PUSH` y `CI` reflejen el mismo contrato estricto que `PRE_WRITE`.
|
|
15
|
+
- **Cobertura de regresión del ciclo de install:** nuevas pruebas fijan que `runLifecycleInstall` materializa el contrato firmado cuando `AGENTS.md` y `skills.lock.json` exponen los insumos mínimos.
|
|
16
|
+
|
|
17
|
+
## [6.3.108] - 2026-04-22
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
|
|
21
|
+
- **MCP enterprise visible por defecto en la línea publicada:** `mcp_enterprise` deja de nacer en `off`, así que el editor/agente puede ver `ai_gate_check`, `pre_flight_check` y `auto_execute_ai_start` sin opt-in adicional.
|
|
22
|
+
- **Enforcement temprano más perceptible para `PRE_WRITE`:** el catálogo enterprise visible por defecto reduce el gap entre `status`/`doctor` bloqueados y la ruta real de trabajo del agente/editor.
|
|
23
|
+
- **Cobertura de regresión de la baseline MCP:** nuevas pruebas fijan el catálogo del enterprise server y la proyección de baseline consumer asociada a `mcp_enterprise`.
|
|
24
|
+
|
|
9
25
|
## [6.3.107] - 2026-04-22
|
|
10
26
|
|
|
11
27
|
### Fixed
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
v6.3.
|
|
1
|
+
v6.3.109
|
|
@@ -6,6 +6,18 @@ This file keeps only the operational highlights and rollout notes that matter wh
|
|
|
6
6
|
|
|
7
7
|
## 2026-04 (CLI stability and macOS notifications)
|
|
8
8
|
|
|
9
|
+
### 2026-04-22 (v6.3.109)
|
|
10
|
+
|
|
11
|
+
- **`install` deja lista la policy estricta real para consumers compatibles:** si el repo ya expone `AGENTS.md` y `skills.lock.json` suficientes, la instalación materializa `.pumuki/policy-as-code.json` con firmas y `strict=true` por stage.
|
|
12
|
+
- **Menos deriva entre `PRE_WRITE` y el resto del lifecycle:** `status` y `doctor` dejan de caer en `computed-local` para `PRE_COMMIT`, `PRE_PUSH` y `CI` después de una instalación limpia.
|
|
13
|
+
- **Rollout recomendado:** publicar `pumuki@6.3.109`, repin inmediato en `RuralGo` y revalidar `status --json` / `doctor --json` comprobando `strict=true` en `PRE_WRITE`, `PRE_COMMIT`, `PRE_PUSH` y `CI`.
|
|
14
|
+
|
|
15
|
+
### 2026-04-22 (v6.3.108)
|
|
16
|
+
|
|
17
|
+
- **MCP enterprise visible desde la baseline publicada:** la línea `main` deja de exigir opt-in adicional para exponer `ai_gate_check`, `pre_flight_check` y `auto_execute_ai_start` en el catálogo enterprise.
|
|
18
|
+
- **Menos gap entre governance y flujo real del editor/agente:** cuando `status`/`doctor` ya están bloqueando, el consumer pasa a ver antes la misma capa MCP que materializa el enforcement perceptible de `PRE_WRITE`.
|
|
19
|
+
- **Rollout recomendado:** publicar `pumuki@6.3.108`, repin inmediato en `RuralGo` y revalidar `status`, `doctor` y el arranque MCP/agentic sobre un repo con `PUMUKI-INC-079` reportada.
|
|
20
|
+
|
|
9
21
|
### 2026-04-22 (v6.3.107)
|
|
10
22
|
|
|
11
23
|
- **Sesión SDD expirada sin semántica ambigua:** la línea publicada deja de diagnosticar sesiones vencidas como `active=true` con `valid=false`; ahora las proyecta como inactivas y mantiene la señal de expiración con `remainingSeconds=0`.
|
|
@@ -13,6 +13,7 @@ import { createEmptyEvaluationMetrics } from '../evidence/evaluationMetrics';
|
|
|
13
13
|
import { readOpenSpecManagedArtifacts, writeLifecycleState } from './state';
|
|
14
14
|
import { ensureRuntimeArtifactsIgnored } from './artifacts';
|
|
15
15
|
import { runLifecycleAdapterInstall } from './adapter';
|
|
16
|
+
import { runPolicyReconcile } from './policyReconcile';
|
|
16
17
|
|
|
17
18
|
export type LifecycleInstallResult = {
|
|
18
19
|
repoRoot: string;
|
|
@@ -77,6 +78,26 @@ const ensureRepoBaselineAdapter = (repoRoot: string): void => {
|
|
|
77
78
|
}
|
|
78
79
|
};
|
|
79
80
|
|
|
81
|
+
const materializeStrictPolicyAsCode = (repoRoot: string): void => {
|
|
82
|
+
try {
|
|
83
|
+
const report = runPolicyReconcile({
|
|
84
|
+
repoRoot,
|
|
85
|
+
strict: true,
|
|
86
|
+
apply: true,
|
|
87
|
+
});
|
|
88
|
+
if (report.summary.status === 'PASS') {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
if (process.env.PUMUKI_VERBOSE_INSTALL === '1') {
|
|
92
|
+
console.debug('[pumuki] strict policy reconcile skipped', report.summary.status);
|
|
93
|
+
}
|
|
94
|
+
} catch (cause: unknown) {
|
|
95
|
+
if (process.env.PUMUKI_VERBOSE_INSTALL === '1') {
|
|
96
|
+
console.debug('[pumuki] strict policy reconcile skipped', cause);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
|
|
80
101
|
export const runLifecycleInstall = (params?: {
|
|
81
102
|
cwd?: string;
|
|
82
103
|
git?: ILifecycleGitService;
|
|
@@ -103,6 +124,7 @@ export const runLifecycleInstall = (params?: {
|
|
|
103
124
|
openSpecManagedArtifacts: priorArtifacts.length > 0 ? priorArtifacts : undefined,
|
|
104
125
|
});
|
|
105
126
|
ensureRepoBaselineAdapter(report.repoRoot);
|
|
127
|
+
materializeStrictPolicyAsCode(report.repoRoot);
|
|
106
128
|
return {
|
|
107
129
|
repoRoot: report.repoRoot,
|
|
108
130
|
version,
|
|
@@ -142,6 +164,7 @@ export const runLifecycleInstall = (params?: {
|
|
|
142
164
|
openSpecManagedArtifacts: Array.from(mergedOpenSpecArtifacts),
|
|
143
165
|
});
|
|
144
166
|
ensureRepoBaselineAdapter(report.repoRoot);
|
|
167
|
+
materializeStrictPolicyAsCode(report.repoRoot);
|
|
145
168
|
|
|
146
169
|
return {
|
|
147
170
|
repoRoot: report.repoRoot,
|
|
@@ -55,7 +55,7 @@ const EXPERIMENTAL_FEATURES: Record<ExperimentalFeatureId, ExperimentalFeatureCo
|
|
|
55
55
|
legacyActivationVariable: null,
|
|
56
56
|
},
|
|
57
57
|
mcp_enterprise: {
|
|
58
|
-
defaultMode: '
|
|
58
|
+
defaultMode: 'strict',
|
|
59
59
|
activationVariable: 'PUMUKI_EXPERIMENTAL_MCP_ENTERPRISE',
|
|
60
60
|
legacyActivationVariable: null,
|
|
61
61
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pumuki",
|
|
3
|
-
"version": "6.3.
|
|
3
|
+
"version": "6.3.109",
|
|
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": {
|