2–5 September / J-013
From a voice loop to a conversation with visual context.
This update reviews 235 commits after J-012: bilingual session control, long questions, live perception, current-image grounding and recent-video experiments.
The latest branch gives each normal Qwen turn a selected view of the previous 15 seconds. That implementation is a candidate awaiting physical qualification.

What changed
Four connected pieces of work.
A conversation that holds together
Long questions, short follow-ups, interrupted answers and explicit language changes now have dedicated handling. Core keeps control of the session.
A camera with a clock
Capture recovery, timestamps and current-versus-stale scene state make it possible to distinguish a recent observation from an old one.
Voice and perception share Thor
Detection adapts to the conversational workload. Tracking moves to PVA so it competes less with Qwen on the GPU.
Recent visual context
Current-image grounding has physical evidence. The latest 15-second video-context implementation is ready for a new qualification run.
MS-08 / Conversation
Stability means keeping the right context.
After CP09-I, the next work addressed malformed reasoning markers, speculative transcription that no longer matched the spoken input, and history rollover that could remove the context needed for a follow-up. The repaired working set retains complete exchanges. A bounded two-exchange, 1,800-character carryover improved prewarming without treating the model cache as permanent memory.
A 50-turn Qwen-only probe kept the five block medians for time to first token around 228–231 ms. Its semantic checks passed 24 of 25 automatically; manual review found that the remaining answer was correct and the keyword scorer was too narrow. This supports the tested context policy over that run. It does not demonstrate lifelong memory.
Long speech now stays one Core turn across bounded transcription chunks. Complete 6.6- and 9.8-second questions were exercised without being misclassified as extended input solely because of their duration. Short follow-ups such as “Why?” and their Spanish equivalents also received explicit handling.
Several alternative approaches were rejected. Speculative decoding increased tokens per second but did not meet the net first-response improvement gate, so it did not replace the physical baseline. Story-specific long-input handling failed activation tests and gave way to a general model of the user’s conversational floor.
CP09-S made generation deterministic and kept interrupted assistant prefixes out of the next model prompt while preserving the canonical conversation record. CP09-W then added explicit spoken switching between English and Spain Spanish in the same session, including after a confirmed interruption. Core recognises a finite command grammar and gives a local acknowledgement without asking Qwen to decide the language.
The retained run exercised four successful switches, including two during active speech, with 504 checks passing and clean idle shutdown. It proves that explicit switching works within that test. Automatic language identification and mixed-language speech within one utterance remain separate work.
Timing / Keep the measurements separate
No new blanket latency claim.
The ordinary-response reference below comes from CP09-S. The later CP09-W sample mixes Qwen answers with four fast local language acknowledgements, so its median is not a fair headline for general conversation.
| Recorded test | Result | What it measures |
|---|---|---|
| CP09-S voice | 1.524 s P50 1.803 s P95 | Detected speech end to first generated PCM. This is not an independently measured acoustic hearing timestamp. |
| CP09-S Qwen | 194.2 ms P50 207.0 ms P95 | Time to first token, 20 Qwen samples. Model timing is only one part of response latency. |
| CP09-W language acknowledgements | 782–1,148 ms | Local control replies that bypass Qwen. The mixed seven-response run is not directly comparable to ordinary answers. |
| 640×480 current image | 351.9 ms TTFT | Visual model time to first token for one physical test. The full 547-character generation took 11.852 seconds; integrated voice/vision onset was not measured. |
The standing ≤1.3-second P95 voice target has not passed. The previous 1.3705-second median in J-012 remains a dated eight-response result, not the current headline or a promise that every reply is faster.
MS-09 / Capture and coexistence
Seeing continuously without starving the conversation.
The C920 could fall to roughly 15 FPS when the dynamic-framerate control reset. Reapplying and reading back that control restored about 30.92 FPS before and after a USB reconnect. A separate kernel-clock test measured 29.89 FPS and a latest-frame age of 24.216 ms, then demonstrated the transition from current to stale. That capture-clock result does not yet prove the freshness of every semantic image sent to Qwen.
The perception path now connects camera capture, RT-DETR detection, NvDCF tracking and typed scene metadata. Core controls how much work is admitted. Fixed detector schedules at 30, 15 and 10 FPS hurt voice performance; the adaptive candidate changes its interval from 2 to 32 during generation and back to 2 afterwards, while camera capture and tracking stay near 30 FPS.
Moving NvDCF tracking from CUDA to PVA reduced contention in the isolated comparison. Median Qwen request-to-onset was 712.2 ms with PVA, compared with 844.9 ms using CUDA and 696.9 ms without perception. The PVA diagnostic also processed 3,590 frames at 29.91 FPS with no invalid metadata. These are coexistence diagnostics, not end-of-speech-to-audible-answer results or a passed full-duplex gate.
Current-image grounding
The resident Qwen model can receive the camera image.
The current-image bridge captures a JPEG from the same camera path and hands it through a bounded in-memory media broker. An attempted separate Qwen3-VL 8B FP8 service failed on a DeepGEMM compatibility issue with Thor before an image request ran. That was a runtime failure, not a model-quality comparison.
The next test used the resident Qwen3.8 model’s native multimodal interface. At 256×256, it incorrectly treated a person in a background collage as another physical person in the room. A full 640×480 image corrected that scene interpretation in the retained physical test. A 720p capture experiment followed. The follow-up also strengthened grounding instructions, so this result does not isolate resolution alone. Broad visual accuracy and voice/vision response timing remain unqualified.
Recent video / Results and next candidate
Receiving video is not the same as understanding motion.
Two-second/four-frame and four-second/eight-frame clips reached the model and produced text, but both failed the intended motion test. First text arrived at about 751 ms and 1,245 ms respectively. Later endpoint-image and resolution diagnostics also failed the motion rubric.
The fixture itself had problems: its first selected frame was about 540 ms after the motion cue, and camera-versus-operator left/right wording was ambiguous. The evidence therefore cannot establish that the model is incapable of temporal reasoning. A calibrated motion fixture was implemented to separate a bad test from a model limitation.
CP07 keeps a rolling RAM window at 4 FPS, with capacity for 61 JPEG frames. It selects 16 frames using eight uniform samples and eight change peaks, builds a 640×360 in-memory MP4, and attaches it to each normal Qwen turn. Local control commands and cache prewarming remain media-free.
This changes the previous on-demand-only plan. The candidate aims to support questions about ordinary recent actions without a special visual-request phrase. Physical quality, interruption behaviour, resource use and integrated voice/video latency still need qualification.
The window is temporary visual processing, not permanent memory. Raw images and clips are handled in RAM without named media files in this path. Core remains responsible for admission, freshness and cleanup. The candidate attaches context during an active session; it does not authorise indefinite retention.
Where the project stands
Retain the working baselines. Qualify the combined system.
- Keep CP09-W as the frozen explicit bilingual voice baseline and CP05 as the retained voice/perception rollback point.
- Run the 15-second candidate on Thor with calibrated actions, grounded answers and measured end-to-end timing.
- Close the remaining overlap, cancellation, recovery and P95 latency gates. A shutdown/provenance cleanup failure during resumed WAIT/CONTINUE playback remains recorded.
- Continue governed memory, relationships and internet work through their own acceptance gates before Alpha or powered embodiment.
MS-08 and MS-09 both remain in progress and blocked at their formal acceptance gates. Core, cognition, visual processing and speech run locally; speech recognition also uses the resident Cohere Transcribe service locally on Thor.
Engineering references and review cutoff
Website baseline: v1.6.0, commit 39272e79837fa51147d4e9c7181d123df3c3c2d7. Engineering comparison begins after b4d7212f827006578c628c380f10435757777f31; J-012 already covered the early CP09-J scaffold.
- CP09-W frozen executable
b3717d20f454a19bba2f140dbb5886546d9fed3c- CP05 retained rollback
5ff20fd9afd22f697c29962f15b3ed0f31ca748f- Current-image physical test
60784517· CP06-B, 640×480- Latest reviewed implementation record
443db7f53e623983842917568ab25b0dce44caea· CP07, recorded 4 September 22:32 UTC / 5 September in Spain
Evidence: CP09-S and CP09-W freeze records; CP09-Q2/S physical reports; CP09-O live-session plan; MS09 CP02/03 physical records; ADR-0038/0039/0040; CP06-B/D/E/F/G experiment records; and the CP07 15-second implementation record. Checkpoint names identify the evidence scope; a frozen branch is not a formal milestone pass.

