Skip to content

docs: keep the private ROM tree outside the repo; pin DEVELOPER_DIR for host builds - #220

Open
JoeMatt wants to merge 1 commit into
developfrom
docs/rom-safety-notes
Open

docs: keep the private ROM tree outside the repo; pin DEVELOPER_DIR for host builds#220
JoeMatt wants to merge 1 commit into
developfrom
docs/rom-safety-notes

Conversation

@JoeMatt

@JoeMatt JoeMatt commented Jul 30, 2026

Copy link
Copy Markdown
Collaborator

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, with test/roms/private as a symlink — so a stray recursive delete costs a symlink instead of gigabytes of irreplaceable discs.

Documented: never run git clean -xfd at the repo root (it targets precisely the gitignored paths holding data nothing backs up), the symlink recipe for fresh worktrees, that find needs -L to cross it, and that restored disc images nest one level deeper than before.

2. make runs from inside Xcode.app, which triggers a macOS permission prompt per invocation. xcode-select points at /Applications/Xcode.app, and /usr/bin/make is 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 not xcode-select --switch globally, since full Xcode is required for the iOS cross-builds.

Docs-only.

🤖 Generated with Claude Code

…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>
Copilot AI review requested due to automatic review settings July 30, 2026 05:20
@github-actions

Copy link
Copy Markdown

Regression: macos-arm64

Regression Test Results

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

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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/private must be a symlink to an out-of-repo private ROM tree, with handling notes for cleanup and find -L.
  • Document using DEVELOPER_DIR=/Library/Developer/CommandLineTools for host builds to avoid repeated macOS App Management prompts.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread CLAUDE.md
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`
@github-actions

Copy link
Copy Markdown

Regression: linux-arm64

Regression Test Results

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

@github-actions

Copy link
Copy Markdown

Regression: linux-x64

Regression Test Results

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants