{"slug":"ticket-system","total":32,"limit":100,"offset":0,"since":null,"commits":[{"hash":"1fffe67","date":"2026-07-28 08:02:14 -0700","author":"Steve Abrams","subject":"nightly-cleanup: add pass 3 — CNCP panel retire + cache-reload restart","body":"Folds the CNCP tab retire (cncp-retire.py) into the 4am job as pass 3; restarts\ncom.user.cncp only when something was actually retired so caches reload. Skip\nwith CNCP_RETIRE=0; tune window with CNCP_RETIRE_DAYS.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>"},{"hash":"32d067a","date":"2026-07-28 07:50:09 -0700","author":"Steve Abrams","subject":"nightly board hygiene: ticket auto-done + approvals sweep at 4am","body":"ticket-autodone.js — self-determines COMPLETE tickets (mirror of CNCP's\napprovals auto-complete). Closes doing/blocked tickets whose LATEST activity\ndeclares the whole ticket complete, idle >=6h, no live worker, not neg/gated.\nDeliberately tight after a live false-positive check (TK-13 banked a sub-task\nwin while its main gated op was still armed — correctly NOT closed). Reversible\n(status is an appended event); report-only without --apply.\n\nnightly-cleanup.sh — 4am runner: POST /api/approvals/sweep then\nticket-autodone --apply. Installed as launchd com.steve.nightly-approvals-tickets.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>"},{"hash":"3cea49e","date":"2026-07-27 20:24:23 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-27T20:24:23 (2 files) — gdrive-sync-launchd.err gdrive-sync-launchd.out","body":""},{"hash":"88546c2","date":"2026-07-27 19:54:12 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-27T19:54:12 (2 files) — reaper-launchd.err reaper-launchd.out","body":""},{"hash":"f159cc1","date":"2026-07-27 19:08:52 -0700","author":"Steve Abrams","subject":"ticket IDs: new tickets start at TK-10000 (floor); legacy + existing ids unchanged/resolvable","body":""},{"hash":"9136e0b","date":"2026-07-27 19:03:42 -0700","author":"Steve Abrams","subject":"live gdrive ticket export: hourly CSV sync to private Drive (com.steve.ticket-gdrive-sync)","body":"Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>"},{"hash":"ae90cac","date":"2026-07-27 18:46:24 -0700","author":"Steve Abrams","subject":"schedule ticket-reaper hourly (com.steve.ticket-reaper, --block)","body":""},{"hash":"1b3f83b","date":"2026-07-27 18:43:04 -0700","author":"Steve Abrams","subject":"add stale-doing reaper: flags DOING tickets idle >Nh with no live worker + suggests disposition (durable fix for zombie-ticket root cause)","body":"Report-only by default; --block sets the safe default (→blocked). Root cause found this session: nothing transitions a ticket out of doing when its owning Claude session ends.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>"},{"hash":"6c74133","date":"2026-07-27 15:39:01 -0700","author":"Steve Abrams","subject":"office clock v4: legibility pass (taller chip, halo dot, truncation, live opacity-breathe, clears room label; OVERDUE_MS const)","body":"Round-3 loop: Contrarian gate = SHIP IT (no correctness bug/NaN/leak); adopted its OVERDUE_MS named-constant nit. UI/UX reviewer legibility fixes applied: chip 76->90px, dot 9px+halo, worker label 20/700 truncated, sub-line 17px, anchor lowered 5.2->3.6 to clear the room label, live-state sprite-opacity breathe (no repaint).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>"},{"hash":"8e488ba","date":"2026-07-27 15:31:11 -0700","author":"Steve Abrams","subject":"office board: dynamic live clock on DOING rooms (per-ticket liveness, 3-state, idle-based overdue)","body":"Refined via DTD panel + Contrarian gate (2 rounds):\n- per-ticket liveness (not global heartbeat) so a room only reads live when\n  an agent is actually working IT\n- big numeral = time-in-doing; sub = last-active Xs ago\n- 3 states GREEN live / AMBER idle / GREY orphan; RED numeral when idle >2h (stalled)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>"},{"hash":"67de870","date":"2026-07-27 15:21:38 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-27T15:21:37 (1 files) — office.html","body":""},{"hash":"18f29be","date":"2026-07-27 12:11:40 -0700","author":"Steve Abrams","subject":"chore: harden browser-side esc() to escape single-quote (session close)","body":"Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>"},{"hash":"bb20804","date":"2026-07-27 12:01:54 -0700","author":"Steve Abrams","subject":"Fleet Office: green 'running' edge for live agents, pm2 procs, claude sessions, doing tickets","body":"- server.js: cached /api/running endpoint (pm2 jlist online + live claude session count), warmed at boot\n- office.html: green running edge on doing rooms, green heartbeat ring on live agents (<8min),\n  FLEET PROCESSES status board (69 green-edged pm2 nodes, hover shows cpu/mem), live/pm2/sessions pills,\n  Running-edges + Process-wall toggles; running signal on its own 4s cadence\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>"},{"hash":"4d5b85d","date":"2026-07-27 11:50:21 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-27T11:50:21 (2 files) — office.html server.js","body":""},{"hash":"338a454","date":"2026-07-27 09:39:16 -0700","author":"Steve Abrams","subject":"office: harden agent placement — clear stale atWork glow on drop-out, guard NaN dates (session-close lint)","body":""},{"hash":"ee1e135","date":"2026-07-27 09:24:54 -0700","author":"Steve Abrams","subject":"office: seat working agents in their doing room (rank active work over latest touch) + persistent working glow","body":""},{"hash":"9e47637","date":"2026-07-27 08:49:31 -0700","author":"Steve Abrams","subject":"canvas-design: LUMEN INDEX plate — Fleet Office as a scientific light-survey (philosophy .md + rendered .png)","body":"Movement 'Lumen Index' (the survey of ordered light). Museum-plate composition:\n4 fields (10/16/11/24 cells echoing the live board), 48 operator points, 8 transit\narcs, ticket-rule anchor 'nothing moves that is not first recorded.' Fonts: Jura /\nIBM Plex Mono / Instrument Serif. Rendered via Playwright at 2.5x.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>"},{"hash":"85274f3","date":"2026-07-27 08:49:13 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-27T08:49:12 (1 files) — marketing/canvas/","body":""},{"hash":"8139690","date":"2026-07-27 08:40:59 -0700","author":"Steve Abrams","subject":"marketing: Photoshop (5th horseman) color-graded Fleet Office still + layered PSD","body":"Adobe Photoshop 27.8.0 via MCP — cool_dusk cinematic grade on the live screenshot,\nsaved editable PSD + flattened PNG. (Generative expand/mockup blocked by the MCP's\nfree-text quoting bug; grade/text/export path works.)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>"},{"hash":"8db70dc","date":"2026-07-27 08:24:24 -0700","author":"Steve Abrams","subject":"marketing: Four Horsemen pass — branded Fleet Office hero card (21st.dev Magic concept + local render)","body":"21st.dev Magic (the live horseman) generated 2 concept directions (Command Deck /\nCinematic Launch) at the build URL; final branded hero rendered locally (Inter/mono,\nneon ambience, browser-framed live screenshot) since Canva/Figma/Paper aren't authed\non this box. marketing/ holds hero.html + assets + render script.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>"},{"hash":"6431278","date":"2026-07-27 07:54:34 -0700","author":"Steve Abrams","subject":"office: professional polish pass (design-agent driven) — Inter/mono type, solid command bar with stat pills, spark-bar workload legend, 3-row activity log, grouped controls, restrained bloom + warm/cool lighting + lane floor stripes; robust boot-curtain timer","body":"Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>"},{"hash":"c4b15ed","date":"2026-07-27 07:48:56 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-27T07:48:56 (1 files) — office.html","body":""},{"hash":"ca85224","date":"2026-07-27 07:37:56 -0700","author":"Steve Abrams","subject":"office: fetch API via location.origin so embedded-credential page URLs don't break polling","body":"Fetch spec forbids constructing a Request from a URL containing credentials; a\npage opened as http://user:pass@host/office resolved relative /api paths against\nthat base and threw. Resolve against location.origin (no userinfo) instead.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>"},{"hash":"3dd588f","date":"2026-07-27 07:01:43 -0700","author":"Steve Abrams","subject":"office: add 'Ping ✦' DM-animation preview button + recording hooks","body":"Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>"},{"hash":"a5e74a9","date":"2026-07-26 21:17:28 -0700","author":"Steve Abrams","subject":"Add live 3D top-down office visualizer (/office): rooms=tickets, avatars=agents, DMs animate as packets","body":"Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>"},{"hash":"f49cf45","date":"2026-07-26 21:15:59 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-26T21:15:59 (2 files) — server.js office.html","body":""},{"hash":"fda28cb","date":"2026-07-26 20:53:02 -0700","author":"Steve Abrams","subject":"chore: harden DM thread-walk against cyclic re-chains (cycle guard in threadRootMid + server rootOf); session-close review pass","body":""},{"hash":"fb0737f","date":"2026-07-26 20:38:30 -0700","author":"Steve Abrams","subject":"harden @mention routing: only DM known agents (or broadcast); ignore stray @tokens with a notice (TK-00067)","body":""},{"hash":"eac02d5","date":"2026-07-26 20:25:57 -0700","author":"Steve Abrams","subject":"agent-to-agent DMs: tk dm/inbox/reply/thread + @mention auto-routing + board DIRECT MESSAGES panel + /api/messages (TK-00067)","body":""},{"hash":"a547850","date":"2026-07-26 15:34:39 -0700","author":"Steve Abrams","subject":"ticket ids: 5-digit zero-padded + title slug (TK-00025-style); resolveId accepts bare number, TK-n, or full id; legacy ids resolve","body":""},{"hash":"0744d30","date":"2026-07-26 14:44:02 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-26T14:44:02 (2 files) — server.js tk","body":""},{"hash":"c5a54df","date":"2026-07-26 14:07:28 -0700","author":"Steve Abrams","subject":"ticket-system: shared fleet ticket store + tk CLI + kanban board :9794","body":""}]}