# Zaparoo Core Artifact Paths

Core names database files `media.db` and `user.db`. Both normally live directly in effective data directory. Current log is `core.log` in platform log directory.

Treat table as path-selection guidance. Verify expected file exists before copying. Do not recursively search entire device.

## Platform table

| Core platform ID | Effective data directory default | Current log default |
|---|---|---|
| `mister` | `/media/fat/zaparoo` | `/tmp/zaparoo/core.log` |
| `mistex` | `/media/fat/zaparoo` | `/tmp/zaparoo/core.log` |
| `batocera` | `/userdata/system/.local/share/zaparoo` | `/userdata/system/.local/share/zaparoo/logs/core.log` |
| `replayos` | `/media/sd/zaparoo` | `/media/sd/zaparoo/logs/core.log` |
| `zapos` | `/userdata/data/zaparoo` | `/userdata/data/zaparoo/logs/core.log` |
| `linux` | Core service user's XDG data home + `/zaparoo` | data directory + `/logs/core.log` |
| `bazzite` | Core service user's XDG data home + `/zaparoo` | data directory + `/logs/core.log` |
| `chimeraos` | Core service user's XDG data home + `/zaparoo` | data directory + `/logs/core.log` |
| `steamos` | Core service user's XDG data home + `/zaparoo` | data directory + `/logs/core.log` |
| `libreelec` | Core service user's XDG data home + `/zaparoo` | data directory + `/logs/core.log` |
| `recalbox` | Core service user's XDG data home + `/zaparoo` | data directory + `/logs/core.log` |
| `retropie` | Core service user's XDG data home + `/zaparoo` | data directory + `/logs/core.log` |
| `mac` | Core user's XDG data home + `/zaparoo` | data directory + `/logs/core.log` |
| `windows` | Core user's XDG data home + `\zaparoo` | data directory + `\logs\core.log` |

## XDG defaults

Core honors `XDG_DATA_HOME` when resolving data paths.

- Linux and Unix-like: `<Core service home>/.local/share/zaparoo`
- macOS: `<Core user home>/Library/Application Support/zaparoo`
- Windows: `<Core user LocalAppData>\zaparoo`, commonly `%LOCALAPPDATA%\zaparoo`

Resolve under identity and environment that starts Core. SSH login account may differ from service account. Inspect known service definition, process owner/environment, or ask user rather than assuming login `$HOME` is correct.

Platform-specific Linux distributions can configure service homes unusually. For example, a root service and a desktop-user service resolve different XDG defaults even on same device.

## Portable install override

A portable Core install can use a directory named `user` beside its executable. When present, that directory replaces the platform data-directory default.

Consequences:

- Check `<Core executable directory>/user/media.db` and `user.db` when install is portable.
- Database sidecars remain beside those files.
- `core.log` remains under the platform log directory; do not assume portable `user` contains it.
- Avoid broad executable searches. Determine executable path from known service configuration, process metadata, installation docs, or user.

## Exact file families

For resolved data directory `<data>`:

```text
<data>/media.db
<data>/media.db-wal
<data>/media.db-shm
<data>/media.db-journal

<data>/user.db
<data>/user.db-wal
<data>/user.db-shm
<data>/user.db-journal
```

Sidecars are conditional. Absence is normal; presence depends on journal state and timing.

For resolved log directory `<logs>`:

```text
<logs>/core.log
<logs>/core.log.1   # optional rotation
<logs>/core.log.2   # optional rotation
...
```

## Narrow verification strategy

1. Use platform reported by Core API/`doctor`, saved device metadata, or user.
2. Check exact table path.
3. Check portable `user` override only when executable location is known.
4. On XDG platforms, derive path from Core service identity/environment.
5. If expected file is absent, inspect service configuration or ask user before widening search.
6. If platform cannot be identified, do not try every path across device automatically.
