Repository navigation
Conversation
… flip gate item 5 Adds rewrite/parity/real-terminal/: node-pty -> SSE -> xterm.js harness that runs legacy term2 and term2-next in a real terminal, a synthetic store generator that clones blocks each CLI itself recorded, key-to-paint latency per key class (idle and while streaming), a masked screenshot walk with pixel diffs and an HTML report, and soak terminals plus the soak brief. Dev deps: @xterm/xterm and @lydell/node-pty (prebuilt). Not a CI test. Refs #140 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JqbJBA8gEkw2cWpatDZGtX
…gate refinements Store timings wait for a real home state after closing the resume list, the mode-switch restore matches both CLIs' clear-session prompts, the xterm.js scrollbar is hidden from screenshots, aborted phases are reported instead of ending the run, and a class neither CLI paints is n/a rather than a failure. Refs #140 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JqbJBA8gEkw2cWpatDZGtX
… Escape until home term2-next draws menus as a box closing right above the separator, and a resume list can be taller than the old 18-row window, so the harness could type into an open list and resume a session by accident. Home is now one shared check, and Escape is retried until home is verified. Opt-in raw pty log (RT_RAW_LOG). Refs #140 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JqbJBA8gEkw2cWpatDZGtX
…oser Refs #140 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JqbJBA8gEkw2cWpatDZGtX
Owner
Author
|
Note: the session working on #140 is still running. This draft was opened from a mid-work snapshot of its branch. Hold any review or run until that session finishes. |
…ng the stream; match term2-next's narrow resume list Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JqbJBA8gEkw2cWpatDZGtX
…s answering instead of waiting Every expected screen now appears within 5 s or fails. A frozen CLI (term2-next while it builds its catalogue on the first /resume) is replaced by a fresh one on the same home so a late paint cannot land in a later sample. Dialog detection no longer mistakes a transcript code box for a dialog. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JqbJBA8gEkw2cWpatDZGtX
…mposer; log what it showed Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JqbJBA8gEkw2cWpatDZGtX
…tore) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JqbJBA8gEkw2cWpatDZGtX
…port-only to add it to a finished run Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JqbJBA8gEkw2cWpatDZGtX
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #140 (part of #65). This is a draft: the owner's team integrates it, so don't mark it ready or merge it from here. The session that built it has now finished, and the run results and the soak are committed.
It adds a harness under
rewrite/parity/real-terminal/that runs legacy term2 (dist/cli.js, the spec) and term2-next (rewrite/dist/rewrite/src/app/cli.js) side by side in a real terminal emulator.Verdict: the gate fails on all three parts.
Every difference is listed below as unexplained. None was fixed, and no product code changed: the diff has nothing under
source/orrewrite/src/.Branch note: the issue names
cloud/real-terminal-check, but this session may only push toclaude/ecstatic-tesla-86lzj4, so the work is here.One command
On a fresh checkout it installs dependencies, builds whichever CLI is missing, generates a synthetic store if
--storeis omitted, and writesreport.htmlandresults.json.run.mjs --out <dir> --report-only --soak <file>.rewrite/parity/real-terminal/README.mdhas the options and the debugging traps found while building it.What it does
catecho through the same path): p50 2.6 ms, max 6.3 ms.HOME/XDG_*, its own fake OpenAI-compatible provider with the same scripted replies, and a private copy of the store for each run. Keys are typed one per write.generate-store.mjs). Generated, not copied.soak.mjsplusSOAK-BRIEF.md.Environment
c21e8e0(harness only; product code is main's)Report
rewrite/parity/real-terminal/report/report.htmlhas the side-by-side screenshots, pixel diffs, differing text rows, latency tables (including CPU and bytes per key), screens for missed keys, and the soak list. Open it from a checkout, since GitHub shows only the HTML source. Raw samples are inreport/results.json.Store timings (420 MB store)
/resume→ list/resumeFor context: an earlier run with no time limit measured next's first
/resumeat 153 s, and the UI ignored every key meanwhile, Escape included. The soak saw about 2.5 min, twice.Key-to-paint latency, ms (p50 / p95 / max)
The gate: p50 and p95 within 1.2x legacy or legacy + 5 ms, and no key over 200 ms. Missed keys count against next only where it misses more than legacy. "n/a" means neither CLI painted.
100x34 idle
100x34 streaming
/resumewhile streaming)80x24 idle
80x24 streaming
Screenshots
0/60 pairs are identical after masks (30 steps × 2 sizes). The share of pixels that differ ranges from 3.0% (startup, 100x34) to 21.5% (
/help, 80x24). The report shows each pair, its diff and the text rows that differ.Soak differences (all unexplained)
A context-free agent used both CLIs for 30 minutes (07:16:43–07:47:03 UTC). It saw them only as A and B; the random mapping turned out to be A = legacy, B = next. The agent's full wording is in
report/soak-differences.md. Each item fails the gate unless it is accepted.Profile: barevsProfile: BARECtx 1kvs0% cached · Ctx last 1kCtxafter a model switch✓ ls (34ms)vs✓ Shell command (12ms), in different coloursDeny without reasonandCtrl+G)/menu is aFilter:box below the input (legacy) vs a list above it (next)/menu commands, order and descriptions differ/regives different results; legacy's wrapped line is indented wrong at 80 columns/menu runs the command (legacy) vs completes it (next)/helpcontents and shortcut text differ/modelopens on All with models listed (legacy) vs an empty tab (next)/settingslayout differs (tabs, columns, markers, detail pane)/settingsshows values differently ((none)vs[configured],ON/OFFvstrue/false, …)/effortand/auto-approveand shows anAutobadge in the status bar/profileopens a picker (legacy) vs prints usage (next)/providersopens a menu (legacy) vs prints a line (next)/auto-approveopens a picker (legacy) vs prints usage (next)/mcpopens a management menu (legacy) vs prints instructions (next)/tasksexists only in next/sandboxmessage and status badge differ/compactfails in legacy (it needs compaction settings the soak home doesn't have) and succeeds in next/handoffasks for a message (legacy) vs starts a new conversation at once (next), and next's reply is cut off mid-word/retryafter a cancelled tool turn saysNo tool call to retry.(legacy) vs regenerates the turn (next)/clearkeeps the history with a divider and a welcome line (legacy) vs wipes the screen to a bare header (next)/copyafter a clear differs (the transcripts had already diverged, see 28)/rewindflow and messages differ/undoturn list differs (4 truncated turns vs 13 wrapped)/resumefroze for about 2.5 min, twice; legacy opened in 1–3 sResumed conversationand shows a short transcript with a duplicated line; next prints nothing and shows many turns@mention menu style, contents and order differ!shell mode shows a red!prompt (legacy) vs❯ !(next)PLANheader (next)~)PLANheader while streaming, and earlier lines are cut offStoppeddiffers/queue+ Enter in next (queue paused) hung for over 60 sPress Ctrl+C again to exitdiffers; legacy once showed twoterm2vsterm2-next, how the id is quoted)Also found by the scripted checks:
/resumewhile a reply streams; next opens itWhat couldn't run, and why
ssh to localhost: this environment has no sshd. The node-pty bridge was used instead, as the issue allows, and the report records that.
Resume-list keys for next: on the 420 MB store the list never paints within 5 s (catalogue build), so those keys are recorded as fails and not sent. Legacy refuses
/resumewhile streaming, so that cell is n/a.Soak coverage: the agent did not try
/mentor,/orchestrator,/restart,/bridge,/mcp-login,/steer,/followup,/cancel,/answer, Ctrl+B, or the model picker's nickname and favourite keys. From about 07:20 the two soak sessions drifted apart after item 28, so some later counts compare different transcripts.Harness fixes along the way (debugging notes are in the README):
All three are fixed. The committed report comes from the clean run at
c21e8e0.🤖 Generated with Claude Code
https://claude.ai/code/session_01JqbJBA8gEkw2cWpatDZGtX