← back to AbramsEgo
build-queue/done/12-officers-datetime-chip.md
26 lines
# AbramsEgo task 12 — close the last created-date+time gap (Officers panel)
Read SPEC.md. Steve HARD rule: every admin card/row shows a visible `🕓 Mon D, YYYY, h:mm AM` chip
(via `toLocaleString`) with full ISO in `title=`. The dashboard is ALREADY ~95% compliant — the
`whenChip()` helper (`public/index.html` ~line 228) is wired into kam-list, loc-list, wins, sessions,
sub-agent runs, activity, crons, and canaries. The ONE remaining gap is the **Officers** panel
(`#officers`, render at ~line 352): it renders a plain `.row` with vp/domain and NO timestamp chip.
The prior broad compliance passes (06 / 06a) both timed out (rc=142). This is the tiny residual — do
ONLY the officers gap + a 2-minute grep to confirm nothing else regressed. ~8 min, surgical.
1. Check what timestamp the officers data carries: `curl -s -u admin:'DW2024!'
http://127.0.0.1:9773/api/data | python3 -c "import sys,json;print((json.load(sys.stdin).get('officers') or {}))" | head -c 400`.
- If each officer has a `lastRun`/`updatedAt`/`mtime`/`created` field → add
`whenChip(o.lastRun,o.updatedAt,o.mtime)` to the officers row render (same pattern as the wins row).
- If officers carry NO per-item timestamp at all → surface the officer group's own freshness instead:
show a single `whenChip(off.fetchedAt || off.builtAt)` next to the "🏛 Officers" count so the panel
still honors the visible-timestamp rule. (If the API has no timestamp, add `fetchedAt:new Date().toISOString()`
to the officers object in `server.js` — one line — and use it.)
2. `pm2 restart abramsego`, load http://127.0.0.1:9773/, confirm the Officers panel now shows a 🕓 chip
with an ISO `title=`.
3. Commit:
`git add -A && git commit -m "chore: created date+time chip on Officers panel (last hard-rule gap)" --author="Steve <steve@designerwallcoverings.com>"`
Do NOT reflow or restyle other panels — they already comply. Local only, no deploy.