Files
chanora/docs/governance/poc-results-summary.md
T
EdisonJwa 271d23faf7 docs(governance): record PoC outcomes, owner decisions, and audit evidence
Closes Phases A and D of the post-PoC sequencing.

Decision register (v0.9.2 → v0.9.3):
  - DEC-014 Accepted: flutter_rust_bridge 2.x pinned (closed by
    poc/flutter_rust_bridge_hello).
  - DEC-013.1 Accepted: rusqlite (bundled) (closed by
    poc/sqlite-storage-spike).
  - DEC-013.2 Accepted: Linux secure-storage backend policy —
    Secret Service preferred, keyutils fallback (closed by
    poc/secure-storage-spike; resolves SysRS-053 / SysRS-162
    ambiguity).
  - DEC-011.1 Accepted (desktop: cpal) / Deferred (mobile)
    (closed by poc/audio-capture-playback-spike desktop half only).
  - DEC-022 Accepted: canonical implementation directory layout per
    the README sketch and SAD §7.2.
  - DEC-020 explicitly Deferred by owner; remains a public-release
    blocker.

Audit reports updated with empirical evidence:
  - docs/security/secure-storage-audit-report.md v0.9.3:
    SS-AUD-001/002/003/005/006 = PoC Pass with evidence pointers;
    SS-TC-003 (Linux) Actual Result populated and Status = PoC Pass;
    SS-AUD-004 cross-referenced to diagnostics-redaction PoC;
    findings SS-FIND-001 (closed by DEC-013.2), SS-FIND-002 (keyutils
    session caveat), SS-FIND-003 (non-Linux adapters still open).
  - docs/security/diagnostic-redaction-audit-report.md v0.9.3:
    REDACT-TC-001..010 = PoC Pass with evidence pointers; export
    bundle policy §5 populated for every row; findings
    REDACT-FIND-001 (regex coverage), REDACT-FIND-002
    (tracing-layer integration), REDACT-FIND-003 (cross-spike
    KnownSecretRegistry contract).

PoC plan (v0.1.0 → v0.2.0):
  - Status column added to §2; outcomes recorded.

New doc:
  - docs/governance/poc-results-summary.md v0.1.0 — single-page
    reviewer-facing summary listing each spike's status, the
    toolchain exercised, the owner decisions taken, the audit
    coverage table, and open risks RISK-PoC-001..005 (mobile audio,
    non-Linux secure-storage adapters, license, remaining
    Proposed decisions, no product code yet).

This completes the post-PoC documentation work. Repo is at a clean
pause point: PoC code is committed, owner decisions are recorded,
audit reports carry empirical evidence, and the residual risks are
named in the summary doc.
2026-05-14 12:34:13 +08:00

7.0 KiB

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.

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 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.