Skip to content

session-flow/running-retro observer on Windows: visible console window at analysis spawn; ledger mojibake (UTF-8 as cp1252) #1472

Description

@kyle-sexton

Summary

Two Windows-specific defects in the session-flow running-retro detached observer (v0.17.3), observed on Windows 11 / Python 3.14:

1. Analysis subprocess flashes a visible console window

arm_observer.py's spawn_detached correctly sets DETACHED_PROCESS | CREATE_NEW_PROCESS_GROUP | CREATE_NO_WINDOW for the observer process itself — but the observer's own analysis spawn (the headless claude -p run at end-of-session) does not: a console window titled "Claude" popped up on the operator's desktop at analysis time and vanished on completion. For a feature whose selling point is "zero-footprint background observation," a surprise terminal window mid-desktop is a real UX defect — the operator's first question was whether something malicious had run.

Fix: apply the same creationflags (at minimum CREATE_NO_WINDOW) to the analysis subprocess.

2. Ledger written with mojibake (UTF-8 mis-decoded as cp1252)

The autonomous checkpoint ledger contains · for ·, – for , â€" etc. throughout — classic UTF-8-bytes-read-as-cp1252. On Windows, Python subprocess/file IO defaults to the ANSI code page unless encoding="utf-8" is explicit; somewhere in the observer's analysis-output capture or ledger write, that default is in play. (Separately observed in the same session: a subprocess.run(text=True) without explicit encoding crashed with UnicodeDecodeError: 'charmap' codec on UTF-8 API output — the same class of defect; worth an audit of every subprocess/open call in the plugin's scripts for explicit UTF-8.)

Fix: explicit encoding="utf-8" (or errors="replace") on every text-mode subprocess capture and file write; consider PYTHONUTF8=1 for spawned children.


Filed by an AI agent during an attended session (operator-directed). Related: #1468 (arm launcher NameError, same component), and the idle-detection issue filed alongside this one.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.priority: mediumReal value, no hard deadline; normal backlog flow.

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions