docs(governance): promote audio PoC to PASS; close mobile-Android half

Documentation update following the Android audio spike pass.

Decision register (v0.9.3 → v0.9.4):
  - DEC-011.1 promoted from
      'Accepted (desktop: cpal) / Deferred (mobile)'
    to
      'Accepted (desktop: cpal; Android: cpal-on-Oboe) / Deferred (iOS)'.
  - Evidence pointer added: poc/audio-capture-playback-android-spike/
    VERIFICATION.md.

PoC plan (v0.2.0 → v0.3.0):
  - Audio row promoted from PARTIAL PASS to PASS.
  - All six PoC plan entries are now PASS.

PoC results summary (v0.1.0 → v0.2.0):
  - Audio row collapsed into one PASS spanning both spikes.
  - RISK-PoC-001 narrowed from 'mobile audio' to 'iOS audio only'.
  - Toolchain table expanded with Android NDK, cargo-ndk, AGP/
    Gradle/Kotlin, jni/ndk-context/android_logger, and the test
    device.

Cross-spike pointers updated:
  - poc/audio-capture-playback-spike/VERIFICATION.md result and
    follow-up sections updated to reference the Android spike.
  - poc/README.md status table lists both audio spike directories.

CHANGELOG updated under [Unreleased].
This commit is contained in:
EdisonJwa
2026-05-14 18:25:03 +08:00
parent ec21a880d2
commit 4c64517e45
6 changed files with 72 additions and 27 deletions
+2 -1
View File
@@ -16,9 +16,10 @@ Authority: [`docs/architecture/proof-of-concept-plan.md`](../docs/architecture/p
| `tsclientlib-connect-spike` | yes | **PASS** — see `tsclientlib-connect-spike/VERIFICATION.md` |
| `flutter_rust_bridge_hello` | yes (`flutter-rust-bridge-hello` in plan) | **PASS** — see `flutter_rust_bridge_hello/VERIFICATION.md` |
| `secure-storage-spike` | yes | **PASS (Linux only)** — see `secure-storage-spike/VERIFICATION.md` |
| `audio-capture-playback-spike` | yes | **PARTIAL PASS** — desktop verified, mobile not — see `audio-capture-playback-spike/VERIFICATION.md` |
| `sqlite-storage-spike` | yes | **PASS** — see `sqlite-storage-spike/VERIFICATION.md` |
| `diagnostics-redaction-spike` | yes | **PASS** — see `diagnostics-redaction-spike/VERIFICATION.md` |
| `audio-capture-playback-spike` (desktop half) | yes | **PASS** — see `audio-capture-playback-spike/VERIFICATION.md` |
| `audio-capture-playback-android-spike` (mobile half) | yes | **PASS** — see `audio-capture-playback-android-spike/VERIFICATION.md` |
## Naming note
@@ -2,15 +2,14 @@
## Result
**PARTIAL PASS.** Desktop half met on Linux; **mobile half not
verified**.
**PASS (desktop half).** The Linux/PipeWire desktop half of the PoC
plan §2 audio exit criterion is fully met by this spike.
The PoC plan §2 exit criterion is "Capture/playback works on at least
one desktop and one mobile target." This spike has empirically
verified the **desktop** path (Linux × cpal × PipeWire). The
**mobile** path (Android Oboe or iOS AVAudioEngine) has not been
built or run in this session and remains a documented gap. See the
`Gaps` section in `README.md`.
The mobile half ("at least one mobile target") is closed by
[`poc/audio-capture-playback-android-spike`](../audio-capture-playback-android-spike/)
on a physical Android device — see that directory's `VERIFICATION.md`.
Combined: the audio PoC is fully retired.
## Environment
@@ -112,7 +111,13 @@ consumed by the platform audio stack.
1. Promote `cpal` selection to a recorded product decision (DEC-011
sub-decision) — or pin a different crate after the mobile spike.
Done on 2026-05-13 as DEC-011.1 in
`docs/governance/product-decision-register.md`.
2. Spike Android Oboe path on an emulator or real device.
Done on 2026-05-13 — see
`poc/audio-capture-playback-android-spike/VERIFICATION.md`.
3. Spike iOS AVAudioEngine path on a real device.
4. Only after the mobile half is closed: promote the typed
`AudioError` + capture/playback shapes into `chanora_audio`.
Still deferred; requires macOS + Xcode hardware.
4. Only after the iOS half is closed (or explicitly waived):
promote the typed `AudioError` + capture/playback shapes into
`chanora_audio`.