docs: keep the private ROM tree outside the repo; pin DEVELOPER_DIR for host builds - #220
Open
JoeMatt wants to merge 1 commit into
Open
docs: keep the private ROM tree outside the repo; pin DEVELOPER_DIR for host builds#220JoeMatt wants to merge 1 commit into
JoeMatt wants to merge 1 commit into
Conversation
…or host builds Two operational lessons from a multi-agent session. The private ROM/disc tree was a real directory inside the repo and gitignored, so nothing protected it. On 2026-07-30 several concurrent sessions each created and removed that path and the collection was destroyed (no local snapshots, empty Trash). It is now a symlink to a location outside every checkout, so a stray recursive delete costs a symlink instead of the data. Documents the no-git-clean rule, the symlink recipe for fresh worktrees, that find(1) needs -L to cross it, and that restored disc images nest one level deeper. Separately: xcode-select points at Xcode.app, so make/cc resolve to binaries inside an app bundle and macOS raises an App Management prompt on every invocation — dozens of times across a multi-agent run. Pinning DEVELOPER_DIR to the Command Line Tools avoids it with the same compiler; switching xcode-select globally would break the iOS builds. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Regression:
|
| ROM | Status | Details | Diff |
|---|---|---|---|
| jagniccc | 🆕 NEW | no baseline | - |
| yarc | 🆕 NEW | no baseline | - |
| jagniccc (determinism) | ✅ PASS | identical across runs | - |
| yarc (determinism) | ✅ PASS | identical across runs | - |
| jagniccc (frameskip) | ✅ PASS | skip=0 matches skip=3 | - |
| yarc (frameskip) | ✅ PASS | skip=0 matches skip=3 | - |
| jagniccc (save state) | ✅ PASS | round-trip matches | - |
| yarc (save state) | ✅ PASS | round-trip matches | - |
| jagniccc (rewind) | ✅ PASS | rewind matches | - |
| yarc (rewind) | ✅ PASS | rewind matches | - |
Platform: Darwin arm64
Updated by CI at 2026-07-30T05:21:16.908Z
Contributor
There was a problem hiding this comment.
Pull request overview
Docs-only update capturing two operational safeguards for working on the Virtual Jaguar libretro core: keeping private ROM/disc assets outside the repo via a symlink to avoid accidental deletion, and pinning DEVELOPER_DIR to avoid macOS permission prompts when host-building with Xcode-selected toolchains.
Changes:
- Document that
test/roms/privatemust be a symlink to an out-of-repo private ROM tree, with handling notes for cleanup andfind -L. - Document using
DEVELOPER_DIR=/Library/Developer/CommandLineToolsfor host builds to avoid repeated macOS App Management prompts.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+247
to
+248
| - To make the ROMs visible in a fresh worktree, symlink the shared location: | ||
| `ln -sf /Users/jmattiello/Workspace/Provenance/jaguar-roms-private test/roms/private` |
Regression:
|
| ROM | Status | Details | Diff |
|---|---|---|---|
| jagniccc | 🆕 NEW | no baseline | - |
| yarc | 🆕 NEW | no baseline | - |
| jagniccc (determinism) | ✅ PASS | identical across runs | - |
| yarc (determinism) | ✅ PASS | identical across runs | - |
| jagniccc (frameskip) | ✅ PASS | skip=0 matches skip=3 | - |
| yarc (frameskip) | ✅ PASS | skip=0 matches skip=3 | - |
| jagniccc (save state) | ✅ PASS | round-trip matches | - |
| yarc (save state) | ✅ PASS | round-trip matches | - |
| jagniccc (rewind) | ✅ PASS | rewind matches | - |
| yarc (rewind) | ✅ PASS | rewind matches | - |
Platform: Linux aarch64
Updated by CI at 2026-07-30T05:21:43.605Z
Regression:
|
| ROM | Status | Details | Diff |
|---|---|---|---|
| jagniccc | 🆕 NEW | no baseline | - |
| yarc | 🆕 NEW | no baseline | - |
| jagniccc (determinism) | ✅ PASS | identical across runs | - |
| yarc (determinism) | ✅ PASS | identical across runs | - |
| jagniccc (frameskip) | ✅ PASS | skip=0 matches skip=3 | - |
| yarc (frameskip) | ✅ PASS | skip=0 matches skip=3 | - |
| jagniccc (save state) | ✅ PASS | round-trip matches | - |
| yarc (save state) | ✅ PASS | round-trip matches | - |
| jagniccc (rewind) | ✅ PASS | rewind matches | - |
| yarc (rewind) | ✅ PASS | rewind matches | - |
Platform: Linux x86_64
Updated by CI at 2026-07-30T05:21:56.043Z
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two operational lessons from a heavy multi-agent session, both of which cost real time (and in the first case, real data).
1. The private ROM/disc tree was inside the repo and gitignored — so nothing protected it. During a session with ~10 concurrent agents, several sessions each created and removed
test/roms/private, and the collection was destroyed. No Time Machine local snapshots, empty Trash, nothing recoverable locally. It has been restored from other copies and now lives outside every git checkout, withtest/roms/privateas a symlink — so a stray recursive delete costs a symlink instead of gigabytes of irreplaceable discs.Documented: never run
git clean -xfdat the repo root (it targets precisely the gitignored paths holding data nothing backs up), the symlink recipe for fresh worktrees, thatfindneeds-Lto cross it, and that restored disc images nest one level deeper than before.2.
makeruns from inside Xcode.app, which triggers a macOS permission prompt per invocation.xcode-selectpoints at/Applications/Xcode.app, and/usr/bin/makeis a shim redirecting into the active developer directory — so every build executes a binary inside another application's bundle, and macOS raises an App Management ("access data from other apps") prompt. Across a multi-agent run that is dozens of prompts.Fix documented: prefix host builds with
DEVELOPER_DIR=/Library/Developer/CommandLineTools— same Apple clang, no bundle access, no prompts. Explicitly notxcode-select --switchglobally, since full Xcode is required for the iOS cross-builds.Docs-only.
🤖 Generated with Claude Code