diff --git a/Makefile b/Makefile
index 283e833..873dd8b 100644
--- a/Makefile
+++ b/Makefile
@@ -938,23 +938,29 @@ cold-pack-all: bootstrap ## parallel cold-pack, RAM-aware (override with COLD_PA
@echo ">> all shards packed; final bucket state:"
@$(ARBORIST) cold stats
-cold-hydrate: bootstrap ## genesis a fresh peer from cloud, M-aware: pull every metadata pack from bucket in parallel and route into HYDRATE_DIR/00N.db × HYDRATE_M
+cold-hydrate: bootstrap ## genesis a fresh peer from cloud, M-aware: pull every metadata pack and route into HYDRATE_DIR/00N.db × HYDRATE_M. HYDRATE_MODE=full (default) | just-enough
@if [ -z "$(HYDRATE_DIR)" ]; then echo "HYDRATE_DIR=
required"; exit 2; fi
@if [ -z "$(HYDRATE_M)" ]; then echo "HYDRATE_M= required (matches #000065 canonical M)"; exit 2; fi
@mkdir -p $(HYDRATE_DIR)
- @$(COLD_PACK_PICK_JOBS); \
+ @MODE="$${HYDRATE_MODE:-full}"; \
+ case "$$MODE" in \
+ full) MODE_FLAG="--full" ;; \
+ just-enough) MODE_FLAG="--just-enough" ;; \
+ *) echo "HYDRATE_MODE=$$MODE invalid (full | just-enough)"; exit 2 ;; \
+ esac; \
+ $(COLD_PACK_PICK_JOBS); \
echo ">> discovering metadata packs in bucket"; \
hashes=$$($(ARBORIST) cold list --no-manifest \
| $(VENV)/bin/python -c \
"import sys, json; d=json.load(sys.stdin); print(' '.join(p['pack_hash'] for p in d['packs'] if p['kind']=='metadata'))"); \
if [ -z "$$hashes" ]; then echo "no metadata packs in bucket"; exit 3; fi; \
- echo ">> $$JOBS-way parallel pull of metadata packs (M=$(HYDRATE_M))"; \
+ echo ">> $$JOBS-way parallel pull of metadata packs (M=$(HYDRATE_M), mode=$$MODE)"; \
printf "%s\n" $$hashes | \
xargs -n 1 -P $$JOBS -I {} \
$(ARBORIST) cold unpack {} \
--hydrate-shards-dir $(HYDRATE_DIR) \
--hydrate-M $(HYDRATE_M) \
- --full
+ $$MODE_FLAG
@echo ">> hydration complete:"
@ls -lh $(HYDRATE_DIR)/*.db 2>/dev/null