---
title: "S10 bindings"
description: "Data-binding map of Diagnostic · Mic purpose sheet (pre-permission): every field to its source, and what each required state shows."
source: "design/hifi/S10/bindings.md"
---

> Part of [Brand and design](/design/llms.txt). Every page: [llms.txt](/llms.txt).

# Data-binding map: S10 Diagnostic · Mic purpose sheet (pre-permission)

> Generated by `botgumi-design index` from `../../screens.json`. Edit that file, not this page.

Every field [S10](/design/hifi/s10/index.md) shows and where it comes from.

| Field | Source (endpoint or local state) | Format | Fallback |
|---|---|---|---|
| `AVAudioApplication.requestRecordPermission` | `device microphone_permission` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `config.limits.diagnostic_max_ms` | `api GET /config limits.diagnostic_max_ms` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `derived: recorder.effectiveMs ≥ session.min_valid_ms` | `derived recording_long_enough` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `local:recorder.effectiveMs` | `local recorder.effectiveMs` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `local:recorder.state` | `local recorder.state` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `me.settings.audio_retention_days` | `api GET /me settings.audio_retention_days` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `session.stage → derived step` | `api GET /sessions/{session_id} stage` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |

## Derived values

Computed on device; each from the sources it names.

| Value | From | How |
|---|---|---|
| `recording_long_enough` | `local recorder.effectiveMs`, `api GET /sessions/{session_id} min_valid_ms` | Stop is enabled once the recording reaches the minimum valid length. |

## Binds on the boards

The `data-bind` values across every state.

- `AVAudioApplication.requestRecordPermission`
- `config.limits.diagnostic_max_ms`
- `derived: recorder.effectiveMs ≥ session.min_valid_ms`
- `local:recorder.effectiveMs`
- `local:recorder.state`
- `me.settings.audio_retention_days`
- `session.stage → derived step`

## States

- Loading: From [states.md](/design/states/index.md) (Permission): —
- Empty: From [states.md](/design/states/index.md) (Permission): —
- Error (retryable / not): From [states.md](/design/states/index.md) (Permission): [record--permission-denied](/design/gallery/record/record--permission-denied.html) (recoverable via Settings) · fatal: —
- Offline: From [states.md](/design/states/index.md) (Permission): —
