Implementation of the RFC-0003 decisions (design: backend#1151, RFC doc: tracebloc/cli#366).
Goal (from Asad + Lukas): deleting the cluster must destroy the dataset data, and data must not sit as a browsable folder in ~/.tracebloc. It should live inside the cluster's own sandbox.
Decision landed: Option C — node-local storage via k3s built-in local-path, on a single-node local cluster (C1: AGENTS=0). Plus drop the chmod 777 on data dirs (RFC §7.3).
Prototype: #368 (draft, flag-gated TB_STORAGE_MODE=node-local).
Scope (this repo — client)
Verification
Follow-up (other repo — cli)
Migration (RFC §7.5)
autoUpgrade uses helm upgrade --reuse-values, so existing installs keep hostPath.enabled=true and do NOT silently migrate — they move to C only on a clean delete + reinstall. No data-copy tool; keep the leftover-guard so nothing is silently stranded.
D15 — default-flip (decided 2026-07-22, RFC v2.2 §10)
Node-local becomes the default for local installs. Checklist:
Leftover-guard (D3) tracked separately: #376. Epic: tracebloc/backend#1151.
Implementation of the RFC-0003 decisions (design: backend#1151, RFC doc: tracebloc/cli#366).
Goal (from Asad + Lukas): deleting the cluster must destroy the dataset data, and data must not sit as a browsable folder in
~/.tracebloc. It should live inside the cluster's own sandbox.Decision landed: Option C — node-local storage via k3s built-in
local-path, on a single-node local cluster (C1:AGENTS=0). Plus drop thechmod 777on data dirs (RFC §7.3).Prototype: #368 (draft, flag-gated
TB_STORAGE_MODE=node-local).Scope (this repo —
client)chmod 777: not a standalone PR — on the hostpath model it's load-bearing (host-user writes to/data/shared+ no fsGroup on hostPath volumes). node-local removes the host dirs entirely, so 777 is gone by construction. Folded into feat(installer): node-local storage prototype (RFC-0003 Option C, flag-gated) #368.TB_STORAGE_MODE, defaulthostpathunchanged) — feat(installer): node-local storage prototype (RFC-0003 Option C, flag-gated) #368:storageClass.create=false+name=local-path;hostPath.enabled=false; keeppvcAccessMode=ReadWriteOnce.-v ${HOST_DATA_DIR}:/tracebloc@allbind-mount; keep k3slocal-storage(was--disabled)._ensure_tracebloc_dirs/_ensure_release_dirshost-dir pre-create + chmod in node-local.C1: node-local forcesAGENTS=0(single-node).hostPath.enabled=false(confirmed viahelm template).scripts/gen-manifest.sh→scripts/manifest.sha256).Verification
helm templatenode-local → 0 hostPath PVs, PVCs bindlocal-path, no mysql init (verified on Mac; hostpath contrast = 3 PVs + init present).local-pathStorageClass present + PVC binds + pod mounts (live k3d).~/.tracebloc— lives in the node's Docker volume (inside the Docker VM on macOS).cluster stop && start→ data survives (restart-persistence).cluster delete→ node + Docker volume removed, data gone (delete-persistence) — re-confirmed on the real credentialed install (CSVs + MySQL.ibdpresent before, destroyed after).777host dirs (second_ensure_tracebloc_dirscall site gated — commit5e4ea45).ingest-jobmountingclient-pvcon the single node. Full backend training experiment deferred — blocked on a dev-account/dataset/admin/ 401, orthogonal to storage.--reuse-values) still works, no silent migration.Follow-up (other repo —
cli)internal/cli/delete.go: add verify-before-✔on the host-data removal; the elaborate multi-path wipe from RFC §3.3 is unnecessary under C.Migration (RFC §7.5)
autoUpgradeuseshelm upgrade --reuse-values, so existing installs keephostPath.enabled=trueand do NOT silently migrate — they move to C only on a clean delete + reinstall. No data-copy tool; keep the leftover-guard so nothing is silently stranded.D15 — default-flip (decided 2026-07-22, RFC v2.2 §10)
Node-local becomes the default for local installs. Checklist:
TB_STORAGE_MODE=node-localfor local installs (hostpath stays available as an explicit opt-out)AGENTSdefault → 0 for local installs (single-node; override still honored, C1 constraint documented)TB_STORAGE_MODE=hostpathescape hatchLeftover-guard (D3) tracked separately: #376. Epic: tracebloc/backend#1151.