---
name: f019-idle-submit-translation-spawn
description: "F-019 CC idle-delivery never submits — root = translation-binary relative path NOT resolved against install_dir → Command::new fails → raw-inject fallback → binary never runs (perri confirming, v0.14.2 candidate)"
metadata: 
  node_type: memory
  type: project
  originSessionId: 98f26b98-929c-40a8-9375-cc35cb39dc8f
---

**F-019 (perri, real claude-spt v0.6.2 on Windows):** idle message delivery types the envelope into CC's input box but never submits; `{key:enter}`/`{key:ctrl+s}` appear to do nothing, deliveries "stack" unsent.

**Diagnosis arc (long, many wrong turns — record so next time is fast):**
- NOT byte encoding: rc `translate_key_event` (rc.rs:260 Enter→`\r`, :244 ctrl+S→`0x13`) emits IDENTICAL bytes to inject `key_to_bytes`. Operator confirmed rc Enter+ctrl+S SUBMIT in the same CC endpoint.
- NOT win32-input-mode (?9001h): CC enables it but accepts legacy `\r` from rc → red herring.
- NOT delivery shape/pacing: probe A (char-by-char) + A' (char-by-char +30ms) + bracketed-paste (B, markers consumed cleanly = CC IS ?2004h-aware) ALL failed.
- NOT the parser/worker: **ground truth** — instrumented the real inject worker (broker.rs:1131) + ran inject_control_wedge: `{key:ctrl+s}`→Some([13]) enqueued=true, `{key:enter}`→Some([0d]) enqueued=true, text enqueued. Keys DO reach write_input. (instrumentation reverted, tree clean.)

**ACTUAL ROOT (perri's methodology catch + doyle trace):** the translation binary **never runs** — endpoints fall back to RAW INJECT. The translate path is the manifest `[message-idle-translation-binary].path` **VERBATIM** (harnesshost.rs:142-145), spawned by the daemon as `Command::new(path)` (broker.rs:1677), with **NO join against install_dir** (comment: "resolved at spawn like every adapter command"). A **relative** path resolves against the DAEMON's cwd/PATH, not the `_github` install-dir → spawn fails → `build_translation` returns None → **FAILS CLOSED to raw inject** (broker.rs:1671-1677), which types the message+enter raw (same no-submit symptom). Evidence: 0 resident translation process; perri's minimal-variant edit ignored on a fresh endpoint; envelope still typed.

**Spawn model facts (answer to "does the daemon cache the binary?"):** NO daemon-start cache. Path re-resolved per-bringup by the CLIENT (cmd_endpoint_run→prepare_harness_spawn) from the manifest, passed in SpawnReq, spawned fresh by the broker. A fresh `endpoint run` picks up new bytes WITHOUT a daemon restart — IF the path resolves to the edited file.

**LIKELY FIX (v0.14.2):** resolve a relative translation-binary path against `install_dir` (available at `launch_harness_brokered_in`; recorded on the session). Then design+gate the actual submit behavior (may still need a CC-state fix — focus/etc. — once the real binary runs). perri confirming via absolute-path test on f19x.

**Lesson:** before deep input-byte diagnosis on a translation-binary path, FIRST confirm the binary is actually SPAWNED (resident process present; a deployed edit changes behavior). Raw-inject fallback masquerades as "the binary ran but submit failed." Kin [[v0130-milestone]] (ADR-0022 translation binary).
