Full P0 Android documentation chain: - SysRS: API 24 → API 28 reconciliation per DEC-004 (SysRS-288); add SysRS-305 (Android in-call audio mode), SysRS-306 (RECORD_AUDIO runtime timing). - SysDes: SysDes-152 (in-call audio mode subsystem), SysDes-153 (RECORD_AUDIO permission flow), SysDes-154 (Android voice audio backend), SysDes-155 (macOS runtime baseline). - SRS: SRS-187 → API 28; add SRS-208 (in-call audio mode), SRS-209 (RECORD_AUDIO + listen-only fallback), SRS-210..215 (Android voice audio backend latency/preset/AEC/usage/sharing/foreground service); retarget SysDes anchors from generic SysDes-135 to SysDes-152/153/154. - SAD: SAD-063 refreshed (API 28); add SAD-084 (audio mode controller), SAD-085 (permission adapter with listen-only), SAD-086 (foreground service), SAD-087 (macOS runtime baseline); formalize cross-cutting + platform-specific allocation pattern in §24.1. - SDD: expand SDD-028 (BackIntentService); refresh SDD-073 (build config); add SDD-105 (JNI bootstrap), SDD-106 (permission requester), SDD-107 (foreground service), SDD-108 (audio mode controller), SDD-109 (AAB pipeline), SDD-110 (PTT capability), SDD-111..116 (Android voice audio backend), SDD-118 (Android bridge build automation), SDD-119 (iOS/macOS bridge build automation back-fill). - Verification: create android-p0-acceptance.md TC-1..TC-18; add SWE4-UV-040..052, SWE5-IV-016..026, SWE6-SV-018..030, SYS4-SIV-015 strengthened + SYS4-SIV-017/018. - Governance: traceability matrix v0.9.9 with end-to-end chain closure; DEC-032 documents the temporary abiFilters reduction to arm64-v8a only and its restore-by gate. Trace: full chain SysRS → SysDes → SRS → SAD → SDD → Code → Verification.
401 lines
23 KiB
Markdown
401 lines
23 KiB
Markdown
|
||
# Chanora SWE.6 Software Verification Plan
|
||
|
||
**Document type:** Software Verification / Software Qualification Test Plan
|
||
**Process alignment:** ASPICE SWE.6 Software Verification
|
||
**Version:** 0.9.2
|
||
**Status:** Baseline Candidate
|
||
**Language:** English
|
||
**Product:** Chanora
|
||
**Verification object:** Fully integrated Chanora software
|
||
**Direct source layer:** SRS
|
||
|
||
**Repo path:** `docs/verification/swe6-software-verification-plan.md` ---
|
||
|
||
## 1. Purpose
|
||
|
||
This document defines the software verification strategy for Chanora. It verifies that the fully integrated software satisfies the Software Requirements Specification.
|
||
|
||
```text
|
||
SysRS -> SysDes -> SRS -> SAD -> SDD
|
||
-> SWE.6 Software Verification
|
||
```
|
||
|
||
SWE.6 verifies against SRS. It does not replace SWE.4 unit verification or SWE.5 software integration verification.
|
||
|
||
## 2. Software Verification Strategy
|
||
|
||
| Verification type | Purpose |
|
||
|---|---|
|
||
| Functional software tests | Verify integrated software behavior against SRS |
|
||
| Non-functional software tests | Verify performance, accessibility, security, diagnostics, localization, and reliability requirements |
|
||
| Platform software tests | Verify integrated software behavior on target platforms |
|
||
| Regression tests | Confirm changes did not break previously verified software requirements |
|
||
| Release-scope test selection | Select tests according to target release content |
|
||
| Summary reporting | Communicate software verification status |
|
||
|
||
## 3. Software Verification Measures
|
||
|
||
**SWE6-SV-001**: Verify server connection flow.
|
||
|
||
- Source SRS: SRS-001 through SRS-030
|
||
- Verification method: End-to-end software test
|
||
- Pass criteria: User can connect to a compatible server with configured connection data.
|
||
- Evidence: Software verification result
|
||
|
||
**SWE6-SV-002**: Verify channel tree, client list, and server state display.
|
||
|
||
- Source SRS: SRS-031 through SRS-060
|
||
- Verification method: End-to-end software test
|
||
- Pass criteria: Channel and client state is displayed and updates after server events.
|
||
- Evidence: Software verification result
|
||
|
||
**SWE6-SV-003**: Verify voice send and receive.
|
||
|
||
- Source SRS: SRS-061 through SRS-090
|
||
- Verification method: Audio software verification test
|
||
- Pass criteria: User can transmit and receive voice under supported conditions.
|
||
- Evidence: Software verification result
|
||
|
||
**SWE6-SV-004**: Verify push-to-talk, mute, deaf, and voice status.
|
||
|
||
- Source SRS: SRS-061 through SRS-090, SRS-156
|
||
- Verification method: End-to-end software test
|
||
- Pass criteria: Voice controls perform expected software behavior and display correct state.
|
||
- Evidence: Software verification result
|
||
|
||
**SWE6-SV-005**: Verify local storage and secure storage behavior.
|
||
|
||
- Source SRS: SRS-091 through SRS-110
|
||
- Verification method: Software security and persistence test
|
||
- Pass criteria: Non-secret data persists through approved storage and secrets use secure storage boundaries.
|
||
- Evidence: Software verification result
|
||
|
||
**SWE6-SV-006**: Verify diagnostics and redacted export behavior.
|
||
|
||
- Source SRS: SRS-111 through SRS-124, SRS-177, SRS-178
|
||
- Verification method: Software verification test, audit
|
||
- Pass criteria: Diagnostic export requires user action and redacts sensitive data while preserving safe Unicode content.
|
||
- Evidence: Software verification result, audit record
|
||
|
||
**SWE6-SV-007**: Verify deployment-sensitive software behavior.
|
||
|
||
- Source SRS: SRS-125 through SRS-134
|
||
- Verification method: Release build verification
|
||
- Pass criteria: Release build metadata, packaging behavior, and platform declarations are consistent with software requirements.
|
||
- Evidence: Release verification result
|
||
|
||
**SWE6-SV-008**: Verify traceability and documentation controls.
|
||
|
||
- Source SRS: SRS-135 through SRS-143, SRS-180 through SRS-183
|
||
- Verification method: Documentation verification
|
||
- Pass criteria: SRS, SAD, and SDD direct-source rules pass validation.
|
||
- Evidence: Traceability report
|
||
|
||
**SWE6-SV-009**: Verify Material 3 and Chanora Design System behavior.
|
||
|
||
- Source SRS: SRS-144 through SRS-150
|
||
- Verification method: UI software verification, review
|
||
- Pass criteria: Integrated app uses Material 3 baseline and Chanora semantic tokens without feature-screen hardcoding.
|
||
- Evidence: Software verification result
|
||
|
||
**SWE6-SV-010**: Verify adaptive layouts.
|
||
|
||
- Source SRS: SRS-151 through SRS-156
|
||
- Verification method: UI software verification
|
||
- Pass criteria: Compact, medium, and expanded layouts preserve connection status and primary voice controls.
|
||
- Evidence: Software verification result
|
||
|
||
**SWE6-SV-011**: Verify accessibility behavior.
|
||
|
||
- Source SRS: SRS-157 through SRS-161
|
||
- Verification method: Accessibility verification
|
||
- Pass criteria: Critical controls expose semantics, non-color-only state cues, focus behavior, and text-scale resilience.
|
||
- Evidence: Accessibility verification result
|
||
|
||
**SWE6-SV-012**: Verify platform behavior.
|
||
|
||
- Source SRS: SRS-162 through SRS-164
|
||
- Verification method: Platform software verification
|
||
- Pass criteria: Insets, safe areas, keyboard, Android back behavior, and iOS platform behavior operate as specified.
|
||
- Evidence: Platform verification result
|
||
|
||
**SWE6-SV-013**: Verify localization and fallback behavior.
|
||
|
||
- Source SRS: SRS-165 through SRS-169
|
||
- Verification method: Localization software verification
|
||
- Pass criteria: Product strings are externalized, English baseline exists, additional locales can be added, and fallback is deterministic.
|
||
- Evidence: Localization verification result
|
||
|
||
**SWE6-SV-014**: Verify Unicode and server-content behavior.
|
||
|
||
- Source SRS: SRS-170 through SRS-176
|
||
- Verification method: Internationalization software verification
|
||
- Pass criteria: Server content is preserved, displayed without translation, UTF-8 is used internally, and locale-aware formatting works.
|
||
- Evidence: Internationalization verification result
|
||
|
||
**SWE6-SV-015**: Verify software architecture and detailed design traceability controls.
|
||
|
||
- Source SRS: SRS-180 through SRS-184
|
||
- Verification method: Documentation/tooling verification
|
||
- Pass criteria: SAD derives from SRS and SDD derives from SAD; initialization sequence is verified.
|
||
- Evidence: Traceability validation result
|
||
|
||
## 4. Regression Strategy
|
||
|
||
Regression test selection shall consider:
|
||
|
||
- changed SRS item
|
||
- changed feature
|
||
- changed architecture component
|
||
- changed detailed design unit
|
||
- changed platform behavior
|
||
- changed localization or Unicode handling
|
||
- changed diagnostics or redaction
|
||
- changed audio behavior
|
||
- changed protocol adapter behavior
|
||
|
||
## 5. Traceability Matrix
|
||
|
||
| SRS Range | SWE.6 Coverage |
|
||
|---|---|
|
||
| SRS-001 through SRS-030 | SWE6-SV-001 |
|
||
| SRS-031 through SRS-060 | SWE6-SV-002 |
|
||
| SRS-061 through SRS-090 | SWE6-SV-003, SWE6-SV-004 |
|
||
| SRS-091 through SRS-110 | SWE6-SV-005 |
|
||
| SRS-111 through SRS-124 | SWE6-SV-006 |
|
||
| SRS-125 through SRS-134 | SWE6-SV-007 |
|
||
| SRS-135 through SRS-143 | SWE6-SV-008 |
|
||
| SRS-144 through SRS-150 | SWE6-SV-009 |
|
||
| SRS-151 through SRS-156 | SWE6-SV-010 |
|
||
| SRS-157 through SRS-161 | SWE6-SV-011 |
|
||
| SRS-162 through SRS-164 | SWE6-SV-012 |
|
||
| SRS-165 through SRS-169 | SWE6-SV-013 |
|
||
| SRS-170 through SRS-176 | SWE6-SV-014 |
|
||
| SRS-177 through SRS-184 | SWE6-SV-006, SWE6-SV-015 |
|
||
|
||
## 6. Result Reporting
|
||
|
||
Software verification results shall be summarized in a software verification summary report including:
|
||
|
||
- release scope
|
||
- selected software verification measures
|
||
- skipped measures and rationale
|
||
- platform/environment used
|
||
- pass/fail status
|
||
- nonconformances
|
||
- regression scope
|
||
- residual risks
|
||
- release recommendation
|
||
|
||
## 7. Change History
|
||
|
||
| Version | Date | Description |
|
||
|---|---|---|
|
||
| 0.1.0 | 2026-05-14 | Initial SWE.6 software verification plan derived from SRS v0.5. |
|
||
|
||
---
|
||
|
||
## 8. Platform Decision Software Verification Addendum
|
||
|
||
**SWE6-SV-016**: Verify platform baseline, release SDK gates, single connection MVP scope, audio defaults, storage/bridge policy, and diagnostics/crash reporting policy.
|
||
|
||
- Source SRS: SRS-185 through SRS-194
|
||
- Verification method: Software verification, release inspection, security/privacy review
|
||
- Pass criteria: Integrated software and release configuration satisfy the accepted product decisions.
|
||
- Evidence: Software verification result, release inspection record
|
||
|
||
| SRS Range | SWE.6 Coverage |
|
||
|---|---|
|
||
| SRS-185 through SRS-194 | SWE6-SV-016 |
|
||
|
||
**SWE6-SV-017**: Verify integrated software behaviour for desktop Push-to-Talk against SRS-195 through SRS-203.
|
||
|
||
- Source SRS: SRS-195, SRS-196, SRS-197, SRS-198, SRS-199, SRS-200, SRS-201, SRS-202, SRS-203
|
||
- Verification method: Software verification test (end-to-end) on Windows, macOS, GNOME-on-Wayland reference hosts
|
||
- Pass criteria: PTT trait abstraction is platform-agnostic from the caller's perspective; reported capability level equals live runtime behaviour; Windows ladder degrades correctly when Raw Input is denied; macOS Global ↔ Focused toggles with permission state changes; Linux honours portal availability; mouse-side-button binding works where the backend exposes it; `capture_active` and `transmit_active` are independently observable; diagnostic export contains zero raw key data; missed-key-up watchdog clears `transmit_active` after the configured timeout.
|
||
- Evidence: SWE.6 test report
|
||
|
||
| SRS Range | SWE.6 Coverage |
|
||
|---|---|
|
||
| SRS-185 through SRS-194 | SWE6-SV-016 |
|
||
| SRS-195 through SRS-203 | SWE6-SV-017 |
|
||
|
||
|
||
## Baseline Candidate 0.9.1 Update
|
||
|
||
| Version | Date | Description |
|
||
|---|---|---|
|
||
| 0.9.1 | 2026-05-14 | Updated baseline after product decision closure: Apple App Store SDK gate uses Xcode 26+ and iOS 26 / iPadOS 26 SDK+ since 2026-04-28, platform baselines and decision traceability propagated across the document set. |
|
||
|
||
|
||
## Baseline Candidate 0.9.2 Update
|
||
|
||
| Version | Date | Description |
|
||
|---|---|---|
|
||
| 0.9.2 | 2026-05-14 | Corrected Apple App Store Connect upload gate to 2026-04-28 and checked full-package naming, references, and coverage. |
|
||
|
||
|
||
## Baseline Candidate 0.9.3 Update
|
||
|
||
| Version | Date | Description |
|
||
|---|---|---|
|
||
| 0.9.3 | 2026-05-15 | Added desktop PTT software-verification item SWE6-SV-017 covering end-to-end SRS-195..203 verification across Windows, macOS, and GNOME-on-Wayland Linux reference hosts. |
|
||
|
||
|
||
## 9. Android P0 Software Verification Addendum
|
||
|
||
**SWE6-SV-018**: Verify Android voice foreground service satisfies SRS-111.
|
||
|
||
- Source SRS: SRS-111
|
||
- Verification method: Device-level software-qualification test on API 28 floor device + mid-tier + current target (per `docs/verification/android-p0-acceptance.md` TC-3)
|
||
- Pass criteria: While connected to a voice channel the foreground service runs with `foregroundServiceType="microphone"` (API 30+) and a non-dismissible notification; mic capture and playback continue with the screen off for ≥ 10 minutes without being killed; service stops cleanly on disconnect.
|
||
- Evidence: Device test log + screen-recording
|
||
- Cross-link (added in 0.9.5): SRS-215 device-matrix expansion is covered by SWE6-SV-030. SWE6-SV-018 remains the single-device baseline; SWE6-SV-030 collects per-SDD-116-row evidence.
|
||
|
||
**SWE6-SV-019**: Verify RECORD_AUDIO request timing and listen-only fallback satisfy SRS-209.
|
||
|
||
- Source SRS: SRS-209
|
||
- Source SysRS: SysRS-306
|
||
- Verification method: Device-level test (android-p0-acceptance.md TC-2)
|
||
- Pass criteria: The mic permission is requested at the user gesture that first needs it (not at app launch); denial drops capture but keeps playback open (listen-only); permanently-denied state opens the system settings deep-link instead of re-prompting; re-grant re-enables capture without process restart.
|
||
- Evidence: Device test log
|
||
|
||
**SWE6-SV-020**: Verify Android in-call audio mode round-trip satisfies SRS-208.
|
||
|
||
- Source SRS: SRS-208
|
||
- Source SysRS: SysRS-305
|
||
- Verification method: Device-level test with `dumpsys audio` (android-p0-acceptance.md TC-6)
|
||
- Pass criteria: Pre-join mode is recorded; during voice session mode is `MODE_IN_COMMUNICATION`; on leave/disconnect prior mode is restored exactly. No permanent mode lock across multiple sessions. No crash if a Bluetooth headset is connected/disconnected mid-session (P0 minimum).
|
||
- Evidence: Device test log + dumpsys traces
|
||
|
||
**SWE6-SV-021**: Verify Android back navigation satisfies SRS-163.
|
||
|
||
- Source SRS: SRS-163
|
||
- Verification method: Device-level test (android-p0-acceptance.md TC-11 + TC-12) on API 28, an API ≤ 32 device, and an API 33+ device.
|
||
- Pass criteria: Modal-first close; one-pop-per-press; home-route back backgrounds; PTT-active ignores back. Predictive-back animation present on API 33+ and absent on pre-33 with identical end behaviour.
|
||
- Evidence: Device test log + screen-recording
|
||
|
||
**SWE6-SV-022**: Verify Android minimum API satisfies SRS-187 and DEC-004.
|
||
|
||
- Source SRS: SRS-187
|
||
- Source SysRS: SysRS-288
|
||
- Verification method: Manifest inspection + install attempt on API 28 device
|
||
- Pass criteria: Merged manifest declares `minSdkVersion = 28`. Install on API 28 succeeds. Install attempt on API 27 simulator/device is rejected with a clean error.
|
||
- Evidence: Manifest dump + install logs
|
||
|
||
**SWE6-SV-023**: Verify Android Play target API and AAB packaging satisfy SRS-119 and SRS-188.
|
||
|
||
- Source SRS: SRS-119, SRS-188
|
||
- Verification method: AAB inspection + Play Console upload to Internal Testing (android-p0-acceptance.md TC-13)
|
||
- Pass criteria: `targetSdkVersion` matches the currently-required Play target per SRS-188; release artifact is an AAB (not a bare APK) per SRS-119; Play Console accepts the bundle; signing key is the CI release key.
|
||
- Evidence: AAB dump + Play Console acceptance screenshot
|
||
|
||
**SWE6-SV-024**: Verify Android PTT capability badge reports `L0Focused` per SAD-086 / SDD-110.
|
||
|
||
- Source SRS: SRS-208 (mode boundary), SRS-209
|
||
- Verification method: Device-level UI test (android-p0-acceptance.md TC-4 + TC-10)
|
||
- Pass criteria: Capability badge shows `L0Focused` with Android-specific explanatory copy. No global hotkey is bound. Backgrounding the app stops PTT transitions from being delivered.
|
||
- Evidence: UI screenshot + log
|
||
|
||
| SRS Range | SWE.6 Coverage |
|
||
|---|---|
|
||
| SRS-111 | SWE6-SV-018 |
|
||
| SRS-119 | SWE6-SV-023 |
|
||
| SRS-163 | SWE6-SV-021 |
|
||
| SRS-187 | SWE6-SV-022 |
|
||
| SRS-188 | SWE6-SV-023 |
|
||
| SRS-208 | SWE6-SV-020, SWE6-SV-024 |
|
||
| SRS-209 | SWE6-SV-019, SWE6-SV-024 |
|
||
|
||
|
||
### Android voice audio backend qualification items (SRS-210..SRS-215, SDD-111..SDD-116 wave)
|
||
|
||
**SWE6-SV-025**: Verify SRS-210 mouth-to-ear latency target per device-class on the SDD-116 device matrix.
|
||
|
||
- Source SRS: SRS-210
|
||
- Source SDD: SDD-111, SDD-112, SDD-116
|
||
- Verification method: Glass-to-glass acoustic measurement on each SDD-116 matrix device (API 28, API 31, API 34; at least one Pixel + one Samsung). See "Glass-to-glass latency measurement procedure" below.
|
||
- Pass criteria: On devices where `achieved_performance_mode() == LowLatency` the measured mouth-to-ear latency is **≤ 150 ms** (median of 20 samples, 95th percentile ≤ 180 ms). On devices where the achieved mode is `None`/`PowerSaving` the measured latency is **≤ 250 ms** (median of 20 samples, 95th percentile ≤ 300 ms). Tier classification is derived from the SWE4-UV-051 unit-level mapping evaluated against the per-device `achieved_performance_mode` from SWE6-SV-026.
|
||
- Evidence: Per-device measurement log (CSV: device, API, achieved_mode, sample_index, latency_ms) + reference audio recording for spot-check + acceptance form rows TC-17, TC-18
|
||
- SDD-116 matrix rows satisfied: all (one row per device)
|
||
|
||
**SWE6-SV-026**: Verify SRS-211 input preset achieved value recorded per device.
|
||
|
||
- Source SRS: SRS-211
|
||
- Source SDD: SDD-112 (`achieved_input_preset()`), SDD-116
|
||
- Verification method: Device-level test reading the backend's diagnostics export after `voice_join`
|
||
- Pass criteria: For each SDD-116 matrix device the diagnostics record one of `{VoiceCommunication, VoicePerformance, Generic}` and that value is consistent with the fallback ladder verified by SWE4-UV-048. `VoiceCommunication` is preferred and any deviation must be accompanied by a recorded fallback rationale (e.g. preset rejected by OEM stack). No device reports an unrecorded/unknown preset.
|
||
- Evidence: Per-device diagnostics export
|
||
- SDD-116 matrix rows satisfied: all
|
||
|
||
**SWE6-SV-027**: Verify SRS-212 hardware AEC engagement (and NS/AGC where supported) per device.
|
||
|
||
- Source SRS: SRS-212
|
||
- Source SDD: SDD-113, SDD-116
|
||
- Verification method: Device-level test inspecting backend diagnostics + audible regression check (echo audibility) under speakerphone-routed playback
|
||
- Pass criteria: For each matrix device the diagnostics record per-effect engagement: `{aec: hw|sw|unavailable, ns: hw|sw|unavailable, agc: hw|sw|unavailable}`. Where `AcousticEchoCanceler.isAvailable()` returns true the recorded value MUST be `hw`. Where it returns false the recorded value MUST be `sw` (software fallback per SDD-113 item 5) — never silent. Audible echo evaluation (test sequence: 10 s of speakerphone playback with mic open at conversational distance) yields no operator-perceptible echo on at least one Pixel device and at least one Samsung device.
|
||
- Evidence: Per-device diagnostics export + audible-check operator note
|
||
- SDD-116 matrix rows satisfied: all (AEC/NS/AGC availability column)
|
||
|
||
**SWE6-SV-028**: Verify SRS-213 output usage and content type achieved per device.
|
||
|
||
- Source SRS: SRS-213
|
||
- Source SDD: SDD-112 (`achieved_output_usage`, `achieved_output_content_type`), SDD-116
|
||
- Verification method: Device-level test reading backend diagnostics; cross-checked with `dumpsys media.audio_flinger` where queryable
|
||
- Pass criteria: For each matrix device the diagnostics record `achieved_output_usage == VoiceCommunication` AND `achieved_output_content_type == Speech`. Where `dumpsys` exposes the stream attributes, the dump corroborates. Mismatch fails the case. Also verifies the in-call routing side-effect: volume slider during the session adjusts the call-volume stream, not media volume (operator check on at least one device).
|
||
- Evidence: Per-device diagnostics export + dumpsys excerpt + operator volume-routing note
|
||
- SDD-116 matrix rows satisfied: all
|
||
|
||
**SWE6-SV-029**: Verify SRS-214 sharing mode achieved per device.
|
||
|
||
- Source SRS: SRS-214
|
||
- Source SDD: SDD-112 (`achieved_sharing_mode`), SDD-116
|
||
- Verification method: Device-level test reading backend diagnostics on each matrix device
|
||
- Pass criteria: For each matrix device the diagnostics record `achieved_sharing_mode ∈ {Exclusive, Shared}`. The requested value is always `Exclusive`; deviation to `Shared` is acceptable and must be recorded with no operational regression (assert: no callback errors in the first 60 s of the session when the achieved mode is `Shared`). The aggregate device-matrix table in the test report cross-tabulates `requested vs achieved` per device.
|
||
- Evidence: Per-device diagnostics export
|
||
- SDD-116 matrix rows satisfied: all
|
||
|
||
**SWE6-SV-030**: Verify SRS-215 background mic capture under foreground-service-type=microphone per device.
|
||
|
||
- Source SRS: SRS-215
|
||
- Source SDD: SDD-107, SDD-114 (manifest declarations), SDD-115 (FGS-first sequencing), SDD-116
|
||
- Verification method: Device-level test (extends SWE6-SV-018 / android-p0-acceptance.md TC-3) executed on each SDD-116 matrix device
|
||
- Pass criteria: With the screen off (device locked or screen timed out) for ≥ 10 minutes the input stream remains open AND frames continue to be produced by the AAudio input (verified by a periodic per-minute frame-count probe in the diagnostics) on every matrix device. On API 34 devices the FGS-type is `microphone` (verified by `dumpsys activity services` excerpt). No `ForegroundServiceDidNotStartInTimeException` or `MissingForegroundServiceTypeException` in logcat. Cross-link annotation: this item extends SWE6-SV-018 with per-matrix-row evidence; SWE6-SV-018 remains the single-device baseline and SWE6-SV-030 is the device-matrix expansion.
|
||
- Evidence: Per-device test log + dumpsys excerpt + frame-count probe export
|
||
- SDD-116 matrix rows satisfied: all
|
||
|
||
| SRS Range | SWE.6 Coverage |
|
||
|---|---|
|
||
| SRS-210 | SWE6-SV-025 |
|
||
| SRS-211 | SWE6-SV-026 |
|
||
| SRS-212 | SWE6-SV-027 |
|
||
| SRS-213 | SWE6-SV-028 |
|
||
| SRS-214 | SWE6-SV-029 |
|
||
| SRS-215 | SWE6-SV-018 (single-device baseline), SWE6-SV-030 (device-matrix expansion) |
|
||
|
||
#### Glass-to-glass latency measurement procedure (SWE6-SV-025)
|
||
|
||
Mouth-to-ear (glass-to-glass) latency for SRS-210 shall be measured end-to-end across the Android device under test acting as the speaker AND a second Android device (or reference Linux host) acting as the listener, both joined to a controlled test TeamSpeak 3 server on the same LAN (no internet hop; LAN RTT must be measured and recorded separately, and subtracted as a baseline only if > 5 ms).
|
||
|
||
Measurement setup:
|
||
|
||
1. Connect the DUT and the reference listener device to the test server. The DUT is the talker; the reference is the listener.
|
||
2. Drive a short acoustic impulse (a 1 kHz tone burst, 20 ms duration, or a click track) into the DUT microphone from a controlled acoustic source (small loudspeaker at fixed distance, OR a wired line-in adapter where the DUT supports one).
|
||
3. Capture the listener device's loudspeaker output with a reference microphone connected to a stereo audio interface; the same audio interface ALSO captures the source impulse on the second channel via a hardwired tap from the impulse generator. Both channels are recorded into a single stereo WAV at ≥ 48 kHz, 16-bit minimum.
|
||
4. Latency is the time delta between the impulse-onset sample on channel A (source tap) and the impulse-onset sample on channel B (listener loudspeaker capture), expressed in milliseconds. Onset detection: first sample exceeding 10× the RMS noise floor of the preceding 100 ms.
|
||
5. Required precision: ≤ 1 ms (achievable at 48 kHz with single-sample onset detection). The measurement tool is unspecified; any DAW, `sox`, or custom script that meets the precision requirement is acceptable. The script and raw WAV files are part of the evidence and shall be archived.
|
||
6. Per-device run: 20 impulses spaced ≥ 2 s apart. Record median and 95th percentile.
|
||
7. Baseline subtraction: LAN one-way latency to the test server is measured (e.g. via ICMP / TS3 control-channel ping) and recorded but NOT subtracted from the SRS-210 result, because SRS-210's "mouth-to-ear" definition includes the network hop on a representative network. The LAN result is the ceiling case; WAN regression is out of scope for SRS-210 on this matrix.
|
||
8. Operator notes record: DUT model, Android API, `achieved_performance_mode`, `achieved_sharing_mode`, `achieved_input_preset`, headset/loudspeaker routing, ambient noise estimate, ambient temperature only if extreme.
|
||
|
||
This procedure is reproducible without proprietary fixtures. A loopback-cable-only variant (DUT line-out → DUT line-in on a single device with a wired headset adapter) is acceptable as a screening test but is NOT sufficient for SRS-210 sign-off because it does not exercise the network path.
|
||
|
||
|
||
## Baseline Candidate 0.9.4 Update
|
||
|
||
| Version | Date | Description |
|
||
|---|---|---|
|
||
| 0.9.4 | 2026-05-18 | Added Android P0 software-qualification items SWE6-SV-018..SWE6-SV-024 mapped to SRS-111, SRS-119, SRS-163, SRS-187, SRS-188, SRS-208, SRS-209; cross-linked to `docs/verification/android-p0-acceptance.md` test cases. |
|
||
| 0.9.5 | 2026-05-18 | Added Android voice audio backend software-qualification items SWE6-SV-025..SWE6-SV-030 covering SRS-210 (latency tier per SDD-116 matrix, with glass-to-glass measurement procedure), SRS-211 (input preset achieved), SRS-212 (hardware AEC engagement + software fallback evidence), SRS-213 (output usage/content type achieved), SRS-214 (sharing mode achieved), SRS-215 (FGS-hosted background capture per matrix row). Annotated SWE6-SV-018 with cross-link to SWE6-SV-030 (device-matrix expansion). |
|