[object Object]

← back to AbramsEgo

chore: replenish audit (fable) — 1 real gap: kam fleet list silently caps 40/226 with no grid controls; enqueue task 15 + re-queue replenisher 16

060582ab444516a79ce66a6de6a2b552dbd8a8f4 · 2026-07-01 13:47:51 -0700 · Steve

Files touched

Diff

commit 060582ab444516a79ce66a6de6a2b552dbd8a8f4
Author: Steve <steve@designerwallcoverings.com>
Date:   Wed Jul 1 13:47:51 2026 -0700

    chore: replenish audit (fable) — 1 real gap: kam fleet list silently caps 40/226 with no grid controls; enqueue task 15 + re-queue replenisher 16
---
 build-queue/{tasks => done}/14-replenish.md   |  0
 build-queue/tasks/15-kamlist-grid-controls.md | 27 +++++++++++++++++++++++++++
 build-queue/tasks/16-replenish.md             | 25 +++++++++++++++++++++++++
 3 files changed, 52 insertions(+)

diff --git a/build-queue/tasks/14-replenish.md b/build-queue/done/14-replenish.md
similarity index 100%
rename from build-queue/tasks/14-replenish.md
rename to build-queue/done/14-replenish.md
diff --git a/build-queue/tasks/15-kamlist-grid-controls.md b/build-queue/tasks/15-kamlist-grid-controls.md
new file mode 100644
index 0000000..f7213e8
--- /dev/null
+++ b/build-queue/tasks/15-kamlist-grid-controls.md
@@ -0,0 +1,27 @@
+# AbramsEgo task 15 — Kamatera fleet list: kill the silent 40/226 cap (grid controls)
+
+Read SPEC.md. Steve HARD rule (and task 06b's own criterion): any list that can exceed ~40 rows
+gets a sort `<select>` + density slider (localStorage-persisted) + infinite scroll. The Kamatera
+fleet panel violates it: `public/index.html:340` renders `(k.procs||[]).slice(0,40)` — 40 of the
+**226** live procs, silently dropped, no controls, no "more" indicator. The API already returns
+all 226 (`/api/data` → `kamatera.procs`), so this is a front-end-only fix.
+
+Reuse the existing `initGrid()`/`feedGrid()` machinery (`public/index.html:244–280`) exactly like
+the canaries panel (`renderCanaries`, ~line 541):
+
+1. In the Fleet · Kamatera card markup (~line 139–143), add `<div id="kam-ctl"></div>` above
+   `#kam-list`.
+2. Replace the line-340 `$('kam-list').innerHTML=…slice(0,40)…` with a `renderKamFleet(k)` that
+   calls `initGrid('kamfleet', {controlsHost:$('kam-ctl'), host:$('kam-list'), batch:25,
+   minCols:1, maxCols:3, defaultCols:1, …})` + `feedGrid('kamfleet', k.procs||[])`.
+   Sort modes: Newest (startedAt desc, default), Oldest, Name A→Z, Restarts ↓ (b.restarts-a.restarts),
+   Status (offline first). Row render = the same `lrow(statusDot+name, restarts↺, whenChip(startedAt))`
+   already used — keep the 🕓 chip.
+3. Keep the `k.note` fallback for when Kamatera is unreachable (empty: pass `cfg.empty` = the note
+   or 'kamatera unreachable').
+4. Leave the Local fleet list (2 procs) as-is — it can't exceed 40.
+
+Verify: `pm2 restart abramsego`, then load http://127.0.0.1:9773/ (admin:DW2024!) — Kamatera card
+shows sort+density controls and scrolling loads past 40 rows ("… N more · scroll to load" sentinel).
+Commit: `git add -A && git commit -m "fix: Kamatera fleet list — sort+density+infinite scroll, no silent 40-row cap" --author="Steve <steve@designerwallcoverings.com>"`
+Local only, no deploy. Do not restyle other panels.
diff --git a/build-queue/tasks/16-replenish.md b/build-queue/tasks/16-replenish.md
new file mode 100644
index 0000000..0eb3d1b
--- /dev/null
+++ b/build-queue/tasks/16-replenish.md
@@ -0,0 +1,25 @@
+# AbramsEgo task 16 — REPLENISH: fresh-eyes full-completion audit (Fable 5)
+
+You are the queue replenisher. The loop just switched models to **Fable 5** — you are the first
+fresh pair of eyes on this build. Read SPEC.md FIRST, then audit the RUNNING dashboard, not the
+file bookkeeping.
+
+1. Pull the live surface: `curl -s -u admin:'DW2024!' http://127.0.0.1:9773/api/data` and read
+   `public/index.html` + `server.js`. Check every SPEC panel (1–8) is present AND wired to real
+   data (no dead placeholders), and every Steve hard rule holds:
+   - 🕓 created date+time chip visible on EVERY admin card/row (full ISO in `title=`) — including
+     the Officers panel, which task 12 (just before you) should have fixed. Verify it actually did.
+   - sort `<select>` + density slider + infinite scroll on every grid, localStorage-persisted.
+   - every cost figure labeled; free/local shows `$0 (local)`.
+2. For each REAL gap found (broken data, missing SPEC feature, hard-rule violation): write ONE
+   surgical <15-min task file to `build-queue/tasks/NN-<slug>.md` (NN starting at 17), following
+   the style of `build-queue/done/12-officers-datetime-chip.md` — name exact files/lines, one
+   verify command, one commit line. BOUND: enqueue at most 3 tasks, highest-value first. Also
+   re-enqueue a copy of this replenisher as the LAST task (next number) ONLY if you enqueued ≥1 task.
+3. If NO real gaps: enqueue nothing, do NOT re-enqueue yourself — the loop rests, the build is
+   at full completion. Don't invent busywork to justify the run.
+4. Move this file to `build-queue/done/` and commit
+   `chore: replenish audit (fable) — <verdict>` with author `steve@designerwallcoverings.com`.
+
+Local only. No deploy, no DNS, no publish — draft any gated need to
+~/.claude/yolo-queue/pending-approval/ instead.

← 2d2bc2e chore: mark task 12 done (Officers date+time chip landed)  ·  back to AbramsEgo  ·  fix: Kamatera fleet list — sort+density+infinite scroll, no d83163b →