bullseye: grey-render the grind trace (THINKING REVEAL)

Completes the reveal: extract_trace/_remote_grind now surface the grinder trace into room replies;
this dims those lines in the transcript so markus can watch the grind (iter progress, reasoning-
budget starvation, tier escalations) WITHOUT peeking at process RAM, visually distinct from real
output. render.py wraps ^[iter|EMPTY REPLY|reasoning|regression|stall lines in .grind-trace;
page.py styles it dim italic grey. noether authored (HTML/CSS, not grinder-gradable).
This commit is contained in:
Claude (noether)
2026-07-23 17:57:48 +02:00
parent a90115a7ca
commit 4d058dabc8
2 changed files with 4 additions and 0 deletions
+1
View File
@@ -33,6 +33,7 @@ body {{ font-family: 'Courier New', Courier, monospace; color: #c8ffc8; margin:
#status {{ background: rgba(0, 20, 0, var(--box-alpha)); border: 1px solid #0a4; border-radius: 4px; padding: 8px; margin-bottom: 10px; overflow-x: auto; }}
#status table, #status td, #status th {{ color: #c8ffc8; }}
a {{ color: #7fffa0; }}
.grind-trace {{ color: #6a6a7a; font-style: italic; display: block; opacity: 0.85; }}
input {{ background: rgba(0, 0, 0, 0.6); color: #c8ffc8; border: 1px solid #0a3; padding: 4px; }}
input::placeholder {{ color: #6a9; }}
select {{ background: rgba(0, 0, 0, 0.6); color: #c8ffc8; border: 1px solid #0a3; padding: 3px; }}
+3
View File
@@ -75,6 +75,9 @@ def md_to_html(text):
return fenced_parts[idx] if idx < len(fenced_parts) else match.group(0)
escaped = re.sub(r'\x00FENCED(\d+)\x00', restore_fenced, escaped)
# THINKING REVEAL: dim the grinder's live progress/reasoning trace lines
escaped = re.sub(r'(?m)^(\[(?:iter |EMPTY REPLY|reasoning |regression |stall ).*)$',
r'<span class="grind-trace">\1</span>', escaped)
return escaped