pumuki 6.3.106 → 6.3.108
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.108] - 2026-04-22
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
|
|
13
|
+
- **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.
|
|
14
|
+
- **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.
|
|
15
|
+
- **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`.
|
|
16
|
+
|
|
17
|
+
## [6.3.107] - 2026-04-22
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
|
|
21
|
+
- **Semántica inequívoca para sesión SDD expirada:** una sesión vencida deja de proyectarse como `active=true` y pasa a exponerse como inactiva (`active=false`) manteniendo `valid=false` y `remainingSeconds=0`.
|
|
22
|
+
- **Refresh de sesión expiradas todavía permitido:** `refreshSddSession` ya no exige `active=true`; basta con conservar el `changeId` para poder renovar una sesión caducada sin reabrirla manualmente.
|
|
23
|
+
- **Policy SDD alineada con esa semántica:** `evaluateSddPolicy` trata la sesión como `missing` solo cuando falta `changeId`, y conserva `SDD_SESSION_INVALID` para sesiones expiradas con contexto recuperable.
|
|
24
|
+
|
|
9
25
|
## [6.3.106] - 2026-04-22
|
|
10
26
|
|
|
11
27
|
### Fixed
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
v6.3.
|
|
1
|
+
v6.3.108
|
|
@@ -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.108)
|
|
10
|
+
|
|
11
|
+
- **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.
|
|
12
|
+
- **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`.
|
|
13
|
+
- **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.
|
|
14
|
+
|
|
15
|
+
### 2026-04-22 (v6.3.107)
|
|
16
|
+
|
|
17
|
+
- **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`.
|
|
18
|
+
- **Refresh reproducible de sesiones caducadas:** si el `changeId` sigue siendo válido, `session --refresh` vuelve a servir para recuperar la sesión sin exigir un `session --open` innecesario.
|
|
19
|
+
- **Rollout recomendado:** publicar `pumuki@6.3.107`, repin inmediato en `RuralGo` y revalidar `sdd validate --stage=PRE_WRITE --json` comprobando que `status.session.active=false`, `valid=false` y que la remediación siga permitiendo refresh sobre el mismo `changeId`.
|
|
20
|
+
|
|
9
21
|
### 2026-04-22 (v6.3.106)
|
|
10
22
|
|
|
11
23
|
- **Cierre útil del literal residual en RuralGo:** `sdd validate --stage=PRE_WRITE --json` ya no recomienda activar SDD con `pumuki@latest`; devuelve el mismo runtime versionado que está diagnosticando.
|
|
@@ -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
|
},
|
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
readSddSession,
|
|
13
13
|
refreshSddSession,
|
|
14
14
|
} from './sessionStore';
|
|
15
|
+
import type { ILifecycleGitService } from '../lifecycle/gitService';
|
|
15
16
|
import { resolveDegradedMode } from '../gate/degradedMode';
|
|
16
17
|
import { getCurrentPumukiVersion } from '../lifecycle/packageInfo';
|
|
17
18
|
import { resolveSddCompletenessEnforcement } from '../policy/sddCompletenessEnforcement';
|
|
@@ -78,10 +79,10 @@ const resolveMissingSessionGuidance = (repoRoot: string): {
|
|
|
78
79
|
};
|
|
79
80
|
};
|
|
80
81
|
|
|
81
|
-
const buildStatus = (repoRoot: string): SddStatusPayload => {
|
|
82
|
+
const buildStatus = (repoRoot: string, git?: ILifecycleGitService): SddStatusPayload => {
|
|
82
83
|
const openspec = detectOpenSpecInstallation(repoRoot);
|
|
83
84
|
const compatibility = evaluateOpenSpecCompatibility(openspec);
|
|
84
|
-
const session = readSddSession(repoRoot);
|
|
85
|
+
const session = readSddSession(repoRoot, git);
|
|
85
86
|
return {
|
|
86
87
|
repoRoot,
|
|
87
88
|
openspec: {
|
|
@@ -171,7 +172,7 @@ const evaluateSessionRequirements = (params: {
|
|
|
171
172
|
autoRefreshError?: string;
|
|
172
173
|
}): SddDecision | undefined => {
|
|
173
174
|
const { status } = params;
|
|
174
|
-
if (!status.session.
|
|
175
|
+
if (!status.session.changeId) {
|
|
175
176
|
const guidance = resolveMissingSessionGuidance(status.repoRoot);
|
|
176
177
|
const details: Record<string, string | number | boolean | bigint | symbol | null | Date | object> = {
|
|
177
178
|
command: guidance.command,
|
|
@@ -229,7 +230,6 @@ const shouldAttemptSessionAutoRefresh = (params: {
|
|
|
229
230
|
}): boolean =>
|
|
230
231
|
params.stage !== 'PRE_WRITE'
|
|
231
232
|
&& params.autoRefreshEnabled
|
|
232
|
-
&& params.status.session.active
|
|
233
233
|
&& !!params.status.session.changeId
|
|
234
234
|
&& !params.status.session.valid;
|
|
235
235
|
|
|
@@ -553,5 +553,5 @@ export const evaluateSddPolicy = (params: {
|
|
|
553
553
|
});
|
|
554
554
|
};
|
|
555
555
|
|
|
556
|
-
export const readSddStatus = (repoRoot?: string): SddStatusPayload =>
|
|
557
|
-
buildStatus(repoRoot ?? process.cwd());
|
|
556
|
+
export const readSddStatus = (repoRoot?: string, git?: ILifecycleGitService): SddStatusPayload =>
|
|
557
|
+
buildStatus(repoRoot ?? process.cwd(), git);
|
|
@@ -86,7 +86,7 @@ const readConfig = (
|
|
|
86
86
|
repoRoot: string,
|
|
87
87
|
git: ILifecycleGitService
|
|
88
88
|
): SddSessionState => {
|
|
89
|
-
const
|
|
89
|
+
const rawActive = git.localConfig(repoRoot, SDD_KEYS.active) === 'true';
|
|
90
90
|
const rawChangeId = git.localConfig(repoRoot, SDD_KEYS.change);
|
|
91
91
|
const changeId =
|
|
92
92
|
typeof rawChangeId === 'string' && rawChangeId.trim().length > 0
|
|
@@ -101,6 +101,7 @@ const readConfig = (
|
|
|
101
101
|
: undefined;
|
|
102
102
|
|
|
103
103
|
const validity = computeValidity(expiresAt);
|
|
104
|
+
const active = rawActive && !!changeId && validity.valid;
|
|
104
105
|
return {
|
|
105
106
|
repoRoot,
|
|
106
107
|
active,
|
|
@@ -174,7 +175,7 @@ export const refreshSddSession = (params?: {
|
|
|
174
175
|
const git = params?.git ?? new LifecycleGitService();
|
|
175
176
|
const repoRoot = resolveRepoRoot(params?.cwd ?? process.cwd(), git);
|
|
176
177
|
const current = readConfig(repoRoot, git);
|
|
177
|
-
if (!current.
|
|
178
|
+
if (!current.changeId) {
|
|
178
179
|
throw new Error('No active SDD session to refresh. Run `pumuki sdd session --open --change=<id>` first.');
|
|
179
180
|
}
|
|
180
181
|
const ttlMinutes = parsePositiveMinutes(params?.ttlMinutes ?? current.ttlMinutes);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pumuki",
|
|
3
|
-
"version": "6.3.
|
|
3
|
+
"version": "6.3.108",
|
|
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": {
|