@@ -28,6 +28,40 @@ INTEGRITY="${GH_AW_MIN_INTEGRITY:-none}"
2828# All integrity levels in descending order (highest first)
2929LEVELS=(" merged" " approved" " unapproved" " none" )
3030
31+ ensure_writable_dir () {
32+ local dir=" $1 "
33+ local purpose=" $2 "
34+ local probe_file=" "
35+ local mkdir_err
36+ local chmod_err
37+ local write_err
38+ mkdir_err=" $( mktemp /tmp/gh-aw-cache-mkdir-err.XXXXXX) "
39+ chmod_err=" $( mktemp /tmp/gh-aw-cache-chmod-err.XXXXXX) "
40+ write_err=" $( mktemp /tmp/gh-aw-cache-write-err.XXXXXX) "
41+
42+ if ! mkdir -p " $dir " 2> " $mkdir_err " ; then
43+ echo " ERROR: cache-memory setup error: failed to create ${purpose} (${dir} )" >&2
44+ cat " $mkdir_err " >&2 || true
45+ rm -f " $mkdir_err " " $chmod_err " " $write_err " 2> /dev/null || true
46+ exit 1
47+ fi
48+
49+ if ! chmod u+rwx " $dir " 2> " $chmod_err " ; then
50+ echo " ERROR: cache-memory setup error: ${purpose} is not writable (${dir} )" >&2
51+ cat " $chmod_err " >&2 || true
52+ rm -f " $mkdir_err " " $chmod_err " " $write_err " 2> /dev/null || true
53+ exit 1
54+ fi
55+
56+ if ! probe_file=" $( mktemp " ${dir} /gh-aw-write-check.XXXXXX" 2> " $write_err " ) " ; then
57+ echo " ERROR: cache-memory setup error: ${purpose} is not writable (${dir} )" >&2
58+ cat " $write_err " >&2 || true
59+ rm -f " $mkdir_err " " $chmod_err " " $write_err " 2> /dev/null || true
60+ exit 1
61+ fi
62+ rm -f " $probe_file " " $mkdir_err " " $chmod_err " " $write_err " 2> /dev/null || true
63+ }
64+
3165initialize_cache_memory_git_repo () {
3266 # No git repo yet — either a fresh cache or a legacy flat-file cache.
3367 # Initialize a git repository with an empty baseline commit on the highest-trust
@@ -262,3 +296,9 @@ if [ "$IS_CACHE_HIT" = "true" ]; then
262296 " $_run_id " " $_timestamp " " $_post_file_count " > " cache-hit-history.json"
263297 echo " Cache hit history updated (run: $_run_id , files: $_post_file_count )"
264298fi
299+
300+ # Preflight write checks for known cache-memory paths required by daily planners.
301+ # Fail fast here so agent runs do not continue after a hidden permission problem.
302+ ensure_writable_dir " $CACHE_DIR " " cache-memory root directory"
303+ ensure_writable_dir " ${CACHE_DIR} /spdd-daily" " Daily SPDD rotation cache directory"
304+ echo " Cache memory preflight write checks passed"
0 commit comments