From 7bc565d17e168da55ecd64c189b8a2693d75310c Mon Sep 17 00:00:00 2001 From: Andrew Stoltz Date: Mon, 27 Apr 2026 22:24:04 -0500 Subject: [PATCH] fix(ttsreader): pin VoicePreview CacheDirectory to /data PVC MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Day 8 disk-cache warmer crashes on production with 'Read-only file system : /home/app/data' because the relative default 'data/voice-previews' resolves under runAsNonRoot HOME (read-only with readOnlyRootFilesystem=true). Pin to /data/voice-previews so the cache lands on the writable PVC mount alongside ttsreader.db, audio output, and jobs root. Image v202604272216 (already on nodes) is unaffected by this — only the env routing changes. ArgoCD reconciles + rollout restart picks up the new env without rebuild. Co-Authored-By: Claude Opus 4.7 (1M context) --- apps/fc-ttsreader/fc-ttsreader.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/apps/fc-ttsreader/fc-ttsreader.yaml b/apps/fc-ttsreader/fc-ttsreader.yaml index 9f6e090..513b407 100644 --- a/apps/fc-ttsreader/fc-ttsreader.yaml +++ b/apps/fc-ttsreader/fc-ttsreader.yaml @@ -573,6 +573,12 @@ spec: value: "/data/logs" - name: TtsReader__Runtime__SmokeStatePath value: "/data/ops/smoke-status.json" + # Sprint E Day 8 voice-preview disk cache — writes WAVs under + # this directory. Default "data/voice-previews" resolves to + # the read-only $HOME path under runAsNonRoot=true. Pin to + # the writable PVC mount. + - name: TtsReader__Preview__CacheDirectory + value: "/data/voice-previews" - name: Auth__ApiKey valueFrom: secretKeyRef: