← 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).