# PoC Results Summary **Document type:** Governance / PoC Results Summary **Version:** 0.1.0 **Status:** Draft **Language:** English **Product:** Chanora **Repo path:** `docs/governance/poc-results-summary.md` --- ## 1. Purpose This document is the single top-level entry point summarising the outcome of the technical proof-of-concept (PoC) phase defined by [`docs/architecture/proof-of-concept-plan.md`](../architecture/proof-of-concept-plan.md). It exists so that reviewers (security, audit, baseline-approval) can read one page and follow pointers to evidence, rather than having to crawl six `VERIFICATION.md` files under `poc/`. This summary records facts as of **2026-05-13**. ## 2. Status table | Spike | PoC plan exit criterion | Status | Evidence | |---|---|---|---| | `flutter_rust_bridge_hello` | Flutter can call Rust and receive event stream data | **PASS** | `poc/flutter_rust_bridge_hello/VERIFICATION.md` | | `tsclientlib-connect-spike` | Rust can connect to a compatible server/test double | **PASS** | `poc/tsclientlib-connect-spike/VERIFICATION.md` | | `secure-storage-spike` | Secret write/read/delete works through platform secure storage | **PASS (Linux only)** | `poc/secure-storage-spike/VERIFICATION.md` | | `sqlite-storage-spike` | Schema, migration, and repository pattern are demonstrated | **PASS** | `poc/sqlite-storage-spike/VERIFICATION.md` | | `diagnostics-redaction-spike` | Password and identity-secret samples are redacted | **PASS** (REDACT-TC-001..010 covered) | `poc/diagnostics-redaction-spike/VERIFICATION.md` | | `audio-capture-playback-spike` | Capture/playback works on at least one desktop **and** one mobile target | **PARTIAL PASS** — desktop met, mobile **not** verified | `poc/audio-capture-playback-spike/VERIFICATION.md` | Aggregate test count across the PoCs: **44 tests + 1 live-server CLI run + 1 audio-stack CLI round-trip**, all passing in the recorded runs. ## 3. Toolchain exercised | Tool | Version | |---|---| | Rust toolchain | stable 1.95.0 (59807616e 2026-04-14) | | Flutter SDK | 3.41.9 stable (Dart 3.11.5) | | `flutter_rust_bridge` (Rust + Dart) and codegen | 2.12.0 | | `tsclientlib` | git `04aa2491` (no published crates.io release) | | `cpal` | 0.16 | | `rusqlite` | 0.32 (bundled) | | `keyring` | 3.6.3 (sync-secret-service + linux-native) | | `linux-keyutils` | 0.2.5 | | `regex` / `serde` / `serde_json` | 1 | | Host OS for verification | Linux (Arch, kernel 7.0.5-arch1-1, x86_64) | | Host audio server | PipeWire 1.6.4 (via pcm_pipewire ALSA plugin) | | Host Secret Service backend | gnome-keyring (default collection observed locked; kernel keyutils backend used for hermetic tests) | ## 4. Owner-confirmed decisions arising from the PoC phase Recorded in [`docs/governance/product-decision-register.md`](product-decision-register.md) at version 0.9.3: | Decision | Status | Closed by | |---|---|---| | **DEC-014** typed bridge | Accepted (`flutter_rust_bridge` 2.x pinned) | `flutter_rust_bridge_hello` | | **DEC-013.1** SQLite crate | Accepted (`rusqlite` bundled) | `sqlite-storage-spike` | | **DEC-013.2** Linux secure-storage backend policy | Accepted (Secret Service preferred, keyutils fallback) | `secure-storage-spike` | | **DEC-011.1** audio crate | Accepted (desktop: `cpal`) / Deferred (mobile) | `audio-capture-playback-spike` (desktop half only) | | **DEC-022** canonical implementation directory layout | Accepted (README sketch — `apps/chanora_flutter/`, `core/chanora_core/`, `crates/chanora_*`) | Owner ruling on 2026-05-13 | | **DEC-020** license | Open / Deferred | Owner deferred 2026-05-13 — **remains a public-release blocker** | The remaining DEC-001..012, DEC-015..019, DEC-021 are still in status "Proposed / Owner Confirmation Required" and need owner attention as a separate exercise — they are unaffected by the PoCs. ## 5. Audit-report coverage | Audit ID | Verified by | Audit-report row updated? | |---|---|---| | SS-AUD-001 (identity secret absent from local DB) | `secure-storage-spike` | Yes — `docs/security/secure-storage-audit-report.md` §4 v0.9.3 | | SS-AUD-002 (server password absent from local DB) | `secure-storage-spike` | Yes | | SS-AUD-003 (no secrets in logs) | `secure-storage-spike` + cross-ref `diagnostics-redaction-spike` | Yes | | SS-AUD-004 (no secrets in diagnostic export) | `diagnostics-redaction-spike` REDACT-TC-008 | Yes | | SS-AUD-005 (safe error on backend failure) | `secure-storage-spike` (test + live CLI fallback) | Yes | | SS-AUD-006 (delete removes entry) | `secure-storage-spike` | Yes | | SS-AUD-007 (per-platform documentation) | Linux only — partial | Yes (status: Partial) | | SS-AUD-008 (migration path safety) | Pending (depends on product `chanora_storage`) | Yes (status: Pending) | | SS-TC-001 (Windows) | Not run | Status: Deferred | | SS-TC-002 (macOS) | Not run | Status: Deferred | | SS-TC-003 (Linux) | `secure-storage-spike` | **PoC Pass** | | SS-TC-004 (Android) | Not run | Status: Deferred | | SS-TC-005 (iOS) | Not run | Status: Deferred | | REDACT-TC-001..010 | `diagnostics-redaction-spike` (12/12) | Yes — `docs/security/diagnostic-redaction-audit-report.md` §4 v0.9.3 | | Export bundle policy §5 (all rows) | `diagnostics-redaction-spike` | Yes — §5 v0.9.3 | ## 6. Open risks and gaps | ID | Risk | Owner | Recommended close path | |---|---|---|---| | RISK-PoC-001 | Mobile audio (Android Oboe / iOS AVAudioEngine) is not verified. The PoC plan's audio exit criterion is only half met. | Audio Owner + Mobile Owner | Spike on Android emulator and iOS device before `chanora_audio` is scaffolded; or accept the risk and discover it during product integration (not recommended). | | RISK-PoC-002 | Windows / macOS / iOS / Android secure-storage adapters not implemented. SS-TC-001/002/004/005 unverified. | Platform Owners | Per-platform adapter spike or first-implementation-in-`chanora_storage` with the audit checks re-run on each target. | | RISK-PoC-003 | License (DEC-020) deferred. Blocks public/store release. | Product Owner + Legal | Owner ruling. | | RISK-PoC-004 | DEC-001..012, 015..019, 021 still in Proposed status. They do not block PoC code but do block any baseline-approval gate. | Product Owner | Independent owner review of the decision register. | | RISK-PoC-005 | Production code does not exist yet. README's "Implementation status: Not production-ready" remains accurate. | Software Architect | Promote PoC code into `apps/` and `crates/` per DEC-022 only after RISK-PoC-003/004 are closed or explicitly accepted. | ## 7. Non-promotion reminder Per `proof-of-concept-plan.md` §4: **a PoC is not product code unless explicitly promoted.** Nothing under `poc/` should be imported by the future `apps/chanora_flutter` or `crates/chanora_*` trees without an explicit promotion record per spike. ## 8. Change History | Version | Date | Description | |---|---|---| | 0.1.0 | 2026-05-14 | Initial PoC results summary. Records the outcome of the first PoC batch (5 PASS, 1 PARTIAL), the toolchain versions exercised, the owner-confirmed decisions, audit-report coverage, and the open risks. |