DUNIN7 · LOOMWORKS · RECORD
record.dunin7.com
Status Current
Path scoping-notes/loomworks-voice-entry-confirm-back-simplification-scoping-note-v0_1.html

Loomworks — voice-entry confirm-back simplification — scoping note — v0.1

Document: loomworks-voice-entry-confirm-back-simplification-scoping-note-v0_1 Version: v0.1 Status: scoping note — precedes a CR. Shape settled with the Operator (acknowledge-without-asking + held-card Dismiss). Sequencing vs. the remember-about-me CR is the one open question. Date: 2026-06-27 Origin: Operator asked whether the conversational confirm-back on voice entry ("I'll remember X — is that right?" → "yes") can be avoided — the second round-trip is friction when dropping a note and moving on. Seed cleared: the seed check (read-only) confirmed dropping the conversational confirm-back is clean on Operator-authority — the seed locates the Operator's approval at the held→committed transition (the Confirm button), which is structurally human-only in code (commit_assertion raises AgentCannotCommitError for agents). A held draft has no record-authority; the conversational confirm-back is redundant capture-confirmation, not the approval. Seed v0.12 lines 191, 61, 41. No seed conflict.


What changes

Today: voice entry → "I'll remember X — is that right?" → Operator says "yes" → held. Two turns from the Operator to capture one note (the confirm-back question + the "yes").

After: voice entry → "Got it — X, held." → done. One acknowledgment, no question, no round-trip. The Operator sees what was captured (so a mis-transcription is visible at the glance) but doesn't have to answer. The note lands as a held draft immediately.

This is acknowledge-without-asking — chosen over pure-silent-to-held because it keeps a glance-check at capture time (you see "Got it, Parked on Level 18" and catch the mishear immediately) without the friction of a round-trip. The acknowledgment is informative, not interrogative.

Why this is safe (the seed check's finding)

The held→committed transition is the Operator's approval, enforced structurally (an agent cannot commit; only the human's Confirm button does). A held draft is outside the record — excluded from Manifestation (manifestation.py:234, committed-only) and from recall (committed-only). So creating a held draft without a conversational confirm is not creating record state without approval — the record transition (commit) still requires the human. Dropping the confirm-back moves no authority gate.

The mandatory companion change — held-card Dismiss

The seed check found the real catch: dropping the conversational confirm-back removes the Operator's clean way to dispose of a bad transcription. Today, "no" discards a misheard capture cleanly. Without the confirm-back, a misheard draft lands in held — and the held card currently offers only Confirm, no reject/dismiss/edit (MemoryRoom.tsx:64-76). So a mis-transcription would linger as a held orphan (the same dn-18 pattern already biting the Operator) until separately retracted via the forget flow.

Therefore C ships with a Dismiss affordance on the held card — mandatory, not optional. The held-review flow becomes a clean catch: Confirm (keep it) and Dismiss (misheard — drop it). Without Dismiss, this change would increase held orphans, making the Operator's existing pain worse. The two halves ship together or not at all.

The two halves

Half 1 — engine/responder: drop the confirm-back question. The remember-about-me flow currently emits "I'll remember X — is that right?" and waits for confirmation before holding. Change it to: hold immediately on the initial entry, acknowledge with "Got it — X, held" (server-composed, naming the captured content so the Operator sees it). No confirmation turn. [The held write already happens via actor_from_companion (router.py:323) — this change removes the confirm-gate before it, not the held write itself.]

Half 2 — frontend: held-card Dismiss affordance. Add a Dismiss action to the held card (MemoryRoom.tsx) alongside Confirm. Dismiss retracts/removes the held draft cleanly (the Operator declining a capture). [CC confirms the cleanest mechanism — does declining a held map to the existing retract path, or does a held-draft need a distinct "discard before commit" that doesn't create a retraction record for something never committed? A never-committed mis-transcription arguably shouldn't leave a retraction correction in the record — it was never real. Confirm the right disposal: discard vs. retract.]

That bracketed question in Half 2 is worth the Operator's attention: should dismissing a never-committed held draft leave a correction trail, or vanish cleanly? Corrections-preserved applies to things that were in the record; a mis-transcription that never committed arguably should discard without a correction (it was noise, not a superseded fact). Lean: discard cleanly (no retraction record) for a held that was never committed — but confirm this reads right against corrections-preserved.

The optional third piece (skipped for now)

A voice input-mode marker on the assertion, so held-review can show which drafts came from voice (more likely to need a transcription check). Provenance is already adequately threaded (held state + Companion-actor marks AI-origin), so this is a nicety, not required. Noted, skipped — revisit if held-review needs to distinguish voice from typed.

The sequencing question — overlap with the remember-about-me CR

This change touches the same flow as the pending remember-about-me classifier work (F1/F2/F3 — the add-side loop, the held↔continuation match, classification). Both modify how a voice entry becomes a held note. There's a real choice:

Lean: (a) — fold into the remember-about-me CR, because both rework the same add-side flow and the confirm-back drop is cleanest done as part of fixing the classification, not as a separate edit to a flow that's about to change anyway. The remember-about-me CR is the natural home. The Dismiss affordance (Half 2, frontend) can ship independently either way — it's frontend and doesn't depend on the flow rework.

The Operator's four remember-about-me decisions are still pending and this folds into them — so this scoping note's content becomes part of the remember-about-me CR scope if (a) is chosen.

Operator decisions

  1. Confirm the shape: acknowledge-without-asking + mandatory Dismiss affordance. (Settled — this note's basis.)
  2. Half 2 disposal: dismissing a never-committed held → discard cleanly (no correction record) vs. retract (correction record). Lean: discard cleanly.
  3. Sequencing: fold into the remember-about-me CR (a, lean), ship first (b), or ship after (c)?

DUNIN7 — Done In Seven LLC — Miami, Florida Loomworks — voice-entry confirm-back simplification — scoping note — v0.1 — 2026-06-27 Drop the conversational confirm-back (acknowledge-without-asking); voice entry → held immediately, one informative acknowledgment, no round-trip. Seed-clean (approval is held→commit, structurally human-only). MANDATORY companion change: held-card Dismiss, or mis-transcriptions become held orphans. Overlaps the remember-about-me CR — lean to fold in.