pumuki 6.3.134 → 6.3.135
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,12 +6,19 @@ This project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [6.3.135] - 2026-05-03
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
|
|
13
|
+
- **Bootstrap de pre-push por delta real:** cuando una rama no tiene upstream, el bootstrap de `PRE_PUSH` elige la base con menor delta real entre `main` y `develop`, evitando falsos positivos de atomicidad en branches nacidas de `main`.
|
|
14
|
+
- **Repin desbloqueable:** esta versión corrige el bloqueo que impedía publicar el repin de `Flux_training` aunque el diff efectivo del cambio fuese mínimo.
|
|
15
|
+
|
|
9
16
|
## [6.3.134] - 2026-05-03
|
|
10
17
|
|
|
11
18
|
### Fixed
|
|
12
19
|
|
|
13
20
|
- **Policy hash drift accionable:** `governanceObservationSnapshot`, `governanceNextAction` y el catálogo de remediación ya convierten la divergencia entre stages en una acción estricta y aplicable.
|
|
14
|
-
- **Release
|
|
21
|
+
- **Release publicada y lista para repin:** esta versión ya está en npm y queda lista para repinear consumers activos como RuralGo con el fix real distribuido.
|
|
15
22
|
|
|
16
23
|
## [6.3.133] - 2026-05-03
|
|
17
24
|
|
|
@@ -4,11 +4,16 @@ This file tracks the active deterministic framework line used in this repository
|
|
|
4
4
|
Canonical release chronology lives in `CHANGELOG.md`.
|
|
5
5
|
This file keeps only the operational highlights and rollout notes that matter while running the framework.
|
|
6
6
|
|
|
7
|
+
### 2026-05-03 (v6.3.135)
|
|
8
|
+
|
|
9
|
+
- **Bootstrap de pre-push por delta real:** en ramas sin upstream, `PRE_PUSH` elige la base con menor delta real entre `main` y `develop`, evitando que un rollout nacido de `main` se bloquee como si heredara todo `develop`.
|
|
10
|
+
- **Repin desbloqueable:** esta release corrige el falso positivo que impedía publicar el repin de `Flux_training` aunque el diff efectivo fuese mínimo.
|
|
11
|
+
|
|
7
12
|
### 2026-05-03 (v6.3.134)
|
|
8
13
|
|
|
9
14
|
- **Policy hash drift accionable:** `governanceObservationSnapshot`, `governanceNextAction` y el catálogo de remediación ya convierten la divergencia entre stages en una acción estricta y aplicable.
|
|
10
15
|
- **Repin recomendado:** publicar `pumuki@6.3.134`, repinear RuralGo y revalidar `status`, `doctor`, `audit --stage=PRE_WRITE --json` y hooks gestionados.
|
|
11
|
-
- **Contrato de release estable:** no hace falta cerrar más gaps funcionales para este fix; la solución ya quedó validada localmente y
|
|
16
|
+
- **Contrato de release estable:** no hace falta cerrar más gaps funcionales para este fix; la solución ya quedó validada localmente y la distribución de `6.3.134` ya está publicada.
|
|
12
17
|
|
|
13
18
|
### 2026-05-03 (v6.3.133)
|
|
14
19
|
|
|
@@ -26,6 +26,37 @@ const resolveDefaultCiBaseRef = (): string => {
|
|
|
26
26
|
return 'HEAD';
|
|
27
27
|
};
|
|
28
28
|
|
|
29
|
+
const resolveDiffFileCount = (fromRef: string): number | null => {
|
|
30
|
+
try {
|
|
31
|
+
return runGit(['diff', '--name-only', '--diff-filter=ACMR', `${fromRef}..HEAD`])
|
|
32
|
+
.split('\n')
|
|
33
|
+
.map((line) => line.trim())
|
|
34
|
+
.filter((line) => line.length > 0).length;
|
|
35
|
+
} catch {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
const resolveBestBootstrapBaseRef = (): string | null => {
|
|
41
|
+
const candidates = ['origin/main', 'main', 'origin/develop', 'develop'];
|
|
42
|
+
let best: { ref: string; changedFiles: number } | undefined;
|
|
43
|
+
|
|
44
|
+
for (const candidate of candidates) {
|
|
45
|
+
if (!isResolvableRef(candidate)) {
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
const changedFiles = resolveDiffFileCount(candidate);
|
|
49
|
+
if (changedFiles === null) {
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
if (!best || changedFiles < best.changedFiles) {
|
|
53
|
+
best = { ref: candidate, changedFiles };
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
return best?.ref ?? null;
|
|
58
|
+
};
|
|
59
|
+
|
|
29
60
|
export const resolveUpstreamRef = (): string | null => {
|
|
30
61
|
try {
|
|
31
62
|
return runGit(['rev-parse', '@{u}']);
|
|
@@ -88,12 +119,10 @@ export const resolveCiBaseRef = (): string => {
|
|
|
88
119
|
};
|
|
89
120
|
|
|
90
121
|
export const resolvePrePushBootstrapBaseRef = (): string => {
|
|
91
|
-
const
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
return candidate;
|
|
95
|
-
}
|
|
122
|
+
const best = resolveBestBootstrapBaseRef();
|
|
123
|
+
if (best) {
|
|
124
|
+
return best;
|
|
96
125
|
}
|
|
97
126
|
|
|
98
|
-
return
|
|
127
|
+
return resolveDefaultCiBaseRef();
|
|
99
128
|
};
|
|
@@ -44,14 +44,30 @@ const resolveCiBaseRefInRepo = (repoRoot: string): string => {
|
|
|
44
44
|
};
|
|
45
45
|
|
|
46
46
|
const resolvePrePushBootstrapBaseRefInRepo = (repoRoot: string): string => {
|
|
47
|
-
const candidates = ['origin/
|
|
47
|
+
const candidates = ['origin/main', 'main', 'origin/develop', 'develop'];
|
|
48
|
+
let best: { ref: string; changedFiles: number } | undefined;
|
|
49
|
+
|
|
48
50
|
for (const candidate of candidates) {
|
|
49
|
-
if (runGit(repoRoot, ['rev-parse', '--verify', candidate])) {
|
|
50
|
-
|
|
51
|
+
if (!runGit(repoRoot, ['rev-parse', '--verify', candidate])) {
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
try {
|
|
55
|
+
const changedFiles = runGit(
|
|
56
|
+
repoRoot,
|
|
57
|
+
['diff', '--name-only', '--diff-filter=ACMR', `${candidate}..HEAD`]
|
|
58
|
+
)
|
|
59
|
+
.split('\n')
|
|
60
|
+
.map((line) => line.trim())
|
|
61
|
+
.filter((line) => line.length > 0).length;
|
|
62
|
+
if (!best || changedFiles < best.changedFiles) {
|
|
63
|
+
best = { ref: candidate, changedFiles };
|
|
64
|
+
}
|
|
65
|
+
} catch {
|
|
66
|
+
continue;
|
|
51
67
|
}
|
|
52
68
|
}
|
|
53
69
|
|
|
54
|
-
return
|
|
70
|
+
return best?.ref ?? resolveCiBaseRefInRepo(repoRoot);
|
|
55
71
|
};
|
|
56
72
|
|
|
57
73
|
const shouldAllowBootstrapPrePush = (rawInput: string): boolean => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pumuki",
|
|
3
|
-
"version": "6.3.
|
|
3
|
+
"version": "6.3.135",
|
|
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": {
|