# Songbook live health card

Purpose: give unattended follow-up jobs a fast public-safe checklist for deciding whether `https://chords.system8.com.au/` is healthy, stale, or broken after the Ultimate Guitar search/import cache-busting fix.

Last refreshed: 2026-06-24 18:36 AWST

Production verification: live UG search results were restored and the published surface was restricted to public assets only; `/test-app.js`, `/package.json`, `/package-lock.json`, and `/netlify/functions/ug-search.js` should return HTTP 404.

## Expected healthy output

- Homepage HTTP check: `curl -I --max-time 20 https://chords.system8.com.au/` returns HTTP 200.
- Homepage cache headers may be Netlify `public,max-age=0,must-revalidate`; this is acceptable for the static HTML shell.
- Ultimate Guitar search function check: `curl -D /tmp/chords-ug-search.headers -o /tmp/chords-ug-search.json --max-time 25 'https://chords.system8.com.au/.netlify/functions/ug-search?q=wonderwall&t=<timestamp>'` should return HTTP 200, `cache-control: no-store`, and JSON with a `results` array.
- Browser smoke: load `https://chords.system8.com.au/?taskcheck=<timestamp>`, type `wonderwall` in the main search box, and the count should include `local songs` plus a nonzero `UG matches` count, for example `8 local songs` and `8 UG matches`.
- Seed JSON route check: `https://chords.system8.com.au/chords.system8.json` should return HTTP 200 JSON after the local sync route is deployed; the client falls back to `songs.json` while older deployments are still live. See `chords-json-route-status-card.md` for the canonical/fallback route contract and exact local/live validation commands, and `songbook-live-json-consumer-checklist.md` for the UI load-order/offline-fallback contract.
- Console smoke: no JavaScript errors; transient Ultimate Guitar network warnings are only report-worthy if the UI does not show UG matches or import fallback copy.
- Import affordance: the library toolbar still has `Import Ultimate Guitar`, and UG cards say `imports when opened`.

## Healthy local regression guard

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

```sh
npm test
```

Expected output includes:

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

The test guards:

- `&t=` Date.now cache-busting on UG search requests.
- stale async UG search responses do not replace newer results.
- manual Ultimate Guitar paste import stays wired.
- service worker cache name remains bumped for the release.
- client files do not contain obvious credential assignments.

## When to report

Report only if one of these changes:

- Homepage or function HTTP status stops being 200.
- UG function loses `cache-control: no-store` or stops returning parseable JSON/results for a normal query.
- Browser count never shows a nonzero `UG matches` result for a common song query after one retry.
- Console has real app errors, not just old gateway/provider log noise.
- `npm test` fails from the live-site directory.

If all checks match the healthy output above and durable blockers are unchanged, return `[SILENT]`.
