← back to Fix Live Board
README.md
34 lines
# fix-live-board
Generalized live **"broken → fixed"** board for any fix job — the reusable pattern lifted from
`flock-fix-viewer`. A job supplies a **source-agnostic probe** (any command that prints JSON rows);
the board derives per-field pass/fail chips + a fixed% progress bar and polls live so cards turn
green as fixers land. Basic auth `admin / DW2024!` on an OS-assigned free port.
## Row shape (what a probe prints — a JSON array)
```json
[{ "id":"A-001", "title":"…", "sku":"A-001", "price":172.5, "img":null,
"created":"2026-09-01T10:15:00Z", "status":"ACTIVE",
"fields": { "price": true, "tags": false }, "fixed": false }]
```
`fixed` is optional — if omitted, a row is fixed when every non-`warn` field is truthy.
## Job config (`jobs/<id>.json`)
- `probe` — shell command printing the JSON rows (run from `cwd` or the project root)
- `fields[]` — `{ key, ok, bad, warn? }` chips, in display order
- `fixers[]` — `{ id, label, cmd, cwd?, launch }` — the board can **launch** a fixer only when
`launch: true`; otherwise it renders **gated** (run it manually). Every launch is appended to
`~/.claude/yolo-queue/executed-reversible/ledger.jsonl`.
- `watch` — set `false` to exclude from the always-on auto-spinner (default: watched)
## Use
```
node run.mjs --list # registered jobs + which boards are live
node run.mjs flock # spin (or re-attach) the flock board, print its URL
node watcher.mjs # one auto-spin sweep (installed as a launchd job)
```
Scaffold a new job with the `fix-live-board` skill: `/fix-live-board <name>`.
Reference impl: `jobs/flock.json` + `probes/shopify-flock.mjs` (live DW Shopify, read-only).