Skip to content

Verify Operation Google-Level Wave-2 fixes in the running Tauri app #52

Description

@AdamMagued

Summary

Operation Google-Level Wave-2 landed a large set of fixes on the local branch integration/audit-fixes that are correct in source and pass the full static gate (pytest 2387, cargo/clippy, tsc, vitest 279, eslint, pyright) — but several change runtime contracts that no static gate can observe (IPC wire delivery, subprocess control flow, browser/CDP attach, React render/lifecycle). This is a verification-only checklist: launch the app on integration/audit-fixes and confirm each area behaves correctly. No code change is expected unless a check fails.

This supersedes the old #13/#15 (which were pinned to the obsolete audit-fixes branch with now-stale line numbers).

How to run

# ensure the venv exists, then:
cd desktop && npm run tauri dev      # Rust changes need a full restart (no hot-reload)

Checklist (exercise each in the running app)

  • Typed lifecycle events reach the UI — the orchestrator now emits typed kim:run-done / kim:agent-done / kim:agent-cancelled / kim:agent-error (F-H-1/F-H-2/F-H-8); the Rust IPC translator (desktop/src-tauri/src/subprocess.rs, forward_agent_stdout_line) re-emits them with the run envelope; useChatStream.ts consumes them. Run a task to completion, cancel one, and force one to error — confirm each terminal state renders and the spinner clears.
  • Cross-session event bleed is gone (F-F-2) — start a run, switch to a different session mid-run; confirm the first run's output does not pour into the second view (run-ownership gating).
  • Spinner-forever fixed (F-F-5) — force a run to die without a clean done; confirm kim:run-failed/kim:agent-error clears the spinner and surfaces the recovery banner.
  • Undecodable chat stdout is forwarded, not dropped (F-H-3) — a chat-mode line that fails typed decode should still surface (raw / kim:protocol-error) rather than vanish.
  • HITL approval round-trip — trigger a risky tool; the approval card appears; Approve proceeds promptly (no ~120s stall); Deny refuses cleanly.
  • Dual-spawn mutex — fire a GUI task and a kimctl/POST /v1/task run near-simultaneously; only one starts, the second is rejected; cancel kills cleanly.
  • CDP loopback + reap (F-I-4, F-J-3) — a browser-provider run launches Chrome bound to 127.0.0.1 only, and the detached CDP Chrome is reaped when Kim exits (no orphan).
  • SSRF gate (F-D-1) — a webview open to a loopback/internal/metadata host is blocked; public provider/OAuth hosts still work.
  • Bridge-token scoping (F-D-4) — the token injected into provider webviews only authorizes POST /v1/callback, not /v1/task or /v1/open.
  • CLI exit codes (F-E-1/4/7)kim doctor exits non-zero on failure; one-shot exits non-zero on FAILED/Ctrl-C; kimctl send --session no longer reports false success from a stale TASK_COMPLETE.
  • StreamRenderer perf (F-F-11) — trigger a retry on the last message; the stream re-collapses smoothly without re-rendering the whole history.

Open design question (was #15)

"Retire the legacy stdout-parse path" — note the disposition changed: F-H-3 deliberately reinforced the legacy fallback (it now forwards undecodable chat lines instead of dropping them). So retiring the legacy path is no longer a clean win; re-evaluate before doing it, and keep the Codex CLI text-protocol forwarding regardless.

Origin: Operation Google-Level, docs/ops/findings/ on branch integration/audit-fixes (not yet pushed).

Metadata

Metadata

Assignees

No one assigned

    Labels

    help wantedExtra attention is neededneeds-app-testingFix is in code but only verifiable in the running Tauri app

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions