Version: 0.7 (adds to v0.4–v0.6 — see below) Status: Scoped, ready for a follow-on build brief. v0.1–v0.6 already built and merged. Repos: loomworks-engine, loomworks
v0.5 fixed recordings lost to failed transcription. This is a different, structural gap: recordings are silently lost even on successful transcription, whenever the classified intent does not create a new assertion. Traced by code, confirmed:
onTranscriptReady path (not v0.5's onCaptureIncomplete path).dictationRecorder.stop() resolves a real Blob. The transcript is sent to /converse and classified.add_knowledge and change_assertion's supersede path (CR-2026-145) create an assertion and return a resource_kind: "note" reference. Every other intent — general_conversation, recall_personal, ask_about_past_input, orient, tune_setting, and any future intent that doesn't create an assertion — returns no such reference.null. The code path that would attach the Blob (if (blob && assertionId)) is skipped. The Blob is a local variable inside a closure; once the closure returns, it is garbage-collected. No held item, no error, no signal to the Operator.This is not specific to one intent — it is structural: any conversational turn whose classification does not produce a new assertion loses its recording, regardless of whether the speech was clearly and correctly transcribed. This directly undermines the reason CR-2026-146 exists: for content where verifying the original speech matters (e.g. a recorded account from an Indigenous Elder), a turn the classifier reads as "just talking" would lose its audio entirely and invisibly.
Do not gate audio retention on whether the classifier happened to create an assertion. When a live-dictation recording produces a real Blob, give the Operator a way to keep it regardless of classification outcome — options to consider at build time:
Build brief to determine the smaller, more consistent mechanism — this needs a real design decision, not an assumption, given it touches every non-assertion-creating intent, not just one.
No conflict. Operator-authority: whether a recording is kept must not depend silently on an internal classification decision the Operator never sees. "Corrections preserved, not smoothed" extends here too — an Operator's actual spoken words should not vanish because the system judged them conversational.
Changing which intents create assertions (a classifier/routing question, not this CR's concern). v0.1–v0.6 mechanics, unaffected.