---
name: microphone-intake
description: Design and verify durable microphone or voice-feedback intake that preserves multimodal capture, fences completeness, authorizes actors server-side, and dispatches one idempotent phase-0 job. Use for public, authenticated, or support-agent voice-to-build workflows.
version: 2.0.2
updated: 2026-08-14
files: scripts/microphone-intake.mjs
---

# Microphone Intake

The importable canonical implementation is `scripts/microphone-intake.mjs`. Consumers pin this skill version and bundle hashes and import it from DATA; never copy, fork, or vendor it. It contains no provider SDK, network call, credential, or implicit spend.

`createBrowserMicrophone()` wraps MediaRecorder for explicit push-to-talk or pluggable VAD, persists chunks for resumable capture, and exposes typed readiness, degraded, and error states. Its validated `timesliceMs` transport option defaults to 1000 ms and accepts integer values from 100 through 60000 ms; DATA live calls use 250 ms (four chunks per second). This transport timing is independent of tutorial evidence cadence. Hash every audio or multimodal attachment with `sha256Attachment()`. Transcription is provider-neutral; `createDeterministicTranscriber()` is the no-network, no-spend test adapter.

Stopping transitions through `finalizing` to `stopped`. A final `dataavailable` event may arrive after either transition; its chunk is still persisted and hashed, but it cannot regress the terminal state to `capturing`.

Server code calls `authorizeMicrophoneAction()` before mutation, `checkCompletenessFence()` before finalization, and `dispatchPhase0Once()` only for a final or approved immutable revision. The dispatch store must enforce key uniqueness.

Capture evidence retains 900–1100 ms cadence, luminance at least 0.35, pixel evidence, and 60-second to 30-minute duration. Never weaken a gate.

Assign one stable recording identity across client, server, storage, transcript, and job records. Persist database metadata before attachment upload or finalization. Capture resumable audio, transcript events, route and UI activity, screenshots, device/session context, attachment hashes and object generations, and safe timing spans for permission, first audio, row creation, recorder start, provider connection, first transcript, and first result.

Keep local capture usable while provider or storage work continues asynchronously. Expose first-audio and first-transcript readiness, bounded timeouts, offline retry, reconnect, and degraded-but-still-capturing states. If durable browser storage cannot preserve attachment bytes, require explicit re-selection and verify the content hash.

Finalize behind a completeness fence containing expected transcript/content high-water marks and the complete attachment manifest. Missing material returns a typed missing/retry result; never freeze partial input as complete. Bind any required approval to an immutable proposal revision with exact content and attachment hashes plus the approver identity snapshot. Edits create a new revision.

Enforce an actor/action matrix through one server-side fail-closed helper. Distinguish anonymous submitters, owners, reviewers, administrators, narrow callbacks, and product support agents. Owners may mutate their capture; reviewers may approve or reject without rewriting source capture; callbacks receive only narrow capability. Client visibility is never authorization, and a support agent must not impersonate a person.

Gate dispatch before tracker token, job, runner, paid provider, or other side effect creation. Create at most one idempotent phase-0 job per finalized or approved revision. Project progress from the canonical lifecycle using stable phase, worker, and step keys; survive refresh, duplicate callbacks, disconnect, worker restart, and stale projections.

Never infer spend, publish, production-write, provider, notification, or outbound-message authority from capture consent. Product credentials remain server-side and separate from coding-agent authentication.

Evidence ceiling: the sweep observed a concrete OnBrand microphone implementation. Parallax was not found; SoCo and Trifecta had branding but no observed intake implementation; Vibe Chopper had no observed microphone path. Treat the Trifecta product-support-agent submission path and other named variants as required designs until independently evidenced.
