NS10 slice: Build PTY-backed browser terminal harness #69
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
OBJECTIVE: Add the first deterministic
mimterminal E2E harness: launch the compiled editor under a pseudo-terminal, render it in a real browser-terminal surface, drive input, and produce screenshot/text artifacts from one local build command.AUTHORITY: Parent #65; PRODUCT.md server-side terminal editor boundary; REQUIREMENTS.md req: testing/001-004, session/001-004, input/001-002, ui/001; AGENTS.md verification rules.
AGENT AUTHORITY:
PARENT: #65 NS10 via explicit parent link and parent checklist.
SCOPE: build.zig; a small test-support harness under src/ or test-support/; browser terminal fixture/page if needed; PTY spawn/drive code; artifact output path under zig-cache or /tmp only.
BOUNDARIES:
REGRESSION CLASS: catches harness-level blind spots where unit/headless tests pass but a real PTY/browser terminal shows raw-mode skew, missing chrome, broken raw key delivery, or missing artifacts.
EVIDENCE ARTIFACTS: browser screenshot, browser/terminal text transcript, PTY input/output log or equivalent, scenario command receipt, and artifact path report.
REQUIREMENT IMPACT: requires authority attention because
terminal-e2ebecomes a durable verification obligation; implementer should cite existing REQUIREMENTS.md testing/session/input/ui anchors and update requirement authority if the new command becomes canonical.ACCEPTANCE:
zig build terminal-e2e, buildsmim, starts it under a PTY, renders through a browser terminal implementation, sends a small input script, and exits deterministically.zig build,zig build test, andzig build v1-smokeremain green.VERIFICATION:
zig build terminal-e2ezig build testzig buildredgate lint /opt/repositories/mim/REQUIREMENTS.md && redgate health /opt/repositories/mim/REQUIREMENTS.mdBLOCKERS: none.
SLICE_CONTRACT:
objective: Create the minimum PTY + browser terminal E2E harness and command.
authority: #65, PRODUCT.md, REQUIREMENTS.md testing/session/input/ui rows.
acceptance: one browser-terminal scenario drives mim and captures screenshot + transcript artifacts that catch CRLF/chrome/raw-key regressions.
verification:
zig build terminal-e2eplus canonical build/test gates.non_goals: full matrix, cloud browser, native iOS automation, runtime config/plugin surfaces.
blockers: none.
Implemented and committed #69 as
70e6418 Add PTY terminal E2E harness.What changed:
zig build terminal-e2e.tools/terminal_e2e.py, a stdlib-only PTY harness that launches the compiledmimbinary through a pseudo-terminal.what is up, use mobile-safeSpace n, save, quit..zig-cache/terminal-e2e/raw-key-chrome-crlf/:raw.binvisible-controls.txtwith visible CR/LF/ESC/control glyphstranscript.txtsemantic terminal gridscreenshot.svgbrowser-viewable screenshot artifactterminal.htmlbrowser-viewable terminal page linking the SVG^[, and overwide terminal lines.Verification:
zig build terminal-e2ezig build testzig buildzig build v1-smokezig build run -- --helpredgate list /opt/repositories/mim/REQUIREMENTS.mdredgate lint /opt/repositories/mim/REQUIREMENTS.md && redgate health /opt/repositories/mim/REQUIREMENTS.mdNotes: