Files
chanora/poc/README.md
T
EdisonJwa 4c64517e45 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].
2026-05-14 18:25:03 +08:00

44 lines
2.0 KiB
Markdown

# Chanora — Proofs of Concept
This directory holds **non-product** technical spikes. They exist to retire
risk before the Flutter/Rust product scaffold is created.
Authority: [`docs/architecture/proof-of-concept-plan.md`](../docs/architecture/proof-of-concept-plan.md).
> **Rule (PoC plan §4):** A PoC is not product code unless explicitly
> promoted. Nothing here should be imported by the future
> `apps/chanora_flutter` or `crates/chanora_*` trees.
## Status
| Spike | Required by PoC plan | Status |
|---|---|---|
| `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` |
| `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
`flutter_rust_bridge_hello` is listed in the PoC plan as
`flutter-rust-bridge-hello`. The directory on disk uses underscores
because the Dart `pubspec.yaml` package-name grammar forbids hyphens.
This is a naming convention, not a scope change.
## What "verified" means here
Each verified spike contains:
- a `README.md` describing scope, exit criterion, and reproduction;
- a `VERIFICATION.md` recording the exact toolchain versions, command,
observed output, and an honest list of things the spike does **not**
validate.
Spikes are intentionally narrow. They do not approximate Chanora
architecture layering, they do not implement the documented DTO
catalogue, and they do not stand in for the product Rust crates or
Flutter modules.