{"slug":"answer-cockpit","total":25,"limit":100,"offset":0,"since":null,"commits":[{"hash":"493f3d8","date":"2026-09-16 09:21:33 -0700","author":"Steve Abrams","subject":"TK-11793: true stale-while-revalidate for the scan — expired cache kicks a background rescan and serves the last result immediately (warm /api/queue was waiting ~10s on the fleet scanner)","body":"Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>"},{"hash":"6b98c03","date":"2026-09-16 09:19:53 -0700","author":"Steve Abrams","subject":"TK-11793: scan budget 150s + stale-while-revalidate scan (fleet scanner is ~90s at 59 sessions); honest stale flag when the last scan is old or was the fallback","body":"Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>"},{"hash":"191e46b","date":"2026-09-16 09:13:24 -0700","author":"Steve Abrams","subject":"TK-11793: pane watcher only while a viewer is polling, 60s interval — iTerm was at 131% CPU and every AppleScript caller on the box queued behind it (dot scanner reported terminal_api unavailable x57)","body":"Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>"},{"hash":"b5244e5","date":"2026-09-16 08:48:40 -0700","author":"Steve Abrams","subject":"TK-11793: README — scale design note (async pane watcher, stale-while-revalidate)","body":"Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>"},{"hash":"3dfd1b3","date":"2026-09-16 08:48:26 -0700","author":"Steve Abrams","subject":"chore: v0.2.1 — scale fix (async pane watcher, stale-while-revalidate)","body":"Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>"},{"hash":"0ace03e","date":"2026-09-16 08:48:03 -0700","author":"Steve Abrams","subject":"TK-11793: scale fix at 51 sessions — background async pane watcher (request paths read a cache; one sync fresh read only in the POST guard), stale-while-revalidate build cache so concurrent polls never stack behind a long build","body":"Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>"},{"hash":"813fd6a","date":"2026-09-16 08:38:11 -0700","author":"Steve Abrams","subject":"chore: lint, refactor, v0.2.0 (session close)","body":"Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>"},{"hash":"c938da9","date":"2026-09-15 23:51:09 -0700","author":"Steve Abrams","subject":"TK-11793: pane batch TTL 12s + warmed once per build (/api/queue 12.6s → fast); E2E proven: posting the LABEL 'Bravo' → server translated to 2 → session ANSWER_RECEIVED=Bravo","body":"Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>"},{"hash":"2f37523","date":"2026-09-15 23:42:45 -0700","author":"Steve Abrams","subject":"TK-11793: pane is authoritative for the on-screen menu on every resolver path; menu digest = labels only; 409 exposes resolver path","body":"Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>"},{"hash":"60b190a","date":"2026-09-15 20:55:35 -0700","author":"Steve Abrams","subject":"TK-11793: server-side menu resolution — a posted LABEL is translated to its displayed number, free text against a live menu is refused (400); stale-client auto-reload on server bootId; ticket-backlog lane renders first, orphan memos capped at 25","body":"Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>"},{"hash":"1e893e7","date":"2026-09-15 20:51:56 -0700","author":"Steve Abrams","subject":"TK-11793: ?panel=1 forces the orphan/backlog panel open (bookmarkable, headless-verifiable)","body":"Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>"},{"hash":"bc4853b","date":"2026-09-15 20:45:36 -0700","author":"Steve Abrams","subject":"TK-11793 cycle 3: ticket-backlog lane — tickets waiting on Steve with NO open pane (steve_action/external_wait/blocked) surfaced under the orphan panel, urgency-sorted, route-only (adopted from night-TK-11793's parked offer)","body":"Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>"},{"hash":"2502297","date":"2026-09-15 19:39:29 -0700","author":"Steve Abrams","subject":"TK-11793: expectKey digest covers only the menu (question + option labels) — text cards' volatile tails 409'd every correct click","body":"Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>"},{"hash":"490a399","date":"2026-09-15 19:38:09 -0700","author":"Steve Abrams","subject":"TK-11793: Cody FIX-FIRST — multi-select menus refuse typed answers (focus the tab instead; no label path remains), single-question clicks answer by number immediately; nonce delimiters for the batched pane capture; guard drops pane+resolve caches for a genuinely fresh digest","body":"Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>"},{"hash":"393a954","date":"2026-09-15 19:34:56 -0700","author":"Steve Abrams","subject":"TK-11793: strip box-drawing glyphs from narrow-pane question text","body":"Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>"},{"hash":"90a2183","date":"2026-09-15 19:32:34 -0700","author":"Steve Abrams","subject":"TK-11793: README — E2E proof recorded (ANSWER_RECEIVED=Bravo), select-by-number fact, Cody holes closed","body":"Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>"},{"hash":"f7ac171","date":"2026-09-15 19:31:25 -0700","author":"Steve Abrams","subject":"TK-11793: menu answers select by DISPLAYED NUMBER (label-typing fired the cursor default — proven live, now proven fixed: ANSWER_RECEIVED=Bravo); n carried on both transcript + pane paths; batched 4KB pane read promotes un-dotted on-screen questions; optionLabel audited","body":"Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>"},{"hash":"3ae8d1e","date":"2026-09-15 19:08:24 -0700","author":"Steve Abrams","subject":"TK-11793: superseded-menu guard — a footer with a prompt box below it is scrollback, not a live menu (Cody #2 negative test passes); fix start.sh restart by pid","body":"Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>"},{"hash":"82ab1f4","date":"2026-09-15 19:05:36 -0700","author":"Steve Abrams","subject":"TK-11793: Cody HOLD fixes — real-TUI menu corroboration (footer+header/cursor, synthetic opts dropped, menu-replaces-prompt layout), queued input downgrades kind to text, content-digest expectKey, answeredQuestion=null in pane mode; negative test on prose","body":"Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>"},{"hash":"0cdcea1","date":"2026-09-15 18:56:14 -0700","author":"Steve Abrams","subject":"TK-11793: README — run, endpoints, rails, detail sources (pane-contents), verification","body":"Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>"},{"hash":"19f8c3b","date":"2026-09-15 18:52:12 -0700","author":"Steve Abrams","subject":"TK-11793: pane-contents source — iTerm screen as detail when transcript saving is off (fleet default); AskUserQuestion option parser; degenerate-scrollback flag; drop .deploy.conf","body":"Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>"},{"hash":"a0798f0","date":"2026-09-15 18:42:55 -0700","author":"Steve Abrams","subject":"TK-11793: backend (server.js + lib/queue,transcript,memo,writeback,audit) + start.sh; drop .deploy.conf (local-only tool, never deploy)","body":"Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>"},{"hash":"94bb750","date":"2026-09-15 18:36:58 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-09-15T18:34:22 (3 data files) — .deploy.conf com.steve.answer-cockpit.plist package.json","body":""},{"hash":"35c2dc9","date":"2026-09-15 18:33:25 -0700","author":"Steve Abrams","subject":"TK-11793: one-card client — public/index.html (4 card kinds, keys, poll/merge, mock mode)","body":"Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_016WD4Fjjph6qkWwUhNjA7U7"},{"hash":"2e5be82","date":"2026-09-15 18:26:34 -0700","author":"Steve Abrams","subject":"initial scaffold (answer-cockpit)","body":""}]}