# Chords JSON route status card

Last refreshed: 2026-07-01 01:58 AWST

Purpose: keep the live chordbook seed route easy to verify without guessing which JSON file the browser should load.

## Route decision

- Canonical seed route: `https://chords.system8.com.au/chords.system8.json`
- Local canonical file: `chords.system8.json`
- Fallback route/file: `https://chords.system8.com.au/songs.json` / `songs.json`
- Current contract: `app.js` tries `./chords.system8.json` first and falls back to `./songs.json`; while both files exist, they should contain the same seed songs.
- Safe status: public seed data only. Do not put private gig notes, localStorage backups, credentials, payment secrets, router details, or Wi-Fi passwords in either JSON file.

## Local validation commands

Run from `/home/nk/chords-system8-live-site`:

```sh
npm test
python3 -m json.tool chords.system8.json >/tmp/chords-system8-json-route-local.json
python3 -m json.tool songs.json >/tmp/chords-system8-songs-route-local.json
cmp -s chords.system8.json songs.json
```

Expected local pass line:

```text
omnibox + UG regression checks passed
```

The `cmp` command should exit `0` while `songs.json` is retained as the fallback seed file.

## Live validation commands

```sh
curl -fsS --max-time 20 https://chords.system8.com.au/chords.system8.json -o /tmp/chords-system8-live-canonical.json
curl -fsS --max-time 20 https://chords.system8.com.au/songs.json -o /tmp/chords-system8-live-fallback.json
python3 -m json.tool /tmp/chords-system8-live-canonical.json >/tmp/chords-system8-live-canonical.pretty.json
python3 -m json.tool /tmp/chords-system8-live-fallback.json >/tmp/chords-system8-live-fallback.pretty.json
cmp -s /tmp/chords-system8-live-canonical.json /tmp/chords-system8-live-fallback.json
```

Expected live state: both `curl` calls return HTTP 200 JSON and `cmp` exits `0`. If the canonical route fails but `songs.json` works, the browser fallback may still run, but report the canonical route as stale/broken.

## When to report

Report only if the canonical route or fallback route changes state, stops returning parseable JSON, diverges unexpectedly, or `npm test` fails. If both files still match and the browser/UG checks pass, treat this as verification-only.
