baldart 3.27.0 → 3.27.1
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 +12 -0
- package/VERSION +1 -1
- package/framework/.claude/skills/baldart-update/SKILL.md +22 -3
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,18 @@ All notable changes to BALDART will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [3.27.1] - 2026-05-28
|
|
9
|
+
|
|
10
|
+
Patch follow-up alla v3.27.0 dopo l'incidente reale in `mayo`: l'utente aveva CLI globale v3.24.0 e ha eseguito `/baldart-update` per aggiornarsi a v3.27.0. La skill ha rilanciato `npx baldart update`, che ha aggiornato il framework payload da v3.24 a v3.27, ma `update.js` in esecuzione era il binario v3.24.0 — quello che precede sia il meccanismo di auto-relaunch (introdotto v3.26.0) sia la logica di symlink-indirection (v3.27.0). Risultato: i 6 agent overlay-merged sono stati rigenerati con la **vecchia logica** (file regolari direttamente in `.claude/agents/`), e quindi il fix v3.27.0 NON si è attivato — `npx baldart doctor` ha riportato "tutto healthy" ma in realtà gli agent erano ancora invisibili a Claude Code (bug #20931). Chicken-and-egg: il CLI vecchio non sa rilanciare il nuovo, il nuovo non è ancora in esecuzione.
|
|
11
|
+
|
|
12
|
+
### Fixed — /baldart-update skill: CLI version drift gate
|
|
13
|
+
|
|
14
|
+
- **[framework/.claude/skills/baldart-update/SKILL.md](framework/.claude/skills/baldart-update/SKILL.md)** Step 0: la skill ora rileva esplicitamente il CLI version drift e HALTA pre-update quando il CLI globale è < v3.26.0 (no auto-relaunch) e il payload sta per attraversare il boundary v3.27.0 (migration breaking). Decision logic articolata: se CLI è già >= v3.26.0 lascia che l'auto-relaunch faccia il suo lavoro; altrimenti istruisce `npm i -g baldart@latest` PRIMA di ri-eseguire la skill. Evita il silent-fail dove il CLI vecchio applica una pseudo-migration con codice obsoleto.
|
|
15
|
+
|
|
16
|
+
### Note al curator
|
|
17
|
+
|
|
18
|
+
Questo è un edge case strutturale che si manifesta SOLO quando un consumer attraversa il boundary v3.26.0 / v3.27.0 partendo da un CLI globale precedente alla v3.26.0. I consumer già su CLI v3.26.0+ hanno l'auto-relaunch (`npx baldart@latest`) e non sono affected. Per i consumer pre-v3.26.0 il fix in skill aiuta solo le sessioni future (skill caricata da framework payload >= v3.27.1); chi aveva già la skill vecchia in sessione al momento dell'incidente — come `mayo` ieri — può solo riparare manualmente: `npm i -g baldart@latest` + restart sessione CC + `/baldart-update`.
|
|
19
|
+
|
|
8
20
|
## [3.27.0] - 2026-05-28
|
|
9
21
|
|
|
10
22
|
Fix critico al meccanismo di overlay-merge degli agent. Sintomo riproducibile osservato in `mayo` durante `/new FEAT-0009 -full` (team mode, claude-opus-4-7): gli agent overlay-merged (`coder`, `ui-expert`, `code-reviewer`, `doc-reviewer`, `qa-sentinel`, `security-reviewer` quando hanno un overlay) **non comparivano nella lista "Available agent types"** del Claude Code session reminder. Sequenza concreta: `codebase-architect` (symlink) parte e completa; i 4 background agent (`coder×2` + `ui-expert×2`) lanciati subito dopo falliscono con `InputValidationError: subagent_type not recognized`; l'orchestratore halta con un AskUserQuestion fuori-protocollo. Repro: `ls -la .claude/agents/` mostra 21 symlink + 6 file regolari (i 6 overlay-merged); CC discoverizza i 21 symlink e omette i 6 file regolari. Confermato su sessioni indipendenti del 2026-05-27 e 2026-05-28 → bug strutturale, non transiente. Workflow `/new` in team mode, `/check`, `/qa`, `/codexreview` e skill `prd` erano **bloccati end-to-end** su qualsiasi consumer con overlay agent.
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
3.27.
|
|
1
|
+
3.27.1
|
|
@@ -178,9 +178,28 @@ Match the `Remote:` line in this order (first match wins):
|
|
|
178
178
|
|
|
179
179
|
Always also capture:
|
|
180
180
|
- `Installed:\s+v(\S+)` → `installedVersion` (saved for post-flight assert).
|
|
181
|
-
- `CLI:\s+v\S
|
|
182
|
-
|
|
183
|
-
|
|
181
|
+
- `CLI:\s+v(\S+?)(?:\s+→\s+v(\S+)\s+available)?` → `cliVersion` (current CLI binary)
|
|
182
|
+
+ optional `cliLatest` (newest npm version).
|
|
183
|
+
|
|
184
|
+
**CLI version drift gate (BLOCKING)** — added in v3.27.1 after a real
|
|
185
|
+
incident in `mayo`: a consumer on CLI v3.24.0 ran update against payload
|
|
186
|
+
v3.27.0 and the v3.27.0 symlink-indirection migration silently did NOT
|
|
187
|
+
trigger (the running `update.js` was the v3.24.0 binary, predating both
|
|
188
|
+
auto-relaunch and the migration logic). The CLI v3.26.0+ self-relaunches
|
|
189
|
+
via `npx baldart@latest`, but pre-v3.26.0 binaries do not — chicken-and-egg.
|
|
190
|
+
|
|
191
|
+
Decision logic (apply after parsing):
|
|
192
|
+
|
|
193
|
+
| If… | Then… |
|
|
194
|
+
|---|---|
|
|
195
|
+
| `cliVersion >= 3.26.0` AND `cliLatest` present | Tell once: "Il CLI globale è v<cliVersion>, ne esiste v<cliLatest>. L'update si autorelancerà via `npx baldart@latest` — niente da fare." Continue. |
|
|
196
|
+
| `cliVersion < 3.26.0` AND `installedVersion >= 3.27.0` (already on the new payload but old binary) | **HALT**. Tell the user: "Il CLI globale (v<cliVersion>) è troppo vecchio per applicare la migration symlink-indirection di v3.27.0 (introdotta v3.26.0+ self-relaunch e v3.27.0 symlink-indirection). Lancia `npm i -g baldart@latest` PRIMA di ri-eseguire /baldart-update, altrimenti `update.js` non vedrà la nuova logica e i 6 agent overlay-merged resteranno file regolari invisibili a Claude Code (bug #20931)." Do not launch `npx baldart update`. |
|
|
197
|
+
| `cliVersion < 3.26.0` AND `installedVersion < 3.27.0` AND update is going to bring the payload to `>= 3.27.0` (parse the remoteVersion from Step 0) | **HALT** with the same message — the payload will cross the v3.27.0 boundary during this update, and the running `update.js` will lack the migration logic. |
|
|
198
|
+
| Otherwise | Continue normally. |
|
|
199
|
+
|
|
200
|
+
Semver compare: split on `.`, compare numerically. Treat any non-numeric
|
|
201
|
+
segment (e.g. `3.27.0-rc1`) as "less than" the same major.minor.patch
|
|
202
|
+
without suffix only when strictly required; if unsure, ASK the user.
|
|
184
203
|
|
|
185
204
|
**Decision after parsing**:
|
|
186
205
|
|