[object Object]

← back to Answer Cockpit

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

3ae8d1e6f35856208f50b61df1ad205abc6ae10f · 2026-09-15 19:08:24 -0700 · Steve Abrams

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

Files touched

Diff

commit 3ae8d1e6f35856208f50b61df1ad205abc6ae10f
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Tue Sep 15 19:08:24 2026 -0700

    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
    
    Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
---
 lib/transcript.js | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/lib/transcript.js b/lib/transcript.js
index 33bbe0d..14a3174 100644
--- a/lib/transcript.js
+++ b/lib/transcript.js
@@ -279,6 +279,9 @@ function parsePane(text) {
   let question = null, menuTop = -1;
   let footer = -1;
   for (let i = rawLines.length - 1; i >= 0; i--) { if (MENU_FOOTER_RE.test(rawLines[i])) { footer = i; break; } }
+  // A footer with a prompt box (border or ❯ prompt line) BELOW it is a menu left in
+  // scrollback after it was answered/superseded — not a live menu (Cody hole #2).
+  if (footer >= 0 && rawLines.slice(footer + 1).some((l) => BORDER_RE.test(l) || /^\s*❯/.test(l))) footer = -1;
   if (footer >= 0) {
     let hdr = -1;
     for (let i = footer - 1; i >= Math.max(0, footer - 40); i--) { if (MENU_HEADER_RE.test(rawLines[i])) { hdr = i; break; } }

← 82ab1f4 TK-11793: Cody HOLD fixes — real-TUI menu corroboration (foo  ·  back to Answer Cockpit  ·  TK-11793: menu answers select by DISPLAYED NUMBER (label-typ f7ac171 →