pumuki 6.3.98 → 6.3.99

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,15 @@ This project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [6.3.99] - 2026-04-22
10
+
11
+ ### Fixed
12
+
13
+ - **PRE_WRITE visible y coherente en la línea de producción:** `policyValidationSnapshot` refleja `PRE_WRITE` como estricto cuando el enforcement efectivo está activado en `strict`, evitando contradicción entre policy y runtime.
14
+ - **Arranque agentic sin éxito falso:** `auto_execute_ai_start` devuelve `success=false` cuando el gate bloquea y fuerza remediación explícita antes de continuar.
15
+ - **Contrato MCP actualizado:** la superficie HTTP del enterprise server hereda ese mismo contrato de bloqueo para `auto_execute_ai_start`.
16
+ - **Cobertura de regresión del hotfix:** nuevas regresiones fijan la proyección de `PRE_WRITE` y el comportamiento bloqueante del arranque agentic sobre la línea `main`.
17
+
9
18
  ## [6.3.98] - 2026-04-21
10
19
 
11
20
  ### Fixed
package/VERSION CHANGED
@@ -1 +1 @@
1
- v6.3.98
1
+ v6.3.99
@@ -6,6 +6,11 @@ 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.99)
10
+
11
+ - **Hotfix de coerción temprana:** `PRE_WRITE` deja de parecer advisory cuando realmente está activado en `strict`, y el arranque agentic devuelve fallo real al bloquear.
12
+ - **Rollout recomendado:** publicar `pumuki@6.3.99` y repin inmediato en `RuralGo`, validando `pumuki:status`, `pumuki:doctor`, `pre-commit` y `pre-push` con el fix de `PUMUKI-INC-079`.
13
+
9
14
  ### 2026-04-11 (v6.3.72)
10
15
 
11
16
  - **Tarball npm**: `package.json` → `files` incluye `AGENTS.md`, `CHANGELOG.md` y `docs/tracking/plan-curso-pumuki-stack-my-architecture.md` para lectura canónica vía npm / jsDelivr sin depender solo del repo Git.
@@ -3,6 +3,7 @@ import {
3
3
  resolvePolicyForStage,
4
4
  type ResolvedStagePolicy,
5
5
  } from '../gate/stagePolicies';
6
+ import { resolvePreWriteEnforcement } from '../policy/preWriteEnforcement';
6
7
 
7
8
  export type LifecyclePolicyValidationStageSnapshot = {
8
9
  source: ResolvedStagePolicy['trace']['source'];
@@ -23,8 +24,13 @@ export type LifecyclePolicyValidationSnapshot = {
23
24
  const POLICY_STAGES: ReadonlyArray<SkillsStage> = ['PRE_WRITE', 'PRE_COMMIT', 'PRE_PUSH', 'CI'];
24
25
 
25
26
  const toStageSnapshot = (
27
+ stage: SkillsStage,
26
28
  resolved: ResolvedStagePolicy
27
29
  ): LifecyclePolicyValidationStageSnapshot => {
30
+ const strictFromPolicy = resolved.trace.validation?.strict ?? false;
31
+ const strict = stage === 'PRE_WRITE'
32
+ ? strictFromPolicy || resolvePreWriteEnforcement().blocking
33
+ : strictFromPolicy;
28
34
  return {
29
35
  source: resolved.trace.source,
30
36
  bundle: resolved.trace.bundle,
@@ -34,7 +40,7 @@ const toStageSnapshot = (
34
40
  policySource: resolved.trace.policySource ?? null,
35
41
  validationStatus: resolved.trace.validation?.status ?? null,
36
42
  validationCode: resolved.trace.validation?.code ?? null,
37
- strict: resolved.trace.validation?.strict ?? false,
43
+ strict,
38
44
  };
39
45
  };
40
46
 
@@ -42,7 +48,7 @@ export const readLifecyclePolicyValidationSnapshot = (
42
48
  repoRoot: string
43
49
  ): LifecyclePolicyValidationSnapshot => {
44
50
  const resolvedByStage = Object.fromEntries(
45
- POLICY_STAGES.map((stage) => [stage, toStageSnapshot(resolvePolicyForStage(stage, repoRoot))])
51
+ POLICY_STAGES.map((stage) => [stage, toStageSnapshot(stage, resolvePolicyForStage(stage, repoRoot))])
46
52
  ) as Record<SkillsStage, LifecyclePolicyValidationStageSnapshot>;
47
53
 
48
54
  return {
@@ -207,13 +207,13 @@ export const runEnterpriseAutoExecuteAiStart = (params: {
207
207
  message = `${message} Learning: ${learningContext.recommended_actions[0]}`;
208
208
  instruction = `${instruction} Learning: ${learningContext.recommended_actions[0]}`;
209
209
  }
210
- const force = action === 'ask' && confidencePct < 50;
210
+ const force = action === 'ask';
211
211
 
212
212
  return {
213
213
  tool: 'auto_execute_ai_start',
214
214
  dryRun: true,
215
215
  executed: true,
216
- success: true,
216
+ success: evaluation.allowed,
217
217
  result: {
218
218
  action,
219
219
  phase,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pumuki",
3
- "version": "6.3.98",
3
+ "version": "6.3.99",
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": {