NS10 slice: Define and run the terminal E2E matrix #66

Closed
opened 2026-06-21 14:50:34 +00:00 by tmk241 · 1 comment
Owner

OBJECTIVE: Turn the harness into a small orthogonal matrix runner that covers the terminal dimensions most likely to break mim: viewport, color capability, file state, input profile, and mode surface.

AUTHORITY: Parent #65 MATRIX EXPECTATION; KEYMAP.md; REQUIREMENTS.md req: testing/001-004, input/001-007, ui/001-002, governance/004.

AGENT AUTHORITY:

  • Delivery authority: local-commit
  • Tracker authority: this issue may be commented and closed when acceptance passes; update/comment parent #65 checklist.
  • Handoff state: committed clean, tracker commented/closed.

PARENT: #65 NS10 via explicit parent link and parent checklist.

SCOPE: matrix definitions, scenario metadata, build target behavior, artifact naming/organization.

BOUNDARIES:

  • No combinatorial explosion. Prefer pairwise/orthogonal coverage with named rationale.
  • No public product feature-flag matrix. This is test support only.
  • No external cloud services.

REGRESSION CLASS: catches coverage gaps where one happy-path E2E passes while another viewport, file state, color capability, input profile, or mode surface is broken.

EVIDENCE ARTIFACTS: matrix manifest, per-scenario screenshots, per-scenario semantic transcripts, scenario ids, and failure artifact paths.

REQUIREMENT IMPACT: protects existing testing/input/ui requirement authority; requires authority update only if matrix dimensions become durable product verification obligations.

ACCEPTANCE:

  • zig build terminal-e2e runs a named matrix, not a single hard-coded case.
  • Matrix includes at least: narrow and medium viewport; empty/existing/new file; insert/normal/panel mode entry points; attached-keyboard and mobile Space-path input scripts; and at least two terminal color capability modes or simulated degradations.
  • Each matrix row has a stable scenario id, fixture setup, input script, expected semantic assertions, and artifact paths.
  • Failures report the scenario id and the exact artifact paths.
  • The matrix is small enough to run locally by default; any larger/slow set is opt-in via a build step/profile, not runtime product config.

VERIFICATION:

  • zig build terminal-e2e
  • zig build test
  • zig build v1-smoke
  • redgate lint /opt/repositories/mim/REQUIREMENTS.md && redgate health /opt/repositories/mim/REQUIREMENTS.md

BLOCKERS: depends on initial terminal harness #69 and preferably control-byte artifacts #70.

SLICE_CONTRACT:
objective: Add a small high-signal E2E matrix runner.
authority: #65, KEYMAP.md, REQUIREMENTS.md testing/input/ui/governance rows.
acceptance: terminal-e2e executes named matrix rows with viewport/file/input/mode/color coverage and diagnosable artifacts.
verification: zig build terminal-e2e plus canonical gates.
non_goals: exhaustive combinatorics, product feature flags, cloud service.
blockers: harness seam exists.

OBJECTIVE: Turn the harness into a small orthogonal matrix runner that covers the terminal dimensions most likely to break `mim`: viewport, color capability, file state, input profile, and mode surface. AUTHORITY: Parent #65 MATRIX EXPECTATION; KEYMAP.md; REQUIREMENTS.md req: testing/001-004, input/001-007, ui/001-002, governance/004. AGENT AUTHORITY: - Delivery authority: local-commit - Tracker authority: this issue may be commented and closed when acceptance passes; update/comment parent #65 checklist. - Handoff state: committed clean, tracker commented/closed. PARENT: #65 NS10 via explicit parent link and parent checklist. SCOPE: matrix definitions, scenario metadata, build target behavior, artifact naming/organization. BOUNDARIES: - No combinatorial explosion. Prefer pairwise/orthogonal coverage with named rationale. - No public product feature-flag matrix. This is test support only. - No external cloud services. REGRESSION CLASS: catches coverage gaps where one happy-path E2E passes while another viewport, file state, color capability, input profile, or mode surface is broken. EVIDENCE ARTIFACTS: matrix manifest, per-scenario screenshots, per-scenario semantic transcripts, scenario ids, and failure artifact paths. REQUIREMENT IMPACT: protects existing testing/input/ui requirement authority; requires authority update only if matrix dimensions become durable product verification obligations. ACCEPTANCE: - `zig build terminal-e2e` runs a named matrix, not a single hard-coded case. - Matrix includes at least: narrow and medium viewport; empty/existing/new file; insert/normal/panel mode entry points; attached-keyboard and mobile Space-path input scripts; and at least two terminal color capability modes or simulated degradations. - Each matrix row has a stable scenario id, fixture setup, input script, expected semantic assertions, and artifact paths. - Failures report the scenario id and the exact artifact paths. - The matrix is small enough to run locally by default; any larger/slow set is opt-in via a build step/profile, not runtime product config. VERIFICATION: - `zig build terminal-e2e` - `zig build test` - `zig build v1-smoke` - `redgate lint /opt/repositories/mim/REQUIREMENTS.md && redgate health /opt/repositories/mim/REQUIREMENTS.md` BLOCKERS: depends on initial terminal harness #69 and preferably control-byte artifacts #70. SLICE_CONTRACT: objective: Add a small high-signal E2E matrix runner. authority: #65, KEYMAP.md, REQUIREMENTS.md testing/input/ui/governance rows. acceptance: terminal-e2e executes named matrix rows with viewport/file/input/mode/color coverage and diagnosable artifacts. verification: `zig build terminal-e2e` plus canonical gates. non_goals: exhaustive combinatorics, product feature flags, cloud service. blockers: harness seam exists.
tmk241 added the slice label 2026-06-21 14:50:34 +00:00
Author
Owner

Implemented and committed #66 as 5d7f239 Add terminal E2E matrix runner.

What changed:

  • Converted tools/terminal_e2e.py from one hard-coded scenario into an explicit scenario matrix.
  • zig build terminal-e2e now runs four named rows:
    • raw-key-chrome-crlf: 48x16 empty file, iOS default QWERTZ Space path, truecolor
    • attached-existing-medium: 72x18 existing file, attached-keyboard path, truecolor
    • new-file-mono-narrow: 40x12 new file, iOS default QWERTZ Space path, mono
    • directory-panel-narrow: 52x12 directory/panel entry, iOS default QWERTZ Space path, mono
  • Matrix writes .zig-cache/terminal-e2e/matrix.tsv plus per-scenario artifacts.
  • Added an ergonomic guard: ios-default-qwertz-space-path scenarios may use only letters and Space from the default iOS software keyboard; attached-key scenarios are where Esc/arrows/punctuation belong.
  • Added truecolor SGR assertions and cursor-not-pinned assertions. The matrix caught the pinned cursor-marker regression, and this commit fixes the renderer so the cursor marker follows the actual cursor column.
  • Updated terminal E2E docs with input-profile rules.

Verification:

  • zig build terminal-e2e
  • zig build test
  • zig build
  • zig build v1-smoke
  • redgate list /opt/repositories/mim/REQUIREMENTS.md
  • redgate lint /opt/repositories/mim/REQUIREMENTS.md && redgate health /opt/repositories/mim/REQUIREMENTS.md

Evidence artifacts are under ignored .zig-cache/terminal-e2e/; generated artifacts did not dirty the source tree.

Implemented and committed #66 as `5d7f239 Add terminal E2E matrix runner`. What changed: - Converted `tools/terminal_e2e.py` from one hard-coded scenario into an explicit scenario matrix. - `zig build terminal-e2e` now runs four named rows: - `raw-key-chrome-crlf`: 48x16 empty file, iOS default QWERTZ Space path, truecolor - `attached-existing-medium`: 72x18 existing file, attached-keyboard path, truecolor - `new-file-mono-narrow`: 40x12 new file, iOS default QWERTZ Space path, mono - `directory-panel-narrow`: 52x12 directory/panel entry, iOS default QWERTZ Space path, mono - Matrix writes `.zig-cache/terminal-e2e/matrix.tsv` plus per-scenario artifacts. - Added an ergonomic guard: `ios-default-qwertz-space-path` scenarios may use only letters and Space from the default iOS software keyboard; attached-key scenarios are where Esc/arrows/punctuation belong. - Added truecolor SGR assertions and cursor-not-pinned assertions. The matrix caught the pinned cursor-marker regression, and this commit fixes the renderer so the cursor marker follows the actual cursor column. - Updated terminal E2E docs with input-profile rules. Verification: - `zig build terminal-e2e` - `zig build test` - `zig build` - `zig build v1-smoke` - `redgate list /opt/repositories/mim/REQUIREMENTS.md` - `redgate lint /opt/repositories/mim/REQUIREMENTS.md && redgate health /opt/repositories/mim/REQUIREMENTS.md` Evidence artifacts are under ignored `.zig-cache/terminal-e2e/`; generated artifacts did not dirty the source tree.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: tmk241/mim#66