···7171!system/public/assets/papers/readings/text/
7272system/public/assets/papers/readings/text/*
7373!system/public/assets/papers/readings/text/Gallope-Harren-Hicks-The-Scores-Project-2025.txt
7474+# M4L .amxd binaries hosted on lith directly (small, versioned, no CDN)
7575+# Use system/public/m4l/ (not /assets/m4l/) to bypass Caddy's /assets/*→CDN redirect.
7676+!system/public/m4l/
74777578# AestheticAnts runtime (logs, runs, test output - not part of the score)
7679ants/*.log
···336339system/.env
337340ac-vst/vst3sdk/
338341*.amxd
342342+!system/public/m4l/*.amxd
339343340344# Emacs performance logs (keep directory, ignore log files)
341345.emacs-logs/*.log
+7-3
oven/native-builder.mjs
···360360 `if git rev-parse --verify origin/${NATIVE_BRANCH} >/dev/null 2>&1; then`,
361361 ` git reset --hard origin/${NATIVE_BRANCH} --quiet`,
362362 "fi",
363363- // Honor caller-specified ref. Fetch the exact commit first (in case
364364- // it's not on the default branch yet / on a PR branch), then detach.
365365- requestedRef ? `git fetch origin ${requestedRef} --quiet || true` : "",
363363+ // Honor caller-specified ref. Skip the direct-SHA fetch — tangled/
364364+ // knot rejects short-SHA fetches over the wire (treats them as
365365+ // missing refs), which caused preflight-sync failures for every
366366+ // 9-char abbreviated ref. Since `fetch origin <branch>` above
367367+ // already brings in all commits reachable from main, a local
368368+ // `git checkout <ref>` resolves abbreviations against the local
369369+ // object db — works for both full and short SHAs.
366370 requestedRef ? `git checkout -f ${requestedRef} --quiet` : "",
367371 "git clean -fdq -- fedac/native fedac/nixos",
368372 ].filter(Boolean).join("\n")], repoDir);