NS10 slice: Prove LSP-assisted coding workflows in terminal E2E #75

Closed
opened 2026-06-21 16:36:08 +00:00 by tmk241 · 2 comments
Owner

OBJECTIVE: Add browser-terminal E2E coverage proving that LSP-like assistance workflows (hover, signature help, parameter navigation, go-to/jump, diagnostics, formatting/code actions) remain reachable, viewport-safe, and useful during coding.

AUTHORITY: Parent #65 (NS10), PRODUCT.md mobile-first terminal editor boundary, REQUIREMENTS.md testing/input/ui/session rows, KEYMAP.md language/navigation/help workflow grammar, existing LSP/language-provider slices (#42, #50, #51, #52, #54), and the user request to extend NS10 to prove LSP working.

AGENT AUTHORITY:

  • Delivery authority: local-commit
  • Tracker authority: this issue may be commented and closed when acceptance passes
  • Handoff state: committed clean, tracker commented/closed

PARENT: #65 via parent checklist membership plus this explicit parent reference.

SCOPE: terminal E2E fixtures/scenarios, existing language-provider/test-fixture seams, hover/signature/diagnostic/code-action panels, and viewport/color artifacts needed to prove them. Prefer deterministic in-process fixtures over launching a real external LSP server.

BOUNDARIES: Do not add a runtime plugin system, package manager, hidden LSP installer, external language server dependency, or fake UI text that is not connected to the existing provider path. Do not broaden into all LSP features; pick representative coding-critical flows with deterministic proof.

ACCEPTANCE:

  • Browser-terminal E2E includes at least one coding scenario where language assistance is seeded through the existing provider/fixture path and then driven through reachable KEYMAP actions.
  • The scenario proves hover/help and signature/parameter context are viewport-safe on a narrow terminal, with screenshot/transcript artifacts.
  • The scenario proves a navigation or jump workflow (definition/reference/diagnostic or equivalent existing provider action) changes cursor/file context observably.
  • The scenario proves a formatting or code-action workflow mutates the buffer through the real provider/action seam and final saved content is asserted.
  • Keystroke artifact records the user input cost for the assisted workflow once the keystroke-budget slice is available.
  • Failure artifacts make it clear whether the regression is provider seeding, key routing, viewport rendering, panel focus, or buffer mutation.

REGRESSION CLASS: LSP/help workflows silently becoming unreachable, too wide for iPhone-sized terminals, losing focus, not mutating the buffer, or requiring desktop-only keys.

EVIDENCE ARTIFACTS: terminal screenshots/SVG, semantic transcript, visible-control transcript, saved buffer receipt, keystroke TSV/manifest rows.

REQUIREMENT IMPACT: protects existing REQUIREMENTS.md testing/input/ui/session authority and prior language-provider issue contracts; update requirements only if new LSP E2E obligations are made durable.

VERIFICATION: zig build terminal-e2e; zig build test; zig build; redgate lint/health if requirements/docs change.

BLOCKERS: keystroke-budget slice for budget-gated input-cost assertions; otherwise none if existing provider fixtures are sufficient.

SLICE_CONTRACT:
objective: Prove deterministic LSP-like coding assistance workflows in browser-terminal E2E.
authority: #65, PRODUCT.md, REQUIREMENTS.md testing/input/ui/session rows, KEYMAP.md, existing language-provider slices.
acceptance: hover/signature viewport proof + navigation proof + code-action/format mutation proof + artifacts and keystroke receipt.
verification: zig build terminal-e2e; zig build test; zig build; redgate as needed.
non_goals: no external LSP server/installers/plugins, no broad all-feature matrix, no fake unconnected UI.
blockers: keystroke-budget mechanism for budget assertions.

OBJECTIVE: Add browser-terminal E2E coverage proving that LSP-like assistance workflows (hover, signature help, parameter navigation, go-to/jump, diagnostics, formatting/code actions) remain reachable, viewport-safe, and useful during coding. AUTHORITY: Parent #65 (NS10), PRODUCT.md mobile-first terminal editor boundary, REQUIREMENTS.md testing/input/ui/session rows, KEYMAP.md language/navigation/help workflow grammar, existing LSP/language-provider slices (#42, #50, #51, #52, #54), and the user request to extend NS10 to prove LSP working. AGENT AUTHORITY: - Delivery authority: local-commit - Tracker authority: this issue may be commented and closed when acceptance passes - Handoff state: committed clean, tracker commented/closed PARENT: #65 via parent checklist membership plus this explicit parent reference. SCOPE: terminal E2E fixtures/scenarios, existing language-provider/test-fixture seams, hover/signature/diagnostic/code-action panels, and viewport/color artifacts needed to prove them. Prefer deterministic in-process fixtures over launching a real external LSP server. BOUNDARIES: Do not add a runtime plugin system, package manager, hidden LSP installer, external language server dependency, or fake UI text that is not connected to the existing provider path. Do not broaden into all LSP features; pick representative coding-critical flows with deterministic proof. ACCEPTANCE: - Browser-terminal E2E includes at least one coding scenario where language assistance is seeded through the existing provider/fixture path and then driven through reachable KEYMAP actions. - The scenario proves hover/help and signature/parameter context are viewport-safe on a narrow terminal, with screenshot/transcript artifacts. - The scenario proves a navigation or jump workflow (definition/reference/diagnostic or equivalent existing provider action) changes cursor/file context observably. - The scenario proves a formatting or code-action workflow mutates the buffer through the real provider/action seam and final saved content is asserted. - Keystroke artifact records the user input cost for the assisted workflow once the keystroke-budget slice is available. - Failure artifacts make it clear whether the regression is provider seeding, key routing, viewport rendering, panel focus, or buffer mutation. REGRESSION CLASS: LSP/help workflows silently becoming unreachable, too wide for iPhone-sized terminals, losing focus, not mutating the buffer, or requiring desktop-only keys. EVIDENCE ARTIFACTS: terminal screenshots/SVG, semantic transcript, visible-control transcript, saved buffer receipt, keystroke TSV/manifest rows. REQUIREMENT IMPACT: protects existing REQUIREMENTS.md testing/input/ui/session authority and prior language-provider issue contracts; update requirements only if new LSP E2E obligations are made durable. VERIFICATION: `zig build terminal-e2e`; `zig build test`; `zig build`; redgate lint/health if requirements/docs change. BLOCKERS: keystroke-budget slice for budget-gated input-cost assertions; otherwise none if existing provider fixtures are sufficient. SLICE_CONTRACT: objective: Prove deterministic LSP-like coding assistance workflows in browser-terminal E2E. authority: #65, PRODUCT.md, REQUIREMENTS.md testing/input/ui/session rows, KEYMAP.md, existing language-provider slices. acceptance: hover/signature viewport proof + navigation proof + code-action/format mutation proof + artifacts and keystroke receipt. verification: zig build terminal-e2e; zig build test; zig build; redgate as needed. non_goals: no external LSP server/installers/plugins, no broad all-feature matrix, no fake unconnected UI. blockers: keystroke-budget mechanism for budget assertions.
tmk241 added the sliceready-for-agent labels 2026-06-21 16:36:08 +00:00
Author
Owner

Progress committed in 38c487f (Add LSP-assisted terminal E2E coverage).

What is now covered in browser-terminal E2E:

  • Deterministic provider prelude (--e2e-prelude-file, harness-only) seeds hover, signature, diagnostics, and format fixtures before raw-mode input.
  • Scenario lsp-assisted-coding drives real terminal keys through reachable KEYMAP actions: Space l h hover, Space l s signature, diagnostics panel + diagnostic jump, and Space l f provider format.
  • Artifacts prove viewport-safe hover/signature text, diagnostic panel/jump evidence, provider mutation visible in the editor (ZLS), and format status (format:zls:applied).
  • Keystroke budget is enforced: key_events=17, max_key_events=17, key_budget=pass.

Verification:

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

Evidence from latest run:

  • .zig-cache/terminal-e2e/lsp-assisted-coding/visible-controls.normalized.txt includes [zls] add(lhs, rhs), signature active parameter text, diag:fresh:zls, format:zls:applied, and visible ZLS buffer mutation.
  • .zig-cache/terminal-e2e/lsp-assisted-coding/manifest.tsv records the 17-key budget pass.
  • .zig-cache/terminal-e2e/lsp-assisted-coding/keystrokes.tsv lists the raw workflow input.

Not closing #75 yet: the issue acceptance also asks for a saved-content receipt after provider format/code-action mutation. Current E2E proves visible mutation and status but exits with discard because save/dirty handling after language-format still needs a bounded follow-up fix.

Progress committed in `38c487f` (`Add LSP-assisted terminal E2E coverage`). What is now covered in browser-terminal E2E: - Deterministic provider prelude (`--e2e-prelude-file`, harness-only) seeds hover, signature, diagnostics, and format fixtures before raw-mode input. - Scenario `lsp-assisted-coding` drives real terminal keys through reachable KEYMAP actions: `Space l h` hover, `Space l s` signature, diagnostics panel + diagnostic jump, and `Space l f` provider format. - Artifacts prove viewport-safe hover/signature text, diagnostic panel/jump evidence, provider mutation visible in the editor (`ZLS`), and format status (`format:zls:applied`). - Keystroke budget is enforced: `key_events=17`, `max_key_events=17`, `key_budget=pass`. Verification: - `zig build terminal-e2e` ✅ - `zig build test` ✅ - `zig build` ✅ - `zig build v1-smoke` ✅ - `redgate lint /opt/repositories/mim/REQUIREMENTS.md && redgate health /opt/repositories/mim/REQUIREMENTS.md` ✅ Evidence from latest run: - `.zig-cache/terminal-e2e/lsp-assisted-coding/visible-controls.normalized.txt` includes `[zls] add(lhs, rhs)`, signature active parameter text, `diag:fresh:zls`, `format:zls:applied`, and visible `ZLS` buffer mutation. - `.zig-cache/terminal-e2e/lsp-assisted-coding/manifest.tsv` records the 17-key budget pass. - `.zig-cache/terminal-e2e/lsp-assisted-coding/keystrokes.tsv` lists the raw workflow input. Not closing #75 yet: the issue acceptance also asks for a saved-content receipt after provider format/code-action mutation. Current E2E proves visible mutation and status but exits with discard because save/dirty handling after language-format still needs a bounded follow-up fix.
Author
Owner

Completed in a96b9e8 (Save LSP format E2E mutation).

What changed since the previous progress receipt:

  • Explicit language format now marks the next save to skip the immediate format-on-save pass when it already changed the document, preventing a stale second provider-format pass from blocking the save.
  • lsp-assisted-coding now uses Space w + Space q instead of discard quit and asserts final saved content ZLS.

Full #75 coverage now in terminal E2E:

  • Harness-only prelude seeds deterministic provider fixtures (hover, signature, diagnostics, format).
  • Raw key workflow proves hover, signature/active parameter, diagnostics panel + diagnostic jump, provider format mutation, save, and quit.
  • Keystroke budget passes (key_events=19, max_key_events=19).
  • Saved-content receipt is asserted by the scenario (expect_saved=ZLS).

Verification:

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

Evidence from latest run:

  • .zig-cache/terminal-e2e/lsp-assisted-coding/manifest.tsv: key_events=19, max_key_events=19, key_budget=pass, saved hash for ZLS.
  • .zig-cache/terminal-e2e/lsp-assisted-coding/visible-controls.normalized.txt: hover/signature text, diag:fresh:zls, visible ZLS, format:zls:applied, and saved.
  • .zig-cache/terminal-e2e/lsp-assisted-coding/keystrokes.tsv: raw workflow steps and bytes.
Completed in `a96b9e8` (`Save LSP format E2E mutation`). What changed since the previous progress receipt: - Explicit language format now marks the next save to skip the immediate format-on-save pass when it already changed the document, preventing a stale second provider-format pass from blocking the save. - `lsp-assisted-coding` now uses `Space w` + `Space q` instead of discard quit and asserts final saved content `ZLS`. Full #75 coverage now in terminal E2E: - Harness-only prelude seeds deterministic provider fixtures (hover, signature, diagnostics, format). - Raw key workflow proves hover, signature/active parameter, diagnostics panel + diagnostic jump, provider format mutation, save, and quit. - Keystroke budget passes (`key_events=19`, `max_key_events=19`). - Saved-content receipt is asserted by the scenario (`expect_saved=ZLS`). Verification: - `zig build terminal-e2e` ✅ - `zig build test` ✅ - `zig build` ✅ - `zig build v1-smoke` ✅ - `redgate lint /opt/repositories/mim/REQUIREMENTS.md && redgate health /opt/repositories/mim/REQUIREMENTS.md` ✅ Evidence from latest run: - `.zig-cache/terminal-e2e/lsp-assisted-coding/manifest.tsv`: `key_events=19`, `max_key_events=19`, `key_budget=pass`, saved hash for `ZLS`. - `.zig-cache/terminal-e2e/lsp-assisted-coding/visible-controls.normalized.txt`: hover/signature text, `diag:fresh:zls`, visible `ZLS`, `format:zls:applied`, and `saved`. - `.zig-cache/terminal-e2e/lsp-assisted-coding/keystrokes.tsv`: raw workflow steps and bytes.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: tmk241/mim#75