Skip to content

Commit da3b112

Browse files
withkynamclaude
andcommitted
Release v3.2.4 — install.sh data-loss fix
Guard process-layout content dirs in the legacyDeletions pass: non-empty reports/ and references/ dirs under process/ are now deferred (preserved) for vc-update to migrate, instead of being rm -rf'd by the deterministic installer. Deprecated harness dirs and dead files are still removed. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
1 parent 2aa58d9 commit da3b112

4 files changed

Lines changed: 31 additions & 2 deletions

File tree

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22

33
All notable changes to vibecode-pro-max-kit are documented in this file.
44

5+
## [3.2.4] - 2026-06-20
6+
7+
### Fixed
8+
9+
- **Data-loss fix in `install.sh`:** the legacyDeletions pass `rm -rf`'d every listed directory unconditionally, including process-layout content dirs (`process/general-plans/reports`, `process/general-plans/references`, and the `_seeds` equivalents). Because `install.sh` is deterministic (no agent) it cannot run the adaptive safe-migration that `vc-update` Part D performs — so on the documented `curl install.sh | bash` upgrade path, a project with real reports/references content under those dirs would have that content **permanently destroyed** before `vc-update` ever ran. `install.sh` now guards process-layout content dirs: any non-empty `reports/` or `references/` directory under `process/` is **deferred** (preserved, not deleted) with a notice to run `vc-update`, which migrates the contents into task folders before removing the now-empty dir. Deprecated harness dirs (e.g. `.claude/skills/vc-*`) and dead files carry no user content and are still removed. Verified against a real v2.4.1 project: 15 real report/reference files preserved, 0 user-content loss, deprecated harness still cleaned up.
10+
511
## [3.2.3] - 2026-06-20
612

713
### Fixed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@
8888
<a href="LICENSE"><img src="https://img.shields.io/github/license/withkynam/vibecode-pro-max-kit" alt="License"></a>
8989
<a href="https://github.com/withkynam/vibecode-pro-max-kit/graphs/contributors"><img src="https://img.shields.io/github/contributors/withkynam/vibecode-pro-max-kit" alt="Contributors"></a>
9090
<a href="https://github.com/withkynam/vibecode-pro-max-kit/actions/workflows/validate.yml"><img src="https://img.shields.io/github/actions/workflow/status/withkynam/vibecode-pro-max-kit/validate.yml" alt="CI"></a>
91-
<a href="CHANGELOG.md"><img src="https://img.shields.io/badge/version-3.2.3-2EA043" alt="Version"></a>
91+
<a href="CHANGELOG.md"><img src="https://img.shields.io/badge/version-3.2.4-2EA043" alt="Version"></a>
9292
<img src="https://img.shields.io/badge/agents-15-orange" alt="Agents">
9393
<img src="https://img.shields.io/badge/skills-33-purple" alt="Skills">
9494
<img src="https://img.shields.io/badge/hooks-10-blue" alt="Hooks">

install.sh

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -339,9 +339,29 @@ done <<< "$SYMLINKS_JSON"
339339
if [ -n "$LEGACY_DELETIONS" ]; then
340340
echo " Removing deprecated paths (legacyDeletions)..."
341341
DELETED_DIRS=()
342+
DEFERRED_LAYOUT=()
342343
while IFS= read -r legacy_path; do
343344
[ -z "$legacy_path" ] && continue
344345
if [ -d "$legacy_path" ]; then
346+
# ── Content-safety guard ──────────────────────────────────────────────
347+
# install.sh is deterministic (no agent) and cannot run the adaptive
348+
# safe-migration that vc-update Part D performs. A process-layout content
349+
# dir (reports/ or references/ under process/) may hold real user files
350+
# (plans, reports, references). NEVER rm -rf such a dir when it is
351+
# non-empty — defer it to vc-update, which migrates the contents into
352+
# task folders BEFORE removing the empty dir. Deprecated harness dirs
353+
# (e.g. .claude/skills/vc-*) carry no user content and are still removed.
354+
base=$(basename "$legacy_path")
355+
case "$legacy_path" in
356+
process/*)
357+
if { [ "$base" = "reports" ] || [ "$base" = "references" ]; } \
358+
&& [ -n "$(find "$legacy_path" -type f -print -quit 2>/dev/null)" ]; then
359+
echo " deferred (has content — vc-update will migrate then remove): $legacy_path"
360+
DEFERRED_LAYOUT+=("$legacy_path")
361+
continue
362+
fi
363+
;;
364+
esac
345365
rm -rf "$legacy_path"
346366
echo " removed dir: $legacy_path"
347367
DELETED_DIRS+=("$legacy_path")
@@ -359,6 +379,9 @@ if [ -n "$LEGACY_DELETIONS" ]; then
359379
[ -d "$parent" ] && rmdir "$parent" 2>/dev/null || true
360380
done
361381
done
382+
if [ "${#DEFERRED_LAYOUT[@]}" -gt 0 ]; then
383+
echo " ${#DEFERRED_LAYOUT[@]} legacy content dir(s) preserved (have files) — run vc-update to migrate them into task folders."
384+
fi
362385
fi
363386

364387
# ══════════════════════════════════════════════════════

vc-manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"version": "3.2.3",
2+
"version": "3.2.4",
33
"include": [
44
".claude/agents/**",
55
".claude/skills/**",

0 commit comments

Comments
 (0)